From b280ab555cda4a2626e4465628a86511c2e53565 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 10:49:49 +0800 Subject: [PATCH 001/162] Initial Commit for Publish Settings workflow --- localization/i18n/list.txt | 2 + resources/images/menu_publish.svg | 1 + src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/PresetBundle.cpp | 288 ++++- src/libslic3r/PresetBundle.hpp | 23 +- src/libslic3r/PublishSettings.cpp | 105 ++ src/libslic3r/PublishSettings.hpp | 56 + src/slic3r/CMakeLists.txt | 4 + src/slic3r/GUI/ConfigValueFormatter.cpp | 245 ++++ src/slic3r/GUI/ConfigValueFormatter.hpp | 31 + src/slic3r/GUI/MainFrame.cpp | 20 + src/slic3r/GUI/Plater.cpp | 155 ++- src/slic3r/GUI/Plater.hpp | 4 + src/slic3r/GUI/PublishSettingsDialog.cpp | 1077 +++++++++++++++++ src/slic3r/GUI/PublishSettingsDialog.hpp | 183 +++ src/slic3r/GUI/Tab.cpp | 6 + src/slic3r/GUI/Tab.hpp | 3 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 223 +--- tests/libslic3r/test_3mf.cpp | 177 +++ .../libslic3r/test_preset_bundle_loading.cpp | 535 ++++++++ 20 files changed, 2897 insertions(+), 243 deletions(-) create mode 100644 resources/images/menu_publish.svg create mode 100644 src/libslic3r/PublishSettings.cpp create mode 100644 src/libslic3r/PublishSettings.hpp create mode 100644 src/slic3r/GUI/ConfigValueFormatter.cpp create mode 100644 src/slic3r/GUI/ConfigValueFormatter.hpp create mode 100644 src/slic3r/GUI/PublishSettingsDialog.cpp create mode 100644 src/slic3r/GUI/PublishSettingsDialog.hpp diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index 1614bc453b..c36a3aba40 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -136,6 +136,7 @@ src/slic3r/GUI/BackgroundSlicingProcess.cpp src/slic3r/GUI/BedShapeDialog.cpp src/slic3r/GUI/BedShapeDialog.hpp src/slic3r/GUI/ConfigManipulation.cpp +src/slic3r/GUI/ConfigValueFormatter.cpp src/slic3r/GUI/DeviceManager.cpp src/slic3r/GUI/DeviceErrorDialog.cpp src/slic3r/GUI/ExtraRenderers.cpp @@ -175,6 +176,7 @@ src/slic3r/GUI/ProgressStatusBar.cpp src/slic3r/GUI/PlateSettingsDialog.cpp src/slic3r/GUI/PrivacyUpdateDialog.cpp src/slic3r/GUI/PublishDialog.cpp +src/slic3r/GUI/PublishSettingsDialog.cpp src/slic3r/GUI/SavePresetDialog.cpp src/slic3r/GUI/Search.cpp src/slic3r/GUI/Selection.cpp diff --git a/resources/images/menu_publish.svg b/resources/images/menu_publish.svg new file mode 100644 index 0000000000..e444623e33 --- /dev/null +++ b/resources/images/menu_publish.svg @@ -0,0 +1 @@ + diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 812d28e088..16bee2d70c 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -350,6 +350,8 @@ set(lisbslic3r_sources Preset.hpp PrincipalComponents2D.cpp PrincipalComponents2D.hpp + PublishSettings.cpp + PublishSettings.hpp PrintApply.cpp PrintBase.cpp PrintBase.hpp diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 01cbc43bc2..9e0fc61323 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -3,6 +3,7 @@ #include "PresetBundle.hpp" #include "PrintConfig.hpp" +#include "PublishSettings.hpp" #include "libslic3r.h" #include "I18N.hpp" #include "Utils.hpp" @@ -11,7 +12,7 @@ #include "libslic3r_version.h" #include -#include +#include #include #include #include @@ -40,6 +41,8 @@ namespace Slic3r { +// Project-level options imported from a loaded 3MF into project_config. s_project_options_published +// below is the reduced subset that crosses over in "published" 3MF mode; keep both in sync. static std::vector s_project_options { "flush_volumes_vector", "flush_volumes_matrix", @@ -71,6 +74,24 @@ static std::vector s_project_options { "enable_filament_dynamic_map" }; +// Project options applied when loading a "published" 3MF project: the full s_project_options +// minus the filament/purge keys. A published file must not port the author's filament data +// (colors, colour types, filament/map/AMS slot state, purge/prime/flush volumes, nozzle +// volume types, filament switcher state) to the receiver's project_config, which feeds the +// scene colors, AMS slot colors and purge data. Only the plate/bed geometry keys cross over; +// normal (non-published) 3MF loads keep importing the author's flush data via s_project_options. +// +// KEEP IN SYNC with s_project_options above: when a new project option is added there, decide +// here whether it is plate/bed geometry (add it to this list) or filament/purge/mapping/device +// state (it must NOT be added). curr_bed_type is deliberately NOT in this list: the receiver +// keeps its own bed type when loading a published project. The published-mode project_config +// assertions in tests/libslic3r/test_preset_bundle_loading.cpp guard both directions. +static std::vector s_project_options_published { + "wipe_tower_x", + "wipe_tower_y", + "wipe_tower_rotation_angle" +}; + //Orca: add custom as default const char *PresetBundle::ORCA_DEFAULT_BUNDLE = "Custom"; const char *PresetBundle::ORCA_DEFAULT_PRINTER_MODEL = "MyKlipper 0.4 nozzle"; @@ -4426,10 +4447,14 @@ static void convert_filament_preset_name(std::string& machine_name, std::string& } // Load a config file from a boost property_tree. This is a private method called from load_config_file. // is_external == false on if called from ConfigWizard -void PresetBundle::load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version, bool selected) +void PresetBundle::load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version, bool selected, PublishedConfig *published_config) { PrinterTechnology printer_technology = Preset::printer_technology(config); + // A "published" 3MF project keeps the user's currently-selected presets and overlays only + // the author-selected published keys onto the edited presets. + const bool is_published = published_config != nullptr && published_config->published; + auto clear_compatible_printers = [](DynamicPrintConfig& config){ ConfigOption *opt_compatible = config.optptr("compatible_printers"); if (opt_compatible != nullptr) { @@ -4570,6 +4595,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool switch (Preset::printer_technology(config)) { case ptFFF: { + // A "published" 3MF project keeps the user's currently-selected presets, so the + // print / printer / filament presets are NOT loaded from the file. Only the + // project config values and the published keys are applied below. + if (!is_published) { //BBS: add different settings logic BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load print preset from print_settings_id"); std::vector print_different_keys_vector; @@ -4722,9 +4751,12 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool this->filament_presets[i] = loaded->name; } } + } // !is_published // 4) Load the project config values (the per extruder wipe matrix etc). - this->project_config.apply_only(config, s_project_options); + // In published mode the receiver must not inherit the author's filament/purge data, + // so only the plate/bed geometry project keys are applied. + this->project_config.apply_only(config, is_published ? s_project_options_published : s_project_options); break; } @@ -4743,9 +4775,258 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool this->update_compatible(PresetSelectCompatibleType::Never); this->update_multi_material_filament_presets(); + // A "published" 3MF project overlays only the author-selected published keys onto the + // user's currently-selected (edited) process preset. Scalar keys are applied directly; + // vector (multi-extruder) keys are applied only when the edited preset has a matching + // vector size. Keys that cannot be applied are collected for notification; legacy + // filament/printer keys in a published file fall through into skipped_keys. + if (is_published) { + std::vector skipped_keys; + std::set applied_keys; + // Structural keys must never be applied to the user's presets: doing so would + // rewrite their preset inheritance/structure. This is the single source of truth + // shared with PublishSettingsDialog.cpp (publish_structural_keys in + // PublishSettings.hpp). Defense-in-depth: a hand-crafted 3MF could set + // published_keys to these regardless of the dialog, so skip them here too. + const std::set &structural_keys = publish_structural_keys(); + // The printer overlay is restricted to the publishable retraction/z-hop allowlist. + // Printer-class keys outside it are contract-excluded: never applied and never + // reported as skipped (a hand-crafted 3MF listing machine_start_gcode or + // nozzle_diameter must not apply them and must not spam the warning). + const std::set &printer_allowlist = publishable_printer_keys(); + const std::vector &printer_options = Preset::printer_options(); + const std::set printer_option_set(printer_options.begin(), printer_options.end()); + std::set contract_excluded_keys; + auto apply_published = [&](DynamicPrintConfig &target, const std::set *allowlist) { + for (const std::string &key : published_config->published_keys) { + if (applied_keys.count(key) != 0) + continue; // already applied + // A '#' suffix denotes a variant (per-extruder/per-filament) key; resolve the base key. + const std::string base_key = key.substr(0, key.find('#')); + // Structural keys are intentionally never applied (not "skipped due to + // mismatch"), so bail out before the applied/skipped bookkeeping. + if (structural_keys.count(base_key) != 0) + continue; + if (allowlist != nullptr && + printer_option_set.count(base_key) != 0 && + allowlist->count(base_key) == 0) { + // Printer-class key outside the publishable allowlist: contract-excluded. + contract_excluded_keys.insert(base_key); + continue; + } + const ConfigOption *src_opt = config.option(base_key); + if (src_opt == nullptr) + continue; // key not present in the loaded config; record later + if (src_opt->is_vector()) { + // Vector key: apply only when the edited preset has a matching vector size. + const ConfigOption *dst_opt = target.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector() || + static_cast(src_opt)->size() != static_cast(dst_opt)->size()) + continue; // cannot apply; will be reported as skipped + // A '#' variant index must be in range: ConfigOptionVector::set_at would + // otherwise resize the destination vector, corrupting the receiver's preset. + if (key.size() > base_key.size()) { + const size_t idx = static_cast(std::atoi(key.c_str() + base_key.size() + 1)); + if (idx >= static_cast(src_opt)->size()) + continue; // out-of-range variant: cannot apply; reported as skipped + } + target.apply_only(config, {key}, true); + applied_keys.insert(key); + } else { + // A scalar key cannot carry a '#N' variant suffix; a hand-crafted file + // listing one is reported as skipped instead of being silently marked applied. + if (key.find('#') != std::string::npos) + continue; + // Scalar key: apply only if present on the user's machine. + if (target.option(base_key) == nullptr) + continue; // not present on the edited preset; will be reported as skipped + target.apply_only(config, {key}, true); + applied_keys.insert(key); + } + } + }; + apply_published(this->prints.get_edited_preset().config, nullptr); + apply_published(this->printers.get_edited_preset().config, &printer_allowlist); + + // Material pass: apply the author's material-qualified keys onto the receiver's + // matching filament presets. The file config carries the author's per-slot identity + // (filament_type / filament_vendor remain in config; filament_ids was moved into a + // local earlier) and the per-slot material retraction values. + if (!published_config->material_keys.empty()) { + const ConfigOptionStrings *file_types = config.option("filament_type"); + const ConfigOptionStrings *file_vendors = config.option("filament_vendor"); + auto identity_matches = [](const std::string &id, const std::string &type, const std::string &vendor, + const std::string &slot_id, const std::string &slot_type, const std::string &slot_vendor) { + // When both sides carry a filament_id, equality is required; otherwise fall + // back to filament_type, with filament_vendor as an additional qualifier only + // when both sides have a non-empty vendor. + if (!id.empty() && !slot_id.empty()) + return id == slot_id; + if (type.empty() || type != slot_type) + return false; + if (!vendor.empty() && !slot_vendor.empty()) + return vendor == slot_vendor; + return true; + }; + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + // Resolve the author's source slot and its ordinal among the author slots + // carrying this entry's identity. A slotted entry (slot >= 0) names the exact + // author slot and targets the receiver's Nth matching preset (N = ordinal); + // a legacy entry (slot -1) uses the first matching author slot and applies to + // every matching receiver preset. + auto slot_identity = [&filament_ids, file_types, file_vendors](size_t slot, std::string &id, std::string &type, std::string &vendor) { + id = (slot < filament_ids.size()) ? filament_ids[slot] : std::string(); + type = (file_types && slot < file_types->size()) ? file_types->get_at(slot) : std::string(); + vendor = (file_vendors && slot < file_vendors->size()) ? file_vendors->get_at(slot) : std::string(); + }; + bool author_found = false; + size_t author_slot = 0; + size_t author_ordinal = 0; + if (entry.slot >= 0) { + // Collect every author slot carrying this identity, in slot order; the + // entry's slot must be among them, and its position is the ordinal used + // to pick the receiver's matching preset. + std::vector matching_author_slots; + for (size_t slot = 0; slot < filament_ids.size(); ++slot) { + std::string slot_id, slot_type, slot_vendor; + slot_identity(slot, slot_id, slot_type, slot_vendor); + if (identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, + slot_id, slot_type, slot_vendor)) + matching_author_slots.emplace_back(slot); + } + const auto ordinal_it = std::find(matching_author_slots.begin(), matching_author_slots.end(), size_t(entry.slot)); + if (ordinal_it != matching_author_slots.end()) { + author_slot = size_t(entry.slot); + author_ordinal = size_t(ordinal_it - matching_author_slots.begin()); + author_found = true; + } + // Out of range, or the slot does not carry this identity: silent skip below. + } else { + // Legacy: the first author slot whose identity matches. + for (size_t slot = 0; slot < filament_ids.size(); ++slot) { + std::string slot_id, slot_type, slot_vendor; + slot_identity(slot, slot_id, slot_type, slot_vendor); + if (identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, + slot_id, slot_type, slot_vendor)) { + author_slot = slot; + author_found = true; + break; + } + } + } + if (!author_found) + // No author slot carries this material: nothing to apply, nothing to report. + continue; + + const std::string material_label = entry.filament_id.empty() ? entry.filament_type : entry.filament_id; + auto report_skipped = [&skipped_keys, &material_label](const std::string &key, const std::string &slot_qualifier = std::string()) { + skipped_keys.emplace_back("material:" + material_label + + (slot_qualifier.empty() ? std::string() : " " + slot_qualifier) + + " (" + key + ")"); + }; + + // Collect the receiver's matching filament presets (distinct by preset name). + std::vector matched_preset_names; + std::set fallback_matched_names; + for (const std::string &preset_name : this->filament_presets) { + Preset *preset = this->filaments.find_preset(preset_name); + if (preset == nullptr) + continue; + const std::string slot_id = preset->filament_id; + // Null-guard the identity reads: a malformed user preset may lack + // filament_type / filament_vendor entirely (hand-edited preset file). + const ConfigOptionStrings *slot_types = preset->config.option("filament_type"); + const ConfigOptionStrings *slot_vendors = preset->config.option("filament_vendor"); + const std::string slot_type = (slot_types && !slot_types->values.empty()) ? slot_types->get_at(0) : std::string(); + const std::string slot_vendor = (slot_vendors && !slot_vendors->values.empty()) ? slot_vendors->get_at(0) : std::string(); + if (!identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, + slot_id, slot_type, slot_vendor)) + continue; + if (std::find(matched_preset_names.begin(), matched_preset_names.end(), preset_name) == matched_preset_names.end()) + matched_preset_names.emplace_back(preset_name); + if (entry.filament_id.empty() || slot_id.empty()) + fallback_matched_names.insert(preset_name); + } + if (matched_preset_names.empty()) { + // No receiver material matches this entry: report each key as skipped. + for (const std::string &key : entry.keys) + report_skipped(key); + continue; + } + if (fallback_matched_names.size() > 1) { + // The type fallback matched more than one distinct receiver preset: never + // guess which one the author meant. + for (const std::string &key : entry.keys) + report_skipped(key); + continue; + } + + // Slotted entries target the receiver's matching preset at the author's + // ordinal; legacy entries apply to every matching receiver preset. + std::vector apply_to_preset_names; + if (entry.slot >= 0) { + if (author_ordinal >= matched_preset_names.size()) { + // The receiver has fewer matching presets than the author's ordinal: + // this slot's values cannot be placed, report each key. + const std::string slot_qualifier = "slot " + std::to_string(entry.slot); + for (const std::string &key : entry.keys) + report_skipped(key, slot_qualifier); + continue; + } + apply_to_preset_names.emplace_back(matched_preset_names[author_ordinal]); + } else { + apply_to_preset_names = matched_preset_names; + } + + for (const std::string &key : entry.keys) { + const std::string base_key = key.substr(0, key.find('#')); + if (structural_keys.count(base_key) != 0) + continue; // structural: silent + const ConfigOption *src_opt = config.option(base_key); + if (src_opt == nullptr || !src_opt->is_vector() || + author_slot >= static_cast(src_opt)->size()) { + report_skipped(key); + continue; + } + for (const std::string &preset_name : apply_to_preset_names) { + Preset *preset = this->filaments.find_preset(preset_name); + if (preset == nullptr) + continue; + ConfigOption *dst_opt = preset->config.option(base_key); + // Per-slot scalar copy: the receiver's filament preset holds a single + // value per key (vector of size 1), the file holds the per-slot vector. + if (dst_opt == nullptr || !dst_opt->is_vector() || + static_cast(dst_opt)->empty() || + dst_opt->type() != src_opt->type()) { + report_skipped(key); + continue; + } + static_cast(dst_opt)->set_at(src_opt, 0, author_slot); + } + } + } + } + + for (const std::string &key : published_config->published_keys) { + if (applied_keys.count(key) != 0) + continue; + const std::string base_key = key.substr(0, key.find('#')); + // Structural keys are silently ignored, never reported as skipped: a hand-crafted + // 3MF must not trigger the "could not be applied" warning for them. + if (structural_keys.count(base_key) != 0) + continue; + // Printer-class keys outside the publishable allowlist are contract-excluded too. + if (contract_excluded_keys.count(base_key) != 0) + continue; + skipped_keys.emplace_back(key); + } + published_config->skipped_keys = std::move(skipped_keys); + } + //BBS //const std::string &physical_printer = config.option("physical_printer_settings_id", true)->value; const std::string physical_printer; + if (!is_published) { if (this->printers.get_edited_preset().is_external || physical_printer.empty()) { this->physical_printers.unselect_printer(); } else { @@ -4756,6 +5037,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool else this->physical_printers.unselect_printer(); } + } //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": finished"); } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 685687975b..c8af2e4b71 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -3,6 +3,7 @@ #include "Preset.hpp" #include "AppConfig.hpp" +#include "PublishSettings.hpp" #include "enum_bitmask.hpp" #include @@ -166,6 +167,22 @@ struct PresetBundleMetadata } }; +// Configuration describing a "published" 3MF project: the file carries a flag plus a list of +// author-selected setting keys. When loading such a project the user's currently-selected +// presets are kept and only the published keys are overlaid onto the edited presets. +struct PublishedConfig +{ + bool published = false; + std::vector published_keys; + // Material-qualified published keys chosen by the author for the materials used in the + // project; applied on load only to the receiver's filament presets whose material + // identity matches (see PublishedMaterialEntry in PublishSettings.hpp). + std::vector material_keys; + // Keys that could not be applied (missing on the user's machine or vector size mismatch), + // filled in by load_config_file_config for notification purposes. + std::vector skipped_keys; +}; + // Bundle of Print + Filament + Printer presets. class PresetBundle { @@ -414,8 +431,8 @@ public: // Load configuration that comes from a model file containing configuration, such as 3MF et al. // This method is called by the Plater. - void load_config_model(const std::string &name, DynamicPrintConfig config, Semver file_version = Semver()) - { this->load_config_file_config(name, true, std::move(config), file_version); } + void load_config_model(const std::string &name, DynamicPrintConfig config, Semver file_version = Semver(), PublishedConfig *published_config = nullptr) + { this->load_config_file_config(name, true, std::move(config), file_version, false, published_config); } // Load an external config file containing the print, filament and printer presets. // Instead of a config file, a G-code may be loaded containing the full set of parameters. @@ -544,7 +561,7 @@ private: // Load print, filament & printer presets from a config. If it is an external config, then the name is extracted from the external path. // and the external config is just referenced, not stored into user profile directory. // If it is not an external config, then the config will be stored into the user profile directory. - void load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version = Semver(), bool selected = false); + void load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version = Semver(), bool selected = false, PublishedConfig *published_config = nullptr); /*ConfigSubstitutions load_config_file_config_bundle( const std::string &path, const boost::property_tree::ptree &tree, ForwardCompatibilitySubstitutionRule compatibility_rule);*/ diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp new file mode 100644 index 0000000000..4c0a851696 --- /dev/null +++ b/src/libslic3r/PublishSettings.cpp @@ -0,0 +1,105 @@ +#include "PublishSettings.hpp" + +#include "PresetBundle.hpp" +#include "Preset.hpp" + +#include + +namespace Slic3r { + +const std::set& publish_structural_keys() +{ + // Structural / non-publishable keys. The *_settings_id keys are also part of + // PresetCollection::skipped_in_dirty (Preset.cpp) and are excluded there too. + // This mirrors the structural keys stripped from configs in Preset.cpp + // (profile_print_params_same) plus other keys that must never be published + // because they would rewrite the user's preset inheritance/structure. + static const std::set structural_keys = { + "printer_settings_id", "filament_settings_id", "print_settings_id", + "sla_print_settings_id", "sla_material_settings_id", + "compatible_printers", "compatible_prints", + "compatible_printers_condition", "compatible_prints_condition", + "default_filament_profile", "default_print_profile", + "default_sla_print_profile", "default_sla_material_profile", + "extruder_count", "bed_shape", + "inherits", "inherits_group", + "printer_technology", "printer_model", "printer_variant", + "physical_printer_settings_id", "filament_ids", + "different_settings_to_system" + }; + return structural_keys; +} + +// The printer tab's "Retraction" optgroup (TabPrinter::build_fff, Tab.cpp), in tab order. +// KEEP IN SYNC with that optgroup: the published-3MF printer allowlist is built from these +// lists, so any key shown there must be publishable here (and vice versa). +const std::vector& publishable_printer_retraction_options() +{ + static const std::vector options = { + { "retraction_length", "printer_extruder_retraction#length" }, + { "retract_restart_extra", "printer_extruder_retraction#extra-length-on-restart" }, + { "retraction_speed", "printer_extruder_retraction#retraction-speed" }, + { "deretraction_speed", "printer_extruder_retraction#deretraction-speed" }, + { "retraction_minimum_travel", "printer_extruder_retraction#travel-distance-threshold" }, + { "retract_when_changing_layer", "printer_extruder_retraction#retract-on-layer-change" }, + { "wipe", "printer_extruder_retraction#wipe-while-retracting" }, + { "wipe_distance", "printer_extruder_retraction#wipe-distance" }, + { "retract_before_wipe", "printer_extruder_retraction#retract-amount-before-wipe" }, + { "retract_after_wipe", "printer_extruder_retraction#retract-amount-after-wipe" }, + }; + return options; +} + +// The printer tab's "Z-Hop" optgroup (TabPrinter::build_fff, Tab.cpp), in tab order. KEEP IN +// SYNC with that optgroup, same as publishable_printer_retraction_options(). +const std::vector& publishable_printer_z_hop_options() +{ + static const std::vector options = { + { "retract_lift_enforce", "printer_extruder_z_hop#on-surfaces" }, + { "z_hop_types", "printer_extruder_z_hop#z-hop-type" }, + { "z_hop", "printer_extruder_z_hop#z-hop-height" }, + { "travel_slope", "printer_extruder_z_hop#traveling-angle" }, + { "retract_lift_above", "printer_extruder_z_hop#only-lift-z-above" }, + { "retract_lift_below", "printer_extruder_z_hop#only-lift-z-below" }, + }; + return options; +} + +const std::set& publishable_printer_keys() +{ + // The union of the printer tab's "Retraction" and "Z-Hop" optgroups. The "Retraction when + // switching material" keys are intentionally excluded: toolchange retraction is + // device/profile territory, not a publishable behavior tweak. + static const std::set printer_keys = [] { + std::set keys; + for (const PublishablePrinterOption &opt : publishable_printer_retraction_options()) + keys.insert(opt.key); + for (const PublishablePrinterOption &opt : publishable_printer_z_hop_options()) + keys.insert(opt.key); + return keys; + }(); + return printer_keys; +} + +std::vector collect_dirty_settings_keys(const PresetBundle& bundle) +{ + std::vector keys; + + auto append_dirty = [&keys](const std::vector& dirty) { + for (const std::string& key : dirty) { + if (std::find(keys.begin(), keys.end(), key) == keys.end()) + keys.push_back(key); + } + }; + + // Print and printer presets each track a single edited preset; filaments may span + // multiple slots (multi-material). Union the dirty keys of each collection's edited + // preset; this feeds only the Publish dialog's pre-check. + append_dirty(bundle.prints.current_dirty_options(true)); + append_dirty(bundle.printers.current_dirty_options(true)); + append_dirty(bundle.filaments.current_dirty_options(true)); + + return keys; +} + +} // namespace Slic3r diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp new file mode 100644 index 0000000000..ecc939d883 --- /dev/null +++ b/src/libslic3r/PublishSettings.hpp @@ -0,0 +1,56 @@ +#pragma once +#include +#include +#include + +namespace Slic3r { +class PresetBundle; + +// Structural / non-publishable setting keys, shared by the Publish dialog and the published-3MF +// overlay path in PresetBundle::load_config_file_config. These keys must never be published +// because they would rewrite the user's preset inheritance/structure. This is the single +// source of truth for the denylist. +const std::set& publish_structural_keys(); + +// One option row of the printer tab's "Retraction" / "Z-Hop" optgroups (TabPrinter::build_fff, +// Tab.cpp). Key and icon id are kept together so the tab can later be migrated onto these +// lists; publishable_printer_keys() is their union, and the published-3MF loader/dialog must +// never accept printer keys outside it. +struct PublishablePrinterOption { + const char *key; // config key, e.g. "retraction_length" + const char *icon; // tab icon id, e.g. "printer_extruder_retraction#length" +}; + +// The printer tab's "Retraction" optgroup options, in tab order. +const std::vector& publishable_printer_retraction_options(); +// The printer tab's "Z-Hop" optgroup options, in tab order. +const std::vector& publishable_printer_z_hop_options(); + +// Printer-class retraction / z-hop keys that are publishable: the union of +// publishable_printer_retraction_options() and publishable_printer_z_hop_options(). The +// published-3MF overlay applies printer keys only when their base key is in this allowlist; +// any other printer-class key in a published file is contract-excluded (never applied, never +// reported as skipped). +const std::set& publishable_printer_keys(); + +// Returns the union of setting keys that differ from the base/system preset across the current +// print, printer and filament presets (feeds the Publish dialog's pre-check). +std::vector collect_dirty_settings_keys(const PresetBundle& bundle); + +// A material-qualified set of published setting keys, chosen by the author for one of the +// materials used in the project. The identity fields let the receiver apply the keys only +// when a matching material is selected: filament_id is the most precise (stable across +// machines/vendors when present, empty for user presets); filament_type + filament_vendor +// are the fallback. Keys are base keys (no "#N" variant suffix). +struct PublishedMaterialEntry { + std::string filament_type; // material family, e.g. "PLA" (may be empty) + std::string filament_vendor; // e.g. "Generic", "Bambu" (may be empty) + std::string filament_id; // stable material id, e.g. "GFL99" (may be empty) + // 0-based author filament slot this entry's values came from; -1 = legacy/unspecified + // (files written before the slot field). Slotted entries apply to the receiver's Nth + // matching preset (N = the slot's ordinal among the author's matching slots); legacy + // entries apply to every matching receiver preset. + int slot{-1}; + std::vector keys; +}; +} diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index b98396f943..4d103ff749 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -93,6 +93,8 @@ set(SLIC3R_GUI_SOURCES GUI/CloneDialog.hpp GUI/ConfigManipulation.cpp GUI/ConfigManipulation.hpp + GUI/ConfigValueFormatter.cpp + GUI/ConfigValueFormatter.hpp GUI/ConfigWizard.cpp GUI/ConfigWizard.hpp GUI/ConfigWizard_private.hpp @@ -437,6 +439,8 @@ set(SLIC3R_GUI_SOURCES GUI/Project.hpp GUI/PublishDialog.cpp GUI/PublishDialog.hpp + GUI/PublishSettingsDialog.cpp + GUI/PublishSettingsDialog.hpp GUI/PurgeModeDialog.cpp GUI/PurgeModeDialog.hpp GUI/RammingChart.cpp diff --git a/src/slic3r/GUI/ConfigValueFormatter.cpp b/src/slic3r/GUI/ConfigValueFormatter.cpp new file mode 100644 index 0000000000..f3ea539d4f --- /dev/null +++ b/src/slic3r/GUI/ConfigValueFormatter.cpp @@ -0,0 +1,245 @@ +#include "ConfigValueFormatter.hpp" + +#include +#include +#include +#include + +#include +#include + +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" + +#include "I18N.hpp" +#include "GUI.hpp" +#include "Field.hpp" + +namespace Slic3r { +namespace GUI { + +std::string get_pure_opt_key(const std::string& opt_key) +{ + std::string pure_key = opt_key; + const int pos = pure_key.find("#"); + if (pos > 0) + boost::erase_tail(pure_key, pure_key.size() - pos); + return pure_key; +} + +wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill, int idx) +{ + const ConfigOptionDef& def = config.def()->options.at(opt_key); + const std::vector& names = def.enum_labels;//ConfigOptionEnum::get_enum_names(); + int val = 0; + + if (idx >= 0) + val = dynamic_cast(config.option(opt_key))->get_at(idx); + else + val = config.option(opt_key)->getInt(); + + // Each infill doesn't use all list of infill declared in PrintConfig.hpp. + // So we should "convert" val to the correct one + if (is_infill) { + for (auto key_val : *def.enum_keys_map) + if (int(key_val.second) == val) { + auto it = std::find(def.enum_values.begin(), def.enum_values.end(), key_val.first); + if (it == def.enum_values.end()) + return ""; + return from_u8(_utf8(names[it - def.enum_values.begin()])); + } + return _L("Undefined"); + } + return from_u8(_utf8(names[val])); +} + +wxString get_full_label(const std::string& opt_key, const DynamicPrintConfig& config) +{ + const std::string pure_key = get_pure_opt_key(opt_key); + auto option = config.option(pure_key); + + if (!option || option->is_nil()) + return _L("N/A"); + + const ConfigOptionDef* opt = config.def()->get(pure_key); + return opt->full_label.empty() ? opt->label : opt->full_label; +} + +wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& config) +{ + int orig_opt_idx = -1; + int opt_idx = -1; + int pos = opt_key.find("#"); + std::string temp_str = opt_key; + if (pos > 0) { + boost::erase_head(temp_str, pos + 1); + orig_opt_idx = static_cast(atoi(temp_str.c_str())); + } + opt_idx = orig_opt_idx >= 0 ? orig_opt_idx : 0; + const std::string pure_key = get_pure_opt_key(opt_key); + auto option = config.option(pure_key); + if (!option) { + return _L("N/A"); + } + auto opt_vector = dynamic_cast(option); + + if (option->is_scalar() && config.option(pure_key)->is_nil() || + option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx)) + return _L("N/A"); + + wxString out; + + const ConfigOptionDef* opt = config.def()->get(pure_key); + bool is_nullable = opt->nullable; + + switch (opt->type) { + case coInt: + return from_u8((boost::format("%1%") % config.opt_int(pure_key)).str()); + case coInts: { + if (is_nullable) { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); + } + else { + auto values = config.opt(pure_key); + if (orig_opt_idx >= 0 && orig_opt_idx < values->size()) { + return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); + } + else { + std::string value_str; + for (int i = 0; i < values->size(); i++) { + value_str += std::to_string(values->get_at(i)); + if (i != values->size() - 1) { + value_str += ","; + } + } + return from_u8(value_str); + } + } + return _L("Undefined"); + } + case coBool: + return config.opt_bool(pure_key) ? "true" : "false"; + case coBools: { + if (is_nullable) { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return values->get_at(opt_idx) ? "true" : "false"; + } + else { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return values->get_at(opt_idx) ? "true" : "false"; + } + return _L("Undefined"); + } + case coPercent: + return from_u8((boost::format("%1%%%") % int(config.optptr(pure_key)->getFloat())).str()); + case coPercents: { + if (is_nullable) { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); + } + else { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); + } + return _L("Undefined"); + } + case coFloat: + return double_to_string(config.opt_float(pure_key)); + case coFloats: { + if (is_nullable) { + auto values = config.opt(pure_key); + if (opt_idx < values->size()) + return double_to_string(values->get_at(opt_idx)); + } + else { + auto values = config.opt(pure_key); + if (values && opt_idx < values->size()) + return double_to_string(values->get_at(opt_idx)); + } + return _L("Undefined"); + } + case coString: + return from_u8(config.opt_string(pure_key)); + case coStrings: { + const ConfigOptionStrings* strings = config.opt(pure_key); + if (strings) { + if (pure_key == "compatible_printers" || pure_key == "compatible_prints") { + if (strings->empty()) + return _L("All"); + for (size_t id = 0; id < strings->size(); id++) + out += from_u8(strings->get_at(id)) + "\n"; + out.RemoveLast(1); + return out; + } + if (!strings->empty() && opt_idx < strings->values.size()) + return from_u8(strings->get_at(opt_idx)); + } + break; + } + case coFloatOrPercent: { + const ConfigOptionFloatOrPercent* opt = config.opt(pure_key); + if (opt) + out = double_to_string(opt->value) + (opt->percent ? "%" : ""); + return out; + } + case coEnum: { + return get_string_from_enum(pure_key, config, + pure_key == "top_surface_pattern" || + pure_key == "bottom_surface_pattern" || + pure_key == "internal_solid_infill_pattern" || + pure_key == "sparse_infill_pattern" || + pure_key == "ironing_pattern" || + pure_key == "support_ironing_pattern" || + pure_key == "support_pattern" || + pure_key == "support_interface_pattern") + ; + } + case coEnums: { + return get_string_from_enum(pure_key, config, + pure_key == "top_surface_pattern" || + pure_key == "bottom_surface_pattern" || + pure_key == "internal_solid_infill_pattern" || + pure_key == "sparse_infill_pattern" || + pure_key == "ironing_pattern" || + pure_key == "support_ironing_pattern" || + pure_key == "support_pattern" || + pure_key == "support_interface_pattern" + , opt_idx); + } + case coPoint: { + Vec2d val = config.opt(pure_key)->value; + return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); + } + case coPoints: { + //BBS: add bed_exclude_area + if (pure_key == "printable_area" || pure_key == "thumbnails") { + ConfigOptionPoints points = *config.option(pure_key); + //BuildVolume build_volume = {points.values, 0.}; + return get_thumbnails_string(points.values); + } + else if (pure_key == "bed_exclude_area") { + return get_thumbnails_string(config.option(pure_key)->values); + } + else if (pure_key == "head_wrap_detect_zone") { + return get_thumbnails_string(config.option(pure_key)->values); + } + else if (pure_key == "wrapping_exclude_area") { + return get_thumbnails_string(config.option(pure_key)->values); + } + Vec2d val = config.opt(pure_key)->get_at(opt_idx); + return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); + } + default: + break; + } + return out; +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/ConfigValueFormatter.hpp b/src/slic3r/GUI/ConfigValueFormatter.hpp new file mode 100644 index 0000000000..e7ed549930 --- /dev/null +++ b/src/slic3r/GUI/ConfigValueFormatter.hpp @@ -0,0 +1,31 @@ +#ifndef slic3r_ConfigValueFormatter_hpp_ +#define slic3r_ConfigValueFormatter_hpp_ + +#include + +#include + +namespace Slic3r { + +class DynamicPrintConfig; + +namespace GUI { + +// Return the value of the given option (identified by opt_key, which may contain +// a "#" suffix) formatted as a human readable string. +wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& config); + +// Return the full label of the given option (identified by opt_key, which may contain +// a "#" suffix). Returns "N/A" when the option is not set. +wxString get_full_label(const std::string& opt_key, const DynamicPrintConfig& config); + +// Strip the "#" suffix (if any) from the given option key. +std::string get_pure_opt_key(const std::string& opt_key); + +// Return the localized label of the currently selected value of an enum option. +wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill = false, int idx = -1); + +} // namespace GUI +} // namespace Slic3r + +#endif // slic3r_ConfigValueFormatter_hpp_ diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 5ef81a32e1..6aa7932c84 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -54,6 +54,7 @@ #include "GUI_App.hpp" #include "UnsavedChangesDialog.hpp" +#include "PublishSettingsDialog.hpp" #include "MsgDialog.hpp" #include "Notebook.hpp" #include "GUI_Factories.hpp" @@ -2821,6 +2822,25 @@ void MainFrame::init_menubar_as_editor() [this](){return m_plater != nullptr && can_save_as(); }, this); #endif + // BBS: publish settings + fileMenu->AppendSeparator(); + auto publish_handler = [this](wxCommandEvent&) { + if (!m_plater) return; + PublishSettingsDialog dlg(this); + if (dlg.ShowModal() != wxID_OK) return; + m_plater->export_published_3mf(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); + }; + +#ifndef __APPLE__ + append_menu_item(fileMenu, wxID_ANY, _L("Publish Settings") + dots, _L("Export a 3MF file with the selected settings embedded"), + publish_handler, "menu_publish", nullptr, + [this](){return can_export_model(); }, this); +#else + append_menu_item(fileMenu, wxID_ANY, _L("Publish Settings") + dots, _L("Export a 3MF file with the selected settings embedded"), + publish_handler, "", nullptr, + [this](){return can_export_model(); }, this); +#endif + fileMenu->AppendSeparator(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8299125353..847d98f398 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1,12 +1,10 @@ #include "Plater.hpp" #include "../Utils/NetworkAgent.hpp" -#include "../Utils/NetworkAgentFactory.hpp" #include "libslic3r/Config.hpp" #include "libslic3r_version.h" #include #include -#include #include #include #include @@ -16,8 +14,6 @@ #include #include #include -#include -#include #include #include #include @@ -69,7 +65,6 @@ #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Model.hpp" -#include "libslic3r/SLA/Hollowing.hpp" #include "libslic3r/SLA/SupportPoint.hpp" #include "libslic3r/SLA/ReprojectPointsOnMesh.hpp" #include "libslic3r/Polygon.hpp" @@ -78,16 +73,15 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/PublishSettings.hpp" #include "slic3r/Utils/CrealityPrint.hpp" #include "libslic3r/ClipperUtils.hpp" -#include "libslic3r/ObjColorUtils.hpp" // For stl export #include "libslic3r/CSGMesh/ModelToCSGMesh.hpp" #include "libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp" #include "GUI.hpp" #include "GUI_App.hpp" -#include "GuiColor.hpp" #include "GUI_ObjectList.hpp" #ifdef __WXGTK__ #include "LinuxDisplayBackend.hpp" @@ -123,7 +117,6 @@ #include "SendMultiMachinePage.hpp" #include "SendToPrinter.hpp" #include "PublishDialog.hpp" -#include "ModelMall.hpp" #include "ConfigWizard.hpp" #include "SyncAmsInfoDialog.hpp" #include "../Utils/ASCIIFolding.hpp" @@ -149,7 +142,6 @@ #include "ParamsDialog.hpp" #include "ImageDPIFrame.hpp" #include "Widgets/Label.hpp" -#include "Widgets/RoundedRectangle.hpp" #include "Widgets/RadioGroup.hpp" #include "Widgets/CheckBox.hpp" #include "Widgets/Button.hpp" @@ -5459,7 +5451,7 @@ struct Plater::priv std::vector load_model_objects(const ModelObjectPtrs& model_objects, bool allow_negative_z = false, bool split_object = false, bool auto_drop = true); fs::path get_export_file_path(GUI::FileType file_type); - wxString get_export_file(GUI::FileType file_type); + wxString get_export_file(GUI::FileType file_type, const wxString& title = {}); // BBS void load_auxiliary_files(); @@ -7214,6 +7206,64 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } + // BBS: a "published" 3MF project carries a flag plus a list of author-selected + // setting keys. When present, keep the user's currently-selected presets and + // overlay only the published keys onto the edited presets on load. + PublishedConfig published_config; + if (model.model_info != nullptr) { + auto published_it = model.model_info->metadata_items.find("published"); + if (published_it != model.model_info->metadata_items.end() && + (published_it->second == "true" || published_it->second == "1")) { + published_config.published = true; + auto keys_it = model.model_info->metadata_items.find("published_keys"); + if (keys_it != model.model_info->metadata_items.end()) { + try { + auto j = nlohmann::json::parse(keys_it->second); + if (j.is_array()) + for (const auto &k : j) + if (k.is_string()) + published_config.published_keys.emplace_back(k.get()); + } catch (...) { + // Ignore malformed published_keys; the project still loads normally. + } + } + + auto material_keys_it = model.model_info->metadata_items.find("published_material_keys"); + if (material_keys_it != model.model_info->metadata_items.end()) { + try { + auto jm = nlohmann::json::parse(material_keys_it->second); + if (jm.is_array()) + for (const auto &m : jm) { + // Malformed entries are skipped individually. + if (!m.is_object()) + continue; + PublishedMaterialEntry entry; + const auto mat_it = m.find("material"); + if (mat_it != m.end() && mat_it->is_object()) { + const auto &mat = *mat_it; + if (mat.contains("filament_type") && mat["filament_type"].is_string()) + entry.filament_type = mat["filament_type"].get(); + if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) + entry.filament_vendor = mat["filament_vendor"].get(); + if (mat.contains("filament_id") && mat["filament_id"].is_string()) + entry.filament_id = mat["filament_id"].get(); + } + if (m.contains("slot") && m["slot"].is_number_integer()) + entry.slot = m["slot"].get(); + const auto entry_keys_it = m.find("keys"); + if (entry_keys_it != m.end() && entry_keys_it->is_array()) + for (const auto &k : *entry_keys_it) + if (k.is_string()) + entry.keys.emplace_back(k.get()); + published_config.material_keys.emplace_back(std::move(entry)); + } + } catch (...) { + // Ignore malformed published_material_keys; the project still loads normally. + } + } + } + } + if (load_config) { if (!config.empty()) { Preset::normalize(config); @@ -7317,7 +7367,16 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (wipe_tower_y_opt) file_wipe_tower_y = *wipe_tower_y_opt; - preset_bundle->load_config_model(filename.string(), std::move(config), file_version); + preset_bundle->load_config_model(filename.string(), std::move(config), file_version, &published_config); + + // BBS: notify the user about published settings that could not be applied. + if (!published_config.skipped_keys.empty()) { + NotificationManager *notify_manager = q->get_notification_manager(); + std::string message = _u8L("Some published settings could not be applied:"); + for (const std::string &key : published_config.skipped_keys) + message += "\n-" + key; + notify_manager->bbl_show_3mf_warn_notification(message); + } ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); if (bed_type_opt != nullptr) { @@ -8179,7 +8238,7 @@ fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) return output_file; } -wxString Plater::priv::get_export_file(GUI::FileType file_type) +wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& title) { wxString wildcard; switch (file_type) { @@ -8222,7 +8281,7 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type) case FT_3MF: { output_file.replace_extension("3mf"); - dlg_title = _L("Save file as"); + dlg_title = title.empty() ? _L("Save file as") : title; break; } case FT_OBJ: @@ -16105,6 +16164,76 @@ void Plater::export_core_3mf() export_3mf(path_u8, SaveStrategy::Silence); } +// Export the current project as a "published" 3MF. This is a pure export: unlike save_project(), +// it never touches the project's file name, dirty state, backup path or title, and the +// published metadata is attached to the model only for the duration of the export so the +// in-memory project stays exactly as it was (a later Save Project produces a normal 3MF). +int Plater::export_published_3mf(const std::vector& published_keys, const std::vector& material_keys) +{ + wxString path = p->get_export_file(FT_3MF, _L("Publish 3MF file as:")); + if (path.empty() || path == "") + return wxID_CANCEL; + + nlohmann::json j = nlohmann::json::array(); + for (const std::string& key : published_keys) + j.push_back(key); + nlohmann::json jm = nlohmann::json::array(); + for (const Slic3r::PublishedMaterialEntry& e : material_keys) + jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}}}, {"slot", e.slot}, {"keys", e.keys} }); + + Model& model = this->model(); + // Remember the previous metadata state so it can be restored after the export, keeping the + // in-memory project pristine (the published flag lives only in the exported file). + const bool had_model_info = (model.model_info != nullptr); + const bool had_published = had_model_info && (model.model_info->metadata_items.find("published") != model.model_info->metadata_items.end()); + const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find("published_keys") != model.model_info->metadata_items.end()); + const bool had_material_keys = had_model_info && (model.model_info->metadata_items.find("published_material_keys") != model.model_info->metadata_items.end()); + const std::string prev_published = had_published ? model.model_info->metadata_items.at("published") : std::string(); + const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at("published_keys") : std::string(); + const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at("published_material_keys") : std::string(); + if (model.model_info == nullptr) + model.model_info = std::make_shared(); + model.model_info->metadata_items["published"] = "1"; + model.model_info->metadata_items["published_keys"] = j.dump(); + model.model_info->metadata_items["published_material_keys"] = jm.dump(); + + // Same file layout save_project() uses for its project files, plus SaveStrategy::Silence: + // without it export_3mf() calls set_project_filename() on success, which would make this + // pure export the current project file. Silence keeps the project state untouched, exactly + // like export_core_3mf(). + auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence; + bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); + if (full_pathnames) + save_strategy = save_strategy | SaveStrategy::FullPathSources; + + const int ret = export_3mf(into_path(path), save_strategy); + + // Restore the previous metadata state (both on success and on failure). + if (!had_model_info) { + model.model_info = nullptr; + } else { + if (had_published) + model.model_info->metadata_items["published"] = prev_published; + else + model.model_info->metadata_items.erase("published"); + if (had_published_keys) + model.model_info->metadata_items["published_keys"] = prev_published_keys; + else + model.model_info->metadata_items.erase("published_keys"); + if (had_material_keys) + model.model_info->metadata_items["published_material_keys"] = prev_material_keys; + else + model.model_info->metadata_items.erase("published_material_keys"); + } + + if (ret < 0) { + MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), + _L("Publish Settings"), wxOK | wxICON_WARNING).ShowModal(); + return wxID_CANCEL; + } + return wxID_YES; +} + Preset *get_printer_preset(const MachineObject *obj) { if (!obj) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index b60c0eb242..5a83e5e4e1 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -495,6 +495,10 @@ public: void export_gcode_3mf(bool export_all = false); void send_gcode_finish(wxString name); void export_core_3mf(); + // Export the current project as a "published" 3MF: embeds the author-selected settings + // (published_keys / published_material_keys) into the file's metadata. A pure export: the + // in-memory project (filename, dirty state, model_info metadata) is left untouched. + int export_published_3mf(const std::vector& published_keys, const std::vector& material_keys); static TriangleMesh combine_mesh_fff(const ModelObject& mo, int instance_id, std::function notify_func = {}); void export_stl(bool extended = false, bool selection_only = false, bool multi_stls = false, FileType file_type = FT_STL); //BBS: remove amf diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp new file mode 100644 index 0000000000..36b7372d4a --- /dev/null +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -0,0 +1,1077 @@ +#include "PublishSettingsDialog.hpp" + +#include "GUI_App.hpp" +#include "MainFrame.hpp" +#include "MsgDialog.hpp" +#include "I18N.hpp" +#include "Tab.hpp" +#include "ConfigValueFormatter.hpp" +#include "Widgets/Label.hpp" +#include "Widgets/TextInput.hpp" +#include "Widgets/DialogButtons.hpp" +#include "Widgets/StaticLine.hpp" +#include "Widgets/StateColor.hpp" + +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Preset.hpp" +#include "libslic3r/PublishSettings.hpp" + +#include +#include +#include +#include +#include + +// Custom-painted collapse chevron: a vector path (down when expanded, right +// when collapsed) drawn in the dialog's secondary-text grey. Vector drawing +// keeps it crisp at any DPI (the earlier 16px bitmap chevron looked +// blurry/wide). +class CollapseChevron : public wxWindow +{ +public: + explicit CollapseChevron(wxWindow* parent) : wxWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE) + { + SetBackgroundColour(parent->GetBackgroundColour()); + DisableFocusFromKeyboard(); + SetMinSize(FromDIP(wxSize(10, 10))); + Bind(wxEVT_PAINT, &CollapseChevron::on_paint, this); + } + + void SetCollapsed(bool collapsed) + { + if (m_collapsed == collapsed) + return; + m_collapsed = collapsed; + Refresh(); + } + +private: + void on_paint(wxPaintEvent&) + { + wxPaintDC dc(this); + wxGraphicsContext* ctx = wxGraphicsContext::Create(dc); + if (ctx == nullptr) + return; + ctx->SetAntialiasMode(wxANTIALIAS_DEFAULT); + // Same grey as the row value labels, dark-mode aware. + wxPen pen(StateColor::darkModeColorFor(wxColour("#6B6B6B")), FromDIP(1.5), wxPENSTYLE_SOLID); + pen.SetCap(wxCAP_ROUND); + pen.SetJoin(wxJOIN_ROUND); + ctx->SetPen(pen); + + const wxSize sz = GetClientSize(); + const double cx = sz.x / 2.0; + const double cy = sz.y / 2.0; + const double r = std::min(sz.x, sz.y) * 0.32; + + wxGraphicsPath path = ctx->CreatePath(); + if (m_collapsed) { + // Right-pointing chevron ">". + path.MoveToPoint(cx - r, cy - r); + path.AddLineToPoint(cx + r, cy); + path.AddLineToPoint(cx - r, cy + r); + } else { + // Down-pointing chevron "v". + path.MoveToPoint(cx - r, cy - r); + path.AddLineToPoint(cx, cy + r); + path.AddLineToPoint(cx + r, cy - r); + } + ctx->StrokePath(path); + delete ctx; + } + + bool m_collapsed{false}; +}; + +namespace Slic3r { namespace GUI { +namespace { + +// Identity of a filament slot: the stable material id when present, else the +// type+vendor pair. Used to emit the PublishedMaterialEntry identity fields. +struct MaterialIdentity +{ + std::string type; + std::string vendor; + std::string id; +}; + +// Menu ids for show_menu(). Dedicated range above the standard ids so the popup cannot +// collide with application-level bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). +enum { + kPublishSelectAll = wxID_HIGHEST + 1, + kPublishDeselectAll, + kPublishSelectVisible, + kPublishDeselectVisible, + kPublishFilterSelected, + kPublishFilterNonSelected +}; + +MaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& full) +{ + MaterialIdentity identity; + if (const auto* types = full.opt("filament_type")) + if (slot < types->size()) + identity.type = types->get_at(slot); + if (const auto* vendors = full.opt("filament_vendor")) + if (slot < vendors->size()) + identity.vendor = vendors->get_at(slot); + if (const auto* ids = full.opt("filament_ids")) + if (slot < ids->size()) + identity.id = ids->get_at(slot); + return identity; +} + +// "Generic PLA @System" -> "Generic PLA"; mirrors the alias derivation in +// PresetBundle::load_vendor_configs_from_json (PresetBundle.cpp) and +// PresetCollection::set_custom_preset_alias (Preset.cpp). +std::string material_display_name(const std::string& preset_name) +{ + const size_t at = preset_name.find_first_of('@'); + if (at == std::string::npos) + return preset_name; + std::string bare = preset_name.substr(0, at); + boost::trim_right(bare); + return bare.empty() ? preset_name : bare; +} + +// Human-readable section title for a filament slot: the resolved preset name, +// falling back to the filament type, then to the generic "Material". +wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPrintConfig& full) +{ + if (slot < bundle->filament_presets.size()) { + const Preset* preset = bundle->filaments.find_preset(bundle->filament_presets[slot]); + if (preset != nullptr && !preset->name.empty()) + return from_u8(material_display_name(preset->name)); + } + const MaterialIdentity identity = material_identity(slot, full); + if (!identity.type.empty()) + return from_u8(identity.type); + return _L("Material"); +} + +} // namespace + +PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) + : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), + wxID_ANY, + _L("Publish Settings"), + wxDefaultPosition, + wxDefaultSize, + wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) + , m_search(this, "search", 16) + , m_menu(this, "filter", 16) +{ + SetBackgroundColour(*wxWHITE); + + build_option_model(); + + // --- filter bar: search box, All/None, menu button --- + wxPanel* f_bar = new wxPanel(this, wxID_ANY); + f_bar->SetBackgroundColour(GetBackgroundColour()); + wxBoxSizer* f_sizer = new wxBoxSizer(wxHORIZONTAL); + + m_filter_box = new TextInput(f_bar, "", "", "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); + m_filter_box->SetIcon(m_search.bmp()); + m_filter_box->SetMinSize(FromDIP(wxSize(200, 24))); + m_filter_box->SetSize(FromDIP(wxSize(-1, 24))); + m_filter_box->SetFocus(); + m_filter_ctrl = m_filter_box->GetTextCtrl(); + m_filter_ctrl->SetFont(Label::Body_13); + m_filter_ctrl->SetSize(wxSize(-1, FromDIP(16))); // centers text vertically + m_filter_ctrl->SetHint(_L("Type to filter...")); + m_filter_ctrl->Bind(wxEVT_TEXT, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_filter_ctrl->Bind(wxEVT_TEXT_ENTER, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_filter_ctrl->Bind(wxEVT_SET_FOCUS, [this](auto& e) { + apply_filter(m_filter_ctrl->GetValue()); + e.Skip(); + }); + m_filter_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto& e) { + apply_filter(m_filter_ctrl->GetValue()); + e.Skip(); + }); + f_sizer->Add(m_filter_box, 1, wxEXPAND); + Bind(wxEVT_SET_FOCUS, [this](auto&) { m_filter_box->SetFocus(); }); + + m_fb_sizer = new wxBoxSizer(wxHORIZONTAL); + auto create_btn = [this, f_bar](wxString title, bool select) { + auto btn = new wxStaticText(f_bar, wxID_ANY, title); + btn->SetForegroundColour("#009687"); + btn->SetCursor(wxCURSOR_HAND); + btn->SetFont(Label::Body_13); + btn->Bind(wxEVT_LEFT_DOWN, [this, select](wxMouseEvent&) { select_all(select); }); + m_fb_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + }; + f_sizer->Add(m_fb_sizer, 0, wxALIGN_CENTER_VERTICAL); + create_btn(_L("All"), true); + create_btn(_L("None"), false); + + m_menu_button = new wxStaticBitmap(f_bar, wxID_ANY, m_menu.bmp()); + m_menu_button->SetCursor(wxCURSOR_HAND); + m_menu_button->Bind(wxEVT_LEFT_DOWN, &PublishSettingsDialog::show_menu, this); + f_sizer->Add(m_menu_button, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + + f_bar->SetSizerAndFit(f_sizer); + + wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); + + wxStaticText* msg = new wxStaticText(this, wxID_ANY, _L("Select which settings to embed in the 3MF file")); + msg->SetFont(Label::Body_13); + msg->Wrap(-1); + w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + + w_sizer->Add(f_bar, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + w_sizer->Add(m_scroll, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); + + dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { + // At least one checked, enabled (publishable) key is required. A gated + // material row is disabled even if its value is pre-checked, so it must + // not count. + for (const Row& row : m_rows) + if (row.check->GetValue() && row.check->IsEnabled()) { + EndModal(wxID_OK); + return; + } + MessageDialog(this, _L("No settings selected. Please select at least one setting to publish."), _L("Publish Settings"), + wxOK | wxICON_WARNING) + .ShowModal(); + }); + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); + + w_sizer->Add(dlg_btns, 0, wxEXPAND); + + SetSizerAndFit(w_sizer); + SetMinSize(FromDIP(wxSize(600, 500))); + SetSize(FromDIP(wxSize(600, 500))); // initial size only; the dialog is resizable + wxGetApp().UpdateDlgDarkUI(this); +} + +PublishSettingsDialog::~PublishSettingsDialog() {} + +void PublishSettingsDialog::build_option_model() +{ + // Structural / non-publishable keys, shared with the published-3MF overlay + // path (see libslic3r/PublishSettings.hpp). + const std::set& denylist = publish_structural_keys(); + // Base keys already added in the print/printer sections. Printer rows share + // this set: a base key appears once (per-extruder "#N" variants collapse to + // the first occurrence - acceptable MVP; the per-extruder context is lost). + std::set added; + + PresetBundle* bundle = wxGetApp().preset_bundle; + DynamicPrintConfig full = bundle->full_config(); + + m_scroll = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); + m_scroll->SetScrollRate(0, 10); + m_scroll->SetBackgroundColour(GetBackgroundColour()); + m_list_sizer = new wxBoxSizer(wxVERTICAL); + m_scroll->SetSizer(m_list_sizer); + m_scroll->DisableFocusFromKeyboard(); + m_scroll->Bind(wxEVT_RIGHT_DOWN, &PublishSettingsDialog::show_menu, this); + + // "no matching rows" info label, shown by apply_filter(). + m_info = new wxStaticText(m_scroll, wxID_ANY, ""); + m_info->SetFont(Label::Body_13); + m_list_sizer->Add(m_info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + m_info->Hide(); + m_info_nonsel = _L("No selected items..."); + m_info_allsel = _L("All items selected..."); + m_info_empty = _L("No matching items..."); + + // Shared per-option label/value computation; returns false when the option + // must be skipped (denylisted / unknown / empty label). value is the pure + // stringified value; unit is the translated sidetext (may be empty). + auto option_text = [&denylist, &full](const std::string& opt_id, const std::string& pure_key, wxString& label, wxString& value, + wxString& unit) -> bool { + if (denylist.count(pure_key) > 0) + return false; + const ConfigOptionDef* def = print_config_def.get(pure_key); + if (def == nullptr) + return false; + label = _(def->full_label.empty() ? def->label : def->full_label); + if (label.IsEmpty()) + return false; + value = get_string_value(opt_id, full); + unit = _(def->sidetext); + return true; + }; + + // Find-or-create a main category; builds its header row UI on first use. + // Material sections are additionally matched by identity and slot so two + // identities (or slots) that happen to share a title stay separate. + auto category_index_for = [this, &full](const wxString& title, Section section, const std::string& icon_name, size_t group, + const MaterialIdentity& identity = MaterialIdentity(), size_t slot = 0) -> size_t { + for (size_t i = 0; i < m_categories.size(); ++i) { + if (m_categories[i].title != title || m_categories[i].section != section) + continue; + if (section == Section::Material && + (m_categories[i].filament_id != identity.id || m_categories[i].filament_type != identity.type || + m_categories[i].filament_vendor != identity.vendor || m_categories[i].filament_slot != slot)) + continue; + return i; + } + Category cat; + cat.title = title; + cat.section = section; + cat.group = group; + cat.icon_name = icon_name; + cat.filament_type = identity.type; + cat.filament_vendor = identity.vendor; + cat.filament_id = identity.id; + cat.filament_slot = slot; + if (!icon_name.empty()) { + ScalableBitmap icon_bmp(m_scroll, icon_name, 18); + cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, icon_bmp.bmp()); + } + if (section == Section::Material) { + // Material header: [master (title)][slim tri-state select-all]. + // The master is a 2-state opt-in that carries the material title; + // the tri-state is label-less and gates on the master. + cat.master_check = new wxCheckBox(m_scroll, wxID_ANY, title); + cat.master_check->SetFont(Label::Head_14); + cat.master_check->SetToolTip(_L("Export this material")); + cat.header = new wxCheckBox(m_scroll, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); + cat.header->SetFont(Label::Head_14); + cat.header->SetToolTip(_L("Select/deselect all settings in this material")); + } else { + cat.header = new wxCheckBox(m_scroll, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); + cat.header->SetFont(Label::Head_14.Bold()); + } + const size_t new_index = m_categories.size(); + cat.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_category(new_index); }); + // [icon][chevron][(chip)(master)(tri-state) | checkbox]: the chevron + // collapses/expands the category, the checkbox is the select-all. + auto header_sizer = new wxBoxSizer(wxHORIZONTAL); + if (cat.icon != nullptr) + header_sizer->Add(cat.icon, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(2)); + header_sizer->Add(cat.chevron, 0, wxALIGN_CENTER_VERTICAL); + if (section == Section::Material) { + // Per-slot colour chip, before the master title. + std::string hex; + if (const auto* colours = full.opt("filament_colour")) + if (slot < colours->size()) + hex = colours->get_at(slot); + wxBitmap* chip_bmp = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12)); + // chip_bmp points into get_extruder_color_icon's static BitmapCache + // and must NOT be deleted; the wxStaticBitmap takes its own copy. + header_sizer->Add(new wxStaticBitmap(m_scroll, wxID_ANY, *chip_bmp), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + header_sizer->Add(cat.master_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + header_sizer->Add(cat.header, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(6)); + } else { + header_sizer->Add(cat.header, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(4)); + } + // A wrapper sizer splits the vertical separation (TOP 10) from the + // horizontal indent (LEFT|RIGHT 22), so the top gap collapses with the + // header when it is hidden. + auto wrap = new wxBoxSizer(wxVERTICAL); + wrap->Add(header_sizer, 0, wxTOP, FromDIP(10)); + cat.item = m_list_sizer->Add(wrap, 0, wxLEFT | wxRIGHT, FromDIP(22)); + // Register the new category with its section group: the group's visibility + // and select-all logic iterates section.categories. + m_sections[group].categories.push_back(new_index); + m_categories.push_back(std::move(cat)); + return new_index; + }; + + // Find-or-create a subcategory (optgroup) heading within a category. + auto subcategory_index_for = [this](size_t cat_index, const wxString& title, const wxString& icon) -> size_t { + Category& cat = m_categories[cat_index]; + for (size_t i = 0; i < cat.subs.size(); ++i) + if (cat.subs[i].title == title) + return i; + Subcategory sub; + sub.title = title; + if (!title.IsEmpty()) { + // Same look as the Tab's optgroup headers (incl. its icon), plus a + // collapse chevron. A click on the chevron bitmap does not reach the + // StaticLine, so both are bound to the same toggle (LEFT_UP so the + // StaticLine's label acts as the click target too). + sub.header = new ::StaticLine(m_scroll, false, title, icon); + sub.header->SetFont(Label::Head_14); + sub.header->SetForegroundColour("#363636"); + sub.header->SetCursor(wxCURSOR_HAND); + const size_t new_index = cat.subs.size(); + auto toggle = [this, cat_index, new_index] { toggle_subcategory(cat_index, new_index); }; + sub.header->Bind(wxEVT_LEFT_UP, [toggle](wxMouseEvent&) { toggle(); }); + sub.chevron = create_chevron(m_scroll, wxEVT_LEFT_UP, toggle); + auto header_sizer = new wxBoxSizer(wxHORIZONTAL); + header_sizer->Add(sub.chevron, 0, wxALIGN_CENTER_VERTICAL); + header_sizer->Add(sub.header, 1, wxEXPAND | wxLEFT, FromDIP(4)); + // A wrapper sizer splits the vertical separation (TOP|BOTTOM 6) from + // the horizontal indent (LEFT|RIGHT 38), so the gaps collapse with + // the header when it is hidden. + auto wrap = new wxBoxSizer(wxVERTICAL); + wrap->Add(header_sizer, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); + sub.item = m_list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(38)); + } + cat.subs.push_back(std::move(sub)); + return cat.subs.size() - 1; + }; + + // Creates the row UI (checkbox + white ellipsized value + grey unit) and + // registers the row into the given category/subcategory. + auto add_row_ui = [this](const std::string& key, const wxString& label, const wxString& value, const wxString& unit, size_t cat_index, + size_t sub_index) { + Row row; + row.key = key; + row.label = label; + row.value = value; + row.unit = unit; + row.category = m_categories[cat_index].title; + row.subcategory = m_categories[cat_index].subs[sub_index].title; + row.section = m_categories[cat_index].section; + row.section_title = m_sections[m_categories[cat_index].group].title; + const size_t row_index = m_rows.size(); + m_rows.push_back(std::move(row)); + + Row& r = m_rows[row_index]; + r.check = new wxCheckBox(m_scroll, wxID_ANY, label, wxDefaultPosition, wxDefaultSize); + r.check->SetFont(Label::Body_13); + // Value in the Tab's text color (near-black light / #EFEFF0 dark); the + // unit is the grey secondary text. + r.value_label = new wxStaticText(m_scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); + r.value_label->SetFont(Label::Body_13); + r.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); + r.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); + if (!unit.IsEmpty()) { + r.unit_label = new wxStaticText(m_scroll, wxID_ANY, unit); + r.unit_label->SetFont(Label::Body_13); + r.unit_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + } + + auto row_sizer = new wxBoxSizer(wxHORIZONTAL); + row_sizer->Add(r.check, 0, wxALIGN_CENTER_VERTICAL); + row_sizer->Add(r.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + if (r.unit_label != nullptr) + row_sizer->Add(r.unit_label, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + r.item = m_list_sizer->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(54)); + + m_categories[cat_index].rows.push_back(row_index); + m_categories[cat_index].subs[sub_index].rows.push_back(row_index); + }; + + // --- Phase 1: printer per-extruder retraction settings (displayed first, + // mirroring the sidebar's Printer group). The printer tab's + // "Extruder"/"Extruder N" pages carry the per-extruder retraction options. + { + size_t g = section_group_for(Section::Printer); + for (Tab* tab : wxGetApp().tabs_list) { + if (tab->m_type != Preset::TYPE_PRINTER) + continue; + for (const PageShp& page : tab->m_pages) { + if (!page->title().StartsWith("Extruder")) + continue; + const wxString page_title = Tab::translate_category(page->title(), tab->m_type); + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + // Allowlist on the untranslated optgroup title; the "Retraction + // when switching material" group is intentionally skipped. + if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") + continue; + const wxString subcategory = page_title + L" \u00B7 " + _(optgroup->title); + for (const auto& opt : optgroup->opt_map()) { + const std::string& opt_id = opt.first; + const std::string& pure_key = opt.second.first; + // Per-extruder "#N" variants collapse to the first base key. The row stores + // the BASE key (whole-vector semantics on load: the size-guarded apply + // copies the author's full vector), while the "#0" opt_id is only used to + // display the first extruder's value. + if (!added.insert(pure_key).second) + continue; + wxString label, value, unit; + if (!option_text(opt_id, pure_key, label, value, unit)) + continue; + size_t cat_index = category_index_for(_L("Retraction & Z-hop"), Section::Printer, "custom-gcode_extruder", g); + size_t sub_index = subcategory_index_for(cat_index, subcategory, optgroup->icon); + add_row_ui(pure_key, label, value, unit, cat_index, sub_index); + } + } + } + } + } + + // --- Phase 2: per-material sections synthesized from the filament tab's + // "Setting Overrides" page, under the Filament group. + { + size_t g = section_group_for(Section::Material); + Tab* filament_tab = nullptr; + for (Tab* tab : wxGetApp().tabs_list) + if (tab->m_type == Preset::TYPE_FILAMENT) { + filament_tab = tab; + break; + } + if (filament_tab != nullptr) { + const Page* overrides_page = nullptr; + for (const PageShp& page : filament_tab->m_pages) + if (page->title() == "Setting Overrides") { + overrides_page = page.get(); + break; + } + + if (overrides_page != nullptr) { + // One section per filament slot: a 4-slot printer (e.g. 1 PLA + + // 3 PETG) shows 4 sections, each disambiguated by its colour chip + // and slot number. The "· Slot N" title suffix keeps the category + // titles unique across slots. + for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { + const MaterialIdentity identity = material_identity(slot, full); + const wxString title = material_title(slot, bundle, full) + L" \u00B7 " + + wxString::Format(_L("Slot %d"), static_cast(slot) + 1); + // A material section must not repeat a key; the same key may + // appear in other material sections - that is intended. + std::set material_added; + + for (const ConfigOptionsGroupShp& optgroup : overrides_page->m_optgroups) { + // Allowlist on the untranslated optgroup title; the + // "Ironing" group is intentionally skipped. + if (optgroup->title != "Retraction" && optgroup->title != "Retraction when switching material") + continue; + for (const auto& opt : optgroup->opt_map()) { + // Row keys are base keys (no "#N"): the load side + // matches the material and uses the author's slot. + const std::string& opt_id = opt.first; + std::string base = opt_id.substr(0, opt_id.find('#')); + if (!material_added.insert(base).second) + continue; + // Show the value of this slot; fall back to slot 0 if out of range. + std::string value_opt_id = base + "#" + std::to_string(slot); + if (const ConfigOption* opt_cfg = full.option(base)) + if (const auto* vec = dynamic_cast(opt_cfg)) + if (vec->size() > 0 && slot >= vec->size()) + value_opt_id = base + "#0"; + wxString label, value, unit; + if (!option_text(value_opt_id, base, label, value, unit)) + continue; + size_t cat_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, identity, slot); + size_t sub_index = subcategory_index_for(cat_index, _(optgroup->title), optgroup->icon); + add_row_ui(base, label, value, unit, cat_index, sub_index); + } + } + } + } + } + } + + // --- Phase 3: process (print) settings; grouping matches the process tab. + { + size_t g = section_group_for(Section::Print); + for (Tab* tab : wxGetApp().tabs_list) { + if (tab->m_type != Preset::TYPE_PRINT) + continue; + const auto& icon_map = tab->get_category_icon_map(); + for (const PageShp& page : tab->m_pages) { + wxString category = Tab::translate_category(page->title(), tab->m_type); + // Page icon, keyed by the untranslated page title (per-Tab map). + std::string icon_name; + auto icon_it = icon_map.find(page->title()); + if (icon_it != icon_map.end()) + icon_name = icon_it->second; + + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + for (const auto& opt : optgroup->opt_map()) { + // opt_map() key is the opt_id (may carry "#N"); the value is + // (pure_opt_key, opt_index). + const std::string& opt_id = opt.first; + const std::string& pure_key = opt.second.first; + // A key may appear in more than one page/group; keep the first. + if (!added.insert(pure_key).second) + continue; + wxString label, value, unit; + if (!option_text(opt_id, pure_key, label, value, unit)) + continue; + size_t cat_index = category_index_for(category, Section::Print, icon_name, g); + size_t sub_index = subcategory_index_for(cat_index, _(optgroup->title), optgroup->icon); + add_row_ui(opt_id, label, value, unit, cat_index, sub_index); + } + } + } + } + } + + // Pre-check the dirty (modified) settings and mark them bold. The base-key + // match covers all sections; collect_dirty_settings_keys already unions the + // prints, printers and filaments of the bundle. + std::set dirty_base; + for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) { + auto n = key.find('#'); + dirty_base.insert(n == std::string::npos ? key : key.substr(0, n)); + } + for (Row& row : m_rows) { + std::string base = row.key.substr(0, row.key.find('#')); + row.dirty = dirty_base.count(base) > 0; + if (row.dirty) { + row.check->SetValue(true); + set_row_bold(row, true); + } + } + + // Wire the section group tri-state headers (chevrons/StaticLine toggles were + // bound at creation in section_group_for). + for (size_t s = 0; s < m_sections.size(); ++s) { + if (m_sections[s].header != nullptr) { + m_sections[s].header->Bind(wxEVT_CHECKBOX, [this, s](wxCommandEvent&) { on_section_toggle(s); }); + update_section_header(m_sections[s]); + } + } + + // Wire the tri-state headers: clicking a header toggles all its children; + // toggling any child re-syncs its header. Bind by index so the lambdas stay + // valid even if the vectors are reallocated later. + for (size_t c = 0; c < m_categories.size(); ++c) { + if (m_categories[c].master_check != nullptr) + m_categories[c].master_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_master_toggle(c); }); + m_categories[c].header->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_category_toggle(c); }); + for (size_t r : m_categories[c].rows) + m_rows[r].check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { update_category_header(m_categories[c]); }); + update_category_header(m_categories[c]); + } + + // Material sections start gated (master OFF): their rows and tri-state are + // disabled until the author opts the material in. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].section == Section::Material) + on_master_toggle(c); + + // No filter is active at startup: every row matches until the user types. + for (Row& row : m_rows) + row.matches_filter = true; + apply_visibility(); + + m_scroll->FitInside(); + m_list_sizer->Layout(); +} + +size_t PublishSettingsDialog::section_group_for(Section kind) +{ + for (size_t i = 0; i < m_sections.size(); ++i) + if (m_sections[i].kind == kind) + return i; + + SectionGroup section; + section.kind = kind; + const size_t new_index = m_sections.size(); + + switch (kind) { + case Section::Printer: + section.title = _L("Printer"); + section.icon_name = "printer"; + break; + case Section::Material: + section.title = _L("Filament"); + section.icon_name = "filament"; + break; + case Section::Print: + section.title = _L("Process"); + section.icon_name = "process"; + break; + } + + if (!section.icon_name.empty()) { + ScalableBitmap icon_bmp(m_scroll, section.icon_name, 18); + section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, icon_bmp.bmp()); + } + + section.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_section(new_index); }); + + auto header_sizer = new wxBoxSizer(wxHORIZONTAL); + if (section.icon != nullptr) + header_sizer->Add(section.icon, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(2)); + header_sizer->Add(section.chevron, 0, wxALIGN_CENTER_VERTICAL); + + if (kind == Section::Material) { + // Filament group: clickable StaticLine title, no tri-state (each + // material below opts in individually). + section.header_line = new ::StaticLine(m_scroll, false, section.title); + section.header_line->SetFont(Label::Head_14.Bold()); + section.header_line->SetForegroundColour("#363636"); + section.header_line->SetCursor(wxCURSOR_HAND); + section.header_line->SetToolTip(_L("Enable each material below to export its settings")); + auto toggle = [this, new_index] { toggle_section(new_index); }; + section.header_line->Bind(wxEVT_LEFT_UP, [toggle](wxMouseEvent&) { toggle(); }); + header_sizer->Add(section.header_line, 1, wxEXPAND | wxLEFT, FromDIP(4)); + } else { + // Printer/Process: tri-state select-all carries the title. + section.header = new wxCheckBox(m_scroll, wxID_ANY, section.title, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); + section.header->SetFont(Label::Head_14.Bold()); + header_sizer->Add(section.header, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(4)); + } + + // A wrapper sizer splits the larger vertical separation (TOP 14) from the + // shallow horizontal indent (LEFT|RIGHT 6), so the top gap collapses with + // the header when it is hidden. wxEXPAND lets the Filament StaticLine's + // separator span the width like the subcategory headers. + auto wrap = new wxBoxSizer(wxVERTICAL); + wrap->Add(header_sizer, 0, wxEXPAND | wxTOP, FromDIP(14)); + section.item = m_list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(6)); + m_sections.push_back(std::move(section)); + return new_index; +} + +void PublishSettingsDialog::on_category_toggle(size_t category_index) +{ + Category& cat = m_categories[category_index]; + // Defensive: a gated material header is disabled and cannot fire. + if (cat.section == Section::Material && !cat.master) + return; + // A click on the header toggles between "all" and "none": if every child is + // checked, uncheck all; otherwise check all. + bool all_checked = true; + for (size_t r : cat.rows) + if (!m_rows[r].check->GetValue()) { + all_checked = false; + break; + } + bool value = !all_checked; + for (size_t r : cat.rows) + m_rows[r].check->SetValue(value); + update_category_header(cat); +} + +void PublishSettingsDialog::on_master_toggle(size_t category_index) +{ + Category& cat = m_categories[category_index]; + cat.master = cat.master_check->GetValue(); + for (size_t r : cat.rows) + m_rows[r].check->Enable(cat.master); + cat.header->Enable(cat.master); + update_category_header(cat); +} + +void PublishSettingsDialog::on_section_toggle(size_t section_index) +{ + SectionGroup& section = m_sections[section_index]; + if (section.header == nullptr) + return; // defensive: the Filament group has no select-all + // All-or-none over every enabled row in the group's categories. + bool all_checked = true; + for (size_t c : section.categories) { + for (size_t r : m_categories[c].rows) + if (m_rows[r].check->IsEnabled() && !m_rows[r].check->GetValue()) { + all_checked = false; + break; + } + if (!all_checked) + break; + } + const bool value = !all_checked; + for (size_t c : section.categories) + for (size_t r : m_categories[c].rows) + if (m_rows[r].check->IsEnabled()) + m_rows[r].check->SetValue(value); + for (size_t c : section.categories) + update_category_header(m_categories[c]); + update_section_header(section); +} + +void PublishSettingsDialog::update_section_header(SectionGroup& section) +{ + if (section.header == nullptr) + return; // Filament group has no tri-state. + int checked = 0; + int total = 0; + for (size_t c : section.categories) { + for (size_t r : m_categories[c].rows) { + if (!m_rows[r].check->IsEnabled()) + continue; // gated material rows don't count (defensive) + ++total; + if (m_rows[r].check->GetValue()) + ++checked; + } + } + if (total == 0 || checked == 0) + section.header->Set3StateValue(wxCHK_UNCHECKED); + else if (checked == total) + section.header->Set3StateValue(wxCHK_CHECKED); + else + section.header->Set3StateValue(wxCHK_UNDETERMINED); +} + +void PublishSettingsDialog::update_category_header(Category& category) +{ + // A gated material section's tri-state must not reflect the preserved + // (greyed-out) row values. + if (category.section == Section::Material && !category.master) { + category.header->Set3StateValue(wxCHK_UNCHECKED); + return; + } + int checked = 0; + for (size_t r : category.rows) + if (m_rows[r].check->GetValue()) + ++checked; + + if (checked == 0) + category.header->Set3StateValue(wxCHK_UNCHECKED); + else if (checked == static_cast(category.rows.size())) + category.header->Set3StateValue(wxCHK_CHECKED); + else + category.header->Set3StateValue(wxCHK_UNDETERMINED); +} + +void PublishSettingsDialog::set_row_bold(Row& row, bool bold) +{ + // Real set/clear: rebase on the dialog's body font so that clearing bold + // restores the exact original font (the old CheckList::SetBold was one-way). + row.check->SetFont(bold ? Label::Body_13.Bold() : Label::Body_13); +} + +void PublishSettingsDialog::apply_filter(const wxString& filter_text) +{ + Freeze(); + wxString filter = filter_text.Lower(); + + // Pseudo filters (menu only): show only checked ("::sel") or only + // unchecked ("::nonsel") rows. + const bool pseudo = (filter == "::sel" || filter == "::nonsel"); + m_fb_sizer->Show(!pseudo); + + // Update the per-row match flags only; actual visibility is computed by + // apply_visibility() (which also respects the collapse state). + if (pseudo) { + if (m_filter_ctrl->GetValue().Lower() != filter) { + m_filter_ctrl->SetValue(filter); + m_filter_ctrl->SetSelection(0, -1); + } + const bool want_checked = (filter == "::sel"); + for (Row& row : m_rows) + row.matches_filter = row.check->IsEnabled() && row.check->GetValue() == want_checked; + } else { + const bool clear = filter.IsEmpty(); + for (Row& row : m_rows) { + row.matches_filter = clear || (row.section_title + " " + row.category + " " + row.subcategory + " " + row.label + " " + + row.value + " " + row.unit) + .Lower() + .Contains(filter); + } + } + + // The info label reflects the filter result only; a collapsed section + // hiding its matches is a user choice, not "no match". + m_info->Show(); + for (const Row& row : m_rows) { + if (row.matches_filter) { + m_info->Hide(); + break; + } + } + if (m_info->IsShown()) + m_info->SetLabel(pseudo ? (filter == "::sel" ? m_info_nonsel : m_info_allsel) : m_info_empty); + + apply_visibility(); + m_scroll->FitInside(); + Layout(); + Thaw(); +} + +void PublishSettingsDialog::apply_visibility() +{ + Freeze(); + for (SectionGroup& section : m_sections) { + // The section header stays visible whenever any row in the group matches + // (a section header never depends on its own collapsed state). + bool section_any = false; + for (size_t c : section.categories) { + for (size_t r : m_categories[c].rows) + if (m_rows[r].matches_filter) { + section_any = true; + break; + } + if (section_any) + break; + } + section.item->Show(section_any); + section.chevron->SetCollapsed(section.collapsed); + + for (size_t c : section.categories) { + Category& cat = m_categories[c]; + + // The category header stays visible whenever it has any match and + // the section is not collapsed, so it can always be re-expanded. + bool cat_any = false; + for (size_t r : cat.rows) + if (m_rows[r].matches_filter) { + cat_any = true; + break; + } + cat.item->Show(cat_any && !section.collapsed); + cat.chevron->SetCollapsed(cat.collapsed); + + for (Subcategory& sub : cat.subs) { + if (sub.header != nullptr) { + // The subcategory header visibility depends on its rows' matches + // and on its ancestors, but NOT on its own collapsed state. + bool sub_any = false; + for (size_t r : sub.rows) + if (m_rows[r].matches_filter) { + sub_any = true; + break; + } + sub.item->Show(sub_any && !section.collapsed && !cat.collapsed); + sub.chevron->SetCollapsed(sub.collapsed); + } + // Rows are hidden by the filter and by any collapsed ancestor. + for (size_t r : sub.rows) + m_rows[r].item->Show(m_rows[r].matches_filter && !section.collapsed && !cat.collapsed && !sub.collapsed); + } + } + } + Thaw(); +} + +void PublishSettingsDialog::toggle_section(size_t section_index) +{ + m_sections[section_index].collapsed = !m_sections[section_index].collapsed; + apply_visibility(); + m_scroll->FitInside(); + m_list_sizer->Layout(); +} + +void PublishSettingsDialog::toggle_category(size_t category_index) +{ + m_categories[category_index].collapsed = !m_categories[category_index].collapsed; + apply_visibility(); + m_scroll->FitInside(); + m_list_sizer->Layout(); +} + +void PublishSettingsDialog::toggle_subcategory(size_t category_index, size_t subcategory_index) +{ + m_categories[category_index].subs[subcategory_index].collapsed = !m_categories[category_index].subs[subcategory_index].collapsed; + apply_visibility(); + m_scroll->FitInside(); + m_list_sizer->Layout(); +} + +CollapseChevron* PublishSettingsDialog::create_chevron(wxWindow* parent, + const wxEventTypeTag& event_type, + std::function toggle) +{ + CollapseChevron* chevron = new CollapseChevron(parent); + chevron->SetCursor(wxCURSOR_HAND); + // The tag type (not wxEventType) keeps Bind's EventTag template deduced as + // wxEventTypeTag; wxEvent& is used so the helper works with + // any mouse event tag, and the toggle itself does not inspect the event. + chevron->Bind(event_type, [toggle](wxEvent&) { toggle(); }); + return chevron; +} + +void PublishSettingsDialog::select_all(bool value) +{ + // "All" does not auto-enable gated material sections; "None" leaves a gated + // row's preserved value untouched. + for (Row& row : m_rows) + if (row.check->IsEnabled()) + row.check->SetValue(value); + for (Category& cat : m_categories) + update_category_header(cat); +} + +void PublishSettingsDialog::select_visible(bool value) +{ + wxString filter = m_filter_ctrl->GetValue().Lower(); + // In a pseudo-filter view the rows being toggled would all disappear; + // drop the filter afterwards so the result stays visible. + bool clear_pseudo = (!value && filter == "::nonsel") || (value && filter == "::sel"); + + // Toggle the rows that are visible under the *current* filter. + for (Row& row : m_rows) + if (row.check->IsShown() && row.check->IsEnabled()) + row.check->SetValue(value); + + if (clear_pseudo) { + // Note: SetValue() may fire wxEVT_TEXT on some platforms, which + // re-enters apply_filter() - that is fine, the rows above were already + // toggled and the trailing call below is idempotent. + m_filter_ctrl->SetValue(""); + apply_filter(""); // resync visibility, headers and the All/None bar + } + for (Category& cat : m_categories) + update_category_header(cat); +} + +void PublishSettingsDialog::show_menu(wxMouseEvent& evt) +{ + bool filtering = !m_filter_ctrl->GetValue().IsEmpty(); + bool list_empty = m_info->IsShown(); + + wxMenu m; + m.Append(kPublishSelectAll, _L("Select All"))->Enable(!filtering); + m.Append(kPublishDeselectAll, _L("Deselect All"))->Enable(!filtering); + m.AppendSeparator(); + m.Append(kPublishSelectVisible, _L("Select visible"))->Enable(!list_empty && filtering); + m.Append(kPublishDeselectVisible, _L("Deselect visible"))->Enable(!list_empty && filtering); + m.AppendSeparator(); + m.Append(kPublishFilterSelected, _L("Filter selected")); + m.Append(kPublishFilterNonSelected, _L("Filter nonSelected")); + + m.Bind( + wxEVT_MENU, + [this](wxCommandEvent& e) { + switch (e.GetId()) { + case kPublishSelectAll: select_all(true); break; + case kPublishDeselectAll: select_all(false); break; + case kPublishSelectVisible: select_visible(true); break; + case kPublishDeselectVisible: select_visible(false); break; + case kPublishFilterSelected: apply_filter("::sel"); break; + case kPublishFilterNonSelected: apply_filter("::nonsel"); break; + default: break; + } + }, + kPublishSelectAll, kPublishFilterNonSelected); + + wxWindow* src = dynamic_cast(evt.GetEventObject()); + if (!src) + return; + wxPoint screen_pos = src->ClientToScreen(evt.GetPosition()); + wxPoint local_pos = ScreenToClient(screen_pos); + PopupMenu(&m, local_pos); +} + +std::vector PublishSettingsDialog::GetPublishedKeys() const +{ + std::vector out; + // Process and printer sections both travel through published_keys (the load-side + // overlay applies process keys to the prints edited preset and the allowlisted + // printer keys to the printers edited preset). Material keys use a separate API. + for (const Row& row : m_rows) + if ((row.section == Section::Print || row.section == Section::Printer) && row.check->GetValue()) + out.push_back(row.key); + return out; +} + +std::vector PublishSettingsDialog::GetPublishedMaterialKeys() const +{ + std::vector out; + for (const Category& cat : m_categories) { + // Only opted-in materials export their keys. + if (cat.section != Section::Material || !cat.master) + continue; + Slic3r::PublishedMaterialEntry entry; + entry.filament_type = cat.filament_type; + entry.filament_vendor = cat.filament_vendor; + entry.filament_id = cat.filament_id; + entry.slot = static_cast(cat.filament_slot); + for (size_t r : cat.rows) + if (m_rows[r].check->GetValue()) + entry.keys.push_back(m_rows[r].key); + // A section without any checked key carries no information for the writer. + if (!entry.keys.empty()) + out.push_back(std::move(entry)); + } + return out; +} + +void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) +{ + // The remaining bitmap icons are rescaled; the collapse chevrons are + // vector-drawn and repaint themselves. + m_search.msw_rescale(); + m_menu.msw_rescale(); + m_filter_box->SetIcon(m_search.bmp()); + m_menu_button->SetBitmap(m_menu.bmp()); + SetMinSize(FromDIP(wxSize(600, 500))); + m_scroll->FitInside(); + m_list_sizer->Layout(); + Refresh(); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp new file mode 100644 index 0000000000..ff9cb88e4b --- /dev/null +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -0,0 +1,183 @@ +#ifndef slic3r_GUI_PublishSettingsDialog_hpp_ +#define slic3r_GUI_PublishSettingsDialog_hpp_ + +#include "GUI_Utils.hpp" +#include "wxExtensions.hpp" + +#include "libslic3r/PublishSettings.hpp" + +#include +#include +#include +#include +#include +#include + +// Forward declarations (all are global classes, see Widgets/TextInput.hpp, +// Widgets/StaticLine.hpp and the CollapseChevron definition in the .cpp). +class TextInput; +class StaticLine; +class CollapseChevron; + +namespace Slic3r { namespace GUI { + +// Dialog that lets a model author select which settings get embedded in a 3MF. +// Settings are grouped the way the tabs show them: the process (print) pages, +// the printer's per-extruder retraction settings, and one section per material +// used in the project (filament overrides). Each main category has a select-all +// tri-state header, subcategory (optgroup) headings, one row per setting +// (checkbox + grey value label), and both header levels are collapsible (chevron +// toggle). A search filter and an All/None / select-visible menu are provided. +// Modified (dirty) settings are pre-checked and shown bold. On OK, the print +// rows become the "published_keys" list and the material rows become the +// per-material "published_material_keys". +class PublishSettingsDialog : public DPIDialog +{ +public: + PublishSettingsDialog(wxWindow* parent = nullptr); + ~PublishSettingsDialog(); + + // The selected print-section setting keys (in display order). Keys may + // contain '#'. + std::vector GetPublishedKeys() const; + + // The selected keys grouped per material: one entry per material section + // with at least one checked key. Keys are base keys (no "#N" suffix). + std::vector GetPublishedMaterialKeys() const; + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; + +private: + // Which part of the settings the row/category came from. + enum class Section { Print, Printer, Material }; + + // One selectable setting row: a checkbox (setting name) plus a value label + // and a (optional) grey unit label. key is the full config key and may carry + // a "#N" variant suffix (print/printer rows); material rows carry the base key. + struct Row + { + std::string key; + wxString category; + wxString subcategory; + wxString label; + wxString value; + wxString unit; + wxString section_title; // top-level group title, for filter matching + Section section{Section::Print}; + bool dirty{false}; // matches a dirty base key: pre-checked + bold + bool matches_filter{false}; // survives the active filter (computed by apply_filter) + wxCheckBox* check{nullptr}; + wxStaticText* value_label{nullptr}; + wxStaticText* unit_label{nullptr}; + wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in m_list_sizer + }; + + // A subcategory (optgroup) heading. Rows store indices into m_rows. + struct Subcategory + { + wxString title; + ::StaticLine* header{nullptr}; // null when the title is empty + bool collapsed{false}; + CollapseChevron* chevron{nullptr}; + wxSizerItem* item{nullptr}; // sizer item of the header h-sizer in m_list_sizer + std::vector rows; + }; + + // A main category with its select-all tri-state header. + struct Category + { + wxString title; + Section section{Section::Print}; + size_t group{0}; // index into m_sections + std::string icon_name; // bitmap name; empty = no icon + wxStaticBitmap* icon{nullptr}; // 18px category icon (null when icon_name empty) + wxCheckBox* header{nullptr}; // select-all tri-state + // Material opt-in: the master checkbox carries the material title and + // gates whether this material's keys may be exported. + bool master{false}; + wxCheckBox* master_check{nullptr}; + bool collapsed{false}; + CollapseChevron* chevron{nullptr}; + wxSizerItem* item{nullptr}; // sizer item of the header h-sizer in m_list_sizer + // Material identity, only for Section::Material categories. + std::string filament_type; + std::string filament_vendor; + std::string filament_id; + // The author's 0-based filament slot this material section represents. + size_t filament_slot{0}; + std::vector subs; + std::vector rows; // flattened rows, for the tri-state math + }; + + // A top-level section group mirroring the editor sidebar. Categories are + // nested inside. + struct SectionGroup + { + wxString title; // _L("Printer") / _L("Filament") / _L("Process") + Section kind{Section::Print}; // maps 1:1 to the display group + std::string icon_name; // "printer" / "filament" / "process" + wxStaticBitmap* icon{nullptr}; // 18px, like Category::icon + wxCheckBox* header{nullptr}; // tri-state select-all; nullptr for the Filament group + ::StaticLine* header_line{nullptr}; // Filament group's clickable title + CollapseChevron* chevron{nullptr}; + wxSizerItem* item{nullptr}; + bool collapsed{false}; + std::vector categories; // indices into m_categories + }; + + void build_option_model(); + void apply_filter(const wxString& filter_text); + void select_all(bool value); + void select_visible(bool value); + void show_menu(wxMouseEvent& evt); + void update_category_header(Category& category); + void set_row_bold(Row& row, bool bold); + void on_category_toggle(size_t category_index); + // Material opt-in toggled: enables/disables the material's rows + tri-state + // and resyncs the header. + void on_master_toggle(size_t category_index); + // Collapse/expand a category or subcategory; resyncs visibility + chevrons. + void toggle_category(size_t category_index); + void toggle_subcategory(size_t category_index, size_t subcategory_index); + // Find-or-create the top-level section group for a Section kind (builds its + // header row on first use). + size_t section_group_for(Section kind); + // Top-level section group: select-all tri-state toggled / collapse/expand / + // header resync. + void on_section_toggle(size_t section_index); + void toggle_section(size_t section_index); + void update_section_header(SectionGroup& section); + // Single pass over categories/subs/rows: shows an item iff it is not hidden + // by the filter and (for subs/rows) by a collapsed ancestor. Flips the + // header chevrons. Only reads matches_filter; never re-runs filter matching. + void apply_visibility(); + // Creates a collapse chevron with a hand cursor; clicking it (with the given + // mouse event, LEFT_DOWN for categories / LEFT_UP for subcategories, + // matching the header's own binding) invokes the toggle. + CollapseChevron* create_chevron(wxWindow* parent, const wxEventTypeTag& event_type, std::function toggle); + + wxScrolledWindow* m_scroll{nullptr}; + wxBoxSizer* m_list_sizer{nullptr}; // vertical sizer of the scrolled window + wxBoxSizer* m_fb_sizer{nullptr}; // "All"/"None" buttons sizer + TextInput* m_filter_box{nullptr}; + wxTextCtrl* m_filter_ctrl{nullptr}; + wxStaticBitmap* m_menu_button{nullptr}; + wxStaticText* m_info{nullptr}; + wxString m_info_nonsel; + wxString m_info_allsel; + wxString m_info_empty; + + ScalableBitmap m_search; + ScalableBitmap m_menu; + + std::vector m_rows; + std::vector m_categories; + // Fixed display order enforced by phase order in build_option_model(): + // Printer, then Filament, then Process. + std::vector m_sections; +}; + +}} // namespace Slic3r::GUI + +#endif // slic3r_GUI_PublishSettingsDialog_hpp_ diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 1a31355d0e..935ab58592 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5675,6 +5675,9 @@ if (is_marlin_flavor) optgroup->append_single_option_line("extruder_offset", "printer_extruder_basic_information#extruder-offset-position", extruder_idx); //BBS: don't show retract related config menu in machine page + // Keep this optgroup's options in sync with publishable_printer_retraction_options() + // in libslic3r/PublishSettings.hpp: the published-3MF printer allowlist is its union + // with the Z-Hop optgroup below. optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); optgroup->append_single_option_line("retraction_length", "printer_extruder_retraction#length", extruder_idx); optgroup->append_single_option_line("retract_restart_extra", "printer_extruder_retraction#extra-length-on-restart", extruder_idx); @@ -5688,6 +5691,9 @@ if (is_marlin_flavor) // Orca optgroup->append_single_option_line("retract_after_wipe", "printer_extruder_retraction#retract-amount-after-wipe", extruder_idx); + // Keep this optgroup's options in sync with publishable_printer_z_hop_options() + // in libslic3r/PublishSettings.hpp: the published-3MF printer allowlist is its union + // with the Retraction optgroup above. optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement"); optgroup->append_single_option_line("retract_lift_enforce", "printer_extruder_z_hop#on-surfaces", extruder_idx); optgroup->append_single_option_line("z_hop_types", "printer_extruder_z_hop#z-hop-type", extruder_idx); diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 19eb0b849d..1d3f8daf2a 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -30,7 +30,6 @@ #include //#include "BedShapeDialog.hpp" -#include "Event.hpp" #include "wxExtensions.hpp" #include "ConfigManipulation.hpp" #include "OptionsGroup.hpp" @@ -38,7 +37,6 @@ //BBS: GUI refactor #include "Notebook.hpp" #include "ParamsPanel.hpp" -#include "Widgets/RoundedRectangle.hpp" #include "Widgets/TextInput.hpp" #include "Widgets/CheckBox.hpp" // ORCA @@ -472,6 +470,7 @@ protected: std::string m_last_sparse_infill_rotate_template_value; ConfigManipulation get_config_manipulation(); friend class EditGCodeDialog; + friend class PublishSettingsDialog; }; class TabPrint : public Tab diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 5c69466cfa..dd1bf43253 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -12,6 +12,7 @@ #include "libslic3r/PresetBundle.hpp" #include "libslic3r/Color.hpp" #include "format.hpp" +#include "ConfigValueFormatter.hpp" #include "GUI_App.hpp" #include "Plater.hpp" #include "Tab.hpp" @@ -571,14 +572,6 @@ void DiffModel::Clear() } -static std::string get_pure_opt_key(std::string opt_key) -{ - const int pos = opt_key.find("#"); - if (pos > 0) - boost::erase_tail(opt_key, opt_key.size() - pos); - return opt_key; -} - // ---------------------------------------------------------------------------- // DiffViewCtrl // ---------------------------------------------------------------------------- @@ -1212,32 +1205,6 @@ bool UnsavedChangesDialog::save(PresetCollection* dependent_presets, bool show_s return true; } -wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill = false, int idx = -1) -{ - const ConfigOptionDef& def = config.def()->options.at(opt_key); - const std::vector& names = def.enum_labels;//ConfigOptionEnum::get_enum_names(); - int val = 0; - - if (idx >= 0) - val = dynamic_cast(config.option(opt_key))->get_at(idx); - else - val = config.option(opt_key)->getInt(); - - // Each infill doesn't use all list of infill declared in PrintConfig.hpp. - // So we should "convert" val to the correct one - if (is_infill) { - for (auto key_val : *def.enum_keys_map) - if (int(key_val.second) == val) { - auto it = std::find(def.enum_values.begin(), def.enum_values.end(), key_val.first); - if (it == def.enum_values.end()) - return ""; - return from_u8(_utf8(names[it - def.enum_values.begin()])); - } - return _L("Undefined"); - } - return from_u8(_utf8(names[val])); -} - // BBS #if 0 static size_t get_id_from_opt_key(std::string opt_key) @@ -1251,194 +1218,6 @@ static size_t get_id_from_opt_key(std::string opt_key) } #endif -static wxString get_full_label(std::string opt_key, const DynamicPrintConfig& config) -{ - opt_key = get_pure_opt_key(opt_key); - auto option = config.option(opt_key); - - if (!option || option->is_nil()) - return _L("N/A"); - - const ConfigOptionDef* opt = config.def()->get(opt_key); - return opt->full_label.empty() ? opt->label : opt->full_label; -} - -static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& config) -{ - int orig_opt_idx = -1; - int opt_idx = -1; - int pos = opt_key.find("#"); - std::string temp_str = opt_key; - if (pos > 0) { - boost::erase_head(temp_str, pos + 1); - orig_opt_idx = static_cast(atoi(temp_str.c_str())); - } - opt_idx = orig_opt_idx >= 0 ? orig_opt_idx : 0; - opt_key = get_pure_opt_key(opt_key); - auto option = config.option(opt_key); - if (!option) { - return _L("N/A"); - } - auto opt_vector = dynamic_cast(option); - - if (option->is_scalar() && config.option(opt_key)->is_nil() || - option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx)) - return _L("N/A"); - - wxString out; - - const ConfigOptionDef* opt = config.def()->get(opt_key); - bool is_nullable = opt->nullable; - - switch (opt->type) { - case coInt: - return from_u8((boost::format("%1%") % config.opt_int(opt_key)).str()); - case coInts: { - if (is_nullable) { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); - } - else { - auto values = config.opt(opt_key); - if (orig_opt_idx >= 0 && orig_opt_idx < values->size()) { - return from_u8((boost::format("%1%") % values->get_at(opt_idx)).str()); - } - else { - std::string value_str; - for (int i = 0; i < values->size(); i++) { - value_str += std::to_string(values->get_at(i)); - if (i != values->size() - 1) { - value_str += ","; - } - } - return from_u8(value_str); - } - } - return _L("Undefined"); - } - case coBool: - return config.opt_bool(opt_key) ? "true" : "false"; - case coBools: { - if (is_nullable) { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return values->get_at(opt_idx) ? "true" : "false"; - } - else { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return values->get_at(opt_idx) ? "true" : "false"; - } - return _L("Undefined"); - } - case coPercent: - return from_u8((boost::format("%1%%%") % int(config.optptr(opt_key)->getFloat())).str()); - case coPercents: { - if (is_nullable) { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); - } - else { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return from_u8((boost::format("%1%%%") % values->get_at(opt_idx)).str()); - } - return _L("Undefined"); - } - case coFloat: - return double_to_string(config.opt_float(opt_key)); - case coFloats: { - if (is_nullable) { - auto values = config.opt(opt_key); - if (opt_idx < values->size()) - return double_to_string(values->get_at(opt_idx)); - } - else { - auto values = config.opt(opt_key); - if (values && opt_idx < values->size()) - return double_to_string(values->get_at(opt_idx)); - } - return _L("Undefined"); - } - case coString: - return from_u8(config.opt_string(opt_key)); - case coStrings: { - const ConfigOptionStrings* strings = config.opt(opt_key); - if (strings) { - if (opt_key == "compatible_printers" || opt_key == "compatible_prints") { - if (strings->empty()) - return _L("All"); - for (size_t id = 0; id < strings->size(); id++) - out += from_u8(strings->get_at(id)) + "\n"; - out.RemoveLast(1); - return out; - } - if (!strings->empty() && opt_idx < strings->values.size()) - return from_u8(strings->get_at(opt_idx)); - } - break; - } - case coFloatOrPercent: { - const ConfigOptionFloatOrPercent* opt = config.opt(opt_key); - if (opt) - out = double_to_string(opt->value) + (opt->percent ? "%" : ""); - return out; - } - case coEnum: { - return get_string_from_enum(opt_key, config, - opt_key == "top_surface_pattern" || - opt_key == "bottom_surface_pattern" || - opt_key == "internal_solid_infill_pattern" || - opt_key == "sparse_infill_pattern" || - opt_key == "ironing_pattern" || - opt_key == "support_ironing_pattern" || - opt_key == "support_pattern" || - opt_key == "support_interface_pattern") - ; - } - case coEnums: { - return get_string_from_enum(opt_key, config, - opt_key == "top_surface_pattern" || - opt_key == "bottom_surface_pattern" || - opt_key == "internal_solid_infill_pattern" || - opt_key == "sparse_infill_pattern" || - opt_key == "ironing_pattern" || - opt_key == "support_ironing_pattern" || - opt_key == "support_pattern" || - opt_key == "support_interface_pattern" - , opt_idx); - } - case coPoint: { - Vec2d val = config.opt(opt_key)->value; - return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); - } - case coPoints: { - //BBS: add bed_exclude_area - if (opt_key == "printable_area" || opt_key == "thumbnails") { - ConfigOptionPoints points = *config.option(opt_key); - //BuildVolume build_volume = {points.values, 0.}; - return get_thumbnails_string(points.values); - } - else if (opt_key == "bed_exclude_area") { - return get_thumbnails_string(config.option(opt_key)->values); - } - else if (opt_key == "head_wrap_detect_zone") { - return get_thumbnails_string(config.option(opt_key)->values); - } - else if (opt_key == "wrapping_exclude_area") { - return get_thumbnails_string(config.option(opt_key)->values); - } - Vec2d val = config.opt(opt_key)->get_at(opt_idx); - return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); - } - default: - break; - } - return out; -} - void UnsavedChangesDialog::update(Preset::Type type, PresetCollection* dependent_presets, const std::string& new_selected_preset, const wxString& header) { PresetCollection* presets = dependent_presets; diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index c839149f5f..4eccf0e9fa 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -11,6 +11,8 @@ #include "test_utils.hpp" +#include + #include #include @@ -497,3 +499,178 @@ SCENARIO("Nozzle-group metadata .3mf round-trip", "[3mf][MultiNozzle]") { delete plate; } } + +// The "Publish" feature stores a published flag plus a JSON array of author-selected setting keys +// in model.model_info->metadata_items. This locks the serialization contract: both keys must survive +// a store_bbs_3mf -> load_bbs_3mf round-trip unchanged. (The full preset-preservation behavior — +// keeping the user's currently-selected presets and overlaying only the published keys onto them — +// is exercised headlessly in "Published 3MF overlays only the author-selected process keys onto the +// edited preset" in test_preset_bundle_loading.cpp.) +SCENARIO("Published 3MF round-trips the published flag and published_keys metadata", "[3mf]") { + GIVEN("a model carrying published metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + model.model_info = std::make_shared(); + model.model_info->metadata_items["published"] = "1"; + model.model_info->metadata_items["published_keys"] = R"(["layer_height","wall_thickness"])"; + + // store_bbs_3mf stages Metadata/project_settings.config through the model's backup path; + // point it at a writable temp dir (the default lives under a read-only root in CI). + ScopedTemporaryDir backup_dir("orca_pub"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the published metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items["published"] == "1"); + REQUIRE(dst_model.model_info->metadata_items["published_keys"] == R"(["layer_height","wall_thickness"])"); + + // The published_keys value is a JSON array of setting keys; it must parse back to + // the same keys that were selected. + nlohmann::json keys = nlohmann::json::parse(dst_model.model_info->metadata_items["published_keys"]); + REQUIRE(keys.is_array()); + REQUIRE(keys.size() == 2); + REQUIRE(keys[0] == "layer_height"); + REQUIRE(keys[1] == "wall_thickness"); + } + release_PlateData_list(dst_plates); + } + } +} + +// A project saved without the Publish metadata (i.e. a normal 3MF) must load identically: the +// loader must not fabricate a "published" flag or published_keys for files that never carried them. +SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { + GIVEN("a model without any published metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + ScopedTemporaryDir backup_dir("orca_legacy"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("no published key is fabricated") { + REQUIRE(loaded); + if (dst_model.model_info != nullptr) { + REQUIRE(dst_model.model_info->metadata_items.count("published") == 0); + REQUIRE(dst_model.model_info->metadata_items.count("published_keys") == 0); + } + } + release_PlateData_list(dst_plates); + } + } +} + +// The "Publish" feature can also store material-qualified setting keys, one entry per material +// the author uses, in model.model_info->metadata_items. This locks the serialization contract +// for that entry list: the JSON must survive a store_bbs_3mf -> load_bbs_3mf round-trip +// verbatim, exactly like the plain published_keys array. +SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf]") { + GIVEN("a model carrying published material keys metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + const std::string material_keys_json = + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99"},"slot":0,"keys":["filament_retraction_length","filament_z_hop"]}])"; + + model.model_info = std::make_shared(); + model.model_info->metadata_items["published_material_keys"] = material_keys_json; + + ScopedTemporaryDir backup_dir("orca_pub_mat"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the published material keys metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); + + // The value must parse back to one material entry carrying the nested identity + // object, the author slot ordinal and the key list, so the loader can match it + // to the receiver's filaments. + nlohmann::json entries = nlohmann::json::parse(material_keys_json); + REQUIRE(entries.is_array()); + REQUIRE(entries.size() == 1); + REQUIRE(entries[0]["material"]["filament_type"] == "PLA"); + REQUIRE(entries[0]["material"]["filament_vendor"] == "Generic"); + REQUIRE(entries[0]["material"]["filament_id"] == "GFL99"); + REQUIRE(entries[0]["slot"] == 0); + REQUIRE(entries[0]["keys"].is_array()); + REQUIRE(entries[0]["keys"].size() == 2); + REQUIRE(entries[0]["keys"][0] == "filament_retraction_length"); + } + release_PlateData_list(dst_plates); + } + } +} diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 844ccb6a8b..fc61083896 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -7,12 +7,20 @@ #include "test_utils.hpp" +#include + using namespace Slic3r; namespace { namespace fs = boost::filesystem; +// Whether a key is listed in a vector of keys (published_keys / skipped_keys). +bool contains_key(const std::vector &keys, const std::string &key) +{ + return std::find(keys.begin(), keys.end(), key) != keys.end(); +} + void write_print_preset(const DynamicPrintConfig &default_config, const fs::path &file, const std::string &name, const std::string &inherits = {}) { DynamicPrintConfig config(default_config); @@ -540,3 +548,530 @@ TEST_CASE("A printer specific filament supersedes the generic library filament w CHECK(is_compatible_with_printer(generic_lib, PresetWithVendorProfile(*printer_c, nullptr))); } +// A "published" 3MF keeps the user's currently-selected presets and overlays only the +// author-selected process keys onto the edited preset. Mirrors the GUI load path +// (src/slic3r/GUI/Plater.cpp): Preset::normalize before load_config_model, then the +// published overlay in PresetBundle::load_config_file_config. +TEST_CASE("Published 3MF overlays only the author-selected process keys onto the edited preset", "[Preset][Bundle][Published]") +{ + // The file config the GUI builds from a .3mf's project settings. + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // The loader derives the filament count from filament_colour and throws when it is + // empty ("Invalid configuration file"); a 3mf always carries it. + config.opt("filament_colour")->values = { "#FF0000" }; + // Process scalar key. + config.opt_float("layer_height") = 0.28; + // Process vector key, size 2 to match the edited preset's resized vector. + config.opt("wiping_volumes_extruders")->values = { 140., 150. }; + // Process vector key, size 2: deliberately mismatched against the edited preset. + config.opt("post_process")->values = { "script-a", "script-b" }; + // A filament key: published files may still carry legacy filament keys. + config.opt("nozzle_temperature")->values = { 220 }; + // A structural (denylisted) key: must be silently ignored even if a hand-crafted + // file lists it as published. full_print_config() omits the *_settings_id keys (they + // have no static counterpart), while a real 3mf project config carries it, so create + // it explicitly. + config.opt_string("print_settings_id", true) = "file process"; + // Project-level filament/purge data: must NOT cross over in published mode. + config.opt("flush_multiplier")->values = { 2., 2. }; + // A project-level option, to pin the project_config.apply_only() invariant. + config.opt("wipe_tower_x")->values = { 100. }; + // The author's bed type must NOT cross over either: the receiver keeps its own. + config.option("curr_bed_type")->setInt(BedType::btPC); + return config; + }; + + const std::vector published_keys = { + "layer_height", "wiping_volumes_extruders", "post_process", "nozzle_temperature", "print_settings_id" + }; + + PresetBundle bundle; + const std::string pre_load_name = bundle.prints.get_edited_preset().name; + const size_t pre_load_size = bundle.prints.size(); + + // The edited presets are the overlay targets: recognizable pre-load values. + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values = { 10., 20. }; + bundle.prints.get_edited_preset().config.opt("post_process")->values = { "existing-script" }; + bundle.prints.get_edited_preset().config.opt_string("print_settings_id") = "user process"; + // Capture the ctor-seeded project_config values; the assertions below check that the + // published load leaves them untouched rather than hardcoding the defaults. + const std::vector seed_filament_colour = bundle.project_config.opt("filament_colour")->values; + const std::vector seed_flush_multiplier = bundle.project_config.opt("flush_multiplier")->values; + const int seed_bed_type = bundle.project_config.option("curr_bed_type")->getInt(); + + DynamicPrintConfig config = make_file_config(); + // The GUI normalizes the config before load; do the same so only the production path is exercised. + Preset::normalize(config); + + PublishedConfig pub; + pub.published = true; + pub.published_keys = published_keys; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // a) The process scalar is overlaid onto the edited preset. + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); + + // b) A matching-size process vector is applied; a size-mismatched one is neither applied + // nor reported as skipped by accident — it lands in skipped_keys. + CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 140., 150. }); + CHECK(bundle.prints.get_edited_preset().config.opt("post_process")->values == std::vector{ "existing-script" }); + CHECK(contains_key(pub.skipped_keys, "post_process")); + + // c) A filament key is never applied anywhere and is reported as skipped (warning). + CHECK(bundle.prints.get_edited_preset().config.option("nozzle_temperature") == nullptr); + CHECK(contains_key(pub.skipped_keys, "nozzle_temperature")); + + // d) A structural key is silently ignored: neither applied nor reported as skipped. + CHECK(bundle.prints.get_edited_preset().config.opt_string("print_settings_id") == "user process"); + CHECK_FALSE(contains_key(pub.skipped_keys, "print_settings_id")); + + // Applied keys are not reported as skipped. + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); + + // e) project_config.apply_only() still runs, but in published mode only the plate/bed + // geometry crosses: the file's filament/purge data must NOT port to the receiver. + // Filament colors do not port; project_config keeps its ctor-seeded values. + CHECK(bundle.project_config.opt("filament_colour")->values != std::vector{ "#FF0000" }); + CHECK(bundle.project_config.opt("filament_colour")->values == seed_filament_colour); + // Purge data does not port either, and update_multi_material_filament_presets() cannot + // resurrect it (flush_multiplier stays at the ctor seed). + CHECK(bundle.project_config.opt("flush_multiplier")->values == seed_flush_multiplier); + // The author's bed type does not cross over: the receiver keeps its own. + CHECK(bundle.project_config.option("curr_bed_type")->getInt() == seed_bed_type); + // Plate/bed geometry still crosses. + CHECK(bundle.project_config.opt("wipe_tower_x")->values == std::vector{ 100. }); + + // The published path keeps the user's currently-selected presets: the edited process + // preset is the same preset as before the load. + CHECK(bundle.prints.get_edited_preset().name == pre_load_name); + CHECK(bundle.prints.size() == pre_load_size); + + // f) Non-published control: with published=false the overlay is disabled. The file's + // presets are loaded and selected instead (the user's preset is not kept) and no + // skipped_keys are produced. + PresetBundle control_bundle; + const size_t control_pre_size = control_bundle.prints.size(); + PublishedConfig control_pub; + control_pub.published = false; + control_pub.published_keys = published_keys; + DynamicPrintConfig control_config = make_file_config(); + Preset::normalize(control_config); + control_bundle.load_config_model("test.3mf", std::move(control_config), Semver(), &control_pub); + + CHECK(control_pub.skipped_keys.empty()); + CHECK(control_bundle.prints.size() > control_pre_size); + // The file's layer_height reached the edited preset through the normal preset import, + // not through the published overlay. + CHECK_THAT(control_bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); +} + +// The published printer overlay is restricted to the publishable retraction/z-hop allowlist +// (publishable_printer_keys). Matching-size retraction vectors apply; mismatched vectors are +// reported as skipped; any other printer-class key (e.g. machine_start_gcode) is +// contract-excluded: never applied and never reported. +TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys onto the edited printer preset", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + Preset::normalize(config); + // Matching size (the receiver's default printer has one extruder). + config.opt("retraction_length")->values = { 1.4 }; + // Size 2: mismatched against the single-extruder receiver. + config.opt("retraction_speed")->values = { 45., 55. }; + // Printer-class but outside the allowlist: must be silently contract-excluded. + config.opt_string("machine_start_gcode") = "G28 ; from file"; + + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; + bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") = "G28 ; user"; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length", "retraction_speed", "machine_start_gcode" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Matching-size retraction vector applied to the edited printer preset. + CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 1.4 }); + // Mismatched vector not applied and reported as skipped. + CHECK(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values == std::vector{ 30. }); + CHECK(contains_key(pub.skipped_keys, "retraction_speed")); + // Contract-excluded printer key: silently ignored, absent from skipped_keys. + CHECK(bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") == "G28 ; user"); + CHECK_FALSE(contains_key(pub.skipped_keys, "machine_start_gcode")); +} + +// A published 3MF can carry material-qualified keys; on load they are applied to the +// receiver's filament presets whose material identity matches the author's (filament_id when +// both sides have one, filament_type + vendor fallback otherwise). +TEST_CASE("Published 3MF applies material retraction keys onto the receiver's matching filament presets", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Two filament slots; filament_diameter drives the normalized per-slot vector sizes. + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + // Keep the multi-extruder consistency validation happy for a 2-slot config. + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + // Author per-slot material identity (filament_ids feeds the loader's local copy). + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PETG" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99" }; + // Author per-slot retraction values. These are per-filament override keys that are not + // members of the static PrintRegionConfig, so full_print_config() omits them and they + // must be created explicitly (as nullable, matching the real 3MF project config). + config.option("filament_retraction_length", true)->values = { 0.9, 1.2 }; + config.option("filament_z_hop", true)->values = { 0.2, 0.3 }; + return config; + }; + + PresetBundle bundle; + // Receiver materials with matching stable ids. + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.filament_id = "GFL99"; + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt_string("filament_vendor", 0u) = "Generic"; + // In-memory preset configs carry the per-filament retraction keys as nullable options + // (the type real filament presets hold), so access them through the nullable type. + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt("filament_settings_id")->values = { "receiver-pla" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.filament_id = "GFT99"; + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt_string("filament_vendor", 0u) = "Generic"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + // The z-hop key must exist on the receiver preset for the overlay to apply into it. + petg.config.opt("filament_z_hop", true)->values = { 0.1 }; + bundle.filament_presets = { "My PLA", "My PETG" }; + + PublishedMaterialEntry pla_entry; + pla_entry.filament_type = "PLA"; + pla_entry.filament_vendor = "Generic"; + pla_entry.filament_id = "GFL99"; + pla_entry.slot = 0; // the author's PLA slot + pla_entry.keys = { "filament_retraction_length", "filament_settings_id" }; + PublishedMaterialEntry petg_entry; + petg_entry.filament_type = "PETG"; + petg_entry.filament_vendor = "Generic"; + petg_entry.filament_id = "GFT99"; + petg_entry.slot = 1; // the author's PETG slot + petg_entry.keys = { "filament_retraction_length", "filament_z_hop" }; + // A material that does not exist on the author's side: whole entry skipped, no reporting. + PublishedMaterialEntry abs_entry; + abs_entry.filament_type = "ABS"; + abs_entry.filament_id = "GFX99"; + abs_entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { pla_entry, petg_entry, abs_entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Per-slot scalar copy: the author's slot value lands in the matching receiver preset. + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); + CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_z_hop")->values == std::vector{ 0.3 }); + // Structural keys inside a material entry are silently ignored: the receiver's own + // filament_settings_id is left untouched and nothing is reported for it. + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_settings_id")->values == std::vector{ "receiver-pla" }); + CHECK_FALSE(contains_key(pub.skipped_keys, "material:GFL99 (filament_settings_id)")); + // Everything applied; the unknown material entry produced no skipped entry. + CHECK(pub.skipped_keys.empty()); +} + +// Material-qualified keys whose receiver-side material match is missing or ambiguous must be +// reported as skipped (material-qualified) and never applied; a single unqualified type +// fallback still applies. +TEST_CASE("Published 3MF reports material keys with no unique receiver match as skipped", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Three author slots: PLA, PETG, ABS. + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF" }; + config.opt("filament_type")->values = { "PLA", "PETG", "ABS" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99", "GFA99" }; + config.option("filament_retraction_length", true)->values = { 0.9, 1.2, 1.5 }; + return config; + }; + + PresetBundle bundle; + // Two receiver presets of the SAME type with no filament_id: the type fallback is ambiguous. + Preset &pla_a = add_inmemory_preset(bundle.filaments, "My PLA A"); + pla_a.config.opt_string("filament_type", 0u) = "PLA"; + pla_a.config.opt_string("filament_vendor", 0u) = "Generic"; + pla_a.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &pla_b = add_inmemory_preset(bundle.filaments, "My PLA B"); + pla_b.config.opt_string("filament_type", 0u) = "PLA"; + pla_b.config.opt_string("filament_vendor", 0u) = "Generic"; + pla_b.config.opt("filament_retraction_length", true)->values = { 0.5 }; + // A unique PETG receiver preset: the single type fallback is unambiguous. + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt_string("filament_vendor", 0u) = "Generic"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + bundle.filament_presets = { "My PLA A", "My PLA B", "My PETG" }; + + auto make_entry = [](const std::string &type, const std::string &key) { + PublishedMaterialEntry entry; + entry.filament_type = type; + entry.filament_vendor = "Generic"; + entry.keys = { key }; + return entry; + }; + + PublishedMaterialEntry pla_entry = make_entry("PLA", "filament_retraction_length"); + pla_entry.slot = 0; // the author's PLA slot + PublishedMaterialEntry petg_entry = make_entry("PETG", "filament_retraction_length"); + petg_entry.slot = 1; // the author's PETG slot + PublishedMaterialEntry abs_entry = make_entry("ABS", "filament_retraction_length"); // author slot exists, no receiver match + abs_entry.slot = 2; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { pla_entry, petg_entry, abs_entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Ambiguous type fallback: neither PLA preset is touched, reported as skipped. + CHECK(bundle.filaments.find_preset("My PLA A")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filaments.find_preset("My PLA B")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(contains_key(pub.skipped_keys, "material:PLA (filament_retraction_length)")); + // Unambiguous single fallback: applied. + CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); + CHECK_FALSE(contains_key(pub.skipped_keys, "material:PETG (filament_retraction_length)")); + // Receiver-side miss: the author slot exists but no receiver preset matches. + CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); +} + +// A slotted material entry carries the author's per-slot overrides: on load it applies to the +// receiver's matching preset at the author's slot ordinal (first matching author slot -> first +// matching receiver preset, second -> second, ...). Legacy entries without a slot keep applying +// to every matching receiver preset. +TEST_CASE("Published material keys apply to the receiver's matching filament preset by author slot ordinal", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Three author slots of the SAME material (PETG) with distinct per-slot retraction. + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF" }; + config.opt("filament_type")->values = { "PETG", "PETG", "PETG" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFT99", "GFT99", "GFT99" }; + config.option("filament_retraction_length", true)->values = { 0.7, 0.8, 0.9 }; + return config; + }; + auto make_slotted_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.filament_type = "PETG"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFT99"; + entry.slot = slot; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + auto add_petg_preset = [](PresetBundle &bundle, const std::string &name) { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.filament_id = "GFT99"; + preset.config.opt_string("filament_type", 0u) = "PETG"; + preset.config.opt_string("filament_vendor", 0u) = "Generic"; + preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; + return &preset; + }; + + // Three receiver presets, one per author slot: each gets its ordinal's value. + { + PresetBundle bundle; + add_petg_preset(bundle, "My PETG 1"); + add_petg_preset(bundle, "My PETG 2"); + add_petg_preset(bundle, "My PETG 3"); + bundle.filament_presets = { "My PETG 1", "My PETG 2", "My PETG 3" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_slotted_entry(0), make_slotted_entry(1), make_slotted_entry(2) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Each author slot's value lands in the receiver preset at the same ordinal. + CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); + CHECK(bundle.filaments.find_preset("My PETG 2")->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); + CHECK(bundle.filaments.find_preset("My PETG 3")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(pub.skipped_keys.empty()); + } + + // A single receiver preset: only the first ordinal fits; the later slots are reported + // with a slot-qualified label. + { + PresetBundle bundle; + add_petg_preset(bundle, "My PETG 1"); + bundle.filament_presets = { "My PETG 1" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_slotted_entry(0), make_slotted_entry(1), make_slotted_entry(2) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); + CHECK(contains_key(pub.skipped_keys, "material:GFT99 slot 1 (filament_retraction_length)")); + CHECK(contains_key(pub.skipped_keys, "material:GFT99 slot 2 (filament_retraction_length)")); + CHECK_FALSE(contains_key(pub.skipped_keys, "material:GFT99 slot 0 (filament_retraction_length)")); + } + + // A legacy entry (no slot) applies to every matching receiver preset, from the first + // author slot. + { + PresetBundle bundle; + add_petg_preset(bundle, "My PETG 1"); + add_petg_preset(bundle, "My PETG 2"); + bundle.filament_presets = { "My PETG 1", "My PETG 2" }; + + PublishedMaterialEntry legacy = make_slotted_entry(0); + legacy.slot = -1; // legacy: no slot field + PublishedConfig pub; + pub.published = true; + pub.material_keys = { legacy }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); + CHECK(bundle.filaments.find_preset("My PETG 2")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); + CHECK(pub.skipped_keys.empty()); + } + + // An out-of-range author slot is silently skipped: nothing applied, nothing reported. + { + PresetBundle bundle; + add_petg_preset(bundle, "My PETG 1"); + bundle.filament_presets = { "My PETG 1" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_slotted_entry(5) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(pub.skipped_keys.empty()); + } +} + +// The published overlay must validate '#' variant indices: an out-of-range index must be +// reported as skipped and must NOT resize/corrupt the receiver's vector, and a variant suffix +// on a scalar key must be rejected instead of silently no-op'd. +TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffixed scalar keys", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + // Vector key, size 2 (matches the receiver's resized vector); distinct values so the + // applied element is observable. + config.opt("wiping_volumes_extruders")->values = { 140., 150. }; + config.opt_float("layer_height") = 0.28; + Preset::normalize(config); + + PresetBundle bundle; + bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values = { 10., 20. }; + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "wiping_volumes_extruders#5", "wiping_volumes_extruders#1", "layer_height#0" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // In-range variant applied element-wise; the out-of-range one did not resize the vector. + CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 10., 150. }); + CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values.size() == 2); + // Out-of-range variant and variant-suffixed scalar are reported as skipped. + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders#5")); + CHECK(contains_key(pub.skipped_keys, "layer_height#0")); + CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders#1")); + // The scalar was never applied. + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.1, 0.000001)); +} + +// A receiver filament preset whose material identity fields are missing (hand-edited preset +// file) must not crash the material pass: the entry simply cannot match and is reported skipped. +TEST_CASE("Published 3MF survives a receiver filament preset missing its material identity", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + Preset::normalize(config); + + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + // Malformed receiver preset: the identity options are missing entirely. + pla.config.erase("filament_type"); + pla.config.erase("filament_vendor"); + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFL99"; + entry.slot = 0; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // No match possible without the identity fields: reported skipped, preset untouched. + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (filament_retraction_length)")); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); +} + +// The printer publishable allowlist is the union of the printer tab's "Retraction" and +// "Z-Hop" optgroup option lists; lock the exact contents and order (Tab.cpp). +TEST_CASE("Printer publishable allowlist matches the printer tab's Retraction and Z-Hop optgroups", "[Preset][Bundle][Published]") +{ + auto keys_of = [](const std::vector& opts) { + std::vector keys; + keys.reserve(opts.size()); + for (const PublishablePrinterOption& opt : opts) + keys.emplace_back(opt.key); + return keys; + }; + + const std::vector expected_retraction = { + "retraction_length", "retract_restart_extra", "retraction_speed", "deretraction_speed", + "retraction_minimum_travel", "retract_when_changing_layer", "wipe", "wipe_distance", + "retract_before_wipe", "retract_after_wipe" + }; + const std::vector expected_z_hop = { + "retract_lift_enforce", "z_hop_types", "z_hop", "travel_slope", "retract_lift_above", + "retract_lift_below" + }; + + CHECK(keys_of(publishable_printer_retraction_options()) == expected_retraction); + CHECK(keys_of(publishable_printer_z_hop_options()) == expected_z_hop); + + std::set expected_union(expected_retraction.begin(), expected_retraction.end()); + expected_union.insert(expected_z_hop.begin(), expected_z_hop.end()); + CHECK(publishable_printer_keys() == expected_union); +} + From 96f5a2338711e891c3a7270c76f991f1797109ca Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 12:53:44 +0800 Subject: [PATCH 002/162] Only serialize selected published settings. Minor cleanup --- src/libslic3r/Format/bbs_3mf.cpp | 6 +- src/libslic3r/Format/bbs_3mf.hpp | 1 + src/libslic3r/PublishSettings.cpp | 57 ++++++++++++++++++ src/libslic3r/PublishSettings.hpp | 8 +++ src/slic3r/GUI/ConfigValueFormatter.cpp | 6 +- src/slic3r/GUI/Plater.cpp | 17 ++++-- src/slic3r/GUI/Plater.hpp | 2 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 32 ++++++++-- src/slic3r/GUI/PublishSettingsDialog.hpp | 2 + tests/libslic3r/test_3mf.cpp | 77 ++++++++++++++++++++++++ 10 files changed, 190 insertions(+), 18 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 3000adb441..a5d20807b7 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -5943,6 +5943,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool m_save_gcode { false }; // whether to save gcode for normal save bool m_skip_model { false }; // skip model when exporting .gcode.3mf bool m_skip_auxiliary { false }; // skip normal axuiliary files + bool m_minimal_published { false }; // published 3MF: omit embedded preset files bool m_use_loaded_id { false }; // whether to use loaded id for identify_id bool m_share_mesh { false }; // whether to share mesh between objects std::string m_thumbnail_middle = PRINTER_THUMBNAIL_MIDDLE_FILE; @@ -6042,6 +6043,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_skip_auxiliary = store_params.strategy & SaveStrategy::SkipAuxiliary; m_share_mesh = store_params.strategy & SaveStrategy::ShareMesh; m_from_backup_save = store_params.strategy & SaveStrategy::Backup; + m_minimal_published = store_params.strategy & SaveStrategy::MinimalPublished; m_use_loaded_id = store_params.strategy & SaveStrategy::UseLoadedId; @@ -6464,8 +6466,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (cb_cancel) return false; } - // BBS: add project config - if (project_presets.size() > 0) { + // BBS: add project config (omitted for minimal published 3MF) + if (!m_minimal_published && project_presets.size() > 0) { // BBS: add project embedded preset files _add_project_embedded_presets_to_archive(archive, model, project_presets); diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 9c697a14fc..0addf23385 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -145,6 +145,7 @@ enum class SaveStrategy SkipAuxiliary = 1 << 9, UseLoadedId = 1 << 10, ShareMesh = 1 << 11, + MinimalPublished = 1 << 12, SplitModel = 0x1000 | ProductionExt, Encrypted = SecureContentExt | SplitModel, diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 4c0a851696..9ac0c49472 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -2,6 +2,7 @@ #include "PresetBundle.hpp" #include "Preset.hpp" +#include "PrintConfig.hpp" #include @@ -102,4 +103,60 @@ std::vector collect_dirty_settings_keys(const PresetBundle& bundle) return keys; } +DynamicPrintConfig filter_published_config( + const DynamicPrintConfig &full_config, + const std::vector &published_keys, + const std::vector &material_keys) +{ + DynamicPrintConfig filtered; + + std::set base_keys_to_include; + + // 1. Mandatory material identity & slot count keys for 3MF validation/normalization + static const std::vector s_material_identity_keys = { + "filament_colour", + "filament_type", + "filament_vendor", + "filament_ids", + "filament_diameter", + "filament_self_index", + "filament_extruder_variant" + }; + for (const std::string &key : s_material_identity_keys) + base_keys_to_include.insert(key); + + // 2. Published plate / bed geometry keys (wipe tower positioning) + static const std::vector s_plate_geometry_keys = { + "wipe_tower_x", + "wipe_tower_y", + "wipe_tower_rotation_angle" + }; + for (const std::string &key : s_plate_geometry_keys) + base_keys_to_include.insert(key); + + // 3. Process and printer published keys + for (const std::string &key : published_keys) { + const std::string base_key = key.substr(0, key.find('#')); + if (!base_key.empty()) + base_keys_to_include.insert(base_key); + } + + // 4. Material-specific published keys + for (const PublishedMaterialEntry &entry : material_keys) { + for (const std::string &key : entry.keys) { + const std::string base_key = key.substr(0, key.find('#')); + if (!base_key.empty()) + base_keys_to_include.insert(base_key); + } + } + + // Copy selected options from full_config into filtered config + for (const std::string &key : base_keys_to_include) { + if (const ConfigOption *opt = full_config.option(key)) + filtered.set_key_value(key, opt->clone()); + } + + return filtered; +} + } // namespace Slic3r diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index ecc939d883..6525fbb66e 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -53,4 +53,12 @@ struct PublishedMaterialEntry { int slot{-1}; std::vector keys; }; + +// Constructs a minimal DynamicPrintConfig for a published 3MF export containing only the +// author-selected published keys, material keys, material identity fields, and plate geometry keys. +class DynamicPrintConfig; +DynamicPrintConfig filter_published_config( + const DynamicPrintConfig &full_config, + const std::vector &published_keys, + const std::vector &material_keys); } diff --git a/src/slic3r/GUI/ConfigValueFormatter.cpp b/src/slic3r/GUI/ConfigValueFormatter.cpp index f3ea539d4f..6f9128841b 100644 --- a/src/slic3r/GUI/ConfigValueFormatter.cpp +++ b/src/slic3r/GUI/ConfigValueFormatter.cpp @@ -73,7 +73,7 @@ wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& std::string temp_str = opt_key; if (pos > 0) { boost::erase_head(temp_str, pos + 1); - orig_opt_idx = static_cast(atoi(temp_str.c_str())); + orig_opt_idx = std::atoi(temp_str.c_str()); } opt_idx = orig_opt_idx >= 0 ? orig_opt_idx : 0; const std::string pure_key = get_pure_opt_key(opt_key); @@ -83,8 +83,8 @@ wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& } auto opt_vector = dynamic_cast(option); - if (option->is_scalar() && config.option(pure_key)->is_nil() || - option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx)) + if ((option->is_scalar() && option->is_nil()) || + (option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx))) return _L("N/A"); wxString out; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fd307d32d2..571d7350b9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7324,7 +7324,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ } auto choise = wxGetApp().app_config->get("no_warn_when_modified_gcodes"); - if (choise.empty() || choise != "true") { + if (!published_config.published && (choise.empty() || choise != "true")) { // BBS: first validate the printer // validate the system profiles std::set modified_gcodes; @@ -16204,16 +16204,21 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info->metadata_items["published_keys"] = j.dump(); model.model_info->metadata_items["published_material_keys"] = jm.dump(); - // Same file layout save_project() uses for its project files, plus SaveStrategy::Silence: + // Minimal published export: filter full_config to only the published keys, material keys, + // identity fields, and plate geometry keys, and omit project-embedded preset dumps. + DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + + // Same file layout save_project() uses for its project files, plus SaveStrategy::Silence and SaveStrategy::MinimalPublished: // without it export_3mf() calls set_project_filename() on success, which would make this // pure export the current project file. Silence keeps the project state untouched, exactly // like export_core_3mf(). - auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence; + auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence | SaveStrategy::MinimalPublished; bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); if (full_pathnames) save_strategy = save_strategy | SaveStrategy::FullPathSources; - const int ret = export_3mf(into_path(path), save_strategy); + const int ret = export_3mf(into_path(path), save_strategy, -1, nullptr, &filtered_cfg); // Restore the previous metadata state (both on success and on failure). if (!had_model_info) { @@ -16737,7 +16742,7 @@ void publish(Model &model, SaveStrategy strategy) { } // BBS: backup -int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy strategy, int export_plate_idx, Export3mfProgressFn proFn) +int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy strategy, int export_plate_idx, Export3mfProgressFn proFn, const DynamicPrintConfig* override_config) { int ret = 0; //if (p->model.objects.empty()) { @@ -16759,7 +16764,7 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy // modify model publish(p->model, strategy); - DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig cfg = override_config ? *override_config : wxGetApp().preset_bundle->full_config_secure(); const std::string path_u8 = into_u8(path); wxBusyCursor wait; diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 5a83e5e4e1..d29e86a4fa 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -505,7 +505,7 @@ public: //void export_amf(); //BBS add extra param for exporting 3mf silence // BBS: backup - int export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path(), SaveStrategy strategy = SaveStrategy::Default, int export_plate_idx = -1, Export3mfProgressFn proFn = nullptr); + int export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path(), SaveStrategy strategy = SaveStrategy::Default, int export_plate_idx = -1, Export3mfProgressFn proFn = nullptr, const DynamicPrintConfig* override_config = nullptr); //BBS void publish_project(); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 36b7372d4a..90ad2e0dc3 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -321,8 +321,8 @@ void PublishSettingsDialog::build_option_model() cat.filament_id = identity.id; cat.filament_slot = slot; if (!icon_name.empty()) { - ScalableBitmap icon_bmp(m_scroll, icon_name, 18); - cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, icon_bmp.bmp()); + cat.icon_bmp = ScalableBitmap(m_scroll, icon_name, 18); + cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, cat.icon_bmp.bmp()); } if (section == Section::Material) { // Material header: [master (title)][slim tri-state select-all]. @@ -667,8 +667,8 @@ size_t PublishSettingsDialog::section_group_for(Section kind) } if (!section.icon_name.empty()) { - ScalableBitmap icon_bmp(m_scroll, section.icon_name, 18); - section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, icon_bmp.bmp()); + section.icon_bmp = ScalableBitmap(m_scroll, section.icon_name, 18); + section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, section.icon_bmp.bmp()); } section.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_section(new_index); }); @@ -1062,12 +1062,32 @@ std::vector PublishSettingsDialog::GetPublishedM void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) { - // The remaining bitmap icons are rescaled; the collapse chevrons are - // vector-drawn and repaint themselves. + // Rescale toolbar bitmaps and icons; collapse chevrons are vector-drawn and repaint themselves. m_search.msw_rescale(); m_menu.msw_rescale(); m_filter_box->SetIcon(m_search.bmp()); m_menu_button->SetBitmap(m_menu.bmp()); + + for (SectionGroup& section : m_sections) { + if (section.icon != nullptr && section.icon_bmp.bmp().IsOk()) { + section.icon_bmp.msw_rescale(); + section.icon->SetBitmap(section.icon_bmp.bmp()); + } + if (section.header_line != nullptr) + section.header_line->Rescale(); + } + + for (Category& cat : m_categories) { + if (cat.icon != nullptr && cat.icon_bmp.bmp().IsOk()) { + cat.icon_bmp.msw_rescale(); + cat.icon->SetBitmap(cat.icon_bmp.bmp()); + } + for (Subcategory& sub : cat.subs) { + if (sub.header != nullptr) + sub.header->Rescale(); + } + } + SetMinSize(FromDIP(wxSize(600, 500))); m_scroll->FitInside(); m_list_sizer->Layout(); diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index ff9cb88e4b..4767b9a29e 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -91,6 +91,7 @@ private: Section section{Section::Print}; size_t group{0}; // index into m_sections std::string icon_name; // bitmap name; empty = no icon + ScalableBitmap icon_bmp; // scalable bitmap for DPI changes wxStaticBitmap* icon{nullptr}; // 18px category icon (null when icon_name empty) wxCheckBox* header{nullptr}; // select-all tri-state // Material opt-in: the master checkbox carries the material title and @@ -117,6 +118,7 @@ private: wxString title; // _L("Printer") / _L("Filament") / _L("Process") Section kind{Section::Print}; // maps 1:1 to the display group std::string icon_name; // "printer" / "filament" / "process" + ScalableBitmap icon_bmp; // scalable bitmap for DPI changes wxStaticBitmap* icon{nullptr}; // 18px, like Category::icon wxCheckBox* header{nullptr}; // tri-state select-all; nullptr for the Filament group ::StaticLine* header_line{nullptr}; // Filament group's clickable title diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 4eccf0e9fa..462324ea13 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -8,6 +8,7 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/MultiNozzleUtils.hpp" #include "libslic3r/ProjectTask.hpp" +#include "libslic3r/PublishSettings.hpp" #include "test_utils.hpp" @@ -674,3 +675,79 @@ SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf } } } + +SCENARIO("Minimal published 3MF serialization filters config and omits embedded presets", "[3mf]") { + GIVEN("a full print configuration and published keys") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.set_key_value("layer_height", new ConfigOptionFloat(0.24)); + full_cfg.set_key_value("retraction_length", new ConfigOptionFloats({ 1.2 })); + + const std::vector published_keys = { "layer_height", "retraction_length" }; + const std::vector material_keys = { + { "PLA", "Generic", "GFL99", 0, { "filament_retraction_length" } } + }; + + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + + // Filtered config must contain the published keys and identity keys + REQUIRE(filtered_cfg.option("layer_height") != nullptr); + REQUIRE(filtered_cfg.option("retraction_length") != nullptr); + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + REQUIRE(filtered_cfg.option("filament_type") != nullptr); + REQUIRE(filtered_cfg.option("wipe_tower_x") != nullptr); + + // Non-published settings should NOT be in filtered_cfg + REQUIRE(filtered_cfg.option("sparse_infill_density") == nullptr); + REQUIRE(filtered_cfg.option("machine_start_gcode") == nullptr); + + model.model_info = std::make_shared(); + model.model_info->metadata_items["published"] = "1"; + model.model_info->metadata_items["published_keys"] = R"(["layer_height","retraction_length"])"; + + ScopedTemporaryDir backup_dir("orca_min_pub"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored using SaveStrategy::MinimalPublished") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + // Create a fake project preset to verify it gets omitted with MinimalPublished + Preset preset(Preset::TYPE_PRINT, "TestPrintPreset"); + preset.config = full_cfg; + std::vector project_presets = { &preset }; + + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &filtered_cfg; + store_params.project_presets = project_presets; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector loaded_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &loaded_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the 3MF loads successfully without project embedded presets") { + REQUIRE(loaded); + REQUIRE(loaded_presets.empty()); + REQUIRE(dst_config.option("layer_height") != nullptr); + REQUIRE(dst_config.opt_float("layer_height") == 0.24); + REQUIRE(dst_config.option("sparse_infill_density") == nullptr); + } + release_PlateData_list(dst_plates); + } + } +} + From d124e1ccbc05c35d5f6d3815d46080bc2437846d Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 13:41:38 +0800 Subject: [PATCH 003/162] Update unit test --- src/libslic3r/Format/bbs_3mf.hpp | 4 +++- tests/libslic3r/test_3mf.cpp | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 0addf23385..57a40c2012 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -145,7 +145,9 @@ enum class SaveStrategy SkipAuxiliary = 1 << 9, UseLoadedId = 1 << 10, ShareMesh = 1 << 11, - MinimalPublished = 1 << 12, + // Keep this separate from SplitModel, which uses the 0x1000 bit as part of its + // production-extension value. + MinimalPublished = 1 << 13, SplitModel = 0x1000 | ProductionExt, Encrypted = SecureContentExt | SplitModel, diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 462324ea13..daf46c3834 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -730,6 +730,8 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded REQUIRE(store_bbs_3mf(store_params)); Model dst_model; + ScopedTemporaryDir loaded_backup_dir("orca_min_pub_loaded"); + dst_model.set_backup_path(loaded_backup_dir.string()); DynamicPrintConfig dst_config; ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; PlateDataPtrs dst_plates; @@ -743,11 +745,10 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded REQUIRE(loaded); REQUIRE(loaded_presets.empty()); REQUIRE(dst_config.option("layer_height") != nullptr); - REQUIRE(dst_config.opt_float("layer_height") == 0.24); + REQUIRE_THAT(dst_config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.24, 1e-6)); REQUIRE(dst_config.option("sparse_infill_density") == nullptr); } release_PlateData_list(dst_plates); } } } - From 99db5cca38dfe040ada967e3cb10105a642b75aa Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 14:00:20 +0800 Subject: [PATCH 004/162] Renamed to Publish instead of Publish Settings --- src/slic3r/GUI/MainFrame.cpp | 10 +++------- src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 11 +++++------ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 5594241988..abca800277 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -39,7 +39,6 @@ #include "Plater.hpp" #include "WebViewDialog.hpp" #include "../Utils/Process.hpp" -#include "format.hpp" // BBS #include "PartPlate.hpp" #include "Preferences.hpp" @@ -49,9 +48,6 @@ #include "../Utils/NetworkAgentFactory.hpp" #include "../Utils/PrintHost.hpp" -#include -#include - #include "GUI_App.hpp" #include "UnsavedChangesDialog.hpp" #include "PublishSettingsDialog.hpp" @@ -2822,7 +2818,7 @@ void MainFrame::init_menubar_as_editor() [this](){return m_plater != nullptr && can_save_as(); }, this); #endif - // BBS: publish settings + // BBS: publish fileMenu->AppendSeparator(); auto publish_handler = [this](wxCommandEvent&) { if (!m_plater) return; @@ -2832,11 +2828,11 @@ void MainFrame::init_menubar_as_editor() }; #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Publish Settings") + dots, _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots, _L("Export a 3MF file with the selected settings embedded"), publish_handler, "menu_publish", nullptr, [this](){return can_export_model(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Publish Settings") + dots, _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots, _L("Export a 3MF file with the selected settings embedded"), publish_handler, "", nullptr, [this](){return can_export_model(); }, this); #endif diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 571d7350b9..82dd38fe97 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -16240,7 +16240,7 @@ int Plater::export_published_3mf(const std::vector& published_keys, if (ret < 0) { MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), - _L("Publish Settings"), wxOK | wxICON_WARNING).ShowModal(); + _L("Publish"), wxOK | wxICON_WARNING).ShowModal(); return wxID_CANCEL; } return wxID_YES; diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 90ad2e0dc3..548c1402fe 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -98,7 +98,7 @@ struct MaterialIdentity // Menu ids for show_menu(). Dedicated range above the standard ids so the popup cannot // collide with application-level bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). enum { - kPublishSelectAll = wxID_HIGHEST + 1, + kPublishSelectAll = wxID_HIGHEST + 1, kPublishDeselectAll, kPublishSelectVisible, kPublishDeselectVisible, @@ -154,7 +154,7 @@ wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPr PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, - _L("Publish Settings"), + _L("Publish"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) @@ -233,8 +233,7 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) EndModal(wxID_OK); return; } - MessageDialog(this, _L("No settings selected. Please select at least one setting to publish."), _L("Publish Settings"), - wxOK | wxICON_WARNING) + MessageDialog(this, _L("No settings selected. Please select at least one setting to publish."), _L("Publish"), wxOK | wxICON_WARNING) .ShowModal(); }); dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); @@ -322,7 +321,7 @@ void PublishSettingsDialog::build_option_model() cat.filament_slot = slot; if (!icon_name.empty()) { cat.icon_bmp = ScalableBitmap(m_scroll, icon_name, 18); - cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, cat.icon_bmp.bmp()); + cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, cat.icon_bmp.bmp()); } if (section == Section::Material) { // Material header: [master (title)][slim tri-state select-all]. @@ -668,7 +667,7 @@ size_t PublishSettingsDialog::section_group_for(Section kind) if (!section.icon_name.empty()) { section.icon_bmp = ScalableBitmap(m_scroll, section.icon_name, 18); - section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, section.icon_bmp.bmp()); + section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, section.icon_bmp.bmp()); } section.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_section(new_index); }); From 76ec2f10c63ec1467c55320d21d2fcc3579074fb Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 16:19:46 +0800 Subject: [PATCH 005/162] Switch to a Tab layout for the Publish dialog --- src/slic3r/GUI/PublishSettingsDialog.cpp | 845 ++++++++++------------- src/slic3r/GUI/PublishSettingsDialog.hpp | 118 ++-- 2 files changed, 427 insertions(+), 536 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 548c1402fe..b67a962650 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -16,85 +16,13 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/PublishSettings.hpp" -#include #include #include #include -#include - -// Custom-painted collapse chevron: a vector path (down when expanded, right -// when collapsed) drawn in the dialog's secondary-text grey. Vector drawing -// keeps it crisp at any DPI (the earlier 16px bitmap chevron looked -// blurry/wide). -class CollapseChevron : public wxWindow -{ -public: - explicit CollapseChevron(wxWindow* parent) : wxWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE) - { - SetBackgroundColour(parent->GetBackgroundColour()); - DisableFocusFromKeyboard(); - SetMinSize(FromDIP(wxSize(10, 10))); - Bind(wxEVT_PAINT, &CollapseChevron::on_paint, this); - } - - void SetCollapsed(bool collapsed) - { - if (m_collapsed == collapsed) - return; - m_collapsed = collapsed; - Refresh(); - } - -private: - void on_paint(wxPaintEvent&) - { - wxPaintDC dc(this); - wxGraphicsContext* ctx = wxGraphicsContext::Create(dc); - if (ctx == nullptr) - return; - ctx->SetAntialiasMode(wxANTIALIAS_DEFAULT); - // Same grey as the row value labels, dark-mode aware. - wxPen pen(StateColor::darkModeColorFor(wxColour("#6B6B6B")), FromDIP(1.5), wxPENSTYLE_SOLID); - pen.SetCap(wxCAP_ROUND); - pen.SetJoin(wxJOIN_ROUND); - ctx->SetPen(pen); - - const wxSize sz = GetClientSize(); - const double cx = sz.x / 2.0; - const double cy = sz.y / 2.0; - const double r = std::min(sz.x, sz.y) * 0.32; - - wxGraphicsPath path = ctx->CreatePath(); - if (m_collapsed) { - // Right-pointing chevron ">". - path.MoveToPoint(cx - r, cy - r); - path.AddLineToPoint(cx + r, cy); - path.AddLineToPoint(cx - r, cy + r); - } else { - // Down-pointing chevron "v". - path.MoveToPoint(cx - r, cy - r); - path.AddLineToPoint(cx, cy + r); - path.AddLineToPoint(cx + r, cy - r); - } - ctx->StrokePath(path); - delete ctx; - } - - bool m_collapsed{false}; -}; namespace Slic3r { namespace GUI { namespace { -// Identity of a filament slot: the stable material id when present, else the -// type+vendor pair. Used to emit the PublishedMaterialEntry identity fields. -struct MaterialIdentity -{ - std::string type; - std::string vendor; - std::string id; -}; - // Menu ids for show_menu(). Dedicated range above the standard ids so the popup cannot // collide with application-level bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). enum { @@ -106,9 +34,9 @@ enum { kPublishFilterNonSelected }; -MaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& full) +PublishMaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& full) { - MaterialIdentity identity; + PublishMaterialIdentity identity; if (const auto* types = full.opt("filament_type")) if (slot < types->size()) identity.type = types->get_at(slot); @@ -143,7 +71,7 @@ wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPr if (preset != nullptr && !preset->name.empty()) return from_u8(material_display_name(preset->name)); } - const MaterialIdentity identity = material_identity(slot, full); + const PublishMaterialIdentity identity = material_identity(slot, full); if (!identity.type.empty()) return from_u8(identity.type); return _L("Material"); @@ -163,8 +91,6 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) { SetBackgroundColour(*wxWHITE); - build_option_model(); - // --- filter bar: search box, All/None, menu button --- wxPanel* f_bar = new wxPanel(this, wxID_ANY); f_bar->SetBackgroundColour(GetBackgroundColour()); @@ -212,6 +138,17 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) f_bar->SetSizerAndFit(f_sizer); + constexpr long tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | + wxTR_FULL_ROW_HIGHLIGHT; + m_outer_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, tab_style); + m_outer_tabs->SetFont(Label::Body_14); + m_outer_tabs->SetBackgroundColour(GetBackgroundColour()); + + m_outer_host = new wxPanel(this, wxID_ANY); + m_outer_host->SetBackgroundColour(GetBackgroundColour()); + m_outer_host_sizer = new wxBoxSizer(wxVERTICAL); + m_outer_host->SetSizer(m_outer_host_sizer); + wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); wxStaticText* msg = new wxStaticText(this, wxID_ANY, _L("Select which settings to embed in the 3MF file")); @@ -220,7 +157,10 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); w_sizer->Add(f_bar, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); - w_sizer->Add(m_scroll, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + w_sizer->Add(m_outer_tabs, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + w_sizer->Add(m_outer_host, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + + build_option_model(); auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); @@ -261,23 +201,18 @@ void PublishSettingsDialog::build_option_model() PresetBundle* bundle = wxGetApp().preset_bundle; DynamicPrintConfig full = bundle->full_config(); - m_scroll = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); - m_scroll->SetScrollRate(0, 10); - m_scroll->SetBackgroundColour(GetBackgroundColour()); - m_list_sizer = new wxBoxSizer(wxVERTICAL); - m_scroll->SetSizer(m_list_sizer); - m_scroll->DisableFocusFromKeyboard(); - m_scroll->Bind(wxEVT_RIGHT_DOWN, &PublishSettingsDialog::show_menu, this); - - // "no matching rows" info label, shown by apply_filter(). - m_info = new wxStaticText(m_scroll, wxID_ANY, ""); - m_info->SetFont(Label::Body_13); - m_list_sizer->Add(m_info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); - m_info->Hide(); m_info_nonsel = _L("No selected items..."); m_info_allsel = _L("All items selected..."); m_info_empty = _L("No matching items..."); + // Keep the tab order explicit: Section's enum order is Print, Printer, + // Material, while the dialog presents Printer, Filament, Process. + m_sections.reserve(3); + const Section tab_order[] = {Section::Printer, Section::Material, Section::Print}; + for (Section kind : tab_order) + section_group_for(kind); + bind_tab_events(); + // Shared per-option label/value computation; returns false when the option // must be skipped (denylisted / unknown / empty label). value is the pure // stringified value; unit is the translated sidetext (may be empty). @@ -296,165 +231,12 @@ void PublishSettingsDialog::build_option_model() return true; }; - // Find-or-create a main category; builds its header row UI on first use. - // Material sections are additionally matched by identity and slot so two - // identities (or slots) that happen to share a title stay separate. - auto category_index_for = [this, &full](const wxString& title, Section section, const std::string& icon_name, size_t group, - const MaterialIdentity& identity = MaterialIdentity(), size_t slot = 0) -> size_t { - for (size_t i = 0; i < m_categories.size(); ++i) { - if (m_categories[i].title != title || m_categories[i].section != section) - continue; - if (section == Section::Material && - (m_categories[i].filament_id != identity.id || m_categories[i].filament_type != identity.type || - m_categories[i].filament_vendor != identity.vendor || m_categories[i].filament_slot != slot)) - continue; - return i; - } - Category cat; - cat.title = title; - cat.section = section; - cat.group = group; - cat.icon_name = icon_name; - cat.filament_type = identity.type; - cat.filament_vendor = identity.vendor; - cat.filament_id = identity.id; - cat.filament_slot = slot; - if (!icon_name.empty()) { - cat.icon_bmp = ScalableBitmap(m_scroll, icon_name, 18); - cat.icon = new wxStaticBitmap(m_scroll, wxID_ANY, cat.icon_bmp.bmp()); - } - if (section == Section::Material) { - // Material header: [master (title)][slim tri-state select-all]. - // The master is a 2-state opt-in that carries the material title; - // the tri-state is label-less and gates on the master. - cat.master_check = new wxCheckBox(m_scroll, wxID_ANY, title); - cat.master_check->SetFont(Label::Head_14); - cat.master_check->SetToolTip(_L("Export this material")); - cat.header = new wxCheckBox(m_scroll, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); - cat.header->SetFont(Label::Head_14); - cat.header->SetToolTip(_L("Select/deselect all settings in this material")); - } else { - cat.header = new wxCheckBox(m_scroll, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); - cat.header->SetFont(Label::Head_14.Bold()); - } - const size_t new_index = m_categories.size(); - cat.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_category(new_index); }); - // [icon][chevron][(chip)(master)(tri-state) | checkbox]: the chevron - // collapses/expands the category, the checkbox is the select-all. - auto header_sizer = new wxBoxSizer(wxHORIZONTAL); - if (cat.icon != nullptr) - header_sizer->Add(cat.icon, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(2)); - header_sizer->Add(cat.chevron, 0, wxALIGN_CENTER_VERTICAL); - if (section == Section::Material) { - // Per-slot colour chip, before the master title. - std::string hex; - if (const auto* colours = full.opt("filament_colour")) - if (slot < colours->size()) - hex = colours->get_at(slot); - wxBitmap* chip_bmp = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12)); - // chip_bmp points into get_extruder_color_icon's static BitmapCache - // and must NOT be deleted; the wxStaticBitmap takes its own copy. - header_sizer->Add(new wxStaticBitmap(m_scroll, wxID_ANY, *chip_bmp), 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - header_sizer->Add(cat.master_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - header_sizer->Add(cat.header, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(6)); - } else { - header_sizer->Add(cat.header, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(4)); - } - // A wrapper sizer splits the vertical separation (TOP 10) from the - // horizontal indent (LEFT|RIGHT 22), so the top gap collapses with the - // header when it is hidden. - auto wrap = new wxBoxSizer(wxVERTICAL); - wrap->Add(header_sizer, 0, wxTOP, FromDIP(10)); - cat.item = m_list_sizer->Add(wrap, 0, wxLEFT | wxRIGHT, FromDIP(22)); - // Register the new category with its section group: the group's visibility - // and select-all logic iterates section.categories. - m_sections[group].categories.push_back(new_index); - m_categories.push_back(std::move(cat)); - return new_index; - }; - - // Find-or-create a subcategory (optgroup) heading within a category. - auto subcategory_index_for = [this](size_t cat_index, const wxString& title, const wxString& icon) -> size_t { - Category& cat = m_categories[cat_index]; - for (size_t i = 0; i < cat.subs.size(); ++i) - if (cat.subs[i].title == title) - return i; - Subcategory sub; - sub.title = title; - if (!title.IsEmpty()) { - // Same look as the Tab's optgroup headers (incl. its icon), plus a - // collapse chevron. A click on the chevron bitmap does not reach the - // StaticLine, so both are bound to the same toggle (LEFT_UP so the - // StaticLine's label acts as the click target too). - sub.header = new ::StaticLine(m_scroll, false, title, icon); - sub.header->SetFont(Label::Head_14); - sub.header->SetForegroundColour("#363636"); - sub.header->SetCursor(wxCURSOR_HAND); - const size_t new_index = cat.subs.size(); - auto toggle = [this, cat_index, new_index] { toggle_subcategory(cat_index, new_index); }; - sub.header->Bind(wxEVT_LEFT_UP, [toggle](wxMouseEvent&) { toggle(); }); - sub.chevron = create_chevron(m_scroll, wxEVT_LEFT_UP, toggle); - auto header_sizer = new wxBoxSizer(wxHORIZONTAL); - header_sizer->Add(sub.chevron, 0, wxALIGN_CENTER_VERTICAL); - header_sizer->Add(sub.header, 1, wxEXPAND | wxLEFT, FromDIP(4)); - // A wrapper sizer splits the vertical separation (TOP|BOTTOM 6) from - // the horizontal indent (LEFT|RIGHT 38), so the gaps collapse with - // the header when it is hidden. - auto wrap = new wxBoxSizer(wxVERTICAL); - wrap->Add(header_sizer, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); - sub.item = m_list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(38)); - } - cat.subs.push_back(std::move(sub)); - return cat.subs.size() - 1; - }; - - // Creates the row UI (checkbox + white ellipsized value + grey unit) and - // registers the row into the given category/subcategory. - auto add_row_ui = [this](const std::string& key, const wxString& label, const wxString& value, const wxString& unit, size_t cat_index, - size_t sub_index) { - Row row; - row.key = key; - row.label = label; - row.value = value; - row.unit = unit; - row.category = m_categories[cat_index].title; - row.subcategory = m_categories[cat_index].subs[sub_index].title; - row.section = m_categories[cat_index].section; - row.section_title = m_sections[m_categories[cat_index].group].title; - const size_t row_index = m_rows.size(); - m_rows.push_back(std::move(row)); - - Row& r = m_rows[row_index]; - r.check = new wxCheckBox(m_scroll, wxID_ANY, label, wxDefaultPosition, wxDefaultSize); - r.check->SetFont(Label::Body_13); - // Value in the Tab's text color (near-black light / #EFEFF0 dark); the - // unit is the grey secondary text. - r.value_label = new wxStaticText(m_scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); - r.value_label->SetFont(Label::Body_13); - r.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); - r.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); - if (!unit.IsEmpty()) { - r.unit_label = new wxStaticText(m_scroll, wxID_ANY, unit); - r.unit_label->SetFont(Label::Body_13); - r.unit_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); - } - - auto row_sizer = new wxBoxSizer(wxHORIZONTAL); - row_sizer->Add(r.check, 0, wxALIGN_CENTER_VERTICAL); - row_sizer->Add(r.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); - if (r.unit_label != nullptr) - row_sizer->Add(r.unit_label, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - r.item = m_list_sizer->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(54)); - - m_categories[cat_index].rows.push_back(row_index); - m_categories[cat_index].subs[sub_index].rows.push_back(row_index); - }; - // --- Phase 1: printer per-extruder retraction settings (displayed first, // mirroring the sidebar's Printer group). The printer tab's // "Extruder"/"Extruder N" pages carry the per-extruder retraction options. { size_t g = section_group_for(Section::Printer); + category_index_for(_L("Extruder"), Section::Printer, "custom-gcode_extruder", g, 0); for (Tab* tab : wxGetApp().tabs_list) { if (tab->m_type != Preset::TYPE_PRINTER) continue; @@ -467,7 +249,7 @@ void PublishSettingsDialog::build_option_model() // when switching material" group is intentionally skipped. if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") continue; - const wxString subcategory = page_title + L" \u00B7 " + _(optgroup->title); + const wxString subcategory = _(optgroup->title); for (const auto& opt : optgroup->opt_map()) { const std::string& opt_id = opt.first; const std::string& pure_key = opt.second.first; @@ -480,7 +262,7 @@ void PublishSettingsDialog::build_option_model() wxString label, value, unit; if (!option_text(opt_id, pure_key, label, value, unit)) continue; - size_t cat_index = category_index_for(_L("Retraction & Z-hop"), Section::Printer, "custom-gcode_extruder", g); + size_t cat_index = category_index_for(_L("Extruder"), Section::Printer, "custom-gcode_extruder", g, 0); size_t sub_index = subcategory_index_for(cat_index, subcategory, optgroup->icon); add_row_ui(pure_key, label, value, unit, cat_index, sub_index); } @@ -509,13 +291,12 @@ void PublishSettingsDialog::build_option_model() if (overrides_page != nullptr) { // One section per filament slot: a 4-slot printer (e.g. 1 PLA + - // 3 PETG) shows 4 sections, each disambiguated by its colour chip - // and slot number. The "· Slot N" title suffix keeps the category - // titles unique across slots. + // 3 PETG) shows 4 separate pages, each disambiguated internally by + // its colour chip and slot identity while displaying the bare name. for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { - const MaterialIdentity identity = material_identity(slot, full); - const wxString title = material_title(slot, bundle, full) + L" \u00B7 " + - wxString::Format(_L("Slot %d"), static_cast(slot) + 1); + const PublishMaterialIdentity identity = material_identity(slot, full); + const wxString title = material_title(slot, bundle, full); + const size_t category_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, slot, identity); // A material section must not repeat a key; the same key may // appear in other material sections - that is intended. std::set material_added; @@ -541,9 +322,8 @@ void PublishSettingsDialog::build_option_model() wxString label, value, unit; if (!option_text(value_opt_id, base, label, value, unit)) continue; - size_t cat_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, identity, slot); - size_t sub_index = subcategory_index_for(cat_index, _(optgroup->title), optgroup->icon); - add_row_ui(base, label, value, unit, cat_index, sub_index); + size_t sub_index = subcategory_index_for(category_index, _(optgroup->title), optgroup->icon); + add_row_ui(base, label, value, unit, category_index, sub_index); } } } @@ -558,6 +338,7 @@ void PublishSettingsDialog::build_option_model() if (tab->m_type != Preset::TYPE_PRINT) continue; const auto& icon_map = tab->get_category_icon_map(); + size_t page_index = 0; for (const PageShp& page : tab->m_pages) { wxString category = Tab::translate_category(page->title(), tab->m_type); // Page icon, keyed by the untranslated page title (per-Tab map). @@ -565,6 +346,7 @@ void PublishSettingsDialog::build_option_model() auto icon_it = icon_map.find(page->title()); if (icon_it != icon_map.end()) icon_name = icon_it->second; + const size_t category_index = category_index_for(category, Section::Print, icon_name, g, page_index); for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { for (const auto& opt : optgroup->opt_map()) { @@ -578,11 +360,11 @@ void PublishSettingsDialog::build_option_model() wxString label, value, unit; if (!option_text(opt_id, pure_key, label, value, unit)) continue; - size_t cat_index = category_index_for(category, Section::Print, icon_name, g); - size_t sub_index = subcategory_index_for(cat_index, _(optgroup->title), optgroup->icon); - add_row_ui(opt_id, label, value, unit, cat_index, sub_index); + size_t sub_index = subcategory_index_for(category_index, _(optgroup->title), optgroup->icon); + add_row_ui(opt_id, label, value, unit, category_index, sub_index); } } + ++page_index; } } } @@ -604,28 +386,20 @@ void PublishSettingsDialog::build_option_model() } } - // Wire the section group tri-state headers (chevrons/StaticLine toggles were - // bound at creation in section_group_for). - for (size_t s = 0; s < m_sections.size(); ++s) { - if (m_sections[s].header != nullptr) { - m_sections[s].header->Bind(wxEVT_CHECKBOX, [this, s](wxCommandEvent&) { on_section_toggle(s); }); - update_section_header(m_sections[s]); - } - } - - // Wire the tri-state headers: clicking a header toggles all its children; + // Wire the inner-page tri-state headers: clicking a header toggles all its children; // toggling any child re-syncs its header. Bind by index so the lambdas stay // valid even if the vectors are reallocated later. for (size_t c = 0; c < m_categories.size(); ++c) { if (m_categories[c].master_check != nullptr) m_categories[c].master_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_master_toggle(c); }); - m_categories[c].header->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_category_toggle(c); }); + if (m_categories[c].header != nullptr) + m_categories[c].header->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_category_toggle(c); }); for (size_t r : m_categories[c].rows) - m_rows[r].check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { update_category_header(m_categories[c]); }); + m_rows[r].check->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { update_all_headers(); }); update_category_header(m_categories[c]); } - // Material sections start gated (master OFF): their rows and tri-state are + // Material pages start gated (master OFF): their rows and tri-state are // disabled until the author opts the material in. for (size_t c = 0; c < m_categories.size(); ++c) if (m_categories[c].section == Section::Material) @@ -636,8 +410,17 @@ void PublishSettingsDialog::build_option_model() row.matches_filter = true; apply_visibility(); - m_scroll->FitInside(); - m_list_sizer->Layout(); + for (Category& category : m_categories) { + category.scroll->FitInside(); + category.list_sizer->Layout(); + } + for (SectionGroup& section : m_sections) + if (!section.categories.empty()) + section.tabs->SelectItem(0); + if (!m_sections.empty()) { + m_outer_tabs->SelectItem(0); + show_outer_page(0); + } } size_t PublishSettingsDialog::section_group_for(Section kind) @@ -649,7 +432,6 @@ size_t PublishSettingsDialog::section_group_for(Section kind) SectionGroup section; section.kind = kind; const size_t new_index = m_sections.size(); - switch (kind) { case Section::Printer: section.title = _L("Printer"); @@ -665,47 +447,166 @@ size_t PublishSettingsDialog::section_group_for(Section kind) break; } - if (!section.icon_name.empty()) { - section.icon_bmp = ScalableBitmap(m_scroll, section.icon_name, 18); - section.icon = new wxStaticBitmap(m_scroll, wxID_ANY, section.icon_bmp.bmp()); - } + constexpr long tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | + wxTR_FULL_ROW_HIGHLIGHT; + section.page = new wxPanel(m_outer_host, wxID_ANY); + section.page->SetBackgroundColour(GetBackgroundColour()); + auto* page_sizer = new wxBoxSizer(wxVERTICAL); + section.tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, tab_style); + section.tabs->SetFont(Label::Body_14); + section.tabs->SetBackgroundColour(GetBackgroundColour()); + page_sizer->Add(section.tabs, 0, wxEXPAND); + section.page_host = new wxPanel(section.page, wxID_ANY); + section.page_host->SetBackgroundColour(GetBackgroundColour()); + section.page_host_sizer = new wxBoxSizer(wxVERTICAL); + section.page_host->SetSizer(section.page_host_sizer); + page_sizer->Add(section.page_host, 1, wxEXPAND | wxTOP, FromDIP(4)); + section.page->SetSizer(page_sizer); - section.chevron = create_chevron(m_scroll, wxEVT_LEFT_DOWN, [this, new_index] { toggle_section(new_index); }); - - auto header_sizer = new wxBoxSizer(wxHORIZONTAL); - if (section.icon != nullptr) - header_sizer->Add(section.icon, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(2)); - header_sizer->Add(section.chevron, 0, wxALIGN_CENTER_VERTICAL); - - if (kind == Section::Material) { - // Filament group: clickable StaticLine title, no tri-state (each - // material below opts in individually). - section.header_line = new ::StaticLine(m_scroll, false, section.title); - section.header_line->SetFont(Label::Head_14.Bold()); - section.header_line->SetForegroundColour("#363636"); - section.header_line->SetCursor(wxCURSOR_HAND); - section.header_line->SetToolTip(_L("Enable each material below to export its settings")); - auto toggle = [this, new_index] { toggle_section(new_index); }; - section.header_line->Bind(wxEVT_LEFT_UP, [toggle](wxMouseEvent&) { toggle(); }); - header_sizer->Add(section.header_line, 1, wxEXPAND | wxLEFT, FromDIP(4)); - } else { - // Printer/Process: tri-state select-all carries the title. - section.header = new wxCheckBox(m_scroll, wxID_ANY, section.title, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); - section.header->SetFont(Label::Head_14.Bold()); - header_sizer->Add(section.header, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(4)); - } - - // A wrapper sizer splits the larger vertical separation (TOP 14) from the - // shallow horizontal indent (LEFT|RIGHT 6), so the top gap collapses with - // the header when it is hidden. wxEXPAND lets the Filament StaticLine's - // separator span the width like the subcategory headers. - auto wrap = new wxBoxSizer(wxVERTICAL); - wrap->Add(header_sizer, 0, wxEXPAND | wxTOP, FromDIP(14)); - section.item = m_list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(6)); + m_outer_tabs->AppendItem(section.title); + m_outer_host_sizer->Add(section.page, 1, wxEXPAND); + section.page->Hide(); m_sections.push_back(std::move(section)); return new_index; } +size_t PublishSettingsDialog::category_index_for(const wxString& title, + Section section, + const std::string& icon_name, + size_t group, + size_t source_index, + const PublishMaterialIdentity& identity) +{ + for (size_t i : m_sections[group].categories) { + Category& existing = m_categories[i]; + if (existing.title == title && existing.section == section && existing.source_index == source_index && + existing.filament_id == identity.id && existing.filament_type == identity.type && existing.filament_vendor == identity.vendor) + return i; + } + + Category category; + category.title = title; + category.section = section; + category.group = group; + category.source_index = source_index; + category.icon_name = icon_name; + category.filament_type = identity.type; + category.filament_vendor = identity.vendor; + category.filament_id = identity.id; + category.filament_slot = source_index; + category.page = new wxPanel(m_sections[group].page_host, wxID_ANY); + category.page->SetBackgroundColour(GetBackgroundColour()); + auto* page_sizer = new wxBoxSizer(wxVERTICAL); + + if (section == Section::Material) { + auto* header_sizer = new wxBoxSizer(wxHORIZONTAL); + std::string hex; + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + if (const auto* colours = full.opt("filament_colour")) + if (source_index < colours->size()) + hex = colours->get_at(source_index); + if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) + header_sizer->Add(new wxStaticBitmap(category.page, wxID_ANY, *chip), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + category.master_check = new wxCheckBox(category.page, wxID_ANY, title); + category.master_check->SetFont(Label::Head_14); + category.master_check->SetToolTip(_L("Export this material")); + header_sizer->Add(category.master_check, 0, wxALIGN_CENTER_VERTICAL); + category.header = new wxCheckBox(category.page, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); + category.header->SetToolTip(_L("Select/deselect all settings in this material")); + header_sizer->Add(category.header, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(6)); + page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + } + + category.scroll = new wxScrolledWindow(category.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); + category.scroll->SetScrollRate(0, 10); + category.scroll->SetBackgroundColour(GetBackgroundColour()); + category.list_sizer = new wxBoxSizer(wxVERTICAL); + category.scroll->SetSizer(category.list_sizer); + category.scroll->DisableFocusFromKeyboard(); + category.scroll->Bind(wxEVT_RIGHT_DOWN, &PublishSettingsDialog::show_menu, this); + category.info = new wxStaticText(category.scroll, wxID_ANY, m_info_empty); + category.info->SetFont(Label::Body_13); + category.list_sizer->Add(category.info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + category.info->Hide(); + page_sizer->Add(category.scroll, 1, wxEXPAND | wxALL, FromDIP(4)); + category.page->SetSizer(page_sizer); + category.page->Hide(); + + const size_t category_index = m_categories.size(); + m_categories.push_back(std::move(category)); + m_sections[group].categories.push_back(category_index); + m_sections[group].tabs->AppendItem(title); + m_sections[group].page_host_sizer->Add(m_categories[category_index].page, 1, wxEXPAND); + if (m_sections[group].selected_inner < 0) + m_sections[group].selected_inner = 0; + return category_index; +} + +size_t PublishSettingsDialog::subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon) +{ + Category& category = m_categories[category_index]; + for (size_t i = 0; i < category.subs.size(); ++i) + if (category.subs[i].title == title) + return i; + + Subcategory sub; + sub.title = title; + if (!title.IsEmpty()) { + sub.header = new ::StaticLine(category.scroll, false, title, icon); + sub.header->SetFont(Label::Head_14); + sub.header->SetForegroundColour("#363636"); + auto* wrap = new wxBoxSizer(wxVERTICAL); + wrap->Add(sub.header, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); + sub.item = category.list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(22)); + } + category.subs.push_back(std::move(sub)); + return category.subs.size() - 1; +} + +void PublishSettingsDialog::add_row_ui(const std::string& key, + const wxString& label, + const wxString& value, + const wxString& unit, + size_t category_index, + size_t subcategory_index) +{ + Category& category = m_categories[category_index]; + Row row; + row.key = key; + row.label = label; + row.value = value; + row.unit = unit; + row.category = category.title; + row.subcategory = category.subs[subcategory_index].title; + row.section = category.section; + row.section_title = m_sections[category.group].title; + row.outer_index = category.group; + row.inner_index = category_index; + row.subcategory_index = subcategory_index; + const size_t row_index = m_rows.size(); + m_rows.push_back(std::move(row)); + Row& current = m_rows[row_index]; + current.check = new wxCheckBox(category.scroll, wxID_ANY, label); + current.check->SetFont(Label::Body_13); + current.value_label = new wxStaticText(category.scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); + current.value_label->SetFont(Label::Body_13); + current.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); + current.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); + if (!unit.IsEmpty()) { + current.unit_label = new wxStaticText(category.scroll, wxID_ANY, unit); + current.unit_label->SetFont(Label::Body_13); + current.unit_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + } + auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); + row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); + row_sizer->Add(current.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + if (current.unit_label != nullptr) + row_sizer->Add(current.unit_label, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + current.item = category.list_sizer->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(38)); + category.rows.push_back(row_index); + category.subs[subcategory_index].rows.push_back(row_index); +} + void PublishSettingsDialog::on_category_toggle(size_t category_index) { Category& cat = m_categories[category_index]; @@ -723,7 +624,7 @@ void PublishSettingsDialog::on_category_toggle(size_t category_index) bool value = !all_checked; for (size_t r : cat.rows) m_rows[r].check->SetValue(value); - update_category_header(cat); + update_all_headers(); } void PublishSettingsDialog::on_master_toggle(size_t category_index) @@ -733,60 +634,19 @@ void PublishSettingsDialog::on_master_toggle(size_t category_index) for (size_t r : cat.rows) m_rows[r].check->Enable(cat.master); cat.header->Enable(cat.master); - update_category_header(cat); + update_all_headers(); } -void PublishSettingsDialog::on_section_toggle(size_t section_index) +void PublishSettingsDialog::update_all_headers() { - SectionGroup& section = m_sections[section_index]; - if (section.header == nullptr) - return; // defensive: the Filament group has no select-all - // All-or-none over every enabled row in the group's categories. - bool all_checked = true; - for (size_t c : section.categories) { - for (size_t r : m_categories[c].rows) - if (m_rows[r].check->IsEnabled() && !m_rows[r].check->GetValue()) { - all_checked = false; - break; - } - if (!all_checked) - break; - } - const bool value = !all_checked; - for (size_t c : section.categories) - for (size_t r : m_categories[c].rows) - if (m_rows[r].check->IsEnabled()) - m_rows[r].check->SetValue(value); - for (size_t c : section.categories) - update_category_header(m_categories[c]); - update_section_header(section); -} - -void PublishSettingsDialog::update_section_header(SectionGroup& section) -{ - if (section.header == nullptr) - return; // Filament group has no tri-state. - int checked = 0; - int total = 0; - for (size_t c : section.categories) { - for (size_t r : m_categories[c].rows) { - if (!m_rows[r].check->IsEnabled()) - continue; // gated material rows don't count (defensive) - ++total; - if (m_rows[r].check->GetValue()) - ++checked; - } - } - if (total == 0 || checked == 0) - section.header->Set3StateValue(wxCHK_UNCHECKED); - else if (checked == total) - section.header->Set3StateValue(wxCHK_CHECKED); - else - section.header->Set3StateValue(wxCHK_UNDETERMINED); + for (Category& category : m_categories) + update_category_header(category); } void PublishSettingsDialog::update_category_header(Category& category) { + if (category.header == nullptr) + return; // A gated material section's tri-state must not reflect the preserved // (greyed-out) row values. if (category.section == Section::Material && !category.master) { @@ -813,6 +673,71 @@ void PublishSettingsDialog::set_row_bold(Row& row, bool bold) row.check->SetFont(bold ? Label::Body_13.Bold() : Label::Body_13); } +void PublishSettingsDialog::save_scroll_position(Category& category) +{ + if (category.scroll != nullptr) + category.scroll->GetViewStart(&category.scroll_pos.x, &category.scroll_pos.y); +} + +void PublishSettingsDialog::show_outer_page(size_t section_index) +{ + if (section_index >= m_sections.size()) + return; + if (m_selected_outer >= 0 && m_selected_outer < static_cast(m_sections.size())) { + SectionGroup& old_section = m_sections[m_selected_outer]; + if (old_section.selected_inner >= 0 && old_section.selected_inner < static_cast(old_section.categories.size())) + save_scroll_position(m_categories[old_section.categories[old_section.selected_inner]]); + m_sections[m_selected_outer].page->Hide(); + } + m_selected_outer = static_cast(section_index); + SectionGroup& section = m_sections[section_index]; + section.page->Show(); + if (section.selected_inner >= 0) + show_inner_page(section_index, section.selected_inner); + m_outer_host_sizer->Layout(); +} + +void PublishSettingsDialog::show_inner_page(size_t section_index, int inner_index) +{ + if (section_index >= m_sections.size()) + return; + SectionGroup& section = m_sections[section_index]; + if (inner_index < 0 || inner_index >= static_cast(section.categories.size())) + return; + if (section.selected_inner >= 0 && section.selected_inner < static_cast(section.categories.size())) { + save_scroll_position(m_categories[section.categories[section.selected_inner]]); + m_categories[section.categories[section.selected_inner]].page->Hide(); + } + section.selected_inner = inner_index; + Category& category = m_categories[section.categories[inner_index]]; + category.page->Show(); + category.scroll->FitInside(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + section.page_host_sizer->Layout(); +} + +void PublishSettingsDialog::on_outer_tab_changed(wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (selection >= 0 && selection < static_cast(m_sections.size())) + show_outer_page(static_cast(selection)); +} + +void PublishSettingsDialog::on_inner_tab_changed(size_t section_index, wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (section_index < m_sections.size() && selection >= 0 && selection < static_cast(m_sections[section_index].categories.size())) + show_inner_page(section_index, selection); +} + +void PublishSettingsDialog::bind_tab_events() +{ + m_outer_tabs->Bind(wxEVT_TAB_SEL_CHANGED, &PublishSettingsDialog::on_outer_tab_changed, this); + for (size_t section_index = 0; section_index < m_sections.size(); ++section_index) + m_sections[section_index].tabs->Bind(wxEVT_TAB_SEL_CHANGED, + [this, section_index](wxCommandEvent& event) { on_inner_tab_changed(section_index, event); }); +} + void PublishSettingsDialog::apply_filter(const wxString& filter_text) { Freeze(); @@ -823,11 +748,10 @@ void PublishSettingsDialog::apply_filter(const wxString& filter_text) const bool pseudo = (filter == "::sel" || filter == "::nonsel"); m_fb_sizer->Show(!pseudo); - // Update the per-row match flags only; actual visibility is computed by - // apply_visibility() (which also respects the collapse state). + // Update row matches first; page and optgroup visibility is applied below. if (pseudo) { if (m_filter_ctrl->GetValue().Lower() != filter) { - m_filter_ctrl->SetValue(filter); + m_filter_ctrl->ChangeValue(filter); m_filter_ctrl->SetSelection(0, -1); } const bool want_checked = (filter == "::sel"); @@ -843,20 +767,43 @@ void PublishSettingsDialog::apply_filter(const wxString& filter_text) } } - // The info label reflects the filter result only; a collapsed section - // hiding its matches is a user choice, not "no match". - m_info->Show(); - for (const Row& row : m_rows) { - if (row.matches_filter) { - m_info->Hide(); - break; + size_t first_outer = 0; + int first_inner = -1; + bool active_has_match = false; + for (size_t s = 0; s < m_sections.size(); ++s) { + for (size_t inner = 0; inner < m_sections[s].categories.size(); ++inner) { + Category& category = m_categories[m_sections[s].categories[inner]]; + bool has_match = false; + for (size_t r : category.rows) + has_match = has_match || m_rows[r].matches_filter; + category.info->Show(!has_match); + if (!has_match) + category.info->SetLabel(pseudo ? (filter == "::sel" ? m_info_nonsel : m_info_allsel) : m_info_empty); + if (has_match && first_inner < 0) { + first_outer = s; + first_inner = static_cast(inner); + } + if (static_cast(s) == m_selected_outer && static_cast(inner) == m_sections[s].selected_inner) + active_has_match = has_match; } } - if (m_info->IsShown()) - m_info->SetLabel(pseudo ? (filter == "::sel" ? m_info_nonsel : m_info_allsel) : m_info_empty); + if (!active_has_match && first_inner >= 0 && + (m_selected_outer != static_cast(first_outer) || m_sections[first_outer].selected_inner != first_inner)) { + if (m_selected_outer != static_cast(first_outer)) { + m_outer_tabs->SelectItem(static_cast(first_outer)); + show_outer_page(first_outer); + } + m_sections[first_outer].tabs->SelectItem(first_inner); + show_inner_page(first_outer, first_inner); + } apply_visibility(); - m_scroll->FitInside(); + for (Category& category : m_categories) { + save_scroll_position(category); + category.scroll->FitInside(); + category.list_sizer->Layout(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + } Layout(); Thaw(); } @@ -864,95 +811,26 @@ void PublishSettingsDialog::apply_filter(const wxString& filter_text) void PublishSettingsDialog::apply_visibility() { Freeze(); - for (SectionGroup& section : m_sections) { - // The section header stays visible whenever any row in the group matches - // (a section header never depends on its own collapsed state). - bool section_any = false; - for (size_t c : section.categories) { - for (size_t r : m_categories[c].rows) - if (m_rows[r].matches_filter) { - section_any = true; - break; - } - if (section_any) - break; - } - section.item->Show(section_any); - section.chevron->SetCollapsed(section.collapsed); - - for (size_t c : section.categories) { - Category& cat = m_categories[c]; - - // The category header stays visible whenever it has any match and - // the section is not collapsed, so it can always be re-expanded. - bool cat_any = false; - for (size_t r : cat.rows) - if (m_rows[r].matches_filter) { - cat_any = true; - break; - } - cat.item->Show(cat_any && !section.collapsed); - cat.chevron->SetCollapsed(cat.collapsed); - - for (Subcategory& sub : cat.subs) { - if (sub.header != nullptr) { - // The subcategory header visibility depends on its rows' matches - // and on its ancestors, but NOT on its own collapsed state. - bool sub_any = false; - for (size_t r : sub.rows) - if (m_rows[r].matches_filter) { - sub_any = true; - break; - } - sub.item->Show(sub_any && !section.collapsed && !cat.collapsed); - sub.chevron->SetCollapsed(sub.collapsed); - } - // Rows are hidden by the filter and by any collapsed ancestor. - for (size_t r : sub.rows) - m_rows[r].item->Show(m_rows[r].matches_filter && !section.collapsed && !cat.collapsed && !sub.collapsed); - } + for (Category& category : m_categories) { + bool category_any = false; + for (size_t r : category.rows) + category_any = category_any || m_rows[r].matches_filter; + category.info->Show(!category_any); + for (Subcategory& sub : category.subs) { + bool sub_any = false; + for (size_t r : sub.rows) + sub_any = sub_any || m_rows[r].matches_filter; + if (sub.header != nullptr) + sub.item->Show(sub_any); + for (size_t r : sub.rows) + m_rows[r].item->Show(m_rows[r].matches_filter); } + category.list_sizer->Layout(); + category.scroll->FitInside(); } Thaw(); } -void PublishSettingsDialog::toggle_section(size_t section_index) -{ - m_sections[section_index].collapsed = !m_sections[section_index].collapsed; - apply_visibility(); - m_scroll->FitInside(); - m_list_sizer->Layout(); -} - -void PublishSettingsDialog::toggle_category(size_t category_index) -{ - m_categories[category_index].collapsed = !m_categories[category_index].collapsed; - apply_visibility(); - m_scroll->FitInside(); - m_list_sizer->Layout(); -} - -void PublishSettingsDialog::toggle_subcategory(size_t category_index, size_t subcategory_index) -{ - m_categories[category_index].subs[subcategory_index].collapsed = !m_categories[category_index].subs[subcategory_index].collapsed; - apply_visibility(); - m_scroll->FitInside(); - m_list_sizer->Layout(); -} - -CollapseChevron* PublishSettingsDialog::create_chevron(wxWindow* parent, - const wxEventTypeTag& event_type, - std::function toggle) -{ - CollapseChevron* chevron = new CollapseChevron(parent); - chevron->SetCursor(wxCURSOR_HAND); - // The tag type (not wxEventType) keeps Bind's EventTag template deduced as - // wxEventTypeTag; wxEvent& is used so the helper works with - // any mouse event tag, and the toggle itself does not inspect the event. - chevron->Bind(event_type, [toggle](wxEvent&) { toggle(); }); - return chevron; -} - void PublishSettingsDialog::select_all(bool value) { // "All" does not auto-enable gated material sections; "None" leaves a gated @@ -960,8 +838,18 @@ void PublishSettingsDialog::select_all(bool value) for (Row& row : m_rows) if (row.check->IsEnabled()) row.check->SetValue(value); - for (Category& cat : m_categories) - update_category_header(cat); + update_all_headers(); +} + +bool PublishSettingsDialog::row_is_visible(const Row& row) const +{ + if (m_selected_outer < 0 || m_selected_outer >= static_cast(m_sections.size()) || + row.outer_index != static_cast(m_selected_outer) || m_sections[m_selected_outer].selected_inner < 0 || + m_sections[m_selected_outer].selected_inner >= static_cast(m_sections[m_selected_outer].categories.size()) || + row.inner_index != m_sections[m_selected_outer].categories[m_sections[m_selected_outer].selected_inner] || !row.matches_filter || + !row.check->IsEnabled()) + return false; + return row.item->IsShown(); } void PublishSettingsDialog::select_visible(bool value) @@ -973,24 +861,30 @@ void PublishSettingsDialog::select_visible(bool value) // Toggle the rows that are visible under the *current* filter. for (Row& row : m_rows) - if (row.check->IsShown() && row.check->IsEnabled()) + if (row_is_visible(row)) row.check->SetValue(value); if (clear_pseudo) { // Note: SetValue() may fire wxEVT_TEXT on some platforms, which // re-enters apply_filter() - that is fine, the rows above were already // toggled and the trailing call below is idempotent. - m_filter_ctrl->SetValue(""); + m_filter_ctrl->ChangeValue(""); apply_filter(""); // resync visibility, headers and the All/None bar } - for (Category& cat : m_categories) - update_category_header(cat); + update_all_headers(); } void PublishSettingsDialog::show_menu(wxMouseEvent& evt) { bool filtering = !m_filter_ctrl->GetValue().IsEmpty(); - bool list_empty = m_info->IsShown(); + bool list_empty = true; + if (m_selected_outer >= 0) { + for (const Row& row : m_rows) + if (row_is_visible(row)) { + list_empty = false; + break; + } + } wxMenu m; m.Append(kPublishSelectAll, _L("Select All"))->Enable(!filtering); @@ -1066,30 +960,25 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) m_menu.msw_rescale(); m_filter_box->SetIcon(m_search.bmp()); m_menu_button->SetBitmap(m_menu.bmp()); - - for (SectionGroup& section : m_sections) { - if (section.icon != nullptr && section.icon_bmp.bmp().IsOk()) { - section.icon_bmp.msw_rescale(); - section.icon->SetBitmap(section.icon_bmp.bmp()); - } - if (section.header_line != nullptr) - section.header_line->Rescale(); - } + m_outer_tabs->Rescale(); for (Category& cat : m_categories) { if (cat.icon != nullptr && cat.icon_bmp.bmp().IsOk()) { cat.icon_bmp.msw_rescale(); cat.icon->SetBitmap(cat.icon_bmp.bmp()); } - for (Subcategory& sub : cat.subs) { - if (sub.header != nullptr) - sub.header->Rescale(); - } + if (cat.header != nullptr) + cat.header->Refresh(); + if (cat.master_check != nullptr) + cat.master_check->Refresh(); + cat.scroll->FitInside(); + cat.list_sizer->Layout(); } + for (SectionGroup& section : m_sections) + section.tabs->Rescale(); + SetMinSize(FromDIP(wxSize(600, 500))); - m_scroll->FitInside(); - m_list_sizer->Layout(); Refresh(); } diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 4767b9a29e..0bae39daa4 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -3,6 +3,7 @@ #include "GUI_Utils.hpp" #include "wxExtensions.hpp" +#include "Widgets/TabCtrl.hpp" #include "libslic3r/PublishSettings.hpp" @@ -13,21 +14,24 @@ #include #include -// Forward declarations (all are global classes, see Widgets/TextInput.hpp, -// Widgets/StaticLine.hpp and the CollapseChevron definition in the .cpp). +// Forward declarations (all are global classes, see Widgets/TextInput.hpp and +// Widgets/StaticLine.hpp). class TextInput; class StaticLine; -class CollapseChevron; namespace Slic3r { namespace GUI { +struct PublishMaterialIdentity +{ + std::string type; + std::string vendor; + std::string id; +}; + // Dialog that lets a model author select which settings get embedded in a 3MF. -// Settings are grouped the way the tabs show them: the process (print) pages, -// the printer's per-extruder retraction settings, and one section per material -// used in the project (filament overrides). Each main category has a select-all -// tri-state header, subcategory (optgroup) headings, one row per setting -// (checkbox + grey value label), and both header levels are collapsible (chevron -// toggle). A search filter and an All/None / select-visible menu are provided. +// Settings are grouped into the same nested custom tab layout used by the +// Process settings: Printer, Filament, and Process outer tabs, with category or +// material tabs inside each section. Optgroups are ordinary grouped headers. // Modified (dirty) settings are pre-checked and shown bold. On OK, the print // rows become the "published_keys" list and the material rows become the // per-material "published_material_keys". @@ -63,44 +67,49 @@ private: wxString label; wxString value; wxString unit; - wxString section_title; // top-level group title, for filter matching + wxString section_title; // outer tab title, for filter matching Section section{Section::Print}; + size_t outer_index{0}; + size_t inner_index{0}; + size_t subcategory_index{0}; bool dirty{false}; // matches a dirty base key: pre-checked + bold bool matches_filter{false}; // survives the active filter (computed by apply_filter) wxCheckBox* check{nullptr}; wxStaticText* value_label{nullptr}; wxStaticText* unit_label{nullptr}; - wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in m_list_sizer + wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in its tab list sizer }; - // A subcategory (optgroup) heading. Rows store indices into m_rows. + // An optgroup heading. Rows store indices into m_rows. struct Subcategory { wxString title; ::StaticLine* header{nullptr}; // null when the title is empty - bool collapsed{false}; - CollapseChevron* chevron{nullptr}; - wxSizerItem* item{nullptr}; // sizer item of the header h-sizer in m_list_sizer + wxSizerItem* item{nullptr}; std::vector rows; }; - // A main category with its select-all tri-state header. + // An inner TabCtrl page with its select-all/material controls and content. struct Category { wxString title; Section section{Section::Print}; - size_t group{0}; // index into m_sections - std::string icon_name; // bitmap name; empty = no icon + size_t group{0}; // index into m_sections / outer page + size_t source_index{0}; // stable source page or material slot index + std::string source_title; + std::string icon_name; + wxPanel* page{nullptr}; + wxScrolledWindow* scroll{nullptr}; + wxBoxSizer* list_sizer{nullptr}; + wxStaticText* info{nullptr}; + wxPoint scroll_pos{0, 0}; ScalableBitmap icon_bmp; // scalable bitmap for DPI changes - wxStaticBitmap* icon{nullptr}; // 18px category icon (null when icon_name empty) - wxCheckBox* header{nullptr}; // select-all tri-state + wxStaticBitmap* icon{nullptr}; + wxCheckBox* header{nullptr}; // material select-all tri-state; null for Printer/Process // Material opt-in: the master checkbox carries the material title and // gates whether this material's keys may be exported. bool master{false}; wxCheckBox* master_check{nullptr}; - bool collapsed{false}; - CollapseChevron* chevron{nullptr}; - wxSizerItem* item{nullptr}; // sizer item of the header h-sizer in m_list_sizer // Material identity, only for Section::Material categories. std::string filament_type; std::string filament_vendor; @@ -111,20 +120,17 @@ private: std::vector rows; // flattened rows, for the tri-state math }; - // A top-level section group mirroring the editor sidebar. Categories are - // nested inside. + // One outer TabCtrl page. Category entries are its inner tabs. struct SectionGroup { - wxString title; // _L("Printer") / _L("Filament") / _L("Process") - Section kind{Section::Print}; // maps 1:1 to the display group - std::string icon_name; // "printer" / "filament" / "process" - ScalableBitmap icon_bmp; // scalable bitmap for DPI changes - wxStaticBitmap* icon{nullptr}; // 18px, like Category::icon - wxCheckBox* header{nullptr}; // tri-state select-all; nullptr for the Filament group - ::StaticLine* header_line{nullptr}; // Filament group's clickable title - CollapseChevron* chevron{nullptr}; - wxSizerItem* item{nullptr}; - bool collapsed{false}; + wxString title; // _L("Printer") / _L("Filament") / _L("Process") + Section kind{Section::Print}; // maps 1:1 to the display group + std::string icon_name; // "printer" / "filament" / "process" + wxPanel* page{nullptr}; + TabCtrl* tabs{nullptr}; + wxPanel* page_host{nullptr}; + wxBoxSizer* page_host_sizer{nullptr}; + int selected_inner{-1}; std::vector categories; // indices into m_categories }; @@ -139,33 +145,31 @@ private: // Material opt-in toggled: enables/disables the material's rows + tri-state // and resyncs the header. void on_master_toggle(size_t category_index); - // Collapse/expand a category or subcategory; resyncs visibility + chevrons. - void toggle_category(size_t category_index); - void toggle_subcategory(size_t category_index, size_t subcategory_index); - // Find-or-create the top-level section group for a Section kind (builds its - // header row on first use). + // Return/create the fixed outer page for a Section kind. size_t section_group_for(Section kind); - // Top-level section group: select-all tri-state toggled / collapse/expand / - // header resync. - void on_section_toggle(size_t section_index); - void toggle_section(size_t section_index); - void update_section_header(SectionGroup& section); - // Single pass over categories/subs/rows: shows an item iff it is not hidden - // by the filter and (for subs/rows) by a collapsed ancestor. Flips the - // header chevrons. Only reads matches_filter; never re-runs filter matching. + size_t category_index_for(const wxString& title, Section section, const std::string& icon_name, size_t group, + size_t source_index, const PublishMaterialIdentity& identity = PublishMaterialIdentity()); + size_t subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon); + void add_row_ui(const std::string& key, const wxString& label, const wxString& value, const wxString& unit, + size_t category_index, size_t subcategory_index); + void save_scroll_position(Category& category); + void show_outer_page(size_t section_index); + void show_inner_page(size_t section_index, int inner_index); + void on_outer_tab_changed(wxCommandEvent& event); + void on_inner_tab_changed(size_t section_index, wxCommandEvent& event); + void update_all_headers(); + bool row_is_visible(const Row& row) const; void apply_visibility(); - // Creates a collapse chevron with a hand cursor; clicking it (with the given - // mouse event, LEFT_DOWN for categories / LEFT_UP for subcategories, - // matching the header's own binding) invokes the toggle. - CollapseChevron* create_chevron(wxWindow* parent, const wxEventTypeTag& event_type, std::function toggle); + void bind_tab_events(); - wxScrolledWindow* m_scroll{nullptr}; - wxBoxSizer* m_list_sizer{nullptr}; // vertical sizer of the scrolled window - wxBoxSizer* m_fb_sizer{nullptr}; // "All"/"None" buttons sizer + TabCtrl* m_outer_tabs{nullptr}; + wxPanel* m_outer_host{nullptr}; + wxBoxSizer* m_outer_host_sizer{nullptr}; + int m_selected_outer{-1}; + wxBoxSizer* m_fb_sizer{nullptr}; // "All"/"None" buttons sizer TextInput* m_filter_box{nullptr}; wxTextCtrl* m_filter_ctrl{nullptr}; wxStaticBitmap* m_menu_button{nullptr}; - wxStaticText* m_info{nullptr}; wxString m_info_nonsel; wxString m_info_allsel; wxString m_info_empty; @@ -175,8 +179,6 @@ private: std::vector m_rows; std::vector m_categories; - // Fixed display order enforced by phase order in build_option_model(): - // Printer, then Filament, then Process. std::vector m_sections; }; From 92123cdc2c044c9a161def34812a80d13ce9dc57 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 14 Aug 2026 16:50:33 +0800 Subject: [PATCH 006/162] Add filament color next to tab button in filament setting --- src/slic3r/GUI/PublishSettingsDialog.cpp | 46 ++++++++++++++++++++++-- src/slic3r/GUI/PublishSettingsDialog.hpp | 1 + src/slic3r/GUI/Widgets/Button.cpp | 21 +++++++---- src/slic3r/GUI/Widgets/Button.hpp | 2 ++ src/slic3r/GUI/Widgets/TabCtrl.cpp | 16 +++++++++ src/slic3r/GUI/Widgets/TabCtrl.hpp | 2 ++ 6 files changed, 79 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index b67a962650..c3b927d09b 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -505,8 +505,10 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, if (const auto* colours = full.opt("filament_colour")) if (source_index < colours->size()) hex = colours->get_at(source_index); - if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) - header_sizer->Add(new wxStaticBitmap(category.page, wxID_ANY, *chip), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { + category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); + header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + } category.master_check = new wxCheckBox(category.page, wxID_ANY, title); category.master_check->SetFont(Label::Head_14); category.master_check->SetToolTip(_L("Export this material")); @@ -535,7 +537,19 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, const size_t category_index = m_categories.size(); m_categories.push_back(std::move(category)); m_sections[group].categories.push_back(category_index); - m_sections[group].tabs->AppendItem(title); + if (section == Section::Material) { + std::string hex; + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + if (const auto* colours = full.opt("filament_colour")) + if (source_index < colours->size()) + hex = colours->get_at(source_index); + if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) + m_sections[group].tabs->AppendItem(title, *chip); + else + m_sections[group].tabs->AppendItem(title); + } else { + m_sections[group].tabs->AppendItem(title); + } m_sections[group].page_host_sizer->Add(m_categories[category_index].page, 1, wxEXPAND); if (m_sections[group].selected_inner < 0) m_sections[group].selected_inner = 0; @@ -971,6 +985,15 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) cat.header->Refresh(); if (cat.master_check != nullptr) cat.master_check->Refresh(); + if (cat.filament_color_chip != nullptr) { + std::string hex; + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + if (const auto* colours = full.opt("filament_colour")) + if (cat.filament_slot < colours->size()) + hex = colours->get_at(cat.filament_slot); + if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) + cat.filament_color_chip->SetBitmap(*chip); + } cat.scroll->FitInside(); cat.list_sizer->Layout(); } @@ -978,6 +1001,23 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) for (SectionGroup& section : m_sections) section.tabs->Rescale(); + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + for (size_t category_index = 0; category_index < m_categories.size(); ++category_index) { + const Category& category = m_categories[category_index]; + if (category.section != Section::Material) + continue; + std::string hex; + if (const auto* colours = full.opt("filament_colour")) + if (category.filament_slot < colours->size()) + hex = colours->get_at(category.filament_slot); + if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { + const SectionGroup& section = m_sections[category.group]; + const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); + if (iter != section.categories.end()) + m_sections[category.group].tabs->SetItemBitmap(static_cast(iter - section.categories.begin()), *chip); + } + } + SetMinSize(FromDIP(wxSize(600, 500))); Refresh(); } diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 0bae39daa4..949c08a81b 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -105,6 +105,7 @@ private: wxPoint scroll_pos{0, 0}; ScalableBitmap icon_bmp; // scalable bitmap for DPI changes wxStaticBitmap* icon{nullptr}; + wxStaticBitmap* filament_color_chip{nullptr}; wxCheckBox* header{nullptr}; // material select-all tri-state; null for Printer/Process // Material opt-in: the master checkbox carries the material title and // gates whether this material's keys may be exported. diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index e236c84e67..0efba60f3d 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -80,6 +80,7 @@ bool Button::SetFont(const wxFont& font) void Button::SetIcon(const wxString& icon) { + custom_icon = wxNullBitmap; auto tmpBitmap = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt()); if (!icon.IsEmpty()) { //BBS set button icon default size to 20 @@ -95,6 +96,13 @@ void Button::SetIcon(const wxString& icon) } } +void Button::SetBitmap(const wxBitmap& bitmap) +{ + custom_icon = bitmap; + messureSize(); + Refresh(); +} + void Button::SetInactiveIcon(const wxString &icon) { if (!icon.IsEmpty()) { @@ -311,7 +319,8 @@ void Button::render(wxDC& dc) } } auto szContent = textSize; - if (icon.bmp().IsOk()) { + const bool has_custom_icon = custom_icon.IsOk(); + if (has_custom_icon || icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon if (vertical) @@ -319,7 +328,7 @@ void Button::render(wxDC& dc) else szContent.x += spacing; } - szIcon = icon.GetBmpSize(); + szIcon = has_custom_icon ? custom_icon.GetSize() : icon.GetBmpSize(); if (vertical) { szContent.y += szIcon.y; if (szIcon.x > szContent.x) szContent.x = szIcon.x; @@ -342,12 +351,12 @@ void Button::render(wxDC& dc) } // start draw wxPoint pt = rcContent.GetLeftTop(); - if (icon.bmp().IsOk()) { + if (has_custom_icon || icon.bmp().IsOk()) { if (vertical) pt.x += (rcContent.width - szIcon.x) / 2; else pt.y += (rcContent.height - szIcon.y) / 2; - dc.DrawBitmap(icon.bmp(), pt); + dc.DrawBitmap(has_custom_icon ? custom_icon : icon.bmp(), pt); //BBS norrow size between text and icon if (vertical) { pt.y += szIcon.y + spacing; @@ -380,7 +389,7 @@ void Button::messureSize() wxClientDC dc(this); dc.GetTextExtent(GetLabel(), &textSize.width, &textSize.height, &textSize.x, &textSize.y); wxSize szContent = textSize.GetSize(); - if (this->active_icon.bmp().IsOk()) { + if (custom_icon.IsOk() || this->active_icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon if (vertical) @@ -388,7 +397,7 @@ void Button::messureSize() else szContent.x += 5; } - wxSize szIcon = this->active_icon.GetBmpSize(); + wxSize szIcon = custom_icon.IsOk() ? custom_icon.GetSize() : this->active_icon.GetBmpSize(); if (vertical) { szContent.y += szIcon.y; if (szIcon.x > szContent.x) szContent.x = szIcon.x; diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 94b245a75b..bb9a013baa 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -35,6 +35,7 @@ class Button : public StaticBox wxSize paddingSize; ScalableBitmap active_icon; ScalableBitmap inactive_icon; + wxBitmap custom_icon; StateColor text_color; @@ -61,6 +62,7 @@ public: bool SetFont(const wxFont& font) override; void SetIcon(const wxString& icon); + void SetBitmap(const wxBitmap& bitmap); void SetInactiveIcon(const wxString& icon); diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 40e291d5ad..6aeffd2dce 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -84,6 +84,7 @@ void TabCtrl::Rescale() { for (auto & b : btns) b->Rescale(); + relayout(); } bool TabCtrl::SetFont(wxFont const& font) @@ -117,6 +118,13 @@ int TabCtrl::AppendItem(const wxString &item, return btns.size() - 1; } +int TabCtrl::AppendItem(const wxString& item, const wxBitmap& bitmap, void* clientData) +{ + const int index = AppendItem(item, -1, -1, clientData); + SetItemBitmap(index, bitmap); + return index; +} + bool TabCtrl::DeleteItem(int item) { if (item < 0 || item >= btns.size()) { @@ -170,6 +178,14 @@ void TabCtrl::SetItemText(unsigned int item, wxString const &value) btns[item]->SetLabel(value); } +void TabCtrl::SetItemBitmap(unsigned int item, const wxBitmap& bitmap) +{ + if (item >= btns.size()) + return; + btns[item]->SetBitmap(bitmap); + relayout(); +} + bool TabCtrl::GetItemBold(unsigned int item) const { if (item >= btns.size()) return false; diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index a25f332fb3..e79dd1dee6 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -29,6 +29,7 @@ public: public: int AppendItem(const wxString &item, int image = -1, int selImage = -1, void *clientData = nullptr); + int AppendItem(const wxString &item, const wxBitmap& bitmap, void *clientData = nullptr); bool DeleteItem(int item); @@ -46,6 +47,7 @@ public: wxString GetItemText(unsigned int item) const; void SetItemText(unsigned int item, wxString const &value); + void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); bool GetItemBold(unsigned int item) const; void SetItemBold(unsigned int item, bool bold); From 2b18744cc237c2b9d9e30190d58ecc597c84432d Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 17 Aug 2026 17:50:54 +0800 Subject: [PATCH 007/162] Allow model to be Published without any settings modified --- src/slic3r/GUI/PublishSettingsDialog.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index c3b927d09b..63333ea451 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -165,16 +165,9 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { - // At least one checked, enabled (publishable) key is required. A gated - // material row is disabled even if its value is pre-checked, so it must - // not count. - for (const Row& row : m_rows) - if (row.check->GetValue() && row.check->IsEnabled()) { - EndModal(wxID_OK); - return; - } - MessageDialog(this, _L("No settings selected. Please select at least one setting to publish."), _L("Publish"), wxOK | wxICON_WARNING) - .ShowModal(); + // Publish is always allowed: no settings selected means a publish with + // no settings override. + EndModal(wxID_OK); }); dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); @@ -1012,7 +1005,7 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) hex = colours->get_at(category.filament_slot); if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { const SectionGroup& section = m_sections[category.group]; - const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); + const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); if (iter != section.categories.end()) m_sections[category.group].tabs->SetItemBitmap(static_cast(iter - section.categories.begin()), *chip); } From 6c429059e019d558bf9502aadf886df6e9539fc7 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 18 Aug 2026 13:49:10 +0800 Subject: [PATCH 008/162] Extend Publish workflow with full-filament and type/color requirements Per material slot, the Publish dialog can now embed the entire filament preset ("Full Publish") and require a curated filament type and/or colour: - On export, full-publish vector options are masked to the author's slot so unrelated slot data never leaks into the published file. - On load, slots are matched by the published type: a match keeps the receiver's material (full dumps ignored, partial keys applied); a mismatch replaces the slot with the first visible same-type library filament, falling back to a temporary embedded preset or skipped keys when none exists. Required colours apply regardless of the type match. - The receiver's slot count grows only to the highest published slot. - Published 3MFs load as a new project: the file's path is not adopted as the project filename, published metadata is stripped from the model, and the file is added to recent projects. - Notifications list replaced slots, and the edited filament preset is refreshed so applied values surface in the GUI. - Dialog: "Full Publish" toggle replaces the material opt-in and select-all headers; new Color/Type requirement rows with swatches. - Add Ctrl+Shift+E shortcut for the Publish dialog (menu, key handling, and the keyboard shortcuts dialog). - Tests for export slot masking, metadata round-trip, replacement semantics, slot growth, and skipped-key reporting. --- src/libslic3r/PresetBundle.cpp | 219 ++++++++++ src/libslic3r/PresetBundle.hpp | 3 + src/libslic3r/PublishSettings.cpp | 81 +++- src/libslic3r/PublishSettings.hpp | 22 + src/slic3r/GUI/KBShortcutsDialog.cpp | 1 + src/slic3r/GUI/MainFrame.cpp | 25 +- src/slic3r/GUI/MainFrame.hpp | 2 + src/slic3r/GUI/Plater.cpp | 73 +++- src/slic3r/GUI/Plater.hpp | 2 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 213 ++++----- src/slic3r/GUI/PublishSettingsDialog.hpp | 33 +- tests/libslic3r/test_3mf.cpp | 95 +++++ .../libslic3r/test_preset_bundle_loading.cpp | 403 ++++++++++++++++++ 13 files changed, 1037 insertions(+), 135 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index febfa5d4dc..8a047fea00 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4783,6 +4783,11 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (is_published) { std::vector skipped_keys; std::set applied_keys; + // Set whenever the material overlay actually modifies a receiver filament preset + // (applied key, colour or slot replacement). Only then must the edited preset be + // re-snapshotted: re-selecting unconditionally would discard the user's unsaved + // in-memory filament edits when the published file touches nothing. + bool material_applied = false; // Structural keys must never be applied to the user's presets: doing so would // rewrite their preset inheritance/structure. This is the single source of truth // shared with PublishSettingsDialog.cpp (publish_structural_keys in @@ -4869,6 +4874,11 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool return true; }; for (const PublishedMaterialEntry &entry : published_config->material_keys) { + // Entries using the filament-publishing-v2 features (full dump, published type or + // colour) are handled by the positional per-slot pass below; the legacy identity + // matching here applies only to files that predate those features. + if (entry.full || entry.publish_type || entry.publish_color) + continue; // Resolve the author's source slot and its ordinal among the author slots // carrying this entry's identity. A slotted entry (slot >= 0) names the exact // author slot and targets the receiver's Nth matching preset (N = ordinal); @@ -5002,11 +5012,212 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool continue; } static_cast(dst_opt)->set_at(src_opt, 0, author_slot); + material_applied = true; } } } } + // Filament-publishing-v2: positional per-slot entries. The author published, per slot, + // either the entire filament (full) or specific keys plus optionally a curated type + // and/or colour. The receiver's slot is matched positionally against the published type: + // - colour: always applied to the slot, independent of the type gate; + // - type match: a full dump is intentionally ignored (the receiver keeps its material), + // a partial entry's keys are applied as usual; + // - type mismatch: the slot is replaced with the first visible same-type filament from + // the receiver's library; the author's values are applied on top of it (full) or the + // published keys are applied (partial); + // - no replacement available: a full entry falls back to applying the author's values + // in-memory onto the receiver's current preset (no library import); a partial entry + // keeps the receiver's material and reports its keys as skipped. + { + // Slot growth is tied to the author slots that carry published content (full, + // type or colour): the file's total filament count is irrelevant, and a slot the + // author left unpublished must not pull a filler material into the receiver's + // setup. Grow only as far as the highest published slot (never shrink, never + // remove the receiver's existing materials). + bool has_new_semantics = false; + size_t target_slots = this->filament_presets.size(); + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + if (!entry.full && !entry.publish_type && !entry.publish_color) + continue; // legacy entry, handled above + has_new_semantics = true; + if (entry.slot >= 0) + target_slots = std::max(target_slots, size_t(entry.slot) + 1); + } + if (has_new_semantics) { + // Defensive cap: never exceed the file's own filament count. + target_slots = std::min(target_slots, num_filaments); + while (this->filament_presets.size() < target_slots) { + const size_t new_slot_idx = this->filament_presets.size(); + std::string initial_preset; + // Proactively assign matching candidate preset if this slot carries a published type + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + if (entry.slot == static_cast(new_slot_idx) && entry.publish_type && !entry.publish_type_value.empty()) { + for (size_t i = 0; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible) + continue; + if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) == entry.publish_type_value) { + initial_preset = candidate.name; + break; + } + } + break; + } + } + if (initial_preset.empty()) + initial_preset = this->filaments.first_visible().name; + this->filament_presets.emplace_back(initial_preset); + } + + auto apply_slot_keys = [&](Preset &preset, const std::vector &slot_keys, int author_slot, + const std::string &material_label) { + for (const std::string &key : slot_keys) { + const std::string base_key = key.substr(0, key.find('#')); + if (structural_keys.count(base_key) != 0) + continue; + const ConfigOption *src_opt = config.option(base_key); + if (src_opt == nullptr || !src_opt->is_vector() || + author_slot < 0 || author_slot >= static_cast(static_cast(src_opt)->size())) { + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + ConfigOption *dst_opt = preset.config.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector() || + static_cast(dst_opt)->empty() || + dst_opt->type() != src_opt->type()) { + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + // Per-slot scalar copy: the receiver's filament preset holds a single + // value per key (vector of size 1), the file holds the per-slot vector. + static_cast(dst_opt)->set_at(src_opt, 0, author_slot); + material_applied = true; + } + }; + + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + if (!entry.full && !entry.publish_type && !entry.publish_color) + continue; // legacy entry, handled above + if (entry.slot < 0 || size_t(entry.slot) >= this->filament_presets.size()) + continue; // out of range: nothing to do for this slot + const size_t slot = size_t(entry.slot); + // Modify the stored preset itself (real=true), never the edited snapshot: + // find_preset would return &m_edited_preset for the currently selected slot, + // and the re-select at the end of this block re-snapshots from the stored + // preset, silently discarding any values applied to the snapshot. + Preset *recv = this->filaments.find_preset(this->filament_presets[slot], false, true); + if (recv == nullptr) + continue; + + const std::string material_label = entry.filament_id.empty() + ? (entry.publish_type_value.empty() ? entry.filament_type : entry.publish_type_value) + : entry.filament_id; + + bool apply_slot = true; + if (entry.publish_type && !entry.publish_type_value.empty()) { + const std::string recv_type = normalize_filament_type(recv->config.opt_string("filament_type", 0u)); + if (recv_type == entry.publish_type_value) { + // Type match: the receiver keeps its material. A full dump is + // intentionally ignored for this slot; partial keys still apply. + if (entry.full) + apply_slot = false; + } else { + // Type mismatch: replace the slot with the first visible same-type + // filament from the receiver's library. + std::string replacement; + for (size_t i = 0; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible) + continue; + if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) != entry.publish_type_value) + continue; + replacement = candidate.name; + break; + } + if (!replacement.empty()) { + const std::string old_name = recv->name; + this->filament_presets[slot] = replacement; + recv = this->filaments.find_preset(replacement, false, true); + material_applied = true; + published_config->material_replacements.emplace_back( + "slot " + std::to_string(slot) + ": " + old_name + " -> " + replacement); + } else if (entry.full) { + // No library match: create a temporary project-embedded custom preset + // populated with default settings and overlaid with the author's values. + std::string custom_name = entry.publish_type_value + " (Published)"; + for (size_t idx = 1; this->filaments.find_preset(custom_name, false) != nullptr; ++idx) + custom_name = entry.publish_type_value + " (Published " + std::to_string(idx) + ")"; + + // Capture the slot's current name BEFORE load_preset: the custom + // name sorts ahead of the slot's material, so the deque insertion + // relocates it and recv would dangle after the call. + const std::string old_name = recv->name; + + DynamicPrintConfig custom_cfg = this->filaments.default_preset_for(config).config; + // filament_type is a per-slot vector option: set it via the strings + // accessor. opt_string(key, bool) would ask for the scalar + // ConfigOptionString, fail the cast and dereference nullptr. + if (ConfigOptionStrings *type_opt = custom_cfg.opt("filament_type", true)) { + if (type_opt->values.empty()) + type_opt->values.emplace_back(); + type_opt->values[0] = entry.publish_type_value; + } + if (ConfigOptionStrings *id_opt = custom_cfg.opt("filament_settings_id", true)) + if (!id_opt->values.empty()) + id_opt->values[0] = custom_name; + + Preset &created = this->filaments.load_preset("", custom_name, std::move(custom_cfg), false, file_version); + created.is_project_embedded = true; + created.is_visible = true; + + this->filament_presets[slot] = custom_name; + recv = &created; + material_applied = true; + published_config->material_replacements.emplace_back( + "slot " + std::to_string(slot) + ": " + old_name + " -> " + custom_name); + } else { + // Partial publish with no replacement available: keep the + // receiver's material and report this slot's keys as skipped. + for (const std::string &key : entry.keys) + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + apply_slot = false; + } + } + } + + // Colour is slot-scoped and independent of the type gate: it is applied to + // whichever material ends up in the slot (original, replacement or the + // in-memory fallback), and synced into project_config for GUI rendering. + if (entry.publish_color && !entry.color.empty()) { + if (recv != nullptr) { + // Create the key when the target preset lacks it (e.g. a replacement + // built from the static defaults): the colour is a requirement, not + // an optional override. + if (ConfigOptionStrings *colour = recv->config.opt("filament_colour", true)) { + if (colour->values.empty()) + colour->values.emplace_back(); + colour->values[0] = entry.color; + material_applied = true; + } + } + if (ConfigOptionStrings *proj_colour = this->project_config.opt("filament_colour")) { + if (slot < proj_colour->values.size()) + proj_colour->values[slot] = entry.color; + } + if (ConfigOptionStrings *proj_multi_colour = this->project_config.opt("filament_multi_colour")) { + if (slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = entry.color; + } + } + + if (apply_slot && recv != nullptr) + apply_slot_keys(*recv, entry.full ? entry.full_keys : entry.keys, entry.slot, material_label); + } + } + } + for (const std::string &key : published_config->published_keys) { if (applied_keys.count(key) != 0) continue; @@ -5021,6 +5232,14 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool skipped_keys.emplace_back(key); } published_config->skipped_keys = std::move(skipped_keys); + + // The material overlay above modified the filament collection presets in place, but + // the edited preset (what the GUI displays) is a snapshot taken when the preset was + // last selected. Re-select the first slot's filament (mirroring a normal project load) + // so the applied values (colour, type, keys and slot replacements) surface in the GUI; + // selecting any other slot's filament afterwards snapshots its modified preset too. + if (material_applied && !this->filament_presets.empty()) + this->filaments.select_preset_by_name(this->filament_presets.front(), true); } //BBS diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index c8af2e4b71..d568de30e3 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -181,6 +181,9 @@ struct PublishedConfig // Keys that could not be applied (missing on the user's machine or vector size mismatch), // filled in by load_config_file_config for notification purposes. std::vector skipped_keys; + // Human-readable notices of the slot material replacements performed while loading a + // published project (e.g. "Slot 2: replaced PETG with PLA"), for the load notification. + std::vector material_replacements; }; // Bundle of Print + Filament + Printer presets. diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 9ac0c49472..0d1bd07989 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -3,11 +3,31 @@ #include "PresetBundle.hpp" #include "Preset.hpp" #include "PrintConfig.hpp" +#include "MaterialType.hpp" #include +#include +#include namespace Slic3r { +std::string normalize_filament_type(const std::string& type) +{ + if (type.empty()) + return type; + if (MaterialType::find(type) != nullptr) + return type; + // "PLA High Speed" -> "PLA": strip a space-separated modifier, but keep dash-separated + // types like "PA-CF" / "PETG-CF" intact (they are distinct materials, not modifiers). + const size_t sep = type.find(' '); + if (sep != std::string::npos) { + const std::string base = type.substr(0, sep); + if (MaterialType::find(base) != nullptr) + return base; + } + return type; +} + const std::set& publish_structural_keys() { // Structural / non-publishable keys. The *_settings_id keys are also part of @@ -111,6 +131,13 @@ DynamicPrintConfig filter_published_config( DynamicPrintConfig filtered; std::set base_keys_to_include; + // Base keys that must never be masked: identity, plate geometry, process/printer keys and + // partially-published material keys keep today's whole-vector serialization (all slots). + std::set mask_exempt_keys; + // For keys carried only by "full" entries: base key -> author slots whose values must + // survive; the other slots are masked to their defaults so a full publish does not leak + // the author's unrelated slot data. + std::map> full_slot_map; // 1. Mandatory material identity & slot count keys for 3MF validation/normalization static const std::vector s_material_identity_keys = { @@ -122,8 +149,10 @@ DynamicPrintConfig filter_published_config( "filament_self_index", "filament_extruder_variant" }; - for (const std::string &key : s_material_identity_keys) + for (const std::string &key : s_material_identity_keys) { base_keys_to_include.insert(key); + mask_exempt_keys.insert(key); + } // 2. Published plate / bed geometry keys (wipe tower positioning) static const std::vector s_plate_geometry_keys = { @@ -131,29 +160,69 @@ DynamicPrintConfig filter_published_config( "wipe_tower_y", "wipe_tower_rotation_angle" }; - for (const std::string &key : s_plate_geometry_keys) + for (const std::string &key : s_plate_geometry_keys) { base_keys_to_include.insert(key); + mask_exempt_keys.insert(key); + } // 3. Process and printer published keys for (const std::string &key : published_keys) { const std::string base_key = key.substr(0, key.find('#')); - if (!base_key.empty()) + if (!base_key.empty()) { base_keys_to_include.insert(base_key); + mask_exempt_keys.insert(base_key); + } } // 4. Material-specific published keys for (const PublishedMaterialEntry &entry : material_keys) { for (const std::string &key : entry.keys) { const std::string base_key = key.substr(0, key.find('#')); - if (!base_key.empty()) + if (!base_key.empty()) { base_keys_to_include.insert(base_key); + mask_exempt_keys.insert(base_key); + } + } + // 4b. "Full publish" entries carry the entire slot; the values of the covered keys are + // masked to the author's slot on export (see the copy loop below). + for (const std::string &key : entry.full_keys) { + const std::string base_key = key.substr(0, key.find('#')); + if (base_key.empty()) + continue; + base_keys_to_include.insert(base_key); + if (entry.slot >= 0) + full_slot_map[base_key].insert(entry.slot); } } + // Mask a vector option's slots that are not author-published: copy the option default over + // each non-published index. Keys without an option default are left unmasked (the file then + // carries the whole vector, matching the partial-publish behavior). + auto mask_slots = [](ConfigOption &opt, const ConfigOptionDef *def, const std::set &keep_slots) { + auto *vec = dynamic_cast(&opt); + if (vec == nullptr || vec->size() == 0 || def == nullptr || !def->default_value) + return; + if (def->default_value->type() != opt.type()) + return; + const auto *default_vec = dynamic_cast(def->default_value.get()); + if (default_vec == nullptr || default_vec->empty()) + return; + for (size_t idx = 0; idx < vec->size(); ++idx) + if (keep_slots.count(static_cast(idx)) == 0) + vec->set_at(def->default_value.get(), idx, 0); + }; + // Copy selected options from full_config into filtered config for (const std::string &key : base_keys_to_include) { - if (const ConfigOption *opt = full_config.option(key)) - filtered.set_key_value(key, opt->clone()); + if (const ConfigOption *opt = full_config.option(key)) { + ConfigOption *cloned = opt->clone(); + if (mask_exempt_keys.count(key) == 0) { + const auto it = full_slot_map.find(key); + if (it != full_slot_map.end() && !it->second.empty()) + mask_slots(*cloned, print_config_def.get(key), it->second); + } + filtered.set_key_value(key, cloned); + } } return filtered; diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index 6525fbb66e..aadf0d3234 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -52,8 +52,30 @@ struct PublishedMaterialEntry { // entries apply to every matching receiver preset. int slot{-1}; std::vector keys; + // "Full Publish": the entire filament preset of this slot is serialized (see full_keys), + // not just the individually selected keys. On load the type gate (publish_type_value) + // decides whether the receiver keeps its material (type match) or is replaced; a full + // entry carries no partial keys. + bool full{false}; + // All non-structural filament keys of the author's slot preset, present when full is true. + // Values travel in the file config, masked to the author's slot index. + std::vector full_keys; + // Vendor-agnostic, curated (MaterialType) filament type the author requires for this slot. + // On load the receiver's slot material is matched against it; on mismatch the slot is + // replaced with a same-type filament from the receiver's library. + bool publish_type{false}; + std::string publish_type_value; + // Required filament colour for this slot, applied on load regardless of the type match. + bool publish_color{false}; + std::string color; }; +// Normalizes a filament type string against the curated MaterialType list: an exact match +// wins, then the value is stripped after its first space ("PLA High Speed" -> "PLA"); a +// value still not recognized is returned unchanged. Shared by the Publish dialog's type row +// default and by the published-3MF loader's type matching. +std::string normalize_filament_type(const std::string& type); + // Constructs a minimal DynamicPrintConfig for a published 3MF export containing only the // author-selected published keys, material keys, material identity fields, and plate geometry keys. class DynamicPrintConfig; diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index ed513c425f..df69fa5434 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -174,6 +174,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl + "O", L("Open Project") }, { ctrl + "S", L("Save Project") }, { ctrl + shift + "S", L("Save Project as")}, + { ctrl + shift + "E", L("Publish") }, // File>Import { ctrl + "I", L("Import geometry data from STL/STEP/3MF/OBJ/AMF files") }, // File>Export diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index abca800277..3cb246529f 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -741,6 +741,10 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ if (m_plater) { m_plater->add_file(); } return; } + if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'E') { + if (can_export_model()) publish_project(); + return; + } evt.Skip(); }); @@ -1728,6 +1732,16 @@ bool MainFrame::save_project_as(const wxString& filename) return ret; } +void MainFrame::publish_project() +{ + if (m_plater == nullptr) + return; + PublishSettingsDialog dlg(this); + if (dlg.ShowModal() != wxID_OK) + return; + m_plater->export_published_3mf(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); +} + bool MainFrame::can_upload() const { return true; @@ -2820,19 +2834,14 @@ void MainFrame::init_menubar_as_editor() // BBS: publish fileMenu->AppendSeparator(); - auto publish_handler = [this](wxCommandEvent&) { - if (!m_plater) return; - PublishSettingsDialog dlg(this); - if (dlg.ShowModal() != wxID_OK) return; - m_plater->export_published_3mf(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); - }; + auto publish_handler = [this](wxCommandEvent&) { publish_project(); }; #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots, _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), publish_handler, "menu_publish", nullptr, [this](){return can_export_model(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots, _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), publish_handler, "", nullptr, [this](){return can_export_model(); }, this); #endif diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index a614783c31..040b9447e8 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -340,6 +340,8 @@ public: bool can_upload() const; void save_project(); bool save_project_as(const wxString& filename = wxString()); + // Open the Publish dialog and export the selected settings as a published 3MF. + void publish_project(); void add_to_recent_projects(const wxString& filename); void get_recent_projects(boost::property_tree::wptree &tree, int images); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 82dd38fe97..28ba184d1c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5449,7 +5449,7 @@ struct Plater::priv BoundingBox scaled_bed_shape_bb() const; // BBS: backup & restore - std::vector load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi = false); + std::vector load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi = false, bool* published_out = nullptr); std::vector load_model_objects(const ModelObjectPtrs& model_objects, bool allow_negative_z = false, bool split_object = false, bool auto_drop = true); fs::path get_export_file_path(GUI::FileType file_type); @@ -6759,7 +6759,7 @@ void read_binary_stl(const std::string& filename, std::string& model_id, std::st } // BBS: backup & restore -std::vector Plater::priv::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi) +std::vector Plater::priv::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi, bool* published_out) { std::vector empty_result; bool dlg_cont = true; @@ -7257,6 +7257,22 @@ std::vector Plater::priv::load_files(const std::vector& input_ for (const auto &k : *entry_keys_it) if (k.is_string()) entry.keys.emplace_back(k.get()); + // Filament-publishing-v2 fields; absent in legacy files. + if (m.contains("full") && m["full"].is_boolean()) + entry.full = m["full"].get(); + const auto entry_full_keys_it = m.find("full_keys"); + if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) + for (const auto &k : *entry_full_keys_it) + if (k.is_string()) + entry.full_keys.emplace_back(k.get()); + if (m.contains("publish_type") && m["publish_type"].is_boolean()) + entry.publish_type = m["publish_type"].get(); + if (m.contains("type") && m["type"].is_string()) + entry.publish_type_value = m["type"].get(); + if (m.contains("publish_color") && m["publish_color"].is_boolean()) + entry.publish_color = m["publish_color"].get(); + if (m.contains("color") && m["color"].is_string()) + entry.color = m["color"].get(); published_config.material_keys.emplace_back(std::move(entry)); } } catch (...) { @@ -7266,6 +7282,18 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } + // BBS: a "published" 3MF behaves like a new project once loaded: the file's path + // must not become the project filename (Save/Ctrl-S would otherwise overwrite the + // shared file), and the published metadata is consumed by the overlay above and + // stripped so a later save produces a normal, unpublished 3MF. + if (published_out != nullptr && published_config.published) + *published_out = true; + if (published_config.published && load_config && this->model.model_info != nullptr) { + this->model.model_info->metadata_items.erase("published"); + this->model.model_info->metadata_items.erase("published_keys"); + this->model.model_info->metadata_items.erase("published_material_keys"); + } + if (load_config) { if (!config.empty()) { Preset::normalize(config); @@ -7380,6 +7408,16 @@ std::vector Plater::priv::load_files(const std::vector& input_ notify_manager->bbl_show_3mf_warn_notification(message); } + // BBS: notify the user about slot materials that were replaced while + // loading a published project (type mismatch / no same-type match). + if (!published_config.material_replacements.empty()) { + NotificationManager *notify_manager = q->get_notification_manager(); + std::string message = _u8L("Some filament slots were changed to match the published materials:"); + for (const std::string &replacement : published_config.material_replacements) + message += "\n-" + replacement; + notify_manager->bbl_show_3mf_warn_notification(message); + } + ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); if (bed_type_opt != nullptr) { BedType bed_type = (BedType)bed_type_opt->getInt(); @@ -7519,7 +7557,13 @@ std::vector Plater::priv::load_files(const std::vector& input_ dynamic_map->value = false; } // Update filament combobox after loading config - wxGetApp().plater()->sidebar().update_presets(Preset::TYPE_FILAMENT); + if (published_config.published) { + q->update_filament_colors_in_full_config(); + wxGetApp().plater()->sidebar().update_all_preset_comboboxes(); + wxGetApp().plater()->sidebar().update_dynamic_filament_list(); + } else { + wxGetApp().plater()->sidebar().update_presets(Preset::TYPE_FILAMENT); + } // The loaded project supplies nozzle_volume_type; refresh the sidebar // nozzle-count badges against it. if (auto *nozzle_volumes = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")) { @@ -13244,14 +13288,15 @@ void Plater::load_project(wxString const& filename2, if (strategy & LoadStrategy::Restore) input_paths.push_back(into_u8(originfile)); - std::vector res = load_files(input_paths, strategy); + bool loaded_published = false; + std::vector res = load_files(input_paths, strategy, false, &loaded_published); reset_project_dirty_initial_presets(); update_project_dirty_from_presets(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); // if res is empty no data has been loaded - if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) { + if (!res.empty() && !loaded_published && (load_restore || !(strategy & LoadStrategy::Silence))) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { @@ -13263,6 +13308,15 @@ void Plater::load_project(wxString const& filename2, BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " using ecported set project filename: " << filename; p->set_project_filename(filename); } + else if (loaded_published) { + // A "published" 3MF loads as a new project: the shared file's path must not become + // the project filename, so Save/Ctrl-S prompts for a destination instead of + // overwriting the published file. reset() above already cleared the project name + // and folder; restore the default new-project title and keep the file in recents. + p->set_project_name(_L("Untitled")); + if (!filename.IsEmpty()) + wxGetApp().mainframe->add_to_recent_projects(filename); + } } @@ -14918,12 +14972,12 @@ void Plater::force_update_all_plate_thumbnails() } // BBS: backup -std::vector Plater::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi) { +std::vector Plater::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi, bool* published_out) { //BBS: wish to reset state when load a new file p->m_slice_all_only_has_gcode = false; //BBS: wish to reset all plates stats item selected state when load a new file p->preview->get_canvas3d()->reset_select_plate_toolbar_selection(); - return p->load_files(input_files, strategy, ask_multi); + return p->load_files(input_files, strategy, ask_multi, published_out); } // To be called when providing a list of files to the GUI slic3r on command line. @@ -16186,7 +16240,10 @@ int Plater::export_published_3mf(const std::vector& published_keys, j.push_back(key); nlohmann::json jm = nlohmann::json::array(); for (const Slic3r::PublishedMaterialEntry& e : material_keys) - jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}}}, {"slot", e.slot}, {"keys", e.keys} }); + jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}}}, {"slot", e.slot}, {"keys", e.keys}, + {"full", e.full}, {"full_keys", e.full_keys}, + {"publish_type", e.publish_type}, {"type", e.publish_type_value}, + {"publish_color", e.publish_color}, {"color", e.color} }); Model& model = this->model(); // Remember the previous metadata state so it can be restored after the export, keeping the diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index d29e86a4fa..d6ec283409 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -383,7 +383,7 @@ public: bool preview_zip_archive(const boost::filesystem::path& archive_path); // BBS: restore - std::vector load_files(const std::vector& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false); + std::vector load_files(const std::vector& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false, bool* published_out = nullptr); // To be called when providing a list of files to the GUI slic3r on command line. std::vector load_files(const std::vector& input_files, LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig, bool ask_multi = false); // to be called on drag and drop diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 63333ea451..5baff8282c 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -290,6 +290,25 @@ void PublishSettingsDialog::build_option_model() const PublishMaterialIdentity identity = material_identity(slot, full); const wxString title = material_title(slot, bundle, full); const size_t category_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, slot, identity); + + // Filament-publishing-v2 rows: the author may require a filament colour and/or + // a vendor-agnostic material type for this slot. They live in their own + // optgroup so they stay visually separated from the setting rows. + { + const size_t req_sub = subcategory_index_for(category_index, _L("Material"), "custom-gcode_filament"); + std::string hex; + if (const auto* colours = full.opt("filament_colour")) + if (slot < colours->size()) + hex = colours->get_at(slot); + add_row_ui("filament_colour", _L("Color"), from_u8(hex), wxString(), category_index, req_sub, RowKind::Color); + std::string type; + if (const auto* types = full.opt("filament_type")) + if (slot < types->size()) + type = types->get_at(slot); + add_row_ui("filament_type", _L("Type"), from_u8(normalize_filament_type(type)), wxString(), category_index, req_sub, + RowKind::Type); + } + // A material section must not repeat a key; the same key may // appear in other material sections - that is intended. std::set material_added; @@ -371,6 +390,10 @@ void PublishSettingsDialog::build_option_model() dirty_base.insert(n == std::string::npos ? key : key.substr(0, n)); } for (Row& row : m_rows) { + // The Color/Type requirement rows are not "dirty overrides": they are never + // auto-checked by the dirty pre-check. + if (row.kind != RowKind::Setting) + continue; std::string base = row.key.substr(0, row.key.find('#')); row.dirty = dirty_base.count(base) > 0; if (row.dirty) { @@ -379,24 +402,11 @@ void PublishSettingsDialog::build_option_model() } } - // Wire the inner-page tri-state headers: clicking a header toggles all its children; - // toggling any child re-syncs its header. Bind by index so the lambdas stay - // valid even if the vectors are reallocated later. - for (size_t c = 0; c < m_categories.size(); ++c) { - if (m_categories[c].master_check != nullptr) - m_categories[c].master_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_master_toggle(c); }); - if (m_categories[c].header != nullptr) - m_categories[c].header->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_category_toggle(c); }); - for (size_t r : m_categories[c].rows) - m_rows[r].check->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { update_all_headers(); }); - update_category_header(m_categories[c]); - } - - // Material pages start gated (master OFF): their rows and tri-state are - // disabled until the author opts the material in. + // Wire the "Full Publish" checkboxes: toggling one disables/enables the material's + // rows. Bind by index so the lambda stays valid even if the vector is reallocated later. for (size_t c = 0; c < m_categories.size(); ++c) - if (m_categories[c].section == Section::Material) - on_master_toggle(c); + if (m_categories[c].full_check != nullptr) + m_categories[c].full_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_full_toggle(c); }); // No filter is active at startup: every row matches until the user types. for (Row& row : m_rows) @@ -502,13 +512,13 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); } - category.master_check = new wxCheckBox(category.page, wxID_ANY, title); - category.master_check->SetFont(Label::Head_14); - category.master_check->SetToolTip(_L("Export this material")); - header_sizer->Add(category.master_check, 0, wxALIGN_CENTER_VERTICAL); - category.header = new wxCheckBox(category.page, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCHK_3STATE); - category.header->SetToolTip(_L("Select/deselect all settings in this material")); - header_sizer->Add(category.header, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(6)); + category.title_label = new wxStaticText(category.page, wxID_ANY, title); + category.title_label->SetFont(Label::Head_14); + header_sizer->Add(category.title_label, 0, wxALIGN_CENTER_VERTICAL); + category.full_check = new wxCheckBox(category.page, wxID_ANY, _L("Full Publish")); + category.full_check->SetFont(Label::Body_13); + category.full_check->SetToolTip(_L("Embed the entire filament of this slot in the 3MF file")); + header_sizer->Add(category.full_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(10)); page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); } @@ -575,7 +585,8 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, const wxString& value, const wxString& unit, size_t category_index, - size_t subcategory_index) + size_t subcategory_index, + RowKind kind) { Category& category = m_categories[category_index]; Row row; @@ -583,6 +594,7 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, row.label = label; row.value = value; row.unit = unit; + row.kind = kind; row.category = category.title; row.subcategory = category.subs[subcategory_index].title; row.section = category.section; @@ -595,82 +607,38 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, Row& current = m_rows[row_index]; current.check = new wxCheckBox(category.scroll, wxID_ANY, label); current.check->SetFont(Label::Body_13); + auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); + row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); + // The value is read-only text (incl. the Type row: the published type is the slot's + // normalized type, the author cannot pick a different one here). current.value_label = new wxStaticText(category.scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); current.value_label->SetFont(Label::Body_13); current.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); current.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); + if (kind == RowKind::Color && !value.IsEmpty()) { + if (wxBitmap* chip = get_extruder_color_icon(value.ToStdString(), "", FromDIP(12), FromDIP(12))) { + current.color_chip = new wxStaticBitmap(category.scroll, wxID_ANY, *chip); + row_sizer->Add(current.color_chip, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + } + } + row_sizer->Add(current.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); if (!unit.IsEmpty()) { current.unit_label = new wxStaticText(category.scroll, wxID_ANY, unit); current.unit_label->SetFont(Label::Body_13); current.unit_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); - } - auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); - row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); - row_sizer->Add(current.value_label, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); - if (current.unit_label != nullptr) row_sizer->Add(current.unit_label, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + } current.item = category.list_sizer->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(38)); category.rows.push_back(row_index); category.subs[subcategory_index].rows.push_back(row_index); } -void PublishSettingsDialog::on_category_toggle(size_t category_index) +void PublishSettingsDialog::on_full_toggle(size_t category_index) { Category& cat = m_categories[category_index]; - // Defensive: a gated material header is disabled and cannot fire. - if (cat.section == Section::Material && !cat.master) - return; - // A click on the header toggles between "all" and "none": if every child is - // checked, uncheck all; otherwise check all. - bool all_checked = true; + cat.full = cat.full_check->GetValue(); for (size_t r : cat.rows) - if (!m_rows[r].check->GetValue()) { - all_checked = false; - break; - } - bool value = !all_checked; - for (size_t r : cat.rows) - m_rows[r].check->SetValue(value); - update_all_headers(); -} - -void PublishSettingsDialog::on_master_toggle(size_t category_index) -{ - Category& cat = m_categories[category_index]; - cat.master = cat.master_check->GetValue(); - for (size_t r : cat.rows) - m_rows[r].check->Enable(cat.master); - cat.header->Enable(cat.master); - update_all_headers(); -} - -void PublishSettingsDialog::update_all_headers() -{ - for (Category& category : m_categories) - update_category_header(category); -} - -void PublishSettingsDialog::update_category_header(Category& category) -{ - if (category.header == nullptr) - return; - // A gated material section's tri-state must not reflect the preserved - // (greyed-out) row values. - if (category.section == Section::Material && !category.master) { - category.header->Set3StateValue(wxCHK_UNCHECKED); - return; - } - int checked = 0; - for (size_t r : category.rows) - if (m_rows[r].check->GetValue()) - ++checked; - - if (checked == 0) - category.header->Set3StateValue(wxCHK_UNCHECKED); - else if (checked == static_cast(category.rows.size())) - category.header->Set3StateValue(wxCHK_CHECKED); - else - category.header->Set3StateValue(wxCHK_UNDETERMINED); + m_rows[r].check->Enable(!cat.full); } void PublishSettingsDialog::set_row_bold(Row& row, bool bold) @@ -845,7 +813,6 @@ void PublishSettingsDialog::select_all(bool value) for (Row& row : m_rows) if (row.check->IsEnabled()) row.check->SetValue(value); - update_all_headers(); } bool PublishSettingsDialog::row_is_visible(const Row& row) const @@ -876,9 +843,8 @@ void PublishSettingsDialog::select_visible(bool value) // re-enters apply_filter() - that is fine, the rows above were already // toggled and the trailing call below is idempotent. m_filter_ctrl->ChangeValue(""); - apply_filter(""); // resync visibility, headers and the All/None bar + apply_filter(""); // resync visibility and the All/None bar } - update_all_headers(); } void PublishSettingsDialog::show_menu(wxMouseEvent& evt) @@ -942,24 +908,67 @@ std::vector PublishSettingsDialog::GetPublishedM { std::vector out; for (const Category& cat : m_categories) { - // Only opted-in materials export their keys. - if (cat.section != Section::Material || !cat.master) + if (cat.section != Section::Material) continue; Slic3r::PublishedMaterialEntry entry; entry.filament_type = cat.filament_type; entry.filament_vendor = cat.filament_vendor; entry.filament_id = cat.filament_id; entry.slot = static_cast(cat.filament_slot); - for (size_t r : cat.rows) - if (m_rows[r].check->GetValue()) - entry.keys.push_back(m_rows[r].key); - // A section without any checked key carries no information for the writer. - if (!entry.keys.empty()) + // "Full Publish": the entire filament preset of the slot is embedded; type and color + // are implicitly published, and the per-key rows are disabled and their state is ignored. + if (cat.full_check != nullptr && cat.full_check->GetValue()) { + entry.full = true; + entry.full_keys = full_keys_for_slot(); + entry.publish_type = true; + entry.publish_type_value = normalize_filament_type(cat.filament_type); + for (size_t r : cat.rows) { + const Row& row = m_rows[r]; + if (row.kind == RowKind::Color && !row.value.IsEmpty()) { + entry.publish_color = true; + entry.color = row.value.ToStdString(); + } + } + out.push_back(std::move(entry)); + continue; + } + for (size_t r : cat.rows) { + const Row& row = m_rows[r]; + if (!row.check->GetValue()) + continue; + if (row.kind == RowKind::Color) { + entry.publish_color = true; + entry.color = row.value.ToStdString(); + } else if (row.kind == RowKind::Type) { + entry.publish_type = true; + entry.publish_type_value = row.value.ToStdString(); + } else { + entry.keys.push_back(row.key); + } + } + // A material with only setting keys but none checked, or with nothing selected at all, + // carries no information for the writer. + if (!entry.keys.empty() || entry.publish_type || entry.publish_color) out.push_back(std::move(entry)); } return out; } +std::vector PublishSettingsDialog::full_keys_for_slot() const +{ + // The canonical filament preset keys, minus the structural keys the published overlay must + // never touch (inherits, compatibility, *_settings_id, ...), plus filament_colour (not a + // member of Preset::filament_options). The values travel in the exported config, masked to + // this slot, and are applied on load onto the receiver's slot. + const std::set& denylist = publish_structural_keys(); + std::vector keys; + for (const std::string& key : Preset::filament_options()) + if (denylist.count(key) == 0) + keys.emplace_back(key); + keys.emplace_back("filament_colour"); + return keys; +} + void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) { // Rescale toolbar bitmaps and icons; collapse chevrons are vector-drawn and repaint themselves. @@ -974,10 +983,10 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) cat.icon_bmp.msw_rescale(); cat.icon->SetBitmap(cat.icon_bmp.bmp()); } - if (cat.header != nullptr) - cat.header->Refresh(); - if (cat.master_check != nullptr) - cat.master_check->Refresh(); + if (cat.full_check != nullptr) + cat.full_check->Refresh(); + if (cat.title_label != nullptr) + cat.title_label->Refresh(); if (cat.filament_color_chip != nullptr) { std::string hex; const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); @@ -994,6 +1003,14 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) for (SectionGroup& section : m_sections) section.tabs->Rescale(); + // Refresh the per-row Color chips at the new DPI. + for (Row& row : m_rows) { + if (row.color_chip != nullptr && !row.value.IsEmpty()) { + if (wxBitmap* chip = get_extruder_color_icon(row.value.ToStdString(), "", FromDIP(12), FromDIP(12))) + row.color_chip->SetBitmap(*chip); + } + } + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); for (size_t category_index = 0; category_index < m_categories.size(); ++category_index) { const Category& category = m_categories[category_index]; diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 949c08a81b..70b1dc8a2d 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -59,6 +59,11 @@ private: // One selectable setting row: a checkbox (setting name) plus a value label // and a (optional) grey unit label. key is the full config key and may carry // a "#N" variant suffix (print/printer rows); material rows carry the base key. + enum class RowKind { + Setting, // a regular setting key + Color, // material colour requirement (filament_colour) + Type, // material type requirement (read-only text) + }; struct Row { std::string key; @@ -69,6 +74,7 @@ private: wxString unit; wxString section_title; // outer tab title, for filter matching Section section{Section::Print}; + RowKind kind{RowKind::Setting}; size_t outer_index{0}; size_t inner_index{0}; size_t subcategory_index{0}; @@ -77,6 +83,7 @@ private: wxCheckBox* check{nullptr}; wxStaticText* value_label{nullptr}; wxStaticText* unit_label{nullptr}; + wxStaticBitmap* color_chip{nullptr}; // Color rows only; swatch next to the value wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in its tab list sizer }; @@ -89,7 +96,7 @@ private: std::vector rows; }; - // An inner TabCtrl page with its select-all/material controls and content. + // An inner TabCtrl page with its material controls and content. struct Category { wxString title; @@ -106,11 +113,11 @@ private: ScalableBitmap icon_bmp; // scalable bitmap for DPI changes wxStaticBitmap* icon{nullptr}; wxStaticBitmap* filament_color_chip{nullptr}; - wxCheckBox* header{nullptr}; // material select-all tri-state; null for Printer/Process - // Material opt-in: the master checkbox carries the material title and - // gates whether this material's keys may be exported. - bool master{false}; - wxCheckBox* master_check{nullptr}; + wxStaticText* title_label{nullptr}; // material title (static text, Full Publish carries the label elsewhere) + // "Full Publish": serializing the entire filament preset of this slot. While checked, + // the slot's rows (incl. Color/Type) are disabled. + bool full{false}; + wxCheckBox* full_check{nullptr}; // Material identity, only for Section::Material categories. std::string filament_type; std::string filament_vendor; @@ -118,7 +125,7 @@ private: // The author's 0-based filament slot this material section represents. size_t filament_slot{0}; std::vector subs; - std::vector rows; // flattened rows, for the tri-state math + std::vector rows; // flattened rows of this category }; // One outer TabCtrl page. Category entries are its inner tabs. @@ -140,25 +147,23 @@ private: void select_all(bool value); void select_visible(bool value); void show_menu(wxMouseEvent& evt); - void update_category_header(Category& category); void set_row_bold(Row& row, bool bold); - void on_category_toggle(size_t category_index); - // Material opt-in toggled: enables/disables the material's rows + tri-state - // and resyncs the header. - void on_master_toggle(size_t category_index); + // "Full Publish" toggled: disables/enables the material's rows. + void on_full_toggle(size_t category_index); // Return/create the fixed outer page for a Section kind. size_t section_group_for(Section kind); size_t category_index_for(const wxString& title, Section section, const std::string& icon_name, size_t group, size_t source_index, const PublishMaterialIdentity& identity = PublishMaterialIdentity()); size_t subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon); void add_row_ui(const std::string& key, const wxString& label, const wxString& value, const wxString& unit, - size_t category_index, size_t subcategory_index); + size_t category_index, size_t subcategory_index, RowKind kind = RowKind::Setting); + // The non-structural filament keys of a slot's preset, for a "Full Publish" entry. + std::vector full_keys_for_slot() const; void save_scroll_position(Category& category); void show_outer_page(size_t section_index); void show_inner_page(size_t section_index, int inner_index); void on_outer_tab_changed(wxCommandEvent& event); void on_inner_tab_changed(size_t section_index, wxCommandEvent& event); - void update_all_headers(); bool row_is_visible(const Row& row) const; void apply_visibility(); void bind_tab_events(); diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index daf46c3834..d9d6833a5a 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -752,3 +752,98 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded } } } + +// Filament-publishing v2: a "full publish" entry carries the whole slot's key list. Its vector +// options keep only the author's slot value; the other slots are masked to their defaults so a +// slot-1 full publish does not leak slot 0's data into the file. +SCENARIO("Full-publish entries filter the whole slot and mask the other slots", "[3mf]") { + GIVEN("a full print configuration with two filament slots") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt("filament_diameter")->values = { 1.75, 1.75 }; + full_cfg.opt("filament_colour")->values = { "#111111", "#222222" }; + // filament_flow_ratio carries a non-empty option default (1.0) of the same type, so the + // mask can restore it on the non-published slot. + full_cfg.opt("filament_flow_ratio", true)->values = { 1.02, 0.98 }; + + PublishedMaterialEntry full_entry; + full_entry.slot = 1; + full_entry.full = true; + full_entry.full_keys = { "filament_flow_ratio" }; + + WHEN("filtering with a full entry for slot 1") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { full_entry }); + + THEN("the full key list is present with the author's slot value") { + REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); + REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[1] == 0.98); + } + THEN("the non-published slot is masked to its default") { + REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[0] == 1.0); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + +// Filament-publishing v2: the extended per-entry fields (full dump list, published type and +// colour) travel inside the published_material_keys metadata and round-trip unchanged. +SCENARIO("Published 3MF round-trips the filament-publishing-v2 material metadata", "[3mf]") { + GIVEN("a model carrying extended published material keys metadata") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + const std::string material_keys_json = + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; + + model.model_info = std::make_shared(); + model.model_info->metadata_items["published_material_keys"] = material_keys_json; + + ScopedTemporaryDir backup_dir("orca_pub_mat2"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored to and reloaded from a .3mf") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the extended material metadata round-trips unchanged") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); + + // The value must parse back with every filament-publishing-v2 field intact. + nlohmann::json entries = nlohmann::json::parse(material_keys_json); + REQUIRE(entries.is_array()); + REQUIRE(entries.size() == 1); + REQUIRE(entries[0]["full"].get() == true); + REQUIRE(entries[0]["full_keys"].is_array()); + REQUIRE(entries[0]["full_keys"].size() == 2); + REQUIRE(entries[0]["publish_type"].get() == true); + REQUIRE(entries[0]["type"] == "PLA"); + REQUIRE(entries[0]["publish_color"].get() == false); + } + release_PlateData_list(dst_plates); + } + } +} diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index fc61083896..f1d2c79f95 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -784,6 +784,409 @@ TEST_CASE("Published 3MF applies material retraction keys onto the receiver's ma CHECK(pub.skipped_keys.empty()); } +// Filament-publishing v2: a "full publish" slot serializes the entire filament of the slot. On +// load the slot is matched positionally against the published (curated, vendor-agnostic) type: +// a matching receiver type leaves the slot untouched, a mismatched type replaces it with the +// first same-type visible preset (applying the author's full values on top), and a slot whose +// type cannot be found in the receiver's library falls back to the author's values in-memory. +TEST_CASE("Published 3MF full-published slots replace or ignore the receiver material by type", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Two author slots; filament_diameter drives the normalized per-slot vector sizes. + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PETG" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99" }; + config.option("filament_retraction_length", true)->values = { 0.9, 1.2 }; + return config; + }; + // The full dump of slot 0, publishing the whole filament as type "ABS". + auto make_full_abs_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "ABS"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + + SECTION("type match leaves a full-published slot untouched") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA", "My PLA" }; + + PublishedMaterialEntry full = make_full_abs_entry(); + full.publish_type_value = "PLA"; // author requires PLA, receiver slot is PLA + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { full }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver keeps its own material and its own values: the full dump is ignored. + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); + } + + SECTION("type mismatch replaces the slot with the first same-type preset and applies the full dump") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &abs = add_inmemory_preset(bundle.filaments, "My ABS"); + abs.config.opt_string("filament_type", 0u) = "ABS"; + abs.config.opt("filament_retraction_length", true)->values = { 0.3 }; + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_abs_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + CHECK(bundle.filament_presets[0] == "My ABS"); + // The author's slot-0 full values were applied onto the replacement. + CHECK(bundle.filaments.find_preset("My ABS")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + } + + SECTION("no same-type match creates a temporary project-embedded custom preset") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_abs_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // No ABS in the library: a temporary embedded preset is created and selected. + CHECK(bundle.filament_presets[0] == "ABS (Published)"); + Preset *created = bundle.filaments.find_preset("ABS (Published)"); + REQUIRE(created != nullptr); + CHECK(created->is_project_embedded); + CHECK(created->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // The original user preset remains untouched. Re-fetch by name: load_preset's deque + // insertion relocated the presets, so the pre-load `pla` reference points at the + // newly created "ABS (Published)" slot. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + } +} + +// Filament-publishing v2: a partially-published slot can carry a curated type and/or colour. +// The colour is applied regardless of the type match; a type mismatch with no same-type +// replacement keeps the receiver's material and reports the slot's keys as skipped. The +// receiver's slot count grows only as far as the highest slot with published content. +TEST_CASE("Published 3MF partial slots apply colour and gate keys by the published type", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PETG" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99" }; + config.option("filament_retraction_length", true)->values = { 0.9, 1.2 }; + return config; + }; + + SECTION("matching type applies the keys and the colour") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Type matched: keys applied, colour applied. + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); + } + + SECTION("type mismatch without a replacement keeps the material and skips the keys") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "ABS"; // no ABS in the receiver library + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Colour still applies (type-independent); the material is kept and the keys skipped. + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); + CHECK(pub.material_replacements.empty()); + } + + SECTION("receiver slot count grows to fit the highest published slot and assigns matching type preset") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.8 }; + // The receiver has a single slot; the file carries two, only slot 1 is published. + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.publish_type = true; + entry.publish_type_value = "PETG"; + entry.keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The slot list was grown so author slot 1 has a material, automatically assigning the PETG preset. + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[1] == "My PETG"); + } +} + +// The receiver's slot list grows only as far as the highest author slot that carries published +// content: a 4-filament file whose author published nothing (or only a low slot) must not pull +// filler materials into the receiver's setup, and the receiver never grows to the file's count. +TEST_CASE("Published 3MF grows the receiver's slots only as far as the published slots", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Four author slots (a 4-filament model). + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + auto add_pla_preset = [](PresetBundle &bundle) { + Preset &preset = add_inmemory_preset(bundle.filaments, "My PLA"); + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt("filament_colour", true)->values = { "#123456" }; + return &preset; + }; + auto make_color_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.publish_color = true; + entry.color = "#ABCDEF"; + return entry; + }; + + // A file whose author published nothing for any slot: the receiver's setup is untouched. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; // no material entries at all + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#123456" }); + CHECK(pub.skipped_keys.empty()); + } + + // Only slot 0 published: a single-slot receiver keeps its single slot; the file's other + // three slots pull nothing in. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + } + + // Slot 3 published: the receiver grows to 4 so the published slot exists; the filler is + // the receiver's own first visible material. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + const std::string filler = bundle.filaments.first_visible().name; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(3) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + CHECK(bundle.filament_presets[3] == filler); + } + + // Slots 0 and 2 published: the receiver grows to 3, never to the file's 4. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0), make_color_entry(2) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + } +} + +// The GUI displays the edited preset, a snapshot of the selected collection preset taken at +// selection time. The published overlay modifies the collection presets in place, so the load +// must re-select the first slot's filament (mirroring a normal project load) for the applied +// colour/type/keys - and slot replacements - to surface in the GUI. +TEST_CASE("Published 3MF refreshes the edited preset so the applied material values surface", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + SECTION("the edited preset carries the applied colour and keys") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + // Mirror the GUI: the displayed preset is the collection's edited preset. + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + const Preset &edited = bundle.filaments.get_edited_preset(); + CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("a slot replacement is reflected in the edited preset") { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &abs = add_inmemory_preset(bundle.filaments, "My ABS"); + abs.config.opt_string("filament_type", 0u) = "ABS"; + abs.config.opt("filament_retraction_length", true)->values = { 0.3 }; + bundle.filament_presets = { "My PLA" }; + REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); + + PublishedMaterialEntry entry = make_entry(); + entry.publish_type_value = "ABS"; // mismatch: replaced by the library's ABS + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets[0] == "My ABS"); + // The edited preset now displays the replacement with the author's values on top. + const Preset &edited = bundle.filaments.get_edited_preset(); + CHECK(edited.name == "My ABS"); + CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + } +} + // Material-qualified keys whose receiver-side material match is missing or ambiguous must be // reported as skipped (material-qualified) and never applied; a single unqualified type // fallback still applies. From b82d4f3af8ab729a72912b8ddd78f52718fbcec4 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 18 Aug 2026 15:11:00 +0800 Subject: [PATCH 009/162] Fix issues with filament import when receiver has fewer filament slots than the author's 3MF format --- src/libslic3r/PresetBundle.cpp | 150 ++++++++++++++++-- .../libslic3r/test_preset_bundle_loading.cpp | 78 ++++++++- 2 files changed, 217 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index c58e6c30e7..fd3d4d24b6 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5047,15 +5047,30 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (has_new_semantics) { // Defensive cap: never exceed the file's own filament count. target_slots = std::min(target_slots, num_filaments); + // Slots that carry published content (full/type/colour) must reference a stored + // preset that no other slot shares: the overlay mutates stored presets in place + // (colour and keys), so a shared preset would leak one slot's published values + // into every slot that references it. + std::set published_slots; + for (const PublishedMaterialEntry &entry : published_config->material_keys) + if ((entry.full || entry.publish_type || entry.publish_color) && entry.slot >= 0) + published_slots.insert(entry.slot); + std::set used_preset_names(this->filament_presets.begin(), this->filament_presets.end()); + // Mirror first_visible_idx()'s start index so suppressed default presets are + // never picked as a slot material. + const size_t first_candidate = this->filaments.is_default_suppressed() ? this->filaments.num_default_presets() : 0; while (this->filament_presets.size() < target_slots) { const size_t new_slot_idx = this->filament_presets.size(); std::string initial_preset; - // Proactively assign matching candidate preset if this slot carries a published type - for (const PublishedMaterialEntry &entry : published_config->material_keys) { - if (entry.slot == static_cast(new_slot_idx) && entry.publish_type && !entry.publish_type_value.empty()) { + if (published_slots.count(static_cast(new_slot_idx)) != 0) { + // Proactively assign a distinct matching candidate preset if this slot + // carries a published type... + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + if (entry.slot != static_cast(new_slot_idx) || !entry.publish_type || entry.publish_type_value.empty()) + continue; for (size_t i = 0; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible) + if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) continue; if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) == entry.publish_type_value) { initial_preset = candidate.name; @@ -5064,11 +5079,114 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } break; } + // ...otherwise any visible preset not already used by another slot. + if (initial_preset.empty()) { + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) + continue; + initial_preset = candidate.name; + break; + } + } } if (initial_preset.empty()) - initial_preset = this->filaments.first_visible().name; + // Unpublished filler slot, or every visible preset is already used: repeat + // the receiver's last preset, mirroring the "Add one filament" behaviour + // (PresetBundle::set_num_filaments). + initial_preset = this->filament_presets.empty() ? this->filaments.first_visible().name + : this->filament_presets.back(); this->filament_presets.emplace_back(initial_preset); + used_preset_names.insert(initial_preset); } + // Slots that were grown before this block (e.g. by update_multi_material_filament_presets + // matching the extruder count) may still alias another slot; re-point them at a + // distinct preset. Slot 0, the receiver's own material, is never re-assigned. + for (size_t slot = 1; slot < this->filament_presets.size(); ++slot) { + if (published_slots.count(static_cast(slot)) == 0) + continue; + bool shared = false; + for (size_t other = 0; other < this->filament_presets.size(); ++other) + if (other != slot && this->filament_presets[other] == this->filament_presets[slot]) { + shared = true; + break; + } + if (!shared) + continue; + std::string replacement; + for (const PublishedMaterialEntry &entry : published_config->material_keys) { + if (entry.slot != static_cast(slot) || !entry.publish_type || entry.publish_type_value.empty()) + continue; + for (size_t i = 0; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) + continue; + if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) == entry.publish_type_value) { + replacement = candidate.name; + break; + } + } + break; + } + if (replacement.empty()) { + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) + continue; + replacement = candidate.name; + break; + } + } + if (replacement.empty()) + continue; // every visible preset is used: aliasing is unavoidable + used_preset_names.erase(this->filament_presets[slot]); + this->filament_presets[slot] = replacement; + used_preset_names.insert(replacement); + } + // Mirror set_num_filaments' project_config vector handling ("Add one filament"): + // resize the per-slot colour/type/map vectors to the grown slot count and seed the + // new entries so the slots render with colours instead of blank chips. Only the + // new entries are seeded; the receiver's existing values are left untouched. + ConfigOptionStrings *proj_colour = this->project_config.opt("filament_colour"); + ConfigOptionStrings *proj_multi_colour = this->project_config.opt("filament_multi_colour"); + ConfigOptionStrings *proj_colour_type = this->project_config.opt("filament_colour_type"); + ConfigOptionInts *proj_map = this->project_config.opt("filament_map"); + ConfigOptionInts *proj_nozzle_map = this->project_config.opt("filament_nozzle_map"); + ConfigOptionInts *proj_volume_map = this->project_config.opt("filament_volume_map"); + const size_t old_colour_count = (proj_colour != nullptr) ? proj_colour->values.size() : 0; + if (proj_colour) proj_colour->resize(target_slots); + if (proj_multi_colour) proj_multi_colour->values.resize(target_slots); + if (proj_colour_type) proj_colour_type->values.resize(target_slots); + if (proj_map) proj_map->values.resize(target_slots, 1); + if (proj_nozzle_map) proj_nozzle_map->values.resize(target_slots, 0); + if (proj_volume_map) proj_volume_map->values.resize(target_slots, static_cast(NozzleVolumeType::nvtStandard)); + this->ams_multi_color_filment.resize(target_slots); + for (size_t slot = old_colour_count; slot < target_slots; ++slot) { + std::string seed; + for (const PublishedMaterialEntry &entry : published_config->material_keys) + if (entry.slot == static_cast(slot) && entry.publish_color && !entry.color.empty()) { + seed = entry.color; + break; + } + if (seed.empty()) { + if (const Preset *preset = this->filaments.find_preset(this->filament_presets[slot], false)) { + const ConfigOptionStrings *colours = preset->config.opt("filament_colour"); + if (colours != nullptr && !colours->values.empty()) + seed = colours->values.front(); + } + if (seed.empty()) + seed = "#F2754E"; // filament_colour default + } + if (proj_colour && slot < proj_colour->values.size()) + proj_colour->values[slot] = seed; + if (proj_multi_colour && slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = seed; + if (proj_colour_type && slot < proj_colour_type->values.size()) + proj_colour_type->values[slot] = "1"; // default colour type + } + // Rebuild the flush volumes for the grown slot count (set_num_filaments does the + // same; without it the matrix would stay at the receiver's old size). + this->update_multi_material_filament_presets(); auto apply_slot_keys = [&](Preset &preset, const std::vector &slot_keys, int author_slot, const std::string &material_label) { @@ -5124,17 +5242,31 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool apply_slot = false; } else { // Type mismatch: replace the slot with the first visible same-type - // filament from the receiver's library. - std::string replacement; + // filament from the receiver's library, preferring one that no other + // slot references (a shared stored preset would leak this slot's + // published values into that slot). + std::string replacement, first_same_type; for (size_t i = 0; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); if (!candidate.is_visible) continue; if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) != entry.publish_type_value) continue; - replacement = candidate.name; - break; + if (first_same_type.empty()) + first_same_type = candidate.name; + bool used_elsewhere = false; + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (s != slot && this->filament_presets[s] == candidate.name) { + used_elsewhere = true; + break; + } + if (!used_elsewhere) { + replacement = candidate.name; + break; + } } + if (replacement.empty()) + replacement = first_same_type; if (!replacement.empty()) { const std::string old_name = recv->name; this->filament_presets[slot] = replacement; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index f1d2c79f95..8716af417d 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1069,8 +1069,10 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); } - // Slot 3 published: the receiver grows to 4 so the published slot exists; the filler is - // the receiver's own first visible material. + // Slot 3 published: the receiver grows to 4 so the published slot exists. The unpublished + // filler slots repeat the receiver's last preset ("Add one filament" behaviour); the + // published slot gets a visible preset not used by another slot (with a single-preset + // library it falls back to the receiver's last preset, aliasing being unavoidable). { PresetBundle bundle; add_pla_preset(bundle); @@ -1085,7 +1087,18 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 4); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "My PLA"); CHECK(bundle.filament_presets[3] == filler); + // The project-level per-slot vectors were grown and seeded like "Add one filament": + // fillers take their preset's colour, the published slot its published colour. + CHECK(bundle.project_config.opt("filament_colour")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_colour")->values[1] == "#123456"); + CHECK(bundle.project_config.opt("filament_colour")->values[3] == "#ABCDEF"); + CHECK(bundle.project_config.opt("filament_multi_colour")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_colour_type")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_map")->values.size() == 4); + CHECK(bundle.project_config.opt("flush_volumes_matrix")->values.size() == 16); } // Slots 0 and 2 published: the receiver grows to 3, never to the file's 4. @@ -1102,9 +1115,70 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); } } +// The published overlay mutates stored filament presets in place per slot, so a slot carrying +// published content must never share its stored preset with another slot: its colour/keys +// would leak into the sibling slot - and, with "repeat the last preset" growth, into the +// receiver's own first slot. Regression for the slot-aliasing hazard. +TEST_CASE("Published 3MF gives grown published slots a distinct preset so values never leak", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + // The receiver has one slot of its own material plus one more preset in the library; the + // author publishes only slot 4 (Red). With naive repeat-last growth the new slot would + // reference the receiver's own preset and the published red would recolor it; the grown + // slot must point at a distinct preset. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt("filament_colour", true)->values = { "#123456" }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PLA"); + other.config.opt_string("filament_type", 0u) = "PLA"; + other.config.opt("filament_colour", true)->values = { "#654321" }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 3; + entry.publish_color = true; + entry.color = "#ABCDEF"; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + // Unpublished filler slots repeat the receiver's last preset ("Add one filament"). + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "My PLA"); + // The published slot references the unused library preset, not the receiver's own... + CHECK(bundle.filament_presets[3] == "Other PLA"); + // ...so the published colour landed there and never recoloured the receiver's material. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#123456" }); + CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // The project-level colours are sized and seeded for every grown slot. + CHECK(bundle.project_config.opt("filament_colour")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_colour")->values[1] == "#123456"); + CHECK(bundle.project_config.opt("filament_colour")->values[3] == "#ABCDEF"); + CHECK(bundle.project_config.opt("filament_multi_colour")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_colour_type")->values.size() == 4); + CHECK(bundle.project_config.opt("filament_map")->values.size() == 4); +} + // The GUI displays the edited preset, a snapshot of the selected collection preset taken at // selection time. The published overlay modifies the collection presets in place, so the load // must re-select the first slot's filament (mirroring a normal project load) for the applied From 36a8811cc081cae7f9b7ba267c1eafb696b0fefc Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 18 Aug 2026 16:29:27 +0800 Subject: [PATCH 010/162] Change label to "Publish 3MF..." --- localization/i18n/OrcaSlicer.pot | 179 ++++++++++---- localization/i18n/ca/OrcaSlicer_ca.po | 197 ++++++++++++---- localization/i18n/cs/OrcaSlicer_cs.po | 201 ++++++++++++---- localization/i18n/de/OrcaSlicer_de.po | 197 ++++++++++++---- localization/i18n/en/OrcaSlicer_en.po | 179 ++++++++++---- localization/i18n/es/OrcaSlicer_es.po | 197 ++++++++++++---- localization/i18n/eu/OrcaSlicer_eu.po | 197 ++++++++++++---- localization/i18n/fr/OrcaSlicer_fr.po | 197 ++++++++++++---- localization/i18n/hu/OrcaSlicer_hu.po | 199 ++++++++++++---- localization/i18n/it/OrcaSlicer_it.po | 197 ++++++++++++---- localization/i18n/ja/OrcaSlicer_ja.po | 199 ++++++++++++---- localization/i18n/ko/OrcaSlicer_ko.po | 203 ++++++++++++---- localization/i18n/lt/OrcaSlicer_lt.po | 201 ++++++++++++---- localization/i18n/nl/OrcaSlicer_nl.po | 201 ++++++++++++---- localization/i18n/pl/OrcaSlicer_pl.po | 203 ++++++++++++---- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 203 ++++++++++++---- localization/i18n/ru/OrcaSlicer_ru.po | 247 +++++++++++++++----- localization/i18n/sv/OrcaSlicer_sv.po | 207 ++++++++++++---- localization/i18n/th/OrcaSlicer_th.po | 197 ++++++++++++---- localization/i18n/tr/OrcaSlicer_tr.po | 205 ++++++++++++---- localization/i18n/uk/OrcaSlicer_uk.po | 199 ++++++++++++---- localization/i18n/vi/OrcaSlicer_vi.po | 203 ++++++++++++---- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 201 ++++++++++++---- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 197 ++++++++++++---- src/slic3r/GUI/PublishSettingsDialog.cpp | 2 +- 25 files changed, 3733 insertions(+), 1075 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 88e49a85fc..c55cdb7336 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4452,6 +4452,20 @@ msgstr "" msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "" +#, possible-c-format, possible-boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4533,6 +4547,12 @@ msgid "" "No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin" msgstr "" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" @@ -4545,6 +4565,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -4784,6 +4807,12 @@ msgstr "" msgid "Calibration error" msgstr "" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + msgid "Network unavailable" msgstr "" @@ -4987,9 +5016,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5615,7 +5641,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-c-format, possible-boost-format +#, possible-boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "" @@ -5790,6 +5816,9 @@ msgstr "" msgid "Project" msgstr "" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "" @@ -5916,6 +5945,12 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" @@ -7634,6 +7669,12 @@ msgstr "" msgid "Customized Preset" msgstr "" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "" @@ -7780,19 +7821,19 @@ msgstr "" msgid "Replaced with 3D files from directory:\n" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "✖ Skipped %s: same file.\n" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "✔ Replaced %s.\n" msgstr "" @@ -7994,6 +8035,14 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -8797,6 +8846,14 @@ msgstr "" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "" @@ -9024,9 +9081,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9042,6 +9096,21 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, possible-c-format, possible-boost-format msgid "Save %s as" msgstr "" @@ -9052,9 +9121,21 @@ msgstr "" msgid "Preset Inside Project" msgstr "" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "" @@ -9732,20 +9813,6 @@ msgstr "" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "" - -msgid "Adjust to the set range automatically?\n" -msgstr "" - -msgid "Adjust" -msgstr "" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "" @@ -9931,6 +9998,9 @@ msgstr "" msgid "Setting Overrides" msgstr "" +msgid "Retraction when switching material" +msgstr "" + msgid "Basic information" msgstr "" @@ -10057,6 +10127,12 @@ msgstr "" msgid "Printable space" msgstr "" +msgid "Printer Agent" +msgstr "" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, possible-boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10179,9 +10255,6 @@ msgstr "" msgid "Z-Hop" msgstr "" -msgid "Retraction when switching material" -msgstr "" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11445,6 +11518,9 @@ msgstr "" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr "" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" @@ -11740,9 +11816,6 @@ msgstr "" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "" -msgid "Printer Agent" -msgstr "" - msgid "Select the network agent implementation for printer communication." msgstr "" @@ -12279,9 +12352,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -msgid "Brim width" -msgstr "" - msgid "This is the distance from the model to the outermost brim line." msgstr "" @@ -12347,6 +12417,12 @@ msgid "" "0 to deactivate." msgstr "" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "" @@ -13359,6 +13435,12 @@ msgstr "" msgid "Gyroid" msgstr "" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "" @@ -13839,6 +13921,12 @@ msgstr "" msgid "Klipper" msgstr "" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "" @@ -14800,6 +14888,12 @@ msgstr "" msgid "Retraction distance when extruder change" msgstr "" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "" @@ -14893,6 +14987,9 @@ msgstr "" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "" @@ -15278,6 +15375,12 @@ msgstr "" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "" @@ -18253,9 +18356,6 @@ msgstr "" msgid "Print Host upload" msgstr "" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "" - msgid "Select a Flashforge printer" msgstr "" @@ -19087,9 +19187,6 @@ msgstr "" msgid "User canceled." msgstr "" -msgid "Head diameter" -msgstr "" - msgid "Max angle" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 79a9d82df4..4eb07b2635 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -4828,6 +4828,20 @@ msgstr "La temperatura actual de la cambra és superior a la temperatura segura msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "La temperatura mínima de la cambra (%d℃) és superior a la temperatura objectiu de la cambra (%d℃). El valor mínim és el llindar a partir del qual comença la impressió mentre la cambra continua escalfant-se cap a l'objectiu, de manera que no l'hauria de superar. Es limitarà al valor objectiu." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Ajustar" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4948,6 +4962,12 @@ msgstr "" "Sí - Activa el generador de parets Arachne\n" "No - Desactiva el generador de parets Arachne i estableix el mode [Desplaçament] de la pell difusa" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Ample de la Vora d'Adherència" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "El mode espiral només funciona quan els bucles de paret són 1, el suport està desactivat, la detecció d'acumulació per sondeig està desactivada, les capes de la coberta superior són 0, la densitat de farciment dispers és 0 i el tipus de timelapse és tradicional." @@ -4963,6 +4983,9 @@ msgstr "" "Sí: canviar aquesta configuració i activar el mode d'espiral automàticament\n" "No - Renunciar a utilitzar el mode espiral aquesta vegada" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimint" @@ -5202,6 +5225,12 @@ msgstr "No s'ha pogut generar el gcode cali" msgid "Calibration error" msgstr "Error de calibratge" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Xarxa no disponible" @@ -5416,9 +5445,6 @@ msgstr "Patró no vàlid. Utilitzeu N, N#K, o una llista separada per comes amb msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format no vàlid. Format vectorial esperat: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agents del sistema" @@ -6067,7 +6093,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "S'han trobat conflictes de rutes gcode a la capa %d, Z = %.2lfmm. Si us plau, separeu els objectes conflictius més lluny ( %s <-> %s )." @@ -6248,6 +6274,9 @@ msgstr "Multidispositiu" msgid "Project" msgstr "Projecte" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Sí" @@ -6377,6 +6406,12 @@ msgstr "Desa el projecte com a" msgid "Save current project as" msgstr "Desar el projecte actual com" +msgid "Publish" +msgstr "Publicar" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF STL/STEP/SVG/OBJ/AMF" @@ -8195,6 +8230,12 @@ msgstr "Confirmeu que els Codis-G d'aquests perfils són segurs per evitar danys msgid "Customized Preset" msgstr "Perfil personalitzat" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Els noms dels components dins del fitxer STEP no tenen format UTF8!" @@ -8361,19 +8402,19 @@ msgstr "No s'ha seleccionat el directori per a la substitució" msgid "Replaced with 3D files from directory:\n" msgstr "Substituït amb fitxers 3D del directori:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Omès %s: mateix fitxer.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Omès %s: el fitxer no existeix.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Omès %s: la substitució ha fallat.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Substituït %s.\n" @@ -8583,6 +8624,14 @@ msgstr "Desa el fitxer Laminat com a:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El fitxer %s s'ha enviat a l'emmagatzematge de la impressora i es pot visualitzar a la impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipus de broquet no està establert. Establiu el broquet i torneu-ho a provar." @@ -9506,6 +9555,14 @@ msgstr "Mostrar els perfils no compatibles" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Mostra els perfils incompatibles o no compatibles a les llistes desplegables d'impressora i de filament. Aquests perfils no es poden seleccionar." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Funcions experimentals" @@ -9748,9 +9805,6 @@ msgstr "Anar a la pàgina web de publicació de models" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparació pot trigar uns quants minuts. Si us plau, sigui pacient." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicació ha estat cancel·lada" @@ -9766,6 +9820,21 @@ msgstr "Carregant dades" msgid "Jump to webpage" msgstr "Anar a la pàgina web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Desar %s com a" @@ -9776,9 +9845,21 @@ msgstr "Perfil d'usuari" msgid "Preset Inside Project" msgstr "Perfil intern del Projecte" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Desvincula del pare" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "El nom no està disponible." @@ -10521,22 +10602,6 @@ msgstr "Estàs segur que vols activar aquesta opció?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Els patrons de farciment estan dissenyats normalment per gestionar la rotació automàticament per garantir una impressió correcta i aconseguir els efectes desitjats (p. ex., Gyroid, Cúbic). Rotar el patró de farciment dispers actual pot portar a un suport insuficient. Procediu amb precaució i comproveu minuciosament qualsevol problema d'impressió potencial. Esteu segur que voleu activar aquesta opció?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"L'alçada de la capa és massa petita.\n" -"Es posarà a min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "L'alçada de la capa supera el límit a Configuració de la Impressora -> Extrusora -> Límits d'alçada de la capa, això pot causar problemes de qualitat d'impressió." - -msgid "Adjust to the set range automatically?\n" -msgstr "Voleu ajustar el rang automàticament?\n" - -msgid "Adjust" -msgstr "Ajustar" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Característica experimental: Retreure i tallar el filament a major distància durant els canvis de filaments per minimitzar el flux. Tot i que pot reduir notablement el flux, també pot elevar el risc d'esclops de broquets o altres complicacions d'impressió." @@ -10735,6 +10800,9 @@ msgstr "Trobades paraules clau reservades" msgid "Setting Overrides" msgstr "Anul·lacions de configuració" +msgid "Retraction when switching material" +msgstr "Retracció en canviar de material" + msgid "Basic information" msgstr "Informació bàsica" @@ -10867,6 +10935,12 @@ msgstr "Perfils de processos compatibles" msgid "Printable space" msgstr "Espai imprimible" +msgid "Printer Agent" +msgstr "Agent de la impressora" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora. Els agents disponibles es registren a l'inici." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10997,9 +11071,6 @@ msgstr "Límits d'alçada de capa" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Retracció en canviar de material" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12380,6 +12451,9 @@ msgstr " està massa a prop de la zona d'exclusió, i es provocaran col·lisions msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " és massa a prop de l'àrea de detecció d'acumulació i es causaran col·lisions.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Les temperatures de broquet seleccionades són incompatibles. La temperatura de broquet de cada filament ha d'estar dins del rang de temperatura de broquet recomanat dels altres filaments. Altrament, es pot produir una obturació del broquet o danys a la impressora." @@ -12714,9 +12788,6 @@ msgstr "Utilitzar 3MF en lloc de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activeu-ho si la impressora accepta un fitxer 3MF com a treball d'impressió. Quan està activat, Orca Slicer envia el fitxer laminat com a .gcode.3mf, en lloc d'un fitxer .gcode simple." -msgid "Printer Agent" -msgstr "Agent de la impressora" - msgid "Select the network agent implementation for printer communication." msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora." @@ -13402,9 +13473,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocitat dels ponts interns. Si el valor s'expressa com un percentatge, es calcularà en funció de la velocitat del pont (bridge_speed). El valor per defecte és del 150%." -msgid "Brim width" -msgstr "Ample de la Vora d'Adherència" - msgid "This is the distance from the model to the outermost brim line." msgstr "Distància del model a la línia de la Vora d'Adherència més exterior" @@ -13488,6 +13556,12 @@ msgstr "" "La geometria es simplificarà abans de detectar angles pronunciats. Aquest paràmetre indica la longitud mínima de la desviació per a la simplificació.\n" "0 per desactivar" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "màquina compatible ascendent" @@ -14679,6 +14753,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroide" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Acceleració del farciment superficial superior. L'ús d'un valor inferior pot millorar la qualitat de la superfície superior" @@ -15232,6 +15312,12 @@ msgstr "Amb quin tipus de Codi-G és compatible la impressora." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Impressora modificada de pellets" @@ -16321,6 +16407,12 @@ msgstr "Retracció llarga al canviar d'extrusor" msgid "Retraction distance when extruder change" msgstr "Distància de retracció al canviar d'extrusor" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Alçada Z-hop" @@ -16419,6 +16511,9 @@ msgstr "Longitud addicional en reiniciar" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Quan la retracció es compensa després d'un desplaçament, l'extrusor introduirà una quantitat addicional de filament. Aquest ajustament rarament es necessita." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quan la retracció es compensa després d'un canvi d'eina, l'extrusor introduirà una quantitat addicional de filament." @@ -16835,6 +16930,12 @@ msgstr "Canvi d'eina a la Torre de Purga" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Força el capçal a desplaçar-se a la Torre de Purga abans d'emetre l'ordre de canvi d'eina (Tx). Només és rellevant per a impressores multiextrusor (multicapçal) que utilitzen una Torre de Purga de tipus 2. Per defecte, Orca omet aquest desplaçament en màquines multicapçal perquè el firmware gestiona el canvi de capçal, cosa que pot fer que l'ordre Tx s'emeti sobre la peça impresa. Activeu aquesta opció si voleu que el canvi d'eina s'emeti sempre sobre la Torre de Purga." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Sense capes poc denses( beta )" @@ -20121,9 +20222,6 @@ msgstr "Impressora Física" msgid "Print Host upload" msgstr "Pujada al amfitrió( host ) d'impressió" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora. Els agents disponibles es registren a l'inici." - # AI Translated msgid "Select a Flashforge printer" msgstr "Seleccioneu una impressora Flashforge" @@ -21066,9 +21164,6 @@ msgstr "Alguna cosa inesperada ha passat en intentar iniciar sessió, torneu-ho msgid "User canceled." msgstr "Usuari cancel·lat." -msgid "Head diameter" -msgstr "Diàmetre del cap" - msgid "Max angle" msgstr "Angle màxim" @@ -21887,6 +21982,22 @@ msgstr "" "Evitar la deformació( warping )\n" "Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "L'alçada de la capa és massa petita.\n" +#~ "Es posarà a min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "L'alçada de la capa supera el límit a Configuració de la Impressora -> Extrusora -> Límits d'alçada de la capa, això pot causar problemes de qualitat d'impressió." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Voleu ajustar el rang automàticament?\n" + +#~ msgid "Head diameter" +#~ msgstr "Diàmetre del cap" + #~ msgid "Print order within a single layer." #~ msgstr "Ordre d'impressió dins d'una sola capa" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index e21fd3086c..95259e0895 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -4786,6 +4786,20 @@ msgstr "Aktuální teplota komory je vyšší než bezpečná teplota materiálu msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Minimální teplota komory (%d℃) je vyšší než cílová teplota komory (%d℃). Minimální hodnota je práh, při kterém tisk začíná, zatímco se komora dále ohřívá k cílové teplotě, takže by ji neměla překročit. Bude omezena na cílovou hodnotu." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Upravit" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4906,6 +4920,12 @@ msgstr "" "Ano – povolit Arachne Wall Generator\n" "Ne – zakázat Arachne Wall Generator a nastavit režim [Displacement] pro Fuzzy Skin" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Šířka límce" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Spirálový režim funguje pouze tehdy, když je počet smyček stěny 1, podpěry jsou vypnuté, detekce usazenin sondováním je vypnutá, počet horních plných vrstev je 0, hustota řídké výplně je 0 a typ časosběru je tradiční." @@ -4921,6 +4941,10 @@ msgstr "" "Ano – změnit tato nastavení a automaticky povolit spirálový režim\n" "Ne – tentokrát nepoužít spirálový režim" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Tisk" @@ -5160,6 +5184,12 @@ msgstr "Nepodařilo se vygenerovat kalibrační G-code." msgid "Calibration error" msgstr "Chyba kalibrace" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Síť není dostupná" @@ -5372,10 +5402,6 @@ msgstr "Neplatný vzor. Použijte N, N#K nebo seznam oddělený čárkami s voli msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Neplatný formát. Očekávaný vektorový formát: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Systémoví agenti" @@ -6029,7 +6055,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Byly nalezeny konflikty drah G-kódu ve vrstvě %d, Z = %.2lf mm. Oddělte prosím konfliktní objekty více od sebe (%s <-> %s)." @@ -6210,6 +6236,9 @@ msgstr "Více zařízení" msgid "Project" msgstr "Projekt" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Ano" @@ -6338,6 +6367,12 @@ msgstr "Uložit projekt jako" msgid "Save current project as" msgstr "Uložit aktuální projekt jako" +msgid "Publish" +msgstr "Publikovat" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importovat 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8157,6 +8192,12 @@ msgstr "Potvrďte prosím, že je G-code v těchto předvolbách bezpečný, aby msgid "Customized Preset" msgstr "Přizpůsobená předvolba" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Názvy komponent v souboru STEP nejsou ve formátu UTF-8!" @@ -8320,19 +8361,19 @@ msgstr "Nebyla vybrána složka pro nahrazení" msgid "Replaced with 3D files from directory:\n" msgstr "Nahrazeno 3D soubory ze složky:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Přeskočeno %s: stejný soubor.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Přeskočeno %s: soubor neexistuje.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Přeskočeno %s: nahrazení se nezdařilo.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Nahrazeno %s.\n" @@ -8543,6 +8584,14 @@ msgstr "Uložit rozřezaný soubor jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Soubor %s byl odeslán do úložiště tiskárny a lze jej zobrazit na tiskárně." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Typ trysky není nastaven. Nastavte prosím trysku a zkuste to znovu." @@ -9457,6 +9506,14 @@ msgstr "Zobrazit nepodporované předvolby" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Zobrazovat nekompatibilní/nepodporované předvolby v rozevíracích seznamech tiskáren a filamentů. Tyto předvolby nelze vybrat." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Experimentální funkce" @@ -9696,9 +9753,6 @@ msgstr "Přejít na webovou stránku publikace modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Poznámka: Příprava může trvat několik minut. Buďte prosím trpěliví." -msgid "Publish" -msgstr "Publikovat" - msgid "Publish was canceled" msgstr "Publikování bylo zrušeno" @@ -9714,6 +9768,21 @@ msgstr "Nahrávání dat" msgid "Jump to webpage" msgstr "Přejít na webovou stránku" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Uložit %s jako" @@ -9724,10 +9793,22 @@ msgstr "Uživatelská předvolba" msgid "Preset Inside Project" msgstr "Předvolba v projektu" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Oddělit od nadřazeného" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Název není k dispozici." @@ -10469,22 +10550,6 @@ msgstr "Opravdu chcete tuto možnost povolit?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Vzory výplně jsou obvykle navrženy tak, aby automaticky pracovaly s rotací a zajistily správný tisk i zamýšlený efekt (např. Gyroid, Cubic). Otočení aktuální řídké výplně může vést k nedostatečné opoře. Postupujte opatrně a pečlivě zkontrolujte možné problémy při tisku. Opravdu chcete tuto možnost povolit?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Výška vrstvy je příliš malá.\n" -"Bude nastavena na min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Výška vrstvy přesahuje limit v Nastavení tiskárny -> Extruder -> Omezení výšky vrstvy, což může způsobit problémy s kvalitou tisku." - -msgid "Adjust to the set range automatically?\n" -msgstr "Automaticky upravit do nastaveného rozsahu?\n" - -msgid "Adjust" -msgstr "Upravit" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Experimentální funkce: Stažení a odstřižení filamentu na větší vzdálenost během výměny filamentu pro minimalizaci purge. Ačkoliv to může výrazně snížit purge, může to také zvýšit riziko ucpání trysky nebo jiných komplikací při tisku." @@ -10684,6 +10749,9 @@ msgstr "Byla nalezena rezervovaná klíčová slova" msgid "Setting Overrides" msgstr "Přepisování nastavení" +msgid "Retraction when switching material" +msgstr "Retrakce při změně materiálu" + msgid "Basic information" msgstr "Základní informace" @@ -10816,6 +10884,13 @@ msgstr "Kompatibilní procesní profily" msgid "Printable space" msgstr "Tisknutelný prostor" +# AI Translated +msgid "Printer Agent" +msgstr "Agent tiskárny" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou. Dostupní agenti jsou registrováni při spuštění." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10943,9 +11018,6 @@ msgstr "Omezení výšky vrstvy" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Retrakce při změně materiálu" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12363,6 +12435,9 @@ msgstr " je příliš blízko oblasti vyloučení a může způsobit kolize.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " je příliš blízko oblasti detekce shlukování a dojde ke kolizi.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Vybrané teploty trysky nejsou kompatibilní. Teplota trysky každého filamentu musí spadat do doporučeného rozsahu teplot ostatních filamentů. Jinak může dojít k ucpání trysky nebo poškození tiskárny." @@ -12696,10 +12771,6 @@ msgstr "Použít 3MF místo G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Zapněte, pokud tiskárna přijímá jako tiskovou úlohu soubor 3MF. Je-li zapnuto, odešle Orca Slicer slicovaný soubor jako .gcode.3mf místo prostého souboru .gcode." -# AI Translated -msgid "Printer Agent" -msgstr "Agent tiskárny" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou." @@ -13387,9 +13458,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Rychlost vnitřních mostů. Pokud je hodnota zadána v procentech, vypočítá se podle bridge_speed. Výchozí hodnota je 150 %." -msgid "Brim width" -msgstr "Šířka límce" - msgid "This is the distance from the model to the outermost brim line." msgstr "Vzdálenost od modelu k nejvzdálenější brim linii." @@ -13470,6 +13538,12 @@ msgstr "" "Geometrie bude decimována před detekcí ostrých úhlů. Tento parametr určuje minimální délku odchylky pro decimaci.\n" "0 pro deaktivaci." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "stroj zpětně kompatibilní" @@ -14646,6 +14720,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Akcelerace výplně horní plochy. Použití nižší hodnoty může zlepšit kvalitu horní plochy." @@ -15198,6 +15278,12 @@ msgstr "Jaký typ G-code je s tiskárnou kompatibilní." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Tiskárna na pelety" @@ -16265,6 +16351,12 @@ msgstr "Dlouhá retrakce při změně extruderu" msgid "Retraction distance when extruder change" msgstr "Délka retrakce při změně extruderu" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Výška Z-hopu" @@ -16362,6 +16454,9 @@ msgstr "Dodatečná délka při restartu" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Při kompenzaci retrakce po pohybu přesunu extruder posune toto přídavné množství filamentu. Toto nastavení je potřeba jen zřídka." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Při kompenzaci retrakce po výměně nástroje extruder posune toto přídavné množství filamentu." @@ -16780,6 +16875,12 @@ msgstr "Výměna nástroje na věži na očištění trysky" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Vynutí přejezd tiskové hlavy k věži na očištění trysky před vydáním příkazu k výměně nástroje (Tx). Týká se pouze tiskáren s více extrudery (více tiskovými hlavami), které používají věž na očištění trysky typu 2. Ve výchozím nastavení Orca na strojích s více tiskovými hlavami tento přejezd vynechává, protože výměnu hlavy řeší firmware, což může vést k vydání příkazu Tx nad tištěným dílem. Zapněte tuto volbu, chcete-li, aby byla výměna nástroje vždy vydána nad věží na očištění trysky." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Žádné řídké vrstvy (beta)" @@ -20043,9 +20144,6 @@ msgstr "Fyzická tiskárna" msgid "Print Host upload" msgstr "Nahrání na tiskový server" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou. Dostupní agenti jsou registrováni při spuštění." - # AI Translated msgid "Select a Flashforge printer" msgstr "Vyberte tiskárnu Flashforge" @@ -21002,9 +21100,6 @@ msgstr "Při pokusu o přihlášení došlo k neočekávané chybě, zkuste to p msgid "User canceled." msgstr "Zrušeno uživatelem." -msgid "Head diameter" -msgstr "Průměr hlavy" - msgid "Max angle" msgstr "Maximální úhel" @@ -21873,6 +21968,22 @@ msgstr "" "Zamezte kroucení\n" "Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Výška vrstvy je příliš malá.\n" +#~ "Bude nastavena na min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Výška vrstvy přesahuje limit v Nastavení tiskárny -> Extruder -> Omezení výšky vrstvy, což může způsobit problémy s kvalitou tisku." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Automaticky upravit do nastaveného rozsahu?\n" + +#~ msgid "Head diameter" +#~ msgstr "Průměr hlavy" + #~ msgid "Print order within a single layer." #~ msgstr "Pořadí tisku v rámci jedné vrstvy." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 50384598e3..0a86439cab 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -4692,6 +4692,20 @@ msgstr "Die aktuelle Kammer-Temperatur ist höher als die sichere Temperatur des msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Die minimale Druckraumtemperatur (%d℃) ist höher als die Ziel-Druckraumtemperatur (%d℃). Der Minimalwert ist der Schwellenwert, bei dem der Druck beginnt, während der Druckraum weiter auf die Zieltemperatur heizt; er sollte diese daher nicht überschreiten. Er wird auf die Zieltemperatur begrenzt." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Anpassen" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4812,6 +4826,12 @@ msgstr "" "Ja - Arachne Wall Generator aktivieren\n" "Nein - Arachne Wall Generator deaktivieren und den Modus [Verschiebung] des Fuzzy Skin setzen" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Randbreite" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Der Spiralmodus funktioniert nur, wenn die Wandschleifen 1 sind, die Stütze deaktiviert ist, die Klumpenerkennung durch Abtasten deaktiviert ist, die oberen Schichtlagen 0 sind, die Dichte der spärlichen Füllung 0 ist und der Zeitraffertyp traditionell ist." @@ -4827,6 +4847,9 @@ msgstr "" "Ja - Diese Einstellungen ändern und den Spiralmodus automatisch aktivieren\n" "Nein - Spiralmodus nicht aktivieren" +msgid "N/A" +msgstr "Nicht verfügbar" + msgid "Printing" msgstr "Drucken" @@ -5066,6 +5089,12 @@ msgstr "Fehler beim Generieren des Kalibrierungs-G-Codes" msgid "Calibration error" msgstr "Kalibrierungsfehler" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Netzwerk nicht verfügbar" @@ -5278,9 +5307,6 @@ msgstr "Ungültiges Muster. Verwenden Sie N, N#K oder eine durch Kommas getrennt msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\"" -msgid "N/A" -msgstr "Nicht verfügbar" - # AI Translated msgid "System agents" msgstr "Systemagenten" @@ -5923,7 +5949,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Konflikte von G-Code-Pfaden wurden bei Layer %d, Z = %.2lf mm gefunden.Bitte trennen Sie die konfliktbehafteten Objekte weiter voneinander (%s <-> %s)." @@ -6103,6 +6129,9 @@ msgstr "Multi-Gerät" msgid "Project" msgstr "Projekt" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Ja" @@ -6230,6 +6259,12 @@ msgstr "Projekt speichern als" msgid "Save current project as" msgstr "Aktuelles Projekt speichern als" +msgid "Publish" +msgstr "Veröffentlichen" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8027,6 +8062,12 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher msgid "Customized Preset" msgstr "Benutzerdefinierte Profile" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF8-Format!" @@ -8191,19 +8232,19 @@ msgstr "Verzeichnis um daraus zu ersetzen wurde nicht ausgewählt" msgid "Replaced with 3D files from directory:\n" msgstr "Ersetzt durch 3D-Dateien aus Verzeichnis:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Übersprungen %s: gleiche Datei.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Übersprungen %s: Datei existiert nicht.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Übersprungen %s: Ersetzen fehlgeschlagen.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Ersetzt %s.\n" @@ -8415,6 +8456,14 @@ msgstr "Geslicte Datei speichern unter:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut." @@ -9296,6 +9345,14 @@ msgstr "Nicht unterstützte Profile anzeigen" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Zeigt inkompatible/nicht unterstützte Profile in den Dropdown-Listen für Drucker und Filament an. Diese Profile können nicht ausgewählt werden." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Experimentelle Funktionen" @@ -9530,9 +9587,6 @@ msgstr "Zur Modellveröffentlichungs-Webseite springen" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Hinweis: Die Vorbereitung kann einige Minuten dauern. Bitte haben Sie Geduld." -msgid "Publish" -msgstr "Veröffentlichen" - msgid "Publish was canceled" msgstr "Veröffentlichung wurde abgebrochen" @@ -9548,6 +9602,21 @@ msgstr "Daten werden hochgeladen" msgid "Jump to webpage" msgstr "Zu einer Website springen" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s speichern als" @@ -9558,9 +9627,21 @@ msgstr "Benutzerprofil" msgid "Preset Inside Project" msgstr "Projektbasiertes Profil" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Vom übergeordneten Element trennen" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Der Name ist nicht verfügbar." @@ -10296,22 +10377,6 @@ msgstr "Sind Sie sicher, dass Sie diese Option aktivieren möchten?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Infill-Muster sind in der Regel so konzipiert, dass sie eine automatische Drehung ermöglichen, um einen ordnungsgemäßen Druck zu gewährleisten und die beabsichtigten Effekte zu erzielen (z. B. Gyroid, Cubic). Das Drehen des aktuellen spärlichen Infill-Musters kann zu unzureichender Unterstützung führen. Bitte gehen Sie vorsichtig vor und überprüfen Sie gründlich auf mögliche Druckprobleme. Sind Sie sicher, dass Sie diese Option aktivieren möchten?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Die Schichthöhe ist zu klein.\n" -"Sie wird auf min_layer_height gesetzt\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen." - -msgid "Adjust to the set range automatically?\n" -msgstr "Automatisch an den eingestellten Bereich anpassen?\n" - -msgid "Adjust" -msgstr "Anpassen" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Experimentelle Funktion: Filament beim Filamentwechsel weiter zurückziehen und abschneiden, um den Flush zu minimieren. Obwohl dies den Flush deutlich reduzieren kann, kann es auch das Risiko von Düsenverstopfungen oder anderen Druckkomplikationen erhöhen." @@ -10505,6 +10570,9 @@ msgstr "Reservierte Schlüsselwörter gefunden" msgid "Setting Overrides" msgstr "Überschreiben der Einstellungen" +msgid "Retraction when switching material" +msgstr "Rückzug bei Materialwechsel" + msgid "Basic information" msgstr "Grundlegende Informationen" @@ -10634,6 +10702,12 @@ msgstr "Kompatible Prozessprofile" msgid "Printable space" msgstr "Druckbarer Raum" +msgid "Printer Agent" +msgstr "Drucker-Agent" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10759,9 +10833,6 @@ msgstr "Höhenbegrenzungen für Schichten" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Rückzug bei Materialwechsel" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12103,6 +12174,9 @@ msgstr " ist zu nahe am Sperrbereich und es werden Kollisionen verursacht.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " ist zu nahe am Klumpenerkennungsbereich und es werden Kollisionen verursacht.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Die ausgewählten Düsentemperaturen sind nicht kompatibel. Die Düsentemperatur jedes Filaments muss innerhalb des empfohlenen Düsentemperaturbereichs der anderen Filamente liegen. Andernfalls kann es zu Düsenverstopfungen oder Druckerschäden kommen." @@ -12418,9 +12492,6 @@ msgstr "Benutze 3MF statt G-Code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Aktivieren Sie diese Option, wenn der Drucker eine 3MF-Datei als Druckauftrag akzeptiert. Wenn aktiviert, sendet Orca Slicer die geslicete Datei als .gcode.3mf, anstatt als einfache .gcode-Datei." -msgid "Printer Agent" -msgstr "Drucker-Agent" - msgid "Select the network agent implementation for printer communication." msgstr "Wählen Sie die Netzwerk-Agent-Implementierung für die Druckerkommunikation aus." @@ -13091,9 +13162,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Geschwindigkeit der internen Brücken. Wenn der Wert als Prozentsatz angegeben wird, wird er auf der Grundlage der Brückengeschwindigkeit berechnet. Der Standardwert beträgt 150 %." -msgid "Brim width" -msgstr "Randbreite" - msgid "This is the distance from the model to the outermost brim line." msgstr "Abstand vom Modell zur äußersten Randlinie" @@ -13174,6 +13242,12 @@ msgstr "" "Die Geometrie wird vor der Erkennung scharfer Winkel reduziert. Dieser Parameter ist ein Indikator für die minimale Länge der Abweichung für die Reduzierung.\n" "0 zum Deaktivieren." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "Aufwärtskompatible Maschine" @@ -14341,6 +14415,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Dies ist die Beschleunigung der Füllung von der obersten Schicht. Die Verwendung eines niedrigeren Werts kann die Qualität der Oberfläche verbessern." @@ -14874,6 +14954,12 @@ msgstr "Mit welcher Art von G-Code ist der Drucker kompatibel." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Pellet-Modifizierter Drucker" @@ -15920,6 +16006,12 @@ msgstr "Langer Rückzug beim Extruderwechsel" msgid "Retraction distance when extruder change" msgstr "Rückzugslänge beim Extruderwechsel" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z-Hub-Höhe" @@ -16014,6 +16106,9 @@ msgstr "Zusätzliche Länge beim Neustart" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Wenn die Rückzugskompensation nach dem Reisemove durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben. Diese Einstellung wird nur selten benötigt." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Wenn die Rückzugskompensation nach dem Wechsel des Werkzeugs durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben." @@ -16431,6 +16526,12 @@ msgstr "Werkzeugwechsel auf dem Reinigungsturm" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Erzwinge, dass der Werkzeugkopf zum Reinigungsturm fährt, bevor der Werkzeugwechselbefehl (Tx) ausgegeben wird. Nur relevant für Mehrfach-Extruder (Mehrfach-Werkzeugkopf) Drucker, die einen Typ-2-Reinigungsturm verwenden. Standardmäßig überspringt Orca die Fahrt auf Mehrfach-Werkzeugkopf-Maschinen, da die Firmware den Kopfwechsel übernimmt, was dazu führen kann, dass der Tx-Befehl über dem gedruckten Teil ausgegeben wird. Aktivieren Sie diese Option, wenn Sie möchten, dass der Werkzeugwechsel immer über dem Reinigungsturm ausgegeben wird." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Keine dünnen Schichten (Beta)" @@ -19650,9 +19751,6 @@ msgstr "Drucker" msgid "Print Host upload" msgstr "Hochladen zum Druck-Host" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert." - msgid "Select a Flashforge printer" msgstr "Wählen Sie einen Flashforge-Drucker aus" @@ -20500,9 +20598,6 @@ msgstr "Es ist etwas Unerwartetes passiert, als Sie versucht haben, sich anzumel msgid "User canceled." msgstr "Benutzer abgebrochen." -msgid "Head diameter" -msgstr "Kopfdurchmesser" - msgid "Max angle" msgstr "Maximaler Winkel" @@ -21286,6 +21381,22 @@ msgstr "" "Verwerfungen vermeiden\n" "Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Die Schichthöhe ist zu klein.\n" +#~ "Sie wird auf min_layer_height gesetzt\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Automatisch an den eingestellten Bereich anpassen?\n" + +#~ msgid "Head diameter" +#~ msgstr "Kopfdurchmesser" + #~ msgid "Print order within a single layer." #~ msgstr "Druckreihenfolge innerhalb einer einzelnen Schicht" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 232820f681..03b83309de 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -4448,6 +4448,20 @@ msgstr "" msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "" +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4529,6 +4543,12 @@ msgid "" "No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin" msgstr "" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" @@ -4541,6 +4561,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -4780,6 +4803,12 @@ msgstr "" msgid "Calibration error" msgstr "" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + msgid "Network unavailable" msgstr "" @@ -4983,9 +5012,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5611,7 +5637,7 @@ msgstr "" msgid "Size:" msgstr "" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "" @@ -5786,6 +5812,9 @@ msgstr "" msgid "Project" msgstr "" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "" @@ -5912,6 +5941,12 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" @@ -7630,6 +7665,12 @@ msgstr "" msgid "Customized Preset" msgstr "" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "" @@ -7776,19 +7817,19 @@ msgstr "" msgid "Replaced with 3D files from directory:\n" msgstr "" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "" @@ -7990,6 +8031,14 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -8793,6 +8842,14 @@ msgstr "" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "" @@ -9020,9 +9077,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9038,6 +9092,21 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "" @@ -9048,9 +9117,21 @@ msgstr "" msgid "Preset Inside Project" msgstr "" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "" @@ -9728,20 +9809,6 @@ msgstr "" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "" - -msgid "Adjust to the set range automatically?\n" -msgstr "" - -msgid "Adjust" -msgstr "" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "" @@ -9927,6 +9994,9 @@ msgstr "" msgid "Setting Overrides" msgstr "" +msgid "Retraction when switching material" +msgstr "" + msgid "Basic information" msgstr "" @@ -10053,6 +10123,12 @@ msgstr "" msgid "Printable space" msgstr "" +msgid "Printer Agent" +msgstr "" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10175,9 +10251,6 @@ msgstr "" msgid "Z-Hop" msgstr "" -msgid "Retraction when switching material" -msgstr "" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11441,6 +11514,9 @@ msgstr "" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr "" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" @@ -11736,9 +11812,6 @@ msgstr "" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "" -msgid "Printer Agent" -msgstr "" - msgid "Select the network agent implementation for printer communication." msgstr "" @@ -12275,9 +12348,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -msgid "Brim width" -msgstr "" - msgid "This is the distance from the model to the outermost brim line." msgstr "" @@ -12343,6 +12413,12 @@ msgid "" "0 to deactivate." msgstr "" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "" @@ -13355,6 +13431,12 @@ msgstr "" msgid "Gyroid" msgstr "" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "" @@ -13835,6 +13917,12 @@ msgstr "" msgid "Klipper" msgstr "" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "" @@ -14796,6 +14884,12 @@ msgstr "" msgid "Retraction distance when extruder change" msgstr "" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "" @@ -14889,6 +14983,9 @@ msgstr "" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "" @@ -15274,6 +15371,12 @@ msgstr "" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "" @@ -18249,9 +18352,6 @@ msgstr "" msgid "Print Host upload" msgstr "" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "" - msgid "Select a Flashforge printer" msgstr "" @@ -19083,9 +19183,6 @@ msgstr "" msgid "User canceled." msgstr "" -msgid "Head diameter" -msgstr "" - msgid "Max angle" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 1913c4512a..74617b88ec 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -4564,6 +4564,20 @@ msgstr "La temperatura actual de la recámara es superior a la temperatura de se msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "La temperatura mínima de la recámara (%d℃) es superior a la temperatura objetivo de la recámara (%d℃). El valor mínimo es el umbral en el que comienza la impresión mientras la recámara continúa calentándose hacia el objetivo, por lo que no debería superarlo. Se ajustará al valor objetivo." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Ajustar" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4684,6 +4698,12 @@ msgstr "" "Sí: habilitar el generador de muros Arachne\n" "No: deshabilitar el generador de paredes Arachne y establecer el modo [Desplazamiento] de la piel rugosa" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Ancho del borde de adherencia" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "El modo espiral solo funciona cuando los bucles de perímetro son 1, el soporte está desactivado, la detección de agrupamientos mediante sondeo está desactivada, las capas superiores de la carcasa son 0, la densidad de relleno es 0 y el tipo de lapso de tiempo es tradicional." @@ -4699,6 +4719,9 @@ msgstr "" "Sí - Cambiar estos ajustes y activar el modo espiral automáticamente\n" "No - Dejar de usar el modo espiral esta vez" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Imprimiendo" @@ -4938,6 +4961,12 @@ msgstr "Fallo al generar el G-Code de calibración" msgid "Calibration error" msgstr "Error de calibración" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + msgid "Network unavailable" msgstr "Red no disponible" @@ -5144,9 +5173,6 @@ msgstr "Patrón inválido. Use N, N#K, o una lista separada por comas con #K opc msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vector esperado: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Agentes del sistema" @@ -5779,7 +5805,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, Z = %.2lfmm. Por favor, separe más los objetos en conflicto (%s <-> %s)." @@ -5960,6 +5986,9 @@ msgstr "Multi-dispositivo" msgid "Project" msgstr "Proyecto" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Sí" @@ -6087,6 +6116,12 @@ msgstr "Guardar proyecto como" msgid "Save current project as" msgstr "Guardar el proyecto actual como" +msgid "Publish" +msgstr "Publicar" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7841,6 +7876,12 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p msgid "Customized Preset" msgstr "Perfil Personalizado" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" @@ -7997,19 +8038,19 @@ msgstr "No se seleccionó el directorio para el reemplazo" msgid "Replaced with 3D files from directory:\n" msgstr "Reemplazado con archivos 3D desde el directorio:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Omitido %s: mismo archivo.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Omitido %s: el archivo no existe.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Omitido %s: fallo al reemplazar.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Reemplazado %s.\n" @@ -8218,6 +8259,14 @@ msgstr "Guardar el archivo laminado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo." @@ -9074,6 +9123,14 @@ msgstr "Mostrar ajustes preestablecidos no compatibles" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Mostrar los ajustes preestablecidos incompatibles o no compatibles en los menús desplegables de impresoras y filamentos. Estos ajustes preestablecidos no se pueden seleccionar." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Funciones experimentales" @@ -9305,9 +9362,6 @@ msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicación fue cancelada" @@ -9323,6 +9377,21 @@ msgstr "Cargando datos" msgid "Jump to webpage" msgstr "Ir a la página web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Guardar %s como" @@ -9333,9 +9402,21 @@ msgstr "Perfil de usuario" msgid "Preset Inside Project" msgstr "Perfil interno del proyecto" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Separar del elemento padre" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "El nombre no está disponible." @@ -10031,22 +10112,6 @@ msgstr "¿Está seguro de que desea activar esta opción?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Los patrones de relleno suelen diseñarse para gestionar la rotación automáticamente y asegurar una impresión adecuada y lograr sus efectos previstos (p. ej., Giroide, Cúbico). Rotar el patrón de relleno actual puede provocar soporte insuficiente. Proceda con precaución y compruebe detenidamente posibles problemas de impresión. ¿Está seguro de que desea activar esta opción?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"La altura de la capa es demasiado pequeña.\n" -"Se establecerá en min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión." - -msgid "Adjust to the set range automatically?\n" -msgstr "¿Desea ajustar el rango automáticamente?\n" - -msgid "Adjust" -msgstr "Ajustar" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Función experimental: retraer y cortar el filamento a una mayor distancia durante los cambios de filamento para minimizar el purgado. Aunque puede reducir notablemente el purgado, también puede aumentar el riesgo de atascos de boquilla u otras complicaciones de impresión.Característica experimental: Retraer y cortar el filamento a mayor distancia durante los cambios de filamento para minimizar el descarte. Aunque puede reducir notablemente el descarte, también puede elevar el riesgo de atascos de boquillas u otros problemas en la impresión." @@ -10238,6 +10303,9 @@ msgstr "Palabras clave utilizadas y encontradas" msgid "Setting Overrides" msgstr "Sobreescribir Ajustes de impresora" +msgid "Retraction when switching material" +msgstr "Retracción al cambiar de material" + msgid "Basic information" msgstr "Información básica" @@ -10364,6 +10432,12 @@ msgstr "Perfiles de proceso compatibles" msgid "Printable space" msgstr "Espacio imprimible" +msgid "Printer Agent" +msgstr "Agente de impresora" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10489,9 +10563,6 @@ msgstr "Límites de altura de la capa" msgid "Z-Hop" msgstr "Salto en Z" -msgid "Retraction when switching material" -msgstr "Retracción al cambiar de material" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11809,6 +11880,9 @@ msgstr " está demasiado cerca de una zona de exclusión, lo que provocará coli msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " está demasiado cerca del área de detección de aglomeraciones, y se producirán colisiones.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Las temperaturas de boquilla seleccionadas son incompatibles. La temperatura de boquilla de cada filamento debe estar dentro del rango de temperaturas recomendado para los demás filamentos. De lo contrario, podrían producirse atascos en la boquilla o daños en la impresora." @@ -12116,9 +12190,6 @@ msgstr "Utiliza 3MF en lugar de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activa esta opción si la impresora admite un archivo 3MF como trabajo de impresión. Cuando está activada, Orca Slicer envía el archivo cortado como un archivo .gcode.3mf, en lugar de como un archivo .gcode convencional." -msgid "Printer Agent" -msgstr "Agente de impresora" - msgid "Select the network agent implementation for printer communication." msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora." @@ -12794,9 +12865,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocidad de los puntes internos. Si se expresa como un porcentaje, será Calculado en base a la velocidad de puente. El valor por defecto es 150%." -msgid "Brim width" -msgstr "Ancho del borde de adherencia" - msgid "This is the distance from the model to the outermost brim line." msgstr "Distancia del modelo a la línea más externa del borde de adherencia." @@ -12876,6 +12944,12 @@ msgstr "" "La geometría se verá diezmada antes de detectar angulos agudos. Este parámetro indica la longitud mínima de desviación para el diezmado\n" "0 para desactivar." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "máquina compatible ascendente" @@ -14011,6 +14085,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroide" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede mejorar la calidad de la superficie superior." @@ -14544,6 +14624,12 @@ msgstr "Con qué tipo de G-Code es compatible la impresora." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Impresora Modificada para Pellets" @@ -15583,6 +15669,12 @@ msgstr "Retracción larga al cambiar de extrusor" msgid "Retraction distance when extruder change" msgstr "Distancia de retracción al cambiar de extrusor" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Altura de Salto en Z" @@ -15676,6 +15768,9 @@ msgstr "Longitud extra de reinicio" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Cuando la retracción se compensa después de un desplazamiento, el extrusor expulsará esta cantidad adicional de filamento. Esta función no suele ser necesaria." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Cuando se compensa la retracción después de cambiar de cabezal, el extrusor expulsará esta cantidad adicional de filamento." @@ -16082,6 +16177,12 @@ msgstr "Cambio de herramienta en la torre de purga" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Obliga al cabezal a desplazarse hasta la torre de purga antes de emitir el comando de cambio de herramienta (Tx). Solo es relevante para impresoras con múltiples extrusores (múltiples cabezales) que utilicen una torre de limpieza de tipo 2. Por defecto, Orca omite el desplazamiento en máquinas con múltiples cabezales porque el firmware se encarga del cambio de cabezal, lo que puede provocar que el comando Tx se emita por encima de la pieza impresa. Habilita esta opción si deseas que el cambio de herramienta se emita siempre por encima de la torre de purga." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Sin capas de baja densidad (beta)" @@ -19281,9 +19382,6 @@ msgstr "Impresora física" msgid "Print Host upload" msgstr "Mandar al servidor de impresión" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema." - msgid "Select a Flashforge printer" msgstr "Selecciona una impresora Flashforge" @@ -20125,9 +20223,6 @@ msgstr "Ha ocurrido algo inesperado al intentar iniciar sesión, inténtelo de n msgid "User canceled." msgstr "Cancelado por el usuario." -msgid "Head diameter" -msgstr "Diámetro de la cabeza" - msgid "Max angle" msgstr "Ángulo máximo" @@ -20861,6 +20956,22 @@ msgstr "" "Evita la deformación\n" "¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "La altura de la capa es demasiado pequeña.\n" +#~ "Se establecerá en min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "¿Desea ajustar el rango automáticamente?\n" + +#~ msgid "Head diameter" +#~ msgstr "Diámetro de la cabeza" + #~ msgid "Print order within a single layer." #~ msgstr "Orden de impresión dentro de cada capa." diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index fa10cc387f..cceccaa64c 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -4606,6 +4606,20 @@ msgstr "Uneko ganberako tenperatura materialaren tenperatura segurua baino handi msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Ganberako gutxieneko tenperatura (%d ℃) helburuko ganbera-tenperatura (%d ℃) baino altuagoa da. Gutxieneko balioa inprimaketa hasten den atalasea da, ganberak helbururantz berotzen jarraitzen duen bitartean; beraz, ez luke helburua gainditu behar. Helburuko baliora mugatuko da." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Doitu" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4725,6 +4739,12 @@ msgstr "" "Bai - Gaitu Arachne horma-sorgailua\n" "Ez - Desgaitu Arachne horma-sorgailua eta ezarri gainazal zimurraren [Desplazamendua] modua" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Itsaspen ertzaren zabalera" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Espiral moduak baldintza hauetan bakarrik funtzionatzen du: horma-begiztak 1 izatea, euskarriak desgaituta egotea, haztatze bidezko material-metaketa detektatzea desgaituta egotea, goiko estalki-geruzak 0 izatea, dentsitate baxuko betegarriaren dentsitatea 0 izatea eta timelapse mota tradizionala izatea." @@ -4740,6 +4760,9 @@ msgstr "" "Bai - Aldatu ezarpen hauek eta gaitu espiral/loreontzi modua automatikoki\n" "Ez - Utzi bertan behera espiral modua gaitzea" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Inprimatzen" @@ -4979,6 +5002,12 @@ msgstr "Hutsegitea gertatu da kalibrazioko G-Code-a sortzean" msgid "Calibration error" msgstr "Kalibrazio akatsa" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Sarea ez dago erabilgarri" @@ -5192,9 +5221,6 @@ msgstr "Patroi baliogabea. Erabili N, N#K edo komaz bereizitako zerrenda bat, sa msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formatuak ez du balio. Espero den formatu bektoriala: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Sistema-agenteak" @@ -5828,7 +5854,7 @@ msgstr "Bolumena:" msgid "Size:" msgstr "Tamaina:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "G-code ibilbideen gatazkak aurkitu dira %d geruzan, Z = %.2lf mm. Urrundu gehiago gatazkan dauden objektuak (%s <-> %s)." @@ -6005,6 +6031,9 @@ msgstr "Gailu anitz" msgid "Project" msgstr "Proiektua" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Bai" @@ -6132,6 +6161,12 @@ msgstr "Gorde proiektua honela" msgid "Save current project as" msgstr "Gorde uneko proiektua honela" +msgid "Publish" +msgstr "Argitaratu" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Inportatu 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7909,6 +7944,12 @@ msgstr "Berretsi aurrezarpen hauetako G-codea segurua dela, makinari kalterik ez msgid "Customized Preset" msgstr "Aurrezarpen pertsonalizatua" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP fitxategiko osagai-izena(k) ez dago/daude UTF-8 formatuan!" @@ -8064,19 +8105,19 @@ msgstr "Ez da ordezkatzeko direktoriorik hautatu" msgid "Replaced with 3D files from directory:\n" msgstr "Direktorio honetako 3D fitxategiekin ordeztuta:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ %s saltatu da: fitxategi bera.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ %s saltatu da: fitxategia ez da existitzen.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ %s saltatu da: ezin izan da ordeztu.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ %s ordezkatu da.\n" @@ -8285,6 +8326,14 @@ msgstr "Gorde xerratutako fitxategia honela:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s fitxategia inprimagailuaren biltegiratze-eremura bidali da eta inprimagailuan ikus daiteke." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Pita mota ez dago ezarrita. Ezarri pita eta saiatu berriro." @@ -9142,6 +9191,14 @@ msgstr "Erakutsi onartzen ez diren aurrezarpenak" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Erakutsi bateraezinak edo onartu gabeak diren aurrezarpenak inprimagailuaren eta filamentuaren goitibeherako zerrendetan. Aurrezarpen hauek ezin dira hautatu." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Ezaugarri esperimentalak" @@ -9374,9 +9431,6 @@ msgstr "Joan modeloa argitaratzeko web-orrira" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Oharra: prestaketak minutu batzuk iraun ditzake. Izan pazientzia." -msgid "Publish" -msgstr "Argitaratu" - msgid "Publish was canceled" msgstr "Argitaratzea bertan behera utzi da" @@ -9392,6 +9446,21 @@ msgstr "Datuak igotzen" msgid "Jump to webpage" msgstr "Joan web-orrira" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Gorde %s honela" @@ -9402,9 +9471,21 @@ msgstr "Erabiltzailearen aurrezarpena" msgid "Preset Inside Project" msgstr "Proiektu barruko aurrezarpena" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Bereizi gurasotik" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Izena ez dago erabilgarri." @@ -10124,22 +10205,6 @@ msgstr "Ziur aukera hau gaitu nahi duzula?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Betegarri-patroiak normalean biraketa automatikoki kudeatzeko diseinatuta daude, behar bezala inprimatzeko eta nahi den efektua lortzeko (adibidez, Giroidea edo Kubikoa). Uneko dentsitate baxuko betegarri-patroia biratzeak euskarri eskasa eragin dezake. Kontuz jarraitu eta egiaztatu arretaz inprimatze-arazorik sor daitekeen. Ziur zaude aukera hau gaitu nahi duzula?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Geruza-altuera txikiegia da.\n" -"min_layer_height baliora ezarriko da\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Geruza-altuerak Inprimagailuaren ezarpenak -> Estrusorea -> Geruza-altueraren mugak ataleko muga gainditzen du; horrek inprimatze-kalitateko arazoak sor ditzake." - -msgid "Adjust to the set range automatically?\n" -msgstr "Doitu automatikoki ezarritako barrutira?\n" - -msgid "Adjust" -msgstr "Doitu" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Funtzio esperimentala: filamentu aldaketetan distantzia handiagoan atzera egitea eta moztea, purgatzea minimizatzeko. Purgatzea nabarmen murriztu dezakeen arren, pitaren buxadurak edo bestelako inprimatze-arazoak izateko arriskua ere handitu dezake." @@ -10333,6 +10398,9 @@ msgstr "Erreserbatutako gako-hitzak aurkitu dira" msgid "Setting Overrides" msgstr "Ezarpenen gainidazketak" +msgid "Retraction when switching material" +msgstr "Atzera-egitea materiala aldatzean" + msgid "Basic information" msgstr "Oinarrizko informazioa" @@ -10459,6 +10527,12 @@ msgstr "Prozesu-profil bateragarriak" msgid "Printable space" msgstr "Inprimatzeko espazioa" +msgid "Printer Agent" +msgstr "Inprimagailu-agentea" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Hautatu sare-agentearen inplementazioa inprimagailuarekin komunikatzeko. Erabilgarri dauden agenteak abioan erregistratzen dira." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10584,9 +10658,6 @@ msgstr "Geruza-altueraren mugak" msgid "Z-Hop" msgstr "Z jauzia" -msgid "Retraction when switching material" -msgstr "Atzera-egitea materiala aldatzean" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11912,6 +11983,9 @@ msgstr " bazterketa-eremu batetik gertuegi dago, eta talkak eragingo ditu.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " material-metaketa detektatzeko eremutik gertuegi dago, eta talkak eragingo ditu.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Hautatutako pita-tenperaturak ez dira bateragarriak. Filamentu bakoitzaren pita-tenperaturak gainerako filamentuen gomendatutako pita-tenperatura tartean egon behar du. Bestela, pita buxatu edo inprimagailua kaltetu daiteke." @@ -12228,9 +12302,6 @@ msgstr "Erabili 3MF G-codearen ordez" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Gaitu aukera hau inprimagailuak 3MF fitxategi bat inprimatze-lan gisa onartzen badu. Gaituta dagoenean, OrcaSlicerrek xerratutako fitxategia .gcode.3mf gisa bidaltzen du, .gcode fitxategi arrunt baten ordez." -msgid "Printer Agent" -msgstr "Inprimagailu-agentea" - msgid "Select the network agent implementation for printer communication." msgstr "Hautatu inprimagailuarekin komunikatzeko sare-agentearen inplementazioa." @@ -12905,9 +12976,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Barru-zubien abiadura. Balioa ehuneko gisa adierazten bada, Zubien abiadura-ren arabera kalkulatuko da. Lehenetsitako balioa % 150ekoa da." -msgid "Brim width" -msgstr "Itsaspen ertzaren zabalera" - msgid "This is the distance from the model to the outermost brim line." msgstr "Hau da modelotik itsaspen ertzaren kanporen lerrora dagoen distantzia." @@ -12987,6 +13055,12 @@ msgstr "" "Geometria sinplifikatu egingo da angelu zorrotzak detektatu aurretik. Parametro honek sinplifikaziorako desbideratzearen gutxieneko luzera adierazten du.\n" "0, desaktibatzeko." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "gorantz bateragarria den makina" @@ -14137,6 +14211,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroidea" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Hau da goiko gainazaleko betegarriaren azelerazioa. Balio txikiago batek goiko gainazalaren kalitatea hobetu dezake." @@ -14676,6 +14756,12 @@ msgstr "Inprimagailua zer G-code motarekin den bateragarria." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Pelletekin moldatutako inprimagailua" @@ -15719,6 +15805,12 @@ msgstr "Atzera-egite luzea estrusorea aldatzean" msgid "Retraction distance when extruder change" msgstr "Atzera-egite distantzia estrusorea aldatzean" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z jauziaren altuera" @@ -15812,6 +15904,9 @@ msgstr "Berrabiaraztean luzera gehigarria" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Mugimenduaren ondoren atzera-egitea konpentsatzen denean, estrusoreak filamentu kantitate gehigarri hau bultzatuko du. Ezarpen hau gutxitan behar da." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Tresna aldatu ondoren atzera-egitea konpentsatzen denean, estrusoreak filamentu kantitate gehigarri hau bultzatuko du." @@ -16220,6 +16315,12 @@ msgstr "Tresna-aldaketa purgatze-dorrean" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Behartu inprimatze-burua purgatze-dorrera joatera tresna aldatzeko agindua (Tx) eman aurretik. 2. motako purgatze-dorrea erabiltzen duten estrusore anitzeko (inprimatze-buru anitzeko) inprimagailuetarako bakarrik da garrantzitsua. Lehenespenez, Orcak ez du joan-etorria egiten inprimatze-buru anitzeko makinetan, firmwareak buruaren aldaketa kudeatzen duelako; horren ondorioz, Tx agindua inprimatutako piezaren gainean eman daiteke. Gaitu aukera hau tresna-aldaketa beti purgatze-dorrearen gainean egin dadin." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Geruza bakandurik ez (beta)" @@ -19429,9 +19530,6 @@ msgstr "Inprimagailu fisikoa" msgid "Print Host upload" msgstr "Inprimatze-ostalariaren karga" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Hautatu sare-agentearen inplementazioa inprimagailuarekin komunikatzeko. Erabilgarri dauden agenteak abioan erregistratzen dira." - msgid "Select a Flashforge printer" msgstr "Hautatu Flashforge inprimagailu bat" @@ -20278,9 +20376,6 @@ msgstr "Ustekabeko zerbait gertatu da saioa hasten saiatzean; saiatu berriro." msgid "User canceled." msgstr "Erabiltzaileak bertan behera utzi du." -msgid "Head diameter" -msgstr "Buruaren diametroa" - msgid "Max angle" msgstr "Gehieneko angelua" @@ -21016,6 +21111,22 @@ msgstr "" "Saihestu okertzea\n" "Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Geruza-altuera txikiegia da.\n" +#~ "min_layer_height baliora ezarriko da\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Geruza-altuerak Inprimagailuaren ezarpenak -> Estrusorea -> Geruza-altueraren mugak ataleko muga gainditzen du; horrek inprimatze-kalitateko arazoak sor ditzake." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Doitu automatikoki ezarritako barrutira?\n" + +#~ msgid "Head diameter" +#~ msgstr "Buruaren diametroa" + #~ msgid "Print order within a single layer." #~ msgstr "Geruza bakarreko inprimatze-ordena." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 1257994f16..5aeed754f0 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -4643,6 +4643,20 @@ msgstr "La température actuelle du caisson est supérieure à la température d msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "La température minimale du caisson (%d℃) est supérieure à la température cible du caisson (%d℃). La valeur minimale est le seuil à partir duquel l’impression démarre tandis que le caisson continue de chauffer vers la cible ; elle ne doit donc pas la dépasser. Elle sera limitée à la cible." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Ajuster" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4762,6 +4776,12 @@ msgstr "" "Oui - Activer le générateur de parois Arachne\n" "Non - Désactiver le générateur de parois Arachne et définir le mode [Déplacement] de la surface irrégulière" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Largeur de la bordure" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Le mode spirale ne fonctionne que lorsque le nombre de parois est 1, le support est désactivé, la détection d'agglomération par sondage est désactivée, les couches supérieures sont à 0, la densité de remplissage clairsemé est à 0 et le type de timelapse est traditionnel." @@ -4777,6 +4797,9 @@ msgstr "" "Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/vase\n" "Non - Annuler l'activation du mode spirale" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Impression" @@ -5016,6 +5039,12 @@ msgstr "Échec de la génération du G-code de calibration" msgid "Calibration error" msgstr "Erreur de la calibration" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Réseau indisponible" @@ -5228,9 +5257,6 @@ msgstr "Motif invalide. Utilisez N, N#K, ou une liste séparée par des virgules msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Agents système" @@ -5871,7 +5897,7 @@ msgstr "Volume :" msgid "Size:" msgstr "Taille :" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z = %.2lfmm. Veuillez séparer davantage les objets en conflit (%s <-> %s)." @@ -6052,6 +6078,9 @@ msgstr "Multi-appareils" msgid "Project" msgstr "Projet" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Oui" @@ -6179,6 +6208,12 @@ msgstr "Enregistrer le projet sous" msgid "Save current project as" msgstr "Enregistrer le projet actuel sous" +msgid "Publish" +msgstr "Publier" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importer des fichiers 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7964,6 +7999,12 @@ msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs af msgid "Customized Preset" msgstr "Préréglage personnalisé" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Le nom des composants dans le fichier STEP n'est pas au format UTF-8 !" @@ -8120,19 +8161,19 @@ msgstr "Le répertoire pour le remplacement n'a pas été sélectionné" msgid "Replaced with 3D files from directory:\n" msgstr "Remplacé par des fichiers 3D depuis le répertoire :\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Ignoré %s : même fichier.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Ignoré %s : le fichier n'existe pas.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Ignoré %s : échec du remplacement.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Remplacé %s.\n" @@ -8341,6 +8382,14 @@ msgstr "Enregistrer le fichier découpé sous :" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Le type de buse n'est pas défini. Veuillez définir la buse et réessayer." @@ -9211,6 +9260,14 @@ msgstr "Afficher les préréglages non pris en charge" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Affiche les préréglages incompatibles ou non pris en charge dans les listes déroulantes d’imprimantes et de filaments. Ces préréglages ne peuvent pas être sélectionnés." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Fonctionnalités expérimentales" @@ -9444,9 +9501,6 @@ msgstr "Accéder à la page internet de publication des modèles" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter." -msgid "Publish" -msgstr "Publier" - msgid "Publish was canceled" msgstr "La publication a été annulée" @@ -9462,6 +9516,21 @@ msgstr "Téléversement des données" msgid "Jump to webpage" msgstr "Ouvrir la page internet" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Enregistrer %s sous" @@ -9472,9 +9541,21 @@ msgstr "Préréglage utilisateur" msgid "Preset Inside Project" msgstr "Préréglage intégré au projet" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Détacher du parent" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Le nom n'est pas disponible." @@ -10211,22 +10292,6 @@ msgstr "Voulez-vous vraiment activer cette option ?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Les motifs de remplissage sont généralement conçus pour gérer la rotation automatiquement afin d'assurer une impression correcte et d'atteindre les effets souhaités (ex. : Gyroïde, Cubique). La rotation du motif de remplissage clairsemé actuel peut entraîner un support insuffisant. Veuillez procéder avec précaution et vérifier soigneusement tout problème d'impression potentiel. Voulez-vous vraiment activer cette option ?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"La hauteur de couche est trop faible.\n" -"Elle sera définie à min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "La hauteur de la couche dépasse la limite fixée dans Paramètres de l’imprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité d’impression." - -msgid "Adjust to the set range automatically?\n" -msgstr "S’ajuster automatiquement à la plage définie ?\n" - -msgid "Adjust" -msgstr "Ajuster" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Fonction expérimentale : Rétracter et couper le filament à une plus grande distance lors des changements de filament afin de minimiser le rinçage. Bien que cela puisse réduire considérablement le rinçage, cela peut également augmenter le risque de bouchage des buses ou d’autres complications d’impression." @@ -10422,6 +10487,9 @@ msgstr "Mots clés réservés trouvés" msgid "Setting Overrides" msgstr "Forçage des réglages" +msgid "Retraction when switching material" +msgstr "Rétraction lors du changement de matériau" + msgid "Basic information" msgstr "Informations de base" @@ -10548,6 +10616,12 @@ msgstr "Profils de traitement compatibles" msgid "Printable space" msgstr "Espace imprimable" +msgid "Printer Agent" +msgstr "Agent d'imprimante" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante. Les agents disponibles sont enregistrés au démarrage." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10673,9 +10747,6 @@ msgstr "Limites de hauteur de couche" msgid "Z-Hop" msgstr "Saut en Z" -msgid "Retraction when switching material" -msgstr "Rétraction lors du changement de matériau" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12010,6 +12081,9 @@ msgstr " est trop proche d'une zone d'exclusion. Cela va entraîner des collisio msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " est trop proche de la zone de détection d'agglomération, et des collisions seront causées.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Les températures de buse sélectionnées sont incompatibles. La température de buse de chaque filament doit se situer dans la plage de température de buse recommandée des autres filaments. Sinon, un bouchage de la buse ou des dommages à l’imprimante peuvent survenir." @@ -12323,9 +12397,6 @@ msgstr "Utiliser le 3MF au lieu du G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activez ceci si l’imprimante accepte un fichier 3MF comme tâche d’impression. Lorsque cette option est activée, Orca Slicer envoie le fichier découpé au format .gcode.3mf au lieu d’un simple fichier .gcode." -msgid "Printer Agent" -msgstr "Agent d'imprimante" - msgid "Select the network agent implementation for printer communication." msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante." @@ -13000,9 +13071,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Vitesse des ponts internes. Si la valeur est exprimée en pourcentage, elle sera calculée sur la base de la vitesse du pont. La valeur par défaut est 150%." -msgid "Brim width" -msgstr "Largeur de la bordure" - msgid "This is the distance from the model to the outermost brim line." msgstr "Distance du modèle à la ligne de bord la plus externe" @@ -13082,6 +13150,12 @@ msgstr "" "La géométrie sera décimée avant de détecter les angles vifs. Ce paramètre indique la longueur minimale de l’écart pour la décimation.\n" "0 pour désactiver" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "machine à compatibilité ascendante" @@ -14236,6 +14310,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroïde" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Il s'agit de l'accélération de la surface supérieure du remplissage. Utiliser une valeur plus petite pourrait améliorer la qualité de la surface supérieure" @@ -14774,6 +14854,12 @@ msgstr "Avec quel type de G-code l'imprimante est-elle compatible." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Imprimante à pellets" @@ -15821,6 +15907,12 @@ msgstr "Rétraction longue lors du changement d'extrudeur" msgid "Retraction distance when extruder change" msgstr "Distance de rétraction lors du changement d'extrudeur" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Hauteur du saut en Z" @@ -15914,6 +16006,9 @@ msgstr "Longueur supplémentaire" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Lorsque la rétraction est compensée après le mouvement de déplacement, l’extrudeuse poussera cette quantité supplémentaire de filament. Ce paramètre est rarement nécessaire." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Lorsque la rétraction est compensée après le changement d’outil, l’extrudeur poussera cette quantité supplémentaire de filament." @@ -16326,6 +16421,12 @@ msgstr "Changement d’outil sur la tour d’essuyage" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Force la tête d’outil à se déplacer vers la tour d’essuyage avant d’émettre la commande de changement d’outil (Tx). Pertinent uniquement pour les imprimantes multi-extrudeurs (à têtes d’outil multiples) utilisant une tour d’essuyage de type 2. Par défaut, Orca omet ce déplacement sur les machines à têtes d’outil multiples car le firmware gère le changement de tête, ce qui peut entraîner l’émission de la commande Tx au-dessus de la pièce imprimée. Activez cette option si vous préférez que le changement d’outil soit toujours émis au-dessus de la tour d’essuyage." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Pas de couches éparses (beta)" @@ -19542,9 +19643,6 @@ msgstr "Imprimante Physique" msgid "Print Host upload" msgstr "Envoi vers l’imprimante hôte" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante. Les agents disponibles sont enregistrés au démarrage." - msgid "Select a Flashforge printer" msgstr "Sélectionner une imprimante Flashforge" @@ -20392,9 +20490,6 @@ msgstr "Un événement inattendu s’est produit lors de la connexion, veuillez msgid "User canceled." msgstr "L’utilisateur a annulé." -msgid "Head diameter" -msgstr "Diamètre de la tête" - msgid "Max angle" msgstr "Angle maximal" @@ -21176,6 +21271,22 @@ msgstr "" "Éviter la déformation\n" "Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "La hauteur de couche est trop faible.\n" +#~ "Elle sera définie à min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "La hauteur de la couche dépasse la limite fixée dans Paramètres de l’imprimante -> Extrudeur -> Limites de la hauteur de la couche, ce qui peut entraîner des problèmes de qualité d’impression." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "S’ajuster automatiquement à la plage définie ?\n" + +#~ msgid "Head diameter" +#~ msgstr "Diamètre de la tête" + #~ msgid "Print order within a single layer." #~ msgstr "Ordre d’impression au sein d’une même couche" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 98cd987512..6c9c5669d8 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4739,6 +4739,20 @@ msgstr "A kamra aktuális hőmérséklete magasabb az anyag biztonságos hőmér msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "A minimális kamrahőmérséklet (%d℃) magasabb a cél kamrahőmérsékletnél (%d℃). A minimális érték az a küszöb, amelynél a nyomtatás elindul, miközben a kamra tovább melegszik a célérték felé, ezért nem haladhatja meg azt. Az érték a célértékre lesz korlátozva." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Módosítás" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4858,6 +4872,12 @@ msgstr "" "Igen - Engedélyezd az Arachne falgenerátort\n" "Nem - Tiltsd le az Arachne falgenerátort, majd állítsd a barázdált felületet [Eltolás] módra" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Perem szélessége" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "A spirál mód csak akkor működik, ha a falhurkok száma 1, a támasz és a szondázásos csomósodásészlelés ki van kapcsolva, a felső héjrétegek száma 0, a kitöltés sűrűsége 0, a Timelapse típusa pedig hagyományos." @@ -4873,6 +4893,10 @@ msgstr "" "Igen - Módosítsd ezeket a beállításokat, és automatikusan kapcsold be a spirál módot\n" "Nem - Most ne kapcsold be a spirál módot" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Nyomtatás" @@ -5112,6 +5136,12 @@ msgstr "Nem sikerült létrehozni a kalibrációs G-kódot" msgid "Calibration error" msgstr "Kalibrációs hiba" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "A hálózat nem érhető el" @@ -5324,10 +5354,6 @@ msgstr "Érvénytelen minta. Használj N, N#K formátumot, vagy vesszővel elvá msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Rendszerügynökök" @@ -5971,7 +5997,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "G-kód útvonalütközés található a(z) %d. rétegen, Z = %.2lfmm. Helyezd távolabb egymástól az ütköző objektumokat (%s <-> %s)." @@ -6153,6 +6179,9 @@ msgstr "Több eszköz" msgid "Project" msgstr "Projekt" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Igen" @@ -6281,6 +6310,12 @@ msgstr "Projekt mentése másként" msgid "Save current project as" msgstr "Jelenlegi projekt mentése másként" +msgid "Publish" +msgstr "Közzététel" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8079,6 +8114,12 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k msgid "Customized Preset" msgstr "Egyedi beállítás" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!" @@ -8244,19 +8285,19 @@ msgstr "A cseréhez nem lett mappa kiválasztva" msgid "Replaced with 3D files from directory:\n" msgstr "Cserélve a mappából származó 3D fájlokra:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ %s kihagyva: azonos fájl.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ %s kihagyva: a fájl nem létezik.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ %s kihagyva: a csere sikertelen.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔%s lecserélve.\n" @@ -8467,6 +8508,14 @@ msgstr "Szeletelt fájl mentése mint:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra." @@ -9362,6 +9411,14 @@ msgstr "Nem támogatott beállítások megjelenítése" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Megjeleníti a nem kompatibilis vagy nem támogatott beállításokat a nyomtató- és filamentlegördülő listákban. Ezek a beállítások nem választhatók ki." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Kísérleti funkciók" @@ -9604,9 +9661,6 @@ msgstr "Ugrás a modell közzététele weboldalra" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Megjegyzés: Az előkészítés több percig is eltarthat. Kérlek, várj." -msgid "Publish" -msgstr "Közzététel" - msgid "Publish was canceled" msgstr "A közzététel törlésre került" @@ -9622,6 +9676,21 @@ msgstr "Adatok feltöltése" msgid "Jump to webpage" msgstr "Ugrás a weboldalra" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s mentése" @@ -9632,9 +9701,21 @@ msgstr "Felhasználói beállítás" msgid "Preset Inside Project" msgstr "Projekt a beállításon belül" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Leválasztás a szülőről" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "A név nem elérhető." @@ -10376,22 +10457,6 @@ msgstr "Biztos, hogy engedélyezed ezt az opciót?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "A kitöltési minták általában maguk kezelik a forgatást a megfelelő nyomtatás és a kívánt hatás elérése érdekében (pl. Gyroid, Cubic). A jelenlegi kitöltési minta elforgatása elégtelen alátámasztáshoz vezethet. Kérlek, járj el körültekintően, és alaposan ellenőrizd a lehetséges nyomtatási problémákat. Biztos, hogy engedélyezed ezt a beállítást?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"A rétegmagasság túl kicsi.\n" -"A rendszer a min_layer_height értékre állítja.\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "A rétegmagasság meghaladja a Nyomtatóbeállítások -> Extruder -> Rétegmagasság limitek menüpontban megadott értéket, ez minőségbeli problémákat okozhat a nyomtatás során." - -msgid "Adjust to the set range automatically?\n" -msgstr "Szeretnéd az értéket automatikusan a beállított tartományhoz igazítani?\n" - -msgid "Adjust" -msgstr "Módosítás" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Kísérleti funkció: Filamentcsere közben nagyobb távolságon történő visszahúzás és elvágás az öblítés minimalizálása érdekében. Bár ez jelentősen csökkentheti az öblítés mértékét, növelheti a fúvóka eltömődésének vagy más nyomtatási problémák kockázatát." @@ -10587,6 +10652,9 @@ msgstr "Foglalt kulcsszavakat találtunk" msgid "Setting Overrides" msgstr "Beállítások felülbírálása" +msgid "Retraction when switching material" +msgstr "Visszahúzás anyagváltáskor" + msgid "Basic information" msgstr "Alapinformációk" @@ -10720,6 +10788,12 @@ msgstr "Kompatibilis folyamatprofilok" msgid "Printable space" msgstr "Nyomtatási terület" +msgid "Printer Agent" +msgstr "Nyomtatóügynök" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Válaszd ki a nyomtatóval való kommunikációhoz használt hálózati ügynököt. Az elérhető ügynököket indításkor regisztrálja a rendszer." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10845,9 +10919,6 @@ msgstr "Rétegmagasság limitek" msgid "Z-Hop" msgstr "Z-emelés" -msgid "Retraction when switching material" -msgstr "Visszahúzás anyagváltáskor" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12200,6 +12271,9 @@ msgstr " túl közel van a tiltott területhez, a nyomtatás során előfordulha msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " túl közel van a csomósodásészlelési területhez, és ez ütközést fog okozni.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "A kiválasztott fúvóka hőmérsékletek nem kompatibilisek. Mindegyik filament fúvóka hőmérsékletének a többi filament ajánlott fúvóka hőmérsékleti tartományába kell esnie. Ellenkező esetben a fúvóka eltömődhet vagy a nyomtató megsérülhet." @@ -12530,9 +12604,6 @@ msgstr "3MF használata G-kód helyett" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Kapcsold be, ha a nyomtató 3MF fájlt fogad el nyomtatási feladatként. Bekapcsolva az Orca Slicer a szeletelt fájlt .gcode.3mf formátumban küldi el egyszerű .gcode fájl helyett." -msgid "Printer Agent" -msgstr "Nyomtatóügynök" - msgid "Select the network agent implementation for printer communication." msgstr "Válaszd ki a nyomtató kommunikációjához használt hálózati ügynök implementációját." @@ -13220,9 +13291,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "A belső hidak sebessége. Ha az érték százalékban van megadva, a bridge_speed alapján lesz kiszámítva. Az alapértelmezett érték 150%." -msgid "Brim width" -msgstr "Perem szélessége" - msgid "This is the distance from the model to the outermost brim line." msgstr "A modell és a legkülső peremvonal közötti távolság" @@ -13302,6 +13370,12 @@ msgstr "" "Az éles szögek észlelése előtt a geometria egyszerűsítve lesz. Ez a paraméter a leegyszerűsítésnél figyelembe vett eltérés minimális hosszát adja meg.\n" "0 értékkel kikapcsolható." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "felfelé kompatibilis gép" @@ -14475,6 +14549,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "A felső felületi kitöltés gyorsulása. Alacsonyabb érték használata javíthatja a felső felület minőségét" @@ -15017,6 +15097,12 @@ msgstr "Milyen G-kóddal kompatibilis a nyomtató." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Granulátumos módosított nyomtató" @@ -16079,6 +16165,12 @@ msgstr "Hosszú visszahúzás extruderváltáskor" msgid "Retraction distance when extruder change" msgstr "Visszahúzási távolság extruderváltáskor" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z-emelés magassága" @@ -16172,6 +16264,9 @@ msgstr "Extra hossz újraindításkor" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Amikor a visszahúzás kompenzálásra kerül utazási mozgás után, az extruder ezt a további szálmennyiséget nyomja előre. Erre a beállításra ritkán van szükség." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Amikor a visszahúzás kompenzálásra kerül szerszámváltás után, az extruder ezt a további szálmennyiséget nyomja előre." @@ -16588,6 +16683,12 @@ msgstr "Szerszámcsere a törlőtoronyban" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "A szerszámcsere parancs (Tx) kiadása előtt a törlőtoronyhoz mozgatja a szerszámfejet. Csak a 2-es típusú törlőtornyot használó többextruderes (több szerszámfejes) nyomtatóknál van jelentősége. Az Orca alapértelmezés szerint kihagyja ezt a mozgást a több szerszámfejes gépeknél, mert a fejcserét a firmware kezeli. Emiatt azonban előfordulhat, hogy a Tx parancsot a nyomtatott tárgy felett adja ki. Kapcsold be ezt a beállítást, ha azt szeretnéd, hogy a szerszámcsere mindig a törlőtorony felett történjen." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Nincsenek ritka rétegek (béta)" @@ -19847,9 +19948,6 @@ msgstr "Fizikai nyomtató" msgid "Print Host upload" msgstr "Feltöltés a nyomtatóra" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Válaszd ki a nyomtatóval való kommunikációhoz használt hálózati ügynököt. Az elérhető ügynököket indításkor regisztrálja a rendszer." - # AI Translated msgid "Select a Flashforge printer" msgstr "Válassz egy Flashforge nyomtatót" @@ -20791,9 +20889,6 @@ msgstr "Bejelentkezés közben váratlan hiba történt, próbáld újra." msgid "User canceled." msgstr "Felhasználó által megszakítva." -msgid "Head diameter" -msgstr "Fej átmérő" - msgid "Max angle" msgstr "Maximális szög" @@ -21607,6 +21702,22 @@ msgstr "" "Kunkorodás elkerülése\n" "Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "A rétegmagasság túl kicsi.\n" +#~ "A rendszer a min_layer_height értékre állítja.\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "A rétegmagasság meghaladja a Nyomtatóbeállítások -> Extruder -> Rétegmagasság limitek menüpontban megadott értéket, ez minőségbeli problémákat okozhat a nyomtatás során." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Szeretnéd az értéket automatikusan a beállított tartományhoz igazítani?\n" + +#~ msgid "Head diameter" +#~ msgstr "Fej átmérő" + #~ msgid "Print order within a single layer." #~ msgstr "Nyomtatási sorrend egyetlen rétegen belül." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 3c43178102..8533b8b39f 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4741,6 +4741,20 @@ msgstr "L'attuale temperatura della camera è superiore alla temperatura di sicu msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "La temperatura minima della camera (%d℃) è superiore alla temperatura target della camera (%d℃). Il valore minimo è la soglia alla quale inizia la stampa mentre la camera continua a riscaldarsi verso il target, quindi non dovrebbe superarlo. Verrà limitato al valore target." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Regola" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4860,6 +4874,12 @@ msgstr "" "Sì - Abilita generatore di pareti Arachne\n" "No - Disabilita generatore di pareti Arachne e imposta la modalità [Spostamento] della Superficie ruvida" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Larghezza tesa" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "La modalità spirale funziona solo quando i perimetri sono 1, il supporto è disabilitato, il rilevamento degli ammassi tramite sondaggio è disabilitato, gli strati superiori della shell sono 0, la densità del riempimento sparso è 0 e il tipo di timelapse è tradizionale." @@ -4875,6 +4895,9 @@ msgstr "" "Sì - Modifica queste impostazioni ed abilita la modalità spirale automaticamente\n" "No - Annulla l'attivazione della modalità a spirale" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Stampa" @@ -5114,6 +5137,12 @@ msgstr "Impossibile generare G-code di calibrazione" msgid "Calibration error" msgstr "Errore di calibrazione" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Rete non disponibile" @@ -5326,9 +5355,6 @@ msgstr "Schema non valido. Utilizzare N, N#K o un elenco separato da virgole con msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agenti di sistema" @@ -5973,7 +5999,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Sono stati trovati conflitti di percorsi nel G-code sullo strato %d, Z = %.2lfmm. Si prega di separare gli oggetti in conflitto (%s <-> %s)." @@ -6154,6 +6180,9 @@ msgstr "Multi-dispositivo" msgid "Project" msgstr "Progetto" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Sì" @@ -6283,6 +6312,12 @@ msgstr "Salva progetto con nome" msgid "Save current project as" msgstr "Salva progetto corrente con nome" +msgid "Publish" +msgstr "Pubblica" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8083,6 +8118,12 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s msgid "Customized Preset" msgstr "Profilo personalizzato" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF8!" @@ -8244,19 +8285,19 @@ msgstr "La directory per la sostituzione non è stata selezionata" msgid "Replaced with 3D files from directory:\n" msgstr "Sostituito con file 3D dalla directory:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Saltato %s: stesso file.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Saltato %s: il file non esiste.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Saltato %s: sostituzione fallita.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Sostituito %s.\n" @@ -8466,6 +8507,14 @@ msgstr "Salva file elaborato con nome:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare." @@ -9381,6 +9430,14 @@ msgstr "Mostra i profili non supportati" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Mostra i profili incompatibili/non supportati negli elenchi a discesa di stampante e filamento. Questi profili non possono essere selezionati." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Funzionalità sperimentali" @@ -9622,9 +9679,6 @@ msgstr "Vai alla pagina web di pubblicazione del modello" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza." -msgid "Publish" -msgstr "Pubblica" - msgid "Publish was canceled" msgstr "La pubblicazione è stata annullata" @@ -9640,6 +9694,21 @@ msgstr "Caricamento dati" msgid "Jump to webpage" msgstr "Vai alla pagina web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salva %s con nome" @@ -9650,9 +9719,21 @@ msgstr "Profilo utente" msgid "Preset Inside Project" msgstr "Profilo interno al progetto" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Scollega dal genitore" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Nome non disponibile." @@ -10392,22 +10473,6 @@ msgstr "Sei sicuro di voler abilitare questa opzione?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "I pattern di riempimento sono generalmente progettati per gestire automaticamente la rotazione per garantire una stampa corretta e ottenere gli effetti desiderati (ad es. Gyroid, Cubico). La rotazione del pattern di riempimento sparso corrente potrebbe portare a un supporto insufficiente. Procedere con cautela e verificare accuratamente eventuali problemi di stampa. Sei sicuro di voler abilitare questa opzione?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"L'altezza dello strato è troppo piccola.\n" -"Sarà impostato su min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa." - -msgid "Adjust to the set range automatically?\n" -msgstr "Regolare automaticamente l'intervallo impostato?\n" - -msgid "Adjust" -msgstr "Regola" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Funzionalità sperimentale: ritrazione e taglio del filamento a una distanza maggiore durante i cambi di filamento per ridurre al minimo lo spurgo. Sebbene possa ridurre notevolmente lo spurgo, può anche aumentare il rischio di intasamento degli ugelli o di altre complicazioni di stampa." @@ -10603,6 +10668,9 @@ msgstr "Parole chiave riservate trovate" msgid "Setting Overrides" msgstr "Sovrascrivi impostazioni" +msgid "Retraction when switching material" +msgstr "Retrazione quando si cambia materiale" + msgid "Basic information" msgstr "Informazioni di base" @@ -10734,6 +10802,12 @@ msgstr "Profili di processo compatibili" msgid "Printable space" msgstr "Spazio di stampa" +msgid "Printer Agent" +msgstr "Agente stampante" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10859,9 +10933,6 @@ msgstr "Limiti altezza strati" msgid "Z-Hop" msgstr "Sollevamento Z" -msgid "Retraction when switching material" -msgstr "Retrazione quando si cambia materiale" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12221,6 +12292,9 @@ msgstr " è troppo vicino all'area di esclusione e si verificheranno collisioni. msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " è troppo vicino all'area di rilevamento ammassi e verranno causate collisioni.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Le temperature degli ugelli selezionate sono incompatibili. La temperatura dell'ugello per ciascun filamento deve rientrare nell'intervallo di temperatura consigliato per gli altri filamenti. In caso contrario, potrebbero verificarsi ostruzioni degli ugelli o danni alla stampante." @@ -12550,9 +12624,6 @@ msgstr "Usa 3MF invece di G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Abilita questa opzione se la stampante accetta un file 3MF come processo di stampa. Quando è abilitata, Orca Slicer invia il file elaborato come .gcode.3mf, invece di un semplice file .gcode." -msgid "Printer Agent" -msgstr "Agente stampante" - msgid "Select the network agent implementation for printer communication." msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante." @@ -13239,9 +13310,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocità dei ponti interni. Se il valore è espresso in percentuale, verrà calcolato in base a bridge_speed. Il valore predefinito è 150%." -msgid "Brim width" -msgstr "Larghezza tesa" - msgid "This is the distance from the model to the outermost brim line." msgstr "Questa è la distanza tra il modello e la linea più esterna della tesa." @@ -13321,6 +13389,12 @@ msgstr "" "La geometria verrà decimata prima di rilevare gli spigoli vivi. Questo parametro indica la lunghezza minima dello scostamento per la decimazione.\n" "0 per disattivare." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "macchina compatibile con versioni successive" @@ -14495,6 +14569,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroide" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Accelerazione del riempimento della superficie superiore. L'utilizzo di un valore inferiore può migliorare la qualità della superficie superiore." @@ -15039,6 +15119,12 @@ msgstr "Con quale tipo di G-code la stampante è compatibile." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Stampante modificata per granuli" @@ -16098,6 +16184,12 @@ msgstr "Retrazione lunga al cambio estrusore" msgid "Retraction distance when extruder change" msgstr "Distanza di retrazione al cambio estrusore" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Altezza sollevamento Z" @@ -16195,6 +16287,9 @@ msgstr "Lunghezza aggiuntiva in ripresa" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Quando la retrazione è compensata dopo uno spostamento, l'estrusore espelle questa quantità aggiuntiva di filamento. Questa impostazione è raramente necessaria." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quando la retrazione è compensata dopo un cambio di testina, l'estrusore espelle questa quantità aggiuntiva di filamento." @@ -16612,6 +16707,12 @@ msgstr "Cambio utensile sulla torre di spurgo" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Forza la testa di stampa a spostarsi sulla torre di spurgo prima di emettere il comando di cambio utensile (Tx). Rilevante solo per le stampanti multi-estrusore (multi-testa) che utilizzano una torre di spurgo di Tipo 2. Per impostazione predefinita Orca salta lo spostamento sulle macchine multi-testa perché il firmware gestisce il cambio della testa, il che può far sì che il comando Tx venga emesso sopra la parte stampata. Abilita questa opzione se desideri che il cambio utensile venga sempre emesso sopra la torre di spurgo." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Nessuno strato sparso (beta)" @@ -19865,9 +19966,6 @@ msgstr "Stampante fisica" msgid "Print Host upload" msgstr "Caricamento host di stampa" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio." - # AI Translated msgid "Select a Flashforge printer" msgstr "Seleziona una stampante Flashforge" @@ -20810,9 +20908,6 @@ msgstr "Si è verificato un problema imprevisto durante il tentativo di accesso. msgid "User canceled." msgstr "Utente rimosso." -msgid "Head diameter" -msgstr "Diametro testa" - msgid "Max angle" msgstr "Angolo massimo" @@ -21631,6 +21726,22 @@ msgstr "" "Evita le deformazioni\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "L'altezza dello strato è troppo piccola.\n" +#~ "Sarà impostato su min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Regolare automaticamente l'intervallo impostato?\n" + +#~ msgid "Head diameter" +#~ msgstr "Diametro testa" + #~ msgid "Print order within a single layer." #~ msgstr "Ordine di stampa all'interno di un singolo strato." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 0d9f044060..2c28d2b166 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4750,6 +4750,20 @@ msgstr "現在のチャンバー温度が材料の安全温度を超えていま msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "最低庫内温度 (%d℃) が目標庫内温度 (%d℃) を上回っています。最低値は、チャンバーが目標に向けて加熱を続けながら印刷を開始するしきい値であるため、目標値を超えてはいけません。値は目標値に制限されます。" +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "調整" + # AI Translated msgid "" "Layer height too small\n" @@ -4873,6 +4887,12 @@ msgstr "" "はい - Arachneウォールジェネレーターを有効にする\n" "いいえ - Arachneウォールジェネレーターを無効にし、ファジースキンを[変位]モードに設定する" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "ブリム幅" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "スパイラルモードは壁ループが1、サポートが無効、プロービングによるクランピング検出が無効、上部シェルレイヤーが0、スパースインフィル密度が0、タイムラプスタイプがトラディショナルの場合のみ機能します。" @@ -4888,6 +4908,10 @@ msgstr "" "はい - 変更して、スパイラルモードを有効にします\n" "いいえ - 変更せず、スパイラルモードを有効しません" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "造形中" @@ -5127,6 +5151,12 @@ msgstr "キャリブレーションG-codeの生成に失敗しました" msgid "Calibration error" msgstr "キャリブレーションエラー" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "ネットワークが利用できません" @@ -5338,10 +5368,6 @@ msgstr "無効なパターンです。N、N#K、またはオプション#K付き msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無効なフォーマット、%1%であるはずです。" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "システムエージェント" @@ -5988,7 +6014,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "レイヤー%d、Z = %.2lfmmでG-codeパスの衝突が検出されました。衝突するオブジェクトをもっと離してください(%s <-> %s)。" @@ -6164,6 +6190,9 @@ msgstr "マルチデバイス" msgid "Project" msgstr "プロジェクト" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "はい" @@ -6292,6 +6321,12 @@ msgstr "プロジェクトを名前を付けて保存" msgid "Save current project as" msgstr "プロジェクトを名前を付けて保存" +msgid "Publish" +msgstr "公開する" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMFをインポート" @@ -8097,6 +8132,12 @@ msgstr "これらのプリセット内のG-codeがマシンに損傷を与えな msgid "Customized Preset" msgstr "カスタマイズされたプリセット" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "ファイルのエンコーディング方式はUTF8形式ではありません" @@ -8262,19 +8303,19 @@ msgstr "置換用のディレクトリが選択されていません" msgid "Replaced with 3D files from directory:\n" msgstr "ディレクトリの3Dファイルで置換しました:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ スキップ %s: 同一ファイル。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ スキップ %s: ファイルが存在しません。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ スキップ %s: 置換に失敗しました。\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ 置換しました %s。\n" @@ -8485,6 +8526,14 @@ msgstr "名前を付けて保存:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%sを送信しました、プリンターにて確認できます" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ノズルタイプが設定されていません。ノズルを設定して再試行してください。" @@ -9404,6 +9453,14 @@ msgstr "非対応のプリセットを表示" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "プリンターとフィラメントのドロップダウンリストに、互換性のない/非対応のプリセットを表示します。これらのプリセットは選択できません。" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "実験的機能" @@ -9644,9 +9701,6 @@ msgstr "モデル公開ページに移動" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "注意: 準備するには数分かかる場合があります、暫くお待ち下さい。" -msgid "Publish" -msgstr "公開する" - msgid "Publish was canceled" msgstr "公開は取り消しました" @@ -9662,6 +9716,21 @@ msgstr "データをアップロード中" msgid "Jump to webpage" msgstr "ウェブページに移動" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%sを名前つけて保存" @@ -9672,9 +9741,21 @@ msgstr "ユーザープリセット" msgid "Preset Inside Project" msgstr "プロジェクト プリセット" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "親から分離" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "名称は使用できません" @@ -10416,22 +10497,6 @@ msgstr "このオプションを有効にしてもよろしいですか?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "インフィルパターンは通常、適切な印刷と意図した効果を確保するために回転を自動的に処理するように設計されています(例: ジャイロイド、キュービック)。現在のスパースインフィルパターンを回転させると、サポートが不十分になる可能性があります。慎重に進め、潜在的な印刷問題を十分に確認してください。このオプションを有効にしてもよろしいですか?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"レイヤー高さが小さすぎます。\n" -"min_layer_heightに設定されます\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "レイヤー高さがプリンター設定 -> エクストルーダー -> レイヤー高さ制限の上限を超えています。印刷品質の問題が発生する可能性があります。" - -msgid "Adjust to the set range automatically?\n" -msgstr "設定範囲に自動調整しますか?\n" - -msgid "Adjust" -msgstr "調整" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "実験的機能: フィラメント交換時により長い距離でフィラメントをリトラクト・カットしてフラッシュを最小化します。フラッシュを大幅に削減できますが、ノズル詰まりやその他の印刷問題のリスクが高まる可能性もあります。" @@ -10621,6 +10686,9 @@ msgstr "保留キーワードが見つかりました" msgid "Setting Overrides" msgstr "上書き設定" +msgid "Retraction when switching material" +msgstr "素材変更時のリトラクション" + msgid "Basic information" msgstr "基本情報" @@ -10751,6 +10819,12 @@ msgstr "互換性のあるプロセスプロファイル" msgid "Printable space" msgstr "造形可能領域" +msgid "Printer Agent" +msgstr "プリンターエージェント" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "プリンター通信用のネットワークエージェント実装を選択します。使用可能なエージェントは起動時に登録されます。" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10877,9 +10951,6 @@ msgstr "積層ピッチの制限" msgid "Z-Hop" msgstr "Z-ホップ" -msgid "Retraction when switching material" -msgstr "素材変更時のリトラクション" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12258,6 +12329,9 @@ msgstr " は除外エリアに近すぎるため、衝突が発生します。\n msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " がクランピング検出エリアに近すぎ、衝突が発生します。\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "選択したノズル温度に互換性がありません。各フィラメントのノズル温度は、他のフィラメントの推奨ノズル温度範囲内に収まる必要があります。そうでない場合、ノズル詰まりやプリンターの損傷が発生する可能性があります。" @@ -12599,9 +12673,6 @@ msgstr "G-codeの代わりに3MFを使用" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "プリンターが印刷ジョブとして3MFファイルを受け付ける場合に有効にします。有効にすると、Orca Slicerはスライス済みファイルを通常の.gcodeファイルではなく.gcode.3mfとして送信します。" -msgid "Printer Agent" -msgstr "プリンターエージェント" - msgid "Select the network agent implementation for printer communication." msgstr "プリンター通信用のネットワークエージェント実装を選択します。" @@ -13320,9 +13391,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "内部ブリッジの速度です。値を%で指定した場合、bridge_speedを基準に計算されます。デフォルト値は150%です。" -msgid "Brim width" -msgstr "ブリム幅" - msgid "This is the distance from the model to the outermost brim line." msgstr "一番外側のブリム線がモデルと距離です。" @@ -13411,6 +13479,12 @@ msgstr "" "鋭角を検出する前にジオメトリが間引かれます。このパラメータは、間引きにおける偏差の最小長さを指定します。\n" "0で無効になります。" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "互換性のあるデバイス" @@ -14634,6 +14708,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "ジャイロイド" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "トップ面のインフィル加速度です。遅くすると表面の仕上がりが向上させることができます" @@ -15233,6 +15313,12 @@ msgstr "プリンターが対応するG-code" msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + # AI Translated msgid "Pellet Modded Printer" msgstr "ペレット改造プリンター" @@ -16374,6 +16460,12 @@ msgstr "押出機切り替え時のロングリトラクション" msgid "Retraction distance when extruder change" msgstr "押出機切替時のリトラクション距離" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + # AI Translated msgid "Z-hop height" msgstr "Zホップの高さ" @@ -16488,6 +16580,9 @@ msgstr "再開時の追加長さ" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "移動後に引込みが補償されると、エクストルーダーはこの追加量のフィラメントを押し出します。 この設定はほとんど必要ありません。" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "ツールの交換後に吸込み分が補正されると、エクストルーダーはこの追加量のフィラメントを押し出します。" @@ -16963,6 +17058,12 @@ msgstr "ワイプタワー上でツール交換" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "ツール交換コマンド (Tx) を発行する前に、ツールヘッドを強制的にワイプタワーへ移動させます。タイプ2のワイプタワーを使用するマルチ押出機 (マルチツールヘッド) プリンターにのみ関係します。デフォルトでは、マルチツールヘッド機ではファームウェアがヘッドの交換を処理するためOrcaは移動をスキップしますが、その結果Txコマンドが造形物の上で発行される場合があります。ツール交換を常にワイプタワーの上で発行したい場合は、このオプションを有効にしてください。" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + # AI Translated msgid "No sparse layers (beta)" msgstr "スパース層なし (ベータ)" @@ -20389,9 +20490,6 @@ msgstr "実物プリンター" msgid "Print Host upload" msgstr "プリントホストのアップロード" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "プリンター通信用のネットワークエージェント実装を選択します。使用可能なエージェントは起動時に登録されます。" - # AI Translated msgid "Select a Flashforge printer" msgstr "Flashforgeプリンターを選択" @@ -21363,9 +21461,6 @@ msgstr "ログイン中に予期しない問題が発生しました。再試行 msgid "User canceled." msgstr "ユーザーがキャンセルしました。" -msgid "Head diameter" -msgstr "直径" - msgid "Max angle" msgstr "最大角度" @@ -22194,6 +22289,22 @@ msgstr "" "反りを避ける\n" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "レイヤー高さが小さすぎます。\n" +#~ "min_layer_heightに設定されます\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "レイヤー高さがプリンター設定 -> エクストルーダー -> レイヤー高さ制限の上限を超えています。印刷品質の問題が発生する可能性があります。" + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "設定範囲に自動調整しますか?\n" + +#~ msgid "Head diameter" +#~ msgstr "直径" + #~ msgid "Print order within a single layer." #~ msgstr "単一レイヤー内の印刷順序。" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 5a6ac0438b..5e81f19e0d 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -4763,6 +4763,20 @@ msgstr "현재 챔버 온도가 재료의 안전 온도보다 높으므로 재 msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "최소 챔버 온도(%d℃)가 목표 챔버 온도(%d℃)보다 높습니다. 최소값은 챔버가 목표 온도까지 계속 가열되는 동안 출력을 시작하는 기준값이므로 목표값을 초과해서는 안 됩니다. 이 값은 목표값으로 제한됩니다." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "조정" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4884,6 +4898,12 @@ msgstr "" "예 - 아라크네 벽 생성기 활성화\n" "아니오 - 아라크네 벽 생성기 비활성화 및 퍼지 스킨 [변위] 모드 설정" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "브림 너비" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "나선형 모드는 벽 루프가 1이고, 서포트가 비활성화되고, 프로빙에 의한 클럼핑 감지가 비활성화되고, 상단 셸 레이어가 0이고, 희소 인필 밀도가 0이고 타임랩스 유형이 전통적인 경우에만 작동합니다." @@ -4899,6 +4919,10 @@ msgstr "" "예 - 이 설정을 변경하고 나선 모드를 자동으로 활성화합니다\n" "아니오 - 이번에는 나선 모드 사용을 포기합니다" +# AI Translated +msgid "N/A" +msgstr "해당 없음" + msgid "Printing" msgstr "출력 중" @@ -5138,6 +5162,12 @@ msgstr "교정 Gcode를 생성하지 못했습니다" msgid "Calibration error" msgstr "교정 오류" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "네트워크를 사용할 수 없음" @@ -5350,10 +5380,6 @@ msgstr "잘못된 패턴입니다. N, N#K 또는 항목당 선택적 #K가 있 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "잘못된 형식입니다. 필요한 벡터 형식: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "해당 없음" - # AI Translated msgid "System agents" msgstr "시스템 에이전트" @@ -6001,7 +6027,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "레이어 %d, Z = %.2lf mm에서 Gcode 경로 충돌이 발견되었습니다. 충돌하는 객체를 더 멀리 분리하세요 (%s <-> %s)." @@ -6178,6 +6204,9 @@ msgstr "멀티 디바이스" msgid "Project" msgstr "프로젝트" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "예" @@ -6306,6 +6335,12 @@ msgstr "프로젝트 다른 이름으로 저장" msgid "Save current project as" msgstr "현재 프로젝트 다른 이름으로 저장" +msgid "Publish" +msgstr "게시" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF 가져오기" @@ -8115,6 +8150,12 @@ msgstr "이러한 사전 설정 내의 Gcode가 기계 손상을 방지할 수 msgid "Customized Preset" msgstr "사용자 정의 프리셋" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 파일 내부의 구성 요소 이름이 UTF8 형식이 아닙니다!" @@ -8288,22 +8329,22 @@ msgid "Replaced with 3D files from directory:\n" msgstr "다음 디렉터리의 3D 파일로 교체했습니다:\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ 건너뜀 %s: 동일한 파일입니다.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ 건너뜀 %s: 파일이 존재하지 않습니다.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ 건너뜀 %s: 교체하지 못했습니다.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ %s을(를) 교체했습니다.\n" @@ -8518,6 +8559,14 @@ msgstr "슬라이스 파일을 다음으로 저장:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s 파일이 프린터의 저장 공간으로 전송되었으며 프린터에서 볼 수 있습니다." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "노즐 유형이 설정되지 않았습니다. 노즐을 설정하고 다시 시도하세요." @@ -9491,6 +9540,14 @@ msgstr "지원되지 않는 사전 설정 표시" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "프린터 및 필라멘트 드롭다운 목록에 호환되지 않거나 지원되지 않는 사전 설정을 표시합니다. 이러한 사전 설정은 선택할 수 없습니다." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "실험적 기능" @@ -9733,9 +9790,6 @@ msgstr "모델 게시 웹 페이지로 이동" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "참고: 준비하는 데 몇 분 정도 걸릴 수 있습니다. 조금만 기다려 주십시오." -msgid "Publish" -msgstr "게시" - msgid "Publish was canceled" msgstr "게시가 취소되었습니다" @@ -9752,6 +9806,21 @@ msgstr "데이터 업로드 중" msgid "Jump to webpage" msgstr "웹 페이지로 이동" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s을(를) 다음으로 저장" @@ -9762,10 +9831,22 @@ msgstr "사용자 사전 설정" msgid "Preset Inside Project" msgstr "프로젝트 내부 사전 설정" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "상위 항목에서 분리" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "이름을 사용할 수 없습니다." @@ -10519,22 +10600,6 @@ msgstr "이 옵션을 사용하시겠습니까?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "채우기 패턴은 일반적으로 올바른 출력과 의도한 효과를 위해 회전을 자동으로 처리하도록 설계되어 있습니다(예: 자이로이드, 큐빅). 현재 드문 채우기 패턴을 회전시키면 지지력이 부족해질 수 있습니다. 신중하게 진행하고 출력 문제가 발생하지 않는지 충분히 확인하십시오. 이 옵션을 활성화하시겠습니까?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"레이어 높이가 너무 작습니다.\n" -"min_layer_height로 설정됩니다.\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "레이어 높이가 프린터 설정 -> 압출기 -> 레이어의 제한을 초과합니다.높이 제한으로 인해 출력 품질 문제가 발생할 수 있습니다." - -msgid "Adjust to the set range automatically?\n" -msgstr "설정 범위에 자동으로 맞춰지나요?\n" - -msgid "Adjust" -msgstr "조정" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "실험적 기능: 플러시를 최소화하기 위해 필라멘트 교체 중에 더 먼 거리에서 필라멘트를 집어넣고 절단합니다. 플러시를 눈에 띄게 줄일 수 있지만 노즐 막힘이나 기타 출력 문제의 위험이 높아질 수도 있습니다." @@ -10728,6 +10793,9 @@ msgstr "예약어를 찾았습니다" msgid "Setting Overrides" msgstr "설정 덮어쓰기" +msgid "Retraction when switching material" +msgstr "재료 전환 시 후퇴" + msgid "Basic information" msgstr "기본 정보" @@ -10861,6 +10929,14 @@ msgstr "호환 프로세스 사전설정" msgid "Printable space" msgstr "출력 가능 공간" +# AI Translated +msgid "Printer Agent" +msgstr "프린터 에이전트" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다. 사용 가능한 에이전트는 시작 시 등록됩니다." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10993,9 +11069,6 @@ msgstr "레이어 높이 한도" msgid "Z-Hop" msgstr "Z올리기" -msgid "Retraction when switching material" -msgstr "재료 전환 시 후퇴" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12388,6 +12461,9 @@ msgstr " 이(가) 제외 영역에 너무 가깝습니다. 출력 시 충돌이 msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " 뭉침 감지 영역에 너무 가까워 충돌이 발생할 수 있습니다.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "선택한 노즐 온도가 서로 호환되지 않습니다. 각 필라멘트의 노즐 온도는 다른 필라멘트의 권장 노즐 온도 범위 안에 있어야 합니다. 그렇지 않으면 노즐 막힘이나 프린터 손상이 발생할 수 있습니다." @@ -12732,10 +12808,6 @@ msgstr "G-code 대신 3MF 사용" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "프린터가 출력 작업으로 3MF 파일을 허용하는 경우 이 옵션을 활성화하십시오. 활성화하면 Orca Slicer가 슬라이스된 파일을 일반 .gcode 파일 대신 .gcode.3mf로 전송합니다." -# AI Translated -msgid "Printer Agent" -msgstr "프린터 에이전트" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다." @@ -13446,9 +13518,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "내부 브릿지의 속도. 값을 백분율로 표현하면 bridge_speed를 기준으로 계산됩니다. 기본값은 150%입니다." -msgid "Brim width" -msgstr "브림 너비" - msgid "This is the distance from the model to the outermost brim line." msgstr "모델과 가장 바깥쪽 브림 선까지의 거리" @@ -13533,6 +13602,12 @@ msgstr "" "날카로운 각도를 감지하기 전에 형상이 무시됩니다. 이 매개변수는 무시하는 형상의 최소 길이를 나타냅니다.\n" "0으로 비활성화합니다" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "상향 호환 장치" @@ -14729,6 +14804,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "자이로이드" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "상단 표면 가속도. 낮은 값을 사용하면 상단 표면 품질이 향상될 수 있습니다" @@ -15291,6 +15372,12 @@ msgstr "프린터와 호환되는 Gcode 종류" msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "펠릿 프린터" @@ -16400,6 +16487,12 @@ msgstr "압출기 교체 시 긴 수축" msgid "Retraction distance when extruder change" msgstr "압출기 교체 시 수축 거리" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z올리기 높이" @@ -16498,6 +16591,9 @@ msgstr "재 시작 시 추가 길이" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "이동 후 후퇴가 보상되면 압출기는 이 추가 양의 필라멘트를 밀어냅니다. 이 설정은 거의 필요하지 않습니다." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "툴 체인지 후 후퇴가 보상되면 압출기는 이 추가 양의 필라멘트를 밀어냅니다." @@ -16922,6 +17018,12 @@ msgstr "프라임 타워에서 툴 체인지" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "툴 체인지 명령(Tx)을 실행하기 전에 툴헤드가 반드시 프라임 타워로 이동하도록 합니다. 유형 2 프라임 타워를 사용하는 다중 압출기(멀티 툴헤드) 프린터에만 해당됩니다. 기본적으로 Orca는 멀티 툴헤드 장비에서 펌웨어가 헤드 교체를 처리하므로 이동을 생략하는데, 이 때문에 Tx 명령이 출력물 위에서 실행될 수 있습니다. 툴 체인지가 항상 프라임 타워 위에서 실행되도록 하려면 이 옵션을 활성화하십시오." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "희소 레이어 없음(베타)" @@ -20261,10 +20363,6 @@ msgstr "물리 프린터" msgid "Print Host upload" msgstr "출력 호스트 업로드" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다. 사용 가능한 에이전트는 시작 시 등록됩니다." - # AI Translated msgid "Select a Flashforge printer" msgstr "Flashforge 프린터 선택" @@ -21217,9 +21315,6 @@ msgstr "로그인을 시도하는 동안 예기치 않은 문제가 발생했습 msgid "User canceled." msgstr "사용자가 취소했습니다." -msgid "Head diameter" -msgstr "헤드 직경" - msgid "Max angle" msgstr "최대 각도" @@ -22057,6 +22152,22 @@ msgstr "" "뒤틀림 방지\n" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "레이어 높이가 너무 작습니다.\n" +#~ "min_layer_height로 설정됩니다.\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "레이어 높이가 프린터 설정 -> 압출기 -> 레이어의 제한을 초과합니다.높이 제한으로 인해 출력 품질 문제가 발생할 수 있습니다." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "설정 범위에 자동으로 맞춰지나요?\n" + +#~ msgid "Head diameter" +#~ msgstr "헤드 직경" + #~ msgid "Print order within a single layer." #~ msgstr "단일 레이어 내의 출력 순서" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 9a6b7ae590..aac9ef9dc6 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -4728,6 +4728,20 @@ msgstr "Dabartinė kameros temperatūra yra aukštesnė už saugią medžiagos t msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Minimali kameros temperatūra (%d℃) yra aukštesnė nei tikslinė kameros temperatūra (%d℃). Minimali vertė yra slenkstis, kurį pasiekus pradedamas spausdinimas, kol kamera vis dar kaitinama iki tikslinės temperatūros, todėl ji neturėtų viršyti tikslinės. Vertė bus apribota iki tikslinės temperatūros." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Sureguliuoti" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4847,6 +4861,12 @@ msgstr "" "Taip – įjungti „Arachne“ sienelių generatorių\n" "Ne – išjungti „Arachne“ sienelių generatorių ir nustatyti „Šiurkštaus paviršius“ režimą [Slinktis]" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Pado apvado plotis" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Spiralinis režimas veikia tik tada, kai sienelės kilpų skaičius yra 1, atramos išjungtos, sulipimo aptikimas zonduojant išjungtas, viršutinių apvalkalo sluoksnių yra 0, reto užpildo tankis yra 0 %, o laiko intervalų vaizdo įrašo tipas – tradicinis." @@ -4862,6 +4882,9 @@ msgstr "" "Taip – pakeisti šiuos nustatymus ir automatiškai įjungti spiralinį režimą\n" "Ne – nenaudoti spiralinio režimo" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Spausdinimas" @@ -5101,6 +5124,12 @@ msgstr "Nepavyko sugeneruoti kalibravimo G-kodo" msgid "Calibration error" msgstr "Kalibravimo klaida" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Tinklas neprieinamas" @@ -5313,9 +5342,6 @@ msgstr "Neteisingas šablonas. Naudokite N, N#K arba kableliais atskirtą sąra msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Netinkamas formatas. Tinkamas vektorinis formatas: \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Sisteminiai agentai" @@ -5961,7 +5987,7 @@ msgstr "Tūris:" msgid "Size:" msgstr "Dydis:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Rasta G-kodo trajektorijų konfliktų %d sluoksnyje, Z = %.2lfmm. Prašome labiau atskirti konfliktuojančius objektus (%s <-> %s)." @@ -6142,6 +6168,9 @@ msgstr "Kelių įrenginių valdymas (Multi-device)" msgid "Project" msgstr "Projektas" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Taip" @@ -6269,6 +6298,12 @@ msgstr "Įrašyti projektą kaip" msgid "Save current project as" msgstr "Įrašyti dabartinį projektą kaip" +msgid "Publish" +msgstr "Talpinti" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuoti 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8074,6 +8109,12 @@ msgstr "Patvirtinkite, kad šiuose profiliuose esantis G-kodas yra saugus, kad i msgid "Customized Preset" msgstr "Pritaikytas profilis" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!" @@ -8239,19 +8280,19 @@ msgstr "" "Pakeista 3D failais iš katalogo:\n" "\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Praleistas %s: tas pats failas.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Praleistas %s: failas neegzistuoja.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Praleistas %s: nepavyko pakeisti.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Pakeistas %s.\n" @@ -8461,6 +8502,14 @@ msgstr "Išsaugoti susluoksniuotą failą kaip:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Failas %s išsiųstas į spausdintuvo laikmeną ir gali būti peržiūrimas spausdintuve." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Purkštuko tipas nenustatytas. Nustatykite purkštuką ir bandykite dar kartą." @@ -9329,6 +9378,14 @@ msgstr "Rodyti nepalaikomus profilius" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Rodyti nesuderinamus / nepalaikomus profilius spausdintuvų ir gijų išskleidžiamuosiuose sąrašuose. Šių profilių pasirinkti negalima." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Eksperimentinis" @@ -9562,9 +9619,6 @@ msgstr "Pereiti į modelio talpinimo interneto puslapį" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Pastaba: paruošimas gali užtrukti kelias minutes. Būkite kantrūs." -msgid "Publish" -msgstr "Talpinti" - msgid "Publish was canceled" msgstr "Publikavimas buvo atšauktas" @@ -9580,6 +9634,21 @@ msgstr "Įkeliami duomenys" msgid "Jump to webpage" msgstr "Pereiti į interneto puslapį" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Išsaugoti %s kaip" @@ -9590,9 +9659,21 @@ msgstr "Naudotojo profilis" msgid "Preset Inside Project" msgstr "Profilis projekto viduje" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Atskirti nuo tėvinio profilio" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Nėra pavadinimo." @@ -10330,24 +10411,6 @@ msgstr "Ar tikrai norite įjungti šią parinktį?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Užpildymo modeliai paprastai yra suprojektuoti taip, kad automatiškai tvarkytų sukimąsi, siekiant užtikrinti tinkamą spausdinimą ir pasiekti numatytus efektus (pvz., Gyroid, Cubic). Sukant esamą retą užpildymo modelį, gali atsirasti nepakankamas atraminis paviršius. Prašome elgtis atsargiai ir atidžiai patikrinti, ar nėra galimų spausdinimo problemų. Ar tikrai norite įjungti šią parinktį?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Per mažas sluoksnio aukštis.\n" -"Jis bus nustatytas į min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Sluoksnio aukštis viršija ribą, nurodytą Spausdintuvo nustatymai -> Ekstruderis -> Sluoksnio aukščio ribos, tai gali sukelti spausdinimo kokybės problemų." - -msgid "Adjust to the set range automatically?\n" -msgstr "" -"Sureguliuoti pagal nustatytą diapazoną automatiškai?\n" -"\n" - -msgid "Adjust" -msgstr "Sureguliuoti" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Eksperimentinė funkcija: gijos įtraukimas ir nukirpimas didesniu atstumu keičiant giją, siekiant sumažinti išvalymą (flush). Nors tai gali pastebimai sumažinti išvalymą, taip pat gali padidėti purkštuko užsikimšimo ar kitų spausdinimo komplikacijų rizika." @@ -10547,6 +10610,9 @@ msgstr "Rasti rezervuoti raktažodžiai" msgid "Setting Overrides" msgstr "Nustatymų perrašymas" +msgid "Retraction when switching material" +msgstr "Įtraukimas keičiant medžiagą" + msgid "Basic information" msgstr "Pagrindinė informacija" @@ -10673,6 +10739,12 @@ msgstr "Suderinami apdorojimo profiliai" msgid "Printable space" msgstr "Erdvė spausdinimui" +msgid "Printer Agent" +msgstr "Spausdintuvo agentas" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti. Prieinami agentai užregistruojami paleidimo metu." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10798,9 +10870,6 @@ msgstr "Sluoksnio aukščio ribos" msgid "Z-Hop" msgstr "Z šuolis" -msgid "Retraction when switching material" -msgstr "Įtraukimas keičiant medžiagą" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12146,6 +12215,9 @@ msgstr "" " yra per arti sulipimo aptikimo zonos, todėl įvyks susidūrimai.\n" "\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Pasirinktos purkštuko temperatūros yra nesuderinamos. Kiekvienos gijos purkštuko temperatūra turi patekti į kitų gijų rekomenduojamos temperatūros diapazoną. Priešingu atveju gali užsikimšti purkštukas arba sugesti spausdintuvas." @@ -12459,9 +12531,6 @@ msgstr "Vietoj G-kodo naudoti 3MF" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Įjunkite, jei spausdintuvas spausdinimo užduotims priima 3MF failus. Kai įjungta, „Orca Slicer“ sugeneruotą failą siunčia kaip „.gcode.3mf“, o ne kaip paprastą „.gcode“ failą." -msgid "Printer Agent" -msgstr "Spausdintuvo agentas" - msgid "Select the network agent implementation for printer communication." msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti." @@ -13134,9 +13203,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Vidinių tiltelių spausdinimo greitis. Jei reikšmė nurodoma procentais, ji apskaičiuojama pagal „bridge_speed“ (tiltelių greitį). Numatytoji reikšmė – 150 %." -msgid "Brim width" -msgstr "Pado apvado plotis" - msgid "This is the distance from the model to the outermost brim line." msgstr "Atstumas nuo modelio iki išorinės krašto linijos" @@ -13217,6 +13283,12 @@ msgstr "" "Prieš aptinkant aštrius kampus, geometrija yra supaprastinama (decimuojama). Šis parametras nurodo minimalų nuokrypio ilgį supaprastinimui atlikti.\n" "Įrašykite 0, kad išjungtumėte." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "atgaliniu būdu suderinamas įrenginys" @@ -14370,6 +14442,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroidas" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Viršutinio paviršiaus užpildo pagreitis. Naudojant mažesnę vertę gali pagerėti viršutinio paviršiaus kokybė." @@ -14914,6 +14992,12 @@ msgstr "Su kokiu G kodu suderinamas spausdintuvas." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Modifikuotas granulinis spausdintuvas" @@ -15955,6 +16039,12 @@ msgstr "Ilgas įtraukimas keičiant ekstruderį" msgid "Retraction distance when extruder change" msgstr "Įtraukimo atstumas keičiant ekstruderį" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "„Z-hop“ (pakėlimo) aukštis" @@ -16049,6 +16139,9 @@ msgstr "Papildomas ilgis po sugrąžinimo" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Kai po judėjimo kompensuojamas gijos įtraukimas, ekstruderis papildomai išstums šį gijos kiekį. Šis nustatymas reikalingas retai." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Kai po įrankio pakeitimo kompensuojamas gijos įtraukimas, ekstruderis papildomai išstums šį gijos kiekį." @@ -16461,6 +16554,12 @@ msgstr "Įrankio keitimas virš valymo bokšto" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Priverstinai nukreipti spausdinimo galvutę prie valymo bokšto prieš vykdant įrankio keitimo komandą (Tx). Aktualu tik spausdintuvams su keliais ekstruderiais (keliomis galvutėmis), naudojantiems 2 tipo valymo bokštą. Pagal numatytuosius nustatymus „OrcaSlicer“ praleidžia šį judesį kelių galvučių įrenginiuose, nes galvučių sukeitimą valdo aparatinė programinė įranga, todėl Tx komanda gali būti įvykdyta virš spausdinamos detalės. Įjunkite šią parinktį, jei norite, kad įrankio keitimas visada vyktų virš valymo bokšto." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Nėra retų sluoksnių (beta)" @@ -19702,9 +19801,6 @@ msgstr "Fizinis spausdintuvas" msgid "Print Host upload" msgstr "Įkėlimas spausdinimui tinkle" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti. Prieinami agentai užregistruojami paleidimo metu." - msgid "Select a Flashforge printer" msgstr "Pasirinkite „Flashforge“ spausdintuvą" @@ -20552,9 +20648,6 @@ msgstr "Bandant prisijungti įvyko kažkas netikėto. Bandykite dar kartą." msgid "User canceled." msgstr "Vartotojas atšaukė." -msgid "Head diameter" -msgstr "Galvutės skersmuo" - msgid "Max angle" msgstr "Maksimalus kampas" @@ -21336,6 +21429,24 @@ msgstr "" "Venkite deformacijų (warping)\n" "Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Per mažas sluoksnio aukštis.\n" +#~ "Jis bus nustatytas į min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Sluoksnio aukštis viršija ribą, nurodytą Spausdintuvo nustatymai -> Ekstruderis -> Sluoksnio aukščio ribos, tai gali sukelti spausdinimo kokybės problemų." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "" +#~ "Sureguliuoti pagal nustatytą diapazoną automatiškai?\n" +#~ "\n" + +#~ msgid "Head diameter" +#~ msgstr "Galvutės skersmuo" + #~ msgid "Print order within a single layer." #~ msgstr "Elementų spausdinimo eiliškumas vieno sluoksnio ribose." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 1ae53b2888..4d37e65fee 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5150,6 +5150,20 @@ msgstr "De huidige kamertemperatuur is hoger dan de veilige temperatuur van het msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "De minimale kamertemperatuur (%d℃) is hoger dan de doelkamertemperatuur (%d℃). De minimale waarde is de drempel waarbij het printen start terwijl de kamer verder opwarmt naar de doelwaarde; deze mag die dus niet overschrijden. De waarde wordt begrensd tot de doelwaarde." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Aanpassen" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -5277,6 +5291,12 @@ msgstr "" "Ja - Arachne-wandgenerator inschakelen\n" "Nee - Arachne-wandgenerator uitschakelen en de modus [Displacement] van Vage buitenkant instellen" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Rand breedte" + # AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "De spiraalmodus werkt alleen wanneer Wanden 1 is, ondersteuning is uitgeschakeld, klontdetectie via aftasten is uitgeschakeld, het aantal bovenste buitenlagen 0 is, de dichtheid van de dunne vulling (infill) 0 is en het timelapse-type traditioneel is." @@ -5293,6 +5313,9 @@ msgstr "" "Ja - Pas de instellingen aan en zet de vaas modus automatisch aan\n" "Nee - Pas de vaas modus deze keer niet toe" +msgid "N/A" +msgstr "N/B" + msgid "Printing" msgstr "Printen" @@ -5582,6 +5605,12 @@ msgstr "Cali G-code niet gegenereerd" msgid "Calibration error" msgstr "Kalibratiefout" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Netwerk niet beschikbaar" @@ -5821,9 +5850,6 @@ msgstr "Ongeldig patroon. Gebruik N, N#K of een door komma's gescheiden lijst me msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Onjuist formaat. Het Vector formaat wordt verwacht: \"%1%\"" -msgid "N/A" -msgstr "N/B" - # AI Translated msgid "System agents" msgstr "Systeemagenten" @@ -6513,7 +6539,7 @@ msgid "Size:" msgstr "Maat:" # AI Translated -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Er zijn conflicten tussen G-code-paden gevonden op laag %d, Z = %.2lfmm. Plaats de conflicterende objecten verder uit elkaar (%s <-> %s)." @@ -6714,6 +6740,9 @@ msgstr "Meerdere apparaten" msgid "Project" msgstr "Project" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Ja" @@ -6844,6 +6873,12 @@ msgstr "Bewaar project als" msgid "Save current project as" msgstr "Bewaar huidig project als" +msgid "Publish" +msgstr "Publiceren" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF importeren" @@ -8824,6 +8859,12 @@ msgstr "Controleer of de G-codes in deze presets veilig zijn om schade aan de ma msgid "Customized Preset" msgstr "Aangepaste voorinstelling" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Naam van componenten in step-bestand is niet UTF8-formaat!" @@ -8999,22 +9040,22 @@ msgid "Replaced with 3D files from directory:\n" msgstr "Vervangen door 3D-bestanden uit de map:\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Overgeslagen %s: hetzelfde bestand.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Overgeslagen %s: bestand bestaat niet.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Overgeslagen %s: vervangen is mislukt.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Vervangen %s.\n" @@ -9235,6 +9276,14 @@ msgstr "Bewaar het geslicede bestand als:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden bekeken." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Het mondstuktype is niet ingesteld. Stel het mondstuk in en probeer het opnieuw." @@ -10243,6 +10292,14 @@ msgstr "Niet-ondersteunde voorinstellingen tonen" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Toon incompatibele/niet-ondersteunde voorinstellingen in de keuzelijsten voor printer en filament. Deze voorinstellingen kunnen niet worden geselecteerd." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Experimentele functies" @@ -10494,9 +10551,6 @@ msgstr "Ga naar de website om het model te publiceren" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." -msgid "Publish" -msgstr "Publiceren" - msgid "Publish was canceled" msgstr "Het publiceren is geannuleerd" @@ -10513,6 +10567,21 @@ msgstr "Gegevens uploaden" msgid "Jump to webpage" msgstr "Ga naar de website" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Bewaar %s als" @@ -10523,10 +10592,22 @@ msgstr "Gebruikersvoorinstelling" msgid "Preset Inside Project" msgstr "Voorinstelling binnen project" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Losmaken van bovenliggend element" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Naam is niet beschikbaar." @@ -11336,22 +11417,6 @@ msgstr "Weet u zeker dat u deze optie wilt inschakelen?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Vulpatronen zijn doorgaans ontworpen om rotatie automatisch af te handelen, zodat ze goed printen en hun beoogde effect bereiken (bijv. Gyroide, Kubisch). Het roteren van het huidige patroon voor de dunne vulling (infill) kan tot onvoldoende ondersteuning leiden. Ga voorzichtig te werk en controleer grondig op mogelijke printproblemen. Weet u zeker dat u deze optie wilt inschakelen?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Laaghoogte is te klein.\n" -"Het zal worden ingesteld op min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken." - -msgid "Adjust to the set range automatically?\n" -msgstr "Automatisch aanpassen aan het ingestelde bereik?\n" - -msgid "Adjust" -msgstr "Aanpassen" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Experimentele functie: Het filament op grotere afstand terugtrekken en afsnijden tijdens filamentwisselingen om flush te minimaliseren. Hoewel het het doorspoelen aanzienlijk kan verminderen, kan het ook het risico op een verstopt mondstuk of andere printcomplicaties vergroten." @@ -11551,6 +11616,9 @@ msgstr "Gereserveerde zoekworden gevonden" msgid "Setting Overrides" msgstr "Overschrijvingen instellen" +msgid "Retraction when switching material" +msgstr "Terugtrekken (retraction) bij het wisselen van filament" + msgid "Basic information" msgstr "Basisinformatie" @@ -11689,6 +11757,14 @@ msgstr "Geschikte proces profielen" msgid "Printable space" msgstr "Ruimte waarbinnen geprint kan worden" +# AI Translated +msgid "Printer Agent" +msgstr "Printeragent" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer. Beschikbare agenten worden bij het opstarten geregistreerd." + # AI Translated #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format @@ -11829,9 +11905,6 @@ msgstr "Limieten voor laaghoogte" msgid "Z-Hop" msgstr "Z-hop" -msgid "Retraction when switching material" -msgstr "Terugtrekken (retraction) bij het wisselen van filament" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -13323,6 +13396,9 @@ msgstr " bevindt zich te dicht bij het uitsluitingsgebied en er zullen botsingen msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " ligt te dicht bij het gebied voor klontdetectie, waardoor er botsingen zullen ontstaan.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "De geselecteerde mondstuktemperaturen zijn niet compatibel. De mondstuktemperatuur van elk filament moet binnen het aanbevolen mondstuktemperatuurbereik van de andere filamenten vallen. Anders kan het mondstuk verstopt raken of kan de printer beschadigd raken." @@ -13686,10 +13762,6 @@ msgstr "3MF gebruiken in plaats van G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Schakel dit in als de printer een 3MF-bestand als printopdracht accepteert. Indien ingeschakeld verzendt Orca Slicer het geslicede bestand als een .gcode.3mf in plaats van als een gewoon .gcode-bestand." -# AI Translated -msgid "Printer Agent" -msgstr "Printeragent" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer." @@ -14443,9 +14515,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Snelheid van interne bruggen. Als de waarde als percentage wordt uitgedrukt, wordt deze berekend op basis van bridge_speed. De standaardwaarde is 150%." -msgid "Brim width" -msgstr "Rand breedte" - msgid "This is the distance from the model to the outermost brim line." msgstr "Dit is de afstand van het model tot de buitenste randlijn." @@ -14537,6 +14606,12 @@ msgstr "" "De geometrie wordt vereenvoudigd voordat scherpe hoeken worden gedetecteerd. Deze parameter geeft de minimale lengte van de afwijking voor die vereenvoudiging aan.\n" "0 om uit te schakelen." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "opwaarts compatibele machine" @@ -15846,6 +15921,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroide" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Versnelling van de topoppervlakte-invulling. Gebruik van een lagere waarde kan de kwaliteit van de bovenlaag verbeteren." @@ -16456,6 +16537,12 @@ msgstr "Het type G-code waarmee de printer compatibel is." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + # AI Translated msgid "Pellet Modded Printer" msgstr "Printer omgebouwd voor pellets" @@ -17653,6 +17740,12 @@ msgstr "Lange terugtrekking bij extruderwissel" msgid "Retraction distance when extruder change" msgstr "Terugtrekafstand bij extruderwissel" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + # AI Translated msgid "Z-hop height" msgstr "Z-hop-hoogte" @@ -17763,6 +17856,9 @@ msgstr "Extra lengte bij herstart" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Als retracten wordt gecompenseerd na een beweging, wordt deze extra hoeveelheid filament geëxtrudeerd. Deze instelling is zelden van toepassing." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Als retracten wordt gecompenseerd na een toolwisseling, wordt deze extra hoeveelheid filament geëxtrudeerd." @@ -18255,6 +18351,12 @@ msgstr "Toolwissel op het afveegblok" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Dwing de printkop naar het afveegblok te bewegen voordat de opdracht voor de toolwissel (Tx) wordt gegeven. Alleen relevant voor printers met meerdere extruders (meerdere printkoppen) die een afveegblok van type 2 gebruiken. Standaard slaat Orca deze verplaatsing op machines met meerdere printkoppen over, omdat de firmware de kopwissel afhandelt, waardoor de Tx-opdracht boven het geprinte onderdeel kan worden gegeven. Schakel deze optie in als u wilt dat de toolwissel altijd boven het afveegblok wordt uitgevoerd." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + # AI Translated msgid "No sparse layers (beta)" msgstr "Geen dunne lagen (bèta)" @@ -21860,10 +21962,6 @@ msgstr "Fysieke printer" msgid "Print Host upload" msgstr "Host-upload afdrukken" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer. Beschikbare agenten worden bij het opstarten geregistreerd." - # AI Translated msgid "Select a Flashforge printer" msgstr "Selecteer een Flashforge-printer" @@ -22918,9 +23016,6 @@ msgstr "Er is iets onverwachts gebeurd bij het inloggen. Probeer het opnieuw." msgid "User canceled." msgstr "Gebruiker geannuleerd." -msgid "Head diameter" -msgstr "Kopdiameter" - # AI Translated msgid "Max angle" msgstr "Maximale hoek" @@ -23781,6 +23876,22 @@ msgstr "" "Kromtrekken voorkomen\n" "Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Laaghoogte is te klein.\n" +#~ "Het zal worden ingesteld op min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "De laaghoogte overschrijdt de limiet in Printerinstellingen -> Extruder -> Laaghoogtelimieten, dit kan problemen met de afdrukkwaliteit veroorzaken." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Automatisch aanpassen aan het ingestelde bereik?\n" + +#~ msgid "Head diameter" +#~ msgstr "Kopdiameter" + # AI Translated #~ msgid "Print order within a single layer." #~ msgstr "Printvolgorde binnen één laag." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index a0701dca09..e9430155ea 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -4843,6 +4843,20 @@ msgstr "Obecna temperatura komory jest wyższa niż bezpieczna temperatura dla f msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Minimalna temperatura komory (%d℃) jest wyższa niż docelowa temperatura komory (%d℃). Wartość minimalna to próg, przy którym rozpoczyna się druk, podczas gdy komora nadal nagrzewa się do wartości docelowej, więc nie powinna jej przekraczać. Zostanie ograniczona do wartości docelowej." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Dostosuj" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4965,6 +4979,12 @@ msgstr "" "Tak — włącz generator ścian Arachne\n" "Nie — wyłącz generator ścian Arachne i ustaw tryb [Przesunięcie] skóry fuzzy" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Szerokość brimu" + # AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Tryb spiralny działa tylko wtedy, gdy liczba pętli ściany wynosi 1, podpory są wyłączone, wykrywanie zlepiania przez sondowanie jest wyłączone, liczba warstw górnej powłoki wynosi 0, gęstość wypełnienia wynosi 0, a typ timelapse jest tradycyjny." @@ -4981,6 +5001,10 @@ msgstr "" "Tak - Zmień te ustawienia automatycznie i włącz tryb Wazy\n" "Nie - Zrezygnuj tym razem z używania trybu Wazy" +# AI Translated +msgid "N/A" +msgstr "Nie dotyczy" + msgid "Printing" msgstr "Drukowanie" @@ -5226,6 +5250,12 @@ msgstr "Nie udało się wygenerować kodu kalibracji" msgid "Calibration error" msgstr "Błąd kalibracji" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Sieć niedostępna" @@ -5440,10 +5470,6 @@ msgstr "Nieprawidłowy wzorzec. Użyj N, N#K lub listy rozdzielonej przecinkami msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Nieprawidłowy format. Oczekiwano formatu wektorowego: „%1%”" -# AI Translated -msgid "N/A" -msgstr "Nie dotyczy" - # AI Translated msgid "System agents" msgstr "Agenci systemowi" @@ -6109,7 +6135,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Wykryto konflikty ścieżek G-code na warstwie %d, Z = %.2lfmm. Proszę oddalić od siebie obiekty będące w konflikcie (%s <-> %s)." @@ -6295,6 +6321,9 @@ msgstr "Wiele urządzeń" msgid "Project" msgstr "Projekt" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Tak" @@ -6425,6 +6454,12 @@ msgstr "Zapisz projekt jako" msgid "Save current project as" msgstr "Zapisz bieżący projekt jako" +msgid "Publish" +msgstr "Opublikuj" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuj 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8273,6 +8308,12 @@ msgstr "Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zap msgid "Customized Preset" msgstr "Dostosowany profil" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF8!" @@ -8444,22 +8485,22 @@ msgid "Replaced with 3D files from directory:\n" msgstr "Zastąpiono plikami 3D z katalogu:\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Pominięto %s: ten sam plik.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Pominięto %s: plik nie istnieje.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Pominięto %s: nie udało się zastąpić.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Zastąpiono %s.\n" @@ -8675,6 +8716,14 @@ msgstr "Zapisz plik po wykonaniu cięcia jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Plik %s został wysłany do pamięci drukarki i można go obejrzeć na urządzeniu." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nie ustawiono typu dyszy Wprowadź ustawienia dyszy i spróbuj ponownie." @@ -9647,6 +9696,14 @@ msgstr "Pokaż nieobsługiwane profile" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Pokazuj niekompatybilne/nieobsługiwane profile na listach rozwijanych drukarek i filamentów. Tych profili nie można wybrać." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Funkcje eksperymentalne" @@ -9889,9 +9946,6 @@ msgstr "Przejdź do strony publikacji modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Uwaga: Przygotowanie może zająć kilka minut. Proszę o cierpliwość." -msgid "Publish" -msgstr "Opublikuj" - msgid "Publish was canceled" msgstr "Publikacja została anulowana" @@ -9908,6 +9962,21 @@ msgstr "Przesyłanie danych" msgid "Jump to webpage" msgstr "Przejdź na stronę" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Zapisz %s jako" @@ -9918,10 +9987,22 @@ msgstr "Profil użytkownika" msgid "Preset Inside Project" msgstr "Profil wewnątrz projektu" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Odłącz od elementu nadrzędnego" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Nazwa jest niedostępna." @@ -10684,22 +10765,6 @@ msgstr "Czy na pewno włączyć tę opcję?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Wzory wypełnienia są zwykle projektowane tak, aby samodzielnie obsługiwać obrót, co zapewnia prawidłowy druk i zamierzony efekt (np. Gyroidalny, Sześcienny). Obracanie bieżącego wzoru wypełnienia może prowadzić do niewystarczającego podparcia. Zachowaj ostrożność i dokładnie sprawdź, czy nie występują problemy z drukiem. Czy na pewno chcesz włączyć tę opcję?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Wysokość warstwy jest zbyt mała.\n" -"Ustawione zostanie na min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Wysokość warstwy przekracza limit w Ustawieniach Drukarki -> Extruder -> Limity wysokości warstwy, co może powodować problemy z jakością druku." - -msgid "Adjust to the set range automatically?\n" -msgstr "Dostosować automatycznie do ustawionego zakresu?\n" - -msgid "Adjust" -msgstr "Dostosuj" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Funkcja eksperymentalna: Polega na wycofywaniu filamentu na większą odległość w celu zminimalizowania płukania, a następne jego odcięcie. Choć może to znacząco zmniejszyć ilość zużytego filamentu, może również zwiększyć ryzyko zatknięcia dyszy lub innych problemów z drukowaniem." @@ -10899,6 +10964,9 @@ msgstr "Znaleziono zarezerwowane słowa kluczowe" msgid "Setting Overrides" msgstr "Nadpisywane Ustawień" +msgid "Retraction when switching material" +msgstr "Retrakcja podczas zmiany filamentu" + msgid "Basic information" msgstr "Podstawowe informacje" @@ -11033,6 +11101,14 @@ msgstr "Kompatybilne profile procesów" msgid "Printable space" msgstr "Przestrzeń do druku" +# AI Translated +msgid "Printer Agent" +msgstr "Agent drukarki" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką. Dostępni agenci są rejestrowani przy uruchamianiu." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -11165,9 +11241,6 @@ msgstr "Ograniczenia wysokości warstwy" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Retrakcja podczas zmiany filamentu" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12559,6 +12632,9 @@ msgstr " jest zbyt blisko obszaru wykluczenia, mogą wystąpić kolizje.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " jest zbyt blisko obszaru wykrywania zalepienia dyszy, co doprowadzi do kolizji.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Wybrane temperatury dyszy są niezgodne. Temperatura dyszy każdego filamentu musi mieścić się w zalecanym zakresie temperatur dyszy pozostałych filamentów. W przeciwnym razie może dojść do zatkania dyszy lub uszkodzenia drukarki." @@ -12901,10 +12977,6 @@ msgstr "Użyj 3MF zamiast G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Włącz tę opcję, jeśli drukarka przyjmuje plik 3MF jako zadanie druku. Po włączeniu Orca Slicer wysyła plik po cięciu jako .gcode.3mf zamiast zwykłego pliku .gcode." -# AI Translated -msgid "Printer Agent" -msgstr "Agent drukarki" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką." @@ -13617,9 +13689,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Prędkość wewnętrznych mostów. Jeśli wartość jest wyrażona w procentach, będzie obliczana na podstawie prędkości mostu. Wartość domyślna wynosi 150%." -msgid "Brim width" -msgstr "Szerokość brimu" - msgid "This is the distance from the model to the outermost brim line." msgstr "Odległość od modelu do najbardziej zewnętrznej linii brimu" @@ -13703,6 +13772,12 @@ msgstr "" "Kształt zostanie zredukowany przed wykryciem ostrych kątów. Ten parametr wskazuje minimalną długość odchylenia dla redukcji.\n" "0, aby dezaktywować" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "drukarka kompatybilna i wzwyż" @@ -14896,6 +14971,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroidalny" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Przyspieszenie dla wypełnienia górnej powierzchni. Użycie niższej wartości może poprawić jakość górnej powierzchni" @@ -15459,6 +15540,12 @@ msgstr "Z jakim rodzajem G-code drukarka jest kompatybilna." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Drukarka do druku granulatem" @@ -16571,6 +16658,12 @@ msgstr "Długa retrakcja podczas zmian ekstruderów" msgid "Retraction distance when extruder change" msgstr "Długość retrakcji podczas zmian ekstruderów" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Wysokość Z-hop" @@ -16669,6 +16762,9 @@ msgstr "Dodatkowa ilość dla powrotu" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Gdy retrakcja jest kompensowana po przemieszczeniu, ekstruder przepycha tę dodatkową ilość filamentu. To opcja jest rzadko potrzebna." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Jeśli retrakcja jest korygowana po zmianie narzędzia, extruder przepchnie taką dodatkową ilość filamentu." @@ -17099,6 +17195,12 @@ msgstr "Zmiana narzędzia na wieży czyszczącej" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Wymusza przemieszczenie głowicy do wieży czyszczącej przed wydaniem polecenia zmiany narzędzia (Tx). Dotyczy tylko drukarek wieloekstruderowych (wielogłowicowych) korzystających z wieży czyszczącej typu 2. Domyślnie Orca pomija to przemieszczenie na maszynach wielogłowicowych, ponieważ zamianą głowic zajmuje się oprogramowanie sprzętowe, przez co polecenie Tx może zostać wydane nad drukowaną częścią. Włącz tę opcję, jeśli chcesz, aby zmiana narzędzia zawsze następowała nad wieżą czyszczącą." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Warstwy bez czyszczenia (beta)" @@ -20445,10 +20547,6 @@ msgstr "Fizyczna drukarka" msgid "Print Host upload" msgstr "Przesyłanie do hosta drukowania" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką. Dostępni agenci są rejestrowani przy uruchamianiu." - # AI Translated msgid "Select a Flashforge printer" msgstr "Wybierz drukarkę Flashforge" @@ -21401,9 +21499,6 @@ msgstr "Wystąpił problem podczas próby logowania, proszę spróbować ponowni msgid "User canceled." msgstr "Anulowane przez użytkownika." -msgid "Head diameter" -msgstr "Średnica łącznika" - msgid "Max angle" msgstr "Maksymalny kąt" @@ -22234,6 +22329,22 @@ msgstr "" "Unikaj odkształceń\n" "Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Wysokość warstwy jest zbyt mała.\n" +#~ "Ustawione zostanie na min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Wysokość warstwy przekracza limit w Ustawieniach Drukarki -> Extruder -> Limity wysokości warstwy, co może powodować problemy z jakością druku." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Dostosować automatycznie do ustawionego zakresu?\n" + +#~ msgid "Head diameter" +#~ msgstr "Średnica łącznika" + #~ msgid "Print order within a single layer." #~ msgstr "Kolejność druku obiektów w obrębie jednej warstwy. Domyślnie lub według listy obiektów" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 595e46b8cf..b001ea24b8 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -4577,6 +4577,20 @@ msgstr "A temperatura da câmara atual está mais alta do que a temperatura segu msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "A temperatura mínima da câmara (%d℃) é superior à temperatura alvo da câmara (%d℃). O valor mínimo é o limite no qual a impressão começa enquanto a câmara continua aquecendo em direção ao alvo; portanto, não deve execedê-lo. O valor será limitado ao alvo." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Ajustar" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4696,6 +4710,12 @@ msgstr "" "Sim - Habilitar Gerador de Parede Arachne\n" "Não - Desabilitar Gerador de Parede Arachne e setar o modo [Deslocamento] da Textura Difusa" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Largura da borda" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "O modo espiral só funciona quando as voltas da parede são 1, o suporte está desativado, a detecção de aglomeração por sondagem está desativada, as camadas da casca de topo são 0, a densidade de preenchimento esparso é 0 e o tipo de timelapse é tradicional." @@ -4711,6 +4731,9 @@ msgstr "" "Sim - Alterar essas configurações e ativar o modo espiral/vaso automaticamente\n" "Não - Cancelar ativação do modo espiral" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimindo" @@ -4950,6 +4973,12 @@ msgstr "Falha ao gerar o G-code de calibração" msgid "Calibration error" msgstr "Erro de calibração" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + msgid "Network unavailable" msgstr "Rede indisponível" @@ -5156,9 +5185,6 @@ msgstr "Padrão inválido. Use N, N#K, ou uma lista separa por vírgulas com #K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vetor esperado: \"%1%\"" -msgid "N/A" -msgstr "N/D" - msgid "System agents" msgstr "Agentes do sistema" @@ -5793,7 +5819,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Foram encontrados conflitos de caminhos de G-code na camada %d, Z = %.2lfmm. Por favor, separe mais os objetos em conflito (%s <-> %s)." @@ -5974,6 +6000,9 @@ msgstr "Multi-dispositivo" msgid "Project" msgstr "Projeto" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Sim" @@ -6101,6 +6130,12 @@ msgstr "Salvar projeto como" msgid "Save current project as" msgstr "Salvar o projeto atual como" +msgid "Publish" +msgstr "Publicar" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7861,6 +7896,12 @@ msgstr "Por favor, confirme se o G-code dentro dessas predefinições é seguro msgid "Customized Preset" msgstr "Predefinição Personalizada" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Os nomes dos componentes dentro do arquivo STEP não estão no formato UTF-8!" @@ -8020,19 +8061,19 @@ msgstr "Diretório para substituição não foi selecionado" msgid "Replaced with 3D files from directory:\n" msgstr "Substituído por arquivos 3D do diretório:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ %s Ignorados: mesmo arquivo.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ %s Ignorados: arquivo não existe.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ %s Ignorados: falha ao substituir.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ %s Substituídos.\n" @@ -8241,6 +8282,14 @@ msgstr "Salvar arquivo fatiado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser visualizado na impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "O tipo de bico não está configurado. Configure o bico e tente novamente." @@ -9113,6 +9162,14 @@ msgstr "Mostrar predefinições não suportadas" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Exibir predefinições incompatíveis e não suportadas nas listas de impressora e filamento. Essas predefinições não podem ser selecionadas." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Recursos Experimentais" @@ -9346,9 +9403,6 @@ msgstr "Ir para a página web de publicação de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: A preparação pode levar vários minutos. Por favor, seja paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "Publicação cancelada" @@ -9364,6 +9418,21 @@ msgstr "Enviando dados" msgid "Jump to webpage" msgstr "Ir para a página web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salvar %s como" @@ -9374,9 +9443,21 @@ msgstr "Predefinição do Usuário" msgid "Preset Inside Project" msgstr "Predefinição Dentro do Projeto" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Separar do pai" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "O nome não está disponível." @@ -10096,24 +10177,6 @@ msgstr "Tem certeza de que deseja habilitar esta opção?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Padrões de preenchimento são projetados para lidar com a rotação automaticamente para garantir a impressão adequada e atingir os efeitos pretendidos (Ex. Giroide, Cúbico). Girar o padrão de preenchimento esparso atual pode causar suporte insuficiente. Prossiga com cautela e verifique cuidadosamente se há possíveis problemas de impressão. Tem certeza de que deseja habilitar esta opção?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"A altura da camada é muito pequena.\n" -"Ela será definida como altura mínima da camada\n" -"A altura da camada é muito pequena.\n" -"Ela será definida como altura mínima da camada\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "A altura da camada excede o limite em Configurações da Impressora -> Extrusora -> Limites de altura da camada, isso pode causar problemas de qualidade de impressão." - -msgid "Adjust to the set range automatically?\n" -msgstr "Ajustar automaticamente à faixa definida?\n" - -msgid "Adjust" -msgstr "Ajustar" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Funcionalidade experimental: Retrair e cortar o filamento a uma distância maior durante mudanças de filamento para minimizar a purga. Embora possa reduzir notavelmente a purga, ele também pode elevar o risco de bolhas no bico ou outras complicações de impressão." @@ -10308,6 +10371,9 @@ msgstr "Palavras-chave reservadas encontradas" msgid "Setting Overrides" msgstr "Sobrescrever configurações" +msgid "Retraction when switching material" +msgstr "Retração ao trocar material" + msgid "Basic information" msgstr "Informações básicas" @@ -10435,6 +10501,12 @@ msgstr "Perfis de processo compatíveis" msgid "Printable space" msgstr "Espaço de impressão" +msgid "Printer Agent" +msgstr "Agente de Impressora" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Selecione a implementação do agente de rede para comunicação com a impressora. Os agentes disponíveis são registrados na inicialização." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10560,9 +10632,6 @@ msgstr "Limites de altura da camada" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Retração ao trocar material" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -11893,6 +11962,9 @@ msgstr " está muito perto de uma área de exclusão, e colisões vão ocorrer.\ msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " está muito perto da área de detecção de aglomeração, e ocorrerão colisões.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "As temperaturas dos bicos selecionadas são incompatíveis. A temperatura do bico de cada filamento deve estar dentro da faixa de temperatura recomendada para os demais filamentos. Caso contrário, pode ocorrer entupimento do bico ou danos à impressora." @@ -12206,9 +12278,6 @@ msgstr "Usar 3MF em vez de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Ative esta opção se a impressora aceitar um arquivo 3MF como trabalho de impressão. Quando ativada, o OrcaSlicer envia o arquivo fatiado como .gcode.3mf, em vez de um arquivo .gcode comum." -msgid "Printer Agent" -msgstr "Agente de Impressora" - msgid "Select the network agent implementation for printer communication." msgstr "Selecione a implementação do agente de rede para comunicação com a impressora." @@ -12888,9 +12957,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Velocidade de pontes internas. Se o valor for expresso como uma porcentagem, ele será calculado com base na bridge_speed. O valor padrão é 150%." -msgid "Brim width" -msgstr "Largura da borda" - msgid "This is the distance from the model to the outermost brim line." msgstr "Essa é a distância do modelo até a linha da borda mais externa." @@ -12970,6 +13036,12 @@ msgstr "" "A geometria será decimada antes de detectar ângulos agudos. Este parâmetro indica o comprimento mínimo da divergência para a decimação.\n" "0 para desativar." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "uáquina compatível ascendente" @@ -14104,6 +14176,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroide" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Esta é a aceleração do preenchimento da superfície superior. Usar um valor menor pode melhorar a qualidade da superfície superior." @@ -14639,6 +14717,12 @@ msgstr "Com que tipo de G-code a impressora é compatível." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Impressora Modificada para Pellets" @@ -15681,6 +15765,12 @@ msgstr "Retração longa na troca de extrusora" msgid "Retraction distance when extruder change" msgstr "Distância de retração na troca de extrusora" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Altura de Z-hop" @@ -15774,6 +15864,9 @@ msgstr "Comprimento extra na retração" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Quando a retração é compensada após o movimento de deslocamento, a extrusora empurrará essa quantidade adicional de filamento. Esta configuração é raramente necessária." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Quando a retração é compensada após a troca de ferramenta, a extrusora empurrará essa quantidade adicional de filamento." @@ -16182,6 +16275,12 @@ msgstr "Troca de ferramenta na torre de purga" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Força o cabeçote de impressão a se deslocar até a torre de purga antes de emitir o comando de troca de ferramenta (Tx). Relevante apenas para impressoras com múltiplas extrusoras (múltiplos cabeçotes de impressão) que utilizam uma torre de purga Tipo 2. Por padrão, o Orca ignora o deslocamento em máquinas com múltiplos cabeçotes de impressão, pois o firmware gerencia a troca do cabeçote, o que pode resultar na emissão do comando Tx acima da peça impressa. Habilite esta opção se desejar que a troca de ferramenta seja sempre emitida acima da torre de purga." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Sem camadas esparsas (beta)" @@ -16733,7 +16832,7 @@ msgstr "Volume de preparo" msgid "This is the volume of material to prime the extruder with on the tower." msgstr "Este é o volume de material para preparar a extrusora na torre." -#,fuzzy +#, fuzzy msgid "Prime volume mode" msgstr "Modo de volume de preparação" @@ -19369,9 +19468,6 @@ msgstr "Impressora Física" msgid "Print Host upload" msgstr "Upload do Host de Impressão" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Selecione a implementação do agente de rede para comunicação com a impressora. Os agentes disponíveis são registrados na inicialização." - msgid "Select a Flashforge printer" msgstr "Selecione uma impressora Flashforge" @@ -20213,9 +20309,6 @@ msgstr "Algo inesperado aconteceu ao tentar conectar, por favor tente novamente. msgid "User canceled." msgstr "Cancelado pelo usuário." -msgid "Head diameter" -msgstr "Diâmetro da cabeça" - msgid "Max angle" msgstr "Ângulo máx" @@ -20949,6 +21042,24 @@ msgstr "" "Evitar empenamento\n" "Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "A altura da camada é muito pequena.\n" +#~ "Ela será definida como altura mínima da camada\n" +#~ "A altura da camada é muito pequena.\n" +#~ "Ela será definida como altura mínima da camada\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "A altura da camada excede o limite em Configurações da Impressora -> Extrusora -> Limites de altura da camada, isso pode causar problemas de qualidade de impressão." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Ajustar automaticamente à faixa definida?\n" + +#~ msgid "Head diameter" +#~ msgstr "Diâmetro da cabeça" + #~ msgid "Print order within a single layer." #~ msgstr "Ordem de impressão dentro de uma única camada." diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index c2fbcb54be..919710f917 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -4715,6 +4715,20 @@ msgstr "Текущая температура внутри термокамер msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Стартовая температура внутри термокамеры (%d℃) превышает целевую (%d℃). Подразумевается, что печать начинается заранее, поэтому стартовая температура не должна превышать её. Значение будет уменьшено." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Подстроиться" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4839,6 +4853,12 @@ msgid "" "No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin" msgstr "Использовать нечёткую оболочку с движком Arachne?" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Ширина каймы" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "" "Для печати в режиме вазы необходимы следующие настройки:\n" @@ -4859,6 +4879,11 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "Использовать эти настройки и режим вазы?" +# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо +# символов +msgid "N/A" +msgstr "–" + msgid "Printing" msgstr "Печать" @@ -5107,6 +5132,12 @@ msgstr "Не удалось сгенерировать калибровочны msgid "Calibration error" msgstr "Ошибка калибровки" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + msgid "Network unavailable" msgstr "Сеть недоступна" @@ -5320,11 +5351,6 @@ msgstr "Недопустимый шаблон. Используйте N, N#K и msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Недопустимый формат. Ожидаемый векторный формат: \"%1%\"" -# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо -# символов -msgid "N/A" -msgstr "–" - msgid "System agents" msgstr "Системные агенты" @@ -5991,7 +6017,7 @@ msgstr "Объём:" msgid "Size:" msgstr "Размер:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, разместите конфликтующие модели дальше друг от друга (%s <-> %s)." @@ -6198,6 +6224,9 @@ msgstr "Принтеры" msgid "Project" msgstr "Проект" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Да" @@ -6334,6 +6363,12 @@ msgstr "Сохранить проект как" msgid "Save current project as" msgstr "Сохранить текущий проект как" +msgid "Publish" +msgstr "Опубликовать" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8132,6 +8167,12 @@ msgstr "Во избежание повреждения принтера убед msgid "Customized Preset" msgstr "Пользовательский профиль" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Имена компонентов внутри файла STEP не в формате UTF8." @@ -8299,19 +8340,19 @@ msgstr "Расположение для замены не указано" msgid "Replaced with 3D files from directory:\n" msgstr "Заменено файлами из расположения:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Пропущен %s: идентичный файл.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Пропущен %s: файл не существует.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Пропущен %s: не удалось заменить.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Заменён %s.\n" @@ -8520,6 +8561,14 @@ msgstr "Сохранить нарезанный файл как:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Не указан тип сопла. Укажите его и попробуйте ещё раз." @@ -9400,6 +9449,14 @@ msgstr "" "\n" "Примечание: профили остаются недоступными для выбора." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Экспериментальные настройки" @@ -9638,9 +9695,6 @@ msgstr "Перейти на веб-страницу публикации мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения." -msgid "Publish" -msgstr "Опубликовать" - msgid "Publish was canceled" msgstr "Публикация была отменена" @@ -9656,6 +9710,21 @@ msgstr "Отправка данных" msgid "Jump to webpage" msgstr "Перейти на страницу" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Сохранить %s как" @@ -9666,9 +9735,21 @@ msgstr "Пользовательский профиль" msgid "Preset Inside Project" msgstr "Профиль внутри проекта" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Сделать независимым" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Имя недоступно." @@ -9686,7 +9767,9 @@ msgstr "" "несовместим с текущим принтером." msgid "Please note that saving will overwrite the current preset." -msgstr "Обратите внимание: при сохранении произойдёт\nперезапись текущего профиля." +msgstr "" +"Обратите внимание: при сохранении произойдёт\n" +"перезапись текущего профиля." msgid "The name cannot be the same as a preset alias name." msgstr "Имя не должно совпадать с именем предустановленного профиля." @@ -10389,22 +10472,6 @@ msgstr "Вы действительно хотите задействовать msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Многие шаблоны заполнения разработаны на основе автоматического поворота по определённым правилам для поддержания правильной печати и желаемого эффекта (например, «Гироид» или «Куб»). Изменение правила поворота текущего шаблона может привести к его провисанию. Будьте осторожны и внимательно проверяйте результат на наличие потенциальных проблем с печатью." -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Высота слоя слишком мала.\n" -"Будет установлено значение min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Высота слоя не может превышать ограничения, установленные в настройках принтера → Экструдер → Ограничение высоты слоя. Это может вызвать проблемы с качеством печати." - -msgid "Adjust to the set range automatically?\n" -msgstr "Автоматически подстроиться под заданный в настройках диапазон?\n" - -msgid "Adjust" -msgstr "Подстроиться" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "[Экспериментальная функция] Втягивание и обрезка прутка на большем расстоянии во время его замены для минимизации очистки. Хотя это значительно сокращает величину очистки, это может повысить риск возникновения затора или вызвать другие проблемы при печати." @@ -10604,6 +10671,9 @@ msgstr "Найдены зарезервированные ключевые сл msgid "Setting Overrides" msgstr "Замещение настроек" +msgid "Retraction when switching material" +msgstr "Откат при смене материала" + msgid "Basic information" msgstr "Основные" @@ -10751,6 +10821,12 @@ msgstr "Совместимые настройки" msgid "Printable space" msgstr "Область печати" +msgid "Printer Agent" +msgstr "Сетевой агент" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Реализация сетевого агента для обмена информацией с принтером. Доступные реализации определяются при запуске." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10879,9 +10955,6 @@ msgstr "Ограничение высоты слоя" msgid "Z-Hop" msgstr "Подъём головы при откате" -msgid "Retraction when switching material" -msgstr "Откат при смене материала" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12218,6 +12291,9 @@ msgstr " находится слишком близко к области иск msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " находится слишком близко к зоне обнаружения налипаний, столкновения неизбежны.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Обнаружен недопустимый перепад температур. Каждый из используемых материалов должен иметь в профиле температуру печати в пределах допустимого диапазона других материалов. В противном случае сопло может забиться и повредить принтер." @@ -12539,9 +12615,6 @@ msgstr "Сжатие G-кода перед отправкой" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Рекомендуется для принтеров, поддерживающих печать из архивов 3MF. Файлы печати будут отправляться с расширением \".gcode.3mf\"." -msgid "Printer Agent" -msgstr "Сетевой агент" - msgid "Select the network agent implementation for printer communication." msgstr "Реализация сетевого агента для обмена информацией с принтером." @@ -13232,9 +13305,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Скорость печати внутреннего моста. Можно указать процент от скорости внешнего моста (bridge_speed). По умолчанию – 150%." -msgid "Brim width" -msgstr "Ширина каймы" - msgid "This is the distance from the model to the outermost brim line." msgstr "Расстояние от модели до внешней линии каймы." @@ -13316,6 +13386,12 @@ msgstr "" "Геометрия модели будет упрощена перед обнаружением острых углов. Этот параметр задаёт минимальную длину отклонения для её упрощения.\n" "Установите 0 для отключения." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "условия для совместимых принтеров" @@ -14308,13 +14384,19 @@ msgid "Interface layer pre-extrusion distance" msgstr "Дистанция избыточной подачи при смене" msgid "Pre-extrusion distance for prime tower interface layer (where different materials meet)." -msgstr "Протяжённость первичного движения прочистки после смены материала. Позволяет быстро набрать давление в сопле и сбросить перегретый материал.\n\nПримечание: фактическая длина может быть ограничена шириной башни." +msgstr "" +"Протяжённость первичного движения прочистки после смены материала. Позволяет быстро набрать давление в сопле и сбросить перегретый материал.\n" +"\n" +"Примечание: фактическая длина может быть ограничена шириной башни." msgid "Interface layer pre-extrusion length" msgstr "Длина прутка для избыточной подачи" msgid "Pre-extrusion length for prime tower interface layer (where different materials meet)." -msgstr "Длина прутка, которую необходимо продавить на этапе избыточной подачи.\n\n0 – отключить этот этап." +msgstr "" +"Длина прутка, которую необходимо продавить на этапе избыточной подачи.\n" +"\n" +"0 – отключить этот этап." msgid "Tower ironing area" msgstr "Разглаживание кончиков" @@ -14626,6 +14708,12 @@ msgstr "ТПМП Фишера-Коха S" msgid "Gyroid" msgstr "Гироид" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Ускорение на верхней поверхности. Использование меньшего значения может улучшить качество верхней поверхности." @@ -15213,6 +15301,12 @@ msgstr "Выбор типа G-кода для совместимости с пр msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Гранульная модификация принтера" @@ -15396,8 +15490,7 @@ msgstr "Наклон опор" msgid "" "Controls how aggressively short or unsupported Lightning branches are pruned.\n" "This angle is converted internally to a per-layer distance." -msgstr "" -"Допустимый наклон опор молнии. Чем выше, тем быстрее и экономичнее распространяются её ветви." +msgstr "Допустимый наклон опор молнии. Чем выше, тем быстрее и экономичнее распространяются её ветви." # "Выпрямление" здесь, вопреки первой мысли – это как раз-таки наоборот искажение шаблона по ходу печати для сокращения количества ветвей. Короче, опять путаница из-за того, что генерация ветвей происходит сверху вниз. При печати снизу вверх шаблон именно что искажается. msgid "Straightening angle" @@ -16309,8 +16402,7 @@ msgid "" "The length of fast retraction after wipe, relative to retraction length.\n" "The value will be clamped by 100% minus the retract amount before the wipe value." msgstr "" -"Быстрый откат после очистки, выраженный в процентах от общей длины отката. В некоторых случаях позволяет значительно снизить количество «паутины»." -"\n" +"Быстрый откат после очистки, выраженный в процентах от общей длины отката. В некоторых случаях позволяет значительно снизить количество «паутины».\n" "Примечание: суммарное значение не должно превышать 100% и будет скорректировано автоматически." msgid "Retract on layer change" @@ -16344,6 +16436,12 @@ msgstr "Длинный откат перед сменой экструдера" msgid "Retraction distance when extruder change" msgstr "Длина отката перед сменой экструдера" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Высота подъёма" @@ -16461,6 +16559,9 @@ msgstr "Доп. подача после отката" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Дополнительная длина подачи при возврате прутка после отката. Требуется крайне редко (например, для компенсации багов прошивки принтера)." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Дополнительная длина подачи после смены насадки." @@ -16474,7 +16575,9 @@ msgid "Deretraction speed" msgstr "Скорость возврата" msgid "Speed for reloading filament into the nozzle. Zero means same speed of retraction." -msgstr "Скорость возврата материала в сопло после отката.\n0 – использовать скорость отката." +msgstr "" +"Скорость возврата материала в сопло после отката.\n" +"0 – использовать скорость отката." msgid "Deretraction speed (extruder change)" msgstr "Скорость возврата (смена экструдера)" @@ -16945,6 +17048,12 @@ msgstr "" "\n" "Внимание: применимо только к многоэкструдерным принтерам с черновой башней 2 типа." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Без разреженных слоёв (beta)" @@ -17942,13 +18051,21 @@ msgid "To prevent oozing, the nozzle temperature will be cooled during ramming. msgstr "Во избежание подтёков температура сопла будет снижена на время рэмминга. Поэтому время рэмминга должно быть больше времени охлаждения. 0 значит отключено." msgid "The maximum volumetric speed for ramming before extruder change, where -1 means using the maximum volumetric speed." -msgstr "Максимальный объёмный расход для рэмминга перед сменой экструдера.\n-1 – использовать максимальный расход." +msgstr "" +"Максимальный объёмный расход для рэмминга перед сменой экструдера.\n" +"-1 – использовать максимальный расход." msgid "To prevent oozing, the nozzle temperature will be cooled during ramming. Note: only a cooldown command and fan activation are triggered, reaching the target temperature is not guaranteed. 0 means disabled." -msgstr "Во избежание подтёков температура сопла будет снижена на время рэмминга.\n0 – не менять температуру.\n\nПримечание: срабатывают только команда охлаждения и включение вентилятора; достижение целевой температуры не гарантируется." +msgstr "" +"Во избежание подтёков температура сопла будет снижена на время рэмминга.\n" +"0 – не менять температуру.\n" +"\n" +"Примечание: срабатывают только команда охлаждения и включение вентилятора; достижение целевой температуры не гарантируется." msgid "The maximum volumetric speed for ramming before a hotend change, where -1 means using the maximum volumetric speed." -msgstr "Максимальный объёмный расход для рэмминга перед сменой хотэнда.\n-1 – использовать максимальный расход." +msgstr "" +"Максимальный объёмный расход для рэмминга перед сменой хотэнда.\n" +"-1 – использовать максимальный расход." msgid "length when change hotend" msgstr "Откат при смене хотэнда" @@ -19414,10 +19531,14 @@ msgid "Continue anyway?" msgstr "Всё равно продолжить?" msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?" -msgstr "Включить адаптацию к расходу для автоматического исправления?\nНет – игнорировать предупреждение." +msgstr "" +"Включить адаптацию к расходу для автоматического исправления?\n" +"Нет – игнорировать предупреждение." msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?" -msgstr "Включить адаптацию к соплу и расходу для автоматического исправления?\nНет – игнорировать предупреждение." +msgstr "" +"Включить адаптацию к соплу и расходу для автоматического исправления?\n" +"Нет – игнорировать предупреждение." msgid "Start retraction length: " msgstr "Начальная длина отката: " @@ -20341,9 +20462,6 @@ msgstr "Физический принтер" msgid "Print Host upload" msgstr "Загрузка на хост печати" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Реализация сетевого агента для обмена информацией с принтером. Доступные реализации определяются при запуске." - msgid "Select a Flashforge printer" msgstr "Выберите принтер Flashforge" @@ -21202,9 +21320,6 @@ msgstr "При попытке войти произошла какая-то ош msgid "User canceled." msgstr "Отменено пользователем." -msgid "Head diameter" -msgstr "Диаметр уха" - msgid "Max angle" msgstr "Макс. угол" @@ -21959,6 +22074,22 @@ msgstr "" "Предотвращение коробления материала\n" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Высота слоя слишком мала.\n" +#~ "Будет установлено значение min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Высота слоя не может превышать ограничения, установленные в настройках принтера → Экструдер → Ограничение высоты слоя. Это может вызвать проблемы с качеством печати." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Автоматически подстроиться под заданный в настройках диапазон?\n" + +#~ msgid "Head diameter" +#~ msgstr "Диаметр уха" + #~ msgid "Print order within a single layer." #~ msgstr "Последовательность печати моделей в пределах одного слоя." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 5686fb7d8f..1caffffd36 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5213,6 +5213,20 @@ msgstr "Kammarens aktuella temperatur är högre än materialets säkra temperat msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Kammarens minimitemperatur (%d℃) är högre än kammarens måltemperatur (%d℃). Minimivärdet är tröskeln där utskriften startar medan kammaren fortsätter värmas mot målet, så det bör inte överstiga målet. Värdet begränsas till måltemperaturen." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Justera" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -5339,6 +5353,12 @@ msgstr "" "Ja – Aktivera Arachne-väggeneratorn\n" "Nej – Inaktivera Arachne-väggeneratorn och ställ in läget [Förskjutning] för ojämn yta" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Brim bredd" + # AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Spiralläget fungerar bara när antal väggar är 1, support är avstängt, detektering av klumpbildning med sondering är avstängd, antal översta skallager är 0, sparsam ifyllnadsdensitet är 0 och timelapse-typen är traditionell." @@ -5355,6 +5375,10 @@ msgstr "" "JA -Ändra dessa inställningar och möjliggör Spiral läge automatiskt\n" "NEJ -Avbryt Spiral läge denna gång" +# AI Translated +msgid "N/A" +msgstr "Ej tillämpligt" + msgid "Printing" msgstr "Utskrift pågår" @@ -5645,6 +5669,12 @@ msgstr "Misslyckades med att generera cali G kod" msgid "Calibration error" msgstr "Fel vid kalibrering" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Nätverket är inte tillgängligt" @@ -5896,10 +5926,6 @@ msgstr "Ogiltigt mönster. Använd N, N#K eller en kommaseparerad lista med valf msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ogiltligt format. Förväntat vector format: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Ej tillämpligt" - # AI Translated msgid "System agents" msgstr "Systemagenter" @@ -6596,7 +6622,7 @@ msgid "Size:" msgstr "Storlek:" # AI Translated -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Konflikter mellan G-code-banor hittades på lager %d, Z = %.2lfmm. Placera de objekt som krockar längre ifrån varandra (%s <-> %s)." @@ -6798,6 +6824,9 @@ msgstr "Flera enheter" msgid "Project" msgstr "Projekt" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Ja" @@ -6928,6 +6957,12 @@ msgstr "Spara Projekt som" msgid "Save current project as" msgstr "Spara nuvarande projekt som" +msgid "Publish" +msgstr "Publicera" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importera 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8916,6 +8951,12 @@ msgstr "Bekräfta att G-koderna i dessa inställningar är säkra för att förh msgid "Customized Preset" msgstr "Anpassad inställning" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Komponent namnet i STEP filen är inte UTF8 format!" @@ -9088,22 +9129,22 @@ msgid "Replaced with 3D files from directory:\n" msgstr "Ersatt med 3D-filer från mappen:\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Hoppade över %s: samma fil.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Hoppade över %s: filen finns inte.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Hoppade över %s: det gick inte att ersätta.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Ersatte %s.\n" @@ -9328,6 +9369,14 @@ msgstr "Spara beredningen som:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Filen %s har skickats till skrivarens lagringsutrymme och kan visas på skrivaren." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozzeltypen är inte angiven. Ange nozzeln och försök igen." @@ -10357,6 +10406,14 @@ msgstr "Visa förinställningar som inte stöds" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Visa inkompatibla förinställningar och förinställningar som inte stöds i rullgardinslistorna för skrivare och filament. Dessa förinställningar kan inte väljas." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Experimentella funktioner" @@ -10608,9 +10665,6 @@ msgstr "Växla till modell publicerings hemsidan" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notera: Förberedelserna kan ta flera minuter. Vänligen vänta." -msgid "Publish" -msgstr "Publicera" - msgid "Publish was canceled" msgstr "Publiceringen avbröts" @@ -10627,6 +10681,21 @@ msgstr "Laddar upp data" msgid "Jump to webpage" msgstr "Växla till hemsidan" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Spara %s som" @@ -10637,10 +10706,22 @@ msgstr "Användar förinställning" msgid "Preset Inside Project" msgstr "Projekt förinställning" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Koppla loss från överordnad" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Namnet ej tillgängligt." @@ -11459,23 +11540,6 @@ msgstr "Är du säker på att du vill aktivera det här alternativet?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Ifyllnadsmönster är oftast konstruerade för att hantera rotation automatiskt så att de skrivs ut korrekt och ger avsedd effekt (t.ex. Gyroid, Kubisk). Att rotera det aktuella sparsamma ifyllnadsmönstret kan ge otillräckligt stöd. Var försiktig och kontrollera noga om det uppstår utskriftsproblem. Är du säker på att du vill aktivera det här alternativet?" -# AI Translated -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Lagerhöjden är för liten.\n" -"Den ställs in på min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Lagerhöjden överskrider gränsen i Skrivarinställningar -> Extruder -> Lagerhöjds gränser, detta kan orsaka problem med utskriftskvaliteten." - -msgid "Adjust to the set range automatically?\n" -msgstr "Justera automatiskt till det inställda området?\n" - -msgid "Adjust" -msgstr "Justera" - # AI Translated msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Experimentell funktion: Filamentet dras tillbaka och kapas på ett längre avstånd vid filamentbyten för att minimera rensningen. Det kan minska rensningen avsevärt, men kan också öka risken för igensatt nozzel eller andra utskriftsproblem." @@ -11707,6 +11771,9 @@ msgstr "Hittade reserverade nyckelord" msgid "Setting Overrides" msgstr "Åsidosätter inställningar" +msgid "Retraction when switching material" +msgstr "Reduktion vid material byte" + msgid "Basic information" msgstr "Allmän information" @@ -11848,6 +11915,14 @@ msgstr "Kompatibla process profiler" msgid "Printable space" msgstr "Utskriftsbar yta" +# AI Translated +msgid "Printer Agent" +msgstr "Skrivaragent" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren. Tillgängliga agenter registreras vid start." + # AI Translated #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format @@ -11992,9 +12067,6 @@ msgstr "Lagerhöjds begränsning" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Reduktion vid material byte" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -13486,6 +13558,9 @@ msgstr " är för nära uteslutningsområdet, och kollisioner kommer att orsakas msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " ligger för nära området för klumpdetektering, vilket kommer att orsaka kollisioner.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "De valda nozzeltemperaturerna är inkompatibla. Varje filaments nozzeltemperatur måste ligga inom de andra filamentens rekommenderade nozzeltemperaturintervall. Annars kan nozzeln sättas igen eller skrivaren skadas." @@ -13856,10 +13931,6 @@ msgstr "Använd 3MF i stället för G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Aktivera detta om skrivaren tar emot en 3MF-fil som utskriftsjobb. När det är aktiverat skickar Orca Slicer den beredda filen som en .gcode.3mf i stället för en vanlig .gcode-fil." -# AI Translated -msgid "Printer Agent" -msgstr "Skrivaragent" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren." @@ -14616,9 +14687,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Hastighet för inre bridges. Om värdet anges i procent beräknas det utifrån bridge_speed. Standardvärdet är 150 %." -msgid "Brim width" -msgstr "Brim bredd" - msgid "This is the distance from the model to the outermost brim line." msgstr "Avståndet från modellen till yttersta brim linjen" @@ -14707,6 +14775,12 @@ msgstr "" "Geometrin decimeras innan skarpa vinklar detekteras. Den här parametern anger avvikelsens minsta längd för decimeringen.\n" "0 för att avaktivera." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "uppåt kompatibel maskin" @@ -16039,6 +16113,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Acceleration av fyllning av toppytan. Att använda ett lägre värde kan förbättra ytkvaliteten" @@ -16651,6 +16731,12 @@ msgstr "Vilken typ av G-kod är skrivaren kompatibel med" msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + # AI Translated msgid "Pellet Modded Printer" msgstr "Skrivare ombyggd för pellets" @@ -17868,6 +17954,12 @@ msgstr "Lång reduktion vid extruderbyte" msgid "Retraction distance when extruder change" msgstr "Reduktionssträcka vid extruderbyte" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + # AI Translated msgid "Z-hop height" msgstr "Z-hop-höjd" @@ -17983,6 +18075,9 @@ msgstr "Extra längd vid omstart" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "När reduktionen kompenseras efter flyttrörelsen trycker extrudern fram den här extra mängden filament. Den här inställningen behövs sällan." +msgid "Extra length on restart (Toolchange)" +msgstr "" + # AI Translated msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "När reduktionen kompenseras efter verktygsbyte trycker extrudern fram den här extra mängden filament." @@ -18477,6 +18572,12 @@ msgstr "Verktygsbyte vid prime tornet" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Tvinga verktygshuvudet att flytta till prime tornet innan verktygsbyteskommandot (Tx) skickas. Endast relevant för skrivare med flera extrudrar (flera verktygshuvuden) som använder ett prime torn av typ 2. Som standard hoppar Orca över flytten på maskiner med flera verktygshuvuden, eftersom den fasta programvaran hanterar huvudbytet, vilket kan leda till att Tx-kommandot skickas ovanför den utskrivna delen. Aktivera det här alternativet om du vill att verktygsbytet alltid ska ske ovanför prime tornet i stället." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + # AI Translated msgid "No sparse layers (beta)" msgstr "Inga glesa lager (beta)" @@ -22101,10 +22202,6 @@ msgstr "Fysisk printer" msgid "Print Host upload" msgstr "Uppladdning utskriftsvärd" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren. Tillgängliga agenter registreras vid start." - # AI Translated msgid "Select a Flashforge printer" msgstr "Välj en Flashforge-skrivare" @@ -23181,10 +23278,6 @@ msgstr "Något oväntat hände vid inloggningen, försök igen." msgid "User canceled." msgstr "Användaren avbröt." -# AI Translated -msgid "Head diameter" -msgstr "Huvuddiameter" - # AI Translated msgid "Max angle" msgstr "Maxvinkel" @@ -24071,6 +24164,24 @@ msgstr "" "Undvik vridning\n" "Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?" +# AI Translated +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Lagerhöjden är för liten.\n" +#~ "Den ställs in på min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Lagerhöjden överskrider gränsen i Skrivarinställningar -> Extruder -> Lagerhöjds gränser, detta kan orsaka problem med utskriftskvaliteten." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Justera automatiskt till det inställda området?\n" + +# AI Translated +#~ msgid "Head diameter" +#~ msgstr "Huvuddiameter" + # AI Translated #~ msgid "Print order within a single layer." #~ msgstr "Utskriftsordning inom ett enskilt lager." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index a419ba320e..7f86af0e5e 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -4720,6 +4720,20 @@ msgstr "อุณหภูมิห้องพิมพ์ปัจจุบั msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "อุณหภูมิห้องพิมพ์ต่ำสุด (%d℃) สูงกว่าอุณหภูมิห้องพิมพ์เป้าหมาย (%d℃) ค่าต่ำสุดคือเกณฑ์ที่การพิมพ์จะเริ่มต้นในขณะที่ห้องพิมพ์ยังคงร้อนขึ้นไปสู่เป้าหมาย จึงไม่ควรเกินค่าเป้าหมาย ระบบจะจำกัดค่าให้เท่ากับเป้าหมาย" +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "ปรับ" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4840,6 +4854,12 @@ msgstr "" "ใช่ - เปิดใช้งาน Arachne Wall Generator\n" "ไม่ - ปิดการใช้งาน Arachne Wall Generator และตั้งค่าโหมด [Displacement] ของ Fuzzy Skin" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "ความกว้าง ขอบยึดชิ้นงาน" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "โหมดเกลียวจะทำงานเฉพาะเมื่อลูปติดผนังเป็น 1, ปิดใช้งานส่วนรองรับ, การตรวจจับการจับตัวเป็นก้อนโดยการตรวจวัดถูกปิดใช้งาน, ชั้นเปลือกด้านบนเป็น 0, ความหนาแน่นของไส้ในแบบกระจายเป็น 0 และประเภทไทม์แลปส์เป็นแบบดั้งเดิม" @@ -4855,6 +4875,9 @@ msgstr "" "ใช่ - เปลี่ยนการตั้งค่าเหล่านี้และเปิดใช้งานโหมดเกลียวโดยอัตโนมัติ\n" "ไม่ - เลิกใช้โหมดเกลียวในครั้งนี้" +msgid "N/A" +msgstr "ไม่มี" + msgid "Printing" msgstr "กำลังพิมพ์" @@ -5094,6 +5117,12 @@ msgstr "ไม่สามารถสร้าง cali G-code" msgid "Calibration error" msgstr "ข้อผิดพลาดในการสอบเทียบ" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "เครือข่ายไม่พร้อมใช้งาน" @@ -5306,9 +5335,6 @@ msgstr "รูปแบบไม่ถูกต้อง ใช้ N, N#K หร msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "รูปแบบไม่ถูกต้อง รูปแบบเวกเตอร์ที่ต้องการ: \"%1%\"" -msgid "N/A" -msgstr "ไม่มี" - # AI Translated msgid "System agents" msgstr "เอเจนต์ระบบ" @@ -5952,7 +5978,7 @@ msgstr "ปริมาณ:" msgid "Size:" msgstr "ขนาด:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "พบความขัดแย้งของเส้นทางรหัส G ที่เลเยอร์ %d, Z = %.2lfmm โปรดแยกวัตถุที่ขัดแย้งกันให้ไกลออกไป (%s <-> %s)" @@ -6133,6 +6159,9 @@ msgstr "หลายอุปกรณ์" msgid "Project" msgstr "โปรเจกต์" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "ใช่" @@ -6260,6 +6289,12 @@ msgstr "บันทึกโปรเจกต์เป็น" msgid "Save current project as" msgstr "บันทึกโครงการปัจจุบันเป็น" +msgid "Publish" +msgstr "เผยแพร่" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "นำเข้า 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8038,6 +8073,12 @@ msgstr "โปรดยืนยันว่ารหัส G ภายในค msgid "Customized Preset" msgstr "ค่าที่ตั้งไว้ล่วงหน้าที่กำหนดเอง" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF8!" @@ -8199,19 +8240,19 @@ msgstr "ไม่ได้เลือกไดเรกทอรีสำหร msgid "Replaced with 3D files from directory:\n" msgstr "แทนที่ด้วยไฟล์ 3D จากไดเรกทอรี:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ ข้าม %s: ไฟล์เดียวกัน\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ ข้าม %s: ไม่มีไฟล์อยู่\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ ข้าม %s: ไม่สามารถแทนที่ได้\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔แทนที่ %s\n" @@ -8421,6 +8462,14 @@ msgstr "บันทึกไฟล์ที่สไลซ์เป็น:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "ไฟล์ %s ถูกส่งไปยังพื้นที่เก็บข้อมูลของเครื่องพิมพ์แล้ว และสามารถดูได้บนเครื่องพิมพ์" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ไม่ได้ตั้งค่าประเภทหัวฉีด โปรดตั้งหัวฉีดแล้วลองอีกครั้ง" @@ -9299,6 +9348,14 @@ msgstr "แสดงค่าที่ตั้งไว้ล่วงหน้ msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "แสดงค่าที่ตั้งไว้ล่วงหน้าที่ไม่เข้ากันหรือไม่รองรับในรายการเลือกเครื่องพิมพ์และเส้นพลาสติก ไม่สามารถเลือกค่าที่ตั้งไว้ล่วงหน้าเหล่านี้ได้" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "ฟีเจอร์ทดลอง" @@ -9535,9 +9592,6 @@ msgstr "ข้ามไปที่โมเดลเผยแพร่หน้ msgid "Note: The preparation may take several minutes. Please be patient." msgstr "หมายเหตุ: การเตรียมการอาจใช้เวลาหลายนาที กรุณาอดทน." -msgid "Publish" -msgstr "เผยแพร่" - msgid "Publish was canceled" msgstr "การเผยแพร่ถูกยกเลิก" @@ -9553,6 +9607,21 @@ msgstr "กำลังอัพโหลดข้อมูล" msgid "Jump to webpage" msgstr "ข้ามไปที่หน้าเว็บ" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "บันทึก %s เป็น" @@ -9563,9 +9632,21 @@ msgstr "พรีเซ็ตผู้ใช้" msgid "Preset Inside Project" msgstr "พรีเซ็ตภายในโปรเจ็กต์" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "แยกออกจากพรีเซ็ตแม่" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "ชื่อไม่พร้อมใช้งาน" @@ -10305,22 +10386,6 @@ msgstr "คุณแน่ใจหรือไม่ว่าต้องกา msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "โดยทั่วไปรูปแบบไส้ในได้รับการออกแบบให้รองรับการหมุนโดยอัตโนมัติเพื่อให้แน่ใจว่าการพิมพ์ถูกต้องและบรรลุผลตามที่ต้องการ (เช่น Gyroid, ลูกบาศก์) การหมุนรูปแบบ ไส้ใน แบบกระจัดกระจายในปัจจุบันอาจทำให้ส่วนรองรับไม่เพียงพอ โปรดดำเนินการด้วยความระมัดระวังและตรวจสอบปัญหาการพิมพ์ที่อาจเกิดขึ้นอย่างละเอียด คุณแน่ใจหรือไม่ว่าต้องการเปิดใช้งานตัวเลือกนี้" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"ความสูงของเลเยอร์น้อยเกินไป\n" -"มันจะตั้งค่าเป็น min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "ความสูงของเลเยอร์เกินขีดจำกัดในการตั้งค่าเครื่องพิมพ์ -> ชุดดันเส้น -> ขีดจำกัดความสูงของเลเยอร์ ซึ่งอาจทำให้เกิดปัญหาคุณภาพการพิมพ์" - -msgid "Adjust to the set range automatically?\n" -msgstr "ปรับเป็นช่วงที่ตั้งไว้อัตโนมัติ?\n" - -msgid "Adjust" -msgstr "ปรับ" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "คุณลักษณะการทดลอง: การดึงกลับและตัดเส้นพลาสติกออกในระยะห่างที่มากขึ้นระหว่างการเปลี่ยนเส้นพลาสติกเพื่อลดการไล่เส้น แม้ว่าจะสามารถลดการไล่เส้นได้อย่างเห็นได้ชัด แต่ก็อาจเพิ่มความเสี่ยงของการอุดตันของหัวฉีดหรือภาวะแทรกซ้อนในการพิมพ์อื่นๆ อีกด้วย" @@ -10513,6 +10578,9 @@ msgstr "พบคีย์เวิร์ดที่สงวนไว้" msgid "Setting Overrides" msgstr "การตั้งค่าการแทนที่" +msgid "Retraction when switching material" +msgstr "การร่นกลับเมื่อเปลี่ยนวัสดุ" + msgid "Basic information" msgstr "ข้อมูลพื้นฐาน" @@ -10642,6 +10710,12 @@ msgstr "โปรไฟล์กระบวนการที่เข้าก msgid "Printable space" msgstr "พื้นที่ที่สามารถพิมพ์ได้" +msgid "Printer Agent" +msgstr "ตัวแทนเครื่องพิมพ์" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "เลือกการใช้งานตัวแทนเครือข่ายสำหรับการสื่อสารของเครื่องพิมพ์ ตัวแทนที่มีอยู่จะได้รับการลงทะเบียนเมื่อเริ่มต้น" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10767,9 +10841,6 @@ msgstr "การจำกัดความสูงของเลเยอร msgid "Z-Hop" msgstr "ยกแกน Z" -msgid "Retraction when switching material" -msgstr "การร่นกลับเมื่อเปลี่ยนวัสดุ" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12111,6 +12182,9 @@ msgstr "อยู่ใกล้เขตหวงห้ามมากเกิ msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr "อยู่ใกล้พื้นที่การตรวจจับการจับตัวกันมากเกินไป และจะเกิดการชนกัน\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "อุณหภูมิหัวฉีดที่เลือกเข้ากันไม่ได้ อุณหภูมิหัวฉีดของเส้นพลาสติกแต่ละเส้นต้องอยู่ในช่วงอุณหภูมิหัวฉีดที่แนะนำของเส้นพลาสติกอื่นๆ มิฉะนั้นอาจเกิดการอุดตันของหัวฉีดหรือเครื่องพิมพ์เสียหายได้" @@ -12426,9 +12500,6 @@ msgstr "ใช้ 3MF แทน G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "เปิดใช้งานหากเครื่องพิมพ์รับไฟล์ 3MF เป็นงานพิมพ์ เมื่อเปิดใช้งาน OrcaSlicer จะส่งไฟล์ที่สไลซ์แล้วเป็น .gcode.3mf แทนไฟล์ .gcode ธรรมดา" -msgid "Printer Agent" -msgstr "ตัวแทนเครื่องพิมพ์" - msgid "Select the network agent implementation for printer communication." msgstr "เลือกการใช้งานตัวแทนเครือข่ายสำหรับการสื่อสารของเครื่องพิมพ์" @@ -13103,9 +13174,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "ความเร็วของสะพานภายใน หากค่าแสดงเป็นเปอร์เซ็นต์ ค่าดังกล่าวจะถูกคำนวณตาม bridge_speed ค่าเริ่มต้นคือ 150%" -msgid "Brim width" -msgstr "ความกว้าง ขอบยึดชิ้นงาน" - msgid "This is the distance from the model to the outermost brim line." msgstr "ระยะห่างจากแบบจำลองถึงเส้นขอบยึดชิ้นงานด้านนอกสุด" @@ -13185,6 +13253,12 @@ msgstr "" "รูปทรงจะถูกทำลายก่อนที่จะตรวจจับมุมแหลม พารามิเตอร์นี้ระบุความยาวขั้นต่ำของการเบี่ยงเบนสำหรับการทำลาย\n" "0 เพื่อปิดการใช้งาน" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "เครื่องที่รองรับขึ้นไป" @@ -14351,6 +14425,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "ไจรอยด์" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "ความเร่งของไส้ในพื้นผิวด้านบน การใช้ค่าที่ต่ำกว่าอาจปรับปรุงคุณภาพพื้นผิวด้านบนได้" @@ -14893,6 +14973,12 @@ msgstr "เครื่องพิมพ์ G-code ชนิดใดที่ msgid "Klipper" msgstr "คลิปเปอร์" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "เครื่องพิมพ์ Modded เม็ด" @@ -15945,6 +16031,12 @@ msgstr "การถอยกลับนานเมื่อเปลี่ย msgid "Retraction distance when extruder change" msgstr "ระยะการดึงกลับเมื่อชุดดันเส้นเปลี่ยน" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "ความสูงยกแกน Z" @@ -16039,6 +16131,9 @@ msgstr "ความยาวพิเศษเมื่อรีสตาร์ msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "เมื่อชดเชยการดึงกลับหลังการเคลื่อนที่เดินทาง ชุดดันเส้นจะดันเส้นพลาสติกเพิ่มเติมในปริมาณนี้ การตั้งค่านี้ไม่ค่อยจำเป็น" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "เมื่อชดเชยการดึงกลับหลังเปลี่ยนเครื่องมือ ชุดดันเส้นจะดันเส้นพลาสติกเพิ่มเติมในปริมาณนี้" @@ -16451,6 +16546,12 @@ msgstr "การเปลี่ยนเครื่องมือบน Wipe msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "บังคับให้หัวเครื่องมือเคลื่อนที่ไปที่ Wipe Tower ก่อนที่จะออกคำสั่งเปลี่ยนเครื่องมือ (Tx) เกี่ยวข้องเฉพาะกับเครื่องพิมพ์ที่มีชุดดันเส้นหลายเครื่อง (หลายหัวเครื่องมือ) ที่ใช้แผ่นเช็ดแบบ Type 2 ตามค่าเริ่มต้น Orca จะข้ามการเดินทางบนเครื่องที่มีหัวเครื่องมือหลายหัวเนื่องจากเฟิร์มแวร์จัดการการสลับหัว ซึ่งอาจส่งผลให้มีการออกคำสั่ง Tx เหนือส่วนที่พิมพ์ เปิดใช้งานตัวเลือกนี้หากคุณต้องการให้ทำการเปลี่ยนแปลงเครื่องมือเหนือ Wipe Tower แทนเสมอ" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "ไม่มีชั้นกระจัดกระจาย (เบต้า)" @@ -19681,9 +19782,6 @@ msgstr "เครื่องพิมพ์ทางกายภาพ" msgid "Print Host upload" msgstr "อัพโหลดโฮสต์การพิมพ์" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "เลือกการใช้งานตัวแทนเครือข่ายสำหรับการสื่อสารของเครื่องพิมพ์ ตัวแทนที่มีอยู่จะได้รับการลงทะเบียนเมื่อเริ่มต้น" - msgid "Select a Flashforge printer" msgstr "เลือกเครื่องพิมพ์ Flashforge" @@ -20575,9 +20673,6 @@ msgstr "เกิดสิ่งที่ไม่คาดคิดขณะพ msgid "User canceled." msgstr "ผู้ใช้ยกเลิก" -msgid "Head diameter" -msgstr "เส้นผ่านศูนย์กลางหัว" - msgid "Max angle" msgstr "มุมสูงสุด" @@ -21361,6 +21456,22 @@ msgstr "" "หลีกเลี่ยงการบิดเบี้ยว\n" "คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "ความสูงของเลเยอร์น้อยเกินไป\n" +#~ "มันจะตั้งค่าเป็น min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "ความสูงของเลเยอร์เกินขีดจำกัดในการตั้งค่าเครื่องพิมพ์ -> ชุดดันเส้น -> ขีดจำกัดความสูงของเลเยอร์ ซึ่งอาจทำให้เกิดปัญหาคุณภาพการพิมพ์" + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "ปรับเป็นช่วงที่ตั้งไว้อัตโนมัติ?\n" + +#~ msgid "Head diameter" +#~ msgstr "เส้นผ่านศูนย์กลางหัว" + #~ msgid "Print order within a single layer." #~ msgstr "สั่งพิมพ์ภายในชั้นเดียว" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 467b3c355b..944c322a94 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-08-01 20:32+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -4812,6 +4812,20 @@ msgstr "Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksek msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Minimum oda sıcaklığı (%d℃), hedef oda sıcaklığından (%d℃) yüksek. Minimum değer, oda hedefe doğru ısınmaya devam ederken baskının başladığı eşiktir; bu nedenle hedefi aşmamalıdır. Değer hedefe sınırlandırılacak." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Ayarla" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4932,6 +4946,12 @@ msgstr "" "Evet - Arachne Duvarı Oluşturucusunu Etkinleştir\n" "Hayır - Arachne Duvarı Oluşturucusunu Devre Dışı Bırak ve Pütürlü Yüzey [Yer Değiştirme] modunu ayarla" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Kenar genişliği" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Spiral mod yalnızca duvar döngüleri 1 olduğunda, destek devre dışı bırakıldığında, problama yoluyla topaklanma tespiti devre dışı bırakıldığında, üst kabuk katmanları 0 olduğunda, seyrek dolgu yoğunluğu 0 olduğunda ve hızlandırılmış tip geleneksel olduğunda çalışır." @@ -4947,6 +4967,10 @@ msgstr "" "Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" +# AI Translated +msgid "N/A" +msgstr "Yok" + msgid "Printing" msgstr "Baskı" @@ -5186,6 +5210,12 @@ msgstr "Cali G-code oluşturma başarısız oldu" msgid "Calibration error" msgstr "Kalibrasyon hatası" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Ağ kullanılamıyor" @@ -5398,10 +5428,6 @@ msgstr "Geçersiz kalıp. N, N#K veya giriş başına isteğe bağlı #K ile vir msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Yok" - # AI Translated msgid "System agents" msgstr "Sistem aracıları" @@ -6050,7 +6076,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "%d katmanında gcode yollarında çakışmalar bulundu, Z = %.2lfmm. Lütfen çakışan nesneleri daha uzağa ayırın (%s <-> %s)." @@ -6232,6 +6258,9 @@ msgstr "Çoklu cihaz" msgid "Project" msgstr "Proje" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Evet" @@ -6360,6 +6389,12 @@ msgstr "Projeyi farklı kaydet" msgid "Save current project as" msgstr "Mevcut projeyi farklı kaydet" +msgid "Publish" +msgstr "Yayınla" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" @@ -8170,6 +8205,12 @@ msgstr "Lütfen bu ön ayarlar içindeki G-kodlarının makineye herhangi bir za msgid "Customized Preset" msgstr "Özel Ayar" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Step dosyasındaki bileşenlerin adı UTF8 formatında değil!" @@ -8335,19 +8376,19 @@ msgstr "Değiştirme için dizin seçilmedi" msgid "Replaced with 3D files from directory:\n" msgstr "Dizindeki 3D dosyalarla değiştirildi:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ %s atlandı: aynı dosya.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ %s atlandı: dosya mevcut değil.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ %s atlandı: değiştirilemedi.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ %s değiştirildi.\n" @@ -8557,6 +8598,14 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda görüntülenebiliyor." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozul tipi ayarlanmamış. Lütfen nozulu ayarlayın ve tekrar deneyin." @@ -9477,6 +9526,14 @@ msgstr "Desteklenmeyen ön ayarları göster" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Yazıcı ve filament açılır listelerinde uyumsuz/desteklenmeyen ön ayarları gösterir. Bu ön ayarlar seçilemez." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Deneysel Özellikler" @@ -9716,9 +9773,6 @@ msgstr "Model yayınlama web sayfasına git" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun." -msgid "Publish" -msgstr "Yayınla" - msgid "Publish was canceled" msgstr "Yayınlama iptal edildi" @@ -9734,6 +9788,21 @@ msgstr "Veriler yükleniyor" msgid "Jump to webpage" msgstr "Web sayfasına atla" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s'yi farklı kaydet" @@ -9744,9 +9813,21 @@ msgstr "Kullanıcı Ön Ayarı" msgid "Preset Inside Project" msgstr "Ön ayar içerisinde proje" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "Ebeveynden ayrıl" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Ad kullanılamıyor." @@ -10496,22 +10577,6 @@ msgstr "Bu seçeneği etkinleştirmek istediğinizden emin misiniz?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Dolgu desenleri genellikle, doğru baskı alınmasını ve istenen etkilerin (ör. Gyroid, Kübik) elde edilmesini sağlamak için döndürme işlemini otomatik olarak yapacak şekilde tasarlanmıştır. Mevcut seyrek dolgu desenini döndürmek, yetersiz destekle sonuçlanabilir. Lütfen dikkatli ilerleyin ve olası baskı sorunlarını iyice kontrol edin. Bu seçeneği etkinleştirmek istediğinizden emin misiniz?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Katman yüksekliği çok küçük.\n" -"min_layer_height olarak ayarlanacak\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden olabilir." - -msgid "Adjust to the set range automatically?\n" -msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı?\n" - -msgid "Adjust" -msgstr "Ayarla" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek için filamenti daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli ölçüde azaltabilmesine rağmen, aynı zamanda nozul tıkanmaları veya diğer yazdırma komplikasyonları riskini de artırabilir." @@ -10710,6 +10775,9 @@ msgstr "Ayrılmış anahtar kelimeler bulundu" msgid "Setting Overrides" msgstr "Ayarların Üzerine Yazma" +msgid "Retraction when switching material" +msgstr "Malzemeyi Değiştirirken Geri Çekme" + msgid "Basic information" msgstr "Temel Bilgiler" @@ -10843,6 +10911,12 @@ msgstr "Uyumlu süreç profilleri" msgid "Printable space" msgstr "Plaka Ayarı" +msgid "Printer Agent" +msgstr "Yazıcı Aracısı" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Yazıcı iletişimi için ağ aracısı uygulamasını seçin. Kullanılabilir aracılar başlangıçta kaydedilir." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10973,9 +11047,6 @@ msgstr "Katman Yüksekliği Sınırları" msgid "Z-Hop" msgstr "Z Sıçraması" -msgid "Retraction when switching material" -msgstr "Malzemeyi Değiştirirken Geri Çekme" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12353,6 +12424,9 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " topaklanma algılama alanına çok yakın, çarpışmalar meydana gelecektir.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Seçilen nozul sıcaklıkları uyumsuz. Her filamentin nozul sıcaklığı, diğer filamentlerin önerilen nozul sıcaklığı aralığında olmalıdır. Aksi hâlde nozul tıkanması veya yazıcıda hasar oluşabilir." @@ -12688,9 +12762,6 @@ msgstr "G-code yerine 3MF kullan" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Yazıcı, baskı işi olarak 3MF dosyası kabul ediyorsa bunu etkinleştirin. Etkinleştirildiğinde Orca Slicer, dilimlenmiş dosyayı düz bir .gcode dosyası yerine .gcode.3mf olarak gönderir." -msgid "Printer Agent" -msgstr "Yazıcı Aracısı" - msgid "Select the network agent implementation for printer communication." msgstr "Yazıcı iletişimi için ağ aracısı uygulamasını seçin." @@ -13376,9 +13447,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "İç köprülerin hızı. Değer yüzde olarak ifade edilirse köprü hızına göre hesaplanacaktır. Varsayılan değer %150’dir." -msgid "Brim width" -msgstr "Kenar genişliği" - msgid "This is the distance from the model to the outermost brim line." msgstr "Modelden en dış kenar çizgisine kadar olan mesafe." @@ -13463,6 +13531,12 @@ msgstr "" "Keskin açılar algılanmadan önce geometri azaltılacaktır. Bu parametre, azaltma için minimum sapma uzunluğunu belirtir.\n" "Devre dışı bırakmak için 0." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "yukarı doğru uyumlu makine" @@ -14647,6 +14721,12 @@ msgstr "Tpms-fk" msgid "Gyroid" msgstr "Jiroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst yüzey kalitesini iyileştirebilir." @@ -15205,6 +15285,12 @@ msgstr "Yazıcının ne tür bir gcode ile uyumlu olduğu." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Pelet modlu yazıcı" @@ -16292,6 +16378,12 @@ msgstr "Ekstruder değiştiğinde uzun geri çekilme" msgid "Retraction distance when extruder change" msgstr "Ekstruder değiştiğinde geri çekilme mesafesi" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z-Sıçrama yüksekliği" @@ -16391,6 +16483,9 @@ msgstr "Yeniden başlatma sırasında ekstra uzunluk" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "İlerleme hareketinden sonra geri çekilme telafi edildiğinde, ekstruder bu ek filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu ilave filament miktarını itecektir." @@ -16808,6 +16903,12 @@ msgstr "Silme kulesinde takım değişimi" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Takım değişimi komutu (Tx) verilmeden önce baskı kafasını silme kulesine gitmeye zorlar. Yalnızca Tip 2 silme kulesi kullanan çok ekstruderli (çok baskı kafalı) yazıcılar için geçerlidir. Orca, çok baskı kafalı makinelerde bu seyahati varsayılan olarak atlar çünkü kafa değişimini ürün yazılımı yönetir; bu da Tx komutunun yazdırılan parçanın üzerinde verilmesine yol açabilir. Takım değişiminin her zaman silme kulesinin üzerinde verilmesini istiyorsanız bu seçeneği etkinleştirin." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" @@ -20092,9 +20193,6 @@ msgstr "Fiziksel Yazıcı" msgid "Print Host upload" msgstr "Yazıcı Bağlantı Ayarları" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Yazıcı iletişimi için ağ aracısı uygulamasını seçin. Kullanılabilir aracılar başlangıçta kaydedilir." - # AI Translated msgid "Select a Flashforge printer" msgstr "Bir Flashforge yazıcısı seçin" @@ -21037,9 +21135,6 @@ msgstr "Giriş yapmaya çalışırken beklenmeyen bir şey oldu, lütfen tekrar msgid "User canceled." msgstr "Kullanıcı iptal edildi." -msgid "Head diameter" -msgstr "Kafa çapı" - msgid "Max angle" msgstr "Maksimum açı" @@ -21768,7 +21863,8 @@ msgstr "" "Baskılarınızı plakalara ayırın\n" "Çok sayıda parçası olan bir modeli baskıya hazır ayrı kalıplara bölebileceğinizi biliyor muydunuz? Bu, tüm parçaları takip etme sürecini basitleştirecektir." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] msgid "" "Speed up your print with Adaptive Layer Height\n" "Did you know that you can print a model even faster by using the Adaptive Layer Height option? Check it out!" @@ -21841,7 +21937,8 @@ msgstr "" "Gücü artırın\n" "Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek dolgu yoğunluğu kullanabileceğinizi biliyor muydunuz?" -#: resources/data/hints.ini: [hint:When do you need to print with the printer door opened] +#: resources/data/hints.ini: [hint:When do you need to print with the printer +#: door opened] msgid "" "When do you need to print with the printer door opened?\n" "Did you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature? There is more info about this in the Wiki." @@ -21857,6 +21954,22 @@ msgstr "" "Eğilmeyi önleyin\n" "ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Katman yüksekliği çok küçük.\n" +#~ "min_layer_height olarak ayarlanacak\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden olabilir." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı?\n" + +#~ msgid "Head diameter" +#~ msgstr "Kafa çapı" + #~ msgid "Print order within a single layer." #~ msgstr "Tek bir katmanda yazdırma sırası." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 9204a67ec3..5c162e8475 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -4716,6 +4716,20 @@ msgstr "Поточна температура камери вища, ніж бе msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Мінімальна температура камери (%d℃) вища за цільову температуру камери (%d℃). Мінімальне значення — це поріг, за якого починається друк, поки камера продовжує нагріватися до цільової температури, тому воно не повинно її перевищувати. Значення буде обмежено цільовим." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Налаштувати" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4839,6 +4853,12 @@ msgstr "" "Так - Увімкнути генератор стінок Arachne\n" "Ні - Вимкнути генератор стінок Arachne і встановити режим [Зміщення] для шорсткої поверхні" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Ширина кайми" + # AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Спіральний режим працює лише тоді, коли кількість стінок дорівнює 1, підтримки вимкнено, виявлення налипання зондуванням вимкнено, кількість верхніх шарів оболонки дорівнює 0, щільність часткового заповнення дорівнює 0, а тип таймлапсу — традиційний." @@ -4855,6 +4875,9 @@ msgstr "" "Так – змінити ці налаштування та автоматично включити режим спіральна ваза\n" "Ні - цього разу відмовитися від використання режиму спіральна ваза" +msgid "N/A" +msgstr "Н/Д" + msgid "Printing" msgstr "Друк" @@ -5104,6 +5127,12 @@ msgstr "Не вдалося згенерувати калібрувальний msgid "Calibration error" msgstr "Помилка калібрування" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Мережа недоступна" @@ -5318,9 +5347,6 @@ msgstr "Некоректний шаблон. Використовуйте N, N#K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Невірний формат. Очікуваний векторний формат: \"%1%\"" -msgid "N/A" -msgstr "Н/Д" - # AI Translated msgid "System agents" msgstr "Системні агенти" @@ -5978,7 +6004,7 @@ msgid "Size:" msgstr "Розмір:" # AI Translated -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Виявлено конфлікти шляхів G-коду на шарі %d, Z = %.2lf мм. Будь ласка, рознесіть конфліктуючі обʼєкти далі один від одного (%s <-> %s)." @@ -6170,6 +6196,9 @@ msgstr "Багато пристроїв" msgid "Project" msgstr "Проєкт" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Так" @@ -6297,6 +6326,12 @@ msgstr "Зберегти проєкт як" msgid "Save current project as" msgstr "Зберегти поточний проєкт як" +msgid "Publish" +msgstr "Публікувати" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Імпорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8143,6 +8178,12 @@ msgstr "Будь ласка, підтвердьте, що G-коди в цих msgid "Customized Preset" msgstr "Пристосований пресет" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Назви компонентів усередині файлу STEP не у форматі UTF8!" @@ -8306,19 +8347,19 @@ msgstr "Каталог для заміни не вибрано" msgid "Replaced with 3D files from directory:\n" msgstr "Замінено 3D-файлами з каталогу:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Пропущено %s: той самий файл.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Пропущено %s: файл не існує.\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Пропущено %s: не вдалося замінити.\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Замінено %s.\n" @@ -8531,6 +8572,14 @@ msgstr "Зберегти нарізаний файл як:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s надіслано до памʼяті принтера та доступний для перегляду на принтері." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Тип сопла не встановлений. Будь ласка, оберіть сопло та спробуйте ще раз." @@ -9446,6 +9495,14 @@ msgstr "Показати непідтримувані пресети" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Показати несумісні/непідтримувані пресети у випадаючому списку принтера і філаменту. Ці пресети не можна вибрати." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + msgid "Experimental Features" msgstr "Експериментальні функції" @@ -9682,9 +9739,6 @@ msgstr "Перейти на веб-сторінку публікації мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примітка. Підготовка може тривати кілька хвилин. Будь ласка, будьте терплячі." -msgid "Publish" -msgstr "Публікувати" - msgid "Publish was canceled" msgstr "Публікація скасована" @@ -9700,6 +9754,21 @@ msgstr "Відвантаження даних" msgid "Jump to webpage" msgstr "Перейти на вебсторінку" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Зберегти %s як" @@ -9710,10 +9779,22 @@ msgstr "Пресети користувача" msgid "Preset Inside Project" msgstr "Налаштування проекту всередині" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Відʼєднати від батьківського" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Назва недоступна." @@ -10492,22 +10573,6 @@ msgstr "Ви впевнені, що хочете ввімкнути цю опц msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Шаблони заповнення зазвичай розроблені так, щоб автоматично враховувати обертання, забезпечувати належний друк і досягати задуманого ефекту (наприклад, Гіроїд, Кубічний). Обертання поточного шаблону часткового заповнення може призвести до недостатньої підтримки. Дійте обережно та ретельно перевіряйте можливі проблеми друку. Ви впевнені, що хочете увімкнути цю опцію?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Висота шару занадто мала.\n" -"Буде встановлено значення min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Висота шару перевищує ліміт у Налаштуваннях принтера -> Екструдер -> Ліміти висоти шару, це може призвести до проблем з якістю друку." - -msgid "Adjust to the set range automatically?\n" -msgstr "Автоматично налаштувати на встановлений діапазон?\n" - -msgid "Adjust" -msgstr "Налаштувати" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Експериментальна функція: Втягування та відрізання філаменту на більшій відстані під час зміни філаменту для мінімізації промивання. Хоча це може помітно зменшити промивання, це також може підвищити ризик засмічення сопла або інших ускладнень друку." @@ -10711,6 +10776,9 @@ msgstr "Знайдено зарезервовані ключові слова" msgid "Setting Overrides" msgstr "Налаштування перевизначень" +msgid "Retraction when switching material" +msgstr "Втягування під час зміни матеріалу" + msgid "Basic information" msgstr "Базова інформація" @@ -10848,6 +10916,13 @@ msgstr "Сумісні профілі процесів" msgid "Printable space" msgstr "Місце для друку" +msgid "Printer Agent" +msgstr "Агент принтера" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером. Доступні агенти реєструються під час запуску." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10978,9 +11053,6 @@ msgstr "Обмеження висоти шару" msgid "Z-Hop" msgstr "Стрибок-Z" -msgid "Retraction when switching material" -msgstr "Втягування під час зміни матеріалу" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12376,6 +12448,9 @@ msgstr " знаходиться надто близько до зони відч msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " розташовано занадто близько до зони виявлення налипання, і це спричинить зіткнення.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Вибрані температури сопла несумісні. Температура сопла кожного філаменту має входити в рекомендований діапазон температур сопла інших філаментів. Інакше можливе засмічення сопла або пошкодження принтера." @@ -12722,9 +12797,6 @@ msgstr "Використовувати 3MF замість G-коду" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Увімкніть, якщо принтер приймає файл 3MF як завдання друку. Якщо увімкнено, Orca Slicer надсилає нарізаний файл як .gcode.3mf замість звичайного файлу .gcode." -msgid "Printer Agent" -msgstr "Агент принтера" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером." @@ -13438,9 +13510,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Швидкість внутрішніх мостів. Якщо значення вказано у відсотках, воно буде розраховане на основі bridge_speed. Значення за замовчуванням: 150%." -msgid "Brim width" -msgstr "Ширина кайми" - msgid "This is the distance from the model to the outermost brim line." msgstr "Відстань від моделі до останньої зовнішньої лінії кайми" @@ -13525,6 +13594,12 @@ msgstr "" "Геометрія буде оброблена перед детектуванням гострих кутів. Цей параметр вказує мінімальну довжину відхилення для обробки.\n" "0 для вимкнення" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "висхідна сумісна машина" @@ -14734,6 +14809,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Гіроїд" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Прискорення заповнення верхньої поверхні. Використання меншого значенняможе покращити якість верхньої поверхні" @@ -15300,6 +15381,12 @@ msgstr "З яким gcode сумісний принтер" msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Принтер модифікований гранулами" @@ -16438,6 +16525,12 @@ msgstr "Довге втягування при зміні екструдера" msgid "Retraction distance when extruder change" msgstr "Відстань втягування при зміні екструдера" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Висота Z-підйому" @@ -16534,6 +16627,9 @@ msgstr "Додаткова довжина під час перезавантаж msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Коли втягування компенсується після переміщення, екструдер проштовхуєЦе додаткова кількість нитки. Ця установка рідко потрібна." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Коли втягування компенсується після заміни інструменту, екструдерпроштовхує цю додаткову кількість нитки." @@ -16960,6 +17056,12 @@ msgstr "Зміна інструмента на вежі протирання" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Примусово переміщати головку до вежі протирання перед видачею команди зміни інструмента (Tx). Стосується лише багатоекструдерних (багатоінструментальних) принтерів з вежею протирання типу 2. Типово Orca пропускає це переміщення на багатоінструментальних машинах, оскільки заміну головки виконує прошивка, через що команда Tx може бути видана над надрукованою деталлю. Увімкніть цю опцію, якщо хочете, щоб зміна інструмента завжди відбувалася над вежею протирання." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Без розріджених шарів (бета)" @@ -20304,10 +20406,6 @@ msgstr "Фізичний принтер" msgid "Print Host upload" msgstr "Завантаження хоста друку" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером. Доступні агенти реєструються під час запуску." - msgid "Select a Flashforge printer" msgstr "Вибрати принтер Flashforge" @@ -21181,9 +21279,6 @@ msgstr "Під час спроби входу трапилося щось нес msgid "User canceled." msgstr "Користувача скасовано." -msgid "Head diameter" -msgstr "Діаметр голови" - msgid "Max angle" msgstr "Максимальний кут" @@ -21979,6 +22074,22 @@ msgstr "" "Уникнення деформації\n" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Висота шару занадто мала.\n" +#~ "Буде встановлено значення min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Висота шару перевищує ліміт у Налаштуваннях принтера -> Екструдер -> Ліміти висоти шару, це може призвести до проблем з якістю друку." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Автоматично налаштувати на встановлений діапазон?\n" + +#~ msgid "Head diameter" +#~ msgstr "Діаметр голови" + #~ msgid "Print order within a single layer." #~ msgstr "Друк замовлення в один шар" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index e6e7adf43d..f900f3fc1f 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -4975,6 +4975,20 @@ msgstr "Nhiệt độ buồng hiện tại cao hơn nhiệt độ an toàn của msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "Nhiệt độ buồng tối thiểu (%d℃) cao hơn nhiệt độ buồng mục tiêu (%d℃). Giá trị tối thiểu là ngưỡng để bắt đầu in trong khi buồng vẫn tiếp tục gia nhiệt tới mục tiêu, nên nó không được vượt quá giá trị mục tiêu. Nó sẽ được giới hạn về mức mục tiêu." +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "Điều chỉnh" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -5095,6 +5109,12 @@ msgstr "" "Yes - Bật trình tạo wall Arachne\n" "No - Tắt trình tạo wall Arachne và đặt chế độ [Displacement] của Fuzzy Skin" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Độ rộng brim" + # AI Translated msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "Chế độ xoắn ốc chỉ hoạt động khi vòng wall bằng 1, support bị tắt, phát hiện vón cục bằng dò bị tắt, số lớp vỏ trên bằng 0, mật độ infill thưa bằng 0 và loại timelapse là truyền thống." @@ -5111,6 +5131,10 @@ msgstr "" "Yes - Thay đổi các cài đặt này và bật chế độ spiral tự động\n" "No - Từ bỏ dùng chế độ spiral lần này" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Đang in" @@ -5399,6 +5423,12 @@ msgstr "Không thể tạo G-code hiệu chỉnh" msgid "Calibration error" msgstr "Lỗi hiệu chỉnh" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "Mạng không khả dụng" @@ -5621,10 +5651,6 @@ msgstr "Mẫu không hợp lệ. Dùng N, N#K, hoặc danh sách phân cách d msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Định dạng không hợp lệ. Mong đợi định dạng vector: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Tác nhân hệ thống" @@ -6317,7 +6343,7 @@ msgstr "Thể tích:" msgid "Size:" msgstr "Kích thước:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Đã tìm thấy xung đột đường đi G-code tại lớp %d, Z = %.2lfmm. Vui lòng tách các vật thể xung đột ra xa hơn (%s <-> %s)." @@ -6516,6 +6542,9 @@ msgstr "Nhiều thiết bị" msgid "Project" msgstr "Dự án" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "Có" @@ -6645,6 +6674,12 @@ msgstr "Lưu dự án thành" msgid "Save current project as" msgstr "Lưu dự án hiện tại thành" +msgid "Publish" +msgstr "Xuất bản" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Nhập 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8549,6 +8584,12 @@ msgstr "Vui lòng xác nhận G-code trong các preset này an toàn để ngăn msgid "Customized Preset" msgstr "Preset tùy chỉnh" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF8!" @@ -8721,22 +8762,22 @@ msgid "Replaced with 3D files from directory:\n" msgstr "Đã thay thế bằng file 3D từ thư mục:\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ Đã bỏ qua %s: cùng một file.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ Đã bỏ qua %s: file không tồn tại.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ Đã bỏ qua %s: thay thế thất bại.\n" # AI Translated -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ Đã thay thế %s.\n" @@ -8952,6 +8993,14 @@ msgstr "Lưu file đã slice dưới dạng:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "File %s đã được gửi đến không gian lưu trữ của máy in và có thể được xem trên máy in." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Chưa đặt loại đầu phun. Vui lòng đặt đầu phun rồi thử lại." @@ -9947,6 +9996,14 @@ msgstr "Hiện cài đặt sẵn không được hỗ trợ" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "Hiện các cài đặt sẵn không tương thích/không được hỗ trợ trong danh sách thả xuống máy in và filament. Không thể chọn các cài đặt sẵn này." +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "Tính năng thử nghiệm" @@ -10194,9 +10251,6 @@ msgstr "Chuyển đến trang web xuất bản model" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Lưu ý: Chuẩn bị có thể mất vài phút. Vui lòng kiên nhẫn." -msgid "Publish" -msgstr "Xuất bản" - msgid "Publish was canceled" msgstr "Xuất bản đã bị hủy" @@ -10213,6 +10267,21 @@ msgstr "Đang tải dữ liệu lên" msgid "Jump to webpage" msgstr "Chuyển đến trang web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Lưu %s dưới dạng" @@ -10223,10 +10292,22 @@ msgstr "Preset người dùng" msgid "Preset Inside Project" msgstr "Preset bên trong dự án" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + # AI Translated msgid "Detach from parent" msgstr "Tách khỏi vật thể cha" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "Tên không khả dụng." @@ -11026,22 +11107,6 @@ msgstr "Bạn có chắc chắn muốn bật tùy chọn này?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "Mẫu infill thường được thiết kế để xử lý xoay tự động nhằm đảm bảo in đúng cách và đạt được hiệu quả dự kiến (ví dụ: Gyroid, Cubic). Xoay mẫu infill thưa hiện tại có thể dẫn đến support không đủ . Vui lòng tiến hành thận trọng và kiểm tra kỹ bất kỳ vấn đề in tiềm ẩn nào. Bạn có chắc chắn muốn bật tùy chọn này?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"Chiều cao lớp quá nhỏ.\n" -"Nó sẽ được đặt thành min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "Chiều cao lớp vượt quá giới hạn trong Cài đặt máy in -> Extruder -> Giới hạn chiều cao lớp, điều này có thể gây ra vấn đề chất lượng in." - -msgid "Adjust to the set range automatically?\n" -msgstr "Điều chỉnh về phạm vi đặt tự động?\n" - -msgid "Adjust" -msgstr "Điều chỉnh" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Tính năng thử nghiệm: Rút và cắt filament ở khoảng cách lớn hơn trong quá trình thay filament để giảm thiểu xả. Mặc dù có thể giảm đáng kể lượng xả, nó cũng có thể làm tăng nguy cơ tắc đầu phun hoặc các vấn đề in khác." @@ -11235,6 +11300,9 @@ msgstr "Tìm thấy từ khóa dành riêng" msgid "Setting Overrides" msgstr "Ghi đè cài đặt" +msgid "Retraction when switching material" +msgstr "Rút khi chuyển vật liệu" + msgid "Basic information" msgstr "Thông tin cơ bản" @@ -11366,6 +11434,14 @@ msgstr "Hồ sơ quy trình tương thích" msgid "Printable space" msgstr "Không gian in" +# AI Translated +msgid "Printer Agent" +msgstr "Tác nhân máy in" + +# AI Translated +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in. Các tác nhân khả dụng được đăng ký khi khởi động." + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -11498,9 +11574,6 @@ msgstr "Giới hạn chiều cao lớp" msgid "Z-Hop" msgstr "Z-Hop" -msgid "Retraction when switching material" -msgstr "Rút khi chuyển vật liệu" - # AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" @@ -12950,6 +13023,9 @@ msgstr " quá gần vùng loại trừ, và sẽ gây va chạm.\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " ở quá gần vùng phát hiện vón cục, và sẽ gây ra va chạm.\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + # AI Translated msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "Nhiệt độ đầu phun đã chọn không tương thích. Nhiệt độ đầu phun của mỗi filament phải nằm trong dải nhiệt độ đầu phun được khuyến nghị của các filament còn lại. Nếu không, có thể xảy ra tắc đầu phun hoặc hư hỏng máy in." @@ -13291,10 +13367,6 @@ msgstr "Dùng 3MF thay cho G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Bật tùy chọn này nếu máy in nhận file 3MF làm tác vụ in. Khi bật, Orca Slicer sẽ gửi file đã slice dưới dạng .gcode.3mf thay vì file .gcode thuần." -# AI Translated -msgid "Printer Agent" -msgstr "Tác nhân máy in" - # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in." @@ -14002,9 +14074,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "Tốc độ của cầu bên trong. Nếu giá trị được biểu thị dưới dạng phần trăm, nó sẽ được tính dựa trên bridge_speed. Giá trị mặc định là 150%." -msgid "Brim width" -msgstr "Độ rộng brim" - msgid "This is the distance from the model to the outermost brim line." msgstr "Khoảng cách từ model đến đường brim ngoài cùng." @@ -14088,6 +14157,12 @@ msgstr "" "Hình học sẽ được giảm trước khi phát hiện góc sắc. Tham số này chỉ ra độ dài tối thiểu của độ lệch cho việc giảm.\n" "0 để vô hiệu hóa." +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "máy tương thích ngược" @@ -15305,6 +15380,12 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Gyroid" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "Gia tốc của infill bề mặt trên. Sử dụng giá trị thấp hơn có thể cải thiện chất lượng bề mặt trên." @@ -15868,6 +15949,12 @@ msgstr "Loại G-code mà máy in tương thích." msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "Máy in Pellet đã chỉnh sửa" @@ -16971,6 +17058,12 @@ msgstr "Rút dài khi đổi extruder" msgid "Retraction distance when extruder change" msgstr "Khoảng cách rút khi đổi extruder" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Chiều cao Z-hop" @@ -17069,6 +17162,9 @@ msgstr "Độ dài bổ sung khi khởi động lại" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "Khi rút được bù sau khi di chuyển, extruder sẽ đẩy lượng filament bổ sung này. Cài đặt này hiếm khi cần thiết." +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "Khi rút được bù sau khi thay công cụ, extruder sẽ đẩy lượng filament bổ sung này." @@ -17489,6 +17585,12 @@ msgstr "Đổi công cụ trên wipe tower" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "Buộc đầu công cụ di chuyển đến wipe tower trước khi phát lệnh đổi công cụ (Tx). Chỉ liên quan đến máy in nhiều extruder (nhiều đầu công cụ) dùng wipe tower Loại 2. Theo mặc định, Orca bỏ qua bước di chuyển này trên máy nhiều đầu công cụ vì firmware tự xử lý việc đổi đầu, điều này có thể khiến lệnh Tx được phát ra ngay phía trên phần đang in. Hãy bật tùy chọn này nếu bạn muốn việc đổi công cụ luôn diễn ra phía trên wipe tower." +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Không có lớp thưa (beta)" @@ -20849,10 +20951,6 @@ msgstr "Máy in vật lý" msgid "Print Host upload" msgstr "Tải lên máy chủ in" -# AI Translated -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in. Các tác nhân khả dụng được đăng ký khi khởi động." - # AI Translated msgid "Select a Flashforge printer" msgstr "Chọn một máy in Flashforge" @@ -21832,9 +21930,6 @@ msgstr "Đã xảy ra điều gì đó không mong đợi khi cố gắng đăng msgid "User canceled." msgstr "Người dùng đã hủy." -msgid "Head diameter" -msgstr "Đường kính đầu" - msgid "Max angle" msgstr "Góc tối đa" @@ -22702,6 +22797,22 @@ msgstr "" "Tránh cong vênh\n" "Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "Chiều cao lớp quá nhỏ.\n" +#~ "Nó sẽ được đặt thành min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "Chiều cao lớp vượt quá giới hạn trong Cài đặt máy in -> Extruder -> Giới hạn chiều cao lớp, điều này có thể gây ra vấn đề chất lượng in." + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "Điều chỉnh về phạm vi đặt tự động?\n" + +#~ msgid "Head diameter" +#~ msgstr "Đường kính đầu" + #~ msgid "Print order within a single layer." #~ msgstr "Thứ tự in trong một lớp đơn." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 345891f250..f89ad1dd52 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -4574,6 +4574,20 @@ msgstr "当前腔体温度高于材料的安全温度,这可能导致材料软 msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "最低机箱温度(%d℃)高于目标机箱温度(%d℃)。最低值是开始打印的阈值,此时机箱会持续朝目标温度加热,因此它不应超过目标值。该值将被限制到目标值。" +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "调整" + # AI Translated msgid "" "Layer height too small\n" @@ -4696,6 +4710,12 @@ msgstr "" "是 - 启用Arachne墙生成器\n" "否 - 禁用Arachne墙生成器并将绒毛表面设置为[位移]模式" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Brim宽度" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "螺旋模式仅在壁环为 1、支撑被禁用、探测结块检测被禁用、顶部壳层为 0、稀疏填充密度为 0 且延时类型为传统时才起作用。" @@ -4711,6 +4731,9 @@ msgstr "" "是 - 自动调整这些设置并开启旋转模式\n" "否 - 暂不使用旋转模式" +msgid "N/A" +msgstr "不适用" + msgid "Printing" msgstr "打印中" @@ -4950,6 +4973,12 @@ msgstr "生成校准gcode失败" msgid "Calibration error" msgstr "校准错误" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "网络不可用" @@ -5162,9 +5191,6 @@ msgstr "无效的模式。请使用 N、N#K 或逗号分隔的列表(每个条 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "无效格式,应该是\"%1%\"这种数组格式" -msgid "N/A" -msgstr "不适用" - # AI Translated msgid "System agents" msgstr "系统代理" @@ -5807,7 +5833,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "发现G-code路径在层%d,高度为%.2lf mm处有冲突。请将有冲突的对象分离得更远(%s <-> %s)。" @@ -5988,6 +6014,9 @@ msgstr "多设备" msgid "Project" msgstr "项目" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "是" @@ -6115,6 +6144,12 @@ msgstr "项目另存为" msgid "Save current project as" msgstr "项目另存为" +msgid "Publish" +msgstr "发布" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7869,6 +7904,12 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造 msgid "Customized Preset" msgstr "自定义的预设" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 文件中的部件名称不是 UTF8 格式!" @@ -8028,19 +8069,19 @@ msgstr "未选择替换目录" msgid "Replaced with 3D files from directory:\n" msgstr "替换为目录中的 3D 文件:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ 跳过 %s:同一文件。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ 跳过%s:文件不存在。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ 跳过%s:替换失败。\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ 替换了 %s。\n" @@ -8250,6 +8291,14 @@ msgstr "切片文件另存为:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "未设置喷嘴类型。请设置喷嘴并重试。" @@ -9121,6 +9170,14 @@ msgstr "显示不受支持的预设" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "在打印机和耗材下拉列表中显示不兼容/不受支持的预设。这些预设无法被选择。" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "实验性功能" @@ -9357,9 +9414,6 @@ msgstr "跳转到发布页面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:发布前需要一些准备时间,请耐心等待。" -msgid "Publish" -msgstr "发布" - msgid "Publish was canceled" msgstr "发布已取消" @@ -9375,6 +9429,21 @@ msgstr "正在上传数据" msgid "Jump to webpage" msgstr "跳转到网页" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存%s为" @@ -9385,9 +9454,21 @@ msgstr "用户预设" msgid "Preset Inside Project" msgstr "项目预设" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "与父级分离" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "名称不可用。" @@ -10093,24 +10174,6 @@ msgstr "您确定要启用此选项吗?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "填充图案通常设计为自动处理旋转,以确保正确打印并实现其预期效果(例如,Gyroid、Cubic)。旋转当前的稀疏填充图案可能会导致支撑不足。请谨慎操作并彻底检查是否存在任何潜在的打印问题。您确定要启用此选项吗?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"层高太小。\n" -"将设置为min_layer_height\n" -"层高太小。\n" -"将自动设置为min_layer_height的值\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。" - -msgid "Adjust to the set range automatically?\n" -msgstr "是否自动调整到范围内?\n" - -msgid "Adjust" -msgstr "调整" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "实验性选项。在更换耗材丝时,将耗材丝回抽一段距离后再切断以最小化冲刷。虽然这可以显著减少冲刷,但也可能增加喷嘴堵塞或其他打印问题的风险。" @@ -10303,6 +10366,9 @@ msgstr "检测到保留的关键字" msgid "Setting Overrides" msgstr "参数覆盖" +msgid "Retraction when switching material" +msgstr "切换材料时的回抽量" + msgid "Basic information" msgstr "基础信息" @@ -10433,6 +10499,12 @@ msgstr "兼容的切片配置" msgid "Printable space" msgstr "可打印区域" +msgid "Printer Agent" +msgstr "打印机代理" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10558,9 +10630,6 @@ msgstr "层高限制" msgid "Z-Hop" msgstr "Z轴抬升" -msgid "Retraction when switching material" -msgstr "切换材料时的回抽量" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11911,6 +11980,9 @@ msgstr "离不可打印区域太近,会发生碰撞。\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr "距离聚集检测区域太近,会引起碰撞。\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "所选的喷嘴温度不兼容。每种耗材的喷嘴温度都必须落在其他耗材的推荐喷嘴温度范围内。否则可能会发生喷嘴堵塞或打印机损坏。" @@ -12224,9 +12296,6 @@ msgstr "使用 3MF 代替 G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "如果打印机接受 3MF 文件作为打印任务,请启用此选项。启用后,Orca Slicer 将以 .gcode.3mf 格式发送切片文件,而不是普通的 .gcode 文件。" -msgid "Printer Agent" -msgstr "打印机代理" - msgid "Select the network agent implementation for printer communication." msgstr "选择打印机通信的网络代理实施。" @@ -12861,9 +12930,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "内部桥接的速度。如果该值以百分比表示,将基于桥接速度计算。默认值为150%。" -msgid "Brim width" -msgstr "Brim宽度" - msgid "This is the distance from the model to the outermost brim line." msgstr "从模型到最外圈brim走线的距离" @@ -12944,6 +13010,12 @@ msgstr "" "在检测尖锐角度之前,几何形状将被简化。此参数表示简化的最小偏差长度。\n" "设为0以停用" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "向上兼容的机器" @@ -14119,6 +14191,12 @@ msgstr "TPMS-FK结构" msgid "Gyroid" msgstr "螺旋体" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "顶面填充的加速度。使用较低值可能会改善顶面质量" @@ -14659,6 +14737,12 @@ msgstr "打印机兼容的G-code风格'" msgid "Klipper" msgstr "Klipper固件" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "颗粒改装打印机" @@ -15704,6 +15788,12 @@ msgstr "更换挤出机时长回缩" msgid "Retraction distance when extruder change" msgstr "更换挤出机时的回缩距离" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z抬升高度" @@ -15797,6 +15887,9 @@ msgstr "额外回填长度" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "每当空驶后回抽被补偿时,挤出机将推入额外数量的耗材丝。很少需要此设置。" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "当换色后回抽被补偿时,挤出机将推入额外数量的耗材丝。" @@ -16211,6 +16304,12 @@ msgstr "在擦拭塔上换头" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "在发出换头命令 (Tx) 之前,强制打印头先移动到擦拭塔。仅与使用第 2 类擦拭塔的多挤出机(多打印头)打印机相关。默认情况下,Orca 会在多打印头机器上跳过此移动,因为固件会处理换头,这可能导致 Tx 命令在打印件上方发出。如果您希望换头命令始终在擦拭塔上方发出,请启用此选项。" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "无稀疏层 (实验功能)" @@ -19433,9 +19532,6 @@ msgstr "物理打印机" msgid "Print Host upload" msgstr "打印主机上传" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。" - msgid "Select a Flashforge printer" msgstr "选择一台 Flashforge 打印机" @@ -20325,9 +20421,6 @@ msgstr "在尝试登录时发生了异常,请重试。" msgid "User canceled." msgstr "用户已取消。" -msgid "Head diameter" -msgstr "Brim 直径" - msgid "Max angle" msgstr "最大角度" @@ -21111,6 +21204,24 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "层高太小。\n" +#~ "将设置为min_layer_height\n" +#~ "层高太小。\n" +#~ "将自动设置为min_layer_height的值\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。" + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "是否自动调整到范围内?\n" + +#~ msgid "Head diameter" +#~ msgstr "Brim 直径" + #~ msgid "Print order within a single layer." #~ msgstr "同一层内的打印顺序" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 9b37009978..88596d495a 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-29 17:40-0300\n" +"POT-Creation-Date: 2026-08-18 16:25+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -4691,6 +4691,20 @@ msgstr "目前列印裝置內部溫度高於線材的安全溫度,可能會導 msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target." msgstr "最低倉室溫度(%d℃)高於目標倉室溫度(%d℃)。最低值是列印開始的門檻,此時倉室會持續朝目標溫度加熱,因此不應超過目標值。系統會將其限制在目標值。" +#, c-format, boost-format +msgid "Layer height is too small. It will be set to the minimum (%g mm)." +msgstr "" + +msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +msgstr "" + +#, c-format, boost-format +msgid "Adjust it to the limit (%g mm) automatically?" +msgstr "" + +msgid "Adjust" +msgstr "調整" + msgid "" "Layer height too small\n" "It has been reset to 0.2" @@ -4825,6 +4839,12 @@ msgstr "" "是 - 啟用 Arachne Wall 產生器\n" "否 - 停用 Arachne Wall 產生器,並將 Fuzzy Skin 設定為 [位移] 模式" +msgid "Brim ear radius" +msgstr "" + +msgid "Brim width" +msgstr "Brim 寬度" + msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional." msgstr "花瓶模式僅適用於牆體圈數為 1、停用支撐、停用偵測堵塞、頂部外殼層數為 0、稀疏填充密度為 0,且延時攝影類型為傳統模式時。" @@ -4840,6 +4860,9 @@ msgstr "" "是 - 自動調整這些設定並啟用花瓶模式\n" "否 - 不使用花瓶模式" +msgid "N/A" +msgstr "不適用" + msgid "Printing" msgstr "列印中" @@ -5079,6 +5102,12 @@ msgstr "產生校正代碼失敗" msgid "Calibration error" msgstr "校正錯誤" +msgid "This printer is not configured with the hardware this control needs." +msgstr "" + +msgid "This control is not supported on this printer." +msgstr "" + # AI Translated msgid "Network unavailable" msgstr "網路無法使用" @@ -5291,9 +5320,6 @@ msgstr "無效的格式。請使用 N、N#K 或逗號分隔的清單,每個項 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無效格式,應該是「%1%」這種格式" -msgid "N/A" -msgstr "不適用" - # AI Translated msgid "System agents" msgstr "系統代理程式" @@ -5936,7 +5962,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "發現 G-code 路徑在 %d 層,Z = %.2lf mm 處的衝突。請將有衝突的物件分離得更遠(%s <-> %s)。" @@ -6118,6 +6144,9 @@ msgstr "多臺裝置" msgid "Project" msgstr "專案" +msgid "Device (Web)" +msgstr "" + msgid "Yes" msgstr "是" @@ -6245,6 +6274,12 @@ msgstr "另存專案為" msgid "Save current project as" msgstr "將目前專案另存為" +msgid "Publish" +msgstr "發布" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8030,6 +8065,12 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝 msgid "Customized Preset" msgstr "自訂預設" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!" @@ -8193,19 +8234,19 @@ msgstr "未選擇替換的目錄" msgid "Replaced with 3D files from directory:\n" msgstr "已從目錄替換為 3D 檔案:\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: same file.\n" msgstr "✖ 已跳過 %s:相同檔案。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: file does not exist.\n" msgstr "✖ 已跳過 %s:檔案不存在。\n" -#, c-format +#, c-format, boost-format msgid "✖ Skipped %s: failed to replace.\n" msgstr "✖ 已跳過 %s:無法替換。\n" -#, c-format +#, c-format, boost-format msgid "✔ Replaced %s.\n" msgstr "✔ 已替換 %s。\n" @@ -8416,6 +8457,14 @@ msgstr "切片檔案另存為:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。" @@ -9294,6 +9343,14 @@ msgstr "顯示不支援的預設" msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected." msgstr "在列印裝置和線材下拉選單中顯示不相容/不支援的預設。這些預設無法選取。" +msgid "(Experimental) Use printer agents instead of print hosts" +msgstr "" + +msgid "" +"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n" +"When disabled, OrcaSlicer uses the legacy print-host behavior." +msgstr "" + # AI Translated msgid "Experimental Features" msgstr "實驗性功能" @@ -9530,9 +9587,6 @@ msgstr "發布頁面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:發布前需要一些準備時間,請耐心等待。" -msgid "Publish" -msgstr "發布" - msgid "Publish was canceled" msgstr "發布已取消" @@ -9548,6 +9602,21 @@ msgstr "正在上傳資料" msgid "Jump to webpage" msgstr "跳至網頁" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存 %s 為" @@ -9558,9 +9627,21 @@ msgstr "使用者預設" msgid "Preset Inside Project" msgstr "項目預設" +msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported." +msgstr "" + msgid "Detach from parent" msgstr "從父預設分離" +msgid "Unique preset" +msgstr "" + +msgid "Parent preset" +msgstr "" + +msgid "This preset does not inherit from another preset." +msgstr "" + msgid "Name is unavailable." msgstr "名稱不可用。" @@ -10299,22 +10380,6 @@ msgstr "您確認要啟用此選項嗎?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" msgstr "填充模式通常設計為自動處理旋轉,以確保正確列印並實現其預期效果(例如:Gyroid、Cubic)。旋轉目前的稀疏填充模式可能會導致支撐不足。請謹慎操作,並仔細檢查任何潛在的列印問題。您確定要啟用此選項嗎?" -msgid "" -"Layer height is too small.\n" -"It will set to min_layer_height\n" -msgstr "" -"層高過薄\n" -"將改為 min_layer_height\n" - -msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." -msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。" - -msgid "Adjust to the set range automatically?\n" -msgstr "是否自動調整至設定範圍?\n" - -msgid "Adjust" -msgstr "調整" - msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "實驗性功能:在換線過程中以更大的距離收回並切斷線材,以減少沖洗量。儘管這可以顯著減少沖洗,但也可能增加噴嘴堵塞或其他列印問題的風險。" @@ -10507,6 +10572,9 @@ msgstr "偵測到保留的關鍵字" msgid "Setting Overrides" msgstr "參數覆蓋" +msgid "Retraction when switching material" +msgstr "切換線材時的回抽量" + msgid "Basic information" msgstr "基本資訊" @@ -10637,6 +10705,12 @@ msgstr "相容的切片設定" msgid "Printable space" msgstr "可列印區域" +msgid "Printer Agent" +msgstr "列印裝置代理" + +msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." +msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。" + #. TRN: The first argument is the parameter's name; the second argument is its value. #, boost-format msgid "Invalid value provided for parameter %1%: %2%" @@ -10762,9 +10836,6 @@ msgstr "層高限制" msgid "Z-Hop" msgstr "Z 軸抬升" -msgid "Retraction when switching material" -msgstr "切換線材時的回抽量" - msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -12113,6 +12184,9 @@ msgstr "離淨空區域太近,會發生碰撞。\n" msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr "離堵塞偵測區域太近,會發生碰撞。\n" +msgid " is partially outside the printable area, and it cannot be printed.\n" +msgstr "" + msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "所選的噴嘴溫度不相容。每種線材的噴嘴溫度都必須落在其他線材的建議噴嘴溫度範圍內。否則可能會發生噴嘴堵塞或列印裝置損壞。" @@ -12426,9 +12500,6 @@ msgstr "使用 3MF 取代 G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "若列印裝置接受 3MF 檔案作為列印作業,請啟用此選項。啟用後,Orca Slicer 會將切片後的檔案以 .gcode.3mf 形式傳送,而非單純的 .gcode 檔案。" -msgid "Printer Agent" -msgstr "列印裝置代理" - msgid "Select the network agent implementation for printer communication." msgstr "選擇用於列印裝置通訊的網路代理實作。" @@ -13074,9 +13145,6 @@ msgstr "" msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%." msgstr "內部橋接速度。如果該值以百分比表示,將基於 bridge_speed 進行計算。預設值為 150%。" -msgid "Brim width" -msgstr "Brim 寬度" - msgid "This is the distance from the model to the outermost brim line." msgstr "從模型到 Brim 最外圈的距離" @@ -13157,6 +13225,12 @@ msgstr "" "在偵測尖銳角度之前,幾何形狀將被簡化。此參數表示簡化的最小偏差長度。\n" "設為 0 以停用" +msgid "Brim ears outer only" +msgstr "" + +msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." +msgstr "" + msgid "upward compatible machine" msgstr "向上相容的裝置" @@ -14316,6 +14390,12 @@ msgstr "TPMS-FK結構" msgid "Gyroid" msgstr "螺旋體" +msgid "Sparse infill smooth factor" +msgstr "" + +msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original right-angle path, while 100% produces the largest possible curves between adjacent infill lines. Currently applies only to the Hilbert Curve." +msgstr "" + msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality." msgstr "頂面填充的加速度。使用較低值可能會改善頂面列印品質" @@ -14856,6 +14936,12 @@ msgstr "列印裝置相容的 G-code 樣式" msgid "Klipper" msgstr "Klipper" +msgid "Skip G-code config block" +msgstr "" + +msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." +msgstr "" + msgid "Pellet Modded Printer" msgstr "顆粒改裝列印裝置" @@ -15909,6 +15995,12 @@ msgstr "更換擠出機時長回抽" msgid "Retraction distance when extruder change" msgstr "更換擠出機時的回抽距離" +msgid "Retraction Length (Toolchange)" +msgstr "" + +msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)." +msgstr "" + msgid "Z-hop height" msgstr "Z 抬升高度" @@ -16002,6 +16094,9 @@ msgstr "額外回填長度" msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed." msgstr "每當空駛後回抽被補償時,擠出機將推入額外長度的線材。很少需要此設定。" +msgid "Extra length on restart (Toolchange)" +msgstr "" + msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament." msgstr "當換色後回抽被補償時,擠出機將推入額外長度的線材。" @@ -16405,6 +16500,12 @@ msgstr "在換料塔上換刀" msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead." msgstr "強制工具頭在發出換刀指令 (Tx) 之前先移動到換料塔。僅適用於使用 Type 2 換料塔的多擠出機(多工具頭)列印裝置。預設情況下,Orca 會在多工具頭機器上略過此空駛,因為韌體會處理工具頭交換,這可能導致 Tx 指令在已列印零件上方發出。若您希望換刀一律改在換料塔上方發出,請啟用此選項。" +msgid "Wait for temperature on wipe tower" +msgstr "" + +msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command." +msgstr "" + msgid "No sparse layers (beta)" msgstr "取消稀疏層(Beta)" @@ -19622,9 +19723,6 @@ msgstr "實體列印裝置" msgid "Print Host upload" msgstr "列印主機上傳" -msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." -msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。" - msgid "Select a Flashforge printer" msgstr "選取 Flashforge 列印裝置" @@ -20516,9 +20614,6 @@ msgstr "嘗試登入時發生了意外錯誤,請再試一次。" msgid "User canceled." msgstr "使用者取消。" -msgid "Head diameter" -msgstr "頭直徑" - msgid "Max angle" msgstr "最大角度" @@ -21323,6 +21418,22 @@ msgstr "" "避免翹曲\n" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。" +#~ msgid "" +#~ "Layer height is too small.\n" +#~ "It will set to min_layer_height\n" +#~ msgstr "" +#~ "層高過薄\n" +#~ "將改為 min_layer_height\n" + +#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues." +#~ msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。" + +#~ msgid "Adjust to the set range automatically?\n" +#~ msgstr "是否自動調整至設定範圍?\n" + +#~ msgid "Head diameter" +#~ msgstr "頭直徑" + #~ msgid "Print order within a single layer." #~ msgstr "每一層的列印順序" diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 5baff8282c..009f672d3e 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -82,7 +82,7 @@ wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPr PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, - _L("Publish"), + _L("Publish 3MF..."), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) From 1b770e863843fe18937ee5378ebcf1f339c1f25f Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 19 Aug 2026 15:47:28 +0800 Subject: [PATCH 011/162] Bug fixes and test cases for import filament of published 3MF. Update translations --- localization/i18n/OrcaSlicer.pot | 7 +- localization/i18n/ca/OrcaSlicer_ca.po | 9 +- localization/i18n/cs/OrcaSlicer_cs.po | 9 +- localization/i18n/de/OrcaSlicer_de.po | 9 +- localization/i18n/en/OrcaSlicer_en.po | 7 +- localization/i18n/es/OrcaSlicer_es.po | 9 +- localization/i18n/eu/OrcaSlicer_eu.po | 9 +- localization/i18n/fr/OrcaSlicer_fr.po | 9 +- localization/i18n/hu/OrcaSlicer_hu.po | 9 +- localization/i18n/it/OrcaSlicer_it.po | 9 +- localization/i18n/ja/OrcaSlicer_ja.po | 9 +- localization/i18n/ko/OrcaSlicer_ko.po | 9 +- localization/i18n/lt/OrcaSlicer_lt.po | 9 +- localization/i18n/nl/OrcaSlicer_nl.po | 9 +- localization/i18n/pl/OrcaSlicer_pl.po | 9 +- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 9 +- localization/i18n/ru/OrcaSlicer_ru.po | 9 +- localization/i18n/sv/OrcaSlicer_sv.po | 9 +- localization/i18n/th/OrcaSlicer_th.po | 9 +- localization/i18n/tr/OrcaSlicer_tr.po | 9 +- localization/i18n/uk/OrcaSlicer_uk.po | 9 +- localization/i18n/vi/OrcaSlicer_vi.po | 9 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 9 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 9 +- src/libslic3r/PresetBundle.cpp | 562 ++++------- src/libslic3r/PresetBundle.hpp | 13 +- src/libslic3r/PublishSettings.cpp | 37 +- src/libslic3r/PublishSettings.hpp | 69 +- src/slic3r/GUI/ConfigValueFormatter.hpp | 10 +- src/slic3r/GUI/MainFrame.cpp | 4 +- src/slic3r/GUI/Plater.cpp | 48 +- src/slic3r/GUI/Plater.hpp | 5 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 173 ++-- src/slic3r/GUI/PublishSettingsDialog.hpp | 31 +- tests/libslic3r/test_3mf.cpp | 51 +- .../libslic3r/test_preset_bundle_loading.cpp | 936 +++++++++++------- 36 files changed, 1148 insertions(+), 1003 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index c55cdb7336..771a9e183c 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -5945,7 +5945,7 @@ msgstr "" msgid "Save current project as" msgstr "" -msgid "Publish" +msgid "Publish 3MF" msgstr "" msgid "Export a 3MF file with the selected settings embedded" @@ -8043,6 +8043,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 4eb07b2635..244cf7f41b 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -6406,8 +6406,8 @@ msgstr "Desa el projecte com a" msgid "Save current project as" msgstr "Desar el projecte actual com" -msgid "Publish" -msgstr "Publicar" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8632,6 +8632,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipus de broquet no està establert. Establiu el broquet i torneu-ho a provar." diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 95259e0895..f5a8cc6717 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -6367,8 +6367,8 @@ msgstr "Uložit projekt jako" msgid "Save current project as" msgstr "Uložit aktuální projekt jako" -msgid "Publish" -msgstr "Publikovat" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8592,6 +8592,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publikovat" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Typ trysky není nastaven. Nastavte prosím trysku a zkuste to znovu." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 0a86439cab..28113d16d3 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -6259,8 +6259,8 @@ msgstr "Projekt speichern als" msgid "Save current project as" msgstr "Aktuelles Projekt speichern als" -msgid "Publish" -msgstr "Veröffentlichen" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8464,6 +8464,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Veröffentlichen" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut." diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 03b83309de..29b88cdab0 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -5941,7 +5941,7 @@ msgstr "" msgid "Save current project as" msgstr "" -msgid "Publish" +msgid "Publish 3MF" msgstr "" msgid "Export a 3MF file with the selected settings embedded" @@ -8039,6 +8039,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 74617b88ec..54c4bccafe 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -6116,8 +6116,8 @@ msgstr "Guardar proyecto como" msgid "Save current project as" msgstr "Guardar el proyecto actual como" -msgid "Publish" -msgstr "Publicar" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8267,6 +8267,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo." diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index cceccaa64c..8a9a0a6ad3 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -6161,8 +6161,8 @@ msgstr "Gorde proiektua honela" msgid "Save current project as" msgstr "Gorde uneko proiektua honela" -msgid "Publish" -msgstr "Argitaratu" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8334,6 +8334,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Argitaratu" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Pita mota ez dago ezarrita. Ezarri pita eta saiatu berriro." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 5aeed754f0..5197f6c725 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -6208,8 +6208,8 @@ msgstr "Enregistrer le projet sous" msgid "Save current project as" msgstr "Enregistrer le projet actuel sous" -msgid "Publish" -msgstr "Publier" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8390,6 +8390,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publier" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Le type de buse n'est pas défini. Veuillez définir la buse et réessayer." diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 6c9c5669d8..e87f21c567 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -6310,8 +6310,8 @@ msgstr "Projekt mentése másként" msgid "Save current project as" msgstr "Jelenlegi projekt mentése másként" -msgid "Publish" -msgstr "Közzététel" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8516,6 +8516,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Közzététel" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 8533b8b39f..8ce671c1e6 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -6312,8 +6312,8 @@ msgstr "Salva progetto con nome" msgid "Save current project as" msgstr "Salva progetto corrente con nome" -msgid "Publish" -msgstr "Pubblica" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8515,6 +8515,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Pubblica" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 2c28d2b166..ca68f62e0c 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -6321,8 +6321,8 @@ msgstr "プロジェクトを名前を付けて保存" msgid "Save current project as" msgstr "プロジェクトを名前を付けて保存" -msgid "Publish" -msgstr "公開する" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8534,6 +8534,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "公開する" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ノズルタイプが設定されていません。ノズルを設定して再試行してください。" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 5e81f19e0d..a9d1a699af 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -6335,8 +6335,8 @@ msgstr "프로젝트 다른 이름으로 저장" msgid "Save current project as" msgstr "현재 프로젝트 다른 이름으로 저장" -msgid "Publish" -msgstr "게시" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8567,6 +8567,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "게시" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "노즐 유형이 설정되지 않았습니다. 노즐을 설정하고 다시 시도하세요." diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index aac9ef9dc6..9f16194315 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -6298,8 +6298,8 @@ msgstr "Įrašyti projektą kaip" msgid "Save current project as" msgstr "Įrašyti dabartinį projektą kaip" -msgid "Publish" -msgstr "Talpinti" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8510,6 +8510,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Talpinti" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Purkštuko tipas nenustatytas. Nustatykite purkštuką ir bandykite dar kartą." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 4d37e65fee..96840c0844 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -6873,8 +6873,8 @@ msgstr "Bewaar project als" msgid "Save current project as" msgstr "Bewaar huidig project als" -msgid "Publish" -msgstr "Publiceren" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -9284,6 +9284,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publiceren" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Het mondstuktype is niet ingesteld. Stel het mondstuk in en probeer het opnieuw." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index e9430155ea..5df6507348 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -6454,8 +6454,8 @@ msgstr "Zapisz projekt jako" msgid "Save current project as" msgstr "Zapisz bieżący projekt jako" -msgid "Publish" -msgstr "Opublikuj" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8724,6 +8724,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Opublikuj" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nie ustawiono typu dyszy Wprowadź ustawienia dyszy i spróbuj ponownie." diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index b001ea24b8..48ed2fb774 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -6130,8 +6130,8 @@ msgstr "Salvar projeto como" msgid "Save current project as" msgstr "Salvar o projeto atual como" -msgid "Publish" -msgstr "Publicar" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8290,6 +8290,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "O tipo de bico não está configurado. Configure o bico e tente novamente." diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 919710f917..fd7b617642 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -6363,8 +6363,8 @@ msgstr "Сохранить проект как" msgid "Save current project as" msgstr "Сохранить текущий проект как" -msgid "Publish" -msgstr "Опубликовать" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8569,6 +8569,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Опубликовать" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Не указан тип сопла. Укажите его и попробуйте ещё раз." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 1caffffd36..2e2ca51d7c 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -6957,8 +6957,8 @@ msgstr "Spara Projekt som" msgid "Save current project as" msgstr "Spara nuvarande projekt som" -msgid "Publish" -msgstr "Publicera" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -9377,6 +9377,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Publicera" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozzeltypen är inte angiven. Ange nozzeln och försök igen." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index 7f86af0e5e..1826f2be8e 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -6289,8 +6289,8 @@ msgstr "บันทึกโปรเจกต์เป็น" msgid "Save current project as" msgstr "บันทึกโครงการปัจจุบันเป็น" -msgid "Publish" -msgstr "เผยแพร่" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8470,6 +8470,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "เผยแพร่" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ไม่ได้ตั้งค่าประเภทหัวฉีด โปรดตั้งหัวฉีดแล้วลองอีกครั้ง" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 944c322a94..b2394caeb3 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-08-01 20:32+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -6389,8 +6389,8 @@ msgstr "Projeyi farklı kaydet" msgid "Save current project as" msgstr "Mevcut projeyi farklı kaydet" -msgid "Publish" -msgstr "Yayınla" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8606,6 +8606,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Yayınla" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozul tipi ayarlanmamış. Lütfen nozulu ayarlayın ve tekrar deneyin." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 5c162e8475..40290ba12c 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -6326,8 +6326,8 @@ msgstr "Зберегти проєкт як" msgid "Save current project as" msgstr "Зберегти поточний проєкт як" -msgid "Publish" -msgstr "Публікувати" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8580,6 +8580,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Публікувати" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Тип сопла не встановлений. Будь ласка, оберіть сопло та спробуйте ще раз." diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index f900f3fc1f..dc269a9519 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -6674,8 +6674,8 @@ msgstr "Lưu dự án thành" msgid "Save current project as" msgstr "Lưu dự án hiện tại thành" -msgid "Publish" -msgstr "Xuất bản" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -9001,6 +9001,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "Xuất bản" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Chưa đặt loại đầu phun. Vui lòng đặt đầu phun rồi thử lại." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index f89ad1dd52..93a9f0ae0b 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -6144,8 +6144,8 @@ msgstr "项目另存为" msgid "Save current project as" msgstr "项目另存为" -msgid "Publish" -msgstr "发布" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8299,6 +8299,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "发布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "未设置喷嘴类型。请设置喷嘴并重试。" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 88596d495a..7a19a1c540 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-18 16:25+0800\n" +"POT-Creation-Date: 2026-08-19 14:59+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -6274,8 +6274,8 @@ msgstr "另存專案為" msgid "Save current project as" msgstr "將目前專案另存為" -msgid "Publish" -msgstr "發布" +msgid "Publish 3MF" +msgstr "" msgid "Export a 3MF file with the selected settings embedded" msgstr "" @@ -8465,6 +8465,9 @@ msgid "" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +msgid "Publish" +msgstr "發布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。" diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index fd3d4d24b6..7a90036fe2 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4752,9 +4752,8 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } } // !is_published - // 4) Load the project config values (the per extruder wipe matrix etc). - // In published mode the receiver must not inherit the author's filament/purge data, - // so only the plate/bed geometry project keys are applied. + // Load the project config values. In published mode only the plate/bed geometry keys + // cross over (the receiver must not inherit the author's filament/purge data). this->project_config.apply_only(config, is_published ? s_project_options_published : s_project_options); break; @@ -4774,29 +4773,23 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool this->update_compatible(PresetSelectCompatibleType::Never); this->update_multi_material_filament_presets(); - // A "published" 3MF project overlays only the author-selected published keys onto the - // user's currently-selected (edited) process preset. Scalar keys are applied directly; - // vector (multi-extruder) keys are applied only when the edited preset has a matching - // vector size. Keys that cannot be applied are collected for notification; legacy - // filament/printer keys in a published file fall through into skipped_keys. + // A "published" 3MF project overlays the author-selected published keys onto the user's + // currently-selected (edited) process preset. Keys that cannot be applied are collected for + // notification; filament-class keys in published_keys (which only the material pass knows + // how to apply) fall through into skipped_keys. if (is_published) { std::vector skipped_keys; std::set applied_keys; - // Set whenever the material overlay actually modifies a receiver filament preset - // (applied key, colour or slot replacement). Only then must the edited preset be - // re-snapshotted: re-selecting unconditionally would discard the user's unsaved - // in-memory filament edits when the published file touches nothing. + // Only re-select the edited filament preset when the material overlay changed + // something: re-selecting unconditionally would discard the user's unsaved in-memory + // filament edits when the published file touches nothing. bool material_applied = false; - // Structural keys must never be applied to the user's presets: doing so would - // rewrite their preset inheritance/structure. This is the single source of truth - // shared with PublishSettingsDialog.cpp (publish_structural_keys in - // PublishSettings.hpp). Defense-in-depth: a hand-crafted 3MF could set - // published_keys to these regardless of the dialog, so skip them here too. + // Structural keys are never applied (they would rewrite the user's preset + // inheritance/structure). Defense-in-depth: a hand-crafted 3MF could list them despite + // the dialog, so skip them here too. const std::set &structural_keys = publish_structural_keys(); - // The printer overlay is restricted to the publishable retraction/z-hop allowlist. - // Printer-class keys outside it are contract-excluded: never applied and never - // reported as skipped (a hand-crafted 3MF listing machine_start_gcode or - // nozzle_diameter must not apply them and must not spam the warning). + // The printer overlay is restricted to the publishable retraction/z-hop allowlist; + // printer-class keys outside it are contract-excluded (never applied, never reported). const std::set &printer_allowlist = publishable_printer_keys(); const std::vector &printer_options = Preset::printer_options(); const std::set printer_option_set(printer_options.begin(), printer_options.end()); @@ -4805,10 +4798,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool for (const std::string &key : published_config->published_keys) { if (applied_keys.count(key) != 0) continue; // already applied - // A '#' suffix denotes a variant (per-extruder/per-filament) key; resolve the base key. + // A '#' suffix denotes a variant key; resolve the base key. const std::string base_key = key.substr(0, key.find('#')); - // Structural keys are intentionally never applied (not "skipped due to - // mismatch"), so bail out before the applied/skipped bookkeeping. + // Structural keys are never applied (not "skipped due to mismatch"), so bail + // out before the applied/skipped bookkeeping. if (structural_keys.count(base_key) != 0) continue; if (allowlist != nullptr && @@ -4822,23 +4815,29 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (src_opt == nullptr) continue; // key not present in the loaded config; record later if (src_opt->is_vector()) { - // Vector key: apply only when the edited preset has a matching vector size. const ConfigOption *dst_opt = target.option(base_key); - if (dst_opt == nullptr || !dst_opt->is_vector() || - static_cast(src_opt)->size() != static_cast(dst_opt)->size()) + if (dst_opt == nullptr || !dst_opt->is_vector()) continue; // cannot apply; will be reported as skipped - // A '#' variant index must be in range: ConfigOptionVector::set_at would - // otherwise resize the destination vector, corrupting the receiver's preset. + // A '#N' variant key (e.g. per-extruder retraction_length#2) applies one + // element, so the index only needs to be in range on both sides - the + // receiver may have a different extruder count than the author. Out-of-range + // indices are skipped (set_at would otherwise resize the receiver's vector). if (key.size() > base_key.size()) { const size_t idx = static_cast(std::atoi(key.c_str() + base_key.size() + 1)); - if (idx >= static_cast(src_opt)->size()) + if (idx >= static_cast(src_opt)->size() || + idx >= static_cast(dst_opt)->size()) continue; // out-of-range variant: cannot apply; reported as skipped + } else if (static_cast(src_opt)->size() != + static_cast(dst_opt)->size()) { + // Whole-vector base key: the receiver must have a matching vector size, + // otherwise applying would overwrite a different number of elements. + continue; // cannot apply; will be reported as skipped } target.apply_only(config, {key}, true); applied_keys.insert(key); } else { - // A scalar key cannot carry a '#N' variant suffix; a hand-crafted file - // listing one is reported as skipped instead of being silently marked applied. + // A scalar key cannot carry a '#N' suffix; a hand-crafted file listing one + // is reported as skipped instead of being silently marked applied. if (key.find('#') != std::string::npos) continue; // Scalar key: apply only if present on the user's machine. @@ -4852,229 +4851,87 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool apply_published(this->prints.get_edited_preset().config, nullptr); apply_published(this->printers.get_edited_preset().config, &printer_allowlist); - // Material pass: apply the author's material-qualified keys onto the receiver's - // matching filament presets. The file config carries the author's per-slot identity - // (filament_type / filament_vendor remain in config; filament_ids was moved into a - // local earlier) and the per-slot material retraction values. - if (!published_config->material_keys.empty()) { - const ConfigOptionStrings *file_types = config.option("filament_type"); - const ConfigOptionStrings *file_vendors = config.option("filament_vendor"); - auto identity_matches = [](const std::string &id, const std::string &type, const std::string &vendor, - const std::string &slot_id, const std::string &slot_type, const std::string &slot_vendor) { - // When both sides carry a filament_id, equality is required; otherwise fall - // back to filament_type, with filament_vendor as an additional qualifier only - // when both sides have a non-empty vendor. - if (!id.empty() && !slot_id.empty()) - return id == slot_id; - if (type.empty() || type != slot_type) - return false; - if (!vendor.empty() && !slot_vendor.empty()) - return vendor == slot_vendor; - return true; - }; - for (const PublishedMaterialEntry &entry : published_config->material_keys) { - // Entries using the filament-publishing-v2 features (full dump, published type or - // colour) are handled by the positional per-slot pass below; the legacy identity - // matching here applies only to files that predate those features. - if (entry.full || entry.publish_type || entry.publish_color) - continue; - // Resolve the author's source slot and its ordinal among the author slots - // carrying this entry's identity. A slotted entry (slot >= 0) names the exact - // author slot and targets the receiver's Nth matching preset (N = ordinal); - // a legacy entry (slot -1) uses the first matching author slot and applies to - // every matching receiver preset. - auto slot_identity = [&filament_ids, file_types, file_vendors](size_t slot, std::string &id, std::string &type, std::string &vendor) { - id = (slot < filament_ids.size()) ? filament_ids[slot] : std::string(); - type = (file_types && slot < file_types->size()) ? file_types->get_at(slot) : std::string(); - vendor = (file_vendors && slot < file_vendors->size()) ? file_vendors->get_at(slot) : std::string(); - }; - bool author_found = false; - size_t author_slot = 0; - size_t author_ordinal = 0; - if (entry.slot >= 0) { - // Collect every author slot carrying this identity, in slot order; the - // entry's slot must be among them, and its position is the ordinal used - // to pick the receiver's matching preset. - std::vector matching_author_slots; - for (size_t slot = 0; slot < filament_ids.size(); ++slot) { - std::string slot_id, slot_type, slot_vendor; - slot_identity(slot, slot_id, slot_type, slot_vendor); - if (identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, - slot_id, slot_type, slot_vendor)) - matching_author_slots.emplace_back(slot); - } - const auto ordinal_it = std::find(matching_author_slots.begin(), matching_author_slots.end(), size_t(entry.slot)); - if (ordinal_it != matching_author_slots.end()) { - author_slot = size_t(entry.slot); - author_ordinal = size_t(ordinal_it - matching_author_slots.begin()); - author_found = true; - } - // Out of range, or the slot does not carry this identity: silent skip below. - } else { - // Legacy: the first author slot whose identity matches. - for (size_t slot = 0; slot < filament_ids.size(); ++slot) { - std::string slot_id, slot_type, slot_vendor; - slot_identity(slot, slot_id, slot_type, slot_vendor); - if (identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, - slot_id, slot_type, slot_vendor)) { - author_slot = slot; - author_found = true; - break; - } - } - } - if (!author_found) - // No author slot carries this material: nothing to apply, nothing to report. - continue; - - const std::string material_label = entry.filament_id.empty() ? entry.filament_type : entry.filament_id; - auto report_skipped = [&skipped_keys, &material_label](const std::string &key, const std::string &slot_qualifier = std::string()) { - skipped_keys.emplace_back("material:" + material_label + - (slot_qualifier.empty() ? std::string() : " " + slot_qualifier) + - " (" + key + ")"); - }; - - // Collect the receiver's matching filament presets (distinct by preset name). - std::vector matched_preset_names; - std::set fallback_matched_names; - for (const std::string &preset_name : this->filament_presets) { - Preset *preset = this->filaments.find_preset(preset_name); - if (preset == nullptr) - continue; - const std::string slot_id = preset->filament_id; - // Null-guard the identity reads: a malformed user preset may lack - // filament_type / filament_vendor entirely (hand-edited preset file). - const ConfigOptionStrings *slot_types = preset->config.option("filament_type"); - const ConfigOptionStrings *slot_vendors = preset->config.option("filament_vendor"); - const std::string slot_type = (slot_types && !slot_types->values.empty()) ? slot_types->get_at(0) : std::string(); - const std::string slot_vendor = (slot_vendors && !slot_vendors->values.empty()) ? slot_vendors->get_at(0) : std::string(); - if (!identity_matches(entry.filament_id, entry.filament_type, entry.filament_vendor, - slot_id, slot_type, slot_vendor)) - continue; - if (std::find(matched_preset_names.begin(), matched_preset_names.end(), preset_name) == matched_preset_names.end()) - matched_preset_names.emplace_back(preset_name); - if (entry.filament_id.empty() || slot_id.empty()) - fallback_matched_names.insert(preset_name); - } - if (matched_preset_names.empty()) { - // No receiver material matches this entry: report each key as skipped. - for (const std::string &key : entry.keys) - report_skipped(key); - continue; - } - if (fallback_matched_names.size() > 1) { - // The type fallback matched more than one distinct receiver preset: never - // guess which one the author meant. - for (const std::string &key : entry.keys) - report_skipped(key); - continue; - } - - // Slotted entries target the receiver's matching preset at the author's - // ordinal; legacy entries apply to every matching receiver preset. - std::vector apply_to_preset_names; - if (entry.slot >= 0) { - if (author_ordinal >= matched_preset_names.size()) { - // The receiver has fewer matching presets than the author's ordinal: - // this slot's values cannot be placed, report each key. - const std::string slot_qualifier = "slot " + std::to_string(entry.slot); - for (const std::string &key : entry.keys) - report_skipped(key, slot_qualifier); - continue; - } - apply_to_preset_names.emplace_back(matched_preset_names[author_ordinal]); - } else { - apply_to_preset_names = matched_preset_names; - } - - for (const std::string &key : entry.keys) { - const std::string base_key = key.substr(0, key.find('#')); - if (structural_keys.count(base_key) != 0) - continue; // structural: silent - const ConfigOption *src_opt = config.option(base_key); - if (src_opt == nullptr || !src_opt->is_vector() || - author_slot >= static_cast(src_opt)->size()) { - report_skipped(key); - continue; - } - for (const std::string &preset_name : apply_to_preset_names) { - Preset *preset = this->filaments.find_preset(preset_name); - if (preset == nullptr) - continue; - ConfigOption *dst_opt = preset->config.option(base_key); - // Per-slot scalar copy: the receiver's filament preset holds a single - // value per key (vector of size 1), the file holds the per-slot vector. - if (dst_opt == nullptr || !dst_opt->is_vector() || - static_cast(dst_opt)->empty() || - dst_opt->type() != src_opt->type()) { - report_skipped(key); - continue; - } - static_cast(dst_opt)->set_at(src_opt, 0, author_slot); - material_applied = true; - } - } - } - } - - // Filament-publishing-v2: positional per-slot entries. The author published, per slot, - // either the entire filament (full) or specific keys plus optionally a curated type - // and/or colour. The receiver's slot is matched positionally against the published type: + // Material pass: positional per-slot entries. The author published, per slot, either the + // entire filament (full) or specific keys plus optionally a curated type and/or colour. + // The receiver's slot is matched positionally against the published type: // - colour: always applied to the slot, independent of the type gate; - // - type match: a full dump is intentionally ignored (the receiver keeps its material), - // a partial entry's keys are applied as usual; - // - type mismatch: the slot is replaced with the first visible same-type filament from - // the receiver's library; the author's values are applied on top of it (full) or the - // published keys are applied (partial); - // - no replacement available: a full entry falls back to applying the author's values - // in-memory onto the receiver's current preset (no library import); a partial entry - // keeps the receiver's material and reports its keys as skipped. + // - type match: the full dump still applies wholesale (every setting, as if the slot's + // filament had been loaded from a normal save); a partial entry's keys are applied + // as usual; + // - type mismatch: the slot is replaced with the best visible candidate, scored by the + // published identity (exact filament_id, then vendor+type, then type only); a + // preset no other slot references wins on equal scores, and a shared exact-material + // preset is taken even though mutating it also affects the other slot; the author's + // values are applied on top of it (full) or the published keys are applied (partial); + // - no replacement available: a full entry falls back to the first available visible + // preset, applying the author's values on top of it; a partial entry keeps the + // receiver's material and reports its keys as skipped. + // All applied values (colour and keys) are written onto the slot's stored preset + // directly (mutate in place): the receiver's material keeps its identity and is simply + // overridden. To keep slot-to-slot aliasing (several slots referencing one preset) from + // leaking one slot's values into another, published slots sharing a preset with another + // slot are re-pointed at distinct presets before the values are applied. { - // Slot growth is tied to the author slots that carry published content (full, - // type or colour): the file's total filament count is irrelevant, and a slot the - // author left unpublished must not pull a filler material into the receiver's - // setup. Grow only as far as the highest published slot (never shrink, never - // remove the receiver's existing materials). - bool has_new_semantics = false; - size_t target_slots = this->filament_presets.size(); + // Grow the receiver's slots only as far as the highest published slot (never + // shrink, never pull filler materials for unpublished slots). + bool has_published_entries = false; + size_t target_slots = this->filament_presets.size(); for (const PublishedMaterialEntry &entry : published_config->material_keys) { - if (!entry.full && !entry.publish_type && !entry.publish_color) - continue; // legacy entry, handled above - has_new_semantics = true; + has_published_entries = true; if (entry.slot >= 0) target_slots = std::max(target_slots, size_t(entry.slot) + 1); } - if (has_new_semantics) { + if (has_published_entries) { // Defensive cap: never exceed the file's own filament count. target_slots = std::min(target_slots, num_filaments); - // Slots that carry published content (full/type/colour) must reference a stored - // preset that no other slot shares: the overlay mutates stored presets in place - // (colour and keys), so a shared preset would leak one slot's published values - // into every slot that references it. + // Slots carrying published content, steering the initial preset selection of + // newly grown slots. std::set published_slots; for (const PublishedMaterialEntry &entry : published_config->material_keys) - if ((entry.full || entry.publish_type || entry.publish_color) && entry.slot >= 0) + if (entry.slot >= 0) published_slots.insert(entry.slot); std::set used_preset_names(this->filament_presets.begin(), this->filament_presets.end()); // Mirror first_visible_idx()'s start index so suppressed default presets are // never picked as a slot material. const size_t first_candidate = this->filaments.is_default_suppressed() ? this->filaments.num_default_presets() : 0; + // Candidate preference for a published entry: exact setting_id (variant-level, + // since "Generic PLA" and "Generic PLA Matte" share filament_id), then exact + // filament_id, then vendor+type, then type only (a type-only pick may surface an + // unrelated preset, e.g. a different vendor's PLA). + auto candidate_score = [](const Preset &candidate, const PublishedMaterialEntry &entry) -> int { + if (!entry.setting_id.empty() && candidate.setting_id == entry.setting_id) + return 3; + const ConfigOptionStrings *types = candidate.config.opt("filament_type"); + const ConfigOptionStrings *vendors = candidate.config.opt("filament_vendor"); + const std::string type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : std::string(); + const std::string vendor = (vendors != nullptr && !vendors->values.empty()) ? vendors->get_at(0) : std::string(); + if (!entry.filament_id.empty() && candidate.filament_id == entry.filament_id) + return 2; + if (normalize_filament_type(type) == entry.publish_type_value) { + if (!entry.filament_vendor.empty() && vendor == entry.filament_vendor) + return 1; + return 0; + } + return -1; + }; while (this->filament_presets.size() < target_slots) { const size_t new_slot_idx = this->filament_presets.size(); std::string initial_preset; if (published_slots.count(static_cast(new_slot_idx)) != 0) { - // Proactively assign a distinct matching candidate preset if this slot - // carries a published type... + // Prefer the best distinct candidate for the slot's published material + // (exact id, then vendor+type, then type only)... for (const PublishedMaterialEntry &entry : published_config->material_keys) { if (entry.slot != static_cast(new_slot_idx) || !entry.publish_type || entry.publish_type_value.empty()) continue; - for (size_t i = 0; i < this->filaments.size(); ++i) { + int best_score = -1; + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) continue; - if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) == entry.publish_type_value) { + const int score = candidate_score(candidate, entry); + if (score > best_score) { + best_score = score; initial_preset = candidate.name; - break; } } break; @@ -5091,62 +4948,65 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } } if (initial_preset.empty()) - // Unpublished filler slot, or every visible preset is already used: repeat - // the receiver's last preset, mirroring the "Add one filament" behaviour - // (PresetBundle::set_num_filaments). + // Unpublished filler slot, or every visible preset is already used: + // repeat the receiver's last preset ("Add one filament" behaviour). initial_preset = this->filament_presets.empty() ? this->filaments.first_visible().name : this->filament_presets.back(); this->filament_presets.emplace_back(initial_preset); used_preset_names.insert(initial_preset); } - // Slots that were grown before this block (e.g. by update_multi_material_filament_presets - // matching the extruder count) may still alias another slot; re-point them at a - // distinct preset. Slot 0, the receiver's own material, is never re-assigned. + // Published slots that alias another slot (multi-extruder with one filament) + // get re-pointed at distinct presets: the overlay mutates stored presets in + // place, so a shared preset would leak one slot's published values into every + // aliased slot. Slot 0 (the receiver's own material) is never re-assigned; + // when no unused candidate exists the aliasing stays (unavoidable). + auto referenced_elsewhere = [&](const std::string &preset_name, size_t except_slot) { + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (s != except_slot && this->filament_presets[s] == preset_name) + return true; + return false; + }; for (size_t slot = 1; slot < this->filament_presets.size(); ++slot) { - if (published_slots.count(static_cast(slot)) == 0) - continue; - bool shared = false; - for (size_t other = 0; other < this->filament_presets.size(); ++other) - if (other != slot && this->filament_presets[other] == this->filament_presets[slot]) { - shared = true; - break; - } - if (!shared) + if (published_slots.count(static_cast(slot)) == 0 || + !referenced_elsewhere(this->filament_presets[slot], slot)) continue; + // Prefer the best distinct candidate for the slot's published material + // (exact id, then vendor+type, then type only)... std::string replacement; + int best_score = -1; for (const PublishedMaterialEntry &entry : published_config->material_keys) { if (entry.slot != static_cast(slot) || !entry.publish_type || entry.publish_type_value.empty()) continue; - for (size_t i = 0; i < this->filaments.size(); ++i) { + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) + if (!candidate.is_visible || referenced_elsewhere(candidate.name, size_t(-1))) continue; - if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) == entry.publish_type_value) { + const int score = candidate_score(candidate, entry); + if (score > best_score) { + best_score = score; replacement = candidate.name; - break; } } break; } + // ...otherwise any distinct visible preset not referenced by another slot. if (replacement.empty()) { for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) - continue; - replacement = candidate.name; - break; + if (candidate.is_visible && !referenced_elsewhere(candidate.name, size_t(-1))) { + replacement = candidate.name; + break; + } } } if (replacement.empty()) - continue; // every visible preset is used: aliasing is unavoidable - used_preset_names.erase(this->filament_presets[slot]); + continue; // every visible preset is referenced: aliasing is unavoidable this->filament_presets[slot] = replacement; - used_preset_names.insert(replacement); + material_applied = true; } - // Mirror set_num_filaments' project_config vector handling ("Add one filament"): - // resize the per-slot colour/type/map vectors to the grown slot count and seed the - // new entries so the slots render with colours instead of blank chips. Only the - // new entries are seeded; the receiver's existing values are left untouched. + // Grow the per-slot colour/type/map project vectors to the new slot count and + // seed the new entries so the slots render with colours instead of blank chips + // (mirrors set_num_filaments; existing values are left untouched). ConfigOptionStrings *proj_colour = this->project_config.opt("filament_colour"); ConfigOptionStrings *proj_multi_colour = this->project_config.opt("filament_multi_colour"); ConfigOptionStrings *proj_colour_type = this->project_config.opt("filament_colour_type"); @@ -5184,8 +5044,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (proj_colour_type && slot < proj_colour_type->values.size()) proj_colour_type->values[slot] = "1"; // default colour type } - // Rebuild the flush volumes for the grown slot count (set_num_filaments does the - // same; without it the matrix would stay at the receiver's old size). + // Rebuild the flush volumes for the grown slot count (as set_num_filaments does). this->update_multi_material_filament_presets(); auto apply_slot_keys = [&](Preset &preset, const std::vector &slot_keys, int author_slot, @@ -5207,23 +5066,22 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); continue; } - // Per-slot scalar copy: the receiver's filament preset holds a single - // value per key (vector of size 1), the file holds the per-slot vector. + // Per-slot scalar copy: the receiver preset holds one value per key + // (vector of size 1), the file holds the per-slot vector. static_cast(dst_opt)->set_at(src_opt, 0, author_slot); material_applied = true; } }; + // The slot's values are applied directly onto the slot's stored preset (mutate + // in place); the per-entry type gate below may re-point the slot first. for (const PublishedMaterialEntry &entry : published_config->material_keys) { - if (!entry.full && !entry.publish_type && !entry.publish_color) - continue; // legacy entry, handled above if (entry.slot < 0 || size_t(entry.slot) >= this->filament_presets.size()) continue; // out of range: nothing to do for this slot const size_t slot = size_t(entry.slot); - // Modify the stored preset itself (real=true), never the edited snapshot: - // find_preset would return &m_edited_preset for the currently selected slot, - // and the re-select at the end of this block re-snapshots from the stored - // preset, silently discarding any values applied to the snapshot. + // Resolve the stored preset itself (real=true), never the edited snapshot: + // find_preset would return &m_edited_preset for the selected slot, and the + // re-select at the end re-snapshots from the stored preset. Preset *recv = this->filaments.find_preset(this->filament_presets[slot], false, true); if (recv == nullptr) continue; @@ -5234,83 +5092,96 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool bool apply_slot = true; if (entry.publish_type && !entry.publish_type_value.empty()) { - const std::string recv_type = normalize_filament_type(recv->config.opt_string("filament_type", 0u)); - if (recv_type == entry.publish_type_value) { - // Type match: the receiver keeps its material. A full dump is - // intentionally ignored for this slot; partial keys still apply. - if (entry.full) - apply_slot = false; - } else { - // Type mismatch: replace the slot with the first visible same-type - // filament from the receiver's library, preferring one that no other - // slot references (a shared stored preset would leak this slot's - // published values into that slot). - std::string replacement, first_same_type; - for (size_t i = 0; i < this->filaments.size(); ++i) { - const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible) - continue; - if (normalize_filament_type(candidate.config.opt_string("filament_type", 0u)) != entry.publish_type_value) - continue; - if (first_same_type.empty()) - first_same_type = candidate.name; - bool used_elsewhere = false; - for (size_t s = 0; s < this->filament_presets.size(); ++s) - if (s != slot && this->filament_presets[s] == candidate.name) { - used_elsewhere = true; - break; + // Null-guard: a malformed receiver preset may lack filament_type. + const ConfigOptionStrings *recv_types = recv->config.opt("filament_type"); + const std::string recv_type = (recv_types != nullptr && !recv_types->values.empty()) ? recv_types->get_at(0) : std::string(); + if (normalize_filament_type(recv_type) != entry.publish_type_value) { + // Type mismatch: replace the slot with the best matching preset, + // scored by the published identity (exact filament_id, then + // vendor+type, then type only). A preset no other slot references + // wins on equal scores; a shared exact-material preset is taken even + // though mutating it also affects the other slot. + auto find_best = [&](bool unreferenced_only) -> std::pair { + int best_score = -1; + std::string best_name; + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible) + continue; + const int score = candidate_score(candidate, entry); + if (score <= best_score) + continue; + if (unreferenced_only) { + bool used = false; + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (s != slot && this->filament_presets[s] == candidate.name) { + used = true; + break; + } + if (used) + continue; } - if (!used_elsewhere) { - replacement = candidate.name; - break; + best_score = score; + best_name = candidate.name; } + return { best_score, best_name }; + }; + const auto [strict_score, strict_name] = find_best(true); + const auto [relaxed_score, relaxed_name] = find_best(false); + int score = strict_score; + std::string replacement = strict_name; + if (relaxed_score > strict_score) { + score = relaxed_score; + replacement = relaxed_name; } - if (replacement.empty()) - replacement = first_same_type; if (!replacement.empty()) { const std::string old_name = recv->name; this->filament_presets[slot] = replacement; recv = this->filaments.find_preset(replacement, false, true); material_applied = true; - published_config->material_replacements.emplace_back( - "slot " + std::to_string(slot) + ": " + old_name + " -> " + replacement); + std::string replacement_line = "slot " + std::to_string(slot) + ": " + old_name + " -> " + replacement; + // A pick that is not the exact published material is a substitute; + // an entry without identity fields cannot be judged, so it stays plain. + if (score < 2 && (!entry.filament_id.empty() || !entry.filament_vendor.empty())) + replacement_line += " (substitute: no exact material match)"; + published_config->material_replacements.emplace_back(std::move(replacement_line)); } else if (entry.full) { - // No library match: create a temporary project-embedded custom preset - // populated with default settings and overlaid with the author's values. - std::string custom_name = entry.publish_type_value + " (Published)"; - for (size_t idx = 1; this->filaments.find_preset(custom_name, false) != nullptr; ++idx) - custom_name = entry.publish_type_value + " (Published " + std::to_string(idx) + ")"; - - // Capture the slot's current name BEFORE load_preset: the custom - // name sorts ahead of the slot's material, so the deque insertion - // relocates it and recv would dangle after the call. - const std::string old_name = recv->name; - - DynamicPrintConfig custom_cfg = this->filaments.default_preset_for(config).config; - // filament_type is a per-slot vector option: set it via the strings - // accessor. opt_string(key, bool) would ask for the scalar - // ConfigOptionString, fail the cast and dereference nullptr. - if (ConfigOptionStrings *type_opt = custom_cfg.opt("filament_type", true)) { - if (type_opt->values.empty()) - type_opt->values.emplace_back(); - type_opt->values[0] = entry.publish_type_value; + // No same-type library preset: fall back to the first available + // visible preset, preferring one no other slot references, and + // apply the author's full values on top of it (the dump carries + // filament_type, so the preset takes the author's type). + std::string fallback; + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible) + continue; + if (fallback.empty()) + fallback = candidate.name; + bool referenced = false; + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (this->filament_presets[s] == candidate.name) { + referenced = true; + break; + } + if (!referenced) { + fallback = candidate.name; + break; + } } - if (ConfigOptionStrings *id_opt = custom_cfg.opt("filament_settings_id", true)) - if (!id_opt->values.empty()) - id_opt->values[0] = custom_name; - - Preset &created = this->filaments.load_preset("", custom_name, std::move(custom_cfg), false, file_version); - created.is_project_embedded = true; - created.is_visible = true; - - this->filament_presets[slot] = custom_name; - recv = &created; - material_applied = true; - published_config->material_replacements.emplace_back( - "slot " + std::to_string(slot) + ": " + old_name + " -> " + custom_name); + if (!fallback.empty() && fallback != recv->name) { + const std::string old_name = recv->name; + this->filament_presets[slot] = fallback; + recv = this->filaments.find_preset(fallback, false, true); + material_applied = true; + published_config->material_replacements.emplace_back( + "slot " + std::to_string(slot) + ": " + old_name + " -> " + fallback + + " (substitute: no " + entry.publish_type_value + " available)"); + } + // No visible preset at all: keep the receiver's material and let + // the full dump mutate it below. } else { - // Partial publish with no replacement available: keep the - // receiver's material and report this slot's keys as skipped. + // Partial publish with no replacement: keep the receiver's + // material and report the slot's keys as skipped. for (const std::string &key : entry.keys) skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); apply_slot = false; @@ -5318,14 +5189,15 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } } - // Colour is slot-scoped and independent of the type gate: it is applied to - // whichever material ends up in the slot (original, replacement or the - // in-memory fallback), and synced into project_config for GUI rendering. + // The values below are applied onto whatever stored preset the slot ended up + // on (original, type replacement or the full-publish fallback), in place. + + // Colour is slot-scoped and independent of the type gate; it is also synced + // into project_config for GUI rendering. if (entry.publish_color && !entry.color.empty()) { if (recv != nullptr) { - // Create the key when the target preset lacks it (e.g. a replacement - // built from the static defaults): the colour is a requirement, not - // an optional override. + // Create the key when the target preset lacks it: the colour is a + // requirement, not an override. if (ConfigOptionStrings *colour = recv->config.opt("filament_colour", true)) { if (colour->values.empty()) colour->values.emplace_back(); @@ -5364,11 +5236,9 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } published_config->skipped_keys = std::move(skipped_keys); - // The material overlay above modified the filament collection presets in place, but - // the edited preset (what the GUI displays) is a snapshot taken when the preset was - // last selected. Re-select the first slot's filament (mirroring a normal project load) - // so the applied values (colour, type, keys and slot replacements) surface in the GUI; - // selecting any other slot's filament afterwards snapshots its modified preset too. + // The material overlay mutates the collection presets in place, but the edited preset + // (what the GUI displays) is a snapshot taken when the preset was last selected. + // Re-select the first slot's filament so the applied values surface in the GUI. if (material_applied && !this->filament_presets.empty()) this->filaments.select_preset_by_name(this->filament_presets.front(), true); } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index d568de30e3..ad78a7c59c 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -167,22 +167,21 @@ struct PresetBundleMetadata } }; -// Configuration describing a "published" 3MF project: the file carries a flag plus a list of -// author-selected setting keys. When loading such a project the user's currently-selected -// presets are kept and only the published keys are overlaid onto the edited presets. +// A "published" 3MF project: keeps the user's currently-selected presets and overlays only the +// author-selected published keys onto the edited presets. struct PublishedConfig { bool published = false; std::vector published_keys; - // Material-qualified published keys chosen by the author for the materials used in the - // project; applied on load only to the receiver's filament presets whose material - // identity matches (see PublishedMaterialEntry in PublishSettings.hpp). + // Per-slot published material keys, applied positionally (author slot N -> receiver slot N), + // gated by the author's optional type requirement and written onto the slot's stored preset + // in place (see PublishedMaterialEntry in PublishSettings.hpp). std::vector material_keys; // Keys that could not be applied (missing on the user's machine or vector size mismatch), // filled in by load_config_file_config for notification purposes. std::vector skipped_keys; // Human-readable notices of the slot material replacements performed while loading a - // published project (e.g. "Slot 2: replaced PETG with PLA"), for the load notification. + // published project, for the load notification. std::vector material_replacements; }; diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 0d1bd07989..2be7a869d1 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -30,11 +30,9 @@ std::string normalize_filament_type(const std::string& type) const std::set& publish_structural_keys() { - // Structural / non-publishable keys. The *_settings_id keys are also part of - // PresetCollection::skipped_in_dirty (Preset.cpp) and are excluded there too. - // This mirrors the structural keys stripped from configs in Preset.cpp - // (profile_print_params_same) plus other keys that must never be published - // because they would rewrite the user's preset inheritance/structure. + // Non-publishable keys: the *_settings_id keys are also in PresetCollection::skipped_in_dirty + // (Preset.cpp) / stripped from configs (profile_print_params_same); publishing them would + // rewrite the user's preset inheritance/structure. static const std::set structural_keys = { "printer_settings_id", "filament_settings_id", "print_settings_id", "sla_print_settings_id", "sla_material_settings_id", @@ -88,9 +86,8 @@ const std::vector& publishable_printer_z_hop_options() const std::set& publishable_printer_keys() { - // The union of the printer tab's "Retraction" and "Z-Hop" optgroups. The "Retraction when - // switching material" keys are intentionally excluded: toolchange retraction is - // device/profile territory, not a publishable behavior tweak. + // Union of the two optgroups; "Retraction when switching material" keys are excluded + // (toolchange retraction is device/profile territory, not a publishable behavior tweak). static const std::set printer_keys = [] { std::set keys; for (const PublishablePrinterOption &opt : publishable_printer_retraction_options()) @@ -113,9 +110,8 @@ std::vector collect_dirty_settings_keys(const PresetBundle& bundle) } }; - // Print and printer presets each track a single edited preset; filaments may span - // multiple slots (multi-material). Union the dirty keys of each collection's edited - // preset; this feeds only the Publish dialog's pre-check. + // Union the dirty keys of each collection's edited preset (filaments may span multiple + // slots); feeds only the Publish dialog's pre-check. append_dirty(bundle.prints.current_dirty_options(true)); append_dirty(bundle.printers.current_dirty_options(true)); append_dirty(bundle.filaments.current_dirty_options(true)); @@ -131,12 +127,11 @@ DynamicPrintConfig filter_published_config( DynamicPrintConfig filtered; std::set base_keys_to_include; - // Base keys that must never be masked: identity, plate geometry, process/printer keys and - // partially-published material keys keep today's whole-vector serialization (all slots). + // Never masked (whole-vector serialization): identity, plate geometry, process/printer + // keys and partially-published material keys. std::set mask_exempt_keys; - // For keys carried only by "full" entries: base key -> author slots whose values must - // survive; the other slots are masked to their defaults so a full publish does not leak - // the author's unrelated slot data. + // "Full" entries only: base key -> author slots whose values must survive; other slots are + // masked to their defaults so a full publish does not leak unrelated slot data. std::map> full_slot_map; // 1. Mandatory material identity & slot count keys for 3MF validation/normalization @@ -183,8 +178,7 @@ DynamicPrintConfig filter_published_config( mask_exempt_keys.insert(base_key); } } - // 4b. "Full publish" entries carry the entire slot; the values of the covered keys are - // masked to the author's slot on export (see the copy loop below). + // Full-publish keys: mask to the author's slot on export (see the copy loop below). for (const std::string &key : entry.full_keys) { const std::string base_key = key.substr(0, key.find('#')); if (base_key.empty()) @@ -195,9 +189,8 @@ DynamicPrintConfig filter_published_config( } } - // Mask a vector option's slots that are not author-published: copy the option default over - // each non-published index. Keys without an option default are left unmasked (the file then - // carries the whole vector, matching the partial-publish behavior). + // Mask non-published vector slots with the option default; keys without a default stay + // unmasked (whole vector, matching partial-publish behavior). auto mask_slots = [](ConfigOption &opt, const ConfigOptionDef *def, const std::set &keep_slots) { auto *vec = dynamic_cast(&opt); if (vec == nullptr || vec->size() == 0 || def == nullptr || !def->default_value) @@ -212,7 +205,7 @@ DynamicPrintConfig filter_published_config( vec->set_at(def->default_value.get(), idx, 0); }; - // Copy selected options from full_config into filtered config + // Copy the selected options from full_config into the filtered config. for (const std::string &key : base_keys_to_include) { if (const ConfigOption *opt = full_config.option(key)) { ConfigOption *cloned = opt->clone(); diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index aadf0d3234..ecb51523f5 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -6,78 +6,63 @@ namespace Slic3r { class PresetBundle; -// Structural / non-publishable setting keys, shared by the Publish dialog and the published-3MF -// overlay path in PresetBundle::load_config_file_config. These keys must never be published -// because they would rewrite the user's preset inheritance/structure. This is the single -// source of truth for the denylist. +// Structural keys that must never be published (single source of truth for the denylist): +// publishing them would rewrite the user's preset inheritance/structure. const std::set& publish_structural_keys(); -// One option row of the printer tab's "Retraction" / "Z-Hop" optgroups (TabPrinter::build_fff, -// Tab.cpp). Key and icon id are kept together so the tab can later be migrated onto these -// lists; publishable_printer_keys() is their union, and the published-3MF loader/dialog must -// never accept printer keys outside it. +// One row of the printer tab's "Retraction" / "Z-Hop" optgroups (key + tab icon id), kept +// together so the tab can later be migrated onto these lists. struct PublishablePrinterOption { const char *key; // config key, e.g. "retraction_length" const char *icon; // tab icon id, e.g. "printer_extruder_retraction#length" }; -// The printer tab's "Retraction" optgroup options, in tab order. +// The printer tab's "Retraction" / "Z-Hop" optgroup options, in tab order. const std::vector& publishable_printer_retraction_options(); -// The printer tab's "Z-Hop" optgroup options, in tab order. const std::vector& publishable_printer_z_hop_options(); -// Printer-class retraction / z-hop keys that are publishable: the union of -// publishable_printer_retraction_options() and publishable_printer_z_hop_options(). The -// published-3MF overlay applies printer keys only when their base key is in this allowlist; -// any other printer-class key in a published file is contract-excluded (never applied, never -// reported as skipped). +// Union of the two optgroup option lists; the published-3MF overlay applies printer keys only +// when their base key is in this allowlist (anything else is contract-excluded). const std::set& publishable_printer_keys(); -// Returns the union of setting keys that differ from the base/system preset across the current -// print, printer and filament presets (feeds the Publish dialog's pre-check). +// Union of setting keys differing from the base/system preset across the current print, +// printer and filament presets (feeds the Publish dialog's pre-check). std::vector collect_dirty_settings_keys(const PresetBundle& bundle); -// A material-qualified set of published setting keys, chosen by the author for one of the -// materials used in the project. The identity fields let the receiver apply the keys only -// when a matching material is selected: filament_id is the most precise (stable across -// machines/vendors when present, empty for user presets); filament_type + filament_vendor -// are the fallback. Keys are base keys (no "#N" variant suffix). +// Per-slot published material keys, applied positionally (author slot N -> receiver slot N). +// The identity fields are carried for reference/notification labels only; the type gate +// (publish_type) is the author's explicit opt-in for requiring a material type. struct PublishedMaterialEntry { std::string filament_type; // material family, e.g. "PLA" (may be empty) std::string filament_vendor; // e.g. "Generic", "Bambu" (may be empty) std::string filament_id; // stable material id, e.g. "GFL99" (may be empty) - // 0-based author filament slot this entry's values came from; -1 = legacy/unspecified - // (files written before the slot field). Slotted entries apply to the receiver's Nth - // matching preset (N = the slot's ordinal among the author's matching slots); legacy - // entries apply to every matching receiver preset. + // Unique preset id of the author's slot preset (e.g. Orca Filament Library "setting_id"); + // used on load to match the exact published variant, which filament_id alone cannot + // distinguish ("Generic PLA" and "Generic PLA Matte" share their inherited id). + std::string setting_id; + // 0-based author filament slot; -1 (hand-crafted files) is skipped. int slot{-1}; std::vector keys; - // "Full Publish": the entire filament preset of this slot is serialized (see full_keys), - // not just the individually selected keys. On load the type gate (publish_type_value) - // decides whether the receiver keeps its material (type match) or is replaced; a full - // entry carries no partial keys. + // "Full Publish": serialize the whole filament preset (full_keys); the type gate then + // decides whether the receiver keeps its material (type match) or is replaced. bool full{false}; - // All non-structural filament keys of the author's slot preset, present when full is true. - // Values travel in the file config, masked to the author's slot index. + // All non-structural filament keys of the author's slot preset; values travel in the file + // config, masked to the author's slot index. std::vector full_keys; - // Vendor-agnostic, curated (MaterialType) filament type the author requires for this slot. - // On load the receiver's slot material is matched against it; on mismatch the slot is - // replaced with a same-type filament from the receiver's library. + // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on + // mismatch the slot is replaced with a same-type filament from the receiver's library. bool publish_type{false}; std::string publish_type_value; - // Required filament colour for this slot, applied on load regardless of the type match. + // Required filament colour, applied on load regardless of the type match. bool publish_color{false}; std::string color; }; -// Normalizes a filament type string against the curated MaterialType list: an exact match -// wins, then the value is stripped after its first space ("PLA High Speed" -> "PLA"); a -// value still not recognized is returned unchanged. Shared by the Publish dialog's type row -// default and by the published-3MF loader's type matching. +// "PLA High Speed" -> "PLA" (strip a space modifier); dash types like "PA-CF" are kept intact. std::string normalize_filament_type(const std::string& type); -// Constructs a minimal DynamicPrintConfig for a published 3MF export containing only the -// author-selected published keys, material keys, material identity fields, and plate geometry keys. +// Minimal DynamicPrintConfig for a published 3MF export: only the selected published keys, +// material keys, identity fields and plate geometry keys. class DynamicPrintConfig; DynamicPrintConfig filter_published_config( const DynamicPrintConfig &full_config, diff --git a/src/slic3r/GUI/ConfigValueFormatter.hpp b/src/slic3r/GUI/ConfigValueFormatter.hpp index e7ed549930..c51a8e8a17 100644 --- a/src/slic3r/GUI/ConfigValueFormatter.hpp +++ b/src/slic3r/GUI/ConfigValueFormatter.hpp @@ -11,18 +11,16 @@ class DynamicPrintConfig; namespace GUI { -// Return the value of the given option (identified by opt_key, which may contain -// a "#" suffix) formatted as a human readable string. +// Human-readable value of opt_key (may carry a "#" suffix) in config. wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& config); -// Return the full label of the given option (identified by opt_key, which may contain -// a "#" suffix). Returns "N/A" when the option is not set. +// Full label of opt_key; "N/A" when the option is not set. wxString get_full_label(const std::string& opt_key, const DynamicPrintConfig& config); -// Strip the "#" suffix (if any) from the given option key. +// Strip the "#" suffix (if any) from the option key. std::string get_pure_opt_key(const std::string& opt_key); -// Return the localized label of the currently selected value of an enum option. +// Localized label of the currently selected value of an enum option. wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConfig& config, bool is_infill = false, int idx = -1); } // namespace GUI diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 3cb246529f..48f315453c 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2837,11 +2837,11 @@ void MainFrame::init_menubar_as_editor() auto publish_handler = [this](wxCommandEvent&) { publish_project(); }; #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), publish_handler, "menu_publish", nullptr, [this](){return can_export_model(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Publish") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), publish_handler, "", nullptr, [this](){return can_export_model(); }, this); #endif diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cef3613ae9..5bd1fa6d87 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7208,9 +7208,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - // BBS: a "published" 3MF project carries a flag plus a list of author-selected - // setting keys. When present, keep the user's currently-selected presets and - // overlay only the published keys onto the edited presets on load. + // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; + // on load keep the user's current presets and overlay only those keys. PublishedConfig published_config; if (model.model_info != nullptr) { auto published_it = model.model_info->metadata_items.find("published"); @@ -7249,6 +7248,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ entry.filament_vendor = mat["filament_vendor"].get(); if (mat.contains("filament_id") && mat["filament_id"].is_string()) entry.filament_id = mat["filament_id"].get(); + if (mat.contains("setting_id") && mat["setting_id"].is_string()) + entry.setting_id = mat["setting_id"].get(); } if (m.contains("slot") && m["slot"].is_number_integer()) entry.slot = m["slot"].get(); @@ -7257,7 +7258,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ for (const auto &k : *entry_keys_it) if (k.is_string()) entry.keys.emplace_back(k.get()); - // Filament-publishing-v2 fields; absent in legacy files. + // Fields always written by the current exporter. if (m.contains("full") && m["full"].is_boolean()) entry.full = m["full"].get(); const auto entry_full_keys_it = m.find("full_keys"); @@ -7282,10 +7283,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - // BBS: a "published" 3MF behaves like a new project once loaded: the file's path - // must not become the project filename (Save/Ctrl-S would otherwise overwrite the - // shared file), and the published metadata is consumed by the overlay above and - // stripped so a later save produces a normal, unpublished 3MF. + // BBS: a "published" 3MF loads as a new project: its path must not become the + // project filename (Save/Ctrl-S would overwrite the shared file), and the + // published metadata is consumed above and stripped so a later save is a normal + // unpublished 3MF. if (published_out != nullptr && published_config.published) *published_out = true; if (published_config.published && load_config && this->model.model_info != nullptr) { @@ -13309,10 +13310,10 @@ void Plater::load_project(wxString const& filename2, p->set_project_filename(filename); } else if (loaded_published) { - // A "published" 3MF loads as a new project: the shared file's path must not become - // the project filename, so Save/Ctrl-S prompts for a destination instead of - // overwriting the published file. reset() above already cleared the project name - // and folder; restore the default new-project title and keep the file in recents. + // A "published" 3MF loads as a new project: its path must not become the project + // filename (Save/Ctrl-S prompts for a destination instead of overwriting it); + // reset() already cleared the project name, so restore the default title and keep + // the file in recents. p->set_project_name(_L("Untitled")); if (!filename.IsEmpty()) wxGetApp().mainframe->add_to_recent_projects(filename); @@ -16225,10 +16226,9 @@ void Plater::export_core_3mf() export_3mf(path_u8, SaveStrategy::Silence); } -// Export the current project as a "published" 3MF. This is a pure export: unlike save_project(), -// it never touches the project's file name, dirty state, backup path or title, and the -// published metadata is attached to the model only for the duration of the export so the -// in-memory project stays exactly as it was (a later Save Project produces a normal 3MF). +// Export the current project as a "published" 3MF: a pure export that never touches the +// project's file name, dirty state, backup path or title, and attaches the published metadata +// to the model only for the duration of the export (a later Save Project is a normal 3MF). int Plater::export_published_3mf(const std::vector& published_keys, const std::vector& material_keys) { wxString path = p->get_export_file(FT_3MF, _L("Publish 3MF file as:")); @@ -16240,14 +16240,14 @@ int Plater::export_published_3mf(const std::vector& published_keys, j.push_back(key); nlohmann::json jm = nlohmann::json::array(); for (const Slic3r::PublishedMaterialEntry& e : material_keys) - jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}}}, {"slot", e.slot}, {"keys", e.keys}, + jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}, {"setting_id", e.setting_id}}}, {"slot", e.slot}, {"keys", e.keys}, {"full", e.full}, {"full_keys", e.full_keys}, {"publish_type", e.publish_type}, {"type", e.publish_type_value}, {"publish_color", e.publish_color}, {"color", e.color} }); Model& model = this->model(); - // Remember the previous metadata state so it can be restored after the export, keeping the - // in-memory project pristine (the published flag lives only in the exported file). + // Save the previous metadata so it can be restored after the export, keeping the in-memory + // project pristine (the published flag lives only in the exported file). const bool had_model_info = (model.model_info != nullptr); const bool had_published = had_model_info && (model.model_info->metadata_items.find("published") != model.model_info->metadata_items.end()); const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find("published_keys") != model.model_info->metadata_items.end()); @@ -16261,15 +16261,13 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info->metadata_items["published_keys"] = j.dump(); model.model_info->metadata_items["published_material_keys"] = jm.dump(); - // Minimal published export: filter full_config to only the published keys, material keys, - // identity fields, and plate geometry keys, and omit project-embedded preset dumps. + // Minimal published export: filter full_config to the published keys, material keys, + // identity fields and plate geometry keys, and omit project-embedded preset dumps. DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); - // Same file layout save_project() uses for its project files, plus SaveStrategy::Silence and SaveStrategy::MinimalPublished: - // without it export_3mf() calls set_project_filename() on success, which would make this - // pure export the current project file. Silence keeps the project state untouched, exactly - // like export_core_3mf(). + // Same file layout as save_project(), plus Silence (so export_3mf does not set the project + // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence | SaveStrategy::MinimalPublished; bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); if (full_pathnames) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index d6ec283409..826fe29a5a 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -495,9 +495,8 @@ public: void export_gcode_3mf(bool export_all = false); void send_gcode_finish(wxString name); void export_core_3mf(); - // Export the current project as a "published" 3MF: embeds the author-selected settings - // (published_keys / published_material_keys) into the file's metadata. A pure export: the - // in-memory project (filename, dirty state, model_info metadata) is left untouched. + // Export a "published" 3MF embedding the author-selected settings in the file metadata; a + // pure export that leaves the in-memory project untouched. int export_published_3mf(const std::vector& published_keys, const std::vector& material_keys); static TriangleMesh combine_mesh_fff(const ModelObject& mo, int instance_id, std::function notify_func = {}); void export_stl(bool extended = false, bool selection_only = false, bool multi_stls = false, FileType file_type = FT_STL); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 009f672d3e..f62d7af3a4 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -23,8 +23,8 @@ namespace Slic3r { namespace GUI { namespace { -// Menu ids for show_menu(). Dedicated range above the standard ids so the popup cannot -// collide with application-level bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). +// Menu ids for show_menu(): dedicated range so the popup cannot collide with application-level +// bindings (e.g. MainFrame's recent-files wxID_FILE1.. range). enum { kPublishSelectAll = wxID_HIGHEST + 1, kPublishDeselectAll, @@ -49,9 +49,7 @@ PublishMaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& return identity; } -// "Generic PLA @System" -> "Generic PLA"; mirrors the alias derivation in -// PresetBundle::load_vendor_configs_from_json (PresetBundle.cpp) and -// PresetCollection::set_custom_preset_alias (Preset.cpp). +// "Generic PLA @System" -> "Generic PLA"; mirrors the alias derivation in PresetBundle.cpp. std::string material_display_name(const std::string& preset_name) { const size_t at = preset_name.find_first_of('@'); @@ -62,8 +60,8 @@ std::string material_display_name(const std::string& preset_name) return bare.empty() ? preset_name : bare; } -// Human-readable section title for a filament slot: the resolved preset name, -// falling back to the filament type, then to the generic "Material". +// Section title for a filament slot: the resolved preset name, then the filament type, then +// the generic "Material". wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPrintConfig& full) { if (slot < bundle->filament_presets.size()) { @@ -165,8 +163,7 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { - // Publish is always allowed: no settings selected means a publish with - // no settings override. + // Publish is always allowed: no settings selected means no settings override. EndModal(wxID_OK); }); dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); @@ -183,12 +180,11 @@ PublishSettingsDialog::~PublishSettingsDialog() {} void PublishSettingsDialog::build_option_model() { - // Structural / non-publishable keys, shared with the published-3MF overlay - // path (see libslic3r/PublishSettings.hpp). + // Structural / non-publishable keys, shared with the published-3MF overlay path. const std::set& denylist = publish_structural_keys(); - // Base keys already added in the print/printer sections. Printer rows share - // this set: a base key appears once (per-extruder "#N" variants collapse to - // the first occurrence - acceptable MVP; the per-extruder context is lost). + // Base keys already added in the print/printer sections. Printer rows share this set: + // per-extruder "#N" variants collapse to the first occurrence (acceptable MVP; the + // per-extruder context is lost in the UI). std::set added; PresetBundle* bundle = wxGetApp().preset_bundle; @@ -198,17 +194,17 @@ void PublishSettingsDialog::build_option_model() m_info_allsel = _L("All items selected..."); m_info_empty = _L("No matching items..."); - // Keep the tab order explicit: Section's enum order is Print, Printer, - // Material, while the dialog presents Printer, Filament, Process. + // Tab order differs from Section's enum order (Print, Printer, Material): the dialog + // presents Printer, Filament, Process. m_sections.reserve(3); const Section tab_order[] = {Section::Printer, Section::Material, Section::Print}; for (Section kind : tab_order) section_group_for(kind); bind_tab_events(); - // Shared per-option label/value computation; returns false when the option - // must be skipped (denylisted / unknown / empty label). value is the pure - // stringified value; unit is the translated sidetext (may be empty). + // Shared per-option label/value computation; returns false when the option must be skipped + // (denylisted / unknown / empty label). value is the stringified value; unit the translated + // sidetext (may be empty). auto option_text = [&denylist, &full](const std::string& opt_id, const std::string& pure_key, wxString& label, wxString& value, wxString& unit) -> bool { if (denylist.count(pure_key) > 0) @@ -224,9 +220,8 @@ void PublishSettingsDialog::build_option_model() return true; }; - // --- Phase 1: printer per-extruder retraction settings (displayed first, - // mirroring the sidebar's Printer group). The printer tab's - // "Extruder"/"Extruder N" pages carry the per-extruder retraction options. + // --- Phase 1: printer per-extruder retraction settings (first, mirroring the sidebar's + // Printer group), from the printer tab's "Extruder"/"Extruder N" pages. { size_t g = section_group_for(Section::Printer); category_index_for(_L("Extruder"), Section::Printer, "custom-gcode_extruder", g, 0); @@ -238,18 +233,17 @@ void PublishSettingsDialog::build_option_model() continue; const wxString page_title = Tab::translate_category(page->title(), tab->m_type); for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { - // Allowlist on the untranslated optgroup title; the "Retraction - // when switching material" group is intentionally skipped. + // Allowlist on the untranslated optgroup title; the "Retraction when + // switching material" group is intentionally skipped. if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") continue; const wxString subcategory = _(optgroup->title); for (const auto& opt : optgroup->opt_map()) { const std::string& opt_id = opt.first; const std::string& pure_key = opt.second.first; - // Per-extruder "#N" variants collapse to the first base key. The row stores - // the BASE key (whole-vector semantics on load: the size-guarded apply - // copies the author's full vector), while the "#0" opt_id is only used to - // display the first extruder's value. + // Per-extruder "#N" variants collapse to the first base key. The row + // stores the base key; GetPublishedKeys() later expands it back to one + // "#N" entry per extruder so the load side can apply per-extruder values. if (!added.insert(pure_key).second) continue; wxString label, value, unit; @@ -264,8 +258,8 @@ void PublishSettingsDialog::build_option_model() } } - // --- Phase 2: per-material sections synthesized from the filament tab's - // "Setting Overrides" page, under the Filament group. + // --- Phase 2: per-material sections synthesized from the filament tab's "Setting + // Overrides" page, under the Filament group. { size_t g = section_group_for(Section::Material); Tab* filament_tab = nullptr; @@ -283,17 +277,16 @@ void PublishSettingsDialog::build_option_model() } if (overrides_page != nullptr) { - // One section per filament slot: a 4-slot printer (e.g. 1 PLA + - // 3 PETG) shows 4 separate pages, each disambiguated internally by - // its colour chip and slot identity while displaying the bare name. + // One section per filament slot (a 4-slot printer shows 4 pages), each + // disambiguated by its colour chip and slot identity while showing the bare name. for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { const PublishMaterialIdentity identity = material_identity(slot, full); const wxString title = material_title(slot, bundle, full); const size_t category_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, slot, identity); - // Filament-publishing-v2 rows: the author may require a filament colour and/or - // a vendor-agnostic material type for this slot. They live in their own - // optgroup so they stay visually separated from the setting rows. + // Material requirement rows: an optional filament colour and/or a + // vendor-agnostic material type for this slot, in their own optgroup so they + // stay visually separated from the setting rows. { const size_t req_sub = subcategory_index_for(category_index, _L("Material"), "custom-gcode_filament"); std::string hex; @@ -309,18 +302,16 @@ void PublishSettingsDialog::build_option_model() RowKind::Type); } - // A material section must not repeat a key; the same key may - // appear in other material sections - that is intended. + // A material section must not repeat a key; the same key may appear in other + // material sections - that is intended. std::set material_added; for (const ConfigOptionsGroupShp& optgroup : overrides_page->m_optgroups) { - // Allowlist on the untranslated optgroup title; the - // "Ironing" group is intentionally skipped. + // Allowlist on the untranslated optgroup title; "Ironing" is skipped. if (optgroup->title != "Retraction" && optgroup->title != "Retraction when switching material") continue; for (const auto& opt : optgroup->opt_map()) { - // Row keys are base keys (no "#N"): the load side - // matches the material and uses the author's slot. + // Row keys are base keys; the load side applies them positionally. const std::string& opt_id = opt.first; std::string base = opt_id.substr(0, opt_id.find('#')); if (!material_added.insert(base).second) @@ -381,17 +372,15 @@ void PublishSettingsDialog::build_option_model() } } - // Pre-check the dirty (modified) settings and mark them bold. The base-key - // match covers all sections; collect_dirty_settings_keys already unions the - // prints, printers and filaments of the bundle. + // Pre-check the dirty (modified) settings and mark them bold (base-key match, across all + // sections; collect_dirty_settings_keys unions the prints, printers and filaments). std::set dirty_base; for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) { auto n = key.find('#'); dirty_base.insert(n == std::string::npos ? key : key.substr(0, n)); } for (Row& row : m_rows) { - // The Color/Type requirement rows are not "dirty overrides": they are never - // auto-checked by the dirty pre-check. + // The Color/Type requirement rows are not "dirty overrides": never auto-checked. if (row.kind != RowKind::Setting) continue; std::string base = row.key.substr(0, row.key.find('#')); @@ -402,8 +391,8 @@ void PublishSettingsDialog::build_option_model() } } - // Wire the "Full Publish" checkboxes: toggling one disables/enables the material's - // rows. Bind by index so the lambda stays valid even if the vector is reallocated later. + // Wire the "Full Publish" checkboxes: toggling one disables/enables the material's rows. + // Bind by index so the lambda stays valid even if the vector is reallocated later. for (size_t c = 0; c < m_categories.size(); ++c) if (m_categories[c].full_check != nullptr) m_categories[c].full_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_full_toggle(c); }); @@ -449,6 +438,7 @@ size_t PublishSettingsDialog::section_group_for(Section kind) section.icon_name = "process"; break; } + section.icon_bmp = ScalableBitmap(this, section.icon_name, 16); constexpr long tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | wxTR_FULL_ROW_HIGHLIGHT; @@ -466,7 +456,10 @@ size_t PublishSettingsDialog::section_group_for(Section kind) page_sizer->Add(section.page_host, 1, wxEXPAND | wxTOP, FromDIP(4)); section.page->SetSizer(page_sizer); - m_outer_tabs->AppendItem(section.title); + if (section.icon_bmp.bmp().IsOk()) + m_outer_tabs->AppendItem(section.title, section.icon_bmp.bmp()); + else + m_outer_tabs->AppendItem(section.title); m_outer_host_sizer->Add(section.page, 1, wxEXPAND); section.page->Hide(); m_sections.push_back(std::move(section)); @@ -610,7 +603,7 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); // The value is read-only text (incl. the Type row: the published type is the slot's - // normalized type, the author cannot pick a different one here). + // normalized type, not author-editable). current.value_label = new wxStaticText(category.scroll, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); current.value_label->SetFont(Label::Body_13); current.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); @@ -643,8 +636,7 @@ void PublishSettingsDialog::on_full_toggle(size_t category_index) void PublishSettingsDialog::set_row_bold(Row& row, bool bold) { - // Real set/clear: rebase on the dialog's body font so that clearing bold - // restores the exact original font (the old CheckList::SetBold was one-way). + // Rebase on the dialog's body font so clearing bold restores the exact original font. row.check->SetFont(bold ? Label::Body_13.Bold() : Label::Body_13); } @@ -718,12 +710,11 @@ void PublishSettingsDialog::apply_filter(const wxString& filter_text) Freeze(); wxString filter = filter_text.Lower(); - // Pseudo filters (menu only): show only checked ("::sel") or only - // unchecked ("::nonsel") rows. + // Pseudo filters (menu only): show only checked ("::sel") or only unchecked ("::nonsel"). const bool pseudo = (filter == "::sel" || filter == "::nonsel"); m_fb_sizer->Show(!pseudo); - // Update row matches first; page and optgroup visibility is applied below. + // Row matches are computed first; page and optgroup visibility is applied below. if (pseudo) { if (m_filter_ctrl->GetValue().Lower() != filter) { m_filter_ctrl->ChangeValue(filter); @@ -808,8 +799,7 @@ void PublishSettingsDialog::apply_visibility() void PublishSettingsDialog::select_all(bool value) { - // "All" does not auto-enable gated material sections; "None" leaves a gated - // row's preserved value untouched. + // "All" skips disabled (gated) rows; "None" leaves a gated row's preserved value. for (Row& row : m_rows) if (row.check->IsEnabled()) row.check->SetValue(value); @@ -829,19 +819,18 @@ bool PublishSettingsDialog::row_is_visible(const Row& row) const void PublishSettingsDialog::select_visible(bool value) { wxString filter = m_filter_ctrl->GetValue().Lower(); - // In a pseudo-filter view the rows being toggled would all disappear; - // drop the filter afterwards so the result stays visible. + // In a pseudo-filter view the rows being toggled would all disappear; drop the filter + // afterwards so the result stays visible. bool clear_pseudo = (!value && filter == "::nonsel") || (value && filter == "::sel"); - // Toggle the rows that are visible under the *current* filter. + // Toggle the rows visible under the *current* filter. for (Row& row : m_rows) if (row_is_visible(row)) row.check->SetValue(value); if (clear_pseudo) { - // Note: SetValue() may fire wxEVT_TEXT on some platforms, which - // re-enters apply_filter() - that is fine, the rows above were already - // toggled and the trailing call below is idempotent. + // Note: SetValue() may fire wxEVT_TEXT on some platforms, re-entering apply_filter() - + // that is fine; the rows above were already toggled and the trailing call is idempotent. m_filter_ctrl->ChangeValue(""); apply_filter(""); // resync visibility and the All/None bar } @@ -895,12 +884,31 @@ void PublishSettingsDialog::show_menu(wxMouseEvent& evt) std::vector PublishSettingsDialog::GetPublishedKeys() const { std::vector out; - // Process and printer sections both travel through published_keys (the load-side - // overlay applies process keys to the prints edited preset and the allowlisted - // printer keys to the printers edited preset). Material keys use a separate API. - for (const Row& row : m_rows) - if ((row.section == Section::Print || row.section == Section::Printer) && row.check->GetValue()) + // Process and printer sections both travel through published_keys (the load-side overlay + // applies process keys to the prints edited preset and the allowlisted printer keys to the + // printers edited preset); material keys use a separate API. + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + for (const Row& row : m_rows) { + if ((row.section != Section::Print && row.section != Section::Printer) || !row.check->GetValue()) + continue; + if (row.section == Section::Printer) { + // Printer rows store the base key (per-extruder "#N" variants collapsed during + // build). Publish every extruder element so the load side can apply per-extruder + // values even when the receiver has a different extruder count; a scalar printer + // key is published as-is. + const std::string base_key = row.key.substr(0, row.key.find('#')); + if (const ConfigOption* opt = full.option(base_key)) { + if (const auto* vec = dynamic_cast(opt)) { + for (size_t i = 0; i < vec->size(); ++i) + out.push_back(base_key + "#" + std::to_string(i)); + } else { + out.push_back(base_key); + } + } + } else { out.push_back(row.key); + } + } return out; } @@ -915,8 +923,15 @@ std::vector PublishSettingsDialog::GetPublishedM entry.filament_vendor = cat.filament_vendor; entry.filament_id = cat.filament_id; entry.slot = static_cast(cat.filament_slot); - // "Full Publish": the entire filament preset of the slot is embedded; type and color - // are implicitly published, and the per-key rows are disabled and their state is ignored. + // The author's preset id distinguishes exact variants that share filament_id + // ("Generic PLA" vs "Generic PLA Matte"), so the receiver can match precisely. + PresetBundle *bundle = wxGetApp().preset_bundle; + if (bundle != nullptr && cat.filament_slot < bundle->filament_presets.size()) { + if (const Preset *preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) + entry.setting_id = preset->setting_id; + } + // "Full Publish": the whole filament preset is embedded; type and colour are implicitly + // published, and the per-key rows are disabled / their state ignored. if (cat.full_check != nullptr && cat.full_check->GetValue()) { entry.full = true; entry.full_keys = full_keys_for_slot(); @@ -946,8 +961,7 @@ std::vector PublishSettingsDialog::GetPublishedM entry.keys.push_back(row.key); } } - // A material with only setting keys but none checked, or with nothing selected at all, - // carries no information for the writer. + // Nothing checked at all -> nothing to write. if (!entry.keys.empty() || entry.publish_type || entry.publish_color) out.push_back(std::move(entry)); } @@ -956,9 +970,9 @@ std::vector PublishSettingsDialog::GetPublishedM std::vector PublishSettingsDialog::full_keys_for_slot() const { - // The canonical filament preset keys, minus the structural keys the published overlay must + // The canonical filament preset keys minus the structural keys the published overlay must // never touch (inherits, compatibility, *_settings_id, ...), plus filament_colour (not a - // member of Preset::filament_options). The values travel in the exported config, masked to + // member of Preset::filament_options). Values travel in the exported config, masked to // this slot, and are applied on load onto the receiver's slot. const std::set& denylist = publish_structural_keys(); std::vector keys; @@ -971,7 +985,7 @@ std::vector PublishSettingsDialog::full_keys_for_slot() const void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) { - // Rescale toolbar bitmaps and icons; collapse chevrons are vector-drawn and repaint themselves. + // Rescale toolbar bitmaps and icons; collapse chevrons are vector-drawn and repaint. m_search.msw_rescale(); m_menu.msw_rescale(); m_filter_box->SetIcon(m_search.bmp()); @@ -1000,8 +1014,13 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) cat.list_sizer->Layout(); } - for (SectionGroup& section : m_sections) + for (size_t s = 0; s < m_sections.size(); ++s) { + SectionGroup& section = m_sections[s]; + section.icon_bmp.msw_rescale(); + if (section.icon_bmp.bmp().IsOk()) + m_outer_tabs->SetItemBitmap(s, section.icon_bmp.bmp()); section.tabs->Rescale(); + } // Refresh the per-row Color chips at the new DPI. for (Row& row : m_rows) { diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 70b1dc8a2d..74fc6a7077 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -28,25 +28,21 @@ struct PublishMaterialIdentity std::string id; }; -// Dialog that lets a model author select which settings get embedded in a 3MF. -// Settings are grouped into the same nested custom tab layout used by the -// Process settings: Printer, Filament, and Process outer tabs, with category or -// material tabs inside each section. Optgroups are ordinary grouped headers. -// Modified (dirty) settings are pre-checked and shown bold. On OK, the print -// rows become the "published_keys" list and the material rows become the -// per-material "published_material_keys". +// Dialog letting a model author select which settings get embedded in a 3MF. Nested tab layout +// mirroring the Process settings (Printer / Filament / Process outer tabs, category or material +// tabs inside each). Dirty settings are pre-checked and shown bold; on OK the print rows become +// "published_keys" and the material rows become "published_material_keys". class PublishSettingsDialog : public DPIDialog { public: PublishSettingsDialog(wxWindow* parent = nullptr); ~PublishSettingsDialog(); - // The selected print-section setting keys (in display order). Keys may - // contain '#'. + // The selected print/printer setting keys (in display order); printer keys carry a '#N' + // per-extruder suffix. std::vector GetPublishedKeys() const; - // The selected keys grouped per material: one entry per material section - // with at least one checked key. Keys are base keys (no "#N" suffix). + // The selected keys grouped per material section (base keys, no '#N' suffix). std::vector GetPublishedMaterialKeys() const; protected: @@ -56,9 +52,9 @@ private: // Which part of the settings the row/category came from. enum class Section { Print, Printer, Material }; - // One selectable setting row: a checkbox (setting name) plus a value label - // and a (optional) grey unit label. key is the full config key and may carry - // a "#N" variant suffix (print/printer rows); material rows carry the base key. + // One selectable setting row: a checkbox (setting name) plus a value label and an optional + // grey unit label. key is the full config key, possibly with a "#N" variant suffix + // (print/printer rows); material rows carry the base key. enum class RowKind { Setting, // a regular setting key Color, // material colour requirement (filament_colour) @@ -113,9 +109,9 @@ private: ScalableBitmap icon_bmp; // scalable bitmap for DPI changes wxStaticBitmap* icon{nullptr}; wxStaticBitmap* filament_color_chip{nullptr}; - wxStaticText* title_label{nullptr}; // material title (static text, Full Publish carries the label elsewhere) - // "Full Publish": serializing the entire filament preset of this slot. While checked, - // the slot's rows (incl. Color/Type) are disabled. + wxStaticText* title_label{nullptr}; // material title (static text; Full Publish carries the label elsewhere) + // "Full Publish": while checked, the whole slot preset is serialized and its rows + // (incl. Color/Type) are disabled. bool full{false}; wxCheckBox* full_check{nullptr}; // Material identity, only for Section::Material categories. @@ -134,6 +130,7 @@ private: wxString title; // _L("Printer") / _L("Filament") / _L("Process") Section kind{Section::Print}; // maps 1:1 to the display group std::string icon_name; // "printer" / "filament" / "process" + ScalableBitmap icon_bmp; // tab icon next to the title; rescaled on DPI change wxPanel* page{nullptr}; TabCtrl* tabs{nullptr}; wxPanel* page_host{nullptr}; diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index d9d6833a5a..34ff31183f 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -501,12 +501,10 @@ SCENARIO("Nozzle-group metadata .3mf round-trip", "[3mf][MultiNozzle]") { } } -// The "Publish" feature stores a published flag plus a JSON array of author-selected setting keys -// in model.model_info->metadata_items. This locks the serialization contract: both keys must survive -// a store_bbs_3mf -> load_bbs_3mf round-trip unchanged. (The full preset-preservation behavior — -// keeping the user's currently-selected presets and overlaying only the published keys onto them — -// is exercised headlessly in "Published 3MF overlays only the author-selected process keys onto the -// edited preset" in test_preset_bundle_loading.cpp.) +// Locks the serialization contract of the "Publish" metadata: the published flag and the +// published_keys JSON array in model.model_info->metadata_items must survive a store_bbs_3mf -> +// load_bbs_3mf round-trip unchanged. (The full preset-preservation behavior is exercised +// headlessly in test_preset_bundle_loading.cpp.) SCENARIO("Published 3MF round-trips the published flag and published_keys metadata", "[3mf]") { GIVEN("a model carrying published metadata") { Model model; @@ -518,8 +516,8 @@ SCENARIO("Published 3MF round-trips the published flag and published_keys metada model.model_info->metadata_items["published"] = "1"; model.model_info->metadata_items["published_keys"] = R"(["layer_height","wall_thickness"])"; - // store_bbs_3mf stages Metadata/project_settings.config through the model's backup path; - // point it at a writable temp dir (the default lives under a read-only root in CI). + // store_bbs_3mf stages project_settings.config through the model's backup path; point + // it at a writable temp dir (the default lives under a read-only root in CI). ScopedTemporaryDir backup_dir("orca_pub"); model.set_backup_path(backup_dir.string()); @@ -564,8 +562,8 @@ SCENARIO("Published 3MF round-trips the published flag and published_keys metada } } -// A project saved without the Publish metadata (i.e. a normal 3MF) must load identically: the -// loader must not fabricate a "published" flag or published_keys for files that never carried them. +// A normal 3MF (no Publish metadata) must load identically: the loader must not fabricate a +// "published" flag or published_keys for files that never carried them. SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { GIVEN("a model without any published metadata") { Model model; @@ -610,10 +608,8 @@ SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { } } -// The "Publish" feature can also store material-qualified setting keys, one entry per material -// the author uses, in model.model_info->metadata_items. This locks the serialization contract -// for that entry list: the JSON must survive a store_bbs_3mf -> load_bbs_3mf round-trip -// verbatim, exactly like the plain published_keys array. +// Locks the serialization contract of the published_material_keys metadata: the per-entry JSON +// must survive a store_bbs_3mf -> load_bbs_3mf round-trip verbatim, exactly like published_keys. SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf]") { GIVEN("a model carrying published material keys metadata") { Model model; @@ -658,8 +654,7 @@ SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); // The value must parse back to one material entry carrying the nested identity - // object, the author slot ordinal and the key list, so the loader can match it - // to the receiver's filaments. + // object, the author slot ordinal and the key list. nlohmann::json entries = nlohmann::json::parse(material_keys_json); REQUIRE(entries.is_array()); REQUIRE(entries.size() == 1); @@ -689,19 +684,19 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded const std::vector published_keys = { "layer_height", "retraction_length" }; const std::vector material_keys = { - { "PLA", "Generic", "GFL99", 0, { "filament_retraction_length" } } + { "PLA", "Generic", "GFL99", "", 0, { "filament_retraction_length" } } }; DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); - // Filtered config must contain the published keys and identity keys + // Filtered config keeps the published and identity keys... REQUIRE(filtered_cfg.option("layer_height") != nullptr); REQUIRE(filtered_cfg.option("retraction_length") != nullptr); REQUIRE(filtered_cfg.option("filament_colour") != nullptr); REQUIRE(filtered_cfg.option("filament_type") != nullptr); REQUIRE(filtered_cfg.option("wipe_tower_x") != nullptr); - // Non-published settings should NOT be in filtered_cfg + // ...and drops everything else. REQUIRE(filtered_cfg.option("sparse_infill_density") == nullptr); REQUIRE(filtered_cfg.option("machine_start_gcode") == nullptr); @@ -716,7 +711,7 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded ScopedTemporaryFile temp(".3mf"); const std::string test_file = temp.string(); - // Create a fake project preset to verify it gets omitted with MinimalPublished + // Create a fake project preset to verify MinimalPublished omits it. Preset preset(Preset::TYPE_PRINT, "TestPrintPreset"); preset.config = full_cfg; std::vector project_presets = { &preset }; @@ -753,9 +748,9 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded } } -// Filament-publishing v2: a "full publish" entry carries the whole slot's key list. Its vector -// options keep only the author's slot value; the other slots are masked to their defaults so a -// slot-1 full publish does not leak slot 0's data into the file. +// A "full publish" entry carries the whole slot's key list: its vector options keep only the +// author's slot value, the other slots are masked to their defaults so a slot-1 full publish +// does not leak slot 0's data into the file. SCENARIO("Full-publish entries filter the whole slot and mask the other slots", "[3mf]") { GIVEN("a full print configuration with two filament slots") { DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); @@ -787,9 +782,9 @@ SCENARIO("Full-publish entries filter the whole slot and mask the other slots", } } -// Filament-publishing v2: the extended per-entry fields (full dump list, published type and -// colour) travel inside the published_material_keys metadata and round-trip unchanged. -SCENARIO("Published 3MF round-trips the filament-publishing-v2 material metadata", "[3mf]") { +// The extended per-entry fields (full dump list, published type and colour) travel inside the +// published_material_keys metadata and round-trip unchanged. +SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { GIVEN("a model carrying extended published material keys metadata") { Model model; std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; @@ -797,7 +792,7 @@ SCENARIO("Published 3MF round-trips the filament-publishing-v2 material metadata model.add_default_instances(); const std::string material_keys_json = - R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99","setting_id":"RFs9eCKYOMUSmvZf"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; model.model_info = std::make_shared(); model.model_info->metadata_items["published_material_keys"] = material_keys_json; @@ -832,7 +827,7 @@ SCENARIO("Published 3MF round-trips the filament-publishing-v2 material metadata REQUIRE(dst_model.model_info != nullptr); REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); - // The value must parse back with every filament-publishing-v2 field intact. + // The value must parse back with every extended field intact. nlohmann::json entries = nlohmann::json::parse(material_keys_json); REQUIRE(entries.is_array()); REQUIRE(entries.size() == 1); diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 8716af417d..3a9ff77be9 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -549,36 +549,26 @@ TEST_CASE("A printer specific filament supersedes the generic library filament w } // A "published" 3MF keeps the user's currently-selected presets and overlays only the -// author-selected process keys onto the edited preset. Mirrors the GUI load path -// (src/slic3r/GUI/Plater.cpp): Preset::normalize before load_config_model, then the -// published overlay in PresetBundle::load_config_file_config. +// author-selected process keys onto the edited preset (mirrors the GUI load path: normalize +// before load_config_model, then the overlay in load_config_file_config). TEST_CASE("Published 3MF overlays only the author-selected process keys onto the edited preset", "[Preset][Bundle][Published]") { // The file config the GUI builds from a .3mf's project settings. auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); // The loader derives the filament count from filament_colour and throws when it is - // empty ("Invalid configuration file"); a 3mf always carries it. + // empty; a 3mf always carries it. config.opt("filament_colour")->values = { "#FF0000" }; - // Process scalar key. - config.opt_float("layer_height") = 0.28; - // Process vector key, size 2 to match the edited preset's resized vector. - config.opt("wiping_volumes_extruders")->values = { 140., 150. }; - // Process vector key, size 2: deliberately mismatched against the edited preset. - config.opt("post_process")->values = { "script-a", "script-b" }; - // A filament key: published files may still carry legacy filament keys. - config.opt("nozzle_temperature")->values = { 220 }; - // A structural (denylisted) key: must be silently ignored even if a hand-crafted - // file lists it as published. full_print_config() omits the *_settings_id keys (they - // have no static counterpart), while a real 3mf project config carries it, so create - // it explicitly. + config.opt_float("layer_height") = 0.28; // process scalar + config.opt("wiping_volumes_extruders")->values = { 140., 150. }; // matching-size vector + config.opt("post_process")->values = { "script-a", "script-b" }; // mismatched vector + config.opt("nozzle_temperature")->values = { 220 }; // filament key (not applied anywhere) + // Structural (denylisted) key: must be silently ignored. full_print_config() omits the + // *_settings_id keys, so create one explicitly. config.opt_string("print_settings_id", true) = "file process"; - // Project-level filament/purge data: must NOT cross over in published mode. - config.opt("flush_multiplier")->values = { 2., 2. }; - // A project-level option, to pin the project_config.apply_only() invariant. - config.opt("wipe_tower_x")->values = { 100. }; - // The author's bed type must NOT cross over either: the receiver keeps its own. - config.option("curr_bed_type")->setInt(BedType::btPC); + config.opt("flush_multiplier")->values = { 2., 2. }; // must NOT cross over + config.opt("wipe_tower_x")->values = { 100. }; // plate geometry, does cross over + config.option("curr_bed_type")->setInt(BedType::btPC); // must NOT cross over return config; }; @@ -595,14 +585,14 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values = { 10., 20. }; bundle.prints.get_edited_preset().config.opt("post_process")->values = { "existing-script" }; bundle.prints.get_edited_preset().config.opt_string("print_settings_id") = "user process"; - // Capture the ctor-seeded project_config values; the assertions below check that the - // published load leaves them untouched rather than hardcoding the defaults. + // Capture the ctor-seeded project_config values so the assertions below check the load + // leaves them untouched rather than hardcoding the defaults. const std::vector seed_filament_colour = bundle.project_config.opt("filament_colour")->values; const std::vector seed_flush_multiplier = bundle.project_config.opt("flush_multiplier")->values; const int seed_bed_type = bundle.project_config.option("curr_bed_type")->getInt(); DynamicPrintConfig config = make_file_config(); - // The GUI normalizes the config before load; do the same so only the production path is exercised. + // The GUI normalizes the config before load; mirror that so only the production path runs. Preset::normalize(config); PublishedConfig pub; @@ -610,48 +600,36 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the pub.published_keys = published_keys; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // a) The process scalar is overlaid onto the edited preset. + // a) Process scalar overlaid; matching-size vector applied, mismatched one lands in + // skipped_keys; applied keys are not reported. CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); - - // b) A matching-size process vector is applied; a size-mismatched one is neither applied - // nor reported as skipped by accident — it lands in skipped_keys. CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 140., 150. }); CHECK(bundle.prints.get_edited_preset().config.opt("post_process")->values == std::vector{ "existing-script" }); CHECK(contains_key(pub.skipped_keys, "post_process")); - - // c) A filament key is never applied anywhere and is reported as skipped (warning). - CHECK(bundle.prints.get_edited_preset().config.option("nozzle_temperature") == nullptr); - CHECK(contains_key(pub.skipped_keys, "nozzle_temperature")); - - // d) A structural key is silently ignored: neither applied nor reported as skipped. - CHECK(bundle.prints.get_edited_preset().config.opt_string("print_settings_id") == "user process"); - CHECK_FALSE(contains_key(pub.skipped_keys, "print_settings_id")); - - // Applied keys are not reported as skipped. CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); - // e) project_config.apply_only() still runs, but in published mode only the plate/bed - // geometry crosses: the file's filament/purge data must NOT port to the receiver. - // Filament colors do not port; project_config keeps its ctor-seeded values. - CHECK(bundle.project_config.opt("filament_colour")->values != std::vector{ "#FF0000" }); + // b) A filament key is never applied anywhere and is reported as skipped. + CHECK(bundle.prints.get_edited_preset().config.option("nozzle_temperature") == nullptr); + CHECK(contains_key(pub.skipped_keys, "nozzle_temperature")); + + // c) A structural key is silently ignored: neither applied nor reported as skipped. + CHECK(bundle.prints.get_edited_preset().config.opt_string("print_settings_id") == "user process"); + CHECK_FALSE(contains_key(pub.skipped_keys, "print_settings_id")); + + // d) Only plate/bed geometry crosses in published mode: filament/purge data and bed type + // stay at the ctor seeds. CHECK(bundle.project_config.opt("filament_colour")->values == seed_filament_colour); - // Purge data does not port either, and update_multi_material_filament_presets() cannot - // resurrect it (flush_multiplier stays at the ctor seed). CHECK(bundle.project_config.opt("flush_multiplier")->values == seed_flush_multiplier); - // The author's bed type does not cross over: the receiver keeps its own. CHECK(bundle.project_config.option("curr_bed_type")->getInt() == seed_bed_type); - // Plate/bed geometry still crosses. CHECK(bundle.project_config.opt("wipe_tower_x")->values == std::vector{ 100. }); - // The published path keeps the user's currently-selected presets: the edited process - // preset is the same preset as before the load. + // e) The published path keeps the user's currently-selected presets: same preset, same size. CHECK(bundle.prints.get_edited_preset().name == pre_load_name); CHECK(bundle.prints.size() == pre_load_size); - // f) Non-published control: with published=false the overlay is disabled. The file's - // presets are loaded and selected instead (the user's preset is not kept) and no - // skipped_keys are produced. + // f) Non-published control: the overlay is disabled, the file's presets are imported + // instead, and no skipped_keys are produced. PresetBundle control_bundle; const size_t control_pre_size = control_bundle.prints.size(); PublishedConfig control_pub; @@ -663,26 +641,22 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the CHECK(control_pub.skipped_keys.empty()); CHECK(control_bundle.prints.size() > control_pre_size); - // The file's layer_height reached the edited preset through the normal preset import, - // not through the published overlay. + // The file's layer_height reached the edited preset via the normal import, not the overlay. CHECK_THAT(control_bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); } -// The published printer overlay is restricted to the publishable retraction/z-hop allowlist -// (publishable_printer_keys). Matching-size retraction vectors apply; mismatched vectors are -// reported as skipped; any other printer-class key (e.g. machine_start_gcode) is -// contract-excluded: never applied and never reported. +// The published printer overlay is restricted to the publishable retraction/z-hop allowlist: +// matching-size vectors apply, mismatched vectors are reported as skipped, and any other +// printer-class key (e.g. machine_start_gcode) is contract-excluded (never applied, never +// reported). TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys onto the edited printer preset", "[Preset][Bundle][Published]") { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); config.opt("filament_colour")->values = { "#FF0000" }; Preset::normalize(config); - // Matching size (the receiver's default printer has one extruder). - config.opt("retraction_length")->values = { 1.4 }; - // Size 2: mismatched against the single-extruder receiver. - config.opt("retraction_speed")->values = { 45., 55. }; - // Printer-class but outside the allowlist: must be silently contract-excluded. - config.opt_string("machine_start_gcode") = "G28 ; from file"; + config.opt("retraction_length")->values = { 1.4 }; // matching size (1 extruder) + config.opt("retraction_speed")->values = { 45., 55. }; // size 2: mismatched + config.opt_string("machine_start_gcode") = "G28 ; from file"; // outside the allowlist PresetBundle bundle; bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; @@ -693,9 +667,8 @@ TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys pub.published_keys = { "retraction_length", "retraction_speed", "machine_start_gcode" }; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // Matching-size retraction vector applied to the edited printer preset. + // Matching-size retraction vector applied; mismatched vector reported as skipped. CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 1.4 }); - // Mismatched vector not applied and reported as skipped. CHECK(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values == std::vector{ 30. }); CHECK(contains_key(pub.skipped_keys, "retraction_speed")); // Contract-excluded printer key: silently ignored, absent from skipped_keys. @@ -703,10 +676,10 @@ TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys CHECK_FALSE(contains_key(pub.skipped_keys, "machine_start_gcode")); } -// A published 3MF can carry material-qualified keys; on load they are applied to the -// receiver's filament presets whose material identity matches the author's (filament_id when -// both sides have one, filament_type + vendor fallback otherwise). -TEST_CASE("Published 3MF applies material retraction keys onto the receiver's matching filament presets", "[Preset][Bundle][Published]") +// A published 3MF carries per-slot material keys; on load they are applied positionally to the +// receiver's slot N (a key-only entry has no type gate), written onto the slot's stored preset +// in place. +TEST_CASE("Published 3MF applies positional material keys onto the receiver's material presets", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -715,7 +688,6 @@ TEST_CASE("Published 3MF applies material retraction keys onto the receiver's ma // Keep the multi-extruder consistency validation happy for a 2-slot config. config.opt("filament_self_index")->values = { 1, 2 }; config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; - // Author per-slot material identity (filament_ids feeds the loader's local copy). config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; config.opt("filament_type")->values = { "PLA", "PETG" }; config.opt("filament_vendor")->values = { "Generic", "Generic" }; @@ -729,13 +701,10 @@ TEST_CASE("Published 3MF applies material retraction keys onto the receiver's ma }; PresetBundle bundle; - // Receiver materials with matching stable ids. Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.filament_id = "GFL99"; pla.config.opt_string("filament_type", 0u) = "PLA"; pla.config.opt_string("filament_vendor", 0u) = "Generic"; - // In-memory preset configs carry the per-filament retraction keys as nullable options - // (the type real filament presets hold), so access them through the nullable type. pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; pla.config.opt("filament_settings_id")->values = { "receiver-pla" }; Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); @@ -743,52 +712,46 @@ TEST_CASE("Published 3MF applies material retraction keys onto the receiver's ma petg.config.opt_string("filament_type", 0u) = "PETG"; petg.config.opt_string("filament_vendor", 0u) = "Generic"; petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // The z-hop key must exist on the receiver preset for the overlay to apply into it. petg.config.opt("filament_z_hop", true)->values = { 0.1 }; bundle.filament_presets = { "My PLA", "My PETG" }; PublishedMaterialEntry pla_entry; - pla_entry.filament_type = "PLA"; - pla_entry.filament_vendor = "Generic"; - pla_entry.filament_id = "GFL99"; - pla_entry.slot = 0; // the author's PLA slot - pla_entry.keys = { "filament_retraction_length", "filament_settings_id" }; + pla_entry.filament_id = "GFL99"; + pla_entry.slot = 0; // the author's PLA slot + pla_entry.keys = { "filament_retraction_length", "filament_settings_id" }; PublishedMaterialEntry petg_entry; - petg_entry.filament_type = "PETG"; - petg_entry.filament_vendor = "Generic"; - petg_entry.filament_id = "GFT99"; - petg_entry.slot = 1; // the author's PETG slot - petg_entry.keys = { "filament_retraction_length", "filament_z_hop" }; - // A material that does not exist on the author's side: whole entry skipped, no reporting. - PublishedMaterialEntry abs_entry; - abs_entry.filament_type = "ABS"; - abs_entry.filament_id = "GFX99"; - abs_entry.keys = { "filament_retraction_length" }; + petg_entry.filament_id = "GFT99"; + petg_entry.slot = 1; // the author's PETG slot + petg_entry.keys = { "filament_retraction_length", "filament_z_hop" }; + // A slot-less entry (no slot field, only possible in hand-crafted files): silently skipped. + PublishedMaterialEntry noslot_entry; + noslot_entry.filament_type = "ABS"; + noslot_entry.keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; - pub.material_keys = { pla_entry, petg_entry, abs_entry }; + pub.material_keys = { pla_entry, petg_entry, noslot_entry }; DynamicPrintConfig config = make_file_config(); Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // Per-slot scalar copy: the author's slot value lands in the matching receiver preset. + // The author's slot values are written onto the receiver's stored presets in place. CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_z_hop")->values == std::vector{ 0.3 }); // Structural keys inside a material entry are silently ignored: the receiver's own - // filament_settings_id is left untouched and nothing is reported for it. + // filament_settings_id is untouched and nothing is reported for it. CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_settings_id")->values == std::vector{ "receiver-pla" }); CHECK_FALSE(contains_key(pub.skipped_keys, "material:GFL99 (filament_settings_id)")); - // Everything applied; the unknown material entry produced no skipped entry. + // Everything applied; the slot-less entry produced no skipped entry. CHECK(pub.skipped_keys.empty()); } -// Filament-publishing v2: a "full publish" slot serializes the entire filament of the slot. On -// load the slot is matched positionally against the published (curated, vendor-agnostic) type: -// a matching receiver type leaves the slot untouched, a mismatched type replaces it with the -// first same-type visible preset (applying the author's full values on top), and a slot whose -// type cannot be found in the receiver's library falls back to the author's values in-memory. +// A "full publish" slot serializes the whole filament. On load the slot is matched positionally +// against the published type: a matching receiver type still receives the author's full values +// (like a normal save/load of the filament), a mismatched type replaces it with the first +// same-type visible preset (applying the author's full values on top), and a type not in the +// receiver's library falls back to the first available visible preset. TEST_CASE("Published 3MF full-published slots replace or ignore the receiver material by type", "[Preset][Bundle][Published]") { auto make_file_config = [] { @@ -815,7 +778,7 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat return entry; }; - SECTION("type match leaves a full-published slot untouched") { + SECTION("type match applies the full dump onto the receiver's material") { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.config.opt_string("filament_type", 0u) = "PLA"; @@ -832,8 +795,9 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The receiver keeps its own material and its own values: the full dump is ignored. - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + // The type matches, but a full publish behaves like a normal save: the author's values + // are written onto the slot's preset wholesale. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); CHECK(pub.skipped_keys.empty()); CHECK(pub.material_replacements.empty()); } @@ -855,47 +819,306 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - CHECK(bundle.filament_presets.size() == 1); + REQUIRE(bundle.filament_presets.size() == 1); + // The slot is re-pointed at the library's ABS preset and the author's full values are + // written onto it in place (the original 0.3 is overwritten); the receiver's own + // material is untouched. CHECK(bundle.filament_presets[0] == "My ABS"); - // The author's slot-0 full values were applied onto the replacement. - CHECK(bundle.filaments.find_preset("My ABS")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My ABS", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); + // The entry carries no identity fields, so the pick cannot be judged as a substitute. + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> My ABS"); } - SECTION("no same-type match creates a temporary project-embedded custom preset") { + SECTION("no same-type match falls back to the first available visible preset") { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.config.opt_string("filament_type", 0u) = "PLA"; pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PLA"); + other.config.opt_string("filament_type", 0u) = "PLA"; + other.config.opt("filament_retraction_length", true)->values = { 0.7 }; bundle.filament_presets = { "My PLA" }; + PublishedMaterialEntry full = make_full_abs_entry(); + // The dump carries the identity too, so the fallback preset must take the author's type + // and vendor. + full.full_keys = { "filament_retraction_length", "filament_type", "filament_vendor" }; + PublishedConfig pub; pub.published = true; - pub.material_keys = { make_full_abs_entry() }; + pub.material_keys = { full }; DynamicPrintConfig config = make_file_config(); + // The author's slot 0 really is ABS. + config.opt("filament_type")->values = { "ABS", "PETG" }; Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // No ABS in the library: a temporary embedded preset is created and selected. - CHECK(bundle.filament_presets[0] == "ABS (Published)"); - Preset *created = bundle.filaments.find_preset("ABS (Published)"); - REQUIRE(created != nullptr); - CHECK(created->is_project_embedded); - CHECK(created->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - // The original user preset remains untouched. Re-fetch by name: load_preset's deque - // insertion relocated the presets, so the pre-load `pla` reference points at the - // newly created "ABS (Published)" slot. + // No ABS in the library: the slot falls back to the first available visible preset (the + // unused "Other PLA") and the author's full values are written onto it, type and vendor + // included. The receiver's own material is untouched. + CHECK(bundle.filament_presets[0] == "Other PLA"); + Preset *fallback = bundle.filaments.find_preset("Other PLA", false, true); + REQUIRE(fallback != nullptr); + CHECK(fallback->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(fallback->config.opt_string("filament_type", 0u) == "ABS"); + CHECK(fallback->config.opt_string("filament_vendor", 0u) == "Generic"); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt_string("filament_type", 0u) == "PLA"); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> Other PLA (substitute: no ABS available)"); } } -// Filament-publishing v2: a partially-published slot can carry a curated type and/or colour. -// The colour is applied regardless of the type match; a type mismatch with no same-type -// replacement keeps the receiver's material and reports the slot's keys as skipped. The -// receiver's slot count grows only as far as the highest slot with published content. +// Regression for the author's published material being skipped by a type-only replacement +// search: the slot must prefer the exact published material (filament_id) over the first other +// same-type preset, even when the exact preset is already referenced by another slot. +TEST_CASE("Published 3MF replaces a mismatched slot with the exact published material when available", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + // The receiver's second slot already uses the exact published material. + Preset &generic_pla = add_inmemory_preset(bundle.filaments, "Generic PLA"); + generic_pla.filament_id = "GFL99"; + generic_pla.config.opt_string("filament_type", 0u) = "PLA"; + generic_pla.config.opt_string("filament_vendor", 0u) = "Generic"; + generic_pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + // An unrelated PLA, unreferenced: a type-only search picks it because Generic PLA is + // referenced by slot 1. + Preset &bambu = add_inmemory_preset(bundle.filaments, "Bambu PLA Basic"); + bambu.filament_id = "GFB00"; + bambu.config.opt_string("filament_type", 0u) = "PLA"; + bambu.config.opt_string("filament_vendor", 0u) = "Bambu Lab"; + bambu.config.opt("filament_retraction_length", true)->values = { 0.4 }; + bundle.filament_presets = { "My PETG", "Generic PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "GFL99"; + entry.filament_vendor = "Generic"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The exact published material (id GFL99) wins over the unreferenced type-only preset. + CHECK(bundle.filament_presets[0] == "Generic PLA"); + CHECK(bundle.filament_presets[1] == "Generic PLA"); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // The receiver's own material is untouched; the unrelated PLA too. + CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); + CHECK(bundle.filaments.find_preset("Bambu PLA Basic", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.4 }); + // Accepted mutate tradeoff: the shared exact-material preset was mutated, so slot 1 also + // carries the author's values (the leak is documented, not accidental). + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // An exact-material pick is reported without a substitute qualifier. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA"); + CHECK(pub.skipped_keys.empty()); +} + +// The replacement search prefers the published identity: exact filament_id, then vendor+type, +// then type only (collection order decides equal scores; the pick is reported as a substitute +// when it is not the exact published material). +TEST_CASE("Published 3MF prefers the published material identity when replacing a slot", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "GFL99"; + entry.filament_vendor = "Generic"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + auto add_pla = [](PresetBundle &bundle, const char *name, const char *id, const char *vendor) { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.filament_id = id; + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt_string("filament_vendor", 0u) = vendor; + preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; + return &preset; + }; + auto load = [&](PresetBundle &bundle, PublishedConfig &pub) { + PublishedMaterialEntry entry = make_entry(); + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + }; + + SECTION("exact filament_id beats collection order") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + // "Bambu PLA Basic" sorts before "Zebra PLA"; only the latter carries the published id. + add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); + add_pla(bundle, "Zebra PLA", "GFL99", "Generic"); + bundle.filament_presets = { "My PETG" }; + + PublishedConfig pub; + load(bundle, pub); + CHECK(bundle.filament_presets[0] == "Zebra PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Zebra PLA"); + } + + SECTION("vendor and type beat a type-only preset, reported as a substitute") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); + add_pla(bundle, "Zebra PLA", "ZZZ99", "Generic"); // same vendor+type, different id + bundle.filament_presets = { "My PETG" }; + + PublishedConfig pub; + load(bundle, pub); + CHECK(bundle.filament_presets[0] == "Zebra PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Zebra PLA (substitute: no exact material match)"); + } + + SECTION("type-only candidates keep collection order and are reported as substitutes") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); + add_pla(bundle, "Zebra PLA", "ZZZ99", "Acme"); // no identity match at all + bundle.filament_presets = { "My PETG" }; + + PublishedConfig pub; + load(bundle, pub); + CHECK(bundle.filament_presets[0] == "Bambu PLA Basic"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Bambu PLA Basic (substitute: no exact material match)"); + } +} + +// "Generic PLA" and "Generic PLA Matte" share their inherited filament_id (OGFL99), so the +// exact variant can only be matched via the preset setting_id carried in the published file. +TEST_CASE("Published 3MF matches the exact published variant via setting_id", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "OGFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto add_pla = [](PresetBundle &bundle, const char *name, const char *setting_id) { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.setting_id = setting_id; + preset.filament_id = "OGFL99"; // shared by all Generic PLA variants + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt_string("filament_vendor", 0u) = "Generic"; + preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; + return &preset; + }; + auto load = [&](PresetBundle &bundle, PublishedConfig &pub, const std::string &setting_id) { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "OGFL99"; + entry.filament_vendor = "Generic"; + entry.setting_id = setting_id; + entry.full_keys = { "filament_retraction_length" }; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + }; + + SECTION("the published variant wins over its same-id sibling") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Generic PLA Matte", "RFs9eCKYOMUSmvZf"); + bundle.filament_presets = { "My PETG" }; + + PublishedConfig pub; + load(bundle, pub, "RFs9eCKYOMUSmvZf"); // the author published "Generic PLA Matte" + CHECK(bundle.filament_presets[0] == "Generic PLA Matte"); + CHECK(bundle.filaments.find_preset("Generic PLA Matte", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA Matte"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("without a setting_id the same-id siblings fall back to collection order") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Generic PLA Matte", "RFs9eCKYOMUSmvZf"); + bundle.filament_presets = { "My PETG" }; + + PublishedConfig pub; + load(bundle, pub, ""); // legacy file without the field + CHECK(bundle.filament_presets[0] == "Generic PLA"); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(pub.skipped_keys.empty()); + } +} + +// A partially-published slot can carry a curated type and/or colour. The colour is applied +// regardless of the type match; a type mismatch with no same-type replacement keeps the +// receiver's material and reports the slot's keys as skipped. The receiver's slot count grows +// only as far as the highest slot with published content. TEST_CASE("Published 3MF partial slots apply colour and gate keys by the published type", "[Preset][Bundle][Published]") { auto make_file_config = [] { @@ -934,9 +1157,11 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // Type matched: keys applied, colour applied. - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // Type matched: keys and colour applied onto the receiver's preset in place. + Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(pla_preset != nullptr); + CHECK(pla_preset->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(pla_preset->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(pub.skipped_keys.empty()); CHECK(pub.material_replacements.empty()); } @@ -964,10 +1189,13 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // Colour still applies (type-independent); the material is kept and the keys skipped. + // The slot keeps the receiver's material: the colour applies in place, the keys are + // skipped. CHECK(bundle.filament_presets[0] == "My PLA"); - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(pla_preset != nullptr); + CHECK(pla_preset->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(pla_preset->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); CHECK(pub.material_replacements.empty()); } @@ -997,15 +1225,18 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The slot list was grown so author slot 1 has a material, automatically assigning the PETG preset. + // The slot list was grown so author slot 1 has a material (the PETG preset), which + // then receives the author's values in place. REQUIRE(bundle.filament_presets.size() == 2); CHECK(bundle.filament_presets[1] == "My PETG"); + CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); } } -// The receiver's slot list grows only as far as the highest author slot that carries published -// content: a 4-filament file whose author published nothing (or only a low slot) must not pull -// filler materials into the receiver's setup, and the receiver never grows to the file's count. +// The receiver's slot list grows only as far as the highest published slot: a file whose author +// published nothing (or only a low slot) must not pull filler materials into the receiver's +// setup, and the receiver never grows to the file's count. TEST_CASE("Published 3MF grows the receiver's slots only as far as the published slots", "[Preset][Bundle][Published]") { auto make_file_config = [] { @@ -1066,18 +1297,16 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); CHECK(bundle.filament_presets.size() == 1); - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // The published colour lands on the slot's preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); } - // Slot 3 published: the receiver grows to 4 so the published slot exists. The unpublished - // filler slots repeat the receiver's last preset ("Add one filament" behaviour); the - // published slot gets a visible preset not used by another slot (with a single-preset - // library it falls back to the receiver's last preset, aliasing being unavoidable). + // Slot 3 published: the receiver grows to 4 so the published slot exists. Unpublished + // filler slots repeat the receiver's last preset ("Add one filament" behaviour). { PresetBundle bundle; add_pla_preset(bundle); bundle.filament_presets = { "My PLA" }; - const std::string filler = bundle.filaments.first_visible().name; PublishedConfig pub; pub.published = true; @@ -1089,9 +1318,12 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published REQUIRE(bundle.filament_presets.size() == 4); CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "My PLA"); - CHECK(bundle.filament_presets[3] == filler); - // The project-level per-slot vectors were grown and seeded like "Add one filament": - // fillers take their preset's colour, the published slot its published colour. + // Only "My PLA" exists in the library, so the published slot keeps the aliasing and the + // colour is written onto the shared preset (every slot references it). + CHECK(bundle.filament_presets[3] == "My PLA"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // The project-level per-slot vectors were grown and seeded: fillers take their preset's + // colour, the published slot its published colour. CHECK(bundle.project_config.opt("filament_colour")->values.size() == 4); CHECK(bundle.project_config.opt("filament_colour")->values[1] == "#123456"); CHECK(bundle.project_config.opt("filament_colour")->values[3] == "#ABCDEF"); @@ -1119,11 +1351,9 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published } } -// The published overlay mutates stored filament presets in place per slot, so a slot carrying -// published content must never share its stored preset with another slot: its colour/keys -// would leak into the sibling slot - and, with "repeat the last preset" growth, into the -// receiver's own first slot. Regression for the slot-aliasing hazard. -TEST_CASE("Published 3MF gives grown published slots a distinct preset so values never leak", "[Preset][Bundle][Published]") +// A published slot is seeded from an unused library preset and the values are written onto it +// in place, so the receiver's own material (slot 0) is never overwritten. +TEST_CASE("Published 3MF seeds published slots from unused presets and mutates them in place", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -1137,10 +1367,9 @@ TEST_CASE("Published 3MF gives grown published slots a distinct preset so values return config; }; - // The receiver has one slot of its own material plus one more preset in the library; the - // author publishes only slot 4 (Red). With naive repeat-last growth the new slot would - // reference the receiver's own preset and the published red would recolor it; the grown - // slot must point at a distinct preset. + // Receiver with its own material plus one more library preset; author publishes only slot 4 + // (Red). The grown slot is seeded from the unused library preset, so the published red + // recolors that preset in place and never the receiver's own material. PresetBundle bundle; Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); mine.config.opt_string("filament_type", 0u) = "PLA"; @@ -1165,9 +1394,9 @@ TEST_CASE("Published 3MF gives grown published slots a distinct preset so values // Unpublished filler slots repeat the receiver's last preset ("Add one filament"). CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "My PLA"); - // The published slot references the unused library preset, not the receiver's own... + // The published slot was seeded from the unused library preset; the published colour was + // written onto it in place, never onto the receiver's own material. CHECK(bundle.filament_presets[3] == "Other PLA"); - // ...so the published colour landed there and never recoloured the receiver's material. CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#123456" }); CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); // The project-level colours are sized and seeded for every grown slot. @@ -1180,9 +1409,9 @@ TEST_CASE("Published 3MF gives grown published slots a distinct preset so values } // The GUI displays the edited preset, a snapshot of the selected collection preset taken at -// selection time. The published overlay modifies the collection presets in place, so the load -// must re-select the first slot's filament (mirroring a normal project load) for the applied -// colour/type/keys - and slot replacements - to surface in the GUI. +// selection time. Since the overlay mutates the collection presets in place, the load must +// re-select the first slot's filament so the applied values - and slot replacements - surface +// in the GUI. TEST_CASE("Published 3MF refreshes the edited preset so the applied material values surface", "[Preset][Bundle][Published]") { auto make_file_config = [] { @@ -1226,8 +1455,11 @@ TEST_CASE("Published 3MF refreshes the edited preset so the applied material val bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); const Preset &edited = bundle.filaments.get_edited_preset(); + // The slot's preset was mutated in place; the edited preset displays the applied values. + CHECK(edited.name == "My PLA"); CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(pub.skipped_keys.empty()); } @@ -1261,203 +1493,15 @@ TEST_CASE("Published 3MF refreshes the edited preset so the applied material val } } -// Material-qualified keys whose receiver-side material match is missing or ambiguous must be -// reported as skipped (material-qualified) and never applied; a single unqualified type -// fallback still applies. -TEST_CASE("Published 3MF reports material keys with no unique receiver match as skipped", "[Preset][Bundle][Published]") -{ - auto make_file_config = [] { - DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - // Three author slots: PLA, PETG, ABS. - config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; - config.opt("filament_self_index")->values = { 1, 2, 3 }; - config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; - config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF" }; - config.opt("filament_type")->values = { "PLA", "PETG", "ABS" }; - config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; - config.opt("filament_ids")->values = { "GFL99", "GFT99", "GFA99" }; - config.option("filament_retraction_length", true)->values = { 0.9, 1.2, 1.5 }; - return config; - }; - - PresetBundle bundle; - // Two receiver presets of the SAME type with no filament_id: the type fallback is ambiguous. - Preset &pla_a = add_inmemory_preset(bundle.filaments, "My PLA A"); - pla_a.config.opt_string("filament_type", 0u) = "PLA"; - pla_a.config.opt_string("filament_vendor", 0u) = "Generic"; - pla_a.config.opt("filament_retraction_length", true)->values = { 0.5 }; - Preset &pla_b = add_inmemory_preset(bundle.filaments, "My PLA B"); - pla_b.config.opt_string("filament_type", 0u) = "PLA"; - pla_b.config.opt_string("filament_vendor", 0u) = "Generic"; - pla_b.config.opt("filament_retraction_length", true)->values = { 0.5 }; - // A unique PETG receiver preset: the single type fallback is unambiguous. - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt_string("filament_vendor", 0u) = "Generic"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - bundle.filament_presets = { "My PLA A", "My PLA B", "My PETG" }; - - auto make_entry = [](const std::string &type, const std::string &key) { - PublishedMaterialEntry entry; - entry.filament_type = type; - entry.filament_vendor = "Generic"; - entry.keys = { key }; - return entry; - }; - - PublishedMaterialEntry pla_entry = make_entry("PLA", "filament_retraction_length"); - pla_entry.slot = 0; // the author's PLA slot - PublishedMaterialEntry petg_entry = make_entry("PETG", "filament_retraction_length"); - petg_entry.slot = 1; // the author's PETG slot - PublishedMaterialEntry abs_entry = make_entry("ABS", "filament_retraction_length"); // author slot exists, no receiver match - abs_entry.slot = 2; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { pla_entry, petg_entry, abs_entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - // Ambiguous type fallback: neither PLA preset is touched, reported as skipped. - CHECK(bundle.filaments.find_preset("My PLA A")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(bundle.filaments.find_preset("My PLA B")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(contains_key(pub.skipped_keys, "material:PLA (filament_retraction_length)")); - // Unambiguous single fallback: applied. - CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); - CHECK_FALSE(contains_key(pub.skipped_keys, "material:PETG (filament_retraction_length)")); - // Receiver-side miss: the author slot exists but no receiver preset matches. - CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); -} - -// A slotted material entry carries the author's per-slot overrides: on load it applies to the -// receiver's matching preset at the author's slot ordinal (first matching author slot -> first -// matching receiver preset, second -> second, ...). Legacy entries without a slot keep applying -// to every matching receiver preset. -TEST_CASE("Published material keys apply to the receiver's matching filament preset by author slot ordinal", "[Preset][Bundle][Published]") -{ - auto make_file_config = [] { - DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - // Three author slots of the SAME material (PETG) with distinct per-slot retraction. - config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; - config.opt("filament_self_index")->values = { 1, 2, 3 }; - config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; - config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF" }; - config.opt("filament_type")->values = { "PETG", "PETG", "PETG" }; - config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; - config.opt("filament_ids")->values = { "GFT99", "GFT99", "GFT99" }; - config.option("filament_retraction_length", true)->values = { 0.7, 0.8, 0.9 }; - return config; - }; - auto make_slotted_entry = [](int slot) { - PublishedMaterialEntry entry; - entry.filament_type = "PETG"; - entry.filament_vendor = "Generic"; - entry.filament_id = "GFT99"; - entry.slot = slot; - entry.keys = { "filament_retraction_length" }; - return entry; - }; - auto add_petg_preset = [](PresetBundle &bundle, const std::string &name) { - Preset &preset = add_inmemory_preset(bundle.filaments, name); - preset.filament_id = "GFT99"; - preset.config.opt_string("filament_type", 0u) = "PETG"; - preset.config.opt_string("filament_vendor", 0u) = "Generic"; - preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; - return &preset; - }; - - // Three receiver presets, one per author slot: each gets its ordinal's value. - { - PresetBundle bundle; - add_petg_preset(bundle, "My PETG 1"); - add_petg_preset(bundle, "My PETG 2"); - add_petg_preset(bundle, "My PETG 3"); - bundle.filament_presets = { "My PETG 1", "My PETG 2", "My PETG 3" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { make_slotted_entry(0), make_slotted_entry(1), make_slotted_entry(2) }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - // Each author slot's value lands in the receiver preset at the same ordinal. - CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); - CHECK(bundle.filaments.find_preset("My PETG 2")->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); - CHECK(bundle.filaments.find_preset("My PETG 3")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(pub.skipped_keys.empty()); - } - - // A single receiver preset: only the first ordinal fits; the later slots are reported - // with a slot-qualified label. - { - PresetBundle bundle; - add_petg_preset(bundle, "My PETG 1"); - bundle.filament_presets = { "My PETG 1" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { make_slotted_entry(0), make_slotted_entry(1), make_slotted_entry(2) }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); - CHECK(contains_key(pub.skipped_keys, "material:GFT99 slot 1 (filament_retraction_length)")); - CHECK(contains_key(pub.skipped_keys, "material:GFT99 slot 2 (filament_retraction_length)")); - CHECK_FALSE(contains_key(pub.skipped_keys, "material:GFT99 slot 0 (filament_retraction_length)")); - } - - // A legacy entry (no slot) applies to every matching receiver preset, from the first - // author slot. - { - PresetBundle bundle; - add_petg_preset(bundle, "My PETG 1"); - add_petg_preset(bundle, "My PETG 2"); - bundle.filament_presets = { "My PETG 1", "My PETG 2" }; - - PublishedMaterialEntry legacy = make_slotted_entry(0); - legacy.slot = -1; // legacy: no slot field - PublishedConfig pub; - pub.published = true; - pub.material_keys = { legacy }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); - CHECK(bundle.filaments.find_preset("My PETG 2")->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); - CHECK(pub.skipped_keys.empty()); - } - - // An out-of-range author slot is silently skipped: nothing applied, nothing reported. - { - PresetBundle bundle; - add_petg_preset(bundle, "My PETG 1"); - bundle.filament_presets = { "My PETG 1" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { make_slotted_entry(5) }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filaments.find_preset("My PETG 1")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(pub.skipped_keys.empty()); - } -} - -// The published overlay must validate '#' variant indices: an out-of-range index must be -// reported as skipped and must NOT resize/corrupt the receiver's vector, and a variant suffix -// on a scalar key must be rejected instead of silently no-op'd. +// The published overlay must validate '#' variant indices: an out-of-range index is reported as +// skipped and must NOT resize/corrupt the receiver's vector, and a variant suffix on a scalar +// key is rejected instead of silently no-op'd. TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffixed scalar keys", "[Preset][Bundle][Published]") { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); config.opt("filament_colour")->values = { "#FF0000" }; - // Vector key, size 2 (matches the receiver's resized vector); distinct values so the - // applied element is observable. + // Vector key, size 2 (matches the receiver's resized vector); distinct values make the + // applied element observable. config.opt("wiping_volumes_extruders")->values = { 140., 150. }; config.opt_float("layer_height") = 0.28; Preset::normalize(config); @@ -1482,9 +1526,10 @@ TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffix CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.1, 0.000001)); } -// A receiver filament preset whose material identity fields are missing (hand-edited preset -// file) must not crash the material pass: the entry simply cannot match and is reported skipped. -TEST_CASE("Published 3MF survives a receiver filament preset missing its material identity", "[Preset][Bundle][Published]") +// A receiver filament preset missing its material identity (hand-edited file) must not crash +// the type gate: the gate reads it as a type mismatch, and the slot falls back to the +// "no replacement" path (keys skipped, colour still applied to the slot's preset). +TEST_CASE("Published 3MF survives a receiver preset missing its material identity", "[Preset][Bundle][Published]") { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); config.opt("filament_diameter")->values = { 1.75 }; @@ -1502,28 +1547,40 @@ TEST_CASE("Published 3MF survives a receiver filament preset missing its materia // Malformed receiver preset: the identity options are missing entirely. pla.config.erase("filament_type"); pla.config.erase("filament_vendor"); + pla.config.opt("filament_colour", true)->values = { "#123456" }; pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; bundle.filament_presets = { "My PLA" }; PublishedMaterialEntry entry; - entry.filament_type = "PLA"; - entry.filament_vendor = "Generic"; - entry.filament_id = "GFL99"; - entry.slot = 0; - entry.keys = { "filament_retraction_length" }; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFL99"; + entry.slot = 0; + entry.publish_type = true; // exercises the type gate against the missing identity + // Require ABS: the receiver library (PLA-typed default preset, typeless slot preset) has no + // ABS candidate, so the gate falls into the "no replacement" path (a PLA requirement would + // legitimately replace the slot with the visible PLA default). + entry.publish_type_value = "ABS"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; pub.material_keys = { entry }; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // No match possible without the identity fields: reported skipped, preset untouched. + // The gate reads the missing identity as a type mismatch; no same-type replacement exists, + // so the keys are skipped while the colour applies to the slot's preset in place. No crash. CHECK(contains_key(pub.skipped_keys, "material:GFL99 (filament_retraction_length)")); - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filament_presets[0] == "My PLA"); + Preset *mine_preset = bundle.filaments.find_preset("My PLA", false, true); + REQUIRE(mine_preset != nullptr); + CHECK(mine_preset->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); } -// The printer publishable allowlist is the union of the printer tab's "Retraction" and -// "Z-Hop" optgroup option lists; lock the exact contents and order (Tab.cpp). +// Lock the exact contents and order of the printer allowlist (the union of the tab's +// "Retraction" and "Z-Hop" optgroup lists, Tab.cpp). TEST_CASE("Printer publishable allowlist matches the printer tab's Retraction and Z-Hop optgroups", "[Preset][Bundle][Published]") { auto keys_of = [](const std::vector& opts) { @@ -1552,3 +1609,166 @@ TEST_CASE("Printer publishable allowlist matches the printer tab's Retraction an CHECK(publishable_printer_keys() == expected_union); } +// Loading the same published file twice must not compound values on the receiver's presets: +// each load re-applies the same absolute values, so the result is idempotent. +TEST_CASE("Published 3MF reloading does not compound values on the receiver's presets", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + auto load = [&] { + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + }; + load(); + // First load: the receiver's preset carries the published values (mutated in place). + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + load(); + // Each load re-applies the same values onto the (already mutated) preset: no accumulation. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); +} + +// A receiver with several slots aliasing the same preset (multi-extruder profile with one +// filament) and an author publishing keys on several slots: each published slot is re-pointed +// at its own distinct preset so values never leak between slots. +TEST_CASE("Published 3MF gives each published slot its own preset on an aliased receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.6, 0.9, 1.2, 1.5 }; + return config; + }; + auto make_key_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + // A 4-extruder receiver with a single filament preset: the slots alias [A, A, A, A] before + // the published pass. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt("filament_retraction_length", true)->values = { 0.5 }; + // Spare library presets for the re-pointing to fall back on. + for (const char *name : { "Extra PLA A", "Extra PLA B", "Extra PLA C" }) { + Preset &extra = add_inmemory_preset(bundle.filaments, name); + extra.config.opt_string("filament_type", 0u) = "PLA"; + extra.config.opt("filament_retraction_length", true)->values = { 0.5 }; + } + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_key_entry(0), make_key_entry(1), make_key_entry(2), make_key_entry(3) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 4); + // Every published slot references its own distinct preset: slot 0 keeps the receiver's + // material, slots 1-3 are re-pointed at the spare library presets. + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[2] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[2] != bundle.filament_presets[1]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[0]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[1]); + CHECK(bundle.filament_presets[3] != bundle.filament_presets[2]); + // Each slot's stored preset carries its own slot's retraction (mutated in place). + const std::vector expected = { 0.6, 0.9, 1.2, 1.5 }; + for (size_t slot = 0; slot < 4; ++slot) { + Preset *preset = bundle.filaments.find_preset(bundle.filament_presets[slot], false, true); + REQUIRE(preset != nullptr); + CHECK(preset->config.opt("filament_retraction_length")->values == std::vector{ expected[slot] }); + } + CHECK(pub.skipped_keys.empty()); +} + +// Printer retraction keys are published per-extruder ("#N"): a receiver with a different +// extruder count still receives the in-range elements; out-of-range variants are reported as +// skipped instead of corrupting the receiver's vector. +TEST_CASE("Published 3MF applies per-extruder printer keys across extruder-count mismatches", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + // Author has 4 extruders. + config.opt("retraction_length")->values = { 0.6, 0.9, 1.2, 1.5 }; + Preset::normalize(config); + return config; + }; + + // Receiver with a single extruder: only "#0" is in range; "#1..#3" are skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1", "retraction_length#2", "retraction_length#3" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 0.6 }); + CHECK(contains_key(pub.skipped_keys, "retraction_length#1")); + CHECK(contains_key(pub.skipped_keys, "retraction_length#2")); + CHECK(contains_key(pub.skipped_keys, "retraction_length#3")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_length#0")); + } + + // Receiver with four extruders and a 1-extruder author: only "#0" is published; the + // receiver's other extruders keep their own values. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8, 0.8, 0.8, 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0" }; + DynamicPrintConfig config = make_file_config(); + // The author's file carries a single-extruder value. + config.opt("retraction_length")->values = { 0.7 }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 0.7, 0.8, 0.8, 0.8 }); + CHECK(pub.skipped_keys.empty()); + } +} + From aeaa3c5d66c78bfc3c9d3ca956cabea453383626 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 19 Aug 2026 16:57:45 +0800 Subject: [PATCH 012/162] Bug fix for perfect name matching --- src/libslic3r/PresetBundle.cpp | 38 +++- src/libslic3r/PublishSettings.hpp | 4 + src/slic3r/GUI/Plater.cpp | 4 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 9 +- tests/libslic3r/test_3mf.cpp | 4 +- .../libslic3r/test_preset_bundle_loading.cpp | 199 ++++++++++++++++++ 6 files changed, 242 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 7a90036fe2..bc6df4c3a9 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4894,11 +4894,19 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // Mirror first_visible_idx()'s start index so suppressed default presets are // never picked as a slot material. const size_t first_candidate = this->filaments.is_default_suppressed() ? this->filaments.num_default_presets() : 0; - // Candidate preference for a published entry: exact setting_id (variant-level, - // since "Generic PLA" and "Generic PLA Matte" share filament_id), then exact - // filament_id, then vendor+type, then type only (a type-only pick may surface an - // unrelated preset, e.g. a different vendor's PLA). + // Candidate preference for a published entry: exact preset name (unambiguous + // even when ids are shared between variants or missing from older files), then + // exact setting_id (variant-level, since "Generic PLA" and "Generic PLA Matte" + // share filament_id), then exact filament_id, then vendor+type, then type only + // (a type-only pick may surface an unrelated preset, e.g. a different vendor's + // PLA). auto candidate_score = [](const Preset &candidate, const PublishedMaterialEntry &entry) -> int { + if (!entry.preset_name.empty()) { + const std::string bare_name = entry.preset_name.substr(0, entry.preset_name.find('@')); + if (candidate.name == entry.preset_name || candidate.alias == entry.preset_name || + candidate.name == bare_name || candidate.alias == bare_name) + return 4; + } if (!entry.setting_id.empty() && candidate.setting_id == entry.setting_id) return 3; const ConfigOptionStrings *types = candidate.config.opt("filament_type"); @@ -4926,10 +4934,13 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool int best_score = -1; for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) - continue; const int score = candidate_score(candidate, entry); if (score > best_score) { + // Exact identity tiers (name / setting_id) win even when the + // preset is hidden or already referenced by another slot; the + // alias re-pointing pass below still de-aliases afterwards. + if (score < 3 && (!candidate.is_visible || used_preset_names.count(candidate.name) != 0)) + continue; best_score = score; initial_preset = candidate.name; } @@ -4979,9 +4990,13 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool continue; for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible || referenced_elsewhere(candidate.name, size_t(-1))) - continue; const int score = candidate_score(candidate, entry); + // Exact identity tiers (name / setting_id) may use a hidden preset; + // the referenced check stays: re-pointing exists to de-alias. + if (score < 3 && !candidate.is_visible) + continue; + if (referenced_elsewhere(candidate.name, size_t(-1))) + continue; if (score > best_score) { best_score = score; replacement = candidate.name; @@ -5106,11 +5121,14 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::string best_name; for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible) - continue; const int score = candidate_score(candidate, entry); if (score <= best_score) continue; + // Lower tiers (vendor+type, type only) need a visible preset; + // an exact identity match (name / setting_id) wins even when + // the preset is hidden in the library. + if (score < 3 && !candidate.is_visible) + continue; if (unreferenced_only) { bool used = false; for (size_t s = 0; s < this->filament_presets.size(); ++s) diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index ecb51523f5..0dc579c2a9 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -40,6 +40,10 @@ struct PublishedMaterialEntry { // used on load to match the exact published variant, which filament_id alone cannot // distinguish ("Generic PLA" and "Generic PLA Matte" share their inherited id). std::string setting_id; + // Canonical name of the author's slot preset (e.g. "Generic PLA @System"). The receiver + // prefers an exact name/alias match over id matching: ids can be shared across variants + // or missing from older files, the name is what the author actually selected. + std::string preset_name; // 0-based author filament slot; -1 (hand-crafted files) is skipped. int slot{-1}; std::vector keys; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index be56cc1f66..50d613de33 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7252,6 +7252,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ entry.filament_id = mat["filament_id"].get(); if (mat.contains("setting_id") && mat["setting_id"].is_string()) entry.setting_id = mat["setting_id"].get(); + if (mat.contains("name") && mat["name"].is_string()) + entry.preset_name = mat["name"].get(); } if (m.contains("slot") && m["slot"].is_number_integer()) entry.slot = m["slot"].get(); @@ -16251,7 +16253,7 @@ int Plater::export_published_3mf(const std::vector& published_keys, j.push_back(key); nlohmann::json jm = nlohmann::json::array(); for (const Slic3r::PublishedMaterialEntry& e : material_keys) - jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}, {"setting_id", e.setting_id}}}, {"slot", e.slot}, {"keys", e.keys}, + jm.push_back({ {"material", {{"filament_type", e.filament_type}, {"filament_vendor", e.filament_vendor}, {"filament_id", e.filament_id}, {"setting_id", e.setting_id}, {"name", e.preset_name}}}, {"slot", e.slot}, {"keys", e.keys}, {"full", e.full}, {"full_keys", e.full_keys}, {"publish_type", e.publish_type}, {"type", e.publish_type_value}, {"publish_color", e.publish_color}, {"color", e.color} }); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index f62d7af3a4..881560f93c 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -924,11 +924,14 @@ std::vector PublishSettingsDialog::GetPublishedM entry.filament_id = cat.filament_id; entry.slot = static_cast(cat.filament_slot); // The author's preset id distinguishes exact variants that share filament_id - // ("Generic PLA" vs "Generic PLA Matte"), so the receiver can match precisely. + // ("Generic PLA" vs "Generic PLA Matte"), so the receiver can match precisely; the + // preset name is the most direct identity and is matched first on load. PresetBundle *bundle = wxGetApp().preset_bundle; if (bundle != nullptr && cat.filament_slot < bundle->filament_presets.size()) { - if (const Preset *preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) - entry.setting_id = preset->setting_id; + if (const Preset *preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) { + entry.setting_id = preset->setting_id; + entry.preset_name = preset->name; + } } // "Full Publish": the whole filament preset is embedded; type and colour are implicitly // published, and the per-key rows are disabled / their state ignored. diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 34ff31183f..818c354628 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -684,7 +684,7 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded const std::vector published_keys = { "layer_height", "retraction_length" }; const std::vector material_keys = { - { "PLA", "Generic", "GFL99", "", 0, { "filament_retraction_length" } } + { "PLA", "Generic", "GFL99", "", "Generic PLA", 0, { "filament_retraction_length" } } }; DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); @@ -792,7 +792,7 @@ SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { model.add_default_instances(); const std::string material_keys_json = - R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99","setting_id":"RFs9eCKYOMUSmvZf"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; + R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99","setting_id":"RFs9eCKYOMUSmvZf","name":"Generic PLA Matte @System"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; model.model_info = std::make_shared(); model.model_info->metadata_items["published_material_keys"] = material_keys_json; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 3a9ff77be9..11162922fc 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -942,6 +942,205 @@ TEST_CASE("Published 3MF replaces a mismatched slot with the exact published mat CHECK(pub.skipped_keys.empty()); } +// The author's preset name travels in the file, so a type mismatch resolves to the exact +// published material even when the identity fields are absent or stale (older files): a +// "Generic PLA" author must land on the receiver's "Generic PLA", never on a same-type +// substitute like "Bambu PLA Basic". +TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by name", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "OGFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9 }; + return config; + }; + + auto add_pla = [](PresetBundle &bundle, const char *name, const char *id, const char *vendor, const char *setting_id) { + Preset &preset = add_inmemory_preset(bundle.filaments, name); + preset.filament_id = id; + preset.setting_id = setting_id; + preset.config.opt_string("filament_type", 0u) = "PLA"; + preset.config.opt_string("filament_vendor", 0u) = vendor; + preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; + return &preset; + }; + + SECTION("full identity (name, setting_id, filament_id): the name match wins") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "OGFL99"; + entry.filament_vendor = "Generic"; + entry.setting_id = "RcBNzytWgwRrwXXz"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA @System"); + CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("only the name is present (broken/stale ids): still the exact preset") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA @System"); + CHECK(bundle.filaments.find_preset("Bambu PLA Basic @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("the exact preset is hidden in the library: the exact match still wins") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + Preset &generic_pla = *add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + generic_pla.is_visible = false; + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA @System"); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("grown slot (author slot 1) is seeded with the exact preset by name") { + auto two_slot_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "OGFL99", "OGFL99" }; + config.option("filament_retraction_length", true)->values = { 0.9, 0.8 }; + return config; + }; + + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = two_slot_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "My PETG"); + CHECK(bundle.filament_presets[1] == "Generic PLA @System"); + // The full dump applies the author's slot-1 value onto the grown slot's preset. + CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); + CHECK(pub.skipped_keys.empty()); + } + + SECTION("no exact preset in the library: falls back to the substitute") { + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @System"; + entry.filament_id = "OGFL99"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Bambu PLA Basic @System"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Bambu PLA Basic @System (substitute: no exact material match)"); + } +} + // The replacement search prefers the published identity: exact filament_id, then vendor+type, // then type only (collection order decides equal scores; the pick is reported as a substitute // when it is not the exact published material). From aa3ce35683c2fdddc55df3d5db80f0def3a42122 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 21 Aug 2026 13:00:32 +0800 Subject: [PATCH 013/162] Published 3MF: silent geometry-only fallback in old versions via tag/config-less export --- src/libslic3r/Format/bbs_3mf.cpp | 48 ++++++-- src/slic3r/GUI/Plater.cpp | 205 ++++++++++++++++++------------- tests/libslic3r/test_3mf.cpp | 51 ++++++-- 3 files changed, 202 insertions(+), 102 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index a5d20807b7..06cc89de99 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -1214,6 +1214,19 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // add backup & restore logic bool _load_model_from_file(std::string filename, Model& model, PlateDataPtrs& plate_data_list, std::vector& project_presets, DynamicPrintConfig& config, ConfigSubstitutionContext& config_substitutions, Import3mfProgressFn proFn = nullptr, BBLProject* project = nullptr, int plate_id = 0); + + // A minimal published 3MF carries no slicer tags (any tag would make old receivers show + // a baked-in, wrong "old version" popup on their geometry-only fallback), so it + // classifies as From_Other. It is still a fully structured OrcaSlicer file though: + // identified by its own metadata, it keeps BBS-grade geometry handling (no instance + // splitting, no transform baking, no renaming) in this build. Old receivers without the + // publish feature don't know the metadata and take their third-party geometry path. + // Reads the parse-time metadata: the model XML carries it before its resources, while + // m_model->model_info is only filled in after the whole XML has been parsed. + bool _is_published_3mf() const { + return this->model_info.metadata_items.find("published") != this->model_info.metadata_items.end(); + } + bool _is_svg_shape_file(const std::string &filename) const; bool _extract_from_archive(mz_zip_archive& archive, std::string const & path, std::function, bool restore = false); bool _extract_xml_from_archive(mz_zip_archive& archive, std::string const & path, XML_StartElementHandler start_handler, XML_EndElementHandler end_handler); @@ -2037,7 +2050,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) lock.close(); - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is more than one instance, // split the object in as many objects as instances BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", found 3mf from other vendor, split as instance"); @@ -3591,7 +3604,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_index_paths.insert({ object.first.second, object.first.first}); } - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is only one object, // set the object name to match the filename if (m_model->objects.size() == 1) @@ -5297,7 +5310,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) TriangleMesh triangle_mesh(std::move(its), volume_data.mesh_stats); - if (!m_is_bbl_3mf) { + if (!m_is_bbl_3mf && !_is_published_3mf()) { // if the 3mf was not produced by OrcaSlicer and there is only one instance, // bake the transformation into the geometry to allow the reload from disk command // to work properly @@ -5943,7 +5956,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool m_save_gcode { false }; // whether to save gcode for normal save bool m_skip_model { false }; // skip model when exporting .gcode.3mf bool m_skip_auxiliary { false }; // skip normal axuiliary files - bool m_minimal_published { false }; // published 3MF: omit embedded preset files + bool m_minimal_published { false }; // published 3MF: omit the project config, the embedded preset files and the slicer tags bool m_use_loaded_id { false }; // whether to use loaded id for identify_id bool m_share_mesh { false }; // whether to share mesh between objects std::string m_thumbnail_middle = PRINTER_THUMBNAIL_MIDDLE_FILE; @@ -6453,7 +6466,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adds slic3r print config file ("Metadata/Slic3r_PE.config"). // This file contains the content of FullPrintConfig / SLAFullPrintConfig. - if (config != nullptr) { + // Omitted for minimal published 3MF: OrcaSlicer versions without the publish feature + // then fall back to importing the geometry only, and new versions read the published + // payload from the model metadata instead. + if (config != nullptr && !m_minimal_published) { // BBS: change to json format // if (!_add_print_config_file_to_archive(archive, *config)) { if (!_add_project_config_file_to_archive(archive, *config, model)) { return false; } @@ -6939,8 +6955,13 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Orca: PRIVACY: do not store creation & modification date in 3mf metadata_item_map[BBL_CREATION_DATE_TAG] = ""; metadata_item_map[BBL_MODIFICATION_TAG] = ""; - // Orca: Write the BambuStudio compatibility version string using SLIC3R_VERSION - metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); + // Orca: Write the BambuStudio compatibility version string using SLIC3R_VERSION. + // A minimal published 3MF writes no slicer tags at all: any tag would route old + // receivers onto a geometry-only fallback whose baked-in popup misreports the + // file ("old OrcaSlicer version" / "BambuStudio"), while tag-less files classify + // as From_Other and import the geometry silently. + if (!m_minimal_published) + metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); } metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); @@ -6966,8 +6987,17 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << METADATA_TAG << " name=\"" << item.first << "\">" << xml_escape(item.second) << "\n"; if (item.first == BBL_APPLICATION_TAG) { - stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" - << xml_escape(SoftFever_VERSION) << "\n"; + // The OrcaSlicer tag is the version receivers compare against their own to + // pick the import branch, and every graceful config-less branch of an + // Orca-classified file shows a baked-in "old OrcaSlicer version" popup. A + // minimal published 3MF omits the tag (together with the Application tag + // above): old receivers then classify it From_Other and import the geometry + // silently, while this build rebuilds the config from the published metadata + // payload before the branch runs. + if (!m_minimal_published) { + stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" + << xml_escape(SoftFever_VERSION) << "\n"; + } } } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 50d613de33..908e4dc222 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6881,6 +6881,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ DynamicPrintConfig config; Semver file_version; En3mfType en_3mf_file_type = En3mfType::From_BBS; + // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; + // on load keep the user's current presets and overlay only those keys. Declared + // here (outside the config block below) so it stays alive for the embedded-preset + // gate, the metadata strip and the preset overlay after the block closes. + PublishedConfig published_config; { DynamicPrintConfig config_loaded; @@ -6908,6 +6913,102 @@ std::vector Plater::priv::load_files(const std::vector& input_ << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_or_orca_3mf %3%, file_version %4% \n") % plate_data.size() % project_presets.size() % (en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) % file_version.to_string(); + // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; + // on load keep the user's current presets and overlay only those keys. Parsed + // here (before the version/fallback chain below) because a published file has + // no project_settings.config: its values travel in the published_config + // metadata payload, which must fill config_loaded before the chain decides + // whether to import geometry only. + if (model.model_info != nullptr) { + auto published_it = model.model_info->metadata_items.find("published"); + if (published_it != model.model_info->metadata_items.end() && + (published_it->second == "true" || published_it->second == "1")) { + published_config.published = true; + auto keys_it = model.model_info->metadata_items.find("published_keys"); + if (keys_it != model.model_info->metadata_items.end()) { + try { + auto j = nlohmann::json::parse(keys_it->second); + if (j.is_array()) + for (const auto &k : j) + if (k.is_string()) + published_config.published_keys.emplace_back(k.get()); + } catch (...) { + // Ignore malformed published_keys; the project still loads normally. + } + } + + auto material_keys_it = model.model_info->metadata_items.find("published_material_keys"); + if (material_keys_it != model.model_info->metadata_items.end()) { + try { + auto jm = nlohmann::json::parse(material_keys_it->second); + if (jm.is_array()) + for (const auto &m : jm) { + // Malformed entries are skipped individually. + if (!m.is_object()) + continue; + PublishedMaterialEntry entry; + const auto mat_it = m.find("material"); + if (mat_it != m.end() && mat_it->is_object()) { + const auto &mat = *mat_it; + if (mat.contains("filament_type") && mat["filament_type"].is_string()) + entry.filament_type = mat["filament_type"].get(); + if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) + entry.filament_vendor = mat["filament_vendor"].get(); + if (mat.contains("filament_id") && mat["filament_id"].is_string()) + entry.filament_id = mat["filament_id"].get(); + if (mat.contains("setting_id") && mat["setting_id"].is_string()) + entry.setting_id = mat["setting_id"].get(); + if (mat.contains("name") && mat["name"].is_string()) + entry.preset_name = mat["name"].get(); + } + if (m.contains("slot") && m["slot"].is_number_integer()) + entry.slot = m["slot"].get(); + const auto entry_keys_it = m.find("keys"); + if (entry_keys_it != m.end() && entry_keys_it->is_array()) + for (const auto &k : *entry_keys_it) + if (k.is_string()) + entry.keys.emplace_back(k.get()); + // Fields always written by the current exporter. + if (m.contains("full") && m["full"].is_boolean()) + entry.full = m["full"].get(); + const auto entry_full_keys_it = m.find("full_keys"); + if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) + for (const auto &k : *entry_full_keys_it) + if (k.is_string()) + entry.full_keys.emplace_back(k.get()); + if (m.contains("publish_type") && m["publish_type"].is_boolean()) + entry.publish_type = m["publish_type"].get(); + if (m.contains("type") && m["type"].is_string()) + entry.publish_type_value = m["type"].get(); + if (m.contains("publish_color") && m["publish_color"].is_boolean()) + entry.publish_color = m["publish_color"].get(); + if (m.contains("color") && m["color"].is_string()) + entry.color = m["color"].get(); + published_config.material_keys.emplace_back(std::move(entry)); + } + } catch (...) { + // Ignore malformed published_material_keys; the project still loads normally. + } + } + + // Rebuild the published values from the metadata payload: a published + // file carries no project_settings.config, so config_loaded is filled + // from here; a missing or malformed payload leaves it empty and the + // fallback chain below imports the geometry only. + auto payload_it = model.model_info->metadata_items.find("published_config"); + if (payload_it != model.model_info->metadata_items.end()) { + try { + ConfigSubstitutions payload_substitutions = config_loaded.load_from_ini_string(payload_it->second, ForwardCompatibilitySubstitutionRule::Enable); + config_substitutions.substitutions.insert(config_substitutions.substitutions.end(), + std::make_move_iterator(payload_substitutions.begin()), + std::make_move_iterator(payload_substitutions.end())); + } catch (...) { + // Ignore malformed published_config; the project still loads normally. + } + } + } + } + // 1. add extruder for prusa model if the number of existing extruders is not enough // 2. add extruder for BBS or Other model if only import geometry if (en_3mf_file_type == En3mfType::From_Prusa || (load_model && !load_config)) { @@ -7071,7 +7172,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ text += "\n"; log_and_show_3mf_info(text, bambu_project_title); } - } else if (load_config) { + } else if (load_config && !published_config.published) { // BambuStudio version is older or same as our SLIC3R_VERSION wxString text = _L("The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer."); log_and_show_3mf_info(text, bambu_project_title); @@ -7153,8 +7254,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - // BBS:: project embedded presets - if ((project_presets.size() > 0) && load_config) { + // BBS:: project embedded presets (skipped for published projects: the author's + // embedded presets must not pollute the receiver's library, the overlay applies + // the published keys to the receiver's own presets instead). + if ((project_presets.size() > 0) && load_config && !published_config.published) { // load project embedded presets PresetsConfigSubstitutions preset_substitutions; PresetBundle & preset_bundle = *wxGetApp().preset_bundle; @@ -7210,83 +7313,6 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; - // on load keep the user's current presets and overlay only those keys. - PublishedConfig published_config; - if (model.model_info != nullptr) { - auto published_it = model.model_info->metadata_items.find("published"); - if (published_it != model.model_info->metadata_items.end() && - (published_it->second == "true" || published_it->second == "1")) { - published_config.published = true; - auto keys_it = model.model_info->metadata_items.find("published_keys"); - if (keys_it != model.model_info->metadata_items.end()) { - try { - auto j = nlohmann::json::parse(keys_it->second); - if (j.is_array()) - for (const auto &k : j) - if (k.is_string()) - published_config.published_keys.emplace_back(k.get()); - } catch (...) { - // Ignore malformed published_keys; the project still loads normally. - } - } - - auto material_keys_it = model.model_info->metadata_items.find("published_material_keys"); - if (material_keys_it != model.model_info->metadata_items.end()) { - try { - auto jm = nlohmann::json::parse(material_keys_it->second); - if (jm.is_array()) - for (const auto &m : jm) { - // Malformed entries are skipped individually. - if (!m.is_object()) - continue; - PublishedMaterialEntry entry; - const auto mat_it = m.find("material"); - if (mat_it != m.end() && mat_it->is_object()) { - const auto &mat = *mat_it; - if (mat.contains("filament_type") && mat["filament_type"].is_string()) - entry.filament_type = mat["filament_type"].get(); - if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) - entry.filament_vendor = mat["filament_vendor"].get(); - if (mat.contains("filament_id") && mat["filament_id"].is_string()) - entry.filament_id = mat["filament_id"].get(); - if (mat.contains("setting_id") && mat["setting_id"].is_string()) - entry.setting_id = mat["setting_id"].get(); - if (mat.contains("name") && mat["name"].is_string()) - entry.preset_name = mat["name"].get(); - } - if (m.contains("slot") && m["slot"].is_number_integer()) - entry.slot = m["slot"].get(); - const auto entry_keys_it = m.find("keys"); - if (entry_keys_it != m.end() && entry_keys_it->is_array()) - for (const auto &k : *entry_keys_it) - if (k.is_string()) - entry.keys.emplace_back(k.get()); - // Fields always written by the current exporter. - if (m.contains("full") && m["full"].is_boolean()) - entry.full = m["full"].get(); - const auto entry_full_keys_it = m.find("full_keys"); - if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) - for (const auto &k : *entry_full_keys_it) - if (k.is_string()) - entry.full_keys.emplace_back(k.get()); - if (m.contains("publish_type") && m["publish_type"].is_boolean()) - entry.publish_type = m["publish_type"].get(); - if (m.contains("type") && m["type"].is_string()) - entry.publish_type_value = m["type"].get(); - if (m.contains("publish_color") && m["publish_color"].is_boolean()) - entry.publish_color = m["publish_color"].get(); - if (m.contains("color") && m["color"].is_string()) - entry.color = m["color"].get(); - published_config.material_keys.emplace_back(std::move(entry)); - } - } catch (...) { - // Ignore malformed published_material_keys; the project still loads normally. - } - } - } - } - // BBS: a "published" 3MF loads as a new project: its path must not become the // project filename (Save/Ctrl-S would overwrite the shared file), and the // published metadata is consumed above and stripped so a later save is a normal @@ -7297,6 +7323,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ this->model.model_info->metadata_items.erase("published"); this->model.model_info->metadata_items.erase("published_keys"); this->model.model_info->metadata_items.erase("published_material_keys"); + this->model.model_info->metadata_items.erase("published_config"); } if (load_config) { @@ -16265,9 +16292,11 @@ int Plater::export_published_3mf(const std::vector& published_keys, const bool had_published = had_model_info && (model.model_info->metadata_items.find("published") != model.model_info->metadata_items.end()); const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find("published_keys") != model.model_info->metadata_items.end()); const bool had_material_keys = had_model_info && (model.model_info->metadata_items.find("published_material_keys") != model.model_info->metadata_items.end()); + const bool had_payload = had_model_info && (model.model_info->metadata_items.find("published_config") != model.model_info->metadata_items.end()); const std::string prev_published = had_published ? model.model_info->metadata_items.at("published") : std::string(); const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at("published_keys") : std::string(); const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at("published_material_keys") : std::string(); + const std::string prev_payload = had_payload ? model.model_info->metadata_items.at("published_config") : std::string(); if (model.model_info == nullptr) model.model_info = std::make_shared(); model.model_info->metadata_items["published"] = "1"; @@ -16275,9 +16304,17 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info->metadata_items["published_material_keys"] = jm.dump(); // Minimal published export: filter full_config to the published keys, material keys, - // identity fields and plate geometry keys, and omit project-embedded preset dumps. + // identity fields and plate geometry keys, and omit the project config file, the + // project-embedded preset dumps and the OrcaSlicer version tag from the archive. The + // filtered values are serialized into the published_config metadata payload instead, so + // OrcaSlicer versions without the publish feature fall back to importing the geometry only + // (keeping the receiver's presets) while new versions rebuild the config from the payload. DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + std::string payload; + for (const std::string &key : filtered_cfg.keys()) + payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; + model.model_info->metadata_items["published_config"] = std::move(payload); // Same file layout as save_project(), plus Silence (so export_3mf does not set the project // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. @@ -16286,7 +16323,7 @@ int Plater::export_published_3mf(const std::vector& published_keys, if (full_pathnames) save_strategy = save_strategy | SaveStrategy::FullPathSources; - const int ret = export_3mf(into_path(path), save_strategy, -1, nullptr, &filtered_cfg); + const int ret = export_3mf(into_path(path), save_strategy, -1, nullptr); // Restore the previous metadata state (both on success and on failure). if (!had_model_info) { @@ -16304,6 +16341,10 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info->metadata_items["published_material_keys"] = prev_material_keys; else model.model_info->metadata_items.erase("published_material_keys"); + if (had_payload) + model.model_info->metadata_items["published_config"] = prev_payload; + else + model.model_info->metadata_items.erase("published_config"); } if (ret < 0) { diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 5fdad8b7ce..6a20613a79 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -671,12 +671,15 @@ SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf } } -SCENARIO("Minimal published 3MF serialization filters config and omits embedded presets", "[3mf]") { - GIVEN("a full print configuration and published keys") { +SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer tags", "[3mf]") { + GIVEN("a multi-instance model carrying published metadata and a published_config payload") { Model model; std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; REQUIRE(load_stl(src_file.c_str(), &model)); model.add_default_instances(); + // A second instance: tag-less third-party files get their multi-instance objects split, + // published files must not (the loader recognizes them by their metadata). + model.objects.front()->add_instance(); DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); full_cfg.set_key_value("layer_height", new ConfigOptionFloat(0.24)); @@ -687,27 +690,30 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded { "PLA", "Generic", "GFL99", "", "Generic PLA", 0, { "filament_retraction_length" } } }; + // The payload builder keeps the published and identity keys and drops everything else. DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); - - // Filtered config keeps the published and identity keys... REQUIRE(filtered_cfg.option("layer_height") != nullptr); REQUIRE(filtered_cfg.option("retraction_length") != nullptr); REQUIRE(filtered_cfg.option("filament_colour") != nullptr); REQUIRE(filtered_cfg.option("filament_type") != nullptr); REQUIRE(filtered_cfg.option("wipe_tower_x") != nullptr); - - // ...and drops everything else. REQUIRE(filtered_cfg.option("sparse_infill_density") == nullptr); REQUIRE(filtered_cfg.option("machine_start_gcode") == nullptr); + // Serialize the payload exactly like export_published_3mf does. + std::string payload; + for (const std::string &key : filtered_cfg.keys()) + payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; + model.model_info = std::make_shared(); model.model_info->metadata_items["published"] = "1"; model.model_info->metadata_items["published_keys"] = R"(["layer_height","retraction_length"])"; + model.model_info->metadata_items["published_config"] = payload; ScopedTemporaryDir backup_dir("orca_min_pub"); model.set_backup_path(backup_dir.string()); - WHEN("stored using SaveStrategy::MinimalPublished") { + WHEN("stored using SaveStrategy::MinimalPublished and reloaded") { ScopedTemporaryFile temp(".3mf"); const std::string test_file = temp.string(); @@ -736,12 +742,35 @@ SCENARIO("Minimal published 3MF serialization filters config and omits embedded bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, &loaded_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, LoadStrategy::LoadModel | LoadStrategy::LoadConfig); - THEN("the 3MF loads successfully without project embedded presets") { + THEN("the 3MF loads without project config or embedded presets") { REQUIRE(loaded); + REQUIRE(dst_config.empty()); REQUIRE(loaded_presets.empty()); - REQUIRE(dst_config.option("layer_height") != nullptr); - REQUIRE_THAT(dst_config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.24, 1e-6)); - REQUIRE(dst_config.option("sparse_infill_density") == nullptr); + } + THEN("the file carries no slicer tags and classifies as a generic 3MF") { + REQUIRE_FALSE(is_bbl_3mf); + REQUIRE_FALSE(is_orca_3mf); + // No Application / OrcaSlicer tag: old receivers import the geometry silently + // instead of showing a baked-in, wrong "old version" popup. + REQUIRE_FALSE(file_version.valid()); + } + THEN("the geometry keeps BBS-grade handling: instances are not split") { + REQUIRE(dst_model.objects.size() == 1); + REQUIRE(dst_model.objects.front()->instances.size() == 2); + } + THEN("the published metadata and payload round-trip unchanged") { + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items["published"] == "1"); + REQUIRE(dst_model.model_info->metadata_items["published_keys"] == R"(["layer_height","retraction_length"])"); + REQUIRE(dst_model.model_info->metadata_items["published_config"] == payload); + } + THEN("the payload parses back to the published values") { + DynamicPrintConfig parsed_payload; + parsed_payload.load_from_ini_string(dst_model.model_info->metadata_items["published_config"], ForwardCompatibilitySubstitutionRule::Enable); + REQUIRE(parsed_payload.option("layer_height") != nullptr); + REQUIRE_THAT(parsed_payload.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.24, 1e-6)); + REQUIRE(parsed_payload.option("retraction_length") != nullptr); + REQUIRE_THAT(parsed_payload.opt("retraction_length")->get_at(0), Catch::Matchers::WithinAbs(1.2, 1e-6)); } release_PlateData_list(dst_plates); } From a0e95abebe6355807d9f0283f6b9e85975eddaa4 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 21 Aug 2026 13:26:17 +0800 Subject: [PATCH 014/162] Fix unit test: --- tests/libslic3r/test_preset_bundle_loading.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index df00b1a41c..d3bf4a2f49 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1216,17 +1216,20 @@ TEST_CASE("Published 3MF prefers a compatible preset over an exact but incompati petg.config.opt_string("filament_type", 0u) = "PETG"; petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; // The bare-named legacy preset (Bambu-printer only) and the exact author preset are both - // incompatible with the receiver's printer. + // incompatible with the receiver's printer. update_compatible() recomputes is_compatible + // inside load_config_model, so the incompatibility is expressed the way production derives + // it: a compatible_printers constraint no receiver printer satisfies (the fresh bundle's + // active printer is the "Default Printer" placeholder). Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); bare.config.opt_string("filament_type", 0u) = "PLA"; bare.config.opt_string("filament_vendor", 0u) = "Generic"; bare.config.opt("filament_retraction_length", true)->values = { 0.5 }; - bare.is_compatible = false; + bare.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); Preset &qidi = add_inmemory_preset(bundle.filaments, "Generic PLA @Qidi Q2 0.4 nozzle"); qidi.config.opt_string("filament_type", 0u) = "PLA"; qidi.config.opt_string("filament_vendor", 0u) = "Generic"; qidi.config.opt("filament_retraction_length", true)->values = { 0.5 }; - qidi.is_compatible = false; + qidi.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); // The receiver's own compatible library preset. Preset &sys = add_inmemory_preset(bundle.filaments, "Generic PLA @System"); sys.config.opt_string("filament_type", 0u) = "PLA"; @@ -1264,11 +1267,15 @@ TEST_CASE("Published 3MF falls back to an incompatible exact preset when no comp Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); petg.config.opt_string("filament_type", 0u) = "PETG"; petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + // The exact author preset is incompatible with the receiver's printer. update_compatible() + // recomputes is_compatible inside load_config_model, so the incompatibility is expressed the + // way production derives it: a compatible_printers constraint the receiver's printer (the + // fresh bundle's "Default Printer" placeholder) does not satisfy. Preset &qidi = add_inmemory_preset(bundle.filaments, "Generic PLA @Qidi Q2 0.4 nozzle"); qidi.config.opt_string("filament_type", 0u) = "PLA"; qidi.config.opt_string("filament_vendor", 0u) = "Generic"; qidi.config.opt("filament_retraction_length", true)->values = { 0.5 }; - qidi.is_compatible = false; + qidi.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); bundle.filament_presets = { "My PETG" }; PublishedMaterialEntry entry; From a5033afaf847710c6ef49c90bd54d3ac87d5dbc6 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 21 Aug 2026 14:26:20 +0800 Subject: [PATCH 015/162] UI cleanup and translations updated --- localization/i18n/OrcaSlicer.pot | 52 +++++- localization/i18n/ca/OrcaSlicer_ca.po | 52 +++++- localization/i18n/cs/OrcaSlicer_cs.po | 54 +++++- localization/i18n/de/OrcaSlicer_de.po | 52 +++++- localization/i18n/en/OrcaSlicer_en.po | 52 +++++- localization/i18n/es/OrcaSlicer_es.po | 52 +++++- localization/i18n/eu/OrcaSlicer_eu.po | 52 +++++- localization/i18n/fr/OrcaSlicer_fr.po | 52 +++++- localization/i18n/hu/OrcaSlicer_hu.po | 54 +++++- localization/i18n/it/OrcaSlicer_it.po | 52 +++++- localization/i18n/ja/OrcaSlicer_ja.po | 54 +++++- localization/i18n/ko/OrcaSlicer_ko.po | 54 +++++- localization/i18n/lt/OrcaSlicer_lt.po | 52 +++++- localization/i18n/nl/OrcaSlicer_nl.po | 52 +++++- localization/i18n/pl/OrcaSlicer_pl.po | 54 +++++- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 52 +++++- localization/i18n/ru/OrcaSlicer_ru.po | 56 ++++++- localization/i18n/sv/OrcaSlicer_sv.po | 54 +++++- localization/i18n/th/OrcaSlicer_th.po | 52 +++++- localization/i18n/tr/OrcaSlicer_tr.po | 54 +++++- localization/i18n/uk/OrcaSlicer_uk.po | 52 +++++- localization/i18n/vi/OrcaSlicer_vi.po | 54 +++++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 52 +++++- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 52 +++++- src/slic3r/GUI/PublishSettingsDialog.cpp | 175 +++++++++++--------- src/slic3r/GUI/PublishSettingsDialog.hpp | 40 +++-- 26 files changed, 1210 insertions(+), 273 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 6ec0ecd9cf..c1dc798ff3 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4565,6 +4565,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -5013,9 +5016,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5945,6 +5945,12 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" @@ -7663,6 +7669,12 @@ msgstr "" msgid "Customized Preset" msgstr "" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "" @@ -8023,6 +8035,17 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -9070,9 +9093,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9088,6 +9108,24 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, possible-c-format, possible-boost-format msgid "Save %s as" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index b7eb022c0d..7070c885be 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -4987,6 +4987,9 @@ msgstr "" "Sí: canviar aquesta configuració i activar el mode d'espiral automàticament\n" "No - Renunciar a utilitzar el mode espiral aquesta vegada" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimint" @@ -5448,9 +5451,6 @@ msgstr "Patró no vàlid. Utilitzeu N, N#K, o una llista separada per comes amb msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format no vàlid. Format vectorial esperat: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agents del sistema" @@ -6413,6 +6413,12 @@ msgstr "Desa el projecte com a" msgid "Save current project as" msgstr "Desar el projecte actual com" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF STL/STEP/SVG/OBJ/AMF" @@ -8231,6 +8237,12 @@ msgstr "Confirmeu que els Codis-G d'aquests perfils són segurs per evitar danys msgid "Customized Preset" msgstr "Perfil personalitzat" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Els noms dels components dins del fitxer STEP no tenen format UTF8!" @@ -8619,6 +8631,17 @@ msgstr "Desa el fitxer Laminat com a:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El fitxer %s s'ha enviat a l'emmagatzematge de la impressora i es pot visualitzar a la impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipus de broquet no està establert. Establiu el broquet i torneu-ho a provar." @@ -9808,9 +9831,6 @@ msgstr "Anar a la pàgina web de publicació de models" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparació pot trigar uns quants minuts. Si us plau, sigui pacient." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicació ha estat cancel·lada" @@ -9826,6 +9846,24 @@ msgstr "Carregant dades" msgid "Jump to webpage" msgstr "Anar a la pàgina web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Desar %s com a" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index b521a8073b..889b659a0b 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -4945,6 +4945,10 @@ msgstr "" "Ano – změnit tato nastavení a automaticky povolit spirálový režim\n" "Ne – tentokrát nepoužít spirálový režim" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Tisk" @@ -5404,10 +5408,6 @@ msgstr "Neplatný vzor. Použijte N, N#K nebo seznam oddělený čárkami s voli msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Neplatný formát. Očekávaný vektorový formát: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Systémoví agenti" @@ -6374,6 +6374,12 @@ msgstr "Uložit projekt jako" msgid "Save current project as" msgstr "Uložit aktuální projekt jako" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importovat 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8193,6 +8199,12 @@ msgstr "Potvrďte prosím, že je G-code v těchto předvolbách bezpečný, aby msgid "Customized Preset" msgstr "Přizpůsobená předvolba" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Názvy komponent v souboru STEP nejsou ve formátu UTF-8!" @@ -8579,6 +8591,17 @@ msgstr "Uložit rozřezaný soubor jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Soubor %s byl odeslán do úložiště tiskárny a lze jej zobrazit na tiskárně." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publikovat" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Typ trysky není nastaven. Nastavte prosím trysku a zkuste to znovu." @@ -9756,9 +9779,6 @@ msgstr "Přejít na webovou stránku publikace modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Poznámka: Příprava může trvat několik minut. Buďte prosím trpěliví." -msgid "Publish" -msgstr "Publikovat" - msgid "Publish was canceled" msgstr "Publikování bylo zrušeno" @@ -9774,6 +9794,24 @@ msgstr "Nahrávání dat" msgid "Jump to webpage" msgstr "Přejít na webovou stránku" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Uložit %s jako" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 436966457a..fe17251f32 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -4851,6 +4851,9 @@ msgstr "" "Ja - Diese Einstellungen ändern und den Spiralmodus automatisch aktivieren\n" "Nein - Spiralmodus nicht aktivieren" +msgid "N/A" +msgstr "Nicht verfügbar" + msgid "Printing" msgstr "Drucken" @@ -5310,9 +5313,6 @@ msgstr "Ungültiges Muster. Verwenden Sie N, N#K oder eine durch Kommas getrennt msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\"" -msgid "N/A" -msgstr "Nicht verfügbar" - # AI Translated msgid "System agents" msgstr "Systemagenten" @@ -6266,6 +6266,12 @@ msgstr "Projekt speichern als" msgid "Save current project as" msgstr "Aktuelles Projekt speichern als" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8063,6 +8069,12 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher msgid "Customized Preset" msgstr "Benutzerdefinierte Profile" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF8-Format!" @@ -8451,6 +8463,17 @@ msgstr "Geslicte Datei speichern unter:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Veröffentlichen" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut." @@ -9590,9 +9613,6 @@ msgstr "Zur Modellveröffentlichungs-Webseite springen" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Hinweis: Die Vorbereitung kann einige Minuten dauern. Bitte haben Sie Geduld." -msgid "Publish" -msgstr "Veröffentlichen" - msgid "Publish was canceled" msgstr "Veröffentlichung wurde abgebrochen" @@ -9608,6 +9628,24 @@ msgstr "Daten werden hochgeladen" msgid "Jump to webpage" msgstr "Zu einer Website springen" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s speichern als" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 88fb455959..0da5e9d2b5 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -4561,6 +4561,9 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "" +msgid "N/A" +msgstr "" + msgid "Printing" msgstr "" @@ -5009,9 +5012,6 @@ msgstr "" msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "" -msgid "N/A" -msgstr "" - msgid "System agents" msgstr "" @@ -5941,6 +5941,12 @@ msgstr "" msgid "Save current project as" msgstr "" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "" @@ -7659,6 +7665,12 @@ msgstr "" msgid "Customized Preset" msgstr "" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "" @@ -8019,6 +8031,17 @@ msgstr "" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "" @@ -9066,9 +9089,6 @@ msgstr "" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "" -msgid "Publish" -msgstr "" - msgid "Publish was canceled" msgstr "" @@ -9084,6 +9104,24 @@ msgstr "" msgid "Jump to webpage" msgstr "" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 9c5127e50a..ded492a284 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -4723,6 +4723,9 @@ msgstr "" "Sí - Cambiar estos ajustes y activar el modo espiral automáticamente\n" "No - Dejar de usar el modo espiral esta vez" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Imprimiendo" @@ -5176,9 +5179,6 @@ msgstr "Patrón inválido. Use N, N#K, o una lista separada por comas con #K opc msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vector esperado: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Agentes del sistema" @@ -6123,6 +6123,12 @@ msgstr "Guardar proyecto como" msgid "Save current project as" msgstr "Guardar el proyecto actual como" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7877,6 +7883,12 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p msgid "Customized Preset" msgstr "Perfil Personalizado" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" @@ -8254,6 +8266,17 @@ msgstr "Guardar el archivo laminado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo." @@ -9365,9 +9388,6 @@ msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "La publicación fue cancelada" @@ -9383,6 +9403,24 @@ msgstr "Cargando datos" msgid "Jump to webpage" msgstr "Ir a la página web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Guardar %s como" diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index 03e6d6685d..e950ea3d2e 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -4764,6 +4764,9 @@ msgstr "" "Bai - Aldatu ezarpen hauek eta gaitu espiral/loreontzi modua automatikoki\n" "Ez - Utzi bertan behera espiral modua gaitzea" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Inprimatzen" @@ -5224,9 +5227,6 @@ msgstr "Patroi baliogabea. Erabili N, N#K edo komaz bereizitako zerrenda bat, sa msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formatuak ez du balio. Espero den formatu bektoriala: \"%1%\"" -msgid "N/A" -msgstr "N/A" - msgid "System agents" msgstr "Sistema-agenteak" @@ -6168,6 +6168,12 @@ msgstr "Gorde proiektua honela" msgid "Save current project as" msgstr "Gorde uneko proiektua honela" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Inportatu 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7945,6 +7951,12 @@ msgstr "Berretsi aurrezarpen hauetako G-codea segurua dela, makinari kalterik ez msgid "Customized Preset" msgstr "Aurrezarpen pertsonalizatua" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP fitxategiko osagai-izena(k) ez dago/daude UTF-8 formatuan!" @@ -8321,6 +8333,17 @@ msgstr "Gorde xerratutako fitxategia honela:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s fitxategia inprimagailuaren biltegiratze-eremura bidali da eta inprimagailuan ikus daiteke." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Argitaratu" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Pita mota ez dago ezarrita. Ezarri pita eta saiatu berriro." @@ -9434,9 +9457,6 @@ msgstr "Joan modeloa argitaratzeko web-orrira" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Oharra: prestaketak minutu batzuk iraun ditzake. Izan pazientzia." -msgid "Publish" -msgstr "Argitaratu" - msgid "Publish was canceled" msgstr "Argitaratzea bertan behera utzi da" @@ -9452,6 +9472,24 @@ msgstr "Datuak igotzen" msgid "Jump to webpage" msgstr "Joan web-orrira" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Gorde %s honela" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index fc58381106..5bd15b57cd 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -4801,6 +4801,9 @@ msgstr "" "Oui - Modifiez ces paramètres et activez automatiquement le mode spirale/vase\n" "Non - Annuler l'activation du mode spirale" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Impression" @@ -5260,9 +5263,6 @@ msgstr "Motif invalide. Utilisez N, N#K, ou une liste séparée par des virgules msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Agents système" @@ -6215,6 +6215,12 @@ msgstr "Enregistrer le projet sous" msgid "Save current project as" msgstr "Enregistrer le projet actuel sous" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importer des fichiers 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8000,6 +8006,12 @@ msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs af msgid "Customized Preset" msgstr "Préréglage personnalisé" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Le nom des composants dans le fichier STEP n'est pas au format UTF-8 !" @@ -8377,6 +8389,17 @@ msgstr "Enregistrer le fichier découpé sous :" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publier" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Le type de buse n'est pas défini. Veuillez définir la buse et réessayer." @@ -9504,9 +9527,6 @@ msgstr "Accéder à la page internet de publication des modèles" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Remarque : La préparation peut prendre plusieurs minutes. Veuillez patienter." -msgid "Publish" -msgstr "Publier" - msgid "Publish was canceled" msgstr "La publication a été annulée" @@ -9522,6 +9542,24 @@ msgstr "Téléversement des données" msgid "Jump to webpage" msgstr "Ouvrir la page internet" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Enregistrer %s sous" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 9f8a849884..1f8c1022bb 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4897,6 +4897,10 @@ msgstr "" "Igen - Módosítsd ezeket a beállításokat, és automatikusan kapcsold be a spirál módot\n" "Nem - Most ne kapcsold be a spirál módot" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Nyomtatás" @@ -5356,10 +5360,6 @@ msgstr "Érvénytelen minta. Használj N, N#K formátumot, vagy vesszővel elvá msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Rendszerügynökök" @@ -6317,6 +6317,12 @@ msgstr "Projekt mentése másként" msgid "Save current project as" msgstr "Jelenlegi projekt mentése másként" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8115,6 +8121,12 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k msgid "Customized Preset" msgstr "Egyedi beállítás" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!" @@ -8503,6 +8515,17 @@ msgstr "Szeletelt fájl mentése mint:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Közzététel" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra." @@ -9664,9 +9687,6 @@ msgstr "Ugrás a modell közzététele weboldalra" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Megjegyzés: Az előkészítés több percig is eltarthat. Kérlek, várj." -msgid "Publish" -msgstr "Közzététel" - msgid "Publish was canceled" msgstr "A közzététel törlésre került" @@ -9682,6 +9702,24 @@ msgstr "Adatok feltöltése" msgid "Jump to webpage" msgstr "Ugrás a weboldalra" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s mentése" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index bc36e08d25..ac9d5531e5 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4899,6 +4899,9 @@ msgstr "" "Sì - Modifica queste impostazioni ed abilita la modalità spirale automaticamente\n" "No - Annulla l'attivazione della modalità a spirale" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Stampa" @@ -5358,9 +5361,6 @@ msgstr "Schema non valido. Utilizzare N, N#K o un elenco separato da virgole con msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\"" -msgid "N/A" -msgstr "N/D" - # AI Translated msgid "System agents" msgstr "Agenti di sistema" @@ -6319,6 +6319,12 @@ msgstr "Salva progetto con nome" msgid "Save current project as" msgstr "Salva progetto corrente con nome" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8119,6 +8125,12 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s msgid "Customized Preset" msgstr "Profilo personalizzato" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF8!" @@ -8502,6 +8514,17 @@ msgstr "Salva file elaborato con nome:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Pubblica" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare." @@ -9682,9 +9705,6 @@ msgstr "Vai alla pagina web di pubblicazione del modello" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza." -msgid "Publish" -msgstr "Pubblica" - msgid "Publish was canceled" msgstr "La pubblicazione è stata annullata" @@ -9700,6 +9720,24 @@ msgstr "Caricamento dati" msgid "Jump to webpage" msgstr "Vai alla pagina web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salva %s con nome" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 1b70ddbf67..55ad80089b 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4912,6 +4912,10 @@ msgstr "" "はい - 変更して、スパイラルモードを有効にします\n" "いいえ - 変更せず、スパイラルモードを有効しません" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "造形中" @@ -5370,10 +5374,6 @@ msgstr "無効なパターンです。N、N#K、またはオプション#K付き msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無効なフォーマット、%1%であるはずです。" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "システムエージェント" @@ -6328,6 +6328,12 @@ msgstr "プロジェクトを名前を付けて保存" msgid "Save current project as" msgstr "プロジェクトを名前を付けて保存" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMFをインポート" @@ -8133,6 +8139,12 @@ msgstr "これらのプリセット内のG-codeがマシンに損傷を与えな msgid "Customized Preset" msgstr "カスタマイズされたプリセット" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "ファイルのエンコーディング方式はUTF8形式ではありません" @@ -8521,6 +8533,17 @@ msgstr "名前を付けて保存:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%sを送信しました、プリンターにて確認できます" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "公開する" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ノズルタイプが設定されていません。ノズルを設定して再試行してください。" @@ -9704,9 +9727,6 @@ msgstr "モデル公開ページに移動" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "注意: 準備するには数分かかる場合があります、暫くお待ち下さい。" -msgid "Publish" -msgstr "公開する" - msgid "Publish was canceled" msgstr "公開は取り消しました" @@ -9722,6 +9742,24 @@ msgstr "データをアップロード中" msgid "Jump to webpage" msgstr "ウェブページに移動" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%sを名前つけて保存" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 767674e525..66ce7b49a1 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -4923,6 +4923,10 @@ msgstr "" "예 - 이 설정을 변경하고 나선 모드를 자동으로 활성화합니다\n" "아니오 - 이번에는 나선 모드 사용을 포기합니다" +# AI Translated +msgid "N/A" +msgstr "해당 없음" + msgid "Printing" msgstr "출력 중" @@ -5382,10 +5386,6 @@ msgstr "잘못된 패턴입니다. N, N#K 또는 항목당 선택적 #K가 있 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "잘못된 형식입니다. 필요한 벡터 형식: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "해당 없음" - # AI Translated msgid "System agents" msgstr "시스템 에이전트" @@ -6342,6 +6342,12 @@ msgstr "프로젝트 다른 이름으로 저장" msgid "Save current project as" msgstr "현재 프로젝트 다른 이름으로 저장" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF 가져오기" @@ -8151,6 +8157,12 @@ msgstr "이러한 사전 설정 내의 Gcode가 기계 손상을 방지할 수 msgid "Customized Preset" msgstr "사용자 정의 프리셋" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 파일 내부의 구성 요소 이름이 UTF8 형식이 아닙니다!" @@ -8554,6 +8566,17 @@ msgstr "슬라이스 파일을 다음으로 저장:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s 파일이 프린터의 저장 공간으로 전송되었으며 프린터에서 볼 수 있습니다." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "게시" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "노즐 유형이 설정되지 않았습니다. 노즐을 설정하고 다시 시도하세요." @@ -9793,9 +9816,6 @@ msgstr "모델 게시 웹 페이지로 이동" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "참고: 준비하는 데 몇 분 정도 걸릴 수 있습니다. 조금만 기다려 주십시오." -msgid "Publish" -msgstr "게시" - msgid "Publish was canceled" msgstr "게시가 취소되었습니다" @@ -9812,6 +9832,24 @@ msgstr "데이터 업로드 중" msgid "Jump to webpage" msgstr "웹 페이지로 이동" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s을(를) 다음으로 저장" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index ad5edffc9a..866f5fa3f6 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -4886,6 +4886,9 @@ msgstr "" "Taip – pakeisti šiuos nustatymus ir automatiškai įjungti spiralinį režimą\n" "Ne – nenaudoti spiralinio režimo" +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Spausdinimas" @@ -5345,9 +5348,6 @@ msgstr "Neteisingas šablonas. Naudokite N, N#K arba kableliais atskirtą sąra msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Netinkamas formatas. Tinkamas vektorinis formatas: \"%1%\"" -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Sisteminiai agentai" @@ -6305,6 +6305,12 @@ msgstr "Įrašyti projektą kaip" msgid "Save current project as" msgstr "Įrašyti dabartinį projektą kaip" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuoti 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8110,6 +8116,12 @@ msgstr "Patvirtinkite, kad šiuose profiliuose esantis G-kodas yra saugus, kad i msgid "Customized Preset" msgstr "Pritaikytas profilis" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!" @@ -8497,6 +8509,17 @@ msgstr "Išsaugoti susluoksniuotą failą kaip:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Failas %s išsiųstas į spausdintuvo laikmeną ir gali būti peržiūrimas spausdintuve." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Talpinti" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Purkštuko tipas nenustatytas. Nustatykite purkštuką ir bandykite dar kartą." @@ -9622,9 +9645,6 @@ msgstr "Pereiti į modelio talpinimo interneto puslapį" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Pastaba: paruošimas gali užtrukti kelias minutes. Būkite kantrūs." -msgid "Publish" -msgstr "Talpinti" - msgid "Publish was canceled" msgstr "Publikavimas buvo atšauktas" @@ -9640,6 +9660,24 @@ msgstr "Įkeliami duomenys" msgid "Jump to webpage" msgstr "Pereiti į interneto puslapį" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Išsaugoti %s kaip" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 28ad63d455..470aa9fa86 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5317,6 +5317,9 @@ msgstr "" "Ja - Pas de instellingen aan en zet de vaas modus automatisch aan\n" "Nee - Pas de vaas modus deze keer niet toe" +msgid "N/A" +msgstr "N/B" + msgid "Printing" msgstr "Printen" @@ -5853,9 +5856,6 @@ msgstr "Ongeldig patroon. Gebruik N, N#K of een door komma's gescheiden lijst me msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Onjuist formaat. Het Vector formaat wordt verwacht: \"%1%\"" -msgid "N/A" -msgstr "N/B" - # AI Translated msgid "System agents" msgstr "Systeemagenten" @@ -6880,6 +6880,12 @@ msgstr "Bewaar project als" msgid "Save current project as" msgstr "Bewaar huidig project als" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF importeren" @@ -8860,6 +8866,12 @@ msgstr "Controleer of de G-codes in deze presets veilig zijn om schade aan de ma msgid "Customized Preset" msgstr "Aangepaste voorinstelling" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Naam van componenten in step-bestand is niet UTF8-formaat!" @@ -9271,6 +9283,17 @@ msgstr "Bewaar het geslicede bestand als:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden bekeken." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publiceren" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Het mondstuktype is niet ingesteld. Stel het mondstuk in en probeer het opnieuw." @@ -10554,9 +10577,6 @@ msgstr "Ga naar de website om het model te publiceren" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notitie: het voorbereiden kan enkele minuten duren. Even geduld alstublieft." -msgid "Publish" -msgstr "Publiceren" - msgid "Publish was canceled" msgstr "Het publiceren is geannuleerd" @@ -10573,6 +10593,24 @@ msgstr "Gegevens uploaden" msgid "Jump to webpage" msgstr "Ga naar de website" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Bewaar %s als" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index e8acc62a9b..4adcf037ca 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -5005,6 +5005,10 @@ msgstr "" "Tak - Zmień te ustawienia automatycznie i włącz tryb Wazy\n" "Nie - Zrezygnuj tym razem z używania trybu Wazy" +# AI Translated +msgid "N/A" +msgstr "Nie dotyczy" + msgid "Printing" msgstr "Drukowanie" @@ -5472,10 +5476,6 @@ msgstr "Nieprawidłowy wzorzec. Użyj N, N#K lub listy rozdzielonej przecinkami msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Nieprawidłowy format. Oczekiwano formatu wektorowego: „%1%”" -# AI Translated -msgid "N/A" -msgstr "Nie dotyczy" - # AI Translated msgid "System agents" msgstr "Agenci systemowi" @@ -6461,6 +6461,12 @@ msgstr "Zapisz projekt jako" msgid "Save current project as" msgstr "Zapisz bieżący projekt jako" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuj 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8309,6 +8315,12 @@ msgstr "Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zap msgid "Customized Preset" msgstr "Dostosowany profil" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF8!" @@ -8711,6 +8723,17 @@ msgstr "Zapisz plik po wykonaniu cięcia jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Plik %s został wysłany do pamięci drukarki i można go obejrzeć na urządzeniu." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Opublikuj" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nie ustawiono typu dyszy Wprowadź ustawienia dyszy i spróbuj ponownie." @@ -9949,9 +9972,6 @@ msgstr "Przejdź do strony publikacji modelu" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Uwaga: Przygotowanie może zająć kilka minut. Proszę o cierpliwość." -msgid "Publish" -msgstr "Opublikuj" - msgid "Publish was canceled" msgstr "Publikacja została anulowana" @@ -9968,6 +9988,24 @@ msgstr "Przesyłanie danych" msgid "Jump to webpage" msgstr "Przejdź na stronę" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Zapisz %s jako" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 1b39d4a159..0e1e34c7d7 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -4735,6 +4735,9 @@ msgstr "" "Sim - Alterar essas configurações e ativar o modo espiral/vaso automaticamente\n" "Não - Cancelar ativação do modo espiral" +msgid "N/A" +msgstr "N/D" + msgid "Printing" msgstr "Imprimindo" @@ -5188,9 +5191,6 @@ msgstr "Padrão inválido. Use N, N#K, ou uma lista separa por vírgulas com #K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Formato inválido. Formato de vetor esperado: \"%1%\"" -msgid "N/A" -msgstr "N/D" - msgid "System agents" msgstr "Agentes do sistema" @@ -6137,6 +6137,12 @@ msgstr "Salvar projeto como" msgid "Save current project as" msgstr "Salvar o projeto atual como" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7897,6 +7903,12 @@ msgstr "Por favor, confirme se o G-code dentro dessas predefinições é seguro msgid "Customized Preset" msgstr "Predefinição Personalizada" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Os nomes dos componentes dentro do arquivo STEP não estão no formato UTF-8!" @@ -8277,6 +8289,17 @@ msgstr "Salvar arquivo fatiado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser visualizado na impressora." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicar" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "O tipo de bico não está configurado. Configure o bico e tente novamente." @@ -9406,9 +9429,6 @@ msgstr "Ir para a página web de publicação de modelos" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Nota: A preparação pode levar vários minutos. Por favor, seja paciente." -msgid "Publish" -msgstr "Publicar" - msgid "Publish was canceled" msgstr "Publicação cancelada" @@ -9424,6 +9444,24 @@ msgstr "Enviando dados" msgid "Jump to webpage" msgstr "Ir para a página web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Salvar %s como" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2372471707..debec4f832 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -4883,6 +4883,11 @@ msgid "" "No - Cancel enabling spiral mode" msgstr "Использовать эти настройки и режим вазы?" +# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо +# символов +msgid "N/A" +msgstr "–" + msgid "Printing" msgstr "Печать" @@ -5352,11 +5357,6 @@ msgstr "Недопустимый шаблон. Используйте N, N#K и msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Недопустимый формат. Ожидаемый векторный формат: \"%1%\"" -# Не знаю, как и почему, но это, похоже, исправляет "вопросики" вместо -# символов -msgid "N/A" -msgstr "–" - msgid "System agents" msgstr "Системные агенты" @@ -6370,6 +6370,12 @@ msgstr "Сохранить проект как" msgid "Save current project as" msgstr "Сохранить текущий проект как" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8168,6 +8174,12 @@ msgstr "Во избежание повреждения принтера убед msgid "Customized Preset" msgstr "Пользовательский профиль" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Имена компонентов внутри файла STEP не в формате UTF8." @@ -8556,6 +8568,17 @@ msgstr "Сохранить нарезанный файл как:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Опубликовать" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Не указан тип сопла. Укажите его и попробуйте ещё раз." @@ -9698,9 +9721,6 @@ msgstr "Перейти на веб-страницу публикации мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примечание: подготовка может занять несколько минут. Пожалуйста, наберитесь терпения." -msgid "Publish" -msgstr "Опубликовать" - msgid "Publish was canceled" msgstr "Публикация была отменена" @@ -9716,6 +9736,24 @@ msgstr "Отправка данных" msgid "Jump to webpage" msgstr "Перейти на страницу" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Сохранить %s как" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 432000f96d..7add432a60 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5379,6 +5379,10 @@ msgstr "" "JA -Ändra dessa inställningar och möjliggör Spiral läge automatiskt\n" "NEJ -Avbryt Spiral läge denna gång" +# AI Translated +msgid "N/A" +msgstr "Ej tillämpligt" + msgid "Printing" msgstr "Utskrift pågår" @@ -5928,10 +5932,6 @@ msgstr "Ogiltigt mönster. Använd N, N#K eller en kommaseparerad lista med valf msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Ogiltligt format. Förväntat vector format: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Ej tillämpligt" - # AI Translated msgid "System agents" msgstr "Systemagenter" @@ -6964,6 +6964,12 @@ msgstr "Spara Projekt som" msgid "Save current project as" msgstr "Spara nuvarande projekt som" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importera 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8952,6 +8958,12 @@ msgstr "Bekräfta att G-koderna i dessa inställningar är säkra för att förh msgid "Customized Preset" msgstr "Anpassad inställning" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Komponent namnet i STEP filen är inte UTF8 format!" @@ -9364,6 +9376,17 @@ msgstr "Spara beredningen som:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Filen %s har skickats till skrivarens lagringsutrymme och kan visas på skrivaren." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Publicera" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozzeltypen är inte angiven. Ange nozzeln och försök igen." @@ -10668,9 +10691,6 @@ msgstr "Växla till modell publicerings hemsidan" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Notera: Förberedelserna kan ta flera minuter. Vänligen vänta." -msgid "Publish" -msgstr "Publicera" - msgid "Publish was canceled" msgstr "Publiceringen avbröts" @@ -10687,6 +10707,24 @@ msgstr "Laddar upp data" msgid "Jump to webpage" msgstr "Växla till hemsidan" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Spara %s som" diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index a0c0079125..60163fe29b 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -4879,6 +4879,9 @@ msgstr "" "ใช่ - เปลี่ยนการตั้งค่าเหล่านี้และเปิดใช้งานโหมดเกลียวโดยอัตโนมัติ\n" "ไม่ - เลิกใช้โหมดเกลียวในครั้งนี้" +msgid "N/A" +msgstr "ไม่มี" + msgid "Printing" msgstr "กำลังพิมพ์" @@ -5338,9 +5341,6 @@ msgstr "รูปแบบไม่ถูกต้อง ใช้ N, N#K หร msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "รูปแบบไม่ถูกต้อง รูปแบบเวกเตอร์ที่ต้องการ: \"%1%\"" -msgid "N/A" -msgstr "ไม่มี" - # AI Translated msgid "System agents" msgstr "เอเจนต์ระบบ" @@ -6296,6 +6296,12 @@ msgstr "บันทึกโปรเจกต์เป็น" msgid "Save current project as" msgstr "บันทึกโครงการปัจจุบันเป็น" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "นำเข้า 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8074,6 +8080,12 @@ msgstr "โปรดยืนยันว่ารหัส G ภายในค msgid "Customized Preset" msgstr "ค่าที่ตั้งไว้ล่วงหน้าที่กำหนดเอง" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF8!" @@ -8457,6 +8469,17 @@ msgstr "บันทึกไฟล์ที่สไลซ์เป็น:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "ไฟล์ %s ถูกส่งไปยังพื้นที่เก็บข้อมูลของเครื่องพิมพ์แล้ว และสามารถดูได้บนเครื่องพิมพ์" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "เผยแพร่" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "ไม่ได้ตั้งค่าประเภทหัวฉีด โปรดตั้งหัวฉีดแล้วลองอีกครั้ง" @@ -9595,9 +9618,6 @@ msgstr "ข้ามไปที่โมเดลเผยแพร่หน้ msgid "Note: The preparation may take several minutes. Please be patient." msgstr "หมายเหตุ: การเตรียมการอาจใช้เวลาหลายนาที กรุณาอดทน." -msgid "Publish" -msgstr "เผยแพร่" - msgid "Publish was canceled" msgstr "การเผยแพร่ถูกยกเลิก" @@ -9613,6 +9633,24 @@ msgstr "กำลังอัพโหลดข้อมูล" msgid "Jump to webpage" msgstr "ข้ามไปที่หน้าเว็บ" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "บันทึก %s เป็น" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index a31d2216f4..5d7a6707c3 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-08-04 19:36+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -4967,6 +4967,10 @@ msgstr "" "Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" +# AI Translated +msgid "N/A" +msgstr "Yok" + msgid "Printing" msgstr "Baskı" @@ -5426,10 +5430,6 @@ msgstr "Geçersiz kalıp. N, N#K veya giriş başına isteğe bağlı #K ile vir msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "Yok" - # AI Translated msgid "System agents" msgstr "Sistem aracıları" @@ -6390,6 +6390,12 @@ msgstr "Projeyi farklı kaydet" msgid "Save current project as" msgstr "Mevcut projeyi farklı kaydet" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" @@ -8197,6 +8203,12 @@ msgstr "Lütfen bu ön ayarlar içindeki G-kodlarının makineye herhangi bir za msgid "Customized Preset" msgstr "Özel Ayar" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Step dosyasındaki bileşenlerin adı UTF8 formatında değil!" @@ -8582,6 +8594,17 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda görüntülenebiliyor." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Yayınla" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Nozul tipi ayarlanmamış. Lütfen nozulu ayarlayın ve tekrar deneyin." @@ -9765,9 +9788,6 @@ msgstr "Model yayınlama web sayfasına git" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Not: Hazırlık birkaç dakika sürebilir. Lütfen sabırlı olun." -msgid "Publish" -msgstr "Yayınla" - msgid "Publish was canceled" msgstr "Yayınlama iptal edildi" @@ -9783,6 +9803,24 @@ msgstr "Veriler yükleniyor" msgid "Jump to webpage" msgstr "Web sayfasına atla" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "%s'yi farklı kaydet" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 4c3cc1d56c..fbbb095cb5 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -4879,6 +4879,9 @@ msgstr "" "Так – змінити ці налаштування та автоматично включити режим спіральна ваза\n" "Ні - цього разу відмовитися від використання режиму спіральна ваза" +msgid "N/A" +msgstr "Н/Д" + msgid "Printing" msgstr "Друк" @@ -5350,9 +5353,6 @@ msgstr "Некоректний шаблон. Використовуйте N, N#K msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Невірний формат. Очікуваний векторний формат: \"%1%\"" -msgid "N/A" -msgstr "Н/Д" - # AI Translated msgid "System agents" msgstr "Системні агенти" @@ -6333,6 +6333,12 @@ msgstr "Зберегти проєкт як" msgid "Save current project as" msgstr "Зберегти поточний проєкт як" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Імпорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8179,6 +8185,12 @@ msgstr "Будь ласка, підтвердьте, що G-коди в цих msgid "Customized Preset" msgstr "Пристосований пресет" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + # AI Translated msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Назви компонентів усередині файлу STEP не у форматі UTF8!" @@ -8567,6 +8579,17 @@ msgstr "Зберегти нарізаний файл як:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s надіслано до памʼяті принтера та доступний для перегляду на принтері." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Публікувати" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Тип сопла не встановлений. Будь ласка, оберіть сопло та спробуйте ще раз." @@ -9742,9 +9765,6 @@ msgstr "Перейти на веб-сторінку публікації мод msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Примітка. Підготовка може тривати кілька хвилин. Будь ласка, будьте терплячі." -msgid "Publish" -msgstr "Публікувати" - msgid "Publish was canceled" msgstr "Публікація скасована" @@ -9760,6 +9780,24 @@ msgstr "Відвантаження даних" msgid "Jump to webpage" msgstr "Перейти на вебсторінку" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Зберегти %s як" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 00a9a558ba..519a6c3b25 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -5135,6 +5135,10 @@ msgstr "" "Yes - Thay đổi các cài đặt này và bật chế độ spiral tự động\n" "No - Từ bỏ dùng chế độ spiral lần này" +# AI Translated +msgid "N/A" +msgstr "N/A" + msgid "Printing" msgstr "Đang in" @@ -5653,10 +5657,6 @@ msgstr "Mẫu không hợp lệ. Dùng N, N#K, hoặc danh sách phân cách d msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Định dạng không hợp lệ. Mong đợi định dạng vector: \"%1%\"" -# AI Translated -msgid "N/A" -msgstr "N/A" - # AI Translated msgid "System agents" msgstr "Tác nhân hệ thống" @@ -6681,6 +6681,12 @@ msgstr "Lưu dự án thành" msgid "Save current project as" msgstr "Lưu dự án hiện tại thành" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Nhập 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8585,6 +8591,12 @@ msgstr "Vui lòng xác nhận G-code trong các preset này an toàn để ngăn msgid "Customized Preset" msgstr "Preset tùy chỉnh" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF8!" @@ -8988,6 +9000,17 @@ msgstr "Lưu file đã slice dưới dạng:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "File %s đã được gửi đến không gian lưu trữ của máy in và có thể được xem trên máy in." +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "Xuất bản" + # AI Translated msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "Chưa đặt loại đầu phun. Vui lòng đặt đầu phun rồi thử lại." @@ -10254,9 +10277,6 @@ msgstr "Chuyển đến trang web xuất bản model" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "Lưu ý: Chuẩn bị có thể mất vài phút. Vui lòng kiên nhẫn." -msgid "Publish" -msgstr "Xuất bản" - msgid "Publish was canceled" msgstr "Xuất bản đã bị hủy" @@ -10273,6 +10293,24 @@ msgstr "Đang tải dữ liệu lên" msgid "Jump to webpage" msgstr "Chuyển đến trang web" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "Lưu %s dưới dạng" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 133e0815a4..2abe2fc5d2 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -4735,6 +4735,9 @@ msgstr "" "是 - 自动调整这些设置并开启旋转模式\n" "否 - 暂不使用旋转模式" +msgid "N/A" +msgstr "不适用" + msgid "Printing" msgstr "打印中" @@ -5194,9 +5197,6 @@ msgstr "无效的模式。请使用 N、N#K 或逗号分隔的列表(每个条 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "无效格式,应该是\"%1%\"这种数组格式" -msgid "N/A" -msgstr "不适用" - # AI Translated msgid "System agents" msgstr "系统代理" @@ -6151,6 +6151,12 @@ msgstr "项目另存为" msgid "Save current project as" msgstr "项目另存为" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7905,6 +7911,12 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造 msgid "Customized Preset" msgstr "自定义的预设" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 文件中的部件名称不是 UTF8 格式!" @@ -8286,6 +8298,17 @@ msgstr "切片文件另存为:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "发布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "未设置喷嘴类型。请设置喷嘴并重试。" @@ -9417,9 +9440,6 @@ msgstr "跳转到发布页面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:发布前需要一些准备时间,请耐心等待。" -msgid "Publish" -msgstr "发布" - msgid "Publish was canceled" msgstr "发布已取消" @@ -9435,6 +9455,24 @@ msgstr "正在上传数据" msgid "Jump to webpage" msgstr "跳转到网页" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存%s为" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index cf6a2519c3..839e7cdb2b 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-19 14:07-0300\n" +"POT-Creation-Date: 2026-08-21 14:25+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -4864,6 +4864,9 @@ msgstr "" "是 - 自動調整這些設定並啟用花瓶模式\n" "否 - 不使用花瓶模式" +msgid "N/A" +msgstr "不適用" + msgid "Printing" msgstr "列印中" @@ -5323,9 +5326,6 @@ msgstr "無效的格式。請使用 N、N#K 或逗號分隔的清單,每個項 msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "無效格式,應該是「%1%」這種格式" -msgid "N/A" -msgstr "不適用" - # AI Translated msgid "System agents" msgstr "系統代理程式" @@ -6281,6 +6281,12 @@ msgstr "另存專案為" msgid "Save current project as" msgstr "將目前專案另存為" +msgid "Publish 3MF" +msgstr "" + +msgid "Export a 3MF file with the selected settings embedded" +msgstr "" + msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8066,6 +8072,12 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝 msgid "Customized Preset" msgstr "自訂預設" +msgid "Some published settings could not be applied:" +msgstr "" + +msgid "Some filament slots were changed to match the published materials:" +msgstr "" + msgid "Component name(s) inside step file not in UTF8 format!" msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!" @@ -8452,6 +8464,17 @@ msgstr "切片檔案另存為:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。" +msgid "Publish 3MF file as:" +msgstr "" + +msgid "" +"Failed to export the published 3MF file.\n" +"Please check whether the folder exists online or if other programs have the file open." +msgstr "" + +msgid "Publish" +msgstr "發布" + msgid "The nozzle type is not set. Please set the nozzle and try again." msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。" @@ -9590,9 +9613,6 @@ msgstr "發布頁面" msgid "Note: The preparation may take several minutes. Please be patient." msgstr "提示:發布前需要一些準備時間,請耐心等待。" -msgid "Publish" -msgstr "發布" - msgid "Publish was canceled" msgstr "發布已取消" @@ -9608,6 +9628,24 @@ msgstr "正在上傳資料" msgid "Jump to webpage" msgstr "跳至網頁" +msgid "Material" +msgstr "" + +msgid "Publish 3MF..." +msgstr "" + +msgid "Select which settings to embed in the 3MF file" +msgstr "" + +msgid "Full Publish" +msgstr "" + +msgid "Embed the entire filament of this slot in the 3MF file" +msgstr "" + +msgid "Filter non-selected" +msgstr "" + #, c-format, boost-format msgid "Save %s as" msgstr "另存 %s 為" diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 881560f93c..cd8b82a489 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -34,6 +34,20 @@ enum { kPublishFilterNonSelected }; +// Tree-style flags shared by the outer tabs and every group's inner tabs. +constexpr long s_tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | + wxTR_FULL_ROW_HIGHLIGHT; + +// The author's hex colour for a filament slot (empty when the slot is out of range); shared by +// the header chip, the inner-tab chip and the DPI rescale paths. +std::string filament_color_hex(const DynamicPrintConfig& full, size_t slot) +{ + if (const auto* colours = full.opt("filament_colour")) + if (slot < colours->size()) + return colours->get_at(slot); + return std::string(); +} + PublishMaterialIdentity material_identity(size_t slot, const DynamicPrintConfig& full) { PublishMaterialIdentity identity; @@ -114,7 +128,6 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) e.Skip(); }); f_sizer->Add(m_filter_box, 1, wxEXPAND); - Bind(wxEVT_SET_FOCUS, [this](auto&) { m_filter_box->SetFocus(); }); m_fb_sizer = new wxBoxSizer(wxHORIZONTAL); auto create_btn = [this, f_bar](wxString title, bool select) { @@ -129,6 +142,17 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) create_btn(_L("All"), true); create_btn(_L("None"), false); + // Indicator for the menu's pseudo filters: sits where All/None go while they are hidden. + // Labels reuse the menu entries (no new strings); clicking the chip returns to text + // filtering, keeping the search box contents. + m_pseudo_chip = new wxStaticText(f_bar, wxID_ANY, ""); + m_pseudo_chip->SetForegroundColour("#009687"); + m_pseudo_chip->SetCursor(wxCURSOR_HAND); + m_pseudo_chip->SetFont(Label::Body_13); + m_pseudo_chip->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent&) { apply_filter(m_filter_ctrl->GetValue()); }); + m_pseudo_chip->Hide(); + f_sizer->Add(m_pseudo_chip, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + m_menu_button = new wxStaticBitmap(f_bar, wxID_ANY, m_menu.bmp()); m_menu_button->SetCursor(wxCURSOR_HAND); m_menu_button->Bind(wxEVT_LEFT_DOWN, &PublishSettingsDialog::show_menu, this); @@ -136,9 +160,7 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) f_bar->SetSizerAndFit(f_sizer); - constexpr long tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | - wxTR_FULL_ROW_HIGHLIGHT; - m_outer_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, tab_style); + m_outer_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); m_outer_tabs->SetFont(Label::Body_14); m_outer_tabs->SetBackgroundColour(GetBackgroundColour()); @@ -224,7 +246,7 @@ void PublishSettingsDialog::build_option_model() // Printer group), from the printer tab's "Extruder"/"Extruder N" pages. { size_t g = section_group_for(Section::Printer); - category_index_for(_L("Extruder"), Section::Printer, "custom-gcode_extruder", g, 0); + category_index_for(_L("Extruder"), Section::Printer, g, 0); for (Tab* tab : wxGetApp().tabs_list) { if (tab->m_type != Preset::TYPE_PRINTER) continue; @@ -249,7 +271,7 @@ void PublishSettingsDialog::build_option_model() wxString label, value, unit; if (!option_text(opt_id, pure_key, label, value, unit)) continue; - size_t cat_index = category_index_for(_L("Extruder"), Section::Printer, "custom-gcode_extruder", g, 0); + size_t cat_index = category_index_for(_L("Extruder"), Section::Printer, g, 0); size_t sub_index = subcategory_index_for(cat_index, subcategory, optgroup->icon); add_row_ui(pure_key, label, value, unit, cat_index, sub_index); } @@ -282,18 +304,15 @@ void PublishSettingsDialog::build_option_model() for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { const PublishMaterialIdentity identity = material_identity(slot, full); const wxString title = material_title(slot, bundle, full); - const size_t category_index = category_index_for(title, Section::Material, "custom-gcode_filament", g, slot, identity); + const size_t category_index = category_index_for(title, Section::Material, g, slot, identity); // Material requirement rows: an optional filament colour and/or a // vendor-agnostic material type for this slot, in their own optgroup so they // stay visually separated from the setting rows. { const size_t req_sub = subcategory_index_for(category_index, _L("Material"), "custom-gcode_filament"); - std::string hex; - if (const auto* colours = full.opt("filament_colour")) - if (slot < colours->size()) - hex = colours->get_at(slot); - add_row_ui("filament_colour", _L("Color"), from_u8(hex), wxString(), category_index, req_sub, RowKind::Color); + add_row_ui("filament_colour", _L("Color"), from_u8(filament_color_hex(full, slot)), wxString(), category_index, + req_sub, RowKind::Color); std::string type; if (const auto* types = full.opt("filament_type")) if (slot < types->size()) @@ -340,16 +359,10 @@ void PublishSettingsDialog::build_option_model() for (Tab* tab : wxGetApp().tabs_list) { if (tab->m_type != Preset::TYPE_PRINT) continue; - const auto& icon_map = tab->get_category_icon_map(); - size_t page_index = 0; + size_t page_index = 0; for (const PageShp& page : tab->m_pages) { - wxString category = Tab::translate_category(page->title(), tab->m_type); - // Page icon, keyed by the untranslated page title (per-Tab map). - std::string icon_name; - auto icon_it = icon_map.find(page->title()); - if (icon_it != icon_map.end()) - icon_name = icon_it->second; - const size_t category_index = category_index_for(category, Section::Print, icon_name, g, page_index); + wxString category = Tab::translate_category(page->title(), tab->m_type); + const size_t category_index = category_index_for(category, Section::Print, g, page_index); for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { for (const auto& opt : optgroup->opt_map()) { @@ -440,12 +453,10 @@ size_t PublishSettingsDialog::section_group_for(Section kind) } section.icon_bmp = ScalableBitmap(this, section.icon_name, 16); - constexpr long tab_style = wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | - wxTR_FULL_ROW_HIGHLIGHT; - section.page = new wxPanel(m_outer_host, wxID_ANY); + section.page = new wxPanel(m_outer_host, wxID_ANY); section.page->SetBackgroundColour(GetBackgroundColour()); auto* page_sizer = new wxBoxSizer(wxVERTICAL); - section.tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, tab_style); + section.tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); section.tabs->SetFont(Label::Body_14); section.tabs->SetBackgroundColour(GetBackgroundColour()); page_sizer->Add(section.tabs, 0, wxEXPAND); @@ -466,12 +477,8 @@ size_t PublishSettingsDialog::section_group_for(Section kind) return new_index; } -size_t PublishSettingsDialog::category_index_for(const wxString& title, - Section section, - const std::string& icon_name, - size_t group, - size_t source_index, - const PublishMaterialIdentity& identity) +size_t PublishSettingsDialog::category_index_for( + const wxString& title, Section section, size_t group, size_t source_index, const PublishMaterialIdentity& identity) { for (size_t i : m_sections[group].categories) { Category& existing = m_categories[i]; @@ -485,7 +492,6 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, category.section = section; category.group = group; category.source_index = source_index; - category.icon_name = icon_name; category.filament_type = identity.type; category.filament_vendor = identity.vendor; category.filament_id = identity.id; @@ -494,13 +500,13 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, category.page->SetBackgroundColour(GetBackgroundColour()); auto* page_sizer = new wxBoxSizer(wxVERTICAL); + // The slot's colour chip decorates both the section header and the inner tab. + std::string hex; + if (section == Section::Material) + hex = filament_color_hex(wxGetApp().preset_bundle->full_config(), source_index); + if (section == Section::Material) { auto* header_sizer = new wxBoxSizer(wxHORIZONTAL); - std::string hex; - const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); - if (const auto* colours = full.opt("filament_colour")) - if (source_index < colours->size()) - hex = colours->get_at(source_index); if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); @@ -534,11 +540,6 @@ size_t PublishSettingsDialog::category_index_for(const wxString& title, m_categories.push_back(std::move(category)); m_sections[group].categories.push_back(category_index); if (section == Section::Material) { - std::string hex; - const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); - if (const auto* colours = full.opt("filament_colour")) - if (source_index < colours->size()) - hex = colours->get_at(source_index); if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) m_sections[group].tabs->AppendItem(title, *chip); else @@ -564,7 +565,7 @@ size_t PublishSettingsDialog::subcategory_index_for(size_t category_index, const if (!title.IsEmpty()) { sub.header = new ::StaticLine(category.scroll, false, title, icon); sub.header->SetFont(Label::Head_14); - sub.header->SetForegroundColour("#363636"); + sub.header->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636"))); auto* wrap = new wxBoxSizer(wxVERTICAL); wrap->Add(sub.header, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); sub.item = category.list_sizer->Add(wrap, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(22)); @@ -594,7 +595,6 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, row.section_title = m_sections[category.group].title; row.outer_index = category.group; row.inner_index = category_index; - row.subcategory_index = subcategory_index; const size_t row_index = m_rows.size(); m_rows.push_back(std::move(row)); Row& current = m_rows[row_index]; @@ -628,10 +628,10 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, void PublishSettingsDialog::on_full_toggle(size_t category_index) { - Category& cat = m_categories[category_index]; - cat.full = cat.full_check->GetValue(); + Category& cat = m_categories[category_index]; + const bool full = cat.full_check->GetValue(); for (size_t r : cat.rows) - m_rows[r].check->Enable(!cat.full); + m_rows[r].check->Enable(!full); } void PublishSettingsDialog::set_row_bold(Row& row, bool bold) @@ -707,20 +707,30 @@ void PublishSettingsDialog::bind_tab_events() void PublishSettingsDialog::apply_filter(const wxString& filter_text) { - Freeze(); - wxString filter = filter_text.Lower(); + m_filter_mode = FilterMode::Text; + refresh_filter(filter_text.Lower()); +} - // Pseudo filters (menu only): show only checked ("::sel") or only unchecked ("::nonsel"). - const bool pseudo = (filter == "::sel" || filter == "::nonsel"); +void PublishSettingsDialog::apply_pseudo_filter(bool selected_only) +{ + m_filter_mode = selected_only ? FilterMode::SelectedOnly : FilterMode::UnselectedOnly; + refresh_filter(wxString()); // the pseudo modes ignore the search text +} + +void PublishSettingsDialog::refresh_filter(const wxString& filter) +{ + Freeze(); + const bool pseudo = m_filter_mode != FilterMode::Text; + const bool want_checked = m_filter_mode == FilterMode::SelectedOnly; m_fb_sizer->Show(!pseudo); + if (pseudo) { + // "×" marks the chip as a dismissible filter state (U+00D7, present in all UI fonts). + m_pseudo_chip->SetLabel((want_checked ? _L("Filter selected") : _L("Filter non-selected")) + " " + wxString::FromUTF8("\u00d7")); + } + m_pseudo_chip->Show(pseudo); // Row matches are computed first; page and optgroup visibility is applied below. if (pseudo) { - if (m_filter_ctrl->GetValue().Lower() != filter) { - m_filter_ctrl->ChangeValue(filter); - m_filter_ctrl->SetSelection(0, -1); - } - const bool want_checked = (filter == "::sel"); for (Row& row : m_rows) row.matches_filter = row.check->IsEnabled() && row.check->GetValue() == want_checked; } else { @@ -744,7 +754,7 @@ void PublishSettingsDialog::apply_filter(const wxString& filter_text) has_match = has_match || m_rows[r].matches_filter; category.info->Show(!has_match); if (!has_match) - category.info->SetLabel(pseudo ? (filter == "::sel" ? m_info_nonsel : m_info_allsel) : m_info_empty); + category.info->SetLabel(pseudo ? (want_checked ? m_info_nonsel : m_info_allsel) : m_info_empty); if (has_match && first_inner < 0) { first_outer = s; first_inner = static_cast(inner); @@ -818,10 +828,10 @@ bool PublishSettingsDialog::row_is_visible(const Row& row) const void PublishSettingsDialog::select_visible(bool value) { - wxString filter = m_filter_ctrl->GetValue().Lower(); // In a pseudo-filter view the rows being toggled would all disappear; drop the filter // afterwards so the result stays visible. - bool clear_pseudo = (!value && filter == "::nonsel") || (value && filter == "::sel"); + const bool clear_pseudo = (m_filter_mode == FilterMode::UnselectedOnly && !value) || + (m_filter_mode == FilterMode::SelectedOnly && value); // Toggle the rows visible under the *current* filter. for (Row& row : m_rows) @@ -838,7 +848,7 @@ void PublishSettingsDialog::select_visible(bool value) void PublishSettingsDialog::show_menu(wxMouseEvent& evt) { - bool filtering = !m_filter_ctrl->GetValue().IsEmpty(); + bool filtering = !m_filter_ctrl->GetValue().IsEmpty() || m_filter_mode != FilterMode::Text; bool list_empty = true; if (m_selected_outer >= 0) { for (const Row& row : m_rows) @@ -855,8 +865,10 @@ void PublishSettingsDialog::show_menu(wxMouseEvent& evt) m.Append(kPublishSelectVisible, _L("Select visible"))->Enable(!list_empty && filtering); m.Append(kPublishDeselectVisible, _L("Deselect visible"))->Enable(!list_empty && filtering); m.AppendSeparator(); - m.Append(kPublishFilterSelected, _L("Filter selected")); - m.Append(kPublishFilterNonSelected, _L("Filter nonSelected")); + m.AppendCheckItem(kPublishFilterSelected, _L("Filter selected")); + m.AppendCheckItem(kPublishFilterNonSelected, _L("Filter non-selected")); + m.Check(kPublishFilterSelected, m_filter_mode == FilterMode::SelectedOnly); + m.Check(kPublishFilterNonSelected, m_filter_mode == FilterMode::UnselectedOnly); m.Bind( wxEVT_MENU, @@ -866,8 +878,19 @@ void PublishSettingsDialog::show_menu(wxMouseEvent& evt) case kPublishDeselectAll: select_all(false); break; case kPublishSelectVisible: select_visible(true); break; case kPublishDeselectVisible: select_visible(false); break; - case kPublishFilterSelected: apply_filter("::sel"); break; - case kPublishFilterNonSelected: apply_filter("::nonsel"); break; + case kPublishFilterSelected: + // Clicking the active entry again clears the pseudo filter. + if (m_filter_mode == FilterMode::SelectedOnly) + apply_filter(m_filter_ctrl->GetValue()); + else + apply_pseudo_filter(true); + break; + case kPublishFilterNonSelected: + if (m_filter_mode == FilterMode::UnselectedOnly) + apply_filter(m_filter_ctrl->GetValue()); + else + apply_pseudo_filter(false); + break; default: break; } }, @@ -926,9 +949,9 @@ std::vector PublishSettingsDialog::GetPublishedM // The author's preset id distinguishes exact variants that share filament_id // ("Generic PLA" vs "Generic PLA Matte"), so the receiver can match precisely; the // preset name is the most direct identity and is matched first on load. - PresetBundle *bundle = wxGetApp().preset_bundle; + PresetBundle* bundle = wxGetApp().preset_bundle; if (bundle != nullptr && cat.filament_slot < bundle->filament_presets.size()) { - if (const Preset *preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) { + if (const Preset* preset = bundle->filaments.find_preset(bundle->filament_presets[cat.filament_slot], false, true)) { entry.setting_id = preset->setting_id; entry.preset_name = preset->name; } @@ -995,22 +1018,15 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) m_menu_button->SetBitmap(m_menu.bmp()); m_outer_tabs->Rescale(); + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + for (Category& cat : m_categories) { - if (cat.icon != nullptr && cat.icon_bmp.bmp().IsOk()) { - cat.icon_bmp.msw_rescale(); - cat.icon->SetBitmap(cat.icon_bmp.bmp()); - } if (cat.full_check != nullptr) cat.full_check->Refresh(); if (cat.title_label != nullptr) cat.title_label->Refresh(); if (cat.filament_color_chip != nullptr) { - std::string hex; - const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); - if (const auto* colours = full.opt("filament_colour")) - if (cat.filament_slot < colours->size()) - hex = colours->get_at(cat.filament_slot); - if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, cat.filament_slot), "", FromDIP(12), FromDIP(12))) cat.filament_color_chip->SetBitmap(*chip); } cat.scroll->FitInside(); @@ -1033,16 +1049,11 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) } } - const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); for (size_t category_index = 0; category_index < m_categories.size(); ++category_index) { const Category& category = m_categories[category_index]; if (category.section != Section::Material) continue; - std::string hex; - if (const auto* colours = full.opt("filament_colour")) - if (category.filament_slot < colours->size()) - hex = colours->get_at(category.filament_slot); - if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), "", FromDIP(12), FromDIP(12))) { const SectionGroup& section = m_sections[category.group]; const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); if (iter != section.categories.end()) diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 74fc6a7077..b474baa938 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -73,14 +73,13 @@ private: RowKind kind{RowKind::Setting}; size_t outer_index{0}; size_t inner_index{0}; - size_t subcategory_index{0}; bool dirty{false}; // matches a dirty base key: pre-checked + bold bool matches_filter{false}; // survives the active filter (computed by apply_filter) wxCheckBox* check{nullptr}; wxStaticText* value_label{nullptr}; wxStaticText* unit_label{nullptr}; wxStaticBitmap* color_chip{nullptr}; // Color rows only; swatch next to the value - wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in its tab list sizer + wxSizerItem* item{nullptr}; // sizer item of this row's h-sizer in its tab list sizer }; // An optgroup heading. Rows store indices into m_rows. @@ -97,22 +96,17 @@ private: { wxString title; Section section{Section::Print}; - size_t group{0}; // index into m_sections / outer page - size_t source_index{0}; // stable source page or material slot index - std::string source_title; - std::string icon_name; + size_t group{0}; // index into m_sections / outer page + size_t source_index{0}; // stable source page or material slot index wxPanel* page{nullptr}; wxScrolledWindow* scroll{nullptr}; wxBoxSizer* list_sizer{nullptr}; wxStaticText* info{nullptr}; wxPoint scroll_pos{0, 0}; - ScalableBitmap icon_bmp; // scalable bitmap for DPI changes - wxStaticBitmap* icon{nullptr}; wxStaticBitmap* filament_color_chip{nullptr}; wxStaticText* title_label{nullptr}; // material title (static text; Full Publish carries the label elsewhere) // "Full Publish": while checked, the whole slot preset is serialized and its rows // (incl. Color/Type) are disabled. - bool full{false}; wxCheckBox* full_check{nullptr}; // Material identity, only for Section::Material categories. std::string filament_type; @@ -141,6 +135,12 @@ private: void build_option_model(); void apply_filter(const wxString& filter_text); + // Menu-only pseudo filters: show only the checked ("Filter selected") or only the + // unchecked ("Filter non-selected") rows. The search box keeps the user's text. + void apply_pseudo_filter(bool selected_only); + // Recompute row matches and visibility for the active filter mode. filter is the lowered + // search text; it is ignored by the pseudo modes. + void refresh_filter(const wxString& filter); void select_all(bool value); void select_visible(bool value); void show_menu(wxMouseEvent& evt); @@ -149,11 +149,19 @@ private: void on_full_toggle(size_t category_index); // Return/create the fixed outer page for a Section kind. size_t section_group_for(Section kind); - size_t category_index_for(const wxString& title, Section section, const std::string& icon_name, size_t group, - size_t source_index, const PublishMaterialIdentity& identity = PublishMaterialIdentity()); + size_t category_index_for(const wxString& title, + Section section, + size_t group, + size_t source_index, + const PublishMaterialIdentity& identity = PublishMaterialIdentity()); size_t subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon); - void add_row_ui(const std::string& key, const wxString& label, const wxString& value, const wxString& unit, - size_t category_index, size_t subcategory_index, RowKind kind = RowKind::Setting); + void add_row_ui(const std::string& key, + const wxString& label, + const wxString& value, + const wxString& unit, + size_t category_index, + size_t subcategory_index, + RowKind kind = RowKind::Setting); // The non-structural filament keys of a slot's preset, for a "Full Publish" entry. std::vector full_keys_for_slot() const; void save_scroll_position(Category& category); @@ -170,9 +178,15 @@ private: wxBoxSizer* m_outer_host_sizer{nullptr}; int m_selected_outer{-1}; wxBoxSizer* m_fb_sizer{nullptr}; // "All"/"None" buttons sizer + // Active filter mode: free text from the search box, or one of the menu's pseudo filters. + enum class FilterMode { Text, SelectedOnly, UnselectedOnly }; + FilterMode m_filter_mode{FilterMode::Text}; TextInput* m_filter_box{nullptr}; wxTextCtrl* m_filter_ctrl{nullptr}; wxStaticBitmap* m_menu_button{nullptr}; + // Shown while a pseudo filter is active (the search box keeps the user's text, so the chip + // carries the visible state); clicking it returns to text filtering. + wxStaticText* m_pseudo_chip{nullptr}; wxString m_info_nonsel; wxString m_info_allsel; wxString m_info_empty; From 790a01061545afee7009e0e0f8eaa3d28fc8b2bc Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Fri, 21 Aug 2026 14:40:35 +0800 Subject: [PATCH 016/162] feat: plater notification API for plugins --- src/slic3r/plugin/host/PluginHostUi.cpp | 103 ++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 7 deletions(-) diff --git a/src/slic3r/plugin/host/PluginHostUi.cpp b/src/slic3r/plugin/host/PluginHostUi.cpp index c098ea3224..8fc3f12877 100644 --- a/src/slic3r/plugin/host/PluginHostUi.cpp +++ b/src/slic3r/plugin/host/PluginHostUi.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -19,6 +20,7 @@ #include #include +#include #include #include #include @@ -44,16 +46,20 @@ namespace { struct GilSafeCallable { py::object fn; + std::atomic_bool active{true}; explicit GilSafeCallable(py::object f) : fn(std::move(f)) {} + void disable() + { + active.store(false, std::memory_order_release); + PythonGILState gil; + if (gil) + fn = py::object(); + else + (void) fn.release(); + } ~GilSafeCallable() { - if (fn) { - PythonGILState gil; - if (gil) - fn = py::object(); - else - (void) fn.release(); - } + disable(); } }; using CallablePtr = std::shared_ptr; @@ -166,11 +172,34 @@ public: } return out; } + void bind_callback(const CallablePtr& callback, const std::string& plugin_key) + { + if (!callback) + return; + std::lock_guard lk(m_mtx); + m_callbacks[plugin_key].push_back(callback); + } + std::vector take_callbacks_for_plugin(const std::string& plugin_key) + { + std::lock_guard lk(m_mtx); + auto it = m_callbacks.find(plugin_key); + if (it == m_callbacks.end()) + return {}; + std::vector callbacks; + callbacks.reserve(it->second.size()); + for (const std::weak_ptr& weak_callback : it->second) { + if (auto callback = weak_callback.lock()) + callbacks.push_back(std::move(callback)); + } + m_callbacks.erase(it); + return callbacks; + } private: std::mutex m_mtx; std::unordered_map m_resources; std::unordered_map m_owners; + std::unordered_map>> m_callbacks; int m_next_id{1}; }; @@ -448,6 +477,46 @@ void progress_close(int id) }); } +void plater_notification(NotificationManager::NotificationLevel notification_level, const std::string& text, + const std::string& hypertext, py::object on_click) +{ + const std::string plugin_key = PluginAuditManager::instance().current_plugin(); + CallablePtr holder = make_holder(std::move(on_click)); + if (holder) + UiRegistry::instance().bind_callback(holder, plugin_key); + + std::function callback; + if (holder) { + callback = [holder](wxEvtHandler*) -> bool { + if (!holder->active.load(std::memory_order_acquire)) + return false; + + PythonGILState gil; + if (!gil) + return false; + try { + py::object result = holder->fn(); + return result.is_none() || result.cast(); + } catch (py::error_already_set& e) { + BOOST_LOG_TRIVIAL(error) << "orca.host.ui notification callback raised: " << e.what(); + PyErr_Clear(); + return false; + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "orca.host.ui notification callback raised: " << e.what(); + return false; + } catch (...) { + BOOST_LOG_TRIVIAL(error) << "orca.host.ui notification callback raised an unknown exception"; + return false; + } + }; + } + + run_on_ui_blocking([notification_level, text, hypertext, callback = std::move(callback)]() mutable { + wxGetApp().plater()->get_notification_manager()->push_notification(NotificationType::CustomNotification, notification_level, text, + hypertext, std::move(callback)); + }); +} + } // namespace void PluginHostUi::RegisterBindings(pybind11::module_& host) @@ -530,6 +599,23 @@ void PluginHostUi::RegisterBindings(pybind11::module_& host) ui.def("create_progress_dialog", &ui_create_progress_dialog, py::arg("title"), py::arg("message"), py::arg("maximum") = 100, py::arg("style") = wxPD_APP_MODAL | wxPD_AUTO_HIDE, "Create a native progress dialog and return a ProgressDialog handle."); + + py::enum_(ui, "NotificationLevel") + .value("ProgressBarNotificationLevel", NotificationManager::NotificationLevel::ProgressBarNotificationLevel) + .value("HintNotificationLevel", NotificationManager::NotificationLevel::HintNotificationLevel) + .value("RegularNotificationLevel", NotificationManager::NotificationLevel::RegularNotificationLevel) + .value("PrintInfoNotificationLevel", NotificationManager::NotificationLevel::PrintInfoNotificationLevel) + .value("PrintInfoShortNotificationLevel", NotificationManager::NotificationLevel::PrintInfoShortNotificationLevel) + .value("ImportantNotificationLevel", NotificationManager::NotificationLevel::ImportantNotificationLevel) + .value("WarningNotificationLevel", NotificationManager::NotificationLevel::WarningNotificationLevel) + .value("SeriousWarningNotificationLevel", NotificationManager::NotificationLevel::SeriousWarningNotificationLevel) + .value("ErrorNotificationLevel", NotificationManager::NotificationLevel::ErrorNotificationLevel) + .export_values(); + + ui.def("push_notification", &plater_notification, py::arg("notification_level"), py::arg("text"), + py::arg("hyper_text") = "", py::arg("on_click") = py::none(), + "Push a plater notification. hyper_text is an underlined label; on_click() is called when it is clicked " + "and may return True to close the notification."); } void PluginHostUi::close_windows_for_plugin(const std::string& plugin_key) @@ -538,6 +624,9 @@ void PluginHostUi::close_windows_for_plugin(const std::string& plugin_key) return; auto teardown = [plugin_key]() { + for (auto& callback : UiRegistry::instance().take_callbacks_for_plugin(plugin_key)) + callback->disable(); + // Destroy() bypasses wxEVT_CLOSE, so the plugin's on_close is not fired on // forced teardown (intended); the resource destructor still cleans the registry. for (auto* window : UiRegistry::instance().take_for_plugin(plugin_key)) { From 95e392e206108782c557b44009f5d620a333ea18 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 21 Aug 2026 18:36:30 +0800 Subject: [PATCH 017/162] Code cleanup --- src/libslic3r/Format/bbs_3mf.cpp | 16 +++------- src/libslic3r/PresetBundle.cpp | 31 +++++++++++++------ src/libslic3r/PublishSettings.cpp | 28 +++++++---------- src/libslic3r/PublishSettings.hpp | 13 ++++++-- src/slic3r/GUI/ConfigValueFormatter.hpp | 5 +-- src/slic3r/GUI/Plater.cpp | 4 +-- src/slic3r/GUI/Plater.hpp | 2 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 12 +++---- src/slic3r/GUI/PublishSettingsDialog.hpp | 5 +-- .../libslic3r/test_preset_bundle_loading.cpp | 10 ++++-- 10 files changed, 67 insertions(+), 59 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 06cc89de99..6415f29413 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -6987,17 +6987,11 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << METADATA_TAG << " name=\"" << item.first << "\">" << xml_escape(item.second) << "\n"; if (item.first == BBL_APPLICATION_TAG) { - // The OrcaSlicer tag is the version receivers compare against their own to - // pick the import branch, and every graceful config-less branch of an - // Orca-classified file shows a baked-in "old OrcaSlicer version" popup. A - // minimal published 3MF omits the tag (together with the Application tag - // above): old receivers then classify it From_Other and import the geometry - // silently, while this build rebuilds the config from the published metadata - // payload before the branch runs. - if (!m_minimal_published) { - stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" - << xml_escape(SoftFever_VERSION) << "\n"; - } + // The OrcaSlicer tag is only written for files that carry the Application + // tag, which a minimal published 3MF omits (see the map assignment above): + // the branch below is unreachable in minimal mode. + stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" + << xml_escape(SoftFever_VERSION) << "\n"; } } diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b6a3ed2d4b..fffd9c7fa4 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -43,6 +43,8 @@ namespace Slic3r { // Project-level options imported from a loaded 3MF into project_config. s_project_options_published // below is the reduced subset that crosses over in "published" 3MF mode; keep both in sync. +// s_project_options_published additionally carries wipe_tower_rotation_angle, which normal +// loads do not import (it is not listed here): published-only plate geometry. static std::vector s_project_options { "flush_volumes_vector", "flush_volumes_matrix", @@ -73,8 +75,9 @@ static std::vector s_project_options { "enable_filament_dynamic_map" }; -// Project options applied when loading a "published" 3MF project: the full s_project_options -// minus the filament/purge keys. A published file must not port the author's filament data +// Project options applied when loading a "published" 3MF project: s_project_options minus the +// filament/purge keys, plus wipe_tower_rotation_angle (plate geometry that only published +// loads import today). A published file must not port the author's filament data // (colors, colour types, filament/map/AMS slot state, purge/prime/flush volumes, nozzle // volume types, filament switcher state) to the receiver's project_config, which feeds the // scene colors, AMS slot colors and purge data. Only the plate/bed geometry keys cross over; @@ -4799,7 +4802,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (applied_keys.count(key) != 0) continue; // already applied // A '#' suffix denotes a variant key; resolve the base key. - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); // Structural keys are never applied (not "skipped due to mismatch"), so bail // out before the applied/skipped bookkeeping. if (structural_keys.count(base_key) != 0) @@ -4936,9 +4939,11 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // type-only pick may surface an unrelated preset, e.g. a different vendor's // PLA). auto candidate_score = [](const Preset &candidate, const PublishedMaterialEntry &entry, const std::string &resolved_name) -> int { - // Exact preset name: raw and collection-resolved forms both score above the - // fuzzy bare/alias tier, so a receiver preset literally named "Generic PLA" - // can never beat the author's exact "Generic PLA @Vendor" preset on a tie. + // Exact preset name: raw and collection-resolved forms both outrank the + // fuzzy bare/alias tier by tier value, so a receiver preset literally named + // "Generic PLA" (tier 4) can never beat the author's exact + // "Generic PLA @Vendor" (tier 5). Within one tier the strict ">" + // comparison keeps the first candidate in collection order. if (!entry.preset_name.empty() && candidate.name == entry.preset_name) return 5; if (!resolved_name.empty() && candidate.name == resolved_name) @@ -5137,8 +5142,14 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (colours != nullptr && !colours->values.empty()) seed = colours->values.front(); } - if (seed.empty()) - seed = "#F2754E"; // filament_colour default + if (seed.empty()) { + // Fall back to the option's registered default instead of a + // duplicated literal; if the lookup fails the chip stays blank. + if (const ConfigOptionDef *colour_def = print_config_def.get("filament_colour")) + if (const auto *default_colours = dynamic_cast(colour_def->default_value.get())) + if (!default_colours->values.empty()) + seed = default_colours->values.front(); + } } if (proj_colour && slot < proj_colour->values.size()) proj_colour->values[slot] = seed; @@ -5153,7 +5164,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool auto apply_slot_keys = [&](DynamicPrintConfig &preset_config, const std::vector &slot_keys, int author_slot, const std::string &material_label) { for (const std::string &key : slot_keys) { - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); if (structural_keys.count(base_key) != 0) continue; const ConfigOption *src_opt = config.option(base_key); @@ -5375,7 +5386,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool for (const std::string &key : published_config->published_keys) { if (applied_keys.count(key) != 0) continue; - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); // Structural keys are silently ignored, never reported as skipped: a hand-crafted // 3MF must not trigger the "could not be applied" warning for them. if (structural_keys.count(base_key) != 0) diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 8e2e58f5ee..e212770fd8 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -5,7 +5,6 @@ #include "PrintConfig.hpp" #include "MaterialType.hpp" -#include #include #include @@ -101,22 +100,18 @@ const std::set& publishable_printer_keys() std::vector collect_dirty_settings_keys(const PresetBundle& bundle) { - std::vector keys; - - auto append_dirty = [&keys](const std::vector& dirty) { - for (const std::string& key : dirty) { - if (std::find(keys.begin(), keys.end(), key) == keys.end()) - keys.push_back(key); - } - }; + std::set keys; // Union the dirty keys of each collection's edited preset (filaments may span multiple // slots); feeds only the Publish dialog's pre-check. - append_dirty(bundle.prints.current_dirty_options(true)); - append_dirty(bundle.printers.current_dirty_options(true)); - append_dirty(bundle.filaments.current_dirty_options(true)); + for (const std::string& key : bundle.prints.current_dirty_options(true)) + keys.insert(key); + for (const std::string& key : bundle.printers.current_dirty_options(true)) + keys.insert(key); + for (const std::string& key : bundle.filaments.current_dirty_options(true)) + keys.insert(key); - return keys; + return std::vector(keys.begin(), keys.end()); } DynamicPrintConfig filter_published_config( @@ -136,6 +131,7 @@ DynamicPrintConfig filter_published_config( std::map> slot_mask_map; // 1. Mandatory material identity & slot count keys for 3MF validation/normalization + // (filament_ids: exported for validation, denylisted on apply - see publish_structural_keys). static const std::vector s_material_identity_keys = { "filament_colour", "filament_type", @@ -163,7 +159,7 @@ DynamicPrintConfig filter_published_config( // 3. Process and printer published keys for (const std::string &key : published_keys) { - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); if (!base_key.empty()) { base_keys_to_include.insert(base_key); mask_exempt_keys.insert(base_key); @@ -175,7 +171,7 @@ DynamicPrintConfig filter_published_config( // slot-less entries (hand-crafted files) stay unmasked (whole vector). for (const PublishedMaterialEntry &entry : material_keys) { for (const std::string &key : entry.keys) { - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); if (base_key.empty()) continue; base_keys_to_include.insert(base_key); @@ -183,7 +179,7 @@ DynamicPrintConfig filter_published_config( slot_mask_map[base_key].insert(entry.slot); } for (const std::string &key : entry.full_keys) { - const std::string base_key = key.substr(0, key.find('#')); + const std::string base_key = publish_base_key(key); if (base_key.empty()) continue; base_keys_to_include.insert(base_key); diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index 0dc579c2a9..929c08dd51 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -6,8 +6,17 @@ namespace Slic3r { class PresetBundle; -// Structural keys that must never be published (single source of truth for the denylist): -// publishing them would rewrite the user's preset inheritance/structure. +// Strip a trailing "#N" variant suffix ("retraction_length#2" -> "retraction_length"). +inline std::string publish_base_key(const std::string &key) +{ + const size_t pos = key.find('#'); + return pos == std::string::npos ? key : key.substr(0, pos); +} + +// Structural keys that are never applied onto the receiver's presets when loading a published +// 3MF (single source of truth for the denylist): applying them would rewrite the user's preset +// inheritance/structure. filament_ids is nevertheless exported via the identity list in +// filter_published_config because 3MF validation needs it - exported, never applied. const std::set& publish_structural_keys(); // One row of the printer tab's "Retraction" / "Z-Hop" optgroups (key + tab icon id), kept diff --git a/src/slic3r/GUI/ConfigValueFormatter.hpp b/src/slic3r/GUI/ConfigValueFormatter.hpp index c51a8e8a17..67b16f9326 100644 --- a/src/slic3r/GUI/ConfigValueFormatter.hpp +++ b/src/slic3r/GUI/ConfigValueFormatter.hpp @@ -1,5 +1,4 @@ -#ifndef slic3r_ConfigValueFormatter_hpp_ -#define slic3r_ConfigValueFormatter_hpp_ +#pragma once #include @@ -25,5 +24,3 @@ wxString get_string_from_enum(const std::string& opt_key, const DynamicPrintConf } // namespace GUI } // namespace Slic3r - -#endif // slic3r_ConfigValueFormatter_hpp_ diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 908e4dc222..52d90623fe 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -16851,7 +16851,7 @@ void publish(Model &model, SaveStrategy strategy) { } // BBS: backup -int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy strategy, int export_plate_idx, Export3mfProgressFn proFn, const DynamicPrintConfig* override_config) +int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy strategy, int export_plate_idx, Export3mfProgressFn proFn) { int ret = 0; //if (p->model.objects.empty()) { @@ -16873,7 +16873,7 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy // modify model publish(p->model, strategy); - DynamicPrintConfig cfg = override_config ? *override_config : wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config_secure(); const std::string path_u8 = into_u8(path); wxBusyCursor wait; diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index af599d6161..61e6bee15c 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -504,7 +504,7 @@ public: //void export_amf(); //BBS add extra param for exporting 3mf silence // BBS: backup - int export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path(), SaveStrategy strategy = SaveStrategy::Default, int export_plate_idx = -1, Export3mfProgressFn proFn = nullptr, const DynamicPrintConfig* override_config = nullptr); + int export_3mf(const boost::filesystem::path& output_path = boost::filesystem::path(), SaveStrategy strategy = SaveStrategy::Default, int export_plate_idx = -1, Export3mfProgressFn proFn = nullptr); //BBS void publish_project(); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index cd8b82a489..08adae903b 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -332,7 +332,7 @@ void PublishSettingsDialog::build_option_model() for (const auto& opt : optgroup->opt_map()) { // Row keys are base keys; the load side applies them positionally. const std::string& opt_id = opt.first; - std::string base = opt_id.substr(0, opt_id.find('#')); + std::string base = publish_base_key(opt_id); if (!material_added.insert(base).second) continue; // Show the value of this slot; fall back to slot 0 if out of range. @@ -388,15 +388,13 @@ void PublishSettingsDialog::build_option_model() // Pre-check the dirty (modified) settings and mark them bold (base-key match, across all // sections; collect_dirty_settings_keys unions the prints, printers and filaments). std::set dirty_base; - for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) { - auto n = key.find('#'); - dirty_base.insert(n == std::string::npos ? key : key.substr(0, n)); - } + for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) + dirty_base.insert(publish_base_key(key)); for (Row& row : m_rows) { // The Color/Type requirement rows are not "dirty overrides": never auto-checked. if (row.kind != RowKind::Setting) continue; - std::string base = row.key.substr(0, row.key.find('#')); + std::string base = publish_base_key(row.key); row.dirty = dirty_base.count(base) > 0; if (row.dirty) { row.check->SetValue(true); @@ -919,7 +917,7 @@ std::vector PublishSettingsDialog::GetPublishedKeys() const // build). Publish every extruder element so the load side can apply per-extruder // values even when the receiver has a different extruder count; a scalar printer // key is published as-is. - const std::string base_key = row.key.substr(0, row.key.find('#')); + const std::string base_key = publish_base_key(row.key); if (const ConfigOption* opt = full.option(base_key)) { if (const auto* vec = dynamic_cast(opt)) { for (size_t i = 0; i < vec->size(); ++i) diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index b474baa938..312931c0c1 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -1,5 +1,4 @@ -#ifndef slic3r_GUI_PublishSettingsDialog_hpp_ -#define slic3r_GUI_PublishSettingsDialog_hpp_ +#pragma once #include "GUI_Utils.hpp" #include "wxExtensions.hpp" @@ -200,5 +199,3 @@ private: }; }} // namespace Slic3r::GUI - -#endif // slic3r_GUI_PublishSettingsDialog_hpp_ diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index d3bf4a2f49..b68fafbc2a 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -584,6 +584,7 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the config.opt_string("print_settings_id", true) = "file process"; config.opt("flush_multiplier")->values = { 2., 2. }; // must NOT cross over config.opt("wipe_tower_x")->values = { 100. }; // plate geometry, does cross over + config.opt("wipe_tower_rotation_angle")->value = 45.; // published-only plate geometry, crosses over config.option("curr_bed_type")->setInt(BedType::btPC); // must NOT cross over return config; }; @@ -639,6 +640,7 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the CHECK(bundle.project_config.opt("flush_multiplier")->values == seed_flush_multiplier); CHECK(bundle.project_config.option("curr_bed_type")->getInt() == seed_bed_type); CHECK(bundle.project_config.opt("wipe_tower_x")->values == std::vector{ 100. }); + CHECK_THAT(bundle.project_config.opt("wipe_tower_rotation_angle")->value, Catch::Matchers::WithinAbs(45., 0.000001)); // e) The published path keeps the user's currently-selected presets: same preset, same size. CHECK(bundle.prints.get_edited_preset().name == pre_load_name); @@ -676,6 +678,9 @@ TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys PresetBundle bundle; bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; + // A recognizable non-default value: the skipped mismatch below must leave it untouched + // (asserting the default instead would silently test PrintConfig's retraction_speed). + bundle.printers.get_edited_preset().config.opt("retraction_speed")->values = { 33. }; bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") = "G28 ; user"; PublishedConfig pub; @@ -683,9 +688,10 @@ TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys pub.published_keys = { "retraction_length", "retraction_speed", "machine_start_gcode" }; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // Matching-size retraction vector applied; mismatched vector reported as skipped. + // Matching-size retraction vector applied; mismatched vector reported as skipped and the + // receiver's own value survives. CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 1.4 }); - CHECK(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values == std::vector{ 30. }); + CHECK(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values == std::vector{ 33. }); CHECK(contains_key(pub.skipped_keys, "retraction_speed")); // Contract-excluded printer key: silently ignored, absent from skipped_keys. CHECK(bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") == "G28 ; user"); From 36e5d4770b2cb833ed73f121b7fcd4f5ebc74476 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 21 Aug 2026 19:04:10 +0800 Subject: [PATCH 018/162] Code cleanup and fixes --- src/libslic3r/PresetBundle.cpp | 56 ++++++++++++++----- src/libslic3r/PublishSettings.cpp | 44 +++++++++------ tests/libslic3r/test_3mf.cpp | 33 +++++++++++ .../libslic3r/test_preset_bundle_loading.cpp | 41 +++++++++++++- 4 files changed, 141 insertions(+), 33 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index fffd9c7fa4..d29dbdf46f 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4834,10 +4834,26 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // receiver may have a different extruder count than the author. Out-of-range // indices are skipped (set_at would otherwise resize the receiver's vector). if (key.size() > base_key.size()) { - const size_t idx = static_cast(std::atoi(key.c_str() + base_key.size() + 1)); - if (idx >= static_cast(src_opt)->size() || + // Strict numeric suffix parse: a malformed variant ("#abc", "#1x") + // must be reported as skipped, not silently applied as element 0. + const std::string suffix = key.substr(base_key.size() + 1); + size_t idx = 0; + bool valid = !suffix.empty(); + for (const char c : suffix) { + if (c < '0' || c > '9') { + valid = false; + break; + } + idx = idx * 10 + size_t(c - '0'); + if (idx > 1000000) { // overflow guard; real vector sizes are tiny + valid = false; + break; + } + } + if (!valid || + idx >= static_cast(src_opt)->size() || idx >= static_cast(dst_opt)->size()) - continue; // out-of-range variant: cannot apply; reported as skipped + continue; // malformed or out-of-range variant: cannot apply; reported as skipped } else if (static_cast(src_opt)->size() != static_cast(dst_opt)->size()) { // Whole-vector base key: the receiver must have a matching vector size, @@ -4894,15 +4910,18 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // Grow the receiver's slots only as far as the highest published slot (never // shrink, never pull filler materials for unpublished slots). bool has_published_entries = false; - size_t target_slots = this->filament_presets.size(); + size_t grow_target = 0; for (const PublishedMaterialEntry &entry : published_config->material_keys) { has_published_entries = true; if (entry.slot >= 0) - target_slots = std::max(target_slots, size_t(entry.slot) + 1); + grow_target = std::max(grow_target, size_t(entry.slot) + 1); } if (has_published_entries) { - // Defensive cap: never exceed the file's own filament count. - target_slots = std::min(target_slots, num_filaments); + // Defensive cap: growth never exceeds the file's own filament count. The + // receiver's current slot count is a floor: neither the preset list nor the + // project vectors are ever shrunk, even when the file carries fewer filaments + // than the receiver has slots. + const size_t target_slots = std::max(this->filament_presets.size(), std::min(grow_target, num_filaments)); // Slots carrying published content, steering the initial preset selection of // newly grown slots. std::set published_slots; @@ -5122,13 +5141,22 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool ConfigOptionInts *proj_nozzle_map = this->project_config.opt("filament_nozzle_map"); ConfigOptionInts *proj_volume_map = this->project_config.opt("filament_volume_map"); const size_t old_colour_count = (proj_colour != nullptr) ? proj_colour->values.size() : 0; - if (proj_colour) proj_colour->resize(target_slots); - if (proj_multi_colour) proj_multi_colour->values.resize(target_slots); - if (proj_colour_type) proj_colour_type->values.resize(target_slots); - if (proj_map) proj_map->values.resize(target_slots, 1); - if (proj_nozzle_map) proj_nozzle_map->values.resize(target_slots, 0); - if (proj_volume_map) proj_volume_map->values.resize(target_slots, static_cast(NozzleVolumeType::nvtStandard)); - this->ams_multi_color_filment.resize(target_slots); + // Grow-only: an already-larger project vector is left untouched (the receiver's + // slot count never shrinks below its own setup). + if (proj_colour && proj_colour->values.size() < target_slots) + proj_colour->resize(target_slots); + if (proj_multi_colour && proj_multi_colour->values.size() < target_slots) + proj_multi_colour->values.resize(target_slots); + if (proj_colour_type && proj_colour_type->values.size() < target_slots) + proj_colour_type->values.resize(target_slots); + if (proj_map && proj_map->values.size() < target_slots) + proj_map->values.resize(target_slots, 1); + if (proj_nozzle_map && proj_nozzle_map->values.size() < target_slots) + proj_nozzle_map->values.resize(target_slots, 0); + if (proj_volume_map && proj_volume_map->values.size() < target_slots) + proj_volume_map->values.resize(target_slots, static_cast(NozzleVolumeType::nvtStandard)); + if (this->ams_multi_color_filment.size() < target_slots) + this->ams_multi_color_filment.resize(target_slots); for (size_t slot = old_colour_count; slot < target_slots; ++slot) { std::string seed; for (const PublishedMaterialEntry &entry : published_config->material_keys) diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index e212770fd8..ac25d815f1 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -5,6 +5,8 @@ #include "PrintConfig.hpp" #include "MaterialType.hpp" +#include + #include #include @@ -188,17 +190,20 @@ DynamicPrintConfig filter_published_config( } } - // Mask non-published vector slots with the option default; keys without a default stay - // unmasked (whole vector, matching partial-publish behavior). + // Masking restores every non-published slot of a vector option with the option default, so + // a partial publish does not leak unrelated slot data. can_mask_slots reports whether a key + // is maskable at all (vector option plus a registered default of the same type); an + // unmaskable key is dropped from the payload entirely instead of shipping the author's + // whole vector. + auto can_mask_slots = [](const ConfigOption &opt, const ConfigOptionDef *def) -> bool { + if (def == nullptr || !def->default_value || def->default_value->type() != opt.type()) + return false; + const auto *vec = dynamic_cast(&opt); + const auto *default_vec = dynamic_cast(def->default_value.get()); + return vec != nullptr && vec->size() > 0 && default_vec != nullptr && !default_vec->empty(); + }; auto mask_slots = [](ConfigOption &opt, const ConfigOptionDef *def, const std::set &keep_slots) { auto *vec = dynamic_cast(&opt); - if (vec == nullptr || vec->size() == 0 || def == nullptr || !def->default_value) - return; - if (def->default_value->type() != opt.type()) - return; - const auto *default_vec = dynamic_cast(def->default_value.get()); - if (default_vec == nullptr || default_vec->empty()) - return; for (size_t idx = 0; idx < vec->size(); ++idx) if (keep_slots.count(static_cast(idx)) == 0) vec->set_at(def->default_value.get(), idx, 0); @@ -206,15 +211,20 @@ DynamicPrintConfig filter_published_config( // Copy the selected options from full_config into the filtered config. for (const std::string &key : base_keys_to_include) { - if (const ConfigOption *opt = full_config.option(key)) { - ConfigOption *cloned = opt->clone(); - if (mask_exempt_keys.count(key) == 0) { - const auto it = slot_mask_map.find(key); - if (it != slot_mask_map.end() && !it->second.empty()) - mask_slots(*cloned, print_config_def.get(key), it->second); - } - filtered.set_key_value(key, cloned); + const ConfigOption *opt = full_config.option(key); + if (opt == nullptr) + continue; + const auto mask_it = slot_mask_map.find(key); + const bool needs_masking = mask_exempt_keys.count(key) == 0 && mask_it != slot_mask_map.end() && !mask_it->second.empty(); + if (needs_masking && !can_mask_slots(*opt, print_config_def.get(key))) { + BOOST_LOG_TRIVIAL(warning) << "publish: dropping unmaskable key \"" << key + << "\" from the published payload (no usable option default)"; + continue; } + ConfigOption *cloned = opt->clone(); + if (needs_masking) + mask_slots(*cloned, print_config_def.get(key), mask_it->second); + filtered.set_key_value(key, cloned); } return filtered; diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 6a20613a79..8898dae2fe 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -841,6 +841,39 @@ SCENARIO("Partial-publish entries mask the other slots like full entries", "[3mf } } +// A key needing slot masking that cannot be masked (no registered option default of the same +// type) is dropped from the payload entirely instead of shipping the author's whole vector. +SCENARIO("Unmaskable keys are dropped from the published payload instead of leaking", "[3mf]") { + GIVEN("a config carrying a synthetic def-less vector key and a maskable one") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt("filament_diameter")->values = { 1.75, 1.75 }; + full_cfg.opt("filament_colour")->values = { "#111111", "#222222" }; + // Not a PrintConfig key: print_config_def has no default to mask with. + full_cfg.set_key_value("orca_synthetic_setting", new ConfigOptionFloats({ 9.9, 8.8 })); + full_cfg.opt("filament_flow_ratio", true)->values = { 1.02, 0.98 }; + + PublishedMaterialEntry partial_entry; + partial_entry.slot = 1; + partial_entry.keys = { "orca_synthetic_setting", "filament_flow_ratio" }; + + WHEN("filtering with a partial entry for slot 1") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { partial_entry }); + + THEN("the unmaskable synthetic key is not published") { + REQUIRE(filtered_cfg.option("orca_synthetic_setting") == nullptr); + } + THEN("the maskable key is present, author slot kept, other slot masked") { + REQUIRE(filtered_cfg.opt("filament_flow_ratio") != nullptr); + REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[1] == 0.98); + REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[0] == 1.0); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + // The extended per-entry fields (full dump list, published type and colour) travel inside the // published_material_keys metadata and round-trip unchanged. SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index b68fafbc2a..3a344e0fdc 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1890,6 +1890,41 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published REQUIRE(bundle.filament_presets.size() == 3); CHECK(bundle.filament_presets[1] == "My PLA"); } + + // A receiver with more slots than the file's filament count keeps its setup: neither the + // preset list nor the project-level vectors are shrunk to the file's smaller size. + { + PresetBundle bundle; + add_pla_preset(bundle); + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + // Distinct project colours make a shrink observable. + bundle.project_config.opt("filament_colour")->values = { "#111111", "#222222", "#333333" }; + bundle.project_config.opt("filament_multi_colour")->values = { "#111111", "#222222", "#333333" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_color_entry(0) }; // highest published slot: 0 + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // A one-filament file: num_filaments (1) is below the receiver's slot count (3). + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_ids")->values = { "GFL99" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + // No shrink: all three project entries survive, with slot 0 synced to the published + // colour at its unshifted index and slots 1-2 untouched. + CHECK(bundle.project_config.opt("filament_colour")->values == std::vector{ "#ABCDEF", "#222222", "#333333" }); + CHECK(bundle.project_config.opt("filament_multi_colour")->values == std::vector{ "#ABCDEF", "#222222", "#333333" }); + CHECK(bundle.project_config.opt("filament_map")->values.size() == 3); + // The published colour still reached slot 0's preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + } } // A published slot is seeded from an unused library preset and the values are written onto it @@ -2108,14 +2143,16 @@ TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffix PublishedConfig pub; pub.published = true; - pub.published_keys = { "wiping_volumes_extruders#5", "wiping_volumes_extruders#1", "layer_height#0" }; + pub.published_keys = { "wiping_volumes_extruders#5", "wiping_volumes_extruders#1", "wiping_volumes_extruders#abc", "layer_height#0" }; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); // In-range variant applied element-wise; the out-of-range one did not resize the vector. CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 10., 150. }); CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values.size() == 2); - // Out-of-range variant and variant-suffixed scalar are reported as skipped. + // Out-of-range variant, malformed variant and variant-suffixed scalar are reported as + // skipped; the malformed one must not fall back to element 0. CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders#5")); + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders#abc")); CHECK(contains_key(pub.skipped_keys, "layer_height#0")); CHECK_FALSE(contains_key(pub.skipped_keys, "wiping_volumes_extruders#1")); // The scalar was never applied. From 2aff31c07a887f04c09aa2b7c36d6fe1aa83bfd5 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 24 Aug 2026 13:19:57 +0800 Subject: [PATCH 019/162] Published 3MF: match filament slots by exported identity without a Type requirement --- src/libslic3r/PresetBundle.cpp | 115 +++++++++++++---- .../libslic3r/test_preset_bundle_loading.cpp | 119 ++++++++++++++++++ 2 files changed, 209 insertions(+), 25 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 755f2590e2..ce88c7a030 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5020,7 +5020,12 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool const std::string vendor = (vendors != nullptr && !vendors->values.empty()) ? vendors->get_at(0) : std::string(); if (!entry.filament_id.empty() && candidate.filament_id == entry.filament_id) return 2; - if (normalize_filament_type(type) == entry.publish_type_value) { + // Tier 0/1 family gate: the explicit type requirement when published as + // such, otherwise the entry's own material family - so identity scoring + // also applies to entries published without a checked Type row. + const std::string required_type = !entry.publish_type_value.empty() + ? entry.publish_type_value : normalize_filament_type(entry.filament_type); + if (!required_type.empty() && normalize_filament_type(type) == required_type) { if (!entry.filament_vendor.empty() && vendor == entry.filament_vendor) return 1; return 0; @@ -5036,7 +5041,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // presets first and falling back to incompatible ones only when no // compatible candidate exists... for (const PublishedMaterialEntry &entry : published_config->material_keys) { - if (entry.slot != static_cast(new_slot_idx) || !entry.publish_type || entry.publish_type_value.empty()) + // Scored for every entry with an identity (name / ids / family), + // not only when a Type requirement was checked; candidate_score's + // family tiers fall back to the entry's own filament_type. + if (entry.slot != static_cast(new_slot_idx)) continue; const std::string resolved_name = resolved_name_for(entry.slot); int best_score = -1; @@ -5073,14 +5081,32 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF grew slot " << new_slot_idx << " with " << initial_preset << " (score " << best_score << ", preset_name \"" << entry.preset_name << "\", type \"" << entry.publish_type_value << "\")"; + if (best_score >= 0 && best_score < 2 && (!entry.filament_id.empty() || !entry.filament_vendor.empty())) + published_config->material_replacements.emplace_back( + "slot " + std::to_string(new_slot_idx) + ": " + initial_preset + + " (substitute: no exact material match)"); break; } - // ...otherwise any visible preset not already used by another slot. + // ...otherwise any visible preset not already used by another slot, + // preferring the published material's own family when it is known. if (initial_preset.empty()) { + std::string slot_family; + for (const PublishedMaterialEntry &entry : published_config->material_keys) + if (entry.slot == static_cast(new_slot_idx)) { + slot_family = !entry.publish_type_value.empty() + ? entry.publish_type_value : normalize_filament_type(entry.filament_type); + break; + } for (size_t i = first_candidate; i < this->filaments.size(); ++i) { const Preset &candidate = this->filaments.preset(i); if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) continue; + if (!slot_family.empty()) { + const ConfigOptionStrings *types = candidate.config.opt("filament_type"); + const std::string cand_type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : std::string(); + if (normalize_filament_type(cand_type) != slot_family) + continue; + } initial_preset = candidate.name; break; } @@ -5114,7 +5140,9 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::string replacement; int best_score = -1; for (const PublishedMaterialEntry &entry : published_config->material_keys) { - if (entry.slot != static_cast(slot) || !entry.publish_type || entry.publish_type_value.empty()) + // Scored for every entry with an identity, not only when a Type + // requirement was checked (same as the growth seeding above). + if (entry.slot != static_cast(slot)) continue; const std::string resolved_name = resolved_name_for(entry.slot); auto scan = [&](bool compatible_only) -> std::pair { @@ -5153,20 +5181,39 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool << entry.preset_name << "\", type \"" << entry.publish_type_value << "\")"; break; } - // ...otherwise any distinct visible preset not referenced by another slot. + // ...otherwise any distinct visible preset not referenced by another slot, + // preferring the published material's own family when it is known. if (replacement.empty()) { - for (size_t i = first_candidate; i < this->filaments.size(); ++i) { - const Preset &candidate = this->filaments.preset(i); - if (candidate.is_visible && !referenced_elsewhere(candidate.name, size_t(-1))) { - replacement = candidate.name; + std::string slot_family; + for (const PublishedMaterialEntry &entry : published_config->material_keys) + if (entry.slot == static_cast(slot)) { + slot_family = !entry.publish_type_value.empty() + ? entry.publish_type_value : normalize_filament_type(entry.filament_type); break; } + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible || referenced_elsewhere(candidate.name, size_t(-1))) + continue; + if (!slot_family.empty()) { + const ConfigOptionStrings *types = candidate.config.opt("filament_type"); + const std::string cand_type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : std::string(); + if (normalize_filament_type(cand_type) != slot_family) + continue; + } + replacement = candidate.name; + break; } } if (replacement.empty()) continue; // every visible preset is referenced: aliasing is unavoidable + const std::string aliased_name = this->filament_presets[slot]; this->filament_presets[slot] = replacement; material_applied = true; + // The re-point used to be silent; surface it like the other slot changes. + published_config->material_replacements.emplace_back( + "slot " + std::to_string(slot) + ": " + aliased_name + " -> " + replacement + + " (de-aliased: shared profile)"); } // Grow the per-slot colour/type/map project vectors to the new slot count and // seed the new entries so the slots render with colours instead of blank chips @@ -5367,25 +5414,43 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // No same-type library preset: fall back to the first available // visible preset, preferring one no other slot references, and // apply the author's full values on top of it (the dump carries - // filament_type, so the preset takes the author's type). + // filament_type, so the preset takes the author's type). A preset + // of the published material's own family is preferred overall - + // except that a referenced preset must never win just on family, + // since the dump would mutate it for every sharing slot too. std::string fallback; - for (size_t i = first_candidate; i < this->filaments.size(); ++i) { - const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible) - continue; - if (fallback.empty()) - fallback = candidate.name; - bool referenced = false; - for (size_t s = 0; s < this->filament_presets.size(); ++s) - if (this->filament_presets[s] == candidate.name) { - referenced = true; - break; + const std::string wanted_family = !entry.publish_type_value.empty() + ? entry.publish_type_value : normalize_filament_type(entry.filament_type); + auto pick_fallback = [&](bool want_family) -> std::string { + std::string first; + for (size_t i = first_candidate; i < this->filaments.size(); ++i) { + const Preset &candidate = this->filaments.preset(i); + if (!candidate.is_visible) + continue; + if (want_family) { + if (wanted_family.empty()) + break; + const ConfigOptionStrings *cand_types = candidate.config.opt("filament_type"); + if (normalize_filament_type(cand_types != nullptr && !cand_types->values.empty() ? cand_types->get_at(0) : std::string()) != wanted_family) + continue; } - if (!referenced) { - fallback = candidate.name; - break; + bool referenced = false; + for (size_t s = 0; s < this->filament_presets.size(); ++s) + if (this->filament_presets[s] == candidate.name) { + referenced = true; + break; + } + if (!referenced) + return candidate.name; + if (first.empty()) + first = candidate.name; } - } + return first; + }; + if (!wanted_family.empty()) + fallback = pick_fallback(true); + if (fallback.empty()) + fallback = pick_fallback(false); if (!fallback.empty() && fallback != recv->name) { const std::string old_name = recv->name; this->filament_presets[slot] = fallback; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 6909b9b335..3cf5e95ce7 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -2010,6 +2010,72 @@ TEST_CASE("Published 3MF seeds published slots from unused presets and mutates t CHECK(bundle.project_config.opt("filament_map")->values.size() == 4); } +// Without a checked Type row, a grown published slot is still seeded from the published +// material's identity - an exact filament_id outranks any arbitrary unused preset, and an +// entry carrying only a family constrains the pick to that family. +TEST_CASE("Published 3MF seeds a grown slot by published identity or family without a type requirement", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + PublishedMaterialEntry entry; + entry.slot = 2; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + // An unused preset sorting before everything else: an unconstrained pick would take it. + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &arbitrary = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + arbitrary.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + SECTION("an exact filament_id outranks the first unused preset") { + Preset &authored = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + authored.config.opt_string("filament_type", 0u) = "PLA"; + authored.filament_id = "GFA00"; + entry.filament_id = "GFA00"; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Zzz PLA"); + // An exact identity match is not a substitute, so nothing is reported. + CHECK(pub.material_replacements.empty()); + } + + SECTION("a family-only entry picks an unused preset of that family") { + Preset &petg = add_inmemory_preset(bundle.filaments, "Bbb PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + entry.filament_type = "PETG"; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[2] == "Bbb PETG"); + } +} + // The GUI displays the edited preset, a snapshot of the selected collection preset taken at // selection time. Since the overlay mutates the collection presets in place, the load must // re-select the first slot's filament so the applied values - and slot replacements - surface @@ -2415,6 +2481,59 @@ TEST_CASE("Published 3MF gives each published slot its own preset on an aliased CHECK(pub.skipped_keys.empty()); } +// De-aliasing runs on the exported identity even without a checked Type row: the re-pointed +// slot lands on the exact published material (by filament_id) rather than an arbitrary spare, +// and the formerly silent re-point is surfaced through the replacements notification list. +TEST_CASE("Published 3MF de-aliases an aliased slot by published identity without a type requirement", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99" }; + config.option("filament_retraction_length", true)->values = { 0.6, 0.9 }; + + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + mine.config.opt("filament_retraction_length", true)->values = { 0.5 }; + // A spare sorting before the exact match: an unconstrained pick would take it. + Preset &spare = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + spare.config.opt_string("filament_type", 0u) = "PLA"; + spare.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &match = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + match.config.opt_string("filament_type", 0u) = "PLA"; + match.config.opt("filament_retraction_length", true)->values = { 0.5 }; + match.filament_id = "GFA00"; + bundle.filament_presets = { "My PLA", "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 1; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.filament_id = "GFA00"; + entry.keys = { "filament_retraction_length" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] == "Zzz PLA"); + // The published key was written onto the re-pointed slot's own preset. + Preset *target = bundle.filaments.find_preset("Zzz PLA", false, true); + REQUIRE(target != nullptr); + CHECK(target->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0].find("(de-aliased") != std::string::npos); + CHECK(pub.skipped_keys.empty()); +} + // Printer retraction keys are published per-extruder ("#N"): a receiver with a different // extruder count still receives the in-range elements; out-of-range variants are reported as // skipped instead of corrupting the receiver's vector. From 52aa5a52e9e2943485195d3408793cf2220e4a58 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 12:27:45 +0800 Subject: [PATCH 020/162] Published 3MF: import Full Publish materials as standalone detached presets inside the project --- src/libslic3r/Preset.cpp | 75 ++++++++++++++++++++ src/libslic3r/Preset.hpp | 18 +++++ src/libslic3r/PresetBundle.cpp | 111 ++++++++++++++++++++++++++++++ src/libslic3r/PublishSettings.cpp | 33 +++++++++ src/libslic3r/PublishSettings.hpp | 30 +++++--- 5 files changed, 259 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1334bd4e7a..c422253dcd 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -3053,6 +3053,81 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det this->get_selected_preset().save(nullptr); } +// A detached standalone preset for the Full Publish receiver: create a user preset holding +// the full resolved filament config (no inheritance, no vendor/alias links), parentless and +// universally compatible. Mirrors save_current_preset(detach=true)'s creation branch but +// does not force-select or diff against a parent; the caller decides whether to select it. +// The published entry's filament_id is forwarded so user bases keep their stable +// material grouping (get_filament_presets() groups user bases by filament_id). +// save_to_project=true (the Full Publish default) creates a project-embedded preset: +// it lives inside the loaded project only (serialized into the saved .3mf, restored by +// load_project_embedded_presets) and never touches the user's library directory; +// Preset::save() early-returns for embedded presets, so persistence is skipped here too. +// Returns the final (uniquified) name; on collision "" -> " (Published)" -> +// " (Published 2)" ... +std::string PresetCollection::add_detached_preset(const std::string &name_base, DynamicPrintConfig config, + const std::string &filament_id, bool save_to_project) +{ + if (name_base.empty()) + return std::string(); + Preset stored(m_type, name_base); + stored.config = std::move(config); + stored.filament_id = filament_id; + + // Uniquify verbatim; only on collision append " (Published)" then " (Published 2)". + const std::string base_name = name_base; + std::string final_name = base_name; + auto exists = [this](const std::string &candidate) -> bool { + const auto it = this->find_preset_internal(candidate); + return it != m_presets.end() && it->name == candidate; + }; + if (exists(final_name)) { + final_name = base_name + " (Published)"; + for (int i = 2; exists(final_name); ++i) + final_name = base_name + " (Published " + std::to_string(i) + ")"; + } + + // Creation branch of save_current_preset(detach=true), without its selection side + // effects or project-embedded path. + lock(); + const auto it = this->find_preset_internal(final_name); + Preset &preset = *m_presets.insert(it, stored); + stored.name.clear(); // avoid stale copied name being used below + stored.config.clear(); + preset.name = final_name; + preset.vendor = nullptr; + preset.alias.clear(); + preset.renamed_from.clear(); + preset.m_excluded_from.clear(); + preset.setting_id.clear(); + preset.inherits().clear(); + preset.version = Semver::parse(SoftFever_VERSION) ? *Semver::parse(SoftFever_VERSION) : Semver(); + preset.is_default = false; + preset.is_system = false; + preset.is_external = false; + preset.bundle_id.clear(); + preset.file = this->path_for_preset(preset); + preset.is_visible = true; + preset.is_project_embedded = save_to_project; + if (m_type == Preset::TYPE_PRINT) + preset.config.option("print_settings_id", true)->value = final_name; + else if (m_type == Preset::TYPE_FILAMENT) + preset.config.option("filament_settings_id", true)->values[0] = final_name; + else if (m_type == Preset::TYPE_PRINTER) + preset.config.option("printer_settings_id", true)->value = final_name; + unlock(); + + if (!save_to_project) { + // Persist the full resolved config (no parent). Project-embedded presets are + // serialized into the .3mf instead; Preset::save() would early-return anyway. + // find by final_name — m_presets may have reallocated, so don't keep a raw ref. + auto persist_it = this->find_preset_internal(final_name); + if (persist_it != m_presets.end() && persist_it->name == final_name) + persist_it->save(nullptr); + } + return final_name; +} + bool PresetCollection::delete_current_preset() { Preset &selected = this->get_selected_preset(); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index c9b3197a6f..e904851a1d 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -631,6 +631,24 @@ public: // All presets are marked as not modified and the new preset is activated. //BBS: add project embedded preset logic void save_current_preset(const std::string &new_name, bool detach = false, bool save_to_project = false, Preset* _curr_preset = nullptr); + // Insert a standalone user preset holding the full resolved config (no inheritance, + // no vendor links): the libslic3r equivalent of "Detach from parent". Takes a + // resolved config, clears parent/vendor/alias metadata, stamps filament_settings_id. + // Unlike save_current_preset it does not force-select or diff against a parent. + // Used by the published-3MF Full Publish path. The optional filament_id seeds the + // preset's stable material grouping (get_filament_presets groups user bases by + // filament_id); the published entry's filament_id is forwarded so the copy keeps + // the author's grouping. + // With save_to_project=true (default) the copy is a project-embedded preset + // ("Preset Inside Project"): it lives inside the loaded project only, is serialized + // into the saved .3mf via get_current_project_embedded_presets(), and is never + // written to the user's library directory. With false it persists as a normal + // user preset file. + // Returns the final (uniquified) name; on collision the suffix rule is: + // "" -> " (Published)" -> " (Published 2)" ... + std::string add_detached_preset(const std::string &name_base, DynamicPrintConfig config, + const std::string &filament_id = std::string(), + bool save_to_project = true); // Delete the current preset, activate the first visible preset. // returns true if the preset was deleted successfully. diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index ce88c7a030..96373eae7c 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5312,6 +5312,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // slots wrote to it; that compound case is not chased.) const bool edited_survives_load = this->filament_presets.empty() || this->filament_presets.front() == this->filaments.get_edited_preset().name; + // Full Publish within-load dedup: identical Full materials (same setting_id + // + preset_name identity) share one created instance, so an author who + // pointed two slots at one preset yields one standalone copy here. + std::map published_full_dedup; for (const PublishedMaterialEntry &entry : published_config->material_keys) { if (entry.slot < 0 || size_t(entry.slot) >= this->filament_presets.size()) continue; // out of range: nothing to do for this slot @@ -5327,6 +5331,113 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool ? (entry.publish_type_value.empty() ? entry.filament_type : entry.publish_type_value) : entry.filament_id; + // Full Publish: always create a standalone detached copy (even on exact + // identity match) as a "Preset Inside Project" (project-embedded: lives + // in this project only, never written to the library), universally + // compatible, named after the author's preset with its variant tail + // stripped ("(Published)" uniquification on collision). No existing + // preset is ever mutated. + if (entry.full) { + std::string dedup_key = entry.setting_id + std::string("\x1f") + entry.preset_name; + // Identity-less hand-crafted files (empty setting_id+name) must not + // collide: fall back to slot-scoped key so each slot gets its own copy + // unless the dedup above is meaningful. + if (dedup_key == std::string("\x1f")) + dedup_key = dedup_key + std::to_string(slot); + else if (!entry.filament_id.empty()) + dedup_key += std::string("\x1f") + entry.filament_id; + std::string new_name; + const auto dedup_it = published_full_dedup.find(dedup_key); + if (dedup_it != published_full_dedup.end()) { + new_name = dedup_it->second; + } else { + // Baseline: clone the receiver slot's stored preset config (schema- + // complete across versions), then overlay the published full_keys. + DynamicPrintConfig new_cfg = recv != nullptr + ? recv->config : this->filaments.default_preset().config; + for (const std::string &key : entry.full_keys) { + const std::string base_key = publish_base_key(key); + if (structural_keys.count(base_key) != 0) + continue; + const ConfigOption *src_opt = config.option(base_key); + if (src_opt == nullptr || !src_opt->is_vector() || + entry.slot < 0 || + entry.slot >= static_cast(static_cast(src_opt)->size())) + continue; + ConfigOption *dst_opt = new_cfg.option(base_key); + if (dst_opt == nullptr || !dst_opt->is_vector() || + static_cast(dst_opt)->empty() || + dst_opt->type() != src_opt->type()) + continue; + static_cast(dst_opt)->set_at(src_opt, 0, entry.slot); + } + // The published colour is authoritative even for Full (the payload's + // filament_colour plus the explicit publish_color field). + if (entry.publish_color && !entry.color.empty()) { + if (ConfigOptionStrings *col = new_cfg.opt("filament_colour", true)) { + if (col->values.empty()) + col->values.emplace_back(); + col->values[0] = entry.color; + } + } + make_publish_universal(new_cfg); + // Naming: stripped variant tail ("Generic PLA @System" -> "Generic + // PLA"), then identity fallbacks; collisions uniquify with + // "(Published)" / "(Published N)" inside add_detached_preset. + std::string base_name = entry.preset_name.empty() ? std::string() : publish_material_base_name(entry.preset_name); + if (base_name.empty()) { + base_name = !entry.filament_id.empty() ? entry.filament_id + : (!entry.publish_type_value.empty() ? entry.publish_type_value : entry.filament_type); + if (base_name.empty()) + base_name = "Published Filament"; + } + new_name = this->filaments.add_detached_preset(base_name, std::move(new_cfg), entry.filament_id); + published_full_dedup.emplace(dedup_key, new_name); + } + const std::string old_name = this->filament_presets[slot]; + this->filament_presets[slot] = new_name; + material_applied = true; + published_config->material_replacements.emplace_back( + "slot " + std::to_string(slot) + ": " + old_name + " -> " + new_name + + " (published material imported)"); + // Colour is slot-scoped and project-visible: sync into project_config + // (the copy already baked it, this makes the chips render). + if (entry.publish_color && !entry.color.empty()) { + if (ConfigOptionStrings *proj_colour = this->project_config.opt("filament_colour")) { + if (slot < proj_colour->values.size()) + proj_colour->values[slot] = entry.color; + } + if (ConfigOptionStrings *proj_multi_colour = this->project_config.opt("filament_multi_colour")) { + if (slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = entry.color; + } + } else if (proj_colour && new_name != old_name) { + // Fall back to the copy's colour so the chip is never blank: try + // the newly created preset's filament_colour, then the option default. + std::string seed; + if (const Preset *created = this->filaments.find_preset(new_name, false, true)) { + if (const ConfigOptionStrings *cols = created->config.opt("filament_colour")) + if (!cols->values.empty()) + seed = cols->values.front(); + } + if (seed.empty()) { + if (const ConfigOptionDef *colour_def = print_config_def.get("filament_colour")) + if (const auto *defaults = dynamic_cast(colour_def->default_value.get())) + if (!defaults->values.empty()) + seed = defaults->values.front(); + } + if (!seed.empty()) { + if (proj_colour && slot < proj_colour->values.size()) + proj_colour->values[slot] = seed; + if (proj_multi_colour && slot < proj_multi_colour->values.size()) + proj_multi_colour->values[slot] = seed; + } + } + if (proj_colour_type && slot < proj_colour_type->values.size()) + proj_colour_type->values[slot] = "1"; + continue; + } + bool apply_slot = true; // The gate compares against the slot's effective material type: the edited // layer when the slot references the collection's edited preset and that diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index ac25d815f1..3a3d241e81 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -6,12 +6,19 @@ #include "MaterialType.hpp" #include +#include #include #include namespace Slic3r { +std::string publish_base_key(const std::string &key) +{ + const size_t pos = key.find('#'); + return pos == std::string::npos ? key : key.substr(0, pos); +} + std::string normalize_filament_type(const std::string& type) { if (type.empty()) @@ -29,6 +36,32 @@ std::string normalize_filament_type(const std::string& type) return type; } +void make_publish_universal(DynamicPrintConfig &config) +{ + // Lists: empty => compatible with every printer / every print preset. Conditions: + // empty so a leftover expression left behind by the baseline clone can never + // re-narrow the match (see is_compatible_with_printer, Preset.cpp:840). All four + // keys exist on filament presets; nil-guard for hand-crafted future schemas. + if (auto *opt = config.opt("compatible_printers", false)) + opt->values.clear(); + if (auto *opt = config.opt("compatible_prints", false)) + opt->values.clear(); + if (auto *opt = config.opt("compatible_printers_condition", false)) + opt->value.clear(); + if (auto *opt = config.opt("compatible_prints_condition", false)) + opt->value.clear(); +} + +std::string publish_material_base_name(const std::string &preset_name) +{ + if (preset_name.empty()) + return preset_name; + const size_t at = preset_name.find('@'); + std::string base = (at == std::string::npos) ? preset_name : preset_name.substr(0, at); + boost::trim_right(base); + return base; +} + const std::set& publish_structural_keys() { // Non-publishable keys: the *_settings_id keys are also in PresetCollection::skipped_in_dirty diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index 929c08dd51..bcb3397dcc 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -7,11 +7,7 @@ namespace Slic3r { class PresetBundle; // Strip a trailing "#N" variant suffix ("retraction_length#2" -> "retraction_length"). -inline std::string publish_base_key(const std::string &key) -{ - const size_t pos = key.find('#'); - return pos == std::string::npos ? key : key.substr(0, pos); -} +std::string publish_base_key(const std::string &key); // Structural keys that are never applied onto the receiver's presets when loading a published // 3MF (single source of truth for the denylist): applying them would rewrite the user's preset @@ -56,14 +52,20 @@ struct PublishedMaterialEntry { // 0-based author filament slot; -1 (hand-crafted files) is skipped. int slot{-1}; std::vector keys; - // "Full Publish": serialize the whole filament preset (full_keys); the type gate then - // decides whether the receiver keeps its material (type match) or is replaced. + // "Full Publish": the whole filament preset (full_keys) is published. On the receiver + // Full Publish always creates a standalone parentless copy (libslic3r's "Detach from + // parent"): a new project-embedded preset ("Preset Inside Project") with the full + // resolved config, universally compatible (compatible_printers/condition cleared). + // It lives inside the loaded project only - never written to the user's library, + // no existing preset is ever selected-by-reference or mutated. Identical Full + // entries inside one load share one created instance (within-load dedup). bool full{false}; // All non-structural filament keys of the author's slot preset; values travel in the file // config, masked to the author's slot index. std::vector full_keys; // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on // mismatch the slot is replaced with a same-type filament from the receiver's library. + // For Full entries the baked filament_type on the created copy satisfies the type gate. bool publish_type{false}; std::string publish_type_value; // Required filament colour, applied on load regardless of the type match. @@ -74,9 +76,21 @@ struct PublishedMaterialEntry { // "PLA High Speed" -> "PLA" (strip a space modifier); dash types like "PA-CF" are kept intact. std::string normalize_filament_type(const std::string& type); +class DynamicPrintConfig; +// Clear the compatibility lists/conditions on a filament config so it is compatible +// with every printer and every print profile. A detached published material is +// universally compatible by construction: the baseline clone may carry machine-specific +// restrictions. Empty lists + empty conditions => compatible with everything +// (see is_compatible_with_printer, Preset.cpp:840). +void make_publish_universal(DynamicPrintConfig &config); + +// Naming base for a detached published-material copy: "Generic PLA @System" -> +// "Generic PLA" (truncate at the first '@' variant tail, right-trimmed). Unchanged +// when the name carries no '@'. Empty result means "fall back to identity fields". +std::string publish_material_base_name(const std::string &preset_name); + // Minimal DynamicPrintConfig for a published 3MF export: only the selected published keys, // material keys, identity fields and plate geometry keys. -class DynamicPrintConfig; DynamicPrintConfig filter_published_config( const DynamicPrintConfig &full_config, const std::vector &published_keys, From 0ba7bae79490d08d6b9093bb5423033efc807220 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 13:18:00 +0800 Subject: [PATCH 021/162] Fix conflicts. Update unit tests --- src/slic3r/GUI/Widgets/Button.hpp | 2 - .../libslic3r/test_preset_bundle_loading.cpp | 819 +++++++----------- 2 files changed, 318 insertions(+), 503 deletions(-) diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 9b97d0eb86..9ad0810804 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -46,8 +46,6 @@ class Button : public StaticBox bool isCenter = true; bool vertical = false; - wxTipWindow* tipWindow = nullptr; - static const int buttonWidth = 200; static const int buttonHeight = 50; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 3cf5e95ce7..ba92f43943 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -795,12 +795,10 @@ TEST_CASE("Published 3MF applies positional material keys onto the receiver's ma CHECK(pub.skipped_keys.empty()); } -// A "full publish" slot serializes the whole filament. On load the slot is matched positionally -// against the published type: a matching receiver type still receives the author's full values -// (like a normal save/load of the filament), a mismatched type replaces it with the first -// same-type visible preset (applying the author's full values on top), and a type not in the -// receiver's library falls back to the first available visible preset. -TEST_CASE("Published 3MF full-published slots replace or ignore the receiver material by type", "[Preset][Bundle][Published]") +// A "full publish" slot serializes the whole filament. On load the slot always receives a +// standalone detached copy of the author's material - created even when the receiver's own +// material matches the published type - and no receiver library preset is ever mutated. +TEST_CASE("Published 3MF full-published slots are imported as standalone detached copies", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -826,7 +824,7 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat return entry; }; - SECTION("type match applies the full dump onto the receiver's material") { + SECTION("type match still creates a detached copy instead of mutating the receiver material") { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.config.opt_string("filament_type", 0u) = "PLA"; @@ -843,14 +841,20 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The type matches, but a full publish behaves like a normal save: the author's values - // are written onto the slot's preset wholesale. - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // The type matches, but the import still detaches: the slot lands on a fresh copy + // named from the published type (no identity fields in this entry), carrying the + // author's values; the receiver's own material is untouched. + CHECK(bundle.filament_presets[0] == "PLA"); + Preset *copy = bundle.filaments.find_preset("PLA", false, true); + REQUIRE(copy != nullptr); + CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); CHECK(pub.skipped_keys.empty()); - CHECK(pub.material_replacements.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> PLA (published material imported)"); } - SECTION("type mismatch replaces the slot with the first same-type preset and applies the full dump") { + SECTION("type mismatch also detaches: a fresh same-type copy replaces the slot") { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.config.opt_string("filament_type", 0u) = "PLA"; @@ -868,19 +872,20 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 1); - // The slot is re-pointed at the library's ABS preset and the author's full values are - // written onto it in place (the original 0.3 is overwritten); the receiver's own - // material is untouched. - CHECK(bundle.filament_presets[0] == "My ABS"); - CHECK(bundle.filaments.find_preset("My ABS", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // No substitution search runs: a brand-new copy named after the published type is + // created and both pre-existing presets stay exactly as they were. + CHECK(bundle.filament_presets[0] == "ABS"); + Preset *copy = bundle.filaments.find_preset("ABS", false, true); + REQUIRE(copy != nullptr); + CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("My ABS", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.3 }); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); - // The entry carries no identity fields, so the pick cannot be judged as a substitute. - CHECK(pub.material_replacements[0] == "slot 0: My PLA -> My ABS"); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS (published material imported)"); } - SECTION("no same-type match falls back to the first available visible preset") { + SECTION("the author's identity rides on the copy when the type has no library match") { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); pla.config.opt_string("filament_type", 0u) = "PLA"; @@ -891,8 +896,8 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat bundle.filament_presets = { "My PLA" }; PublishedMaterialEntry full = make_full_abs_entry(); - // The dump carries the identity too, so the fallback preset must take the author's type - // and vendor. + // The dump carries the identity too, so the created copy takes the author's type + // and vendor instead of the baseline clone's. full.full_keys = { "filament_retraction_length", "filament_type", "filament_vendor" }; PublishedConfig pub; @@ -904,97 +909,27 @@ TEST_CASE("Published 3MF full-published slots replace or ignore the receiver mat Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // No ABS in the library: the slot falls back to the first available visible preset (the - // unused "Other PLA") and the author's full values are written onto it, type and vendor - // included. The receiver's own material is untouched. - CHECK(bundle.filament_presets[0] == "Other PLA"); - Preset *fallback = bundle.filaments.find_preset("Other PLA", false, true); - REQUIRE(fallback != nullptr); - CHECK(fallback->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(fallback->config.opt_string("filament_type", 0u) == "ABS"); - CHECK(fallback->config.opt_string("filament_vendor", 0u) == "Generic"); + // No ABS preset needs to exist in the library: the copy carries the author's values, + // type and vendor included. Neither receiver preset was touched. + CHECK(bundle.filament_presets[0] == "ABS"); + Preset *copy = bundle.filaments.find_preset("ABS", false, true); + REQUIRE(copy != nullptr); + CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(copy->config.opt_string("filament_type", 0u) == "ABS"); + CHECK(copy->config.opt_string("filament_vendor", 0u) == "Generic"); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt_string("filament_type", 0u) == "PLA"); + CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PLA -> Other PLA (substitute: no ABS available)"); + CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS (published material imported)"); } } -// Regression for the author's published material being skipped by a type-only replacement -// search: the slot must prefer the exact published material (filament_id) over the first other -// same-type preset, even when the exact preset is already referenced by another slot. -TEST_CASE("Published 3MF replaces a mismatched slot with the exact published material when available", "[Preset][Bundle][Published]") -{ - auto make_file_config = [] { - DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - config.opt("filament_diameter")->values = { 1.75 }; - config.opt("filament_self_index")->values = { 1 }; - config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; - config.opt("filament_colour")->values = { "#FF0000" }; - config.opt("filament_type")->values = { "PLA" }; - config.opt("filament_vendor")->values = { "Generic" }; - config.opt("filament_ids")->values = { "GFL99" }; - config.option("filament_retraction_length", true)->values = { 0.9 }; - return config; - }; - - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // The receiver's second slot already uses the exact published material. - Preset &generic_pla = add_inmemory_preset(bundle.filaments, "Generic PLA"); - generic_pla.filament_id = "GFL99"; - generic_pla.config.opt_string("filament_type", 0u) = "PLA"; - generic_pla.config.opt_string("filament_vendor", 0u) = "Generic"; - generic_pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; - // An unrelated PLA, unreferenced: a type-only search picks it because Generic PLA is - // referenced by slot 1. - Preset &bambu = add_inmemory_preset(bundle.filaments, "Bambu PLA Basic"); - bambu.filament_id = "GFB00"; - bambu.config.opt_string("filament_type", 0u) = "PLA"; - bambu.config.opt_string("filament_vendor", 0u) = "Bambu Lab"; - bambu.config.opt("filament_retraction_length", true)->values = { 0.4 }; - bundle.filament_presets = { "My PETG", "Generic PLA" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.filament_id = "GFL99"; - entry.filament_vendor = "Generic"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - // The exact published material (id GFL99) wins over the unreferenced type-only preset. - CHECK(bundle.filament_presets[0] == "Generic PLA"); - CHECK(bundle.filament_presets[1] == "Generic PLA"); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - // The receiver's own material is untouched; the unrelated PLA too. - CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); - CHECK(bundle.filaments.find_preset("Bambu PLA Basic", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.4 }); - // Accepted mutate tradeoff: the shared exact-material preset was mutated, so slot 1 also - // carries the author's values (the leak is documented, not accidental). - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - // An exact-material pick is reported without a substitute qualifier. - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA"); - CHECK(pub.skipped_keys.empty()); -} - -// The author's preset name travels in the file, so a type mismatch resolves to the exact -// published material even when the identity fields are absent or stale (older files): a -// "Generic PLA" author must land on the receiver's "Generic PLA", never on a same-type -// substitute like "Bambu PLA Basic". -TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by name", "[Preset][Bundle][Published]") +// The author's preset name travels in the file and names the created standalone copy (variant +// tail stripped), regardless of what the receiver's library holds: an exact-name library preset +// is never reused nor mutated. +TEST_CASE("Published 3MF imports a full material under the author's stripped name", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -1019,7 +954,7 @@ TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by nam return &preset; }; - SECTION("full identity (name, setting_id, filament_id): the name match wins") { + SECTION("an exact-name library preset exists: a detached copy is created beside it") { PresetBundle bundle; Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); petg.config.opt_string("filament_type", 0u) = "PETG"; @@ -1046,15 +981,18 @@ TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by nam Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - CHECK(bundle.filament_presets[0] == "Generic PLA @System"); - CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // The copy is named after the stripped author name; the receiver's exact-name preset + // keeps its own values. + CHECK(bundle.filament_presets[0] == "Generic PLA"); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (published material imported)"); CHECK(pub.skipped_keys.empty()); } - SECTION("only the name is present (broken/stale ids): still the exact preset") { + SECTION("only the name is present (broken/stale ids): the copy is still created") { PresetBundle bundle; Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); petg.config.opt_string("filament_type", 0u) = "PETG"; @@ -1078,43 +1016,14 @@ TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by nam Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - CHECK(bundle.filament_presets[0] == "Generic PLA @System"); + CHECK(bundle.filament_presets[0] == "Generic PLA"); CHECK(bundle.filaments.find_preset("Bambu PLA Basic @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (published material imported)"); CHECK(pub.skipped_keys.empty()); } - SECTION("the exact preset is hidden in the library: the exact match still wins") { - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - Preset &generic_pla = *add_pla(bundle, "Generic PLA @System", "OGFL99", "Generic", "RcBNzytWgwRrwXXz"); - generic_pla.is_visible = false; - add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); - bundle.filament_presets = { "My PETG" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @System"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filament_presets[0] == "Generic PLA @System"); - CHECK(pub.skipped_keys.empty()); - } - - SECTION("grown slot (author slot 1) is seeded with the exact preset by name") { + SECTION("grown slot (author slot 1) receives its own detached copy") { auto two_slot_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); config.opt("filament_diameter")->values = { 1.75, 1.75 }; @@ -1153,53 +1062,27 @@ TEST_CASE("Published 3MF replaces a mismatched slot with the exact preset by nam REQUIRE(bundle.filament_presets.size() == 2); CHECK(bundle.filament_presets[0] == "My PETG"); - CHECK(bundle.filament_presets[1] == "Generic PLA @System"); - // The full dump applies the author's slot-1 value onto the grown slot's preset. - CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); - CHECK(pub.skipped_keys.empty()); - } - - SECTION("no exact preset in the library: falls back to the substitute") { - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_pla(bundle, "Bambu PLA Basic @System", "OGFA00", "Bambu Lab", "zkc85XTKi4cb6cOw"); - bundle.filament_presets = { "My PETG" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @System"; - entry.filament_id = "OGFL99"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filament_presets[0] == "Bambu PLA Basic @System"); + // The grown slot lands on a freshly created copy carrying the author's slot-1 value; + // the library preset that seeded it stays untouched. + CHECK(bundle.filament_presets[1] == "Generic PLA"); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); + CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Bambu PLA Basic @System (substitute: no exact material match)"); + CHECK(pub.material_replacements[0] == "slot 1: Generic PLA @System -> Generic PLA (published material imported)"); + CHECK(pub.skipped_keys.empty()); } } -// The receiver library can hold several presets that all look like "Generic PLA": a bare-named -// legacy copy, the author's exact vendor preset and the Orca library preset (whose alias is the -// bare name). The exact preset name must outrank the fuzzy bare/alias tier, so the author's -// "Generic PLA @Qidi Q2 0.4 nozzle" wins regardless of collection order. -TEST_CASE("Published 3MF prefers the exact preset over same-bare-name presets", "[Preset][Bundle][Published]") +// The stripped author name can collide with an existing library preset ("Generic PLA"): the +// created copy must uniquify with the "(Published)" suffix rather than overwrite, reuse or +// mutate any of the receiver's own presets. +TEST_CASE("Published 3MF uniquifies an imported full material name on collision", "[Preset][Bundle][Published]") { PresetBundle bundle; Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); petg.config.opt_string("filament_type", 0u) = "PETG"; petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // A legacy bundle preset literally named "Generic PLA": bare-name match, sorts first. + // A legacy bundle preset literally named "Generic PLA" - collides with the stripped name. Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); bare.config.opt_string("filament_type", 0u) = "PLA"; bare.config.opt_string("filament_vendor", 0u) = "Generic"; @@ -1209,7 +1092,7 @@ TEST_CASE("Published 3MF prefers the exact preset over same-bare-name presets", qidi.config.opt_string("filament_type", 0u) = "PLA"; qidi.config.opt_string("filament_vendor", 0u) = "Generic"; qidi.config.opt("filament_retraction_length", true)->values = { 0.5 }; - // The Orca library preset: alias "Generic PLA" matches the bare-name tier too. + // The Orca library preset. Preset &sys = add_inmemory_preset(bundle.filaments, "Generic PLA @System"); sys.config.opt_string("filament_type", 0u) = "PLA"; sys.config.opt_string("filament_vendor", 0u) = "Generic"; @@ -1231,103 +1114,15 @@ TEST_CASE("Published 3MF prefers the exact preset over same-bare-name presets", Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The exact preset beats the bare/alias matches even though "Generic PLA" sorts first. - CHECK(bundle.filament_presets[0] == "Generic PLA @Qidi Q2 0.4 nozzle"); + // The copy lands beside the collision, suffixed; every pre-existing preset keeps its own + // values. + CHECK(bundle.filament_presets[0] == "Generic PLA (Published)"); + CHECK(bundle.filaments.find_preset("Generic PLA (Published)", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filaments.find_preset("Generic PLA @Qidi Q2 0.4 nozzle", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @Qidi Q2 0.4 nozzle"); - CHECK(pub.skipped_keys.empty()); -} - -// The author's exact preset exists on the receiver but is incompatible with the active printer -// (a Qidi bundle preset on a non-Qidi printer); a same-family preset that IS compatible must -// win instead, so the slot never ends up with a filament the printer cannot use. -TEST_CASE("Published 3MF prefers a compatible preset over an exact but incompatible one", "[Preset][Bundle][Published]") -{ - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // The bare-named legacy preset (Bambu-printer only) and the exact author preset are both - // incompatible with the receiver's printer. update_compatible() recomputes is_compatible - // inside load_config_model, so the incompatibility is expressed the way production derives - // it: a compatible_printers constraint no receiver printer satisfies (the fresh bundle's - // active printer is the "Default Printer" placeholder). - Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); - bare.config.opt_string("filament_type", 0u) = "PLA"; - bare.config.opt_string("filament_vendor", 0u) = "Generic"; - bare.config.opt("filament_retraction_length", true)->values = { 0.5 }; - bare.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); - Preset &qidi = add_inmemory_preset(bundle.filaments, "Generic PLA @Qidi Q2 0.4 nozzle"); - qidi.config.opt_string("filament_type", 0u) = "PLA"; - qidi.config.opt_string("filament_vendor", 0u) = "Generic"; - qidi.config.opt("filament_retraction_length", true)->values = { 0.5 }; - qidi.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); - // The receiver's own compatible library preset. - Preset &sys = add_inmemory_preset(bundle.filaments, "Generic PLA @System"); - sys.config.opt_string("filament_type", 0u) = "PLA"; - sys.config.opt_string("filament_vendor", 0u) = "Generic"; - sys.config.opt("filament_retraction_length", true)->values = { 0.5 }; - bundle.filament_presets = { "My PETG" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @Qidi Q2 0.4 nozzle"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = published_pla_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filament_presets[0] == "Generic PLA @System"); - // A same-family name-tier pick is not reported as a substitute. - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); - CHECK(pub.skipped_keys.empty()); -} - -// When every candidate is incompatible with the receiver's printer, the search still falls back -// to the best (exact) match rather than leaving the slot on the mismatched type. -TEST_CASE("Published 3MF falls back to an incompatible exact preset when no compatible candidate exists", "[Preset][Bundle][Published]") -{ - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // The exact author preset is incompatible with the receiver's printer. update_compatible() - // recomputes is_compatible inside load_config_model, so the incompatibility is expressed the - // way production derives it: a compatible_printers constraint the receiver's printer (the - // fresh bundle's "Default Printer" placeholder) does not satisfy. - Preset &qidi = add_inmemory_preset(bundle.filaments, "Generic PLA @Qidi Q2 0.4 nozzle"); - qidi.config.opt_string("filament_type", 0u) = "PLA"; - qidi.config.opt_string("filament_vendor", 0u) = "Generic"; - qidi.config.opt("filament_retraction_length", true)->values = { 0.5 }; - qidi.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); - bundle.filament_presets = { "My PETG" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @Qidi Q2 0.4 nozzle"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = published_pla_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filament_presets[0] == "Generic PLA @Qidi Q2 0.4 nozzle"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @Qidi Q2 0.4 nozzle"); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (Published) (published material imported)"); CHECK(pub.skipped_keys.empty()); } @@ -1393,35 +1188,46 @@ TEST_CASE("Published 3MF writes to the stored preset when the edited layer is re CHECK(pub.skipped_keys.empty()); } -// The author published "Generic PLA @System"; the receiver's copy "Generic PLA" drops the -// "@System" suffix (and has no setting_id, a different filament_id), so only the trimmed -// bare-name tier can reach it - the truncated form carries trailing whitespace that must not -// defeat the match. -TEST_CASE("Published 3MF name matching accepts suffix-less receiver presets", "[Preset][Bundle][Published]") +// The created copy is named after the author's preset with the "@variant" tail stripped; +// trailing whitespace left behind by the truncation must be trimmed away, and names without +// a tail pass through unchanged. +TEST_CASE("publish_material_base_name strips the variant tail from a published preset name", "[Preset][Bundle][Published]") +{ + CHECK(publish_material_base_name("Generic PLA @System") == "Generic PLA"); + CHECK(publish_material_base_name("Generic PLA @Qidi Q2 0.4 nozzle") == "Generic PLA"); + // Truncation at '@' leaves the space before the tail; it must not survive. + CHECK(publish_material_base_name("Generic PLA @System") == "Generic PLA"); + CHECK(publish_material_base_name("Voron Generic PLA") == "Voron Generic PLA"); + CHECK(publish_material_base_name("") == ""); + // A tail-only name strips to nothing; the caller falls back to identity fields. + CHECK(publish_material_base_name("@System").empty()); +} + +// A full-published material arrives as a brand-new standalone preset: parentless, visible, +// project-embedded ("Preset Inside Project"), carrying the author's values and colour - and +// never touching any of the receiver's own presets. +TEST_CASE("Published 3MF imports a full material as a detached project-embedded preset", "[Preset][Bundle][Published]") { PresetBundle bundle; Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); petg.config.opt_string("filament_type", 0u) = "PETG"; petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - Preset &plain = add_inmemory_preset(bundle.filaments, "Generic PLA"); - plain.config.opt_string("filament_type", 0u) = "PLA"; - plain.config.opt_string("filament_vendor", 0u) = "Generic"; - plain.config.opt("filament_retraction_length", true)->values = { 0.5 }; - // An unrelated same-type preset that would win a type-only search. - Preset &bambu = add_inmemory_preset(bundle.filaments, "Bambu PLA Basic"); - bambu.config.opt_string("filament_type", 0u) = "PLA"; - bambu.config.opt_string("filament_vendor", 0u) = "Bambu Lab"; - bambu.config.opt("filament_retraction_length", true)->values = { 0.4 }; + Preset &spare = add_inmemory_preset(bundle.filaments, "Spare PLA"); + spare.config.opt_string("filament_type", 0u) = "PLA"; + spare.config.opt("filament_retraction_length", true)->values = { 0.4 }; bundle.filament_presets = { "My PETG" }; PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @System"; - entry.filament_id = "GFL99"; - entry.full_keys = { "filament_retraction_length" }; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.publish_color = true; + entry.color = "#ABCDEF"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; @@ -1430,37 +1236,57 @@ TEST_CASE("Published 3MF name matching accepts suffix-less receiver presets", "[ Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The trimmed bare-name tier fires: the suffix-less copy wins over the type-only - // candidate, without a substitute qualifier. - CHECK(bundle.filament_presets[0] == "Generic PLA"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA"); + // The slot lands on the freshly created copy, named after the stripped author name. + CHECK(bundle.filament_presets[0] == "Author PLA"); + Preset *copy = bundle.filaments.find_preset("Author PLA", false, true); + REQUIRE(copy != nullptr); + // Detached + project-embedded contract. + CHECK(copy->is_project_embedded); + CHECK(copy->inherits().empty()); + CHECK(copy->setting_id.empty()); + CHECK(copy->vendor == nullptr); + CHECK_FALSE(copy->is_system); + CHECK_FALSE(copy->is_default); + CHECK_FALSE(copy->is_external); + CHECK(copy->is_visible); + CHECK(copy->filament_id == "AFL01"); + CHECK(copy->config.opt("filament_settings_id")->values == std::vector{ "Author PLA" }); + // The published values and colour live on the copy. + CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(copy->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // Universally compatible: no printer/print restrictions survive the import. + CHECK(copy->config.opt("compatible_printers")->values.empty()); + CHECK(copy->config.opt("compatible_prints")->values.empty()); + CHECK(copy->config.opt("compatible_printers_condition")->value.empty()); + CHECK(copy->config.opt("compatible_prints_condition")->value.empty()); + // Nothing pre-existing was touched. + CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); + CHECK(bundle.filaments.find_preset("Spare PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.4 }); CHECK(pub.skipped_keys.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA (published material imported)"); } -// The receiver's vendor renamed "Generic PLA @System" to "PLA Generic @System" (renamed_from -// records the old name); the published file still names the old preset, which resolves through -// the collection's rename map instead of degrading to a same-type substitute. -TEST_CASE("Published 3MF name matching follows the receiver's preset renames", "[Preset][Bundle][Published]") +// Compatibility restrictions riding on the receiver's baseline preset must not leak onto the +// imported copy: a detached full material is usable with every printer and print profile. +TEST_CASE("Published 3MF clears printer restrictions on the imported full material", "[Preset][Bundle][Published]") { PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_inmemory_preset(bundle.filaments, "PLA Generic @System"); - bundle.filament_presets = { "My PETG" }; - - set_renamed_from(bundle.filaments, "PLA Generic @System", { "Generic PLA @System" }); - AppConfig app_config; - bundle.load_installed_printers(app_config); // rebuild the rename map + Preset &restricted = add_inmemory_preset(bundle.filaments, "Restricted PLA"); + restricted.config.opt_string("filament_type", 0u) = "PLA"; + restricted.config.opt("filament_retraction_length", true)->values = { 0.5 }; + restricted.config.set_key_value("compatible_printers", new ConfigOptionStrings({ "Unrelated Printer" })); + restricted.config.set_key_value("compatible_prints", new ConfigOptionStrings({ "Unrelated Print" })); + restricted.config.option("compatible_printers_condition", true)->value = "printer_settings_id==\"Nope\""; + restricted.config.option("compatible_prints_condition", true)->value = "print_settings_id==\"Nope\""; + bundle.filament_presets = { "Restricted PLA" }; PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Generic PLA @System"; // the pre-rename name - entry.full_keys = { "filament_retraction_length" }; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.full_keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; @@ -1469,215 +1295,206 @@ TEST_CASE("Published 3MF name matching follows the receiver's preset renames", " Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // find_preset2 resolves the pre-rename name through the collection's rename map. - CHECK(bundle.filament_presets[0] == "PLA Generic @System"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> PLA Generic @System"); + // The copy (named from the published type; no identity fields) has no restrictions left. + CHECK(bundle.filament_presets[0] == "PLA"); + Preset *copy = bundle.filaments.find_preset("PLA", false, true); + REQUIRE(copy != nullptr); + CHECK(copy->config.opt("compatible_printers")->values.empty()); + CHECK(copy->config.opt("compatible_prints")->values.empty()); + CHECK(copy->config.opt("compatible_printers_condition")->value.empty()); + CHECK(copy->config.opt("compatible_prints_condition")->value.empty()); + // The receiver's own restricted preset keeps its restrictions. + const Preset *original = bundle.filaments.find_preset("Restricted PLA", false, true); + REQUIRE(original != nullptr); + CHECK(original->config.opt("compatible_printers")->values == std::vector{ "Unrelated Printer" }); + CHECK(original->config.opt("compatible_printers_condition")->value == "printer_settings_id==\"Nope\""); CHECK(pub.skipped_keys.empty()); } -// The author's preset "Voron Generic PLA" (a vendor-specific generic) is gone from the -// receiver's profile set; find_preset2 auto-matches it to the Orca Filament Library instead of -// falling back to a same-type substitute. -TEST_CASE("Published 3MF name matching falls back to the library for removed vendor generics", "[Preset][Bundle][Published]") -{ - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_inmemory_preset(bundle.filaments, "Generic PLA @System"); - bundle.filament_presets = { "My PETG" }; - - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.preset_name = "Voron Generic PLA"; - entry.full_keys = { "filament_retraction_length" }; - - PublishedConfig pub; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = published_pla_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - - CHECK(bundle.filament_presets[0] == "Generic PLA @System"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA @System"); - CHECK(pub.skipped_keys.empty()); -} - -// The replacement search prefers the published identity: exact filament_id, then vendor+type, -// then type only (collection order decides equal scores; the pick is reported as a substitute -// when it is not the exact published material). -TEST_CASE("Published 3MF prefers the published material identity when replacing a slot", "[Preset][Bundle][Published]") +// Identical Full materials (same setting_id + preset_name identity) share one created +// instance: an author who pointed several slots at one material gets one standalone copy, +// and the first entry's slot values win. +TEST_CASE("Published 3MF shares one imported copy between identical full slots", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - config.opt("filament_diameter")->values = { 1.75 }; - config.opt("filament_self_index")->values = { 1 }; - config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; - config.opt("filament_colour")->values = { "#FF0000" }; - config.opt("filament_type")->values = { "PLA" }; - config.opt("filament_vendor")->values = { "Generic" }; - config.opt("filament_ids")->values = { "GFL99" }; - config.option("filament_retraction_length", true)->values = { 0.9 }; + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "AFL01", "AFL01" }; + config.option("filament_retraction_length", true)->values = { 0.9, 0.8 }; return config; }; - auto make_entry = [] { + auto make_entry = [](int slot) { PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.filament_id = "GFL99"; - entry.filament_vendor = "Generic"; - entry.full_keys = { "filament_retraction_length" }; + entry.slot = slot; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; return entry; }; - auto add_pla = [](PresetBundle &bundle, const char *name, const char *id, const char *vendor) { - Preset &preset = add_inmemory_preset(bundle.filaments, name); - preset.filament_id = id; - preset.config.opt_string("filament_type", 0u) = "PLA"; - preset.config.opt_string("filament_vendor", 0u) = vendor; - preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; - return &preset; - }; - auto load = [&](PresetBundle &bundle, PublishedConfig &pub) { - PublishedMaterialEntry entry = make_entry(); - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - }; - SECTION("exact filament_id beats collection order") { - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - // "Bambu PLA Basic" sorts before "Zebra PLA"; only the latter carries the published id. - add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); - add_pla(bundle, "Zebra PLA", "GFL99", "Generic"); - bundle.filament_presets = { "My PETG" }; + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + Preset &other = add_inmemory_preset(bundle.filaments, "Other PETG"); + other.config.opt_string("filament_type", 0u) = "PETG"; + other.config.opt("filament_retraction_length", true)->values = { 0.65 }; + bundle.filament_presets = { "My PETG", "Other PETG" }; - PublishedConfig pub; - load(bundle, pub); - CHECK(bundle.filament_presets[0] == "Zebra PLA"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Zebra PLA"); - } + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry(0), make_entry(1) }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - SECTION("vendor and type beat a type-only preset, reported as a substitute") { - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); - add_pla(bundle, "Zebra PLA", "ZZZ99", "Generic"); // same vendor+type, different id - bundle.filament_presets = { "My PETG" }; - - PublishedConfig pub; - load(bundle, pub); - CHECK(bundle.filament_presets[0] == "Zebra PLA"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Zebra PLA (substitute: no exact material match)"); - } - - SECTION("type-only candidates keep collection order and are reported as substitutes") { - PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_pla(bundle, "Bambu PLA Basic", "GFB00", "Bambu Lab"); - add_pla(bundle, "Zebra PLA", "ZZZ99", "Acme"); // no identity match at all - bundle.filament_presets = { "My PETG" }; - - PublishedConfig pub; - load(bundle, pub); - CHECK(bundle.filament_presets[0] == "Bambu PLA Basic"); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Bambu PLA Basic (substitute: no exact material match)"); - } + // Both slots point at the single shared copy; no second "(Published)" instance exists. + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(bundle.filament_presets[0] == "Author PLA"); + CHECK(bundle.filament_presets[1] == "Author PLA"); + CHECK(bundle.filaments.find_preset("Author PLA", false, true) != nullptr); + CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true) == nullptr); + // The first entry's slot values won. + CHECK(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + // Both slots reported, same target; originals untouched. + REQUIRE(pub.material_replacements.size() == 2); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA (published material imported)"); + CHECK(pub.material_replacements[1] == "slot 1: Other PETG -> Author PLA (published material imported)"); + CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); + CHECK(bundle.filaments.find_preset("Other PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.65 }); + CHECK(pub.skipped_keys.empty()); } -// "Generic PLA" and "Generic PLA Matte" share their inherited filament_id (OGFL99), so the -// exact variant can only be matched via the preset setting_id carried in the published file. -TEST_CASE("Published 3MF matches the exact published variant via setting_id", "[Preset][Bundle][Published]") +// Without a preset name the copy falls back to the stable material id; fully anonymous +// hand-crafted entries never share instances between slots (their dedup key is slot-scoped). +TEST_CASE("Published 3MF names unidentified full materials from their fallback fields", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - config.opt("filament_diameter")->values = { 1.75 }; - config.opt("filament_self_index")->values = { 1 }; - config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; - config.opt("filament_colour")->values = { "#FF0000" }; - config.opt("filament_type")->values = { "PLA" }; - config.opt("filament_vendor")->values = { "Generic" }; - config.opt("filament_ids")->values = { "OGFL99" }; - config.option("filament_retraction_length", true)->values = { 0.9 }; + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard", "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99" }; + config.option("filament_retraction_length", true)->values = { 0.9, 1.2 }; return config; }; - auto add_pla = [](PresetBundle &bundle, const char *name, const char *setting_id) { - Preset &preset = add_inmemory_preset(bundle.filaments, name); - preset.setting_id = setting_id; - preset.filament_id = "OGFL99"; // shared by all Generic PLA variants - preset.config.opt_string("filament_type", 0u) = "PLA"; - preset.config.opt_string("filament_vendor", 0u) = "Generic"; - preset.config.opt("filament_retraction_length", true)->values = { 0.5 }; - return &preset; - }; - auto load = [&](PresetBundle &bundle, PublishedConfig &pub, const std::string &setting_id) { - PublishedMaterialEntry entry; - entry.slot = 0; - entry.full = true; - entry.publish_type = true; - entry.publish_type_value = "PLA"; - entry.filament_id = "OGFL99"; - entry.filament_vendor = "Generic"; - entry.setting_id = setting_id; - entry.full_keys = { "filament_retraction_length" }; - pub.published = true; - pub.material_keys = { entry }; - DynamicPrintConfig config = make_file_config(); - Preset::normalize(config); - bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - }; - SECTION("the published variant wins over its same-id sibling") { + SECTION("empty preset_name falls back to the filament_id") { PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_pla(bundle, "Generic PLA", "RcBNzytWgwRrwXXz"); - add_pla(bundle, "Generic PLA Matte", "RFs9eCKYOMUSmvZf"); - bundle.filament_presets = { "My PETG" }; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.full_keys = { "filament_retraction_length" }; PublishedConfig pub; - load(bundle, pub, "RFs9eCKYOMUSmvZf"); // the author published "Generic PLA Matte" - CHECK(bundle.filament_presets[0] == "Generic PLA Matte"); - CHECK(bundle.filaments.find_preset("Generic PLA Matte", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA Matte"); + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "AFL01"); + CHECK(bundle.filaments.find_preset("AFL01", false, true) != nullptr); CHECK(pub.skipped_keys.empty()); } - SECTION("without a setting_id the same-id siblings fall back to collection order") { + SECTION("fully anonymous entries get slot-scoped copies") { PresetBundle bundle; - Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); - petg.config.opt_string("filament_type", 0u) = "PETG"; - petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; - add_pla(bundle, "Generic PLA", "RcBNzytWgwRrwXXz"); - add_pla(bundle, "Generic PLA Matte", "RFs9eCKYOMUSmvZf"); - bundle.filament_presets = { "My PETG" }; + Preset &first = add_inmemory_preset(bundle.filaments, "First PLA"); + first.config.opt_string("filament_type", 0u) = "PLA"; + first.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &second = add_inmemory_preset(bundle.filaments, "Second PLA"); + second.config.opt_string("filament_type", 0u) = "PLA"; + second.config.opt("filament_retraction_length", true)->values = { 0.55 }; + bundle.filament_presets = { "First PLA", "Second PLA" }; + + PublishedMaterialEntry entry0; + entry0.slot = 0; + entry0.full = true; + entry0.publish_type = true; + entry0.publish_type_value = "ABS"; // the only naming field present + entry0.full_keys = { "filament_retraction_length" }; + PublishedMaterialEntry entry1 = entry0; + entry1.slot = 1; PublishedConfig pub; - load(bundle, pub, ""); // legacy file without the field - CHECK(bundle.filament_presets[0] == "Generic PLA"); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + pub.published = true; + pub.material_keys = { entry0, entry1 }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // No shared identity: each slot gets its own uniquified copy. + CHECK(bundle.filament_presets[0] == "ABS"); + CHECK(bundle.filament_presets[1] == "ABS (Published)"); + CHECK(bundle.filaments.find_preset("ABS", false, true) != nullptr); + CHECK(bundle.filaments.find_preset("ABS (Published)", false, true) != nullptr); + CHECK(pub.skipped_keys.empty()); + } +} + +// Within-load dedup does not span loads: importing the same published file again into the same +// session creates a second, uniquified copy instead of mutating or reusing the first. +TEST_CASE("Re-importing a published full material uniquifies the second copy", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + bundle.filament_presets = { "My PETG" }; + + auto make_entry = [] { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.filament_id = "AFL01"; + entry.setting_id = "Sid000111222"; + entry.preset_name = "Author PLA @Vendor"; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + + for (int round = 0; round < 2; ++round) { + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry() }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + if (round == 0) { + CHECK(bundle.filament_presets[0] == "Author PLA"); + CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true) == nullptr); + } else { + // The second import uniquifies beside the first instead of touching it. + CHECK(bundle.filament_presets[0] == "Author PLA (Published)"); + CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + CHECK(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: Author PLA -> Author PLA (Published) (published material imported)"); + } CHECK(pub.skipped_keys.empty()); } } From d4cb739b8b735b7014994db481017f7ce4dff455 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 14:17:56 +0800 Subject: [PATCH 022/162] Dead code removal and comment cleanup --- src/libslic3r/Preset.cpp | 12 ++-- src/libslic3r/PresetBundle.cpp | 97 +++++++------------------------ src/libslic3r/PresetBundle.hpp | 7 ++- src/libslic3r/PublishSettings.hpp | 24 ++++---- 4 files changed, 43 insertions(+), 97 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 802da6ae8c..a0fd9a9e04 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -3056,9 +3056,11 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det } // A detached standalone preset for the Full Publish receiver: create a user preset holding -// the full resolved filament config (no inheritance, no vendor/alias links), parentless and -// universally compatible. Mirrors save_current_preset(detach=true)'s creation branch but -// does not force-select or diff against a parent; the caller decides whether to select it. +// the full resolved filament config (no inheritance, no vendor/alias links), parentless. +// Note: universal printer compatibility is not enforced here - callers apply +// make_publish_universal() to the config before handing it over when they need it. +// Mirrors save_current_preset(detach=true)'s creation branch but does not force-select or +// diff against a parent; the caller decides whether to select it. // The published entry's filament_id is forwarded so user bases keep their stable // material grouping (get_filament_presets() groups user bases by filament_id). // save_to_project=true (the Full Publish default) creates a project-embedded preset: @@ -3094,8 +3096,6 @@ std::string PresetCollection::add_detached_preset(const std::string &name_base, lock(); const auto it = this->find_preset_internal(final_name); Preset &preset = *m_presets.insert(it, stored); - stored.name.clear(); // avoid stale copied name being used below - stored.config.clear(); preset.name = final_name; preset.vendor = nullptr; preset.alias.clear(); @@ -3103,7 +3103,7 @@ std::string PresetCollection::add_detached_preset(const std::string &name_base, preset.m_excluded_from.clear(); preset.setting_id.clear(); preset.inherits().clear(); - preset.version = Semver::parse(SoftFever_VERSION) ? *Semver::parse(SoftFever_VERSION) : Semver(); + preset.version = Semver::parse(SoftFever_VERSION).value_or(Semver()); preset.is_default = false; preset.is_system = false; preset.is_external = false; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 96373eae7c..f1b653feac 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4921,25 +4921,21 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // Material pass: positional per-slot entries. The author published, per slot, either the // entire filament (full) or specific keys plus optionally a curated type and/or colour. - // The receiver's slot is matched positionally against the published type: - // - colour: always applied to the slot, independent of the type gate; - // - type match: the full dump still applies wholesale (every setting, as if the slot's - // filament had been loaded from a normal save); a partial entry's keys are applied - // as usual; - // - type mismatch: the slot is replaced with the best visible candidate, scored by the - // published identity (exact preset name resolved through the collection's name - // machinery, then exact setting_id, exact filament_id, then vendor+type, then type - // only); a preset no other slot references wins on equal scores, and a shared - // exact-material preset is taken even though mutating it also affects the other - // slot; the author's values are applied on top of it (full) or the published keys - // are applied (partial); - // - no replacement available: a full entry falls back to the first available visible - // preset, applying the author's values on top of it; a partial entry keeps the - // receiver's material and reports its keys as skipped. - // All applied values (colour and keys) are written onto the slot's effective preset - - // the collection's edited layer when the slot references the edited preset (visible as - // a modification, revertible, the user's unsaved edits preserved), otherwise the stored - // preset in place: the receiver's material keeps its identity and is simply overridden. + // - full: the slot always lands on a freshly created standalone detached copy + // ("Detach from parent", project-embedded, universally compatible, within-load + // deduped) - handled up front in the entry loop below; no library preset is ever + // reused or mutated; + // - partial: a type requirement gates the application - on type match (or no + // requirement) the keys are applied onto the slot's effective preset; on mismatch + // the slot is replaced with the best visible candidate, scored by the published + // identity (exact preset name resolved through the collection's name machinery, + // then exact setting_id, exact filament_id, then vendor+type, then type only); a + // preset no other slot references wins on equal scores; with no replacement + // available the receiver's material is kept and the keys are reported as skipped; + // - colour: applied to the slot regardless of the type gate. + // Applied partial values land on the collection's edited layer when the slot references + // it and that layer survives the load (visible as a modification, revertible, the user's + // unsaved edits preserved), otherwise on the stored preset in place. // To keep slot-to-slot aliasing (several slots referencing one preset) from leaking one // slot's values into another, published slots sharing a preset with another slot are // re-pointed at distinct presets before the values are applied. @@ -5521,64 +5517,10 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (score < 2 && (!entry.filament_id.empty() || !entry.filament_vendor.empty())) replacement_line += " (substitute: no exact material match)"; published_config->material_replacements.emplace_back(std::move(replacement_line)); - } else if (entry.full) { - // No same-type library preset: fall back to the first available - // visible preset, preferring one no other slot references, and - // apply the author's full values on top of it (the dump carries - // filament_type, so the preset takes the author's type). A preset - // of the published material's own family is preferred overall - - // except that a referenced preset must never win just on family, - // since the dump would mutate it for every sharing slot too. - std::string fallback; - const std::string wanted_family = !entry.publish_type_value.empty() - ? entry.publish_type_value : normalize_filament_type(entry.filament_type); - auto pick_fallback = [&](bool want_family) -> std::string { - std::string first; - for (size_t i = first_candidate; i < this->filaments.size(); ++i) { - const Preset &candidate = this->filaments.preset(i); - if (!candidate.is_visible) - continue; - if (want_family) { - if (wanted_family.empty()) - break; - const ConfigOptionStrings *cand_types = candidate.config.opt("filament_type"); - if (normalize_filament_type(cand_types != nullptr && !cand_types->values.empty() ? cand_types->get_at(0) : std::string()) != wanted_family) - continue; - } - bool referenced = false; - for (size_t s = 0; s < this->filament_presets.size(); ++s) - if (this->filament_presets[s] == candidate.name) { - referenced = true; - break; - } - if (!referenced) - return candidate.name; - if (first.empty()) - first = candidate.name; - } - return first; - }; - if (!wanted_family.empty()) - fallback = pick_fallback(true); - if (fallback.empty()) - fallback = pick_fallback(false); - if (!fallback.empty() && fallback != recv->name) { - const std::string old_name = recv->name; - this->filament_presets[slot] = fallback; - recv = this->filaments.find_preset(fallback, false, true); - material_applied = true; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF slot " << slot << " material " << old_name - << " -> " << fallback << " (full-publish fallback, preset_name \"" - << entry.preset_name << "\", type \"" << entry.publish_type_value << "\")"; - published_config->material_replacements.emplace_back( - "slot " + std::to_string(slot) + ": " + old_name + " -> " + fallback + - " (substitute: no " + entry.publish_type_value + " available)"); - } - // No visible preset at all: keep the receiver's material and let - // the full dump mutate it below. } else { // Partial publish with no replacement: keep the receiver's - // material and report the slot's keys as skipped. + // material and report the slot's keys as skipped. (Full entries + // never reach this gate: they detach above.) for (const std::string &key : entry.keys) skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); apply_slot = false; @@ -5590,7 +5532,8 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // layer when the slot references the collection's edited preset and that // layer will survive the load (visible as a modification and revertible, // preserving the user's unsaved edits), otherwise the stored preset it ended - // up on (original, type replacement or the full-publish fallback), in place. + // up on (original or partial type replacement), in place. Full entries never + // get here - they detach above. DynamicPrintConfig &write_config = (edited_survives_load && recv->name == this->filaments.get_edited_preset().name) ? this->filaments.get_edited_preset().config : recv->config; @@ -5619,7 +5562,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool } if (apply_slot && recv != nullptr) - apply_slot_keys(write_config, entry.full ? entry.full_keys : entry.keys, entry.slot, material_label); + apply_slot_keys(write_config, entry.keys, entry.slot, material_label); } } } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 98b83e053b..c3c8d0f8b0 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -175,9 +175,10 @@ struct PublishedConfig { bool published = false; std::vector published_keys; - // Per-slot published material keys, applied positionally (author slot N -> receiver slot N), - // gated by the author's optional type requirement and written onto the slot's stored preset - // in place (see PublishedMaterialEntry in PublishSettings.hpp). + // Per-slot published material keys, applied positionally (author slot N -> receiver slot N). + // Partial entries are gated by the author's optional type requirement and written onto the + // slot's stored preset in place; full entries instead detach (see PublishedMaterialEntry in + // PublishSettings.hpp). std::vector material_keys; // Keys that could not be applied (missing on the user's machine or vector size mismatch), // filled in by load_config_file_config for notification purposes. diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index bcb3397dcc..d10472ce71 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -35,19 +35,20 @@ const std::set& publishable_printer_keys(); std::vector collect_dirty_settings_keys(const PresetBundle& bundle); // Per-slot published material keys, applied positionally (author slot N -> receiver slot N). -// The identity fields are carried for reference/notification labels only; the type gate -// (publish_type) is the author's explicit opt-in for requiring a material type. +// The identity fields drive the created copy's naming and grouping on Full entries, the +// notification labels, and the partial type gate (publish_type) is the author's explicit +// opt-in for requiring a material type. struct PublishedMaterialEntry { std::string filament_type; // material family, e.g. "PLA" (may be empty) std::string filament_vendor; // e.g. "Generic", "Bambu" (may be empty) std::string filament_id; // stable material id, e.g. "GFL99" (may be empty) - // Unique preset id of the author's slot preset (e.g. Orca Filament Library "setting_id"); - // used on load to match the exact published variant, which filament_id alone cannot - // distinguish ("Generic PLA" and "Generic PLA Matte" share their inherited id). + // Unique preset id of the author's slot preset (e.g. Orca Filament Library "setting_id"). + // Not matched against the receiver's library; carried so identical Full entries within one + // load share one created instance (within-load dedup key). std::string setting_id; - // Canonical name of the author's slot preset (e.g. "Generic PLA @System"). The receiver - // prefers an exact name/alias match over id matching: ids can be shared across variants - // or missing from older files, the name is what the author actually selected. + // Canonical name of the author's slot preset (e.g. "Generic PLA @System"). On Full import + // it names the created copy after its "@variant" tail is stripped; never matched against + // the receiver's library. std::string preset_name; // 0-based author filament slot; -1 (hand-crafted files) is skipped. int slot{-1}; @@ -63,9 +64,10 @@ struct PublishedMaterialEntry { // All non-structural filament keys of the author's slot preset; values travel in the file // config, masked to the author's slot index. std::vector full_keys; - // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on - // mismatch the slot is replaced with a same-type filament from the receiver's library. - // For Full entries the baked filament_type on the created copy satisfies the type gate. + // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on a + // partial entry's mismatch the slot is replaced with a same-type filament from the + // receiver's library. Full entries consult no gate: they detach unconditionally, and the + // copy carries whatever values the payload bakes. bool publish_type{false}; std::string publish_type_value; // Required filament colour, applied on load regardless of the type match. From 795514900da47f420739f2d1b407b7f8250cd19e Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 15:18:38 +0800 Subject: [PATCH 023/162] Fix Windows paint on resize issue. Automatically resize to fit tabs and button content --- src/slic3r/GUI/PublishSettingsDialog.cpp | 40 +++++++++++++++++++++--- src/slic3r/GUI/PublishSettingsDialog.hpp | 2 ++ src/slic3r/GUI/Widgets/StaticBox.cpp | 7 +++++ src/slic3r/GUI/Widgets/StaticBox.hpp | 2 ++ src/slic3r/GUI/Widgets/TabCtrl.cpp | 9 ++++++ src/slic3r/GUI/Widgets/TabCtrl.hpp | 2 ++ 6 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 08adae903b..0ebb784b01 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -17,6 +17,7 @@ #include "libslic3r/PublishSettings.hpp" #include +#include #include #include @@ -97,7 +98,7 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) _L("Publish 3MF..."), wxDefaultPosition, wxDefaultSize, - wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER) + wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER | wxFULL_REPAINT_ON_RESIZE) , m_search(this, "search", 16) , m_menu(this, "filter", 16) { @@ -193,11 +194,42 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) w_sizer->Add(dlg_btns, 0, wxEXPAND); SetSizerAndFit(w_sizer); - SetMinSize(FromDIP(wxSize(600, 500))); - SetSize(FromDIP(wxSize(600, 500))); // initial size only; the dialog is resizable + fit_to_content(); // initial size only; the dialog is resizable wxGetApp().UpdateDlgDarkUI(this); } +// Size the window to its content: width follows the widest tab strip so no filament tab is +// hidden (TabCtrl::relayout hides overflowing buttons), height scales proportionally. Both +// are floored at the 600x500 base and capped at hard DIP limits - deliberately not the whole +// display - with one last-resort clamp so the dialog can never open larger than the screen. +// Also owns the resize floor: the window cannot be resized below what the tabs need, so +// shrinking never re-hides a filament tab. +void PublishSettingsDialog::fit_to_content() +{ + static const wxSize BASE{600, 500}; + static const wxSize CAP{1300, 850}; + + int strip = m_outer_tabs->buttons_best_width(); + for (const SectionGroup& section : m_sections) + strip = std::max(strip, section.tabs->buttons_best_width()); + + // Minimum width: whatever keeps every tab visible (never below the base). strip is device + // pixels (Button min sizes); BASE/CAP are DIP and converted over. + const int min_w = std::max(strip + 2 * FromDIP(10), FromDIP(BASE.x)); + + // Initial size: prefer proportional growth within the caps. + const int w = std::clamp(min_w, FromDIP(BASE.x), FromDIP(CAP.x)); + const double f = double(w) / FromDIP(BASE.x); + const int h = std::clamp(int(FromDIP(BASE.y) * f), FromDIP(BASE.y), FromDIP(CAP.y)); + + const wxRect area = wxDisplay(this).GetClientArea(); + const int max_w = area.width * 9 / 10; + const int max_h = area.height * 9 / 10; + + SetMinSize(wxSize(std::min(min_w, max_w), std::min(FromDIP(BASE.y), max_h))); + SetSize(std::min(w, max_w), std::min(h, max_h)); +} + PublishSettingsDialog::~PublishSettingsDialog() {} void PublishSettingsDialog::build_option_model() @@ -1059,7 +1091,7 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) } } - SetMinSize(FromDIP(wxSize(600, 500))); + fit_to_content(); // tab buttons' min widths grew with the DPI: re-fit (incl. resize floor) Refresh(); } diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 312931c0c1..2b094da75b 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -48,6 +48,8 @@ protected: void on_dpi_changed(const wxRect& suggested_rect) override; private: + void fit_to_content(); + // Which part of the settings the row/category came from. enum class Section { Print, Printer, Material }; diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 6391c1a8c4..f6e7ca67f6 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -7,6 +7,7 @@ BEGIN_EVENT_TABLE(StaticBox, wxWindow) // catch paint events //EVT_ERASE_BACKGROUND(StaticBox::eraseEvent) +EVT_SIZE(StaticBox::sizeEvent) EVT_PAINT(StaticBox::paintEvent) END_EVENT_TABLE() @@ -140,6 +141,12 @@ void StaticBox::eraseEvent(wxEraseEvent& evt) #endif } +void StaticBox::sizeEvent(wxSizeEvent& evt) +{ + Refresh(); + evt.Skip(); +} + void StaticBox::paintEvent(wxPaintEvent& evt) { // depending on your system you may need to look at double-buffered dcs diff --git a/src/slic3r/GUI/Widgets/StaticBox.hpp b/src/slic3r/GUI/Widgets/StaticBox.hpp index b7cdee34ef..363d431c8e 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.hpp +++ b/src/slic3r/GUI/Widgets/StaticBox.hpp @@ -46,6 +46,8 @@ public: protected: void eraseEvent(wxEraseEvent& evt); + void sizeEvent(wxSizeEvent& evt); + void paintEvent(wxPaintEvent& evt); void render(wxDC& dc); diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 6aeffd2dce..5c2eb2d693 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -295,6 +295,15 @@ void TabCtrl::relayout() Layout(); } +int TabCtrl::buttons_best_width() const +{ + // Mirrors relayout(): a 10px leading spacer plus every button's min width and spacing. + int width = 10; + for (const Button *btn : btns) + width += btn->GetMinSize().x + TAB_BUTTON_SPACE * 2; + return width; +} + void TabCtrl::buttonClicked(wxCommandEvent &event) { SetFocus(); diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index e79dd1dee6..5631eeb6a7 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -73,6 +73,8 @@ private: void relayout(); + int buttons_best_width() const; + void buttonClicked(wxCommandEvent & event); void keyDown(wxKeyEvent &event); From 51b646efcf7aeae7cc5a7e4790b31fa8baf4bbe1 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 16:40:18 +0800 Subject: [PATCH 024/162] Better safety if publish workflow crashes. Cleanup on Button --- src/slic3r/GUI/Plater.cpp | 56 +++++++++++++++++++----------- src/slic3r/GUI/Widgets/Button.cpp | 21 ++++------- src/slic3r/GUI/Widgets/Button.hpp | 3 -- src/slic3r/GUI/Widgets/TabCtrl.cpp | 2 +- src/slic3r/GUI/Widgets/TabCtrl.hpp | 5 +-- 5 files changed, 45 insertions(+), 42 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 52d90623fe..bdca6b7c77 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -16323,29 +16323,43 @@ int Plater::export_published_3mf(const std::vector& published_keys, if (full_pathnames) save_strategy = save_strategy | SaveStrategy::FullPathSources; - const int ret = export_3mf(into_path(path), save_strategy, -1, nullptr); + // Restore the previous metadata state (both on success and on failure): a thrown export + // must not leave the published metadata on the in-memory project, or a later Save Project + // would write a hybrid file (full config + slicer tags + published metadata) that receivers + // silently load in published mode, skipping the project's own presets. + auto restore_metadata = [&]() { + if (!had_model_info) { + model.model_info = nullptr; + } else { + if (had_published) + model.model_info->metadata_items["published"] = prev_published; + else + model.model_info->metadata_items.erase("published"); + if (had_published_keys) + model.model_info->metadata_items["published_keys"] = prev_published_keys; + else + model.model_info->metadata_items.erase("published_keys"); + if (had_material_keys) + model.model_info->metadata_items["published_material_keys"] = prev_material_keys; + else + model.model_info->metadata_items.erase("published_material_keys"); + if (had_payload) + model.model_info->metadata_items["published_config"] = prev_payload; + else + model.model_info->metadata_items.erase("published_config"); + } + }; - // Restore the previous metadata state (both on success and on failure). - if (!had_model_info) { - model.model_info = nullptr; - } else { - if (had_published) - model.model_info->metadata_items["published"] = prev_published; - else - model.model_info->metadata_items.erase("published"); - if (had_published_keys) - model.model_info->metadata_items["published_keys"] = prev_published_keys; - else - model.model_info->metadata_items.erase("published_keys"); - if (had_material_keys) - model.model_info->metadata_items["published_material_keys"] = prev_material_keys; - else - model.model_info->metadata_items.erase("published_material_keys"); - if (had_payload) - model.model_info->metadata_items["published_config"] = prev_payload; - else - model.model_info->metadata_items.erase("published_config"); + int ret; + try { + ret = export_3mf(into_path(path), save_strategy, -1, nullptr); + } catch (...) { + restore_metadata(); + MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), + _L("Publish"), wxOK | wxICON_WARNING).ShowModal(); + return wxID_CANCEL; } + restore_metadata(); if (ret < 0) { MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 3129d608ca..5a5bd89403 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -80,7 +80,6 @@ bool Button::SetFont(const wxFont& font) void Button::SetIcon(const wxString& icon) { - custom_icon = wxNullBitmap; auto tmpBitmap = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt()); if (!icon.IsEmpty()) { //BBS set button icon default size to 20 @@ -104,13 +103,6 @@ void Button::SetIcon(const wxBitmap& icon) Refresh(); } -void Button::SetBitmap(const wxBitmap& bitmap) -{ - custom_icon = bitmap; - messureSize(); - Refresh(); -} - void Button::SetMinSize(const wxSize& size) { minSize = size; @@ -310,8 +302,7 @@ void Button::render(wxDC& dc) } } auto szContent = textSize; - const bool has_custom_icon = custom_icon.IsOk(); - if (has_custom_icon || icon.bmp().IsOk()) { + if (icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon if (vertical) @@ -319,7 +310,7 @@ void Button::render(wxDC& dc) else szContent.x += spacing; } - szIcon = has_custom_icon ? custom_icon.GetSize() : icon.GetBmpSize(); + szIcon = icon.GetBmpSize(); if (vertical) { szContent.y += szIcon.y; if (szIcon.x > szContent.x) szContent.x = szIcon.x; @@ -342,12 +333,12 @@ void Button::render(wxDC& dc) } // start draw wxPoint pt = rcContent.GetLeftTop(); - if (has_custom_icon || icon.bmp().IsOk()) { + if (icon.bmp().IsOk()) { if (vertical) pt.x += (rcContent.width - szIcon.x) / 2; else pt.y += (rcContent.height - szIcon.y) / 2; - dc.DrawBitmap(has_custom_icon ? custom_icon : icon.bmp(), pt); + dc.DrawBitmap(icon.bmp(), pt); //BBS norrow size between text and icon if (vertical) { pt.y += szIcon.y + spacing; @@ -380,7 +371,7 @@ void Button::messureSize() wxClientDC dc(this); dc.GetTextExtent(GetLabel(), &textSize.width, &textSize.height, &textSize.x, &textSize.y); wxSize szContent = textSize.GetSize(); - if (custom_icon.IsOk() || this->active_icon.bmp().IsOk()) { + if (this->active_icon.bmp().IsOk()) { if (szContent.y > 0) { //BBS norrow size between text and icon if (vertical) @@ -388,7 +379,7 @@ void Button::messureSize() else szContent.x += 5; } - wxSize szIcon = custom_icon.IsOk() ? custom_icon.GetSize() : this->active_icon.GetBmpSize(); + wxSize szIcon = this->active_icon.GetBmpSize(); if (vertical) { szContent.y += szIcon.y; if (szIcon.x > szContent.x) szContent.x = szIcon.x; diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 9ad0810804..19dcd24938 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -36,7 +36,6 @@ class Button : public StaticBox wxSize minSize; // set by outer wxSize paddingSize; ScalableBitmap active_icon; - wxBitmap custom_icon; StateColor text_color; @@ -63,8 +62,6 @@ public: void SetIcon(const wxString& icon); void SetIcon(const wxBitmap& icon); - void SetBitmap(const wxBitmap& bitmap); - void SetMinSize(const wxSize& size) override; void SetMaxSize(const wxSize& size) override; diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 5c2eb2d693..7817c9111a 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -182,7 +182,7 @@ void TabCtrl::SetItemBitmap(unsigned int item, const wxBitmap& bitmap) { if (item >= btns.size()) return; - btns[item]->SetBitmap(bitmap); + btns[item]->SetIcon(bitmap); relayout(); } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 5631eeb6a7..5374a32a73 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -64,6 +64,9 @@ public: int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; + // Width of the tab strip that keeps every button visible (used to size the Publish dialog). + int buttons_best_width() const; + private: virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); @@ -73,8 +76,6 @@ private: void relayout(); - int buttons_best_width() const; - void buttonClicked(wxCommandEvent & event); void keyDown(wxKeyEvent &event); From e1a79c41126870d9d4d510be2f9b193a510b7901 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 25 Aug 2026 17:37:04 +0800 Subject: [PATCH 025/162] Code cleanup and renamed published_* flags to orca_published_* flags to be less generic --- src/libslic3r/Format/bbs_3mf.cpp | 2 +- src/libslic3r/Format/bbs_3mf.hpp | 9 ++++ src/slic3r/GUI/Plater.cpp | 56 ++++++++++++------------ src/slic3r/GUI/PublishSettingsDialog.hpp | 3 +- tests/libslic3r/test_3mf.cpp | 48 ++++++++++---------- 5 files changed, 63 insertions(+), 55 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 6415f29413..4a7cac7055 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -1224,7 +1224,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Reads the parse-time metadata: the model XML carries it before its resources, while // m_model->model_info is only filled in after the whole XML has been parsed. bool _is_published_3mf() const { - return this->model_info.metadata_items.find("published") != this->model_info.metadata_items.end(); + return this->model_info.metadata_items.find(ORCA_PUBLISHED_TAG) != this->model_info.metadata_items.end(); } bool _is_svg_shape_file(const std::string &filename) const; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 57a40c2012..647488ad55 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -154,6 +154,15 @@ enum class SaveStrategy Backup = 0x10000 | WithGcode | Silence | SkipStatic | SplitModel, }; +// Model metadata keys of a "published" 3MF (see MinimalPublished): the flag marks a minimal, +// tag-less publish export, the others carry the author-selected settings payload. Namespaced +// with the "orca_published" prefix because metadata_items round-trips verbatim through other +// slicers, where a bare "published" key could collide. +inline constexpr const char *ORCA_PUBLISHED_TAG = "orca_published"; +inline constexpr const char *ORCA_PUBLISHED_KEYS_TAG = "orca_published_keys"; +inline constexpr const char *ORCA_PUBLISHED_MATERIAL_TAG = "orca_published_material_keys"; +inline constexpr const char *ORCA_PUBLISHED_CONFIG_TAG = "orca_published_config"; + inline SaveStrategy operator | (SaveStrategy lhs, SaveStrategy rhs) { using T = std::underlying_type_t ; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index bdca6b7c77..dfeca24a19 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6920,11 +6920,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ // metadata payload, which must fill config_loaded before the chain decides // whether to import geometry only. if (model.model_info != nullptr) { - auto published_it = model.model_info->metadata_items.find("published"); + auto published_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_TAG); if (published_it != model.model_info->metadata_items.end() && (published_it->second == "true" || published_it->second == "1")) { published_config.published = true; - auto keys_it = model.model_info->metadata_items.find("published_keys"); + auto keys_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_KEYS_TAG); if (keys_it != model.model_info->metadata_items.end()) { try { auto j = nlohmann::json::parse(keys_it->second); @@ -6937,7 +6937,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - auto material_keys_it = model.model_info->metadata_items.find("published_material_keys"); + auto material_keys_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_MATERIAL_TAG); if (material_keys_it != model.model_info->metadata_items.end()) { try { auto jm = nlohmann::json::parse(material_keys_it->second); @@ -6995,7 +6995,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ // file carries no project_settings.config, so config_loaded is filled // from here; a missing or malformed payload leaves it empty and the // fallback chain below imports the geometry only. - auto payload_it = model.model_info->metadata_items.find("published_config"); + auto payload_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_CONFIG_TAG); if (payload_it != model.model_info->metadata_items.end()) { try { ConfigSubstitutions payload_substitutions = config_loaded.load_from_ini_string(payload_it->second, ForwardCompatibilitySubstitutionRule::Enable); @@ -7320,10 +7320,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (published_out != nullptr && published_config.published) *published_out = true; if (published_config.published && load_config && this->model.model_info != nullptr) { - this->model.model_info->metadata_items.erase("published"); - this->model.model_info->metadata_items.erase("published_keys"); - this->model.model_info->metadata_items.erase("published_material_keys"); - this->model.model_info->metadata_items.erase("published_config"); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_KEYS_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_MATERIAL_TAG); + this->model.model_info->metadata_items.erase(ORCA_PUBLISHED_CONFIG_TAG); } if (load_config) { @@ -16289,19 +16289,19 @@ int Plater::export_published_3mf(const std::vector& published_keys, // Save the previous metadata so it can be restored after the export, keeping the in-memory // project pristine (the published flag lives only in the exported file). const bool had_model_info = (model.model_info != nullptr); - const bool had_published = had_model_info && (model.model_info->metadata_items.find("published") != model.model_info->metadata_items.end()); - const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find("published_keys") != model.model_info->metadata_items.end()); - const bool had_material_keys = had_model_info && (model.model_info->metadata_items.find("published_material_keys") != model.model_info->metadata_items.end()); - const bool had_payload = had_model_info && (model.model_info->metadata_items.find("published_config") != model.model_info->metadata_items.end()); - const std::string prev_published = had_published ? model.model_info->metadata_items.at("published") : std::string(); - const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at("published_keys") : std::string(); - const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at("published_material_keys") : std::string(); - const std::string prev_payload = had_payload ? model.model_info->metadata_items.at("published_config") : std::string(); + const bool had_published = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_TAG) != model.model_info->metadata_items.end()); + const bool had_published_keys = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_KEYS_TAG) != model.model_info->metadata_items.end()); + const bool had_material_keys = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_MATERIAL_TAG) != model.model_info->metadata_items.end()); + const bool had_payload = had_model_info && (model.model_info->metadata_items.find(ORCA_PUBLISHED_CONFIG_TAG) != model.model_info->metadata_items.end()); + const std::string prev_published = had_published ? model.model_info->metadata_items.at(ORCA_PUBLISHED_TAG) : std::string(); + const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_KEYS_TAG) : std::string(); + const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_MATERIAL_TAG) : std::string(); + const std::string prev_payload = had_payload ? model.model_info->metadata_items.at(ORCA_PUBLISHED_CONFIG_TAG) : std::string(); if (model.model_info == nullptr) model.model_info = std::make_shared(); - model.model_info->metadata_items["published"] = "1"; - model.model_info->metadata_items["published_keys"] = j.dump(); - model.model_info->metadata_items["published_material_keys"] = jm.dump(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = j.dump(); + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = jm.dump(); // Minimal published export: filter full_config to the published keys, material keys, // identity fields and plate geometry keys, and omit the project config file, the @@ -16314,7 +16314,7 @@ int Plater::export_published_3mf(const std::vector& published_keys, std::string payload; for (const std::string &key : filtered_cfg.keys()) payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; - model.model_info->metadata_items["published_config"] = std::move(payload); + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = std::move(payload); // Same file layout as save_project(), plus Silence (so export_3mf does not set the project // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. @@ -16332,21 +16332,21 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info = nullptr; } else { if (had_published) - model.model_info->metadata_items["published"] = prev_published; + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = prev_published; else - model.model_info->metadata_items.erase("published"); + model.model_info->metadata_items.erase(ORCA_PUBLISHED_TAG); if (had_published_keys) - model.model_info->metadata_items["published_keys"] = prev_published_keys; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = prev_published_keys; else - model.model_info->metadata_items.erase("published_keys"); + model.model_info->metadata_items.erase(ORCA_PUBLISHED_KEYS_TAG); if (had_material_keys) - model.model_info->metadata_items["published_material_keys"] = prev_material_keys; + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = prev_material_keys; else - model.model_info->metadata_items.erase("published_material_keys"); + model.model_info->metadata_items.erase(ORCA_PUBLISHED_MATERIAL_TAG); if (had_payload) - model.model_info->metadata_items["published_config"] = prev_payload; + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = prev_payload; else - model.model_info->metadata_items.erase("published_config"); + model.model_info->metadata_items.erase(ORCA_PUBLISHED_CONFIG_TAG); } }; diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 2b094da75b..2cf49e7eb9 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -11,7 +11,6 @@ #include #include #include -#include // Forward declarations (all are global classes, see Widgets/TextInput.hpp and // Widgets/StaticLine.hpp). @@ -30,7 +29,7 @@ struct PublishMaterialIdentity // Dialog letting a model author select which settings get embedded in a 3MF. Nested tab layout // mirroring the Process settings (Printer / Filament / Process outer tabs, category or material // tabs inside each). Dirty settings are pre-checked and shown bold; on OK the print rows become -// "published_keys" and the material rows become "published_material_keys". +// "orca_published_keys" and the material rows become "orca_published_material_keys". class PublishSettingsDialog : public DPIDialog { public: diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 8898dae2fe..089cc7a40d 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -501,8 +501,8 @@ SCENARIO("Nozzle-group metadata .3mf round-trip", "[3mf][MultiNozzle]") { } } -// Locks the serialization contract of the "Publish" metadata: the published flag and the -// published_keys JSON array in model.model_info->metadata_items must survive a store_bbs_3mf -> +// Locks the serialization contract of the "Publish" metadata: the orca_published flag and the +// orca_published_keys JSON array in model.model_info->metadata_items must survive a store_bbs_3mf -> // load_bbs_3mf round-trip unchanged. (The full preset-preservation behavior is exercised // headlessly in test_preset_bundle_loading.cpp.) SCENARIO("Published 3MF round-trips the published flag and published_keys metadata", "[3mf]") { @@ -513,8 +513,8 @@ SCENARIO("Published 3MF round-trips the published flag and published_keys metada model.add_default_instances(); model.model_info = std::make_shared(); - model.model_info->metadata_items["published"] = "1"; - model.model_info->metadata_items["published_keys"] = R"(["layer_height","wall_thickness"])"; + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = R"(["layer_height","wall_thickness"])"; // store_bbs_3mf stages project_settings.config through the model's backup path; point // it at a writable temp dir (the default lives under a read-only root in CI). @@ -546,12 +546,12 @@ SCENARIO("Published 3MF round-trips the published flag and published_keys metada THEN("the published metadata round-trips unchanged") { REQUIRE(loaded); REQUIRE(dst_model.model_info != nullptr); - REQUIRE(dst_model.model_info->metadata_items["published"] == "1"); - REQUIRE(dst_model.model_info->metadata_items["published_keys"] == R"(["layer_height","wall_thickness"])"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height","wall_thickness"])"); - // The published_keys value is a JSON array of setting keys; it must parse back to + // The orca_published_keys value is a JSON array of setting keys; it must parse back to // the same keys that were selected. - nlohmann::json keys = nlohmann::json::parse(dst_model.model_info->metadata_items["published_keys"]); + nlohmann::json keys = nlohmann::json::parse(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG]); REQUIRE(keys.is_array()); REQUIRE(keys.size() == 2); REQUIRE(keys[0] == "layer_height"); @@ -563,7 +563,7 @@ SCENARIO("Published 3MF round-trips the published flag and published_keys metada } // A normal 3MF (no Publish metadata) must load identically: the loader must not fabricate a -// "published" flag or published_keys for files that never carried them. +// "orca_published" flag or orca_published_keys for files that never carried them. SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { GIVEN("a model without any published metadata") { Model model; @@ -599,8 +599,8 @@ SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { THEN("no published key is fabricated") { REQUIRE(loaded); if (dst_model.model_info != nullptr) { - REQUIRE(dst_model.model_info->metadata_items.count("published") == 0); - REQUIRE(dst_model.model_info->metadata_items.count("published_keys") == 0); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_TAG) == 0); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_KEYS_TAG) == 0); } } release_PlateData_list(dst_plates); @@ -608,8 +608,8 @@ SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { } } -// Locks the serialization contract of the published_material_keys metadata: the per-entry JSON -// must survive a store_bbs_3mf -> load_bbs_3mf round-trip verbatim, exactly like published_keys. +// Locks the serialization contract of the orca_published_material_keys metadata: the per-entry JSON +// must survive a store_bbs_3mf -> load_bbs_3mf round-trip verbatim, exactly like orca_published_keys. SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf]") { GIVEN("a model carrying published material keys metadata") { Model model; @@ -621,7 +621,7 @@ SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99"},"slot":0,"keys":["filament_retraction_length","filament_z_hop"]}])"; model.model_info = std::make_shared(); - model.model_info->metadata_items["published_material_keys"] = material_keys_json; + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = material_keys_json; ScopedTemporaryDir backup_dir("orca_pub_mat"); model.set_backup_path(backup_dir.string()); @@ -651,7 +651,7 @@ SCENARIO("Published 3MF round-trips the published_material_keys metadata", "[3mf THEN("the published material keys metadata round-trips unchanged") { REQUIRE(loaded); REQUIRE(dst_model.model_info != nullptr); - REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] == material_keys_json); // The value must parse back to one material entry carrying the nested identity // object, the author slot ordinal and the key list. @@ -706,9 +706,9 @@ SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer ta payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; model.model_info = std::make_shared(); - model.model_info->metadata_items["published"] = "1"; - model.model_info->metadata_items["published_keys"] = R"(["layer_height","retraction_length"])"; - model.model_info->metadata_items["published_config"] = payload; + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = R"(["layer_height","retraction_length"])"; + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = payload; ScopedTemporaryDir backup_dir("orca_min_pub"); model.set_backup_path(backup_dir.string()); @@ -760,13 +760,13 @@ SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer ta } THEN("the published metadata and payload round-trip unchanged") { REQUIRE(dst_model.model_info != nullptr); - REQUIRE(dst_model.model_info->metadata_items["published"] == "1"); - REQUIRE(dst_model.model_info->metadata_items["published_keys"] == R"(["layer_height","retraction_length"])"); - REQUIRE(dst_model.model_info->metadata_items["published_config"] == payload); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height","retraction_length"])"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] == payload); } THEN("the payload parses back to the published values") { DynamicPrintConfig parsed_payload; - parsed_payload.load_from_ini_string(dst_model.model_info->metadata_items["published_config"], ForwardCompatibilitySubstitutionRule::Enable); + parsed_payload.load_from_ini_string(dst_model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG], ForwardCompatibilitySubstitutionRule::Enable); REQUIRE(parsed_payload.option("layer_height") != nullptr); REQUIRE_THAT(parsed_payload.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.24, 1e-6)); REQUIRE(parsed_payload.option("retraction_length") != nullptr); @@ -887,7 +887,7 @@ SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { R"([{"material":{"filament_type":"PLA","filament_vendor":"Generic","filament_id":"GFL99","setting_id":"RFs9eCKYOMUSmvZf","name":"Generic PLA Matte @System"},"slot":1,"keys":[],"full":true,"full_keys":["filament_retraction_length","filament_colour"],"publish_type":true,"type":"PLA","publish_color":false,"color":""}])"; model.model_info = std::make_shared(); - model.model_info->metadata_items["published_material_keys"] = material_keys_json; + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = material_keys_json; ScopedTemporaryDir backup_dir("orca_pub_mat2"); model.set_backup_path(backup_dir.string()); @@ -917,7 +917,7 @@ SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { THEN("the extended material metadata round-trips unchanged") { REQUIRE(loaded); REQUIRE(dst_model.model_info != nullptr); - REQUIRE(dst_model.model_info->metadata_items["published_material_keys"] == material_keys_json); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] == material_keys_json); // The value must parse back with every extended field intact. nlohmann::json entries = nlohmann::json::parse(material_keys_json); From cc267055e1064d39a9f60d3d03ed4c04a0b450ca Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 26 Aug 2026 11:33:50 +0800 Subject: [PATCH 026/162] Use proper floating point comparison functions in publish unit test --- tests/libslic3r/test_3mf.cpp | 12 +- .../libslic3r/test_preset_bundle_loading.cpp | 116 ++++++++++-------- 2 files changed, 68 insertions(+), 60 deletions(-) diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 089cc7a40d..621b35a8c7 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -799,10 +799,10 @@ SCENARIO("Full-publish entries filter the whole slot and mask the other slots", THEN("the full key list is present with the author's slot value") { REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[1] == 0.98); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); } THEN("the non-published slot is masked to its default") { - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[0] == 1.0); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); } THEN("the identity keys stay present") { REQUIRE(filtered_cfg.option("filament_colour") != nullptr); @@ -829,10 +829,10 @@ SCENARIO("Partial-publish entries mask the other slots like full entries", "[3mf THEN("the partial key is present with the author's slot value") { REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[1] == 0.98); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); } THEN("the non-published slot is masked to its default") { - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[0] == 1.0); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); } THEN("the identity keys stay present") { REQUIRE(filtered_cfg.option("filament_colour") != nullptr); @@ -864,8 +864,8 @@ SCENARIO("Unmaskable keys are dropped from the published payload instead of leak } THEN("the maskable key is present, author slot kept, other slot masked") { REQUIRE(filtered_cfg.opt("filament_flow_ratio") != nullptr); - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[1] == 0.98); - REQUIRE(filtered_cfg.opt("filament_flow_ratio")->values[0] == 1.0); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); } THEN("the identity keys stay present") { REQUIRE(filtered_cfg.option("filament_colour") != nullptr); diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index ba92f43943..34cbcfaf4e 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -9,6 +9,7 @@ #include "test_utils.hpp" #include +#include using namespace Slic3r; @@ -22,6 +23,14 @@ bool contains_key(const std::vector &keys, const std::string &key) return std::find(keys.begin(), keys.end(), key) != keys.end(); } +void check_double_vector(const std::vector &actual, std::initializer_list expected) +{ + REQUIRE(actual.size() == expected.size()); + size_t index = 0; + for (double value : expected) + REQUIRE_THAT(actual[index++], Catch::Matchers::WithinAbs(value, 1e-6)); +} + void write_print_preset(const DynamicPrintConfig &default_config, const fs::path &file, const std::string &name, const std::string &inherits = {}) { DynamicPrintConfig config(default_config); @@ -646,7 +655,7 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the // a) Process scalar overlaid; matching-size vector applied, mismatched one lands in // skipped_keys; applied keys are not reported. CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); - CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 140., 150. }); + check_double_vector(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values, { 140., 150. }); CHECK(bundle.prints.get_edited_preset().config.opt("post_process")->values == std::vector{ "existing-script" }); CHECK(contains_key(pub.skipped_keys, "post_process")); CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); @@ -665,7 +674,7 @@ TEST_CASE("Published 3MF overlays only the author-selected process keys onto the CHECK(bundle.project_config.opt("filament_colour")->values == seed_filament_colour); CHECK(bundle.project_config.opt("flush_multiplier")->values == seed_flush_multiplier); CHECK(bundle.project_config.option("curr_bed_type")->getInt() == seed_bed_type); - CHECK(bundle.project_config.opt("wipe_tower_x")->values == std::vector{ 100. }); + check_double_vector(bundle.project_config.opt("wipe_tower_x")->values, { 100. }); CHECK_THAT(bundle.project_config.opt("wipe_tower_rotation_angle")->value, Catch::Matchers::WithinAbs(45., 0.000001)); // e) The published path keeps the user's currently-selected presets: same preset, same size. @@ -716,8 +725,8 @@ TEST_CASE("Published 3MF overlays only the allowlisted retraction and z-hop keys // Matching-size retraction vector applied; mismatched vector reported as skipped and the // receiver's own value survives. - CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 1.4 }); - CHECK(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values == std::vector{ 33. }); + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 1.4 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values, { 33. }); CHECK(contains_key(pub.skipped_keys, "retraction_speed")); // Contract-excluded printer key: silently ignored, absent from skipped_keys. CHECK(bundle.printers.get_edited_preset().config.opt_string("machine_start_gcode") == "G28 ; user"); @@ -784,9 +793,9 @@ TEST_CASE("Published 3MF applies positional material keys onto the receiver's ma bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); // The author's slot values are written onto the receiver's stored presets in place. - CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); - CHECK(bundle.filaments.find_preset("My PETG")->config.opt("filament_z_hop")->values == std::vector{ 0.3 }); + check_double_vector(bundle.filaments.find_preset("My PLA")->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My PETG")->config.opt("filament_retraction_length")->values, { 1.2 }); + check_double_vector(bundle.filaments.find_preset("My PETG")->config.opt("filament_z_hop")->values, { 0.3 }); // Structural keys inside a material entry are silently ignored: the receiver's own // filament_settings_id is untouched and nothing is reported for it. CHECK(bundle.filaments.find_preset("My PLA")->config.opt("filament_settings_id")->values == std::vector{ "receiver-pla" }); @@ -847,8 +856,8 @@ TEST_CASE("Published 3MF full-published slots are imported as standalone detache CHECK(bundle.filament_presets[0] == "PLA"); Preset *copy = bundle.filaments.find_preset("PLA", false, true); REQUIRE(copy != nullptr); - CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(copy->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PLA -> PLA (published material imported)"); @@ -877,9 +886,9 @@ TEST_CASE("Published 3MF full-published slots are imported as standalone detache CHECK(bundle.filament_presets[0] == "ABS"); Preset *copy = bundle.filaments.find_preset("ABS", false, true); REQUIRE(copy != nullptr); - CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("My ABS", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.3 }); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(copy->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("My ABS", false, true)->config.opt("filament_retraction_length")->values, { 0.3 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS (published material imported)"); @@ -914,12 +923,12 @@ TEST_CASE("Published 3MF full-published slots are imported as standalone detache CHECK(bundle.filament_presets[0] == "ABS"); Preset *copy = bundle.filaments.find_preset("ABS", false, true); REQUIRE(copy != nullptr); - CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(copy->config.opt("filament_retraction_length")->values, { 0.9 }); CHECK(copy->config.opt_string("filament_type", 0u) == "ABS"); CHECK(copy->config.opt_string("filament_vendor", 0u) == "Generic"); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt_string("filament_type", 0u) == "PLA"); - CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.7 }); + check_double_vector(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.7 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PLA -> ABS (published material imported)"); @@ -984,9 +993,9 @@ TEST_CASE("Published 3MF imports a full material under the author's stripped nam // The copy is named after the stripped author name; the receiver's exact-name preset // keeps its own values. CHECK(bundle.filament_presets[0] == "Generic PLA"); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values, { 0.6 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (published material imported)"); CHECK(pub.skipped_keys.empty()); @@ -1017,7 +1026,7 @@ TEST_CASE("Published 3MF imports a full material under the author's stripped nam bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); CHECK(bundle.filament_presets[0] == "Generic PLA"); - CHECK(bundle.filaments.find_preset("Bambu PLA Basic @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("Bambu PLA Basic @System", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (published material imported)"); CHECK(pub.skipped_keys.empty()); @@ -1065,8 +1074,8 @@ TEST_CASE("Published 3MF imports a full material under the author's stripped nam // The grown slot lands on a freshly created copy carrying the author's slot-1 value; // the library preset that seeded it stays untouched. CHECK(bundle.filament_presets[1] == "Generic PLA"); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.8 }); - CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.8 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 1: Generic PLA @System -> Generic PLA (published material imported)"); CHECK(pub.skipped_keys.empty()); @@ -1117,10 +1126,10 @@ TEST_CASE("Published 3MF uniquifies an imported full material name on collision" // The copy lands beside the collision, suffixed; every pre-existing preset keeps its own // values. CHECK(bundle.filament_presets[0] == "Generic PLA (Published)"); - CHECK(bundle.filaments.find_preset("Generic PLA (Published)", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(bundle.filaments.find_preset("Generic PLA @Qidi Q2 0.4 nozzle", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published)", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @Qidi Q2 0.4 nozzle", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (Published) (published material imported)"); CHECK(pub.skipped_keys.empty()); @@ -1178,13 +1187,13 @@ TEST_CASE("Published 3MF writes to the stored preset when the edited layer is re Preset *stored = bundle.filaments.find_preset("My PLA", false, true); REQUIRE(stored != nullptr); CHECK(stored->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(stored->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(stored->config.opt("filament_retraction_length")->values, { 0.9 }); // The load re-selected slot 0's material, mirroring a normal project load. CHECK(bundle.filaments.get_edited_preset().name == "My PETG"); // Selecting the slot's material afterwards surfaces the applied values. REQUIRE(bundle.filaments.select_preset_by_name("My PLA", false)); CHECK(bundle.filaments.get_edited_preset().config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(bundle.filaments.get_edited_preset().config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(bundle.filaments.get_edited_preset().config.opt("filament_retraction_length")->values, { 0.9 }); CHECK(pub.skipped_keys.empty()); } @@ -1252,7 +1261,7 @@ TEST_CASE("Published 3MF imports a full material as a detached project-embedded CHECK(copy->filament_id == "AFL01"); CHECK(copy->config.opt("filament_settings_id")->values == std::vector{ "Author PLA" }); // The published values and colour live on the copy. - CHECK(copy->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(copy->config.opt("filament_retraction_length")->values, { 0.9 }); CHECK(copy->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); // Universally compatible: no printer/print restrictions survive the import. CHECK(copy->config.opt("compatible_printers")->values.empty()); @@ -1260,8 +1269,8 @@ TEST_CASE("Published 3MF imports a full material as a detached project-embedded CHECK(copy->config.opt("compatible_printers_condition")->value.empty()); CHECK(copy->config.opt("compatible_prints_condition")->value.empty()); // Nothing pre-existing was touched. - CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); - CHECK(bundle.filaments.find_preset("Spare PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.4 }); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values, { 0.6 }); + check_double_vector(bundle.filaments.find_preset("Spare PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.4 }); CHECK(pub.skipped_keys.empty()); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA (published material imported)"); @@ -1364,13 +1373,13 @@ TEST_CASE("Published 3MF shares one imported copy between identical full slots", CHECK(bundle.filaments.find_preset("Author PLA", false, true) != nullptr); CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true) == nullptr); // The first entry's slot values won. - CHECK(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); // Both slots reported, same target; originals untouched. REQUIRE(pub.material_replacements.size() == 2); CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Author PLA (published material imported)"); CHECK(pub.material_replacements[1] == "slot 1: Other PETG -> Author PLA (published material imported)"); - CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.6 }); - CHECK(bundle.filaments.find_preset("Other PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.65 }); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values, { 0.6 }); + check_double_vector(bundle.filaments.find_preset("Other PETG", false, true)->config.opt("filament_retraction_length")->values, { 0.65 }); CHECK(pub.skipped_keys.empty()); } @@ -1490,8 +1499,8 @@ TEST_CASE("Re-importing a published full material uniquifies the second copy", " } else { // The second import uniquifies beside the first instead of touching it. CHECK(bundle.filament_presets[0] == "Author PLA (Published)"); - CHECK(bundle.filaments.find_preset("Author PLA (Published)", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); - CHECK(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(bundle.filaments.find_preset("Author PLA (Published)", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Author PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0] == "slot 0: Author PLA -> Author PLA (Published) (published material imported)"); } @@ -1544,7 +1553,7 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish // Type matched: keys and colour applied onto the receiver's preset in place. Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); REQUIRE(pla_preset != nullptr); - CHECK(pla_preset->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(pla_preset->config.opt("filament_retraction_length")->values, { 0.9 }); CHECK(pla_preset->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(pub.skipped_keys.empty()); CHECK(pub.material_replacements.empty()); @@ -1578,7 +1587,7 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish CHECK(bundle.filament_presets[0] == "My PLA"); Preset *pla_preset = bundle.filaments.find_preset("My PLA", false, true); REQUIRE(pla_preset != nullptr); - CHECK(pla_preset->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(pla_preset->config.opt("filament_retraction_length")->values, { 0.5 }); CHECK(pla_preset->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); CHECK(contains_key(pub.skipped_keys, "material:ABS (filament_retraction_length)")); CHECK(pub.material_replacements.empty()); @@ -1613,8 +1622,8 @@ TEST_CASE("Published 3MF partial slots apply colour and gate keys by the publish // then receives the author's values in place. REQUIRE(bundle.filament_presets.size() == 2); CHECK(bundle.filament_presets[1] == "My PETG"); - CHECK(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 1.2 }); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("My PETG", false, true)->config.opt("filament_retraction_length")->values, { 1.2 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); } } @@ -1944,9 +1953,9 @@ TEST_CASE("Published 3MF refreshes the edited preset so the applied material val // visible as a modification while the stored preset stays untouched. CHECK(edited.name == "My PLA"); CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(edited.config.opt("filament_retraction_length")->values, { 0.9 }); CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#123456" }); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); // The overlay is a visible, revertible modification of the edited preset. CHECK(bundle.filaments.current_is_dirty()); CHECK(pub.skipped_keys.empty()); @@ -1978,7 +1987,7 @@ TEST_CASE("Published 3MF refreshes the edited preset so the applied material val const Preset &edited = bundle.filaments.get_edited_preset(); CHECK(edited.name == "My ABS"); CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(edited.config.opt("filament_retraction_length")->values, { 0.9 }); } } @@ -2018,15 +2027,15 @@ TEST_CASE("Published 3MF preserves unsaved edits on the edited filament preset", const Preset &edited = bundle.filaments.get_edited_preset(); CHECK(edited.name == "My PLA"); CHECK(edited.config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(edited.config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(edited.config.opt("filament_retraction_length")->values, { 0.9 }); // ...the user's unsaved edit on a non-published key survives... - CHECK(edited.config.opt("filament_z_hop")->values == std::vector{ 0.7 }); + check_double_vector(edited.config.opt("filament_z_hop")->values, { 0.7 }); // ...and the stored preset is untouched. Preset *stored = bundle.filaments.find_preset("My PLA", false, true); REQUIRE(stored != nullptr); CHECK(stored->config.opt("filament_colour")->values == std::vector{ "#123456" }); - CHECK(stored->config.opt("filament_retraction_length")->values == std::vector{ 0.5 }); - CHECK(stored->config.opt("filament_z_hop")->values == std::vector{ 0.1 }); + check_double_vector(stored->config.opt("filament_retraction_length")->values, { 0.5 }); + check_double_vector(stored->config.opt("filament_z_hop")->values, { 0.1 }); // The overlay is a visible, revertible modification of the edited preset. CHECK(bundle.filaments.current_is_dirty()); CHECK(pub.skipped_keys.empty()); @@ -2056,7 +2065,7 @@ TEST_CASE("Published 3MF rejects out-of-range vector variants and variant-suffix bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); // In-range variant applied element-wise; the out-of-range one did not resize the vector. - CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 10., 150. }); + check_double_vector(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values, { 10., 150. }); CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values.size() == 2); // Out-of-range variant, malformed variant and variant-suffixed scalar are reported as // skipped; the malformed one must not fall back to element 0. @@ -2096,7 +2105,7 @@ TEST_CASE("Published 3MF reports type-mismatched keys as skipped instead of abor // The load completes; the type-mismatched key is reported as skipped and the receiver's // value is untouched; the matching scalar key still applies. CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); - CHECK(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values == std::vector{ 10., 20. }); + check_double_vector(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values, { 10., 20. }); CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 0.000001)); CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); } @@ -2230,7 +2239,7 @@ TEST_CASE("Published 3MF reloading does not compound values on the receiver's pr load(); // Each load re-applies the same values onto the (already mutated) preset: no accumulation. CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.9 }); } // A receiver with several slots aliasing the same preset (multi-extruder profile with one @@ -2293,7 +2302,7 @@ TEST_CASE("Published 3MF gives each published slot its own preset on an aliased for (size_t slot = 0; slot < 4; ++slot) { Preset *preset = bundle.filaments.find_preset(bundle.filament_presets[slot], false, true); REQUIRE(preset != nullptr); - CHECK(preset->config.opt("filament_retraction_length")->values == std::vector{ expected[slot] }); + check_double_vector(preset->config.opt("filament_retraction_length")->values, { expected[slot] }); } CHECK(pub.skipped_keys.empty()); } @@ -2345,7 +2354,7 @@ TEST_CASE("Published 3MF de-aliases an aliased slot by published identity withou // The published key was written onto the re-pointed slot's own preset. Preset *target = bundle.filaments.find_preset("Zzz PLA", false, true); REQUIRE(target != nullptr); - CHECK(target->config.opt("filament_retraction_length")->values == std::vector{ 0.9 }); + check_double_vector(target->config.opt("filament_retraction_length")->values, { 0.9 }); REQUIRE(pub.material_replacements.size() == 1); CHECK(pub.material_replacements[0].find("(de-aliased") != std::string::npos); CHECK(pub.skipped_keys.empty()); @@ -2375,7 +2384,7 @@ TEST_CASE("Published 3MF applies per-extruder printer keys across extruder-count DynamicPrintConfig config = make_file_config(); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 0.6 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.6 }); CHECK(contains_key(pub.skipped_keys, "retraction_length#1")); CHECK(contains_key(pub.skipped_keys, "retraction_length#2")); CHECK(contains_key(pub.skipped_keys, "retraction_length#3")); @@ -2395,8 +2404,7 @@ TEST_CASE("Published 3MF applies per-extruder printer keys across extruder-count config.opt("retraction_length")->values = { 0.7 }; bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - CHECK(bundle.printers.get_edited_preset().config.opt("retraction_length")->values == std::vector{ 0.7, 0.8, 0.8, 0.8 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.7, 0.8, 0.8, 0.8 }); CHECK(pub.skipped_keys.empty()); } } - From 036c4004f7537b930ab55bbf7fe6e26e5c74e314 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 26 Aug 2026 12:33:31 +0800 Subject: [PATCH 027/162] Fixes publish dialog filtering issue --- src/slic3r/GUI/PublishSettingsDialog.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 0ebb784b01..70a6cc96ae 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -120,12 +120,9 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) m_filter_ctrl->SetHint(_L("Type to filter...")); m_filter_ctrl->Bind(wxEVT_TEXT, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); m_filter_ctrl->Bind(wxEVT_TEXT_ENTER, [this](auto&) { apply_filter(m_filter_ctrl->GetValue()); }); - m_filter_ctrl->Bind(wxEVT_SET_FOCUS, [this](auto& e) { - apply_filter(m_filter_ctrl->GetValue()); - e.Skip(); - }); - m_filter_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto& e) { - apply_filter(m_filter_ctrl->GetValue()); + m_filter_ctrl->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { + if (m_filter_mode != FilterMode::Text) + apply_filter(m_filter_ctrl->GetValue()); e.Skip(); }); f_sizer->Add(m_filter_box, 1, wxEXPAND); From feb0e479faaf4dc6cec635b60bf3f3b225697e4a Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 26 Aug 2026 13:06:24 +0800 Subject: [PATCH 028/162] Published flag hardening. Better error handling path for when publish fails (unlikely) --- src/libslic3r/Format/bbs_3mf.cpp | 8 +- src/libslic3r/Format/bbs_3mf.hpp | 4 + src/slic3r/GUI/Plater.cpp | 172 +++++++++++++++++-------------- 3 files changed, 108 insertions(+), 76 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 4a7cac7055..15f3f3c0f0 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -678,6 +678,11 @@ bool bbs_is_valid_object_type(const std::string& type) namespace Slic3r { +bool is_published_3mf_flag(const std::string &value) +{ + return value == "1"; +} + void PlateData::parse_filament_info(GCodeProcessorResult *result) { if (!result) return; @@ -1224,7 +1229,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Reads the parse-time metadata: the model XML carries it before its resources, while // m_model->model_info is only filled in after the whole XML has been parsed. bool _is_published_3mf() const { - return this->model_info.metadata_items.find(ORCA_PUBLISHED_TAG) != this->model_info.metadata_items.end(); + const auto it = this->model_info.metadata_items.find(ORCA_PUBLISHED_TAG); + return it != this->model_info.metadata_items.end() && is_published_3mf_flag(it->second); } bool _is_svg_shape_file(const std::string &filename) const; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 647488ad55..46d06199fa 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -163,6 +163,10 @@ inline constexpr const char *ORCA_PUBLISHED_KEYS_TAG = "orca_published_keys" inline constexpr const char *ORCA_PUBLISHED_MATERIAL_TAG = "orca_published_material_keys"; inline constexpr const char *ORCA_PUBLISHED_CONFIG_TAG = "orca_published_config"; +// Published files are produced with "1". The importer and the GUI loader both gate on this +// exact value, so a "0"/"false"/unknown value is rejected consistently. +bool is_published_3mf_flag(const std::string &value); + inline SaveStrategy operator | (SaveStrategy lhs, SaveStrategy rhs) { using T = std::underlying_type_t ; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index dfeca24a19..c580f16c70 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6921,8 +6921,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ // whether to import geometry only. if (model.model_info != nullptr) { auto published_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_TAG); - if (published_it != model.model_info->metadata_items.end() && - (published_it->second == "true" || published_it->second == "1")) { + if (published_it != model.model_info->metadata_items.end() && is_published_3mf_flag(published_it->second)) { published_config.published = true; auto keys_it = model.model_info->metadata_items.find(ORCA_PUBLISHED_KEYS_TAG); if (keys_it != model.model_info->metadata_items.end()) { @@ -6943,50 +6942,55 @@ std::vector Plater::priv::load_files(const std::vector& input_ auto jm = nlohmann::json::parse(material_keys_it->second); if (jm.is_array()) for (const auto &m : jm) { - // Malformed entries are skipped individually. - if (!m.is_object()) - continue; - PublishedMaterialEntry entry; - const auto mat_it = m.find("material"); - if (mat_it != m.end() && mat_it->is_object()) { - const auto &mat = *mat_it; - if (mat.contains("filament_type") && mat["filament_type"].is_string()) - entry.filament_type = mat["filament_type"].get(); - if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) - entry.filament_vendor = mat["filament_vendor"].get(); - if (mat.contains("filament_id") && mat["filament_id"].is_string()) - entry.filament_id = mat["filament_id"].get(); - if (mat.contains("setting_id") && mat["setting_id"].is_string()) - entry.setting_id = mat["setting_id"].get(); - if (mat.contains("name") && mat["name"].is_string()) - entry.preset_name = mat["name"].get(); + try { + // Malformed entries are isolated so one bad item + // cannot discard valid entries that follow it. + if (!m.is_object()) + continue; + PublishedMaterialEntry entry; + const auto mat_it = m.find("material"); + if (mat_it != m.end() && mat_it->is_object()) { + const auto &mat = *mat_it; + if (mat.contains("filament_type") && mat["filament_type"].is_string()) + entry.filament_type = mat["filament_type"].get(); + if (mat.contains("filament_vendor") && mat["filament_vendor"].is_string()) + entry.filament_vendor = mat["filament_vendor"].get(); + if (mat.contains("filament_id") && mat["filament_id"].is_string()) + entry.filament_id = mat["filament_id"].get(); + if (mat.contains("setting_id") && mat["setting_id"].is_string()) + entry.setting_id = mat["setting_id"].get(); + if (mat.contains("name") && mat["name"].is_string()) + entry.preset_name = mat["name"].get(); + } + if (m.contains("slot") && m["slot"].is_number_integer()) + entry.slot = m["slot"].get(); + const auto entry_keys_it = m.find("keys"); + if (entry_keys_it != m.end() && entry_keys_it->is_array()) + for (const auto &k : *entry_keys_it) + if (k.is_string()) + entry.keys.emplace_back(k.get()); + // Fields always written by the current exporter. + if (m.contains("full") && m["full"].is_boolean()) + entry.full = m["full"].get(); + const auto entry_full_keys_it = m.find("full_keys"); + if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) + for (const auto &k : *entry_full_keys_it) + if (k.is_string()) + entry.full_keys.emplace_back(k.get()); + if (m.contains("publish_type") && m["publish_type"].is_boolean()) + entry.publish_type = m["publish_type"].get(); + if (m.contains("type") && m["type"].is_string()) + entry.publish_type_value = m["type"].get(); + if (m.contains("publish_color") && m["publish_color"].is_boolean()) + entry.publish_color = m["publish_color"].get(); + if (m.contains("color") && m["color"].is_string()) + entry.color = m["color"].get(); + published_config.material_keys.emplace_back(std::move(entry)); + } catch (const nlohmann::json::exception &) { + // Ignore only this malformed material entry. } - if (m.contains("slot") && m["slot"].is_number_integer()) - entry.slot = m["slot"].get(); - const auto entry_keys_it = m.find("keys"); - if (entry_keys_it != m.end() && entry_keys_it->is_array()) - for (const auto &k : *entry_keys_it) - if (k.is_string()) - entry.keys.emplace_back(k.get()); - // Fields always written by the current exporter. - if (m.contains("full") && m["full"].is_boolean()) - entry.full = m["full"].get(); - const auto entry_full_keys_it = m.find("full_keys"); - if (entry_full_keys_it != m.end() && entry_full_keys_it->is_array()) - for (const auto &k : *entry_full_keys_it) - if (k.is_string()) - entry.full_keys.emplace_back(k.get()); - if (m.contains("publish_type") && m["publish_type"].is_boolean()) - entry.publish_type = m["publish_type"].get(); - if (m.contains("type") && m["type"].is_string()) - entry.publish_type_value = m["type"].get(); - if (m.contains("publish_color") && m["publish_color"].is_boolean()) - entry.publish_color = m["publish_color"].get(); - if (m.contains("color") && m["color"].is_string()) - entry.color = m["color"].get(); - published_config.material_keys.emplace_back(std::move(entry)); } - } catch (...) { + } catch (const nlohmann::json::exception &) { // Ignore malformed published_material_keys; the project still loads normally. } } @@ -16297,37 +16301,21 @@ int Plater::export_published_3mf(const std::vector& published_keys, const std::string prev_published_keys = had_published_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_KEYS_TAG) : std::string(); const std::string prev_material_keys = had_material_keys ? model.model_info->metadata_items.at(ORCA_PUBLISHED_MATERIAL_TAG) : std::string(); const std::string prev_payload = had_payload ? model.model_info->metadata_items.at(ORCA_PUBLISHED_CONFIG_TAG) : std::string(); - if (model.model_info == nullptr) - model.model_info = std::make_shared(); - model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; - model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = j.dump(); - model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = jm.dump(); - // Minimal published export: filter full_config to the published keys, material keys, - // identity fields and plate geometry keys, and omit the project config file, the - // project-embedded preset dumps and the OrcaSlicer version tag from the archive. The - // filtered values are serialized into the published_config metadata payload instead, so - // OrcaSlicer versions without the publish feature fall back to importing the geometry only - // (keeping the receiver's presets) while new versions rebuild the config from the payload. - DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); - DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); - std::string payload; - for (const std::string &key : filtered_cfg.keys()) - payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; - model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = std::move(payload); + // export_3mf() assigns archive paths to previously unsaved SVGs. Preserve those fields too, + // otherwise a publish changes what a later normal project save writes. + std::vector> previous_svg_paths; + for (ModelObject *object : model.objects) + for (ModelVolume *volume : object->volumes) + if (volume != nullptr && volume->emboss_shape.has_value() && volume->emboss_shape->svg_file.has_value()) { + std::string *path_in_3mf = &volume->emboss_shape->svg_file->path_in_3mf; + previous_svg_paths.emplace_back(path_in_3mf, *path_in_3mf); + } - // Same file layout as save_project(), plus Silence (so export_3mf does not set the project - // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. - auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence | SaveStrategy::MinimalPublished; - bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); - if (full_pathnames) - save_strategy = save_strategy | SaveStrategy::FullPathSources; + auto restore_temporary_state = [&]() { + for (const auto &[path_in_3mf, previous_path] : previous_svg_paths) + *path_in_3mf = previous_path; - // Restore the previous metadata state (both on success and on failure): a thrown export - // must not leave the published metadata on the in-memory project, or a later Save Project - // would write a hybrid file (full config + slicer tags + published metadata) that receivers - // silently load in published mode, skipping the project's own presets. - auto restore_metadata = [&]() { if (!had_model_info) { model.model_info = nullptr; } else { @@ -16349,23 +16337,57 @@ int Plater::export_published_3mf(const std::vector& published_keys, model.model_info->metadata_items.erase(ORCA_PUBLISHED_CONFIG_TAG); } }; + bool state_restored = false; + auto restore_now = [&]() { + if (state_restored) + return; + restore_temporary_state(); + state_restored = true; + }; + ScopeGuard restore_guard(restore_now); - int ret; + if (model.model_info == nullptr) + model.model_info = std::make_shared(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = j.dump(); + model.model_info->metadata_items[ORCA_PUBLISHED_MATERIAL_TAG] = jm.dump(); + + int ret = -1; try { + // Minimal published export: filter full_config to the published keys, material keys, + // identity fields and plate geometry keys, and omit the project config file, the + // project-embedded preset dumps and the OrcaSlicer version tag from the archive. The + // filtered values are serialized into the published_config metadata payload instead, so + // OrcaSlicer versions without the publish feature fall back to importing the geometry only + // (keeping the receiver's presets) while new versions rebuild the config from the payload. + DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); + std::string payload; + for (const std::string &key : filtered_cfg.keys()) + payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; + model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = std::move(payload); + + // Same file layout as save_project(), plus Silence (so export_3mf does not set the project + // filename on success, keeping this a pure export like export_core_3mf()) and MinimalPublished. + auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); + if (full_pathnames) + save_strategy = save_strategy | SaveStrategy::FullPathSources; ret = export_3mf(into_path(path), save_strategy, -1, nullptr); } catch (...) { - restore_metadata(); + restore_now(); MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), _L("Publish"), wxOK | wxICON_WARNING).ShowModal(); return wxID_CANCEL; } - restore_metadata(); if (ret < 0) { + restore_now(); MessageDialog(this, _L("Failed to export the published 3MF file.\nPlease check whether the folder exists online or if other programs have the file open."), _L("Publish"), wxOK | wxICON_WARNING).ShowModal(); return wxID_CANCEL; } + restore_now(); return wxID_YES; } From 76d9b8bac045afb8f9b89464a1da730df48c703c Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Thu, 27 Aug 2026 13:17:19 +0800 Subject: [PATCH 029/162] Publish 3MF: support mixed filaments and per-extruder slot selection - Publish mixed-filament slots as whole units: serialize the filament_mixed_* definition into project_config on import, grow the receiver's parallel arrays in lockstep, and report unappliable definitions as skipped instead of dropping them silently - Per-extruder printer selection: one inner tab per extruder, rows keyed by full "#N" ids; single-extruder receivers collapse variants onto their slot (first applied, rest skipped), multi-extruder receivers override element-wise - New per-slot "Enable" toggle gating what gets published; enabling a mix auto-enables + Full Publishes its components - Mixed page previews: fixed-size ratio bar, ternary triangle (3 components) and Material Ratio vs Model Height graph (gradients), always visible regardless of Enable - Tab strip shows full swatch compositions with adjustable spacing; barycentric helpers shared via FilamentBitmapUtils --- src/libslic3r/PresetBundle.cpp | 98 +- src/libslic3r/PublishSettings.cpp | 17 + src/libslic3r/PublishSettings.hpp | 7 + src/slic3r/GUI/FilamentBitmapUtils.cpp | 41 +- src/slic3r/GUI/FilamentBitmapUtils.hpp | 16 + src/slic3r/GUI/MixedFilamentDialog.cpp | 48 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 942 ++++++++++++++++-- src/slic3r/GUI/PublishSettingsDialog.hpp | 52 +- src/slic3r/GUI/Widgets/TabCtrl.cpp | 138 ++- src/slic3r/GUI/Widgets/TabCtrl.hpp | 50 +- tests/libslic3r/test_3mf.cpp | 52 + .../libslic3r/test_preset_bundle_loading.cpp | 249 +++++ 12 files changed, 1474 insertions(+), 236 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b66c0a8587..9157987b8a 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5291,6 +5291,11 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, const std::set printer_option_set(printer_options.begin(), printer_options.end()); std::set contract_excluded_keys; auto apply_published = [&](DynamicPrintConfig& target, const std::set* allowlist) { + // Single-extruder receivers collapse a base key's per-extruder "#N" variants onto + // their single slot: only the first serialized variant of a base key is applied + // (the author's "left or right" whichever came first), the rest are reported as + // skipped. Per-target, so the process and printer passes each track their own bases. + std::set collapsed_bases; for (const std::string& key : published_config->published_keys) { if (applied_keys.count(key) != 0) continue; // already applied @@ -5309,7 +5314,7 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, if (src_opt == nullptr) continue; // key not present in the loaded config; record later if (src_opt->is_vector()) { - const ConfigOption* dst_opt = target.option(base_key); + ConfigOption* dst_opt = target.option(base_key); if (dst_opt == nullptr || !dst_opt->is_vector()) continue; // cannot apply; will be reported as skipped // Type mismatch: ConfigOptionVector::set() throws ConfigurationError on a @@ -5321,7 +5326,7 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, if (dst_opt->type() != src_opt->type()) continue; // A '#N' variant key (e.g. per-extruder retraction_length#2) applies one - // element, so the index only needs to be in range on both sides - the + // element, so the index only needs to be in range on the author's side - the // receiver may have a different extruder count than the author. Out-of-range // indices are skipped (set_at would otherwise resize the receiver's vector). if (key.size() > base_key.size()) { @@ -5341,16 +5346,33 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, break; } } - if (!valid || idx >= static_cast(src_opt)->size() || - idx >= static_cast(dst_opt)->size()) - continue; // malformed or out-of-range variant: cannot apply; reported as skipped + const size_t src_size = static_cast(src_opt)->size(); + if (!valid || idx >= src_size) + continue; // malformed or out-of-range on the author's side: cannot apply; reported as skipped + const size_t dst_size = static_cast(dst_opt)->size(); + if (dst_size == 1) { + // Single-extruder receiver: collapse the author's per-extruder slots + // onto the receiver's single slot. Only the first serialized variant + // of a base key is applied (the author's "left or right" whichever was + // published first); later variants of the same base are reported as + // skipped, mirroring the receiver's single extruder. + if (collapsed_bases.count(base_key) != 0) + continue; + collapsed_bases.insert(base_key); + static_cast(dst_opt)->set_at(src_opt, 0, idx); + } else { + if (idx >= dst_size) + continue; // out-of-range variant: cannot apply; reported as skipped + target.apply_only(config, {key}, true); + } } else if (static_cast(src_opt)->size() != static_cast(dst_opt)->size()) { // Whole-vector base key: the receiver must have a matching vector size, // otherwise applying would overwrite a different number of elements. continue; // cannot apply; will be reported as skipped + } else { + target.apply_only(config, {key}, true); } - target.apply_only(config, {key}, true); applied_keys.insert(key); } else { // A scalar key cannot carry a '#N' suffix; a hand-crafted file listing one @@ -5688,6 +5710,30 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, proj_nozzle_map->values.resize(target_slots, 0); if (proj_volume_map && proj_volume_map->values.size() < target_slots) proj_volume_map->values.resize(target_slots, static_cast(NozzleVolumeType::nvtStandard)); + // The mixed-color project arrays are parallel per-slot like filament_colour; + // grow them in lockstep so a published mix slot has room for its definition. + // Defaults mirror set_num_filaments (false / empty string). + if (auto* opt = this->project_config.opt("filament_is_mixed")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); + if (auto* opt = this->project_config.opt("filament_mixed_components")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt("filament_mixed_sublayer_ratios")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt("filament_mixed_gradient")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); + if (auto* opt = this->project_config.opt("filament_mixed_gradient_range")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt("filament_mixed_gradient_curve")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, std::string{}); + if (auto* opt = this->project_config.opt("filament_mixed_gradient_per_part")) + if (opt->values.size() < target_slots) + opt->values.resize(target_slots, false); if (this->ams_multi_color_filment.size() < target_slots) this->ams_multi_color_filment.resize(target_slots); for (size_t slot = old_colour_count; slot < target_slots; ++slot) { @@ -5995,7 +6041,13 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // Colour is slot-scoped and independent of the type gate; it is also synced // into project_config for GUI rendering. if (entry.publish_color && !entry.color.empty()) { - if (recv != nullptr) { + // A mixed-definition entry carries the mix's blended colour for the + // swatch only: never write it into the slot's (possibly shared) preset + // config, only into the project-level colour arrays. + const bool is_mixed_entry = std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { + return publish_mixed_keys().count(publish_base_key(key)) != 0; + }); + if (!is_mixed_entry && recv != nullptr) { // Create the key when the target preset lacks it: the colour is a // requirement, not an override. if (ConfigOptionStrings* colour = write_config.opt("filament_colour", true)) { @@ -6016,8 +6068,36 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, } } - if (apply_slot && recv != nullptr) - apply_slot_keys(write_config, entry.keys, entry.slot, material_label); + if (apply_slot && recv != nullptr) { + // Mixed-color definition keys live in project_config (parallel per-slot + // arrays), not in a filament preset; route them there. Normal keys keep + // the per-slot preset path below. + const std::set& mixed_keys = publish_mixed_keys(); + std::vector preset_keys; + for (const std::string& key : entry.keys) { + const std::string base_key = publish_base_key(key); + if (mixed_keys.count(base_key) != 0) { + const ConfigOption* src_opt = config.option(base_key); + if (src_opt != nullptr && src_opt->is_vector() && entry.slot >= 0 && + entry.slot < static_cast(static_cast(src_opt)->size())) { + if (ConfigOption* dst_opt = this->project_config.option(base_key)) { + if (dst_opt->is_vector() && dst_opt->type() == src_opt->type() && + slot < static_cast(dst_opt)->size()) { + static_cast(dst_opt)->set_at(src_opt, slot, entry.slot); + material_applied = true; + continue; + } + } + } + // The slot (or its arrays) could not be written: report rather + // than drop the mix silently. + skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); + continue; + } + preset_keys.emplace_back(key); + } + apply_slot_keys(write_config, preset_keys, entry.slot, material_label); + } } } } diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index 3a3d241e81..c4c71f9436 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -83,6 +83,23 @@ const std::set& publish_structural_keys() return structural_keys; } +const std::set& publish_mixed_keys() +{ + // Must match PresetBundle's s_project_options mixed-color group (PresetBundle.cpp): these + // are project-level parallel per-slot arrays, not filament-preset options, so the import + // material pass applies them into project_config instead of a filament preset config. + static const std::set mixed_keys = { + "filament_is_mixed", + "filament_mixed_components", + "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", + "filament_mixed_gradient_range", + "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" + }; + return mixed_keys; +} + // The printer tab's "Retraction" optgroup (TabPrinter::build_fff, Tab.cpp), in tab order. // KEEP IN SYNC with that optgroup: the published-3MF printer allowlist is built from these // lists, so any key shown there must be publishable here (and vice versa). diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index d10472ce71..038a6eca11 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -15,6 +15,13 @@ std::string publish_base_key(const std::string &key); // filter_published_config because 3MF validation needs it - exported, never applied. const std::set& publish_structural_keys(); +// The mixed-color filament project keys (parallel per-slot arrays, see PresetBundle's +// s_project_options): a mixed slot's full definition - which slots it blends, the sublayer +// ratios and the optional Z-gradient description. A published mixed slot always serializes +// these keys; on import they are applied into the receiver's project_config (not a filament +// preset), so the mix survives the round-trip. +const std::set& publish_mixed_keys(); + // One row of the printer tab's "Retraction" / "Z-Hop" optgroups (key + tab icon id), kept // together so the tab can later be migrated onto these lists. struct PublishablePrinterOption { diff --git a/src/slic3r/GUI/FilamentBitmapUtils.cpp b/src/slic3r/GUI/FilamentBitmapUtils.cpp index 1f51fc79b3..23b14c385b 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.cpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.cpp @@ -11,6 +11,45 @@ namespace Slic3r { namespace GUI { +// Barycentric utilities for a ternary (triangle) ratio picker. +double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c) +{ + return (b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y); +} + +bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) +{ + double total = tri_signed_area2(v0, v1, v2); + if (std::abs(total) < 1e-9) return false; + double s0 = tri_signed_area2(p, v1, v2) / total; + double s1 = tri_signed_area2(v0, p, v2) / total; + double s2 = 1.0 - s0 - s1; + return s0 >= -0.001 && s1 >= -0.001 && s2 >= -0.001; +} + +void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, + double& w0, double& w1, double& w2) +{ + double total = std::abs(tri_signed_area2(v0, v1, v2)); + if (total < 1e-9) { w0 = w1 = w2 = 1.0 / 3.0; return; } + w0 = std::abs(tri_signed_area2(p, v1, v2)) / total; + w1 = std::abs(tri_signed_area2(v0, p, v2)) / total; + w2 = 1.0 - w0 - w1; + w0 = std::clamp(w0, 0.0, 1.0); + w1 = std::clamp(w1, 0.0, 1.0); + w2 = std::clamp(w2, 0.0, 1.0); + double s = w0 + w1 + w2; + if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } +} + +TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) +{ + double w0, w1, w2; + tri_barycentric(p, v0, v1, v2, w0, w1, w2); + return {w0 * v0.x + w1 * v1.x + w2 * v2.x, + w0 * v0.y + w1 * v1.y + w2 * v2.y}; +} + void fill_gradient_rect_east(wxDC& dc, const wxRect& rect, const wxColour& from, const wxColour& to) { if (rect.width <= 0 || rect.height <= 0) return; @@ -73,7 +112,7 @@ std::vector sample_gradient_ramp(const wxColour& first, // Resolve the curve a gradient slot is sampled with, mirroring the slicer's fallback in // ToolOrdering: a custom curve wins, otherwise a straight line between gradient_range's // endpoints, otherwise the 0.10 -> 0.90 default. -static Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot) +Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot) { const auto* curve_opt = cfg.option("filament_mixed_gradient_curve"); if (curve_opt && slot < curve_opt->values.size() && !curve_opt->values[slot].empty()) { diff --git a/src/slic3r/GUI/FilamentBitmapUtils.hpp b/src/slic3r/GUI/FilamentBitmapUtils.hpp index 11696f3401..fc6eb1f9dd 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.hpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.hpp @@ -13,6 +13,16 @@ namespace Slic3r { class DynamicPrintConfig; struct GradientCurve; } namespace Slic3r { namespace GUI { +// Barycentric utilities for a ternary (triangle) ratio picker, shared by the mixed-filament +// editor and the Publish dialog's read-only definition preview. +struct TriPoint { double x, y; }; + +double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c); +bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2); +void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, + double& w0, double& w1, double& w2); +TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2); + // Fills a rect with a west->east linear gradient by drawing solid 1px columns. // Use instead of wxDC::GradientFillLinear, whose CoreGraphics (CGShading) backend // fails to render on some macOS builds; solid fills are unaffected. @@ -51,6 +61,12 @@ std::vector sample_gradient_ramp(const wxColour& first, // destination's height in pixels. std::vector mixed_gradient_ramp(const Slic3r::DynamicPrintConfig& cfg, size_t slot, int steps); +// Resolve the curve a gradient slot is sampled with: the custom curve wins when it has at +// least two points, otherwise a straight line between gradient_range's endpoints, otherwise +// the 0.10 -> 0.90 default. Mirrors the slicer's ToolOrdering fallback so every preview +// agrees with what gets sliced. Always returns a two-point curve. +Slic3r::GradientCurve mixed_gradient_curve(const Slic3r::DynamicPrintConfig& cfg, size_t slot); + // Fill rect with a ramp, ramp.front() along the bottom edge. void fill_gradient_ramp_rect(wxDC& dc, const wxRect& rect, const std::vector& ramp); diff --git a/src/slic3r/GUI/MixedFilamentDialog.cpp b/src/slic3r/GUI/MixedFilamentDialog.cpp index 902c12d27b..c1cbcc7450 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.cpp +++ b/src/slic3r/GUI/MixedFilamentDialog.cpp @@ -919,52 +919,8 @@ wxBoxSizer* MixedFilamentDialog::create_ratio_slider() } // ---- Triangle (ternary) ratio picker ---- - -// Barycentric coordinate utilities -struct TriPoint { double x, y; }; - -static double tri_signed_area2(TriPoint a, TriPoint b, TriPoint c) -{ - return (b.x - a.x) * (c.y - a.y) - (c.x - a.x) * (b.y - a.y); -} - -static bool tri_contains(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) -{ - double total = tri_signed_area2(v0, v1, v2); - if (std::abs(total) < 1e-9) return false; - double s0 = tri_signed_area2(p, v1, v2) / total; - double s1 = tri_signed_area2(v0, p, v2) / total; - double s2 = 1.0 - s0 - s1; - return s0 >= -0.001 && s1 >= -0.001 && s2 >= -0.001; -} - -static void tri_barycentric(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, - double& w0, double& w1, double& w2) -{ - double total = std::abs(tri_signed_area2(v0, v1, v2)); - if (total < 1e-9) { w0 = w1 = w2 = 1.0 / 3.0; return; } - w0 = std::abs(tri_signed_area2(p, v1, v2)) / total; - w1 = std::abs(tri_signed_area2(v0, p, v2)) / total; - w2 = 1.0 - w0 - w1; - w0 = std::clamp(w0, 0.0, 1.0); - w1 = std::clamp(w1, 0.0, 1.0); - w2 = std::clamp(w2, 0.0, 1.0); - double s = w0 + w1 + w2; - if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } -} - -static TriPoint tri_clamp(TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2) -{ - double w0, w1, w2; - tri_barycentric(p, v0, v1, v2, w0, w1, w2); - w0 = std::clamp(w0, 0.0, 1.0); - w1 = std::clamp(w1, 0.0, 1.0); - w2 = std::clamp(w2, 0.0, 1.0); - double s = w0 + w1 + w2; - if (s > 0) { w0 /= s; w1 /= s; w2 /= s; } - return {w0 * v0.x + w1 * v1.x + w2 * v2.x, - w0 * v0.y + w1 * v1.y + w2 * v2.y}; -} +// The barycentric utilities (TriPoint, tri_contains, tri_barycentric, tri_clamp) live in +// FilamentBitmapUtils so the Publish dialog can mirror this picker read-only. wxBoxSizer* MixedFilamentDialog::create_triangle_picker() { diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 70a6cc96ae..262fdbe356 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -6,6 +6,7 @@ #include "I18N.hpp" #include "Tab.hpp" #include "ConfigValueFormatter.hpp" +#include "FilamentBitmapUtils.hpp" #include "Widgets/Label.hpp" #include "Widgets/TextInput.hpp" #include "Widgets/DialogButtons.hpp" @@ -15,11 +16,21 @@ #include "libslic3r/PrintConfig.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/PublishSettings.hpp" +#include "libslic3r/FilamentMixer.hpp" #include #include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include namespace Slic3r { namespace GUI { namespace { @@ -90,8 +101,230 @@ wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPr return _L("Material"); } +// The component slots of a mixed filament ("1,2,3"), 1-based, or empty when out of range. +std::vector mixed_slot_components(const DynamicPrintConfig& full, size_t slot) +{ + const auto* comp_opt = full.opt("filament_mixed_components"); + if (comp_opt == nullptr || slot >= comp_opt->size()) + return {}; + return parse_mixed_components(comp_opt->values[slot]); +} + +// Human-readable label of a mixed filament, mirroring the sidebar's mixed filament rows: the +// 1-based component slot numbers with their blend percentages (or a "->" gradient arrow), +// e.g. "1 (60%) + 2 (40%)". Used as the slot's tab/header title in place of a preset name. +wxString mixed_filament_label(const DynamicPrintConfig& full, size_t slot) +{ + const std::vector comps = mixed_slot_components(full, slot); + if (comps.empty()) + return _L("Mixed filament"); + const auto* grad_opt = full.opt("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + const auto* ratios_opt = full.opt("filament_mixed_sublayer_ratios"); + wxString label; + for (size_t i = 0; i < comps.size(); ++i) { + if (i > 0) + label += is_gradient ? wxString::FromUTF8(" \u2192 ") : wxString::FromUTF8(" + "); + label += wxString::Format("%u", comps[i]); + if (!is_gradient) { + double ratio = 100.0 / comps.size(); + if (ratios_opt != nullptr && slot < ratios_opt->size()) { + const std::vector rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + if (i < rs.size()) + ratio = rs[i] * 100.0; + } + label += wxString::Format(" (%d%%)", int(ratio + 0.5)); + } + } + return label; +} + +// Blended representative colour of a mixed slot, computed exactly like the sidebar's swatches +// (recompute_mixed_slot_colors): sublayer slots blend by their ratios, gradient slots by their +// two end colours, broken references fall back to grey. +wxColour mixed_filament_blend_color(const DynamicPrintConfig& full, size_t slot) +{ + std::vector colors; + if (const auto* colours = full.opt("filament_colour")) { + colors.reserve(colours->values.size()); + for (const std::string& hex : colours->values) { + const wxColour c(hex); + colors.push_back(c.IsOk() ? c : wxColour(0, 0, 0)); + } + } + while (colors.size() <= slot) + colors.push_back(wxColour("#D9D9D9")); + recompute_mixed_slot_colors(colors, full); + return slot < colors.size() ? colors[slot] : wxColour("#D9D9D9"); +} + +// Tab-strip bitmap for a mixed slot: the mix's own chip, then its component swatches each +// followed by their percent share (or a "->" arrow for gradients), mirroring the main GUI's +// sidebar rows - e.g. "[3 purple]: [1 red] 50% + [2 blue] 50%". The whole composition is one +// bitmap because a TabCtrl item cannot interleave images into its text; the tab's text is +// therefore empty. Transparent background like the other chips. +wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz) +{ + const std::vector comps = mixed_slot_components(full, slot); + if (comps.empty()) + return wxNullBitmap; + const auto* grad_opt = full.opt("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + const auto* ratios_opt = full.opt("filament_mixed_sublayer_ratios"); + std::vector ratio_pct(comps.size(), 100.0 / comps.size()); + if (!is_gradient && ratios_opt != nullptr && slot < ratios_opt->size()) { + const std::vector rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + for (size_t i = 0; i < rs.size() && i < comps.size(); ++i) + ratio_pct[i] = rs[i] * 100.0; + } + + const auto* colours = full.opt("filament_colour"); + const wxString lead_sep = wxString::FromUTF8(":"); + const wxString comp_sep = is_gradient ? wxString::FromUTF8("\u2192") : wxString::FromUTF8("+"); + + // Phase 1 (layout): render every swatch and measure every text piece so the composite + // width is known before drawing; the dummy bitmap keeps GetTextExtent reliable. + struct Piece + { + enum Kind { Swatch, Text } kind{Text}; + wxBitmap bmp; + wxString text; + }; + std::vector pieces; + bool has_lead = false; + wxBitmap dummy(1, 1); + wxMemoryDC measure_dc; + measure_dc.SelectObject(dummy); + measure_dc.SetFont(::Label::Body_12); + const int gap = wxWindow::FromDIP(4, nullptr); + + auto push_swatch = [&](const std::string& hex, const std::string& label) { + wxBitmap* icon = get_extruder_color_icon(hex, label, swatch_sz, swatch_sz); + if (icon == nullptr) + return; + pieces.push_back({Piece::Swatch, *icon, wxString()}); + }; + auto push_text = [&](const wxString& text) { pieces.push_back({Piece::Text, wxNullBitmap, text}); }; + + { + const wxColour blend = mixed_filament_blend_color(full, slot); + const std::string blend_hex = blend.IsOk() ? + std::string(wxString::Format("#%02X%02X%02X", blend.Red(), blend.Green(), blend.Blue()).ToUTF8()) : + std::string("#808080"); + const size_t before = pieces.size(); + push_swatch(blend_hex, std::to_string(slot + 1)); + has_lead = pieces.size() > before; + } + for (size_t ci = 0; ci < comps.size(); ++ci) { + if (pieces.empty()) + break; + push_text(has_lead && pieces.size() == 1 ? lead_sep : comp_sep); // lead chip may have failed to render + std::string hex = "#D9D9D9"; + if (colours != nullptr && comps[ci] >= 1 && comps[ci] <= colours->size()) + hex = colours->values[comps[ci] - 1]; + const size_t before = pieces.size(); + push_swatch(hex, std::to_string(comps[ci])); + if (pieces.size() == before) + break; // swatch failed: stop cleanly before an orphaned separator/percent pair + if (!is_gradient) { + push_text(wxString::Format("%d%%", int(ratio_pct[ci] + 0.5))); + } + } + if (pieces.empty()) + return wxNullBitmap; + + int width = 0; + for (const Piece& p : pieces) + width += (p.kind == Piece::Swatch ? swatch_sz : measure_dc.GetTextExtent(p.text).x + gap); + + // Phase 2 (draw): transparent background like the page-header chips. + wxBitmap composite(width, swatch_sz); + wxMemoryDC memdc; +#ifdef __WXOSX__ + composite.UseAlpha(); + memdc.SelectObject(composite); +#else + { + wxImage img(width, swatch_sz); + img.InitAlpha(); + memset(img.GetAlpha(), 0, width * swatch_sz); + composite = wxBitmap(std::move(img)); + } + memdc.SelectObject(composite); +#endif + { +#ifdef __WXMSW__ + wxGCDC dc(memdc); +#else + wxDC& dc = memdc; +#endif + dc.SetBackgroundMode(wxTRANSPARENT); + dc.SetFont(::Label::Body_12); + dc.SetTextForeground(StateColor::darkModeColorFor(wxColour("#262E30"))); + int x = 0; + for (const Piece& p : pieces) { + if (p.kind == Piece::Swatch) { + dc.DrawBitmap(p.bmp, x, 0); + x += swatch_sz; + } else { + const wxSize tsz = measure_dc.GetTextExtent(p.text); + dc.DrawText(p.text, x + gap / 2, (swatch_sz - tsz.y) / 2); + x += tsz.x + gap; + } + } + } + memdc.SelectObject(wxNullBitmap); + return composite; +} + } // namespace +PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_spec(const DynamicPrintConfig& full, size_t slot) +{ + MixedVisualSpec spec; + const std::vector comps = mixed_slot_components(full, slot); + if (comps.empty()) + return spec; + + const auto* grad_opt = full.opt("filament_mixed_gradient"); + spec.is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + + const auto* colours = full.opt("filament_colour"); + for (unsigned int cid : comps) { + std::string hex = "#D9D9D9"; + if (colours != nullptr && cid >= 1 && cid <= colours->size()) + hex = colours->values[cid - 1]; + const wxColour c(hex); + spec.component_colours.push_back(c.IsOk() ? c : wxColour("#D9D9D9")); + } + + if (!spec.is_gradient) { + // Sublayer shares; parse_mixed_ratios already falls back to equal shares and + // normalizes to sum 1. + spec.ratios.assign(comps.size(), 1.0 / comps.size()); + if (const auto* ratios_opt = full.opt("filament_mixed_sublayer_ratios")) + if (slot < ratios_opt->size()) { + const std::vector rs = parse_mixed_ratios(ratios_opt->values[slot], comps.size()); + if (rs.size() == comps.size()) + spec.ratios = rs; + } + if (comps.size() == 3) + spec.tri_weights = spec.ratios; // the picker's barycentric shares + } else { + const Slic3r::GradientCurve curve = mixed_gradient_curve(full, slot); + constexpr int kSamples = 64; + for (int i = 0; i <= kSamples; ++i) { + const double t = double(i) / kSamples; + spec.gradient_samples.emplace_back(t, sample_gradient_curve(curve, t)); + } + for (const Slic3r::GradientAnchor& anchor : curve.points) + spec.gradient_anchors.emplace_back(anchor.x, anchor.y); + } + + spec.valid = true; + return spec; +} + PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, @@ -206,9 +439,12 @@ void PublishSettingsDialog::fit_to_content() static const wxSize BASE{600, 500}; static const wxSize CAP{1300, 850}; - int strip = m_outer_tabs->buttons_best_width(); - for (const SectionGroup& section : m_sections) - strip = std::max(strip, section.tabs->buttons_best_width()); + int strip = m_outer_tabs->GetFullSize(); + for (const SectionGroup& section : m_sections) { + strip = std::max(strip, section.tabs->GetFullSize()); + if (section.mixed_tabs != nullptr) + strip = std::max(strip, section.mixed_tabs->GetFullSize()); + } // Minimum width: whatever keeps every tab visible (never below the base). strip is device // pixels (Button min sizes); BASE/CAP are DIP and converted over. @@ -233,9 +469,9 @@ void PublishSettingsDialog::build_option_model() { // Structural / non-publishable keys, shared with the published-3MF overlay path. const std::set& denylist = publish_structural_keys(); - // Base keys already added in the print/printer sections. Printer rows share this set: - // per-extruder "#N" variants collapse to the first occurrence (acceptable MVP; the - // per-extruder context is lost in the UI). + // Base keys already added in the print section (dedup across pages/optgroups). The printer + // section keeps its own printer_added set keyed by the full per-extruder "#N" opt_id, so + // every extruder gets its own row (see Phase 1 below). std::set added; PresetBundle* bundle = wxGetApp().preset_bundle; @@ -244,6 +480,7 @@ void PublishSettingsDialog::build_option_model() m_info_nonsel = _L("No selected items..."); m_info_allsel = _L("All items selected..."); m_info_empty = _L("No matching items..."); + m_info_mix = _L("Mixed filament - published as a whole when \"Enable\" above is selected"); // Tab order differs from Section's enum order (Print, Printer, Material): the dialog // presents Printer, Filament, Process. @@ -272,16 +509,33 @@ void PublishSettingsDialog::build_option_model() }; // --- Phase 1: printer per-extruder retraction settings (first, mirroring the sidebar's - // Printer group), from the printer tab's "Extruder"/"Extruder N" pages. + // Printer group), from the printer tab's "Extruder"/"Extruder N" pages. One inner tab per + // extruder (e.g. "Left Extruder"/"Right Extruder" via Tab::translate_category), each holding + // that extruder's Retraction and Z-Hop rows with per-extruder "#N" values. { size_t g = section_group_for(Section::Printer); - category_index_for(_L("Extruder"), Section::Printer, g, 0); + std::set printer_added; for (Tab* tab : wxGetApp().tabs_list) { if (tab->m_type != Preset::TYPE_PRINTER) continue; for (const PageShp& page : tab->m_pages) { if (!page->title().StartsWith("Extruder")) continue; + // The extruder index of this page: its options are appended with the same + // "#N" opt_index (opt.second.second), so derive the tab's index from the first + // allowlisted option; skip the page when none is found (defensive). + int extruder_idx = -1; + for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { + if (optgroup->title != "Retraction" && optgroup->title != "Z-Hop") + continue; + for (const auto& opt : optgroup->opt_map()) + if (extruder_idx < 0) + extruder_idx = opt.second.second; + if (extruder_idx >= 0) + break; + } + if (extruder_idx < 0) + continue; const wxString page_title = Tab::translate_category(page->title(), tab->m_type); for (const ConfigOptionsGroupShp& optgroup : page->m_optgroups) { // Allowlist on the untranslated optgroup title; the "Retraction when @@ -292,17 +546,17 @@ void PublishSettingsDialog::build_option_model() for (const auto& opt : optgroup->opt_map()) { const std::string& opt_id = opt.first; const std::string& pure_key = opt.second.first; - // Per-extruder "#N" variants collapse to the first base key. The row - // stores the base key; GetPublishedKeys() later expands it back to one - // "#N" entry per extruder so the load side can apply per-extruder values. - if (!added.insert(pure_key).second) + // Rows are keyed by the full per-extruder "#N" opt_id so each extruder + // tab publishes its own value; GetPublishedKeys() emits the checked rows + // as-is. + if (!printer_added.insert(opt_id).second) continue; wxString label, value, unit; if (!option_text(opt_id, pure_key, label, value, unit)) continue; - size_t cat_index = category_index_for(_L("Extruder"), Section::Printer, g, 0); + size_t cat_index = category_index_for(page_title, Section::Printer, g, size_t(extruder_idx)); size_t sub_index = subcategory_index_for(cat_index, subcategory, optgroup->icon); - add_row_ui(pure_key, label, value, unit, cat_index, sub_index); + add_row_ui(opt_id, label, value, unit, cat_index, sub_index); } } } @@ -328,12 +582,28 @@ void PublishSettingsDialog::build_option_model() } if (overrides_page != nullptr) { + // Mixed-color slots are virtual: they carry no per-key Material/Retraction + // settings; their "Enable" toggle always embeds the mix definition (components, + // ratios, gradient). Detect them via the project-level flag. + const ConfigOptionBools* is_mixed_opt = full.opt("filament_is_mixed"); // One section per filament slot (a 4-slot printer shows 4 pages), each // disambiguated by its colour chip and slot identity while showing the bare name. for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { + const bool is_mixed = is_mixed_opt != nullptr && slot < is_mixed_opt->size() && is_mixed_opt->values[slot]; const PublishMaterialIdentity identity = material_identity(slot, full); - const wxString title = material_title(slot, bundle, full); - const size_t category_index = category_index_for(title, Section::Material, g, slot, identity); + // A mixed slot's title is its component composition (e.g. "1 (60%) + 2 + // (40%)"), not the cloned preset's name shown in the main GUI. + const wxString title = is_mixed ? mixed_filament_label(full, slot) : material_title(slot, bundle, full); + const size_t category_index = category_index_for(title, Section::Material, g, slot, identity, is_mixed); + + if (is_mixed) { + // A mixed slot publishes as one unit (its definition); nothing to select + // per-key. Its component filaments are auto-enabled + Full Published when + // "Enable" is checked (see on_enable_toggle). Its page still shows what + // would be published: a ratio bar, or the gradient graph. + add_mixed_visual(category_index, make_mixed_visual_spec(full, slot)); + continue; + } // Material requirement rows: an optional filament colour and/or a // vendor-agnostic material type for this slot, in their own optgroup so they @@ -414,25 +684,37 @@ void PublishSettingsDialog::build_option_model() } } - // Pre-check the dirty (modified) settings and mark them bold (base-key match, across all + // Pre-check the dirty (modified) settings and mark them bold (per-slot match, across all // sections; collect_dirty_settings_keys unions the prints, printers and filaments). - std::set dirty_base; + // Dirty keys carry a "#N" per-extruder/per-slot suffix (deep_diff), so the base key alone + // cannot distinguish which extruder/filament slot changed: match the row's exact key, and + // for material rows (base key + per-slot value) the base key plus the section's slot. + std::set dirty_keys; for (const std::string& key : collect_dirty_settings_keys(*wxGetApp().preset_bundle)) - dirty_base.insert(publish_base_key(key)); + dirty_keys.insert(key); for (Row& row : m_rows) { // The Color/Type requirement rows are not "dirty overrides": never auto-checked. if (row.kind != RowKind::Setting) continue; - std::string base = publish_base_key(row.key); - row.dirty = dirty_base.count(base) > 0; + bool dirty = dirty_keys.count(row.key) != 0; + if (!dirty && row.section == Section::Material) + dirty = dirty_keys.count(publish_base_key(row.key) + "#" + std::to_string(m_categories[row.inner_index].filament_slot)) != 0; + row.dirty = dirty; if (row.dirty) { row.check->SetValue(true); set_row_bold(row, true); } } - // Wire the "Full Publish" checkboxes: toggling one disables/enables the material's rows. - // Bind by index so the lambda stays valid even if the vector is reallocated later. + // Wire the "Enable" checkboxes: toggling one reveals/hides the slot's settings below the + // header (and, for a mixed slot, auto-selects its components). Bind by index so the lambda + // stays valid even if the vector is reallocated later. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].enable_check != nullptr) + m_categories[c].enable_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_enable_toggle(c); }); + + // Wire the "Full Publish" checkboxes (physical slots): toggling one disables/enables the + // material's rows. for (size_t c = 0; c < m_categories.size(); ++c) if (m_categories[c].full_check != nullptr) m_categories[c].full_check->Bind(wxEVT_CHECKBOX, [this, c](wxCommandEvent&) { on_full_toggle(c); }); @@ -487,6 +769,18 @@ size_t PublishSettingsDialog::section_group_for(Section kind) section.tabs->SetFont(Label::Body_14); section.tabs->SetBackgroundColour(GetBackgroundColour()); page_sizer->Add(section.tabs, 0, wxEXPAND); + // Mixed-color filament slots get a second tab strip below the physical filament tabs; only + // the Material section has them. + if (kind == Section::Material) { + section.mixed_tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); + section.mixed_tabs->SetFont(Label::Body_14); + section.mixed_tabs->SetBackgroundColour(GetBackgroundColour()); + // The mixed tabs carry full swatch compositions: give them extra room to breathe so + // neighbouring compositions do not read as one long row (must precede AppendItem). + section.mixed_tabs->SetItemSpace(FromDIP(5)); + page_sizer->Add(section.mixed_tabs, 0, wxEXPAND | wxTOP, FromDIP(2)); + section.mixed_tabs->Hide(); + } section.page_host = new wxPanel(section.page, wxID_ANY); section.page_host->SetBackgroundColour(GetBackgroundColour()); section.page_host_sizer = new wxBoxSizer(wxVERTICAL); @@ -505,14 +799,20 @@ size_t PublishSettingsDialog::section_group_for(Section kind) } size_t PublishSettingsDialog::category_index_for( - const wxString& title, Section section, size_t group, size_t source_index, const PublishMaterialIdentity& identity) + const wxString& title, Section section, size_t group, size_t source_index, const PublishMaterialIdentity& identity, bool is_mixed) { - for (size_t i : m_sections[group].categories) { - Category& existing = m_categories[i]; - if (existing.title == title && existing.section == section && existing.source_index == source_index && - existing.filament_id == identity.id && existing.filament_type == identity.type && existing.filament_vendor == identity.vendor) + // Dedup across both tab rows (physical + mixed); mixed slots are never duplicated anyway. + auto match = [&](const Category& existing) { + return existing.title == title && existing.section == section && existing.source_index == source_index && + existing.filament_id == identity.id && existing.filament_type == identity.type && + existing.filament_vendor == identity.vendor; + }; + for (size_t i : m_sections[group].categories) + if (match(m_categories[i])) + return i; + for (size_t i : m_sections[group].mixed_categories) + if (match(m_categories[i])) return i; - } Category category; category.title = title; @@ -523,29 +823,58 @@ size_t PublishSettingsDialog::category_index_for( category.filament_vendor = identity.vendor; category.filament_id = identity.id; category.filament_slot = source_index; + category.is_mixed = is_mixed; category.page = new wxPanel(m_sections[group].page_host, wxID_ANY); category.page->SetBackgroundColour(GetBackgroundColour()); auto* page_sizer = new wxBoxSizer(wxVERTICAL); - // The slot's colour chip decorates both the section header and the inner tab. + // The physical slot's colour chip decorates the page header and the inner tab; it carries + // the 1-based slot number, mirroring the main GUI's filament swatches. A mixed slot has no + // header at all: its page is just the Enable toggle above the (always visible) definition + // preview - the identification lives in the tab strip's composition bitmap. std::string hex; - if (section == Section::Material) - hex = filament_color_hex(wxGetApp().preset_bundle->full_config(), source_index); + std::string chip_label; + if (section == Section::Material && !is_mixed) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + hex = filament_color_hex(full, source_index); + chip_label = std::to_string(source_index + 1); + } if (section == Section::Material) { - auto* header_sizer = new wxBoxSizer(wxHORIZONTAL); - if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) { - category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); - header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + if (is_mixed) { + // No chip/title: the lone "Enable" checkbox tops the page. + auto* enable_sizer = new wxBoxSizer(wxHORIZONTAL); + category.enable_check = new wxCheckBox(category.page, wxID_ANY, _L("Enable")); + category.enable_check->SetFont(Label::Body_13); + category.enable_check->SetToolTip(_L("Publish this mixed filament and enable + Full Publish its component filaments")); + enable_sizer->Add(category.enable_check, 0, wxALIGN_CENTER_VERTICAL); + page_sizer->Add(enable_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + } else { + // Line 1: [chip] [title] [Enable]. The Enable checkbox gates the whole slot: while + // it is unchecked nothing below the title is shown and nothing of it is published. + auto* header_sizer = new wxBoxSizer(wxHORIZONTAL); + if (wxBitmap* chip = get_extruder_color_icon(hex, chip_label, FromDIP(20), FromDIP(20))) { + category.filament_color_chip = new wxStaticBitmap(category.page, wxID_ANY, *chip); + header_sizer->Add(category.filament_color_chip, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + } + category.title_label = new wxStaticText(category.page, wxID_ANY, title); + category.title_label->SetFont(Label::Head_14); + header_sizer->Add(category.title_label, 0, wxALIGN_CENTER_VERTICAL); + category.enable_check = new wxCheckBox(category.page, wxID_ANY, _L("Enable")); + category.enable_check->SetFont(Label::Body_13); + category.enable_check->SetToolTip(_L("Publish this filament slot in the 3MF file")); + header_sizer->Add(category.enable_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(10)); + page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); + + // Line 2: the "Full Publish" toggle, on its own line below the title (hidden until + // the slot is enabled). + auto* full_sizer = new wxBoxSizer(wxHORIZONTAL); + category.full_check = new wxCheckBox(category.page, wxID_ANY, _L("Full Publish")); + category.full_check->SetFont(Label::Body_13); + category.full_check->SetToolTip(_L("Embed the entire filament of this slot in the 3MF file")); + full_sizer->Add(category.full_check, 0, wxALIGN_CENTER_VERTICAL); + category.full_line_item = page_sizer->Add(full_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(2)); } - category.title_label = new wxStaticText(category.page, wxID_ANY, title); - category.title_label->SetFont(Label::Head_14); - header_sizer->Add(category.title_label, 0, wxALIGN_CENTER_VERTICAL); - category.full_check = new wxCheckBox(category.page, wxID_ANY, _L("Full Publish")); - category.full_check->SetFont(Label::Body_13); - category.full_check->SetToolTip(_L("Embed the entire filament of this slot in the 3MF file")); - header_sizer->Add(category.full_check, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(10)); - page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); } category.scroll = new wxScrolledWindow(category.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVSCROLL); @@ -555,28 +884,53 @@ size_t PublishSettingsDialog::category_index_for( category.scroll->SetSizer(category.list_sizer); category.scroll->DisableFocusFromKeyboard(); category.scroll->Bind(wxEVT_RIGHT_DOWN, &PublishSettingsDialog::show_menu, this); - category.info = new wxStaticText(category.scroll, wxID_ANY, m_info_empty); + category.info = new wxStaticText(category.scroll, wxID_ANY, is_mixed ? m_info_mix : m_info_empty); category.info->SetFont(Label::Body_13); category.list_sizer->Add(category.info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); category.info->Hide(); page_sizer->Add(category.scroll, 1, wxEXPAND | wxALL, FromDIP(4)); + // A material slot starts disabled: its rows (and its Full Publish line) stay hidden until + // "Enable" is checked. + if (section == Section::Material) + category.scroll->Hide(); category.page->SetSizer(page_sizer); category.page->Hide(); const size_t category_index = m_categories.size(); m_categories.push_back(std::move(category)); - m_sections[group].categories.push_back(category_index); + // Mixed slots live in a second tab row below the physical filament tabs. + if (is_mixed) + m_sections[group].mixed_categories.push_back(category_index); + else + m_sections[group].categories.push_back(category_index); if (section == Section::Material) { - if (wxBitmap* chip = get_extruder_color_icon(hex, "", FromDIP(12), FromDIP(12))) - m_sections[group].tabs->AppendItem(title, *chip); - else - m_sections[group].tabs->AppendItem(title); + TabCtrl* target = is_mixed ? m_sections[group].mixed_tabs : m_sections[group].tabs; + if (is_mixed) { + // The tab's whole composition (mix chip + components + percents) lives in one + // bitmap; the text is empty because a TabCtrl item cannot interleave images into + // its text. + const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20)); + if (tab_bmp.IsOk()) + target->AppendItem(wxString(), tab_bmp); + else + target->AppendItem(title); + } else if (wxBitmap* chip = get_extruder_color_icon(hex, chip_label, FromDIP(20), FromDIP(20))) { + target->AppendItem(title, *chip); + } else { + target->AppendItem(title); + } } else { m_sections[group].tabs->AppendItem(title); } m_sections[group].page_host_sizer->Add(m_categories[category_index].page, 1, wxEXPAND); - if (m_sections[group].selected_inner < 0) + if (is_mixed) { + if (m_sections[group].selected_mixed < 0) + m_sections[group].selected_mixed = 0; + m_sections[group].mixed_tabs->Show(); + } else if (m_sections[group].selected_inner < 0) { m_sections[group].selected_inner = 0; + } return category_index; } @@ -636,7 +990,9 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, current.value_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); current.value_label->SetToolTip(unit.IsEmpty() ? value : value + " " + unit); if (kind == RowKind::Color && !value.IsEmpty()) { - if (wxBitmap* chip = get_extruder_color_icon(value.ToStdString(), "", FromDIP(12), FromDIP(12))) { + // The colour swatch carries this slot's 1-based number, like the main GUI swatches. + const std::string chip_label = std::to_string(category.filament_slot + 1); + if (wxBitmap* chip = get_extruder_color_icon(value.ToStdString(), chip_label, FromDIP(20), FromDIP(20))) { current.color_chip = new wxStaticBitmap(category.scroll, wxID_ANY, *chip); row_sizer->Add(current.color_chip, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); } @@ -661,6 +1017,320 @@ void PublishSettingsDialog::on_full_toggle(size_t category_index) m_rows[r].check->Enable(!full); } +void PublishSettingsDialog::on_enable_toggle(size_t category_index) +{ + Category& cat = m_categories[category_index]; + const bool enabled = cat.enable_check->GetValue(); + + // A published mixed filament needs its component filaments published too: mark the slots it + // uses as "Enable"d and Full Published so the mix's physical components always ship their + // identities. + if (cat.is_mixed && enabled) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + const std::vector components = mixed_slot_components(full, cat.filament_slot); + for (const unsigned int component : components) { + // Components are 1-based physical filament indices. + const size_t component_slot = size_t(component) - 1; + for (size_t c = 0; c < m_categories.size(); ++c) { + Category& comp_cat = m_categories[c]; + if (comp_cat.section != Section::Material || comp_cat.is_mixed || comp_cat.filament_slot != component_slot) + continue; + if (comp_cat.enable_check != nullptr) + comp_cat.enable_check->SetValue(true); + if (comp_cat.full_check != nullptr) + comp_cat.full_check->SetValue(true); + on_full_toggle(c); + } + } + } + + // Reveal/hide everything below the slot's header (rows, info, Full Publish line) and refresh + // the visibility of the auto-selected component slots. + apply_visibility(); + if (cat.page != nullptr) + cat.page->GetSizer()->Layout(); +} + +void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedVisualSpec& spec) +{ + if (category_index >= m_categories.size() || !spec.valid) + return; + Category& category = m_categories[category_index]; + if (category.page == nullptr || category.page->GetSizer() == nullptr || category.scroll == nullptr || spec.component_colours.empty()) + return; + + auto* viz = new wxPanel(category.page, wxID_ANY); + viz->SetBackgroundStyle(wxBG_STYLE_PAINT); + // Per-panel fill-bitmap cache for the ternary branch; rebuilt only when size or colours + // change (shared_ptr keeps the lifetime independent of this method's locals). + struct TriCache + { + wxBitmap bmp; + wxSize sz{0, 0}; + wxColour c0, c1, c2; + }; + auto tri_cache = std::make_shared(); + // Theme colours and DIP metrics are resolved inside the paint handler so dark-mode toggles + // and DPI changes are picked up on the next repaint without any explicit listener. + viz->Bind(wxEVT_PAINT, [this, panel = viz, spec, tri_cache](wxPaintEvent&) { + const wxColour bg = StateColor::darkModeColorFor(*wxWHITE); + wxBufferedPaintDC pdc(panel); + pdc.SetBackground(wxBrush(bg)); + pdc.Clear(); + const wxRect rc = panel->GetClientRect(); + if (rc.width <= 0 || rc.height <= 0) + return; + + const size_t n = spec.component_colours.size(); + + if (spec.tri_weights.size() == 3 && n == 3 && !spec.is_gradient) { + // Ternary mix: a read-only miniature of the MixedFilamentDialog's triangle picker. + // Per-pixel barycentric fill is cached into a bitmap keyed on size + colours; the + // marker and labels are redrawn on top every paint. + const wxColour tri_bg = StateColor::darkModeColorFor(*wxWHITE); + const wxColour outline = StateColor::darkModeColorFor(wxColour("#CECECE")); + const wxColour ring = StateColor::darkModeColorFor(wxColour("#262E30")); + const wxColour label_c = StateColor::darkModeColorFor(wxColour(107, 107, 107)); // grey 700 + const double margin_dip = 24.0; + auto& cache = *tri_cache; + + auto vertices_for = [&](const wxSize& sz) -> std::tuple { + const double pw = sz.GetWidth(), ph = sz.GetHeight(); + const int margin = FromDIP(int(margin_dip)); + const double avail = std::min(pw, ph) - 2.0 * margin; + const double side = avail; + const double tri_h = side * std::sqrt(3.0) / 2.0; + const double cx = pw / 2.0; + const double top_y = (ph - tri_h) / 2.0; + return {{cx, top_y}, {cx - side / 2.0, top_y + tri_h}, {cx + side / 2.0, top_y + tri_h}}; + }; + + pdc.SetFont(::Label::Body_12); + const wxColour& c0 = spec.component_colours[0]; + const wxColour& c1 = spec.component_colours[1]; + const wxColour& c2 = spec.component_colours[2]; + + if (!cache.bmp.IsOk() || cache.sz != rc.GetSize() || cache.c0 != c0 || cache.c1 != c1 || cache.c2 != c2) { + auto [v0, v1, v2] = vertices_for(rc.GetSize()); + cache.bmp = wxBitmap(rc.width, rc.height, 32); + wxMemoryDC mdc(cache.bmp); + mdc.SetBrush(wxBrush(tri_bg)); + mdc.SetPen(*wxTRANSPARENT_PEN); + mdc.DrawRectangle(0, 0, rc.width, rc.height); + + const int min_y = int(std::min({v0.y, v1.y, v2.y})); + const int max_y = int(std::max({v0.y, v1.y, v2.y})); + const int min_x = int(std::min({v0.x, v1.x, v2.x})); + const int max_x = int(std::max({v0.x, v1.x, v2.x})); + for (int py = min_y; py <= max_y; ++py) + for (int px = min_x; px <= max_x; ++px) { + const TriPoint p = {double(px), double(py)}; + if (!tri_contains(p, v0, v1, v2)) + continue; + double w0, w1, w2; + tri_barycentric(p, v0, v1, v2, w0, w1, w2); + unsigned char mr, mg, mb; + if (w0 + w1 > 1e-6) { + float t01 = static_cast(w1 / (w0 + w1)); + Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), c1.Red(), c1.Green(), c1.Blue(), t01, &mr, &mg, + &mb); + Slic3r::filament_mixer_lerp(mr, mg, mb, c2.Red(), c2.Green(), c2.Blue(), static_cast(w2), &mr, &mg, &mb); + } else { + mr = c2.Red(); + mg = c2.Green(); + mb = c2.Blue(); + } + mdc.SetPen(wxPen(wxColour(mr, mg, mb))); + mdc.DrawPoint(px, py); + } + + mdc.SetPen(wxPen(outline, 1)); + mdc.SetBrush(*wxTRANSPARENT_BRUSH); + const wxPoint pts[3] = {{int(v0.x), int(v0.y)}, {int(v1.x), int(v1.y)}, {int(v2.x), int(v2.y)}}; + mdc.DrawPolygon(3, pts); + mdc.SelectObject(wxNullBitmap); + + cache.sz = rc.GetSize(); + cache.c0 = c0; + cache.c1 = c1; + cache.c2 = c2; + } + pdc.DrawBitmap(cache.bmp, 0, 0); + + // Published-ratio marker (read-only twin of the editor's drag handle). + { + auto [v0, v1, v2] = vertices_for(rc.GetSize()); + const double w0 = spec.tri_weights[0], w1 = spec.tri_weights[1], w2 = spec.tri_weights[2]; + const int hx = int(w0 * v0.x + w1 * v1.x + w2 * v2.x); + const int hy = int(w0 * v0.y + w1 * v1.y + w2 * v2.y); + pdc.SetBrush(*wxWHITE_BRUSH); + pdc.SetPen(wxPen(ring, FromDIP(2))); + pdc.DrawCircle(hx, hy, FromDIP(5)); + + // Percent label beside each vertex. + for (int i = 0; i < 3; ++i) { + const wxString text = wxString::Format("%d%%", int(std::lround(spec.tri_weights[i] * 100.0))); + const wxSize tsz = pdc.GetTextExtent(text); + const TriPoint vtx = (i == 0) ? v0 : (i == 1) ? v1 : v2; + int lx = int(vtx.x - tsz.GetWidth() / 2.0); + int ly = (i == 0) ? int(vtx.y - tsz.GetHeight()) : int(vtx.y + FromDIP(3)); + ly = std::clamp(ly, 0, rc.height - tsz.GetHeight()); + lx = std::clamp(lx, 0, rc.width - tsz.GetWidth()); + pdc.SetTextForeground(label_c); + pdc.DrawText(text, lx, ly); + } + } + } else if (!spec.is_gradient) { + // Stacked ratio bar: one solid segment per component, widths proportional to the + // published shares. Integer widths accumulate left to right; the last segment takes + // the rounding remainder so the bar always fills exactly. + std::vector shares = spec.ratios; + double total = 0.0; + for (double r : shares) + total += r; + if (shares.size() != n || total <= 0.0) { + shares.assign(n, 1.0 / n); + total = 1.0; + } + auto share_to_px = [&](double share_sum) { return rc.x + int(std::lround(share_sum / total * double(rc.width))); }; + std::vector segs(n); + int x0 = rc.x; + for (size_t i = 0; i < n; ++i) { + int x1 = rc.x + rc.width; + if (i + 1 < n) + x1 = share_to_px(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0)); + segs[i] = wxRect(x0, rc.y, std::max(1, x1 - x0), rc.height); + x0 = segs[i].GetRight() + 1; + } + + for (size_t i = 0; i < n; ++i) { + pdc.SetPen(*wxTRANSPARENT_PEN); + pdc.SetBrush(wxBrush(spec.component_colours[i])); + pdc.DrawRectangle(segs[i]); + } + pdc.SetBrush(*wxTRANSPARENT_BRUSH); + pdc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#ACACAC")), 1)); + pdc.DrawRectangle(rc); + + // Percent label centred in each segment wide enough to hold it. + pdc.SetFont(::Label::Body_12); + for (size_t i = 0; i < n; ++i) { + const wxString text = wxString::Format("%d%%", int(std::lround(shares[i] / total * 100.0))); + const wxSize tsz = pdc.GetTextExtent(text); + if (tsz.GetWidth() + FromDIP(4) > segs[i].GetWidth()) + continue; + // Label contrast follows the swatch itself, not the theme. + const wxColour& c = spec.component_colours[i]; + const double lum = 0.299 * c.Red() + 0.587 * c.Green() + 0.114 * c.Blue(); + pdc.SetTextForeground(lum > 140 ? wxColour("#262E30") : *wxWHITE); + pdc.DrawText(text, segs[i].x + (segs[i].GetWidth() - tsz.GetWidth()) / 2, rc.y + (rc.height - tsz.GetHeight()) / 2); + } + } else { + // Gradient: compact "Material Ratio" over "Model Height" graph, a read-only + // miniature of the GradientCurveEditor plot. Component order matches the config; + // the second component's curve is the mirror of the first's. + const wxColour grid_color = StateColor::darkModeColorFor(wxColour(238, 238, 238)); // grey 300 + const wxColour axis_color = StateColor::darkModeColorFor(wxColour(107, 107, 107)); // grey 700 + const wxColour label_muted = StateColor::darkModeColorFor(wxColour(107, 107, 107)); + const wxColour point_fill = StateColor::darkModeColorFor(*wxWHITE); + + const int pad_left = FromDIP(34); + const int pad_right = FromDIP(10); + const int pad_top = FromDIP(18); + const int pad_bottom = FromDIP(16); + const wxRect plot(rc.x + pad_left, rc.y + pad_top, std::max(1, rc.width - pad_left - pad_right), + std::max(1, rc.height - pad_top - pad_bottom)); + + constexpr int kGridDivisions = 5; + pdc.SetPen(wxPen(grid_color, 1)); + for (int i = 0; i <= kGridDivisions; ++i) { + const int gx = plot.x + plot.width * i / kGridDivisions; + const int gy = plot.y + plot.height * i / kGridDivisions; + pdc.DrawLine(gx, plot.y, gx, plot.y + plot.height); + pdc.DrawLine(plot.x, gy, plot.x + plot.width, gy); + } + + // Axes with small filled arrowheads along the plot's left and bottom edges. + const int arrow_len = FromDIP(7); + const int arrow_half = FromDIP(3); + pdc.SetPen(wxPen(axis_color, 1)); + pdc.SetBrush(wxBrush(axis_color)); + pdc.DrawLine(plot.x, plot.y + plot.height, plot.x, plot.y); + { + wxPoint tri[3] = {wxPoint(plot.x, plot.y - arrow_len), wxPoint(plot.x - arrow_half, plot.y), + wxPoint(plot.x + arrow_half, plot.y)}; + pdc.DrawPolygon(3, tri); + } + pdc.DrawLine(plot.x, plot.y + plot.height, plot.x + plot.width, plot.y + plot.height); + { + wxPoint tri[3] = {wxPoint(plot.x + plot.width + arrow_len, plot.y + plot.height), + wxPoint(plot.x + plot.width, plot.y + plot.height - arrow_half), + wxPoint(plot.x + plot.width, plot.y + plot.height + arrow_half)}; + pdc.DrawPolygon(3, tri); + } + + wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); + pdc.SetFont(label_font); + pdc.SetTextForeground(label_muted); + pdc.DrawText(_L("Material Ratio"), plot.x + FromDIP(4), plot.y - pdc.GetTextExtent(_L("Material Ratio")).GetHeight()); + const wxString height_title = _L("Model Height"); + pdc.DrawText(height_title, plot.x + plot.width - pdc.GetTextExtent(height_title).GetWidth(), plot.y + plot.height + FromDIP(2)); + + if (spec.gradient_samples.size() >= 2 && n >= 2) { + auto curve_point = [&](double t, double ratio) { + return wxPoint(plot.x + int(std::lround(t * plot.width)), plot.y + int(std::lround((1.0 - ratio) * plot.height))); + }; + // First component's ratio solid, its mirror dashed-free twin for the other. + const wxColour& col_a = spec.component_colours[0]; + const wxColour& col_b = spec.component_colours[1]; + std::vector pts_a, pts_b; + pts_a.reserve(spec.gradient_samples.size()); + pts_b.reserve(spec.gradient_samples.size()); + for (const auto& [t, r] : spec.gradient_samples) { + pts_a.push_back(curve_point(t, r)); + pts_b.push_back(curve_point(t, 1.0 - r)); + } + pdc.SetPen(wxPen(col_b, 2)); + for (size_t i = 0; i + 1 < pts_b.size(); ++i) + pdc.DrawLine(pts_b[i], pts_b[i + 1]); + pdc.SetPen(wxPen(col_a, 2)); + for (size_t i = 0; i + 1 < pts_a.size(); ++i) + pdc.DrawLine(pts_a[i], pts_a[i + 1]); + + // Control-point anchors of the stored curve on the first component's line. + pdc.SetBrush(wxBrush(point_fill)); + pdc.SetPen(wxPen(col_a, 1)); + for (const auto& [t, r] : spec.gradient_anchors) { + const wxPoint c = curve_point(t, r); + pdc.DrawCircle(c, FromDIP(3)); + } + } + } + }); + + // Fixed DIP size, left-aligned: the visualization keeps its proportions no matter how the + // dialog is resized (the paint handler draws into whatever client rect the panel ends up + // with, so nothing else has to change). + const int viz_h = spec.is_gradient ? 150 : (spec.tri_weights.size() == 3 ? 180 : 30); + const wxSize viz_sz(FromDIP(240), FromDIP(viz_h)); + viz->SetMinSize(viz_sz); + viz->SetMaxSize(viz_sz); + // Parented to the page right above the scroll area, so it is always shown with the tab: + // the "Enable" toggle keeps gating only the rows/info below, never this preview. + wxSizer* page_sizer = category.page->GetSizer(); + int scroll_idx = -1; + for (size_t i = 0; i < page_sizer->GetChildren().size(); ++i) + if (page_sizer->GetChildren()[i]->GetWindow() == category.scroll) { + scroll_idx = int(i); + break; + } + if (scroll_idx < 0) + page_sizer->Add(viz, 0, wxLEFT | wxRIGHT | wxTOP, FromDIP(10)); // defensive: no scroll item + else + page_sizer->Insert(scroll_idx, viz, 0, wxLEFT | wxRIGHT | wxTOP, FromDIP(10)); +} + void PublishSettingsDialog::set_row_bold(Row& row, bool bold) { // Rebase on the dialog's body font so clearing bold restores the exact original font. @@ -681,13 +1351,18 @@ void PublishSettingsDialog::show_outer_page(size_t section_index) SectionGroup& old_section = m_sections[m_selected_outer]; if (old_section.selected_inner >= 0 && old_section.selected_inner < static_cast(old_section.categories.size())) save_scroll_position(m_categories[old_section.categories[old_section.selected_inner]]); + if (old_section.selected_mixed >= 0 && old_section.selected_mixed < static_cast(old_section.mixed_categories.size())) + save_scroll_position(m_categories[old_section.mixed_categories[old_section.selected_mixed]]); m_sections[m_selected_outer].page->Hide(); } m_selected_outer = static_cast(section_index); SectionGroup& section = m_sections[section_index]; section.page->Show(); + // Restore whichever tab row (physical or mixed) was active. if (section.selected_inner >= 0) show_inner_page(section_index, section.selected_inner); + else if (section.selected_mixed >= 0) + show_mixed_page(section_index, section.selected_mixed); m_outer_host_sizer->Layout(); } @@ -702,11 +1377,43 @@ void PublishSettingsDialog::show_inner_page(size_t section_index, int inner_inde save_scroll_position(m_categories[section.categories[section.selected_inner]]); m_categories[section.categories[section.selected_inner]].page->Hide(); } + if (section.selected_mixed >= 0 && section.selected_mixed < static_cast(section.mixed_categories.size())) { + save_scroll_position(m_categories[section.mixed_categories[section.selected_mixed]]); + m_categories[section.mixed_categories[section.selected_mixed]].page->Hide(); + section.selected_mixed = -1; + } section.selected_inner = inner_index; Category& category = m_categories[section.categories[inner_index]]; category.page->Show(); category.scroll->FitInside(); category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + if (section.mixed_tabs != nullptr) + section.mixed_tabs->Unselect(); + section.page_host_sizer->Layout(); +} + +void PublishSettingsDialog::show_mixed_page(size_t section_index, int mixed_index) +{ + if (section_index >= m_sections.size()) + return; + SectionGroup& section = m_sections[section_index]; + if (mixed_index < 0 || mixed_index >= static_cast(section.mixed_categories.size())) + return; + if (section.selected_mixed >= 0 && section.selected_mixed < static_cast(section.mixed_categories.size())) { + save_scroll_position(m_categories[section.mixed_categories[section.selected_mixed]]); + m_categories[section.mixed_categories[section.selected_mixed]].page->Hide(); + } + if (section.selected_inner >= 0 && section.selected_inner < static_cast(section.categories.size())) { + save_scroll_position(m_categories[section.categories[section.selected_inner]]); + m_categories[section.categories[section.selected_inner]].page->Hide(); + section.selected_inner = -1; + } + section.selected_mixed = mixed_index; + Category& category = m_categories[section.mixed_categories[mixed_index]]; + category.page->Show(); + category.scroll->FitInside(); + category.scroll->Scroll(category.scroll_pos.x, category.scroll_pos.y); + section.tabs->Unselect(); section.page_host_sizer->Layout(); } @@ -724,12 +1431,25 @@ void PublishSettingsDialog::on_inner_tab_changed(size_t section_index, wxCommand show_inner_page(section_index, selection); } +void PublishSettingsDialog::on_mixed_tab_changed(size_t section_index, wxCommandEvent& event) +{ + const int selection = event.GetInt(); + if (section_index < m_sections.size() && selection >= 0 && + selection < static_cast(m_sections[section_index].mixed_categories.size())) + show_mixed_page(section_index, selection); +} + void PublishSettingsDialog::bind_tab_events() { m_outer_tabs->Bind(wxEVT_TAB_SEL_CHANGED, &PublishSettingsDialog::on_outer_tab_changed, this); - for (size_t section_index = 0; section_index < m_sections.size(); ++section_index) + for (size_t section_index = 0; section_index < m_sections.size(); ++section_index) { m_sections[section_index].tabs->Bind(wxEVT_TAB_SEL_CHANGED, [this, section_index](wxCommandEvent& event) { on_inner_tab_changed(section_index, event); }); + if (m_sections[section_index].mixed_tabs != nullptr) + m_sections[section_index].mixed_tabs->Bind(wxEVT_TAB_SEL_CHANGED, [this, section_index](wxCommandEvent& event) { + on_mixed_tab_changed(section_index, event); + }); + } } void PublishSettingsDialog::apply_filter(const wxString& filter_text) @@ -781,7 +1501,9 @@ void PublishSettingsDialog::refresh_filter(const wxString& filter) has_match = has_match || m_rows[r].matches_filter; category.info->Show(!has_match); if (!has_match) - category.info->SetLabel(pseudo ? (want_checked ? m_info_nonsel : m_info_allsel) : m_info_empty); + // A mixed slot has no selectable rows: always explain it is published whole. + category.info->SetLabel(category.is_mixed ? m_info_mix : + (pseudo ? (want_checked ? m_info_nonsel : m_info_allsel) : m_info_empty)); if (has_match && first_inner < 0) { first_outer = s; first_inner = static_cast(inner); @@ -789,6 +1511,13 @@ void PublishSettingsDialog::refresh_filter(const wxString& filter) if (static_cast(s) == m_selected_outer && static_cast(inner) == m_sections[s].selected_inner) active_has_match = has_match; } + // Mixed slots have no rows: they can never match a filter, so they always fall back to + // their explanatory hint (shown once the slot is enabled). + for (size_t mixed : m_sections[s].mixed_categories) { + Category& category = m_categories[mixed]; + category.info->Show(true); + category.info->SetLabel(m_info_mix); + } } if (!active_has_match && first_inner >= 0 && (m_selected_outer != static_cast(first_outer) || m_sections[first_outer].selected_inner != first_inner)) { @@ -815,18 +1544,26 @@ void PublishSettingsDialog::apply_visibility() { Freeze(); for (Category& category : m_categories) { + // A disabled material slot hides everything below its header (rows, info and the Full + // Publish line); enable it first to reveal its settings. + const bool enabled = category.section != Section::Material || + (category.enable_check != nullptr && category.enable_check->GetValue()); + if (category.scroll != nullptr) + category.scroll->Show(enabled); + if (category.full_line_item != nullptr) + category.full_line_item->Show(enabled); bool category_any = false; for (size_t r : category.rows) category_any = category_any || m_rows[r].matches_filter; - category.info->Show(!category_any); + category.info->Show(enabled && !category_any); for (Subcategory& sub : category.subs) { bool sub_any = false; for (size_t r : sub.rows) sub_any = sub_any || m_rows[r].matches_filter; if (sub.header != nullptr) - sub.item->Show(sub_any); + sub.item->Show(enabled && sub_any); for (size_t r : sub.rows) - m_rows[r].item->Show(m_rows[r].matches_filter); + m_rows[r].item->Show(enabled && m_rows[r].matches_filter); } category.list_sizer->Layout(); category.scroll->FitInside(); @@ -840,6 +1577,17 @@ void PublishSettingsDialog::select_all(bool value) for (Row& row : m_rows) if (row.check->IsEnabled()) row.check->SetValue(value); + // "All" also enables every material slot (so its rows/Full Publish become visible and the + // selection is actually exported); "None" disables them all again. + for (Category& cat : m_categories) + if (cat.section == Section::Material && cat.enable_check != nullptr) + cat.enable_check->SetValue(value); + // wxCheckBox::SetValue does not emit wxEVT_CHECKBOX, so re-run the enable handlers to + // propagate mixed-slot components and refresh visibility as if the user had clicked. + for (size_t c = 0; c < m_categories.size(); ++c) + if (m_categories[c].section == Section::Material) + on_enable_toggle(c); + apply_visibility(); } bool PublishSettingsDialog::row_is_visible(const Row& row) const @@ -936,28 +1684,13 @@ std::vector PublishSettingsDialog::GetPublishedKeys() const std::vector out; // Process and printer sections both travel through published_keys (the load-side overlay // applies process keys to the prints edited preset and the allowlisted printer keys to the - // printers edited preset); material keys use a separate API. - const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + // printers edited preset); material keys use a separate API. Printer rows carry the full + // per-extruder "#N" opt_id (built in Phase 1), so a checked row publishes exactly that + // extruder's value - per-extruder selection is independent. for (const Row& row : m_rows) { if ((row.section != Section::Print && row.section != Section::Printer) || !row.check->GetValue()) continue; - if (row.section == Section::Printer) { - // Printer rows store the base key (per-extruder "#N" variants collapsed during - // build). Publish every extruder element so the load side can apply per-extruder - // values even when the receiver has a different extruder count; a scalar printer - // key is published as-is. - const std::string base_key = publish_base_key(row.key); - if (const ConfigOption* opt = full.option(base_key)) { - if (const auto* vec = dynamic_cast(opt)) { - for (size_t i = 0; i < vec->size(); ++i) - out.push_back(base_key + "#" + std::to_string(i)); - } else { - out.push_back(base_key); - } - } - } else { - out.push_back(row.key); - } + out.push_back(row.key); } return out; } @@ -968,6 +1701,9 @@ std::vector PublishSettingsDialog::GetPublishedM for (const Category& cat : m_categories) { if (cat.section != Section::Material) continue; + // A slot that is not "Enable"d publishes nothing at all. + if (cat.enable_check != nullptr && !cat.enable_check->GetValue()) + continue; Slic3r::PublishedMaterialEntry entry; entry.filament_type = cat.filament_type; entry.filament_vendor = cat.filament_vendor; @@ -983,6 +1719,28 @@ std::vector PublishSettingsDialog::GetPublishedM entry.preset_name = preset->name; } } + // A mixed slot publishes as one unit: its definition (components, ratios, gradient) + // always travels (its Enable implies this), and the component filaments are enabled + + // Full Published by on_enable_toggle into their own entries. + if (cat.is_mixed) { + Slic3r::PublishedMaterialEntry mixed_entry; + mixed_entry.filament_type = cat.filament_type; + mixed_entry.filament_vendor = cat.filament_vendor; + mixed_entry.filament_id = cat.filament_id; + mixed_entry.slot = static_cast(cat.filament_slot); + // The mix's own colour (blended) is a property of the definition, not a + // requirement row; carry it so the receiver renders the swatch. + const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); + const std::string mix_color = filament_color_hex(full_cfg, cat.filament_slot); + if (!mix_color.empty()) { + mixed_entry.publish_color = true; + mixed_entry.color = mix_color; + } + for (const std::string& key : publish_mixed_keys()) + mixed_entry.keys.emplace_back(key); + out.push_back(std::move(mixed_entry)); + continue; + } // "Full Publish": the whole filament preset is embedded; type and colour are implicitly // published, and the per-key rows are disabled / their state ignored. if (cat.full_check != nullptr && cat.full_check->GetValue()) { @@ -1050,11 +1808,16 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) for (Category& cat : m_categories) { if (cat.full_check != nullptr) cat.full_check->Refresh(); + if (cat.enable_check != nullptr) + cat.enable_check->Refresh(); if (cat.title_label != nullptr) cat.title_label->Refresh(); if (cat.filament_color_chip != nullptr) { - if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, cat.filament_slot), "", FromDIP(12), FromDIP(12))) + // Mixed pages have no header chip; this only ever fires for physical slots. + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, cat.filament_slot), std::to_string(cat.filament_slot + 1), + FromDIP(20), FromDIP(20))) { cat.filament_color_chip->SetBitmap(*chip); + } } cat.scroll->FitInside(); cat.list_sizer->Layout(); @@ -1066,12 +1829,17 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) if (section.icon_bmp.bmp().IsOk()) m_outer_tabs->SetItemBitmap(s, section.icon_bmp.bmp()); section.tabs->Rescale(); + if (section.mixed_tabs != nullptr) + section.mixed_tabs->Rescale(); } - // Refresh the per-row Color chips at the new DPI. + // Refresh the per-row Color chips at the new DPI (they carry the slot number too). for (Row& row : m_rows) { if (row.color_chip != nullptr && !row.value.IsEmpty()) { - if (wxBitmap* chip = get_extruder_color_icon(row.value.ToStdString(), "", FromDIP(12), FromDIP(12))) + const std::string chip_label = (row.inner_index < m_categories.size()) ? + std::to_string(m_categories[row.inner_index].filament_slot + 1) : + ""; + if (wxBitmap* chip = get_extruder_color_icon(row.value.ToStdString(), chip_label, FromDIP(20), FromDIP(20))) row.color_chip->SetBitmap(*chip); } } @@ -1080,9 +1848,19 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) const Category& category = m_categories[category_index]; if (category.section != Section::Material) continue; - if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), "", FromDIP(12), FromDIP(12))) { - const SectionGroup& section = m_sections[category.group]; - const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); + const SectionGroup& section = m_sections[category.group]; + if (category.is_mixed) { + // The tab carries the full composition bitmap (mix chip + components + percents); + // the page header has no chip/title to refresh. + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full, category.filament_slot, FromDIP(20)); + if (tab_bmp.IsOk()) { + const auto iter = std::find(section.mixed_categories.begin(), section.mixed_categories.end(), category_index); + if (iter != section.mixed_categories.end() && section.mixed_tabs != nullptr) + section.mixed_tabs->SetItemBitmap(static_cast(iter - section.mixed_categories.begin()), tab_bmp); + } + } else if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), + std::to_string(category.filament_slot + 1), FromDIP(20), FromDIP(20))) { + const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); if (iter != section.categories.end()) m_sections[category.group].tabs->SetItemBitmap(static_cast(iter - section.categories.begin()), *chip); } diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 2cf49e7eb9..e00bec37fd 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -7,8 +7,10 @@ #include "libslic3r/PublishSettings.hpp" #include +#include #include #include +#include #include #include @@ -105,9 +107,18 @@ private: wxPoint scroll_pos{0, 0}; wxStaticBitmap* filament_color_chip{nullptr}; wxStaticText* title_label{nullptr}; // material title (static text; Full Publish carries the label elsewhere) + // "Enable": while unchecked nothing of this slot is exported and everything below the + // header row is hidden. For physical slots the Full Publish toggle sits on a second + // line (full_line_item) visible only when enabled; for mixed slots Enable alone implies + // publishing the mix definition, so no Full Publish widget exists at all. + wxCheckBox* enable_check{nullptr}; + wxSizerItem* full_line_item{nullptr}; // sizer item of the Full Publish line (physical slots only) // "Full Publish": while checked, the whole slot preset is serialized and its rows // (incl. Color/Type) are disabled. wxCheckBox* full_check{nullptr}; + // True for a mixed-color filament slot: no Material/Retraction rows; Enable publishes + // the slot's gradient/ratio definition as a whole. + bool is_mixed{false}; // Material identity, only for Section::Material categories. std::string filament_type; std::string filament_vendor; @@ -118,6 +129,21 @@ private: std::vector rows; // flattened rows of this category }; + // Frozen snapshot of a mixed filament slot's definition for the read-only visualization + // painted on the slot's page. Plain data only: the paint handler must never touch the + // config. For gradient slots the curve is pre-sampled (t, ratio) pairs, where ratio is the + // first component's share over model height; anchors carry the raw control points. + struct MixedVisualSpec + { + bool valid{false}; + bool is_gradient{false}; + std::vector component_colours; // colour per component, in config order + std::vector ratios; // sublayer shares summing to ~1 (non-gradient) + std::vector tri_weights; // 3-component mixes: barycentric shares + std::vector> gradient_samples; + std::vector> gradient_anchors; + }; + // One outer TabCtrl page. Category entries are its inner tabs. struct SectionGroup { @@ -127,13 +153,24 @@ private: ScalableBitmap icon_bmp; // tab icon next to the title; rescaled on DPI change wxPanel* page{nullptr}; TabCtrl* tabs{nullptr}; + // Second tab strip, below the main one, listing only the mixed-color filament slots. + // Present on the Material section only (null elsewhere). + TabCtrl* mixed_tabs{nullptr}; wxPanel* page_host{nullptr}; wxBoxSizer* page_host_sizer{nullptr}; int selected_inner{-1}; - std::vector categories; // indices into m_categories + // Selected mixed tab (index into mixed_categories), valid while a mixed slot page is shown. + int selected_mixed{-1}; + std::vector categories; // indices into m_categories (physical slots) + std::vector mixed_categories; // indices into m_categories (mixed slots) }; void build_option_model(); + // Frozen snapshot of a mixed slot's definition for the page visualization, resolved from + // the full config once at dialog-build time. Gradient slots pre-sample exactly what the + // slicer will print: the custom curve wins over the gradient_range endpoints over the + // 0.10 -> 0.90 default (the resolution FilamentBitmapUtils::mixed_gradient_curve mirrors). + static MixedVisualSpec make_mixed_visual_spec(const Slic3r::DynamicPrintConfig& full, size_t slot); void apply_filter(const wxString& filter_text); // Menu-only pseudo filters: show only the checked ("Filter selected") or only the // unchecked ("Filter non-selected") rows. The search box keeps the user's text. @@ -147,13 +184,21 @@ private: void set_row_bold(Row& row, bool bold); // "Full Publish" toggled: disables/enables the material's rows. void on_full_toggle(size_t category_index); + // "Enable" toggled on a material slot: reveals/hides everything below the header and, for a + // mixed slot, auto-selects its component filaments' "Enable" + "Full Publish" toggles. + void on_enable_toggle(size_t category_index); + // Read-only visualization of a mixed slot's definition (a stacked ratio bar, or the + // Material Ratio vs Model Height graph for a gradient), inserted above the info hint + // inside the category's scroll area. + void add_mixed_visual(size_t category_index, const MixedVisualSpec& spec); // Return/create the fixed outer page for a Section kind. size_t section_group_for(Section kind); size_t category_index_for(const wxString& title, Section section, size_t group, size_t source_index, - const PublishMaterialIdentity& identity = PublishMaterialIdentity()); + const PublishMaterialIdentity& identity = PublishMaterialIdentity(), + bool is_mixed = false); size_t subcategory_index_for(size_t category_index, const wxString& title, const wxString& icon); void add_row_ui(const std::string& key, const wxString& label, @@ -167,8 +212,10 @@ private: void save_scroll_position(Category& category); void show_outer_page(size_t section_index); void show_inner_page(size_t section_index, int inner_index); + void show_mixed_page(size_t section_index, int mixed_index); void on_outer_tab_changed(wxCommandEvent& event); void on_inner_tab_changed(size_t section_index, wxCommandEvent& event); + void on_mixed_tab_changed(size_t section_index, wxCommandEvent& event); bool row_is_visible(const Row& row) const; void apply_visibility(); void bind_tab_events(); @@ -190,6 +237,7 @@ private: wxString m_info_nonsel; wxString m_info_allsel; wxString m_info_empty; + wxString m_info_mix; // body hint shown for a mixed slot (published as a whole) ScalableBitmap m_search; ScalableBitmap m_menu; diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 7817c9111a..8fc432771e 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -2,8 +2,8 @@ #include -wxDEFINE_EVENT( wxEVT_TAB_SEL_CHANGING, wxCommandEvent ); -wxDEFINE_EVENT( wxEVT_TAB_SEL_CHANGED, wxCommandEvent ); +wxDEFINE_EVENT(wxEVT_TAB_SEL_CHANGING, wxCommandEvent); +wxDEFINE_EVENT(wxEVT_TAB_SEL_CHANGED, wxCommandEvent); BEGIN_EVENT_TABLE(TabCtrl, StaticBox) @@ -22,11 +22,7 @@ END_EVENT_TABLE() #define TAB_BUTTON_PADDING_Y 2 #define TAB_BUTTON_PADDING TAB_BUTTON_PADDING_X, TAB_BUTTON_PADDING_Y -TabCtrl::TabCtrl(wxWindow * parent, - wxWindowID id, - const wxPoint & pos, - const wxSize & size, - long style) +TabCtrl::TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : StaticBox(parent, id, pos, size, style) { #if 0 @@ -42,14 +38,11 @@ TabCtrl::TabCtrl(wxWindow * parent, hsizer->Add(sizer, 0, wxEXPAND | wxBOTTOM, border_width * 4); SetSizer(hsizer); Bind(wxEVT_COMMAND_BUTTON_CLICKED, &TabCtrl::buttonClicked, this); - //wxString reason; - //IsTransparentBackgroundSupported(&reason); + // wxString reason; + // IsTransparentBackgroundSupported(&reason); } -TabCtrl::~TabCtrl() -{ - delete images; -} +TabCtrl::~TabCtrl() { delete images; } int TabCtrl::GetSelection() const { return sel; } @@ -75,14 +68,11 @@ void TabCtrl::SelectItem(int item) Refresh(); } -void TabCtrl::Unselect() -{ - SelectItem(-1); -} +void TabCtrl::Unselect() { SelectItem(-1); } void TabCtrl::Rescale() { - for (auto & b : btns) + for (auto& b : btns) b->Rescale(); relayout(); } @@ -96,23 +86,20 @@ bool TabCtrl::SetFont(wxFont const& font) return true; } -int TabCtrl::AppendItem(const wxString &item, - int image, int selImage, - void * clientData) +int TabCtrl::AppendItem(const wxString& item, int image, int selImage, void* clientData) { - Button * btn = new Button(); + Button* btn = new Button(); btn->Create(this, item, "", wxBORDER_NONE); btn->SetFont(GetFont()); - btn->SetTextColor(StateColor( - std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), - std::make_pair(*wxLIGHT_GREY, (int) StateColor::Normal))); + btn->SetTextColor( + StateColor(std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), std::make_pair(*wxLIGHT_GREY, (int) StateColor::Normal))); btn->SetBackgroundColor(StateColor()); btn->SetCornerRadius(0); btn->SetPaddingSize({TAB_BUTTON_PADDING}); btns.push_back(btn); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); - sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, TAB_BUTTON_SPACE * 2); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, item_space * 2); sizer->AddStretchSpacer(1); relayout(); return btns.size() - 1; @@ -144,7 +131,7 @@ bool TabCtrl::DeleteItem(int item) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); if (selection_changed) { - sel--; // `relayout()` uses `sel` so we need to update this before calling `relayout()` + sel--; // `relayout()` uses `sel` so we need to update this before calling `relayout()` } relayout(); if (selection_changed) { @@ -167,14 +154,12 @@ void TabCtrl::DeleteAllItems() unsigned int TabCtrl::GetCount() const { return btns.size(); } -wxString TabCtrl::GetItemText(unsigned int item) const -{ - return item < btns.size() ? btns[item]->GetLabel() : wxString{}; -} +wxString TabCtrl::GetItemText(unsigned int item) const { return item < btns.size() ? btns[item]->GetLabel() : wxString{}; } -void TabCtrl::SetItemText(unsigned int item, wxString const &value) +void TabCtrl::SetItemText(unsigned int item, wxString const& value) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetLabel(value); } @@ -188,61 +173,59 @@ void TabCtrl::SetItemBitmap(unsigned int item, const wxBitmap& bitmap) bool TabCtrl::GetItemBold(unsigned int item) const { - if (item >= btns.size()) return false; + if (item >= btns.size()) + return false; return btns[item]->GetFont() == bold; } void TabCtrl::SetItemBold(unsigned int item, bool bold) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetFont(bold ? this->bold : GetFont()); btns[item]->Rescale(); } void* TabCtrl::GetItemData(unsigned int item) const { - if (item >= btns.size()) return nullptr; + if (item >= btns.size()) + return nullptr; return btns[item]->GetClientData(); } void TabCtrl::SetItemData(unsigned int item, void* clientData) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetClientData(clientData); } void TabCtrl::AssignImageList(wxImageList* imageList) { - if (images == imageList) return; + if (images == imageList) + return; delete images; images = imageList; } -void TabCtrl::SetItemTextColour(unsigned int item, const StateColor &col) +void TabCtrl::SetItemTextColour(unsigned int item, const StateColor& col) { - if (item >= btns.size()) return; + if (item >= btns.size()) + return; btns[item]->SetTextColor(col); } -int TabCtrl::GetFirstVisibleItem() const -{ - return btns.size() == 0 ? -1 : 0; -} +int TabCtrl::GetFirstVisibleItem() const { return btns.size() == 0 ? -1 : 0; } -int TabCtrl::GetNextVisible(int item) const -{ - return ++item < btns.size() ? item : -1; -} +int TabCtrl::GetNextVisible(int item) const { return ++item < btns.size() ? item : -1; } -bool TabCtrl::IsVisible(unsigned int item) const -{ - return true; -} +bool TabCtrl::IsVisible(unsigned int item) const { return true; } void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) { wxWindow::DoSetSize(x, y, width, height, sizeFlags); - if (sizeFlags & wxSIZE_USE_EXISTING) return; + if (sizeFlags & wxSIZE_USE_EXISTING) + return; relayout(); } @@ -250,7 +233,9 @@ void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) WXLRESULT TabCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - if (nMsg == WM_GETDLGCODE) { return DLGC_WANTARROWS; } + if (nMsg == WM_GETDLGCODE) { + return DLGC_WANTARROWS; + } return wxWindow::MSWWindowProc(nMsg, wParam, lParam); } @@ -259,15 +244,15 @@ WXLRESULT TabCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) void TabCtrl::relayout() { int offset = 10; - int item = sel + 1; - int first = 0; + int item = sel + 1; + int first = 0; for (int i = 0; i < item; ++i) - offset += btns[i]->GetMinSize().x + TAB_BUTTON_SPACE * 2; + offset += btns[i]->GetMinSize().x + item_space * 2; if (item < btns.size()) - offset += btns[item]->GetMinSize().x + TAB_BUTTON_SPACE * 2; - int width = GetSize().x; + offset += btns[item]->GetMinSize().x + item_space * 2; + int width = GetSize().x; for (int i = 0; i < btns.size(); ++i) { - auto size = btns[i]->GetMinSize().x + TAB_BUTTON_SPACE * 2; + auto size = btns[i]->GetMinSize().x + item_space * 2; if (i < sel && offset > width) { sizer->Show(i * 2 + 1, false); sizer->Show(i * 2 + 2, false); @@ -288,23 +273,32 @@ void TabCtrl::relayout() sizer->GetItem(i * 2 + 2)->SetMinSize({0, 0}); } if (item >= btns.size()) - -- item; + --item; // Keep spacing 2 ~ 10 TAB_BUTTON_SPACE - int b = GetSize().x - offset - 10 - (item + 1 - first) * TAB_BUTTON_SPACE * 8; + int b = GetSize().x - offset - 10 - (item + 1 - first) * item_space * 8; sizer->GetItem(item * 2 + 2)->SetMinSize({b > 0 ? b : 0, 0}); Layout(); } -int TabCtrl::buttons_best_width() const +void TabCtrl::SetItemSpace(int space) +{ + if (space < 0 || space == item_space) + return; + item_space = space; + relayout(); + Refresh(); +} + +int TabCtrl::GetFullSize() const { // Mirrors relayout(): a 10px leading spacer plus every button's min width and spacing. int width = 10; - for (const Button *btn : btns) - width += btn->GetMinSize().x + TAB_BUTTON_SPACE * 2; + for (const Button* btn : btns) + width += btn->GetMinSize().x + item_space * 2; return width; } -void TabCtrl::buttonClicked(wxCommandEvent &event) +void TabCtrl::buttonClicked(wxCommandEvent& event) { SetFocus(); auto btn = event.GetEventObject(); @@ -312,7 +306,7 @@ void TabCtrl::buttonClicked(wxCommandEvent &event) SelectItem(iter == btns.end() ? -1 : iter - btns.begin()); } -void TabCtrl::keyDown(wxKeyEvent &event) +void TabCtrl::keyDown(wxKeyEvent& event) { switch (event.GetKeyCode()) { case WXK_UP: @@ -331,11 +325,13 @@ void TabCtrl::keyDown(wxKeyEvent &event) void TabCtrl::doRender(wxDC& dc) { wxSize size = GetSize(); - int states = state_handler.states(); - if (sel < 0) { return; } + int states = state_handler.states(); + if (sel < 0) { + return; + } - auto x1 = btns[sel]->GetPosition().x; - auto x2 = x1 + btns[sel]->GetSize().x; + auto x1 = btns[sel]->GetPosition().x; + auto x2 = x1 + btns[sel]->GetSize().x; const int BS2 = (1 + border_width) / 2; #if 0 const int BS = border_width / 2; diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index e6a990243e..0d3606aca7 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -3,33 +3,30 @@ #include "Button.hpp" -wxDECLARE_EVENT( wxEVT_TAB_SEL_CHANGING, wxCommandEvent ); -wxDECLARE_EVENT( wxEVT_TAB_SEL_CHANGED, wxCommandEvent ); +wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGING, wxCommandEvent); +wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGED, wxCommandEvent); class TabCtrl : public StaticBox { std::vector btns; wxImageList* images = nullptr; - wxBoxSizer * sizer = nullptr; + wxBoxSizer* sizer = nullptr; int sel = -1; wxFont bold; + int item_space = 2; // space around each button, both sides (SetItemSpace) public: - TabCtrl(wxWindow * parent, - wxWindowID id, - const wxPoint & pos = wxDefaultPosition, - const wxSize & size = wxDefaultSize, - long style = 0); + TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); ~TabCtrl(); public: - virtual bool SetFont(wxFont const & font) override; + virtual bool SetFont(wxFont const& font) override; public: - int AppendItem(const wxString &item, int image = -1, int selImage = -1, void *clientData = nullptr); - int AppendItem(const wxString &item, const wxBitmap& bitmap, void *clientData = nullptr); + int AppendItem(const wxString& item, int image = -1, int selImage = -1, void* clientData = nullptr); + int AppendItem(const wxString& item, const wxBitmap& bitmap, void* clientData = nullptr); bool DeleteItem(int item); @@ -37,7 +34,7 @@ public: unsigned int GetCount() const; - int GetSelection() const; + int GetSelection() const; void SelectItem(int item); @@ -46,16 +43,16 @@ public: virtual void Rescale(); wxString GetItemText(unsigned int item) const; - void SetItemText(unsigned int item, wxString const &value); - void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); + void SetItemText(unsigned int item, wxString const& value); + void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); - bool GetItemBold(unsigned int item) const; - void SetItemBold(unsigned int item, bool bold); + bool GetItemBold(unsigned int item) const; + void SetItemBold(unsigned int item, bool bold); - void* GetItemData(unsigned int item) const; - void SetItemData(unsigned int item, void *clientData); - - void AssignImageList(wxImageList *imageList); + void* GetItemData(unsigned int item) const; + void SetItemData(unsigned int item, void* clientData); + + void AssignImageList(wxImageList* imageList); void SetItemTextColour(unsigned int item, const StateColor& col); @@ -64,8 +61,11 @@ public: int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; - // Width of the tab strip that keeps every button visible (used to size the Publish dialog). - int buttons_best_width() const; + // Extra space around each tab button (in px on both sides). Defaults to the control-wide + // standard; call before appending items so every button picks it up. + void SetItemSpace(int space); + + int GetFullSize() const; private: virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO) override; @@ -76,10 +76,10 @@ private: void relayout(); - void buttonClicked(wxCommandEvent & event); - void keyDown(wxKeyEvent &event); + void buttonClicked(wxCommandEvent& event); + void keyDown(wxKeyEvent& event); - void doRender(wxDC & dc) override; + void doRender(wxDC& dc) override; // some useful events bool sendTabCtrlEvent(bool changing = false); diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index a459bfa62d..37147b93b8 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -1024,3 +1024,55 @@ SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { } } } + +// A published mixed filament serializes its whole definition (components, ratios, gradient) +// masked to the author's slot: the mix slot's values survive, the non-published slots reset to +// their defaults, so a partial publish never leaks another slot's mix data. +SCENARIO("Published mixed-filament keys are masked to the author's slot", "[3mf]") { + GIVEN("a full print configuration with three slots, one of them mixed") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + full_cfg.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + full_cfg.opt("filament_colour")->values = { "#111111", "#222222", "#333333" }; + full_cfg.opt("filament_is_mixed")->values = { 0, 0, 1 }; + full_cfg.opt("filament_mixed_components")->values = { "", "", "1,2" }; + full_cfg.opt("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + full_cfg.opt("filament_mixed_gradient")->values = { 0, 0, 1 }; + full_cfg.opt("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + full_cfg.opt("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + full_cfg.opt("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + + PublishedMaterialEntry mix_entry; + mix_entry.slot = 2; + mix_entry.keys = { + "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" + }; + + WHEN("filtering with a mixed entry for slot 2") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { mix_entry }); + + THEN("the author's mixed slot keeps its definition") { + REQUIRE(filtered_cfg.option("filament_is_mixed") != nullptr); + REQUIRE(filtered_cfg.opt("filament_is_mixed")->values == std::vector{ 0, 0, 1 }); + const auto& components = filtered_cfg.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + CHECK(filtered_cfg.opt("filament_mixed_sublayer_ratios")->values[2] == "0.6,0.4"); + CHECK(filtered_cfg.opt("filament_mixed_gradient_curve")->values[2] == "0,0.1|1,0.9"); + CHECK(filtered_cfg.opt("filament_mixed_gradient")->values[2]); + CHECK(filtered_cfg.opt("filament_mixed_gradient_per_part")->values[2]); + } + THEN("the non-published slots are masked to their defaults") { + CHECK(filtered_cfg.opt("filament_mixed_components")->values[0] == ""); + CHECK(filtered_cfg.opt("filament_mixed_components")->values[1] == ""); + CHECK(filtered_cfg.opt("filament_is_mixed")->values[0] == 0); + CHECK(filtered_cfg.opt("filament_is_mixed")->values[1] == 0); + } + THEN("the identity keys stay present") { + REQUIRE(filtered_cfg.option("filament_colour") != nullptr); + } + } + } +} + diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 01abba75bf..d4a1e04e0c 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -2545,3 +2545,252 @@ TEST_CASE("Published 3MF applies per-extruder printer keys across extruder-count CHECK(pub.skipped_keys.empty()); } } + +// A published mixed filament serializes its definition (components, ratios, gradient) into the +// receiver's project_config - the project-level parallel arrays, not a filament preset. The +// mix's own blended colour is carried as publish_color so the receiver renders the swatch. +TEST_CASE("Published 3MF applies a mixed filament definition onto the receiver's project config", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Three author slots: two physical PLA/PETG plus one virtual mixed slot (index 2) + // blending slots 1 and 2 at 60/40 with a gradient. + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFT99", "GFL99" }; + // The mixed slot's definition. These keys are project-level arrays in the full config; + // on export they are masked so only the published slot's entry survives. + config.opt("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt("filament_mixed_components")->values = { "", "", "1,2" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + config.opt("filament_mixed_gradient")->values = { 0, 0, 1 }; + config.opt("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + config.opt("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + config.opt("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + return config; + }; + + // A receiver that already carries the mix slot at index 2 (e.g. a two-physical-plus-one-mix + // project with the same layout). + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + bundle.filament_presets = { "My PLA", "My PETG", "My PLA" }; + + // Grow the receiver's project arrays to 3 slots first, as set_num_filaments would. + bundle.set_num_filaments(3); + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition landed in project_config's parallel arrays at the author slot. + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + const auto &ratios = bundle.project_config.opt("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 3); + CHECK(ratios[2] == "0.6,0.4"); + const auto &gradient = bundle.project_config.opt("filament_mixed_gradient")->values; + CHECK(gradient[2]); + const auto &range = bundle.project_config.opt("filament_mixed_gradient_range")->values; + CHECK(range[2] == "0.9,0.1"); + const auto &curve = bundle.project_config.opt("filament_mixed_gradient_curve")->values; + CHECK(curve[2] == "0,0.1|1,0.9"); + const auto &per_part = bundle.project_config.opt("filament_mixed_gradient_per_part")->values; + CHECK(per_part[2]); + // The mix's blended colour crossed into project_config for the swatch. + const auto &colour = bundle.project_config.opt("filament_colour")->values; + REQUIRE(colour.size() == 3); + CHECK(colour[2] == "#800080"); + // The other slots were not overwritten by the mask. + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + // Nothing skipped: every serialized mixed key was applied. + CHECK(pub.skipped_keys.empty()); + } + + // A receiver with fewer slots: the slot is grown and seeded before the definition applies. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + PublishedMaterialEntry mix; + mix.slot = 2; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + CHECK(pub.skipped_keys.empty()); + } +} + +// A published mixed filament whose definition cannot be applied is reported as skipped instead +// of aborting the load: the entry lists a mixed key that the file's payload does not carry. +TEST_CASE("Published 3MF reports an unappliable mixed filament definition as skipped", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + // Two author slots (so slot 1 is in range) but the payload omits the mixed arrays: the + // entry lists them, the file config does not. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75 }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + config.opt("filament_type")->values = { "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic" }; + + PublishedMaterialEntry mix; + mix.slot = 1; + mix.keys = { "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grows to two slots; the missing payload keys are reported as skipped rather + // than dropped silently (material_label is empty for this entry). + REQUIRE(bundle.filament_presets.size() == 2); + CHECK(contains_key(pub.skipped_keys, "material: (filament_mixed_components)")); + CHECK(contains_key(pub.skipped_keys, "material: (filament_mixed_sublayer_ratios)")); +} + +// A single-extruder receiver collapses the author's per-extruder printer slots onto its single +// slot: the first serialized variant of a base key is applied, the remaining variants of that +// base key are reported as skipped. +TEST_CASE("Published 3MF collapses a multi-extruder publish onto a single-extruder receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + // Author has two extruders. + config.opt("retraction_length")->values = { 0.6, 0.9 }; + config.opt("retraction_speed")->values = { 30.0, 40.0 }; + Preset::normalize(config); + return config; + }; + + // Both extruders published: the first serialized variant (#0, left) lands on the receiver's + // single slot; the second variant (#1) is reported as skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; + bundle.printers.get_edited_preset().config.opt("retraction_speed")->values = { 25.0 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1", "retraction_speed#0", "retraction_speed#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.6 }); + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_speed")->values, { 30.0 }); + CHECK(contains_key(pub.skipped_keys, "retraction_length#1")); + CHECK(contains_key(pub.skipped_keys, "retraction_speed#1")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_length#0")); + CHECK_FALSE(contains_key(pub.skipped_keys, "retraction_speed#0")); + } + + // Only the second extruder published: the single-extruder receiver still applies it (the + // author's "right" is the only serialized slot) and reports nothing skipped. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.9 }); + CHECK(pub.skipped_keys.empty()); + } +} + +// A multi-extruder "similar setup" receiver overrides each published extruder slot element-wise +// (no collapsing): each '#N' variant applies to the matching receiver slot, out-of-range ones are +// reported as skipped. +TEST_CASE("Published 3MF overrides each extruder slot on a similar multi-extruder receiver", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000", "#00FF00" }; + // Author has two extruders. + config.opt("retraction_length")->values = { 0.6, 0.9 }; + Preset::normalize(config); + return config; + }; + + // Receiver with two extruders: both published slots override element-wise. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8, 0.8 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.6, 0.9 }); + CHECK(pub.skipped_keys.empty()); + } + + // Receiver with three extruders: slots 0 and 1 override, slot 2 keeps its own value. + { + PresetBundle bundle; + bundle.printers.get_edited_preset().config.opt("retraction_length")->values = { 0.8, 0.8, 0.7 }; + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "retraction_length#0", "retraction_length#1" }; + DynamicPrintConfig config = make_file_config(); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.printers.get_edited_preset().config.opt("retraction_length")->values, { 0.6, 0.9, 0.7 }); + CHECK(pub.skipped_keys.empty()); + } +} + From 23b98e2ca56ccd0adb0bca2d12a5a5ee503a5c16 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Thu, 27 Aug 2026 17:04:27 +0800 Subject: [PATCH 030/162] Initial commit for warning popup when required filaments are not selected for mixed filaments --- src/slic3r/GUI/PublishSettingsDialog.cpp | 66 +++++++++++++++++++++++- src/slic3r/GUI/PublishSettingsDialog.hpp | 5 ++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 262fdbe356..be28ae7499 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -416,7 +416,24 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { - // Publish is always allowed: no settings selected means no settings override. + // Publish is always allowed: no settings selected means no settings override. Warn only + // when an enabled mixed filament would ship without the identity of one of its + // components; "Proceed" accepts that and publishes anyway. + if (const std::vector missing = unpublished_mixed_components(); !missing.empty()) { + wxString missing_list; + for (size_t i = 0; i < missing.size(); ++i) { + if (i > 0) + missing_list += ", "; + missing_list += wxString::Format(_L("Filament %d"), int(missing[i] + 1)); + } + const wxString msg = _L("The following filaments are used by published mixed filaments but will not carry their material identity:") + + wxString(" ") + missing_list; + MessageDialog warn(this, msg, _L("Warning"), wxICON_WARNING); + warn.AddButton(wxID_CANCEL, _L("Cancel"), true); // safe choice gets the focus + warn.AddButton(wxID_OK, _L("Proceed"), false); + if (warn.ShowModal() != wxID_OK) + return; // Cancel: dismiss the warning and stay in this dialog + } EndModal(wxID_OK); }); dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); @@ -1695,6 +1712,53 @@ std::vector PublishSettingsDialog::GetPublishedKeys() const return out; } +std::vector PublishSettingsDialog::unpublished_mixed_components() const +{ + std::set missing; + for (const Category& cat : m_categories) { + if (!cat.is_mixed || cat.section != Section::Material) + continue; + // Only enabled mixed slots depend on their components being published. + if (cat.enable_check == nullptr || !cat.enable_check->GetValue()) + continue; + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + // Components are 1-based physical filament indices. + for (const unsigned int component : mixed_slot_components(full, cat.filament_slot)) { + const size_t component_slot = size_t(component) - 1; + // Find the component slot's material category (one exists per physical slot). + const Category* comp_cat = nullptr; + for (const Category& other : m_categories) { + if (other.section == Section::Material && !other.is_mixed && other.filament_slot == component_slot) { + comp_cat = &other; + break; + } + } + if (comp_cat == nullptr || comp_cat->enable_check == nullptr) + continue; + // Missing when the component's "Enable" is off, or it is enabled with neither + // "Full Publish" nor the "Type" requirement row checked. Colour never counts: + // the receiver renders the mix from its own components' colours. + if (!comp_cat->enable_check->GetValue()) { + missing.insert(component_slot); + continue; + } + if (comp_cat->full_check != nullptr && comp_cat->full_check->GetValue()) + continue; + bool type_checked = false; + for (const size_t r : comp_cat->rows) { + const Row& row = m_rows[r]; + if (row.kind == RowKind::Type && row.check->GetValue()) { + type_checked = true; + break; + } + } + if (!type_checked) + missing.insert(component_slot); + } + } + return std::vector(missing.begin(), missing.end()); +} + std::vector PublishSettingsDialog::GetPublishedMaterialKeys() const { std::vector out; diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index e00bec37fd..60c33e5a2d 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -187,6 +187,11 @@ private: // "Enable" toggled on a material slot: reveals/hides everything below the header and, for a // mixed slot, auto-selects its component filaments' "Enable" + "Full Publish" toggles. void on_enable_toggle(size_t category_index); + // 0-based material slots required by enabled mixed-filament slots that would ship without + // their identity: "Enable" not checked, or enabled with neither "Full Publish" nor the + // "Type" requirement row checked. Colour is deliberately ignored (the receiver renders the + // mix from its own components' colours). Sorted, deduplicated. + std::vector unpublished_mixed_components() const; // Read-only visualization of a mixed slot's definition (a stacked ratio bar, or the // Material Ratio vs Model Height graph for a gradient), inserted above the info hint // inside the category's scroll area. From 28b325805bf21c9a494040adeccbc10053a121d6 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 28 Aug 2026 10:37:54 +0800 Subject: [PATCH 031/162] Fixed issues with remapping mixed filaments when importing published 3MF --- src/libslic3r/Model.cpp | 46 +++ src/libslic3r/Model.hpp | 11 + src/libslic3r/PresetBundle.cpp | 127 +++++++- src/libslic3r/PresetBundle.hpp | 6 + src/slic3r/GUI/Plater.cpp | 11 + .../libslic3r/test_preset_bundle_loading.cpp | 305 +++++++++++++++++- 6 files changed, 498 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 600c46e7f5..995302e220 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -3598,6 +3598,15 @@ void FacetsAnnotation::shift_states_above(const ModelVolume &mv, EnforcerBlocker this->set(selector); } +void FacetsAnnotation::remap_states(const ModelVolume &mv, const EnforcerBlockerStateMap &state_map) +{ + if (empty()) return; + TriangleSelector selector(mv.mesh()); + selector.deserialize(m_data, false); + selector.remap_triangle_state(state_map); + this->set(selector); +} + void FacetsAnnotation::set_enforcer_block_type_limit(const ModelVolume &mv, EnforcerBlockerType max_type, EnforcerBlockerType to_delete_filament, @@ -3862,6 +3871,43 @@ bool model_has_advanced_features(const Model &model) return false; } +void remap_model_filament_slots(Model &model, const std::map &slot_relocations) +{ + if (slot_relocations.empty()) + return; + + // Paint states and the object/volume "extruder" configs store one-based slot numbers + // (see Sidebar::on_action_add_filament's insertion remap for the same encoding). + std::map one_based_slots; + for (const auto &[from, to] : slot_relocations) + one_based_slots.emplace(from + 1, to + 1); + + EnforcerBlockerStateMap paint_state_map; + for (size_t state = 0; state < paint_state_map.size(); ++state) + paint_state_map[state] = EnforcerBlockerType(state); + for (const auto &[one_based_from, one_based_to] : one_based_slots) { + assert(one_based_from >= 0 && size_t(one_based_from) < paint_state_map.size()); + assert(one_based_to > 0 && size_t(one_based_to) < paint_state_map.size()); + paint_state_map[size_t(one_based_from)] = EnforcerBlockerType(one_based_to); + } + + auto remap_extruder_config = [&one_based_slots](ModelConfig &config) -> bool { + const auto it = config.has("extruder") ? one_based_slots.find(config.extruder()) : one_based_slots.end(); + if (it == one_based_slots.end()) + return false; + config.set("extruder", it->second); + return true; + }; + + for (ModelObject *object : model.objects) { + remap_extruder_config(object->config); + for (ModelVolume *volume : object->volumes) { + remap_extruder_config(volume->config); + volume->mmu_segmentation_facets.remap_states(*volume, paint_state_map); + } + } +} + #ifndef NDEBUG // Verify whether the IDs of Model / ModelObject / ModelVolume / ModelInstance / ModelMaterial are valid and unique. void check_model_ids_validity(const Model &model) diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 6834c7a59b..8da1340fa9 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -745,6 +745,10 @@ public: // Shift painted filament indices >= threshold by delta. Used when a physical filament is // inserted ahead of existing slots (mixed-color slots are kept at the end of the list). void shift_states_above(const ModelVolume &mv, EnforcerBlockerType threshold, int delta); + // Relabel painted filament indices according to state_map (old state value -> new state + // value; untouched states keep their identity). Used when published-3MF import relocates + // mixed-filament definitions onto new slot numbers. + void remap_states(const ModelVolume &mv, const EnforcerBlockerStateMap &state_map); indexed_triangle_set get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const; bool has_facets(const ModelVolume& mv, EnforcerBlockerType type) const; bool empty() const { return m_data.triangles_to_split.empty(); } @@ -1790,6 +1794,13 @@ bool model_has_multi_part_objects(const Model &model); // If the model has advanced features, then it cannot be processed in simple mode. bool model_has_advanced_features(const Model &model); +// Remap the model's filament-slot references after a published-3MF import relocated +// mixed-filament definitions onto new slot numbers: object/volume "extruder" configs and +// multi-material color-painting states (paint state stores the one-based slot number). +// slot_relocations maps the author's zero-based slot number to its final zero-based slot; +// entries are applied simultaneously (no chained lookups), untouched slots keep everything. +void remap_model_filament_slots(Model &model, const std::map &slot_relocations); + #ifndef NDEBUG // Verify whether the IDs of Model / ModelObject / ModelVolume / ModelInstance / ModelMaterial are valid and unique. void check_model_ids_validity(const Model &model); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 855aea9e0c..b6b816b587 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -14,6 +14,7 @@ #include "Utils.hpp" #include "LocalesUtils.hpp" #include "Model.hpp" +#include "TriangleSelector.hpp" #include "libslic3r_version.h" #include @@ -4871,6 +4872,49 @@ static std::map> filament_preset {{"Bambu PETG HF @BBL H2D 0.6 nozzle", "Bambu PETG HF @BBL H2D 0.8 nozzle"}, {"Bambu ASA @BBL H2D 0.6 nozzle", "Bambu ASA @BBL H2D 0.8 nozzle"}}}}; +// Relocate the per-slot cells of one mixed-filament project vector inside the imported +// config, applying every authored-slot -> destination move at once. Each move reads its +// source cell from a frozen snapshot of the config's current cells, so relocations never +// cross-contaminate when an earlier destination overlaps a later source (adjacent published +// tail mixes relocate onto consecutive slots). Cells the snapshot lacks degrade to +// empty/false defaults - the missing-data handling in the material pass reports them +// downstream. Left-behind source cells stay as-is: nothing else consumes the imported config +// at those indices in published mode. +static void apply_mixed_config_relocations(DynamicPrintConfig& config, + const std::string& key, + const std::vector>& moves) +{ + ConfigOption* opt = config.optptr(key); + if (opt == nullptr || moves.empty()) + return; + std::unique_ptr snapshot(opt->clone()); + switch (opt->type()) { + case coBools: { + auto* live = static_cast(opt); + const auto* frozen = static_cast(snapshot.get()); + for (const auto [from, to] : moves) { + const unsigned char cell = from < frozen->values.size() ? frozen->values[from] : 0; + if (live->values.size() <= to) + live->values.resize(to + 1, 0); + live->values[to] = cell; + } + break; + } + case coStrings: { + auto* live = static_cast(opt); + const auto* frozen = static_cast(snapshot.get()); + for (const auto [from, to] : moves) { + const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); + if (live->values.size() <= to) + live->values.resize(to + 1, std::string{}); + live->values[to] = cell; + } + break; + } + default: break; + } +} + // convert the old filament preset to new one after split static void convert_filament_preset_name(std::string& machine_name, std::string& filament_name) { @@ -5379,12 +5423,87 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, if (entry.slot >= 0) grow_target = std::max(grow_target, size_t(entry.slot) + 1); } + // Mixed-filament definitions live in project-level virtual slots, so applying one + // positionally onto a receiver slot that holds a real, physical filament would + // silently convert hardware-backed state into a virtual mix. Compute each mixed + // entry's destination before anything consumes entry.slot (growth, seeding, + // de-aliasing, the overlay below): + // - a definition landing on a receiver slot that already carries a mixed + // definition keeps its place (a like-for-like override of a virtual slot); + // - everything else goes through one monotone append counter preserving author + // order: dest = max(authored, next_free). With a receiver shorter than the + // publish this keeps the authored positions intact; past them (or around a + // collision with a real filament) the mixes pack onto consecutive fresh slots + // AFTER every positional (real-filament) territory. The definition's cells are + // shifted inside the file-side per-slot mixed arrays so they stay readable + // from the new index. No existing slot changes meaning. + // - destinations are also capped: appends past the extruder limit are dropped + // and reported instead of being forced onto a physical filament. + const std::set& mixed_definitions = publish_mixed_keys(); + auto is_mixed_definition = [&mixed_definitions](const PublishedMaterialEntry& entry) { + return std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { + return mixed_definitions.count(publish_base_key(key)) != 0; + }); + }; + size_t next_free_slot = this->filament_presets.size(); + bool any_mixed_relocated = false; + // All authored-slot -> destination moves decided by this pass, applied to the + // incoming config in one batched snapshot step below (an earlier move's + // destination can overlap a later move's source: adjacent tail mixes relocate + // onto consecutive slots, so incremental in-place shifts would overwrite a + // definition that has not been moved yet). + std::vector> mixed_moves; + for (auto entry_it = published_config->material_keys.begin(); entry_it != published_config->material_keys.end();) { + PublishedMaterialEntry& entry = *entry_it; + if (entry.slot < 0 || !is_mixed_definition(entry) || + // Like-for-like override of a virtual receiver slot (bounds-checked). + this->is_mixed_filament(size_t(entry.slot))) { + ++entry_it; + continue; + } + if (std::max(size_t(entry.slot), next_free_slot) >= size_t(EnforcerBlockerType::ExtruderMax)) { + // No free virtual slot left: report instead of destroying a real filament. + const std::string material_label = !entry.filament_id.empty() ? entry.filament_id : + !entry.publish_type_value.empty() ? entry.publish_type_value : + entry.filament_type; + published_config->skipped_keys.emplace_back("material:" + material_label + + " (mixed filament definition: filament slot limit reached)"); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot + << " could not be placed: all " << next_free_slot << " slots exhausted"; + entry_it = published_config->material_keys.erase(entry_it); + continue; + } + const int authored_slot = entry.slot; + const int dest_slot = int(std::max(size_t(authored_slot), next_free_slot)); + next_free_slot = size_t(dest_slot) + 1; + if (dest_slot == authored_slot) + // Uncontended fresh tail slot: the definition is already readable there. + ++entry_it; + else { + entry.slot = dest_slot; + any_mixed_relocated = true; + mixed_moves.emplace_back(size_t(authored_slot), size_t(entry.slot)); + published_config->mixed_slot_relocations.emplace(authored_slot, entry.slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(authored_slot) + " -> slot " + + std::to_string(entry.slot) + + ": mixed filament relocated (would have replaced a physical filament)"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated mixed filament slot " << authored_slot + << " -> " << entry.slot; + ++entry_it; + } + } + if (!mixed_moves.empty()) + for (const std::string& mixed_key : mixed_definitions) + apply_mixed_config_relocations(config, mixed_key, mixed_moves); if (has_published_entries) { // Defensive cap: growth never exceeds the file's own filament count. The // receiver's current slot count is a floor: neither the preset list nor the // project vectors are ever shrunk, even when the file carries fewer filaments - // than the receiver has slots. - const size_t target_slots = std::max(this->filament_presets.size(), std::min(grow_target, num_filaments)); + // than the receiver has slots. Relocated mixed entries legitimately land past + // the file's own slot count (virtual slots consume no nozzle or tray), so + // their destinations lift the ceiling explicitly. + const size_t target_slots = std::max({this->filament_presets.size(), std::min(grow_target, num_filaments), + any_mixed_relocated ? next_free_slot : size_t(0)}); // Slots carrying published content, steering the initial preset selection of // newly grown slots. std::set published_slots; @@ -5999,9 +6118,7 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // A mixed-definition entry carries the mix's blended colour for the // swatch only: never write it into the slot's (possibly shared) preset // config, only into the project-level colour arrays. - const bool is_mixed_entry = std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { - return publish_mixed_keys().count(publish_base_key(key)) != 0; - }); + const bool is_mixed_entry = is_mixed_definition(entry); if (!is_mixed_entry && recv != nullptr) { // Create the key when the target preset lacks it: the colour is a // requirement, not an override. diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 67ff28b81e..c85b96a92a 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -8,6 +8,7 @@ #include "enum_bitmask.hpp" #include +#include #include #include #include @@ -186,6 +187,11 @@ struct PublishedConfig // Human-readable notices of the slot material replacements performed while loading a // published project, for the load notification. std::vector material_replacements; + // Mixed-filament entries that had to be moved off their authored slot on load (a real, + // physical filament occupied it): maps the author's zero-based slot number to its final + // zero-based slot. Consumers (e.g. model extruder/color-painting remapping) use this to + // keep geometry references pointing at the relocated definitions. + std::map mixed_slot_relocations; }; // Bundle of Print + Filament + Printer presets. diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fee75dee67..3cadcae4b9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9053,6 +9053,17 @@ std::vector Plater::priv::load_files(const std::vector& input_ preset_bundle->load_config_model(filename.string(), std::move(config), file_version, &published_config); + // Mixed-filament definitions that collided with one of the + // receiver's real slots were relocated during the preset load. + // Re-point the freshly parsed model's extruder references and + // color painting from the author's slot numbers to where each + // definition landed, so volumes colored with a mix follow it. + // Runs before the objects are handed over to the plater below. + if (load_model && !published_config.mixed_slot_relocations.empty()) + Slic3r::remap_model_filament_slots(model, published_config.mixed_slot_relocations); + + // BBS: notify the user about published settings that could not be applied. + // BBS: notify the user about published settings that could not be applied. if (!published_config.skipped_keys.empty()) { NotificationManager* notify_manager = q->get_notification_manager(); diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 53a40764d5..931f9e96c3 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -5,6 +5,8 @@ #include "libslic3r/PresetBundle.hpp" #include "libslic3r/AppConfig.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" #include "test_utils.hpp" @@ -2577,8 +2579,9 @@ TEST_CASE("Published 3MF applies a mixed filament definition onto the receiver's return config; }; - // A receiver that already carries the mix slot at index 2 (e.g. a two-physical-plus-one-mix - // project with the same layout). + // A receiver that already carries the mix slot at index 2 as an actual mixed slot (e.g. a + // two-physical-plus-one-mix project with the same layout): the incoming definition is a + // like-for-like override of the virtual slot and applies in place without relocation. { PresetBundle bundle; Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); @@ -2587,8 +2590,12 @@ TEST_CASE("Published 3MF applies a mixed filament definition onto the receiver's petg.config.opt_string("filament_type", 0u) = "PETG"; bundle.filament_presets = { "My PLA", "My PETG", "My PLA" }; - // Grow the receiver's project arrays to 3 slots first, as set_num_filaments would. + // Grow the receiver's project arrays to 3 slots first, as set_num_filaments would, + // then mark the third slot as the receiver's own mixed filament. bundle.set_num_filaments(3); + bundle.project_config.opt("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2] = "0.5,0.5"; PublishedMaterialEntry mix; mix.filament_type = "PLA"; @@ -2636,6 +2643,8 @@ TEST_CASE("Published 3MF applies a mixed filament definition onto the receiver's CHECK_FALSE(is_mixed[1]); // Nothing skipped: every serialized mixed key was applied. CHECK(pub.skipped_keys.empty()); + // Like-for-like override: no slot was relocated. + CHECK(pub.material_replacements.empty()); } // A receiver with fewer slots: the slot is grown and seeded before the definition applies. @@ -2701,6 +2710,228 @@ TEST_CASE("Published 3MF reports an unappliable mixed filament definition as ski CHECK(contains_key(pub.skipped_keys, "material: (filament_mixed_sublayer_ratios)")); } +// A published mixed filament must never convert one of the receiver's real, physical slots +// into a virtual mix: definitions that collide with a physical slot are relocated past every +// positional (real-filament) destination, while ones colliding with an existing mixed slot +// override it in place. +TEST_CASE("Published 3MF relocates a mixed filament instead of overwriting a physical slot", "[Preset][Bundle][Published]") +{ + // An author project with slots whose last slot is a mixed filament. + auto make_file_config = [](size_t num_author_slots, size_t num_tail_mixes = 1) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + std::vector diameters(num_author_slots, 1.75); + std::vector self_index; + std::vector variants; + std::vector types; + for (size_t i = 0; i < num_author_slots; ++i) { + self_index.push_back(int(i + 1)); + variants.emplace_back("Direct Drive Standard"); + types.push_back(i % 2 == 0 ? "PLA" : "PETG"); + } + config.opt("filament_diameter")->values = diameters; + config.opt("filament_self_index")->values = self_index; + config.opt("filament_extruder_variant")->values = variants; + config.opt("filament_colour")->values = { "#FF0000", "#00AA00", "#0000FF", "#FFFF00", "#800080" }; + config.opt("filament_colour")->values.resize(num_author_slots, "#808080"); + config.opt("filament_type")->values = types; + config.opt("filament_vendor")->values.assign(num_author_slots, "Generic"); + config.opt("filament_ids")->values.resize(num_author_slots); + // The last author slots are mixed ones (components differ per slot so + // the definitions are distinguishable after relocation). + const size_t first_mix_slot = num_author_slots - num_tail_mixes; + config.opt("filament_is_mixed")->values.assign(num_author_slots, 0); + config.opt("filament_mixed_components")->values.assign(num_author_slots, ""); + config.opt("filament_mixed_sublayer_ratios")->values.assign(num_author_slots, ""); + for (size_t i = first_mix_slot; i < num_author_slots; ++i) { + config.opt("filament_is_mixed")->values[i] = 1; + config.opt("filament_mixed_components")->values[i] = + i % 2 == 0 ? std::string("1,2") : std::string("1,3"); + config.opt("filament_mixed_sublayer_ratios")->values[i] = + i % 2 == 0 ? std::string("0.6,0.4") : std::string("0.3,0.7"); + } + return config; + }; + + // The reported bug: an author publishes with physical filaments on slots 1-2 and a mixed + // filament on slot 5; the receiver runs five real filaments of his own. Slot 5 must stay + // untouched and the mix lands as a newly appended virtual slot 6. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector receiver_colours = + bundle.project_config.opt("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.slot = 4; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew by exactly one extra virtual slot. + REQUIRE(bundle.filament_presets.size() == 6); + // All five physical slots kept their meaning: no mixed flag, untouched names/colours. + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 6); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK_FALSE(is_mixed[2]); + CHECK_FALSE(is_mixed[3]); + CHECK_FALSE(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt("filament_colour")->values.begin())); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[4] == "My PLA"); + // The definition itself is readable at the new index. + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 6); + CHECK(components[5] == "1,2"); + const auto &ratios = bundle.project_config.opt("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 6); + CHECK(ratios[5] == "0.6,0.4"); + // The blended colour seeds the swatch of the new slot only. + const auto &colour = bundle.project_config.opt("filament_colour")->values; + REQUIRE(colour.size() == 6); + CHECK(colour[5] == "#800080"); + // The relocation is surfaced to the user through the post-import notice (the de-alias + // pass may contribute further messages, so presence is asserted, not the count). + bool relocated_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 4 -> slot 5") != std::string::npos) + relocated_reported = true; + CHECK(relocated_reported); + CHECK(pub.skipped_keys.empty()); + } + + // A definition colliding with the receiver's own mixed filament is overridden in place: + // nothing grows, nothing is reported as moved. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3); + bundle.project_config.opt("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2] = "0.9,0.1"; + + PublishedMaterialEntry mix; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(3); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2] == "1,2"); + const auto &ratios = bundle.project_config.opt("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 3); + CHECK(ratios[2] == "0.6,0.4"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); + } + + // Author publishes four physical filaments plus two mixed ones on slots 5 and 6; the + // receiver runs five real filaments. Both mixes relocate onto consecutive fresh slots, + // preserving their author order (slot 5 -> slot 6, slot 6 -> slot 7); no receiver slot is + // converted into a virtual mix. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector receiver_colours = + bundle.project_config.opt("filament_colour")->values; + + auto make_mix_entry = [](int authored_slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = authored_slot; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + return entry; + }; + PublishedMaterialEntry mix_a = make_mix_entry(4, "#800080"); + PublishedMaterialEntry mix_b = make_mix_entry(5, "#FF69B4"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix_a, mix_b }; + DynamicPrintConfig config = make_file_config(6, 2); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Two fresh virtual slots were appended. + REQUIRE(bundle.filament_presets.size() == 7); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 7); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[5]); + CHECK(is_mixed[6]); + // The definitions follow their author order. + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 7); + CHECK(components[5] == "1,2"); + CHECK(components[6] == "1,3"); + const auto &ratios = bundle.project_config.opt("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 7); + CHECK(ratios[5] == "0.6,0.4"); + CHECK(ratios[6] == "0.3,0.7"); + // The five real slots kept their colours; each mix's blended colour seeded its new slot. + const auto &colour = bundle.project_config.opt("filament_colour")->values; + REQUIRE(colour.size() == 7); + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), colour.begin())); + CHECK(colour[5] == "#800080"); + CHECK(colour[6] == "#FF69B4"); + // Both relocations are reported with the correct mapping. + bool a_reported = false, b_reported = false; + for (const std::string &message : pub.material_replacements) { + if (message.find("slot 4 -> slot 5") != std::string::npos) + a_reported = true; + if (message.find("slot 5 -> slot 6") != std::string::npos) + b_reported = true; + } + CHECK(a_reported); + CHECK(b_reported); + CHECK(pub.skipped_keys.empty()); + // The relocation table is exposed for the model-reference remapping. + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(4) == 5); + CHECK(pub.mixed_slot_relocations.at(5) == 6); + } +} + // A single-extruder receiver collapses the author's per-extruder printer slots onto its single // slot: the first serialized variant of a base key is applied, the remaining variants of that // base key are reported as skipped. @@ -2980,3 +3211,71 @@ TEST_CASE("Sizing down to the nozzle count plus mixes is what eats the mixed tai CHECK(bundle.project_config.option("filament_mixed_components")->values[5] == "1,2"); } } + +// After a published-3MF import relocated mixed-filament definitions, the freshly loaded +// model's slot references must follow: object/volume "extruder" configs and multi-material +// color-painting states (which store the one-based slot number) are re-pointed to where each +// definition landed; everything else keeps its state. +TEST_CASE("remap_model_filament_slots repoints extruder configs and color painting", "[Preset][Bundle][Published]") +{ + auto make_model = [] { + Model model; + ModelObject *object_a = model.add_object(); + object_a->name = "relocated mix"; + ModelVolume *vol_a = object_a->add_volume(make_cube(10., 10., 10.)); + vol_a->config.set_key_value("extruder", new ConfigOptionInt(5)); // author slot 5 (0-based 4) + // Author painted one facet with the mix (slot 5) and another with a physical (slot 2). + { + TriangleSelector selector(vol_a->mesh()); + selector.set_facet(0, EnforcerBlockerType(5)); + selector.set_facet(1, EnforcerBlockerType(2)); + vol_a->mmu_segmentation_facets.set_data(selector.serialize()); + } + // A second object that does not reference the relocated slot at all. Painted with a + // real, non-relocated state (NONE is never serialized: an unsplit triangle without a + // state is the unpainted default and is skipped by TriangleSelector::serialize()). + ModelObject *object_b = model.add_object(); + object_b->name = "untouched"; + object_b->config.set_key_value("extruder", new ConfigOptionInt(1)); + ModelVolume *vol_b = object_b->add_volume(make_cube(5., 5., 5.)); + vol_b->config.set_key_value("extruder", new ConfigOptionInt(2)); + { + TriangleSelector selector(vol_b->mesh()); + selector.set_facet(0, EnforcerBlockerType(2)); + vol_b->mmu_segmentation_facets.set_data(selector.serialize()); + } + return model; + }; + + const std::map relocations = {{4, 5}}; + + Model model = make_model(); + Slic3r::remap_model_filament_slots(model, relocations); + + const ModelVolume *vol_a = model.objects[0]->volumes.front(); + CHECK(vol_a->config.extruder() == 6); // author slot 5 -> final slot 6 + // Painted states follow: the mix facet moved 5 -> 6, the physical one is untouched. + REQUIRE(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(6))); + REQUIRE_FALSE(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(5))); + CHECK(TriangleSelector::has_facets(vol_a->mmu_segmentation_facets.get_data(), EnforcerBlockerType(2))); + + const ModelVolume *vol_b = model.objects[1]->volumes.front(); + CHECK(vol_b->config.extruder() == 2); + // The untouched volume's paint (a non-relocated state) survives as-is. + CHECK(TriangleSelector::has_facets(vol_b->mmu_segmentation_facets.get_data(), EnforcerBlockerType(2))); + + // The mapping is applied simultaneously: each entry reads the original slot number, so + // relocating onto another relocated-from slot number must not chase chains. With the + // 0-based relocations {3->4, 4->6} the 1-based config map is {4->5, 5->7}: a volume on + // 1-based slot 4 lands on 5 and does NOT continue to 7. + Model chained = make_model(); + chained.objects[0]->volumes.front()->config.set_key_value("extruder", new ConfigOptionInt(4)); + Slic3r::remap_model_filament_slots(chained, std::map{{3, 4}, {4, 6}}); + CHECK(chained.objects[0]->volumes.front()->config.extruder() == 5); + // The chained model's paint follows its own single-step mapping: painted state 5 -> 7, + // and nothing lands back on 5. + CHECK(TriangleSelector::has_facets(chained.objects[0]->volumes.front()->mmu_segmentation_facets.get_data(), + EnforcerBlockerType(7))); + CHECK_FALSE(TriangleSelector::has_facets(chained.objects[0]->volumes.front()->mmu_segmentation_facets.get_data(), + EnforcerBlockerType(5))); +} From 1c09ef14a55c60abd996e5ce3c269f75dbbdd6d6 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 28 Aug 2026 12:57:00 +0800 Subject: [PATCH 032/162] Update translations. Update warning messages to be more user friendly. Update gradient color chips in publish dialog --- localization/i18n/OrcaSlicer.pot | 153 ++++++++++++++++++- localization/i18n/ca/OrcaSlicer_ca.po | 153 ++++++++++++++++++- localization/i18n/cs/OrcaSlicer_cs.po | 153 ++++++++++++++++++- localization/i18n/de/OrcaSlicer_de.po | 153 ++++++++++++++++++- localization/i18n/en/OrcaSlicer_en.po | 153 ++++++++++++++++++- localization/i18n/es/OrcaSlicer_es.po | 153 ++++++++++++++++++- localization/i18n/eu/OrcaSlicer_eu.po | 153 ++++++++++++++++++- localization/i18n/fr/OrcaSlicer_fr.po | 153 ++++++++++++++++++- localization/i18n/hu/OrcaSlicer_hu.po | 153 ++++++++++++++++++- localization/i18n/it/OrcaSlicer_it.po | 153 ++++++++++++++++++- localization/i18n/ja/OrcaSlicer_ja.po | 153 ++++++++++++++++++- localization/i18n/ko/OrcaSlicer_ko.po | 153 ++++++++++++++++++- localization/i18n/lt/OrcaSlicer_lt.po | 153 ++++++++++++++++++- localization/i18n/nl/OrcaSlicer_nl.po | 153 ++++++++++++++++++- localization/i18n/pl/OrcaSlicer_pl.po | 153 ++++++++++++++++++- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 153 ++++++++++++++++++- localization/i18n/ru/OrcaSlicer_ru.po | 153 ++++++++++++++++++- localization/i18n/sv/OrcaSlicer_sv.po | 153 ++++++++++++++++++- localization/i18n/th/OrcaSlicer_th.po | 153 ++++++++++++++++++- localization/i18n/tr/OrcaSlicer_tr.po | 153 ++++++++++++++++++- localization/i18n/uk/OrcaSlicer_uk.po | 153 ++++++++++++++++++- localization/i18n/vi/OrcaSlicer_vi.po | 153 ++++++++++++++++++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 153 ++++++++++++++++++- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 153 ++++++++++++++++++- src/slic3r/GUI/PublishSettingsDialog.cpp | 159 ++++++++++++++++---- src/slic3r/GUI/PublishSettingsDialog.hpp | 19 ++- 26 files changed, 3796 insertions(+), 54 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index c1dc798ff3..b9da59451f 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2762,6 +2762,9 @@ msgstr "" msgid "Merge with" msgstr "" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "" @@ -3039,6 +3042,9 @@ msgstr "" msgid "Merge parts to an object" msgstr "" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "" @@ -7409,6 +7415,9 @@ msgstr "" msgid "The %s nozzle can not print %s." msgstr "" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, possible-boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7529,12 +7538,36 @@ msgstr "" msgid "Set filaments to use" msgstr "" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "" msgid "Pellets" msgstr "" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, possible-c-format, possible-boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "" @@ -7712,6 +7745,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "" @@ -7906,6 +7945,18 @@ msgstr "" msgid "Sync now" msgstr "" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "" @@ -9066,6 +9117,9 @@ msgstr "" msgid "First layer filament sequence" msgstr "" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "" @@ -9111,18 +9165,58 @@ msgstr "" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -11548,6 +11642,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" @@ -11584,6 +11681,9 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "" @@ -13289,6 +13389,48 @@ msgstr "" msgid "Support material is commonly used to print supports and support interfaces." msgstr "" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "" @@ -15872,6 +16014,12 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "" @@ -16899,6 +17047,9 @@ msgstr "" msgid "The supplied file couldn't be read because it's empty." msgstr "" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 7070c885be..74ed04532c 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -3015,6 +3015,9 @@ msgstr "Editar" msgid "Merge with" msgstr "Fusiona amb" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Elimina aquest filament" @@ -3316,6 +3319,9 @@ msgstr "Muntatge" msgid "Merge parts to an object" msgstr "Fusionar les peces en un objecte" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Afegir capes" @@ -7962,6 +7968,9 @@ msgstr "Personalitzar la placa actual" msgid "The %s nozzle can not print %s." msgstr "El broquet %s no pot imprimir %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "No es recomana barrejar %1% amb %2% en la impressió.\n" @@ -8087,6 +8096,21 @@ msgstr "Sincronitzar la llista de filaments des d'AMS" msgid "Set filaments to use" msgstr "Configurar els filaments a utilitzar" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Cercar placa, objecte i peça." @@ -8094,6 +8118,15 @@ msgstr "Cercar placa, objecte i peça." msgid "Pellets" msgstr "Pèl·lets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "En completar l'operació, el projecte %s es tancarà i es crearà un nou projecte." @@ -8287,6 +8320,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objecte de múltiples peces detectat" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Carregar aquests fitxers com un sol objecte amb diverses peces?\n" @@ -8500,6 +8539,18 @@ msgstr "" msgid "Sync now" msgstr "Sincronitza ara" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Podeu mantenir els perfils modificats al projecte nou o descartar-los" @@ -9803,6 +9854,9 @@ msgstr "Gerro en Espiral" msgid "First layer filament sequence" msgstr "Seqüència d'impressió de la primera capa" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Per Capa" @@ -9849,18 +9903,58 @@ msgstr "Anar a la pàgina web" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12503,6 +12597,9 @@ msgstr "Si tot i així voleu imprimir, podeu activar l'opció a Preferències / msgid "No extrusions under current settings." msgstr "No hi ha extrusions a la configuració actual." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "El mode suau de timelapse no està permès quan la seqüència \"Per objecte\" està habilitada." @@ -12539,6 +12636,9 @@ msgstr "Potser voleu reduir la mida del model o canviar la configuració d'impre msgid "Variable layer height is not supported with Organic supports." msgstr "Alçada de Capa Variable no és compatible amb suports Orgànics." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "És possible que els diferents diàmetres de broquet i els diferents diàmetres de filament no funcionin bé quan la torre principal està activada. És molt experimental, així que si us plau, procediu amb precaució." @@ -14610,6 +14710,48 @@ msgstr "Material de suport" msgid "Support material is commonly used to print supports and support interfaces." msgstr "El material de suport s'utilitza habitualment per imprimir interfície de suport i suport" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament imprimible" @@ -17520,6 +17662,12 @@ msgstr "" "\n" "L'establiment d'un valor en la quantitat de retractació abans de l'esborrat es realitzarà qualsevol retracció en excés abans de la neteja, sinó es realitzarà després." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La Torre de Purga es pot utilitzar per netejar els residus al broquet i estabilitzar la pressió de la cambra dins del broquet, per tal d'evitar defectes d'aparença en imprimir objectes." @@ -18611,6 +18759,9 @@ msgstr "La generació de malla del fitxer del model ha fallat o la forma no és msgid "The supplied file couldn't be read because it's empty." msgstr "El fitxer subministrat no s'ha pogut llegir perquè està buit" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Format de fitxer desconegut. El fitxer d'entrada ha de tenir extensió .stl, .obj, .amf( .xml )." diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 889b659a0b..28396811c5 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -2977,6 +2977,9 @@ msgstr "Upravit" msgid "Merge with" msgstr "Sloučit s" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Smazat tento filament" @@ -3279,6 +3282,9 @@ msgstr "Sestava" msgid "Merge parts to an object" msgstr "Sloučit části do objektu" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Přidat vrstvy" @@ -7927,6 +7933,9 @@ msgstr "Přizpůsobit aktuální desku" msgid "The %s nozzle can not print %s." msgstr "Tryska %s nemůže tisknout %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Míchání %1% s %2% při tisku není doporučeno.\n" @@ -8056,12 +8065,36 @@ msgstr "Synchronizovat seznam filamentů z AMS" msgid "Set filaments to use" msgstr "Nastavit používané filamenty" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Hledat desku, objekt a díl." msgid "Pellets" msgstr "Pelety" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Po dokončení operace bude projekt %s uzavřen a bude vytvořen nový projekt." @@ -8249,6 +8282,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Detekován vícedílný objekt" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Načíst tyto soubory jako jeden objekt s více částmi?\n" @@ -8459,6 +8498,18 @@ msgstr "" msgid "Sync now" msgstr "Synchronizovat nyní" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Upravené předvolby můžete ponechat v novém projektu nebo je zahodit" @@ -9751,6 +9802,9 @@ msgstr "Spirálová váza" msgid "First layer filament sequence" msgstr "Pořadí filamentů v první vrstvě" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Podle vrstvy" @@ -9797,18 +9851,58 @@ msgstr "Přejít na webovou stránku" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12484,6 +12578,9 @@ msgstr "Pokud chcete přesto tisknout, můžete povolit možnost v Nastavení / msgid "No extrusions under current settings." msgstr "Při aktuálním nastavení nejsou žádné extruze." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Plynulý režim časosběru není podporován, pokud je povoleno pořadí tisku „podle objektu“." @@ -12520,6 +12617,9 @@ msgstr "Možná budete chtít zmenšit velikost modelu nebo změnit aktuální n msgid "Variable layer height is not supported with Organic supports." msgstr "Proměnná výška vrstvy není podporována s organickými podporami." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Různé průměry trysek a filamentu nemusí správně fungovat, pokud je povolena základní věž. Jedná se o velmi experimentální funkci, proto pokračujte opatrně." @@ -14578,6 +14678,48 @@ msgstr "Podpůrný materiál" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Podpůrný materiál se běžně používá pro tisk podpěr a rozhraní podpěr." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Tisknutelný filament" @@ -17465,6 +17607,12 @@ msgstr "" "\n" "Nastavení hodnoty v parametru množství retrakce před očištěním níže provede případnou dodatečnou retrakci před očištěním, jinak bude provedena po něm." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Čistící věž lze použít k odstranění zbytků materiálu na trysce a ke stabilizaci tlaku v komoře trysky, aby se předešlo vizuálním vadám při tisku objektů." @@ -18538,6 +18686,9 @@ msgstr "Síťování modelového souboru selhalo nebo nebyl nalezen platný tvar msgid "The supplied file couldn't be read because it's empty." msgstr "Zadaný soubor nelze načíst, protože je prázdný." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo .amf(.xml)." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index fe17251f32..0e3fc99a39 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -2917,6 +2917,9 @@ msgstr "Bearbeiten" msgid "Merge with" msgstr "Zusammenführen mit" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Diesen Filament löschen" @@ -3216,6 +3219,9 @@ msgstr "Zusammenbau" msgid "Merge parts to an object" msgstr "Teile zu einem Objekt zusammenführen" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Schichten hinzufügen" @@ -7797,6 +7803,9 @@ msgstr "Aktuelle Platte anpassen" msgid "The %s nozzle can not print %s." msgstr "Die %s Düse kann %s nicht drucken." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Mischen von %1% mit %2% im Druck wird nicht empfohlen.\n" @@ -7922,6 +7931,21 @@ msgstr "Filamentliste von AMS synchronisieren" msgid "Set filaments to use" msgstr "Zu verwendende Filamente einstellen" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Suche Platte, Objekt und Teil." @@ -7929,6 +7953,15 @@ msgstr "Suche Platte, Objekt und Teil." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Nach Abschluss Ihrer Operation wird das %s-Projekt geschlossen und ein neues Projekt erstellt." @@ -8118,6 +8151,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Mehrteiliges Objekt erkannt" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Diese Dateien als ein einziges Objekt mit mehreren Teilen laden?\n" @@ -8331,6 +8370,18 @@ msgstr "" msgid "Sync now" msgstr "Jetzt synchronisieren" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + # AI Translated msgid "You can keep the modified presets for the new project or discard them" msgstr "Sie können die geänderten Profile für das neue Projekt beibehalten oder sie verwerfen" @@ -9586,6 +9637,9 @@ msgstr "Vasenmodus" msgid "First layer filament sequence" msgstr "Erste Filament-Schichtsequenz" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Nach Schicht" @@ -9631,18 +9685,58 @@ msgstr "Zu einer Website springen" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12223,6 +12317,9 @@ msgstr "Wenn Sie trotzdem drucken möchten, können Sie die Option in Einstellun msgid "No extrusions under current settings." msgstr "Keine Extrusion unter den aktuellen Einstellungen." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Der gewählte Zeitraffermodus wird nicht unterstützt, wenn die Sequenz \"nach Objekt\" aktiviert ist." @@ -12259,6 +12356,9 @@ msgstr "Sie möchten möglicherweise die Größe Ihres Modells reduzieren oder d msgid "Variable layer height is not supported with Organic supports." msgstr "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser funktionieren möglicherweise nicht gut, wenn der Reinigungsturm aktiviert ist. Es ist sehr experimentell, also gehen Sie bitte vorsichtig vor." @@ -14276,6 +14376,48 @@ msgstr "Stützmaterial" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Stützmaterial wird üblicherweise zum Drucken von Stützen und Stütz-Schnittstellen verwendet." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament druckbar" @@ -17108,6 +17250,12 @@ msgstr "" "\n" "Wenn ein Wert in der Einstellung \"Rückzugsmenge vor dem Wischen\" unten angegeben ist, wird ein überschüssiger Rückzug vor dem Wischen ausgeführt, ansonsten wird er danach ausgeführt." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Der Reinigungsturm kann verwendet werden, um Rückstände auf der Düse zu entfernen und den Kammerdruck im Inneren der Düse zu stabilisieren, um Erscheinungsdefekte beim Drucken von Objekten zu vermeiden." @@ -18178,6 +18326,9 @@ msgstr "Das Erstellen eines Netzes aus der Modelldatei ist fehlgeschlagen oder e msgid "The supplied file couldn't be read because it's empty." msgstr "Die angegebene Datei konnte nicht gelesen werden, weil sie leer ist." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj oder .amf(.xml) haben." diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 0da5e9d2b5..8a679894fa 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -2758,6 +2758,9 @@ msgstr "" msgid "Merge with" msgstr "" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "" @@ -3035,6 +3038,9 @@ msgstr "" msgid "Merge parts to an object" msgstr "" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "" @@ -7405,6 +7411,9 @@ msgstr "" msgid "The %s nozzle can not print %s." msgstr "" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7525,12 +7534,36 @@ msgstr "" msgid "Set filaments to use" msgstr "" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "" msgid "Pellets" msgstr "" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "" @@ -7708,6 +7741,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "" @@ -7902,6 +7941,18 @@ msgstr "" msgid "Sync now" msgstr "" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "" @@ -9062,6 +9113,9 @@ msgstr "" msgid "First layer filament sequence" msgstr "" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "" @@ -9107,18 +9161,58 @@ msgstr "" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -11544,6 +11638,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" @@ -11580,6 +11677,9 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "" @@ -13285,6 +13385,48 @@ msgstr "" msgid "Support material is commonly used to print supports and support interfaces." msgstr "" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "" @@ -15868,6 +16010,12 @@ msgid "" "Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after." msgstr "" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "" @@ -16895,6 +17043,9 @@ msgstr "" msgid "The supplied file couldn't be read because it's empty." msgstr "" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index ded492a284..8a435af73e 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -2832,6 +2832,9 @@ msgstr "Editar" msgid "Merge with" msgstr "Fusionar con" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Eliminar este filamento" @@ -3113,6 +3116,9 @@ msgstr "Ensamblaje" msgid "Merge parts to an object" msgstr "Fusionar piezas en un objeto" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "Añadir capas" @@ -7619,6 +7625,9 @@ msgstr "Personalizar cama actual" msgid "The %s nozzle can not print %s." msgstr "La boquilla %s no puede imprimir %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "No se recomienda mezclar %1% con %2% en la impresión.\n" @@ -7741,12 +7750,36 @@ msgstr "Sicronizar filamentos de la lista AMS" msgid "Set filaments to use" msgstr "Elegir filamentos para usar" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Buscar cama, objeto y parte." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Al completar la operación, el proyecto %s se cerrará y se creará un nuevo proyecto." @@ -7931,6 +7964,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objeto multipieza detectado" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "¿Cargar estos archivos como un objeto único con múltiples piezas?\n" @@ -8135,6 +8174,18 @@ msgstr "" msgid "Sync now" msgstr "Sincronizar ahora" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Puedes mantener los perfiles modificados en el nuevo proyecto o descartarlos" @@ -9361,6 +9412,9 @@ msgstr "Vaso en espiral" msgid "First layer filament sequence" msgstr "Secuencia de primera capa de filamento" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Por Capa" @@ -9406,18 +9460,58 @@ msgstr "Ir a la página web" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -11929,6 +12023,9 @@ msgstr "Si aún así quieres imprimir, puedes activar la opción en Preferencias msgid "No extrusions under current settings." msgstr "No hay extrusiones con los ajustes actuales." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Modo de timelapse suave no está soportado cuando la secuencia \"por objeto\" está activada." @@ -11965,6 +12062,9 @@ msgstr "Es posible que desee reducir el tamaño de su modelo o cambiar la config msgid "Variable layer height is not supported with Organic supports." msgstr "La altura de capa adaptativa no es compatible con los soportes orgánicos." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Diámetros de boquillas y diámetros de filamento diferentes pueden no funcionar correctamente cuando la torre de purga está activada. Esta función es experimental, así que proceda con cautela." @@ -13954,6 +14054,48 @@ msgstr "Material de soporte" msgid "Support material is commonly used to print supports and support interfaces." msgstr "El material de soporte se utiliza habitualmente para imprimir soportes y la interfaz de los soportes." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filamento imprimible" @@ -16753,6 +16895,12 @@ msgstr "" "\n" "Fijando un valor en la cantidad de retracción antes del purgado se realizará cualquier exceso de retracción antes del purgado, de lo contrario se realizará después." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar la presión de la recámara en el interior de la boquilla, con el fin de evitar defectos visuales al imprimir objetos." @@ -17809,6 +17957,9 @@ msgstr "La generación de la malla del archivo del modelo falló o no hay una fo msgid "The supplied file couldn't be read because it's empty." msgstr "No se ha podido leer el archivo proporcionado porque está vacío." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato de archivo desconocido: el archivo de entrada debe tener extensión .STL, .obj o .amf (.xml)." diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index e950ea3d2e..b0aadc66e4 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -2869,6 +2869,9 @@ msgstr "Editatu" msgid "Merge with" msgstr "Batu honekin" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Ezabatu filamentu hau" @@ -3150,6 +3153,9 @@ msgstr "Multzoa" msgid "Merge parts to an object" msgstr "Batu piezak objektu batean" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "Geruzak gehitu" @@ -7686,6 +7692,9 @@ msgstr "Pertsonalizatu uneko plaka" msgid "The %s nozzle can not print %s." msgstr "%s pitak ezin du %s inprimatu." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Ez da gomendatzen inprimatzean %1% eta %2% nahastea.\n" @@ -7808,12 +7817,36 @@ msgstr "Sinkronizatu filamentuen zerrenda AMSarekin" msgid "Set filaments to use" msgstr "Ezarri erabili beharreko filamentuak" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Bilatu plaka, objektua eta pieza." msgid "Pellets" msgstr "Pelletak" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Eragiketa amaitzean, %s proiektua itxi eta proiektu berri bat sortuko da." @@ -7998,6 +8031,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Pieza anitzeko objektua detektatu da" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Kargatu fitxategi hauek pieza anitzeko objektu bakar gisa?\n" @@ -8202,6 +8241,18 @@ msgstr "" msgid "Sync now" msgstr "Sinkronizatu orain" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Aldatutako aurrezarpenak proiektu berrirako gorde edo baztertu ditzakezu" @@ -9430,6 +9481,9 @@ msgstr "Espiral formako loreontzia" msgid "First layer filament sequence" msgstr "Lehen geruzako filamentuen sekuentzia" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Geruzaren arabera" @@ -9475,18 +9529,58 @@ msgstr "Joan web-orrira" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12032,6 +12126,9 @@ msgstr "Hala ere inprimatu nahi baduzu, aukera hau gaitu dezakezu: Hobespenak / msgid "No extrusions under current settings." msgstr "Uneko ezarpenekin ez dago estrusiorik." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Timelapsearen modu leuna ez da onartzen \"objektuka\" sekuentzia gaituta dagoenean." @@ -12068,6 +12165,9 @@ msgstr "Modeloaren tamaina txikitu edo uneko inprimatze-ezarpenak aldatu eta ber msgid "Variable layer height is not supported with Organic supports." msgstr "Geruza-altuera aldakorra ez da onartzen euskarri organikoekin." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Pitaren diametro eta filamentu-diametro desberdinek agian ez dute ondo funtzionatuko purgatze-dorrea gaituta dagoenean. Oso esperimentala da; jarraitu kontuz." @@ -14073,6 +14173,48 @@ msgstr "Euskarri-materiala" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Euskarri-materiala euskarriak eta euskarri-interfazeak inprimatzeko erabiltzen da normalean." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filamentua inprimagarria" @@ -16898,6 +17040,12 @@ msgstr "" "\n" "Beheko garbitu aurreko atzera-egite kantitatearen ezarpenean balio batezarriz gero, gehiegizko atzera-egitea garbiketa baino lehen egingo da; bestela, ondoren egingo da." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Purgatze-dorrea pitaren hondarrak garbitzeko eta pitaren barruko ganbera-presioa egonkortzeko erabil daiteke, objektuetan itxura-akatsak saihesteko." @@ -17956,6 +18104,9 @@ msgstr "Modelo-fitxategiaren sareztatzeak huts egin du edo ez dago baliozko form msgid "The supplied file couldn't be read because it's empty." msgstr "Emandako fitxategia ezin izan da irakurri hutsik dagoelako." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Fitxategi-formatu ezezaguna: sarrerako fitxategiak .stl, .obj edo .amf(.xml) luzapena izan behar du." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 5bd15b57cd..f0085ff16d 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -2896,6 +2896,9 @@ msgstr "Éditer" msgid "Merge with" msgstr "Fusionner avec" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Supprimer ce filament" @@ -3178,6 +3181,9 @@ msgstr "Assemblé" msgid "Merge parts to an object" msgstr "Fusionner les pièces en un objet" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "Ajouter des couches" @@ -7739,6 +7745,9 @@ msgstr "Personnaliser le plateau actuel" msgid "The %s nozzle can not print %s." msgstr "La buse %s ne peut pas imprimer %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Le mélange de %1% avec %2% lors de l'impression n'est pas recommandé.\n" @@ -7864,12 +7873,36 @@ msgstr "Synchroniser la liste des filaments depuis l'AMS" msgid "Set filaments to use" msgstr "Définir les filaments à utiliser" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Recherche de plaque, d'objet et de pièce." msgid "Pellets" msgstr "Granulés" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Une fois votre opération terminée, le projet %s sera fermé et un nouveau projet sera créé." @@ -8054,6 +8087,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objet en plusieurs pièces détecté" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Charger ces fichiers en tant qu'objet unique avec plusieurs parties ?\n" @@ -8258,6 +8297,18 @@ msgstr "" msgid "Sync now" msgstr "Synchroniser maintenant" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Vous pouvez conserver les préréglages modifiés dans le nouveau projet ou les supprimer" @@ -9500,6 +9551,9 @@ msgstr "Vase spirale" msgid "First layer filament sequence" msgstr "Séquence d’impression de la première couche" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Par Couche" @@ -9545,18 +9599,58 @@ msgstr "Ouvrir la page internet" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12130,6 +12224,9 @@ msgstr "Si vous souhaitez tout de même imprimer, vous pouvez activer l’option msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Le mode fluide du timelapse n'est pas pris en charge lorsque le mode d'impression « par objet » est activé." @@ -12166,6 +12263,9 @@ msgstr "Vous devez réduire la taille de votre modèle ou modifier les paramètr msgid "Variable layer height is not supported with Organic supports." msgstr "La hauteur de couche variable n’est pas prise en charge avec les supports organiques." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Différents diamètres de buses et de filaments peuvent ne pas fonctionner correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet très expérimental, il convient donc de procéder avec prudence." @@ -14175,6 +14275,48 @@ msgstr "Supports" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Le matériau de support est généralement utilisé pour imprimer le support et les interfaces de support" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament imprimable" @@ -17003,6 +17145,12 @@ msgstr "" "\n" "Le réglage d’une valeur dans le paramètre de quantité de rétraction avant essuyage ci-dessous permet d’effectuer toute rétraction excédentaire avant l’essuyage, sinon elle sera effectuée après l’essuyage." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La tour de purge peut être utilisée pour nettoyer les résidus sur la buse et stabiliser la pression du caisson à l'intérieur de la buse afin d'éviter les défauts d'apparence lors de l'impression d'objets." @@ -18069,6 +18217,9 @@ msgstr "Le maillage d'un fichier modèle a échoué ou la forme n'est pas valide msgid "The supplied file couldn't be read because it's empty." msgstr "Le fichier fourni n'a pas pu être lu car il est vide" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Format de fichier inconnu : le fichier d'entrée doit porter l'extension .stl, .obj ou .amf (.xml)." diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 1f8c1022bb..e6dc44afcb 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2948,6 +2948,9 @@ msgstr "Szerkesztés" msgid "Merge with" msgstr "Egyesítés ezzel" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Filament törlése" @@ -3247,6 +3250,9 @@ msgstr "Összeállítás" msgid "Merge parts to an object" msgstr "Tárgyak egyesítése egy objektummá" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Rétegek hozzáadása" @@ -7853,6 +7859,9 @@ msgstr "Aktuális tálca testreszabása" msgid "The %s nozzle can not print %s." msgstr "A(z) %s fúvóka nem tudja nyomtatni ezt: %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "A(z) %1% és %2% keverése nyomtatás közben nem ajánlott.\n" @@ -7978,12 +7987,36 @@ msgstr "Filamentlista szinkronizálása az AMS-ből" msgid "Set filaments to use" msgstr "Használni kívánt filament beállítása" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Tálca, objektum és tárgy keresése." msgid "Pellets" msgstr "Pelletek" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "A művelet befejezésekor a(z) %s projekt bezárul, majd új projekt jön létre." @@ -8172,6 +8205,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Több részből álló objektum észlelve" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Betöltöd ezeket a fájlokat több részből álló egyetlen objektumként?\n" @@ -8383,6 +8422,18 @@ msgstr "" msgid "Sync now" msgstr "Szinkronizálás most" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Megtarthatod az új projekt módosított beállításait, vagy elvetheted őket" @@ -9656,6 +9707,9 @@ msgstr "Spirál (váza)" msgid "First layer filament sequence" msgstr "Kezdőréteg filament sorrendje" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + # AI Translated msgid "By Layer" msgstr "Rétegenként" @@ -9705,18 +9759,58 @@ msgstr "Ugrás a weboldalra" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12320,6 +12414,9 @@ msgstr "Ha továbbra is szeretnél nyomtatni, engedélyezheted az opciót itt: B msgid "No extrusions under current settings." msgstr "A jelenlegi beállításokkal nincsenek extrudálások." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "A sima Timelapse nem használható, ha a nyomtatási sorrend \"Tárgyanként\"." @@ -12356,6 +12453,9 @@ msgstr "Próbáld meg csökkenteni a modell méretét vagy módosítani a jelenl msgid "Variable layer height is not supported with Organic supports." msgstr "A változó rétegmagasság nem működik az organikus támaszokkal." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Eltérő fúvókaátmérők és eltérő filamentátmérők mellett a törlőtorony nem biztos, hogy megfelelően működik. Ez nagyon kísérleti funkció, ezért körültekintően használd." @@ -14408,6 +14508,48 @@ msgstr "Támaszanyag" msgid "Support material is commonly used to print supports and support interfaces." msgstr "A támaszanyagot általában a támaszok és azok érintkező felületeinek nyomtatására használják." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament nyomtatható" @@ -17271,6 +17413,12 @@ msgstr "" "\n" "Ha az alábbi \"visszahúzási mennyiség törlés előtt\" beállításban értéket adsz meg, akkor az esetleges többletvisszahúzás a törlés előtt történik meg, különben utána." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "A törlőtorony a fúvókán lévő maradék eltávolítására és a fúvóka belsejében lévő nyomás stabilizálására szolgál, hogy elkerülhetők legyenek a megjelenésbeli hibák az objektumok nyomtatásakor." @@ -18344,6 +18492,9 @@ msgstr "A modellfájl hálósítása sikertelen volt, vagy nincs érvényes alak msgid "The supplied file couldn't be read because it's empty." msgstr "A megadott fájl nem olvasható be, mert üres" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Ismeretlen fájlformátum. A bemeneti fájlnak .stl, .obj vagy .amf(.xml) kiterjesztésűnek kell lennie." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index ac9d5531e5..9c6edebbb7 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2953,6 +2953,9 @@ msgstr "Modifica" msgid "Merge with" msgstr "Unisci con" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Elimina questo filamento" @@ -3252,6 +3255,9 @@ msgstr "Assemblaggio" msgid "Merge parts to an object" msgstr "Unisci parti in un oggetto" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Aggiungi strati" @@ -7857,6 +7863,9 @@ msgstr "Personalizza il piatto corrente" msgid "The %s nozzle can not print %s." msgstr "L'ugello %s non può stampare %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Non è consigliato miscelare %1% con %2% nella stampa.\n" @@ -7982,12 +7991,36 @@ msgstr "Sincronizza l'elenco filamenti dall'AMS" msgid "Set filaments to use" msgstr "Imposta filamenti da usare" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Cerca piatto, oggetto e parte." msgid "Pellets" msgstr "Granuli" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Al completamento dell'operazione, il progetto %s verrà chiuso e ne verrà creato uno nuovo." @@ -8173,6 +8206,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Rilevato oggetto in più parti" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Caricare questi file come un singolo oggetto con più parti?\n" @@ -8383,6 +8422,18 @@ msgstr "" msgid "Sync now" msgstr "Sincronizza ora" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "È possibile conservare i profili modificati per il nuovo progetto o scartarli" @@ -9677,6 +9728,9 @@ msgstr "Vaso a spirale" msgid "First layer filament sequence" msgstr "Sequenza filamenti primo strato" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Per strato" @@ -9723,18 +9777,58 @@ msgstr "Vai alla pagina web" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12341,6 +12435,9 @@ msgstr "Se desideri comunque stampare, puoi abilitare l'opzione in Preferenze / msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "La modalità fluida del timelapse non è supportata quando è abilitata la sequenza \"Per oggetto\"." @@ -12377,6 +12474,9 @@ msgstr "È possibile ridurre le dimensioni del modello o modificare le impostazi msgid "Variable layer height is not supported with Organic supports." msgstr "Altezza strato adattiva non è compatibile con i Supporti organici." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Ugelli e filamenti di diverso diametro potrebbero non funzionare correttamente quando è abilitata la torre di spurgo. Questa funzione è sperimentale, quindi procedere con cautela." @@ -14426,6 +14526,48 @@ msgstr "Materiale di supporto" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Il materiale di supporto viene comunemente utilizzato per stampare supporti e interfacce di supporto." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filamento stampabile" @@ -17296,6 +17438,12 @@ msgstr "" "\n" "Impostando un valore di quantità di retrazione prima dell'impostazione di spurgo di seguito, verra eseguita qualsiasi retrazione in eccesso prima dello spurgo. Altrimenti verrà eseguita dopo." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "La torre di spurgo può essere utilizzata per pulire i residui presenti sull'ugello e stabilizzare la pressione della camera all'interno dell'ugello, al fine di evitare difetti estetici durante la stampa." @@ -18367,6 +18515,9 @@ msgstr "La generazione della mesh del file del modello è fallita o la forma non msgid "The supplied file couldn't be read because it's empty." msgstr "Impossibile leggere il file fornito perché è vuoto" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato file sconosciuto: il file di input deve avere un'estensione .stl, .obj o .amf(.xml)." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 55ad80089b..25d81e9ccc 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2969,6 +2969,9 @@ msgstr "編集" msgid "Merge with" msgstr "結合" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "このフィラメントを削除" @@ -3266,6 +3269,9 @@ msgstr "アセンブリ" msgid "Merge parts to an object" msgstr "パーツをオブジェクトに結合" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "積層を追加" @@ -7865,6 +7871,9 @@ msgstr "現在のプレートをカスタマイズ" msgid "The %s nozzle can not print %s." msgstr "%sノズルは%sを印刷できません。" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "%1%と%2%を混合して印刷することは推奨されません。\n" @@ -7990,12 +7999,36 @@ msgstr "AMSと素材を同期" msgid "Set filaments to use" msgstr "フィラメントを選択" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "プレート、オブジェクト、パーツを検索。" msgid "Pellets" msgstr "ペレット" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "操作完了後、%sプロジェクトが閉じられ、新しいプロジェクトが作成されます。" @@ -8188,6 +8221,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "マルチパーツ検出" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "これらのファイルを一つのオブジェクトとしてロードしますか?\n" @@ -8401,6 +8440,18 @@ msgstr "" msgid "Sync now" msgstr "今すぐ同期" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "変更したプリセットをプロジェクト内に保存するか、破棄もできます" @@ -9699,6 +9750,9 @@ msgstr "スパイラル" msgid "First layer filament sequence" msgstr "初期レイヤーフィラメント順序" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "レイヤー別" @@ -9745,18 +9799,58 @@ msgstr "ウェブページに移動" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12381,6 +12475,9 @@ msgstr "それでも印刷する場合は、環境設定 / 制御 / スライス msgid "No extrusions under current settings." msgstr "現在の設定では造形しません" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "オブジェクト順で造形するでは、この機能を使用できません。" @@ -12417,6 +12514,9 @@ msgstr "モデルのサイズを小さくするか、現在のプリント設定 msgid "Variable layer height is not supported with Organic supports." msgstr "可変レイヤー高さはオーガニックサポートではサポートされていません。" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "ノズル径やフィラメント径が異なる場合、プライムタワーを有効にすると正しく動作しないことがあります。非常に実験的な機能ですので、慎重にお進みください。" @@ -14556,6 +14656,48 @@ msgstr "サポート材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "サポート素材は、サポート又はサポート接触面の造形によく使われます。" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "フィラメント印刷可能" @@ -17671,6 +17813,12 @@ msgstr "" "\n" "下の「ワイプ前のリトラクション量」設定に値を設定すると、超過分のリトラクションはワイプの前に行われます。それ以外の場合はワイプの後に行われます。" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "ワイプタワーは、ノズルに残った樹脂を除去し、ノズル内のチャンバー圧力を安定させることで、オブジェクト印刷時の外観不良を防ぐために使用できます。" @@ -18842,6 +18990,9 @@ msgstr "モデルファイルのメッシュ処理に失敗したか、有効な msgid "The supplied file couldn't be read because it's empty." msgstr "提供されたファイルは空であるため読み込めませんでした。" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "ファイル形式が不明です。入力ファイルの拡張子は .stl、.obj、.amf(.xml)である必要があります。" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 66ce7b49a1..3c2a65c4e7 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -2970,6 +2970,9 @@ msgstr "편집" msgid "Merge with" msgstr "병합" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "이 필라멘트 삭제" @@ -3266,6 +3269,9 @@ msgstr "조립" msgid "Merge parts to an object" msgstr "부품을 하나의 객체로 병합" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "레이어 추가" @@ -7877,6 +7883,9 @@ msgstr "사용자 정의 플레이트" msgid "The %s nozzle can not print %s." msgstr "%s 노즐은 %s 을 인쇄할 수 없습니다." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "%1%와 %2% 혼합 출력을 권장하지 않습니다.\n" @@ -8003,12 +8012,36 @@ msgstr "AMS에서 필라멘트 목록 동기화" msgid "Set filaments to use" msgstr "사용할 필라멘트 설정" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "플레이트, 객체 및 부품을 검색합니다." msgid "Pellets" msgstr "펠릿" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "작업을 완료하면 %s 프로젝트가 닫히고 새 프로젝트가 만들어집니다." @@ -8207,6 +8240,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "여러 부품으로 구성된 객체 감지됨" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "이 파일을 여러 부품이 있는 단일 객체로 로드하시겠습니까?\n" @@ -8435,6 +8474,18 @@ msgstr "" msgid "Sync now" msgstr "지금 동기화" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "수정된 사전 설정을 새 프로젝트에 유지하거나 삭제할 수 있습니다" @@ -9789,6 +9840,9 @@ msgstr "나선형 꽃병 모드" msgid "First layer filament sequence" msgstr "첫 번째 레이어 필라멘트 순서" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "레이어별" @@ -9835,18 +9889,58 @@ msgstr "웹 페이지로 이동" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12513,6 +12607,9 @@ msgstr "그래도 출력하려면 기본 설정 / 제어 / 슬라이싱 / 혼합 msgid "No extrusions under current settings." msgstr "현재 설정에 압출기가 없습니다." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "타임랩스의 유연 모드는 \"객체별\" 출력순서가 활성화된 경우 지원되지 않습니다." @@ -12551,6 +12648,9 @@ msgstr "모델 크기를 줄이거나 현재 출력 설정을 변경하고 다 msgid "Variable layer height is not supported with Organic supports." msgstr "유기체 서포트에서는 가변 레이어 높이가 지원되지 않습니다." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "프라임 타워를 활성화하면 노즐 직경과 필라멘트 직경이 다르면 제대로 작동하지 않을 수 있습니다. 매우 실험적인 기능이므로 주의해서 사용하시기 바랍니다." @@ -14658,6 +14758,48 @@ msgstr "서포트 재료" msgid "Support material is commonly used to print supports and support interfaces." msgstr "서포트 재료는 일반적으로 서포트 및 서포트 접점을 출력하는 데 사용됩니다" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "필라멘트 출력 가능" @@ -17617,6 +17759,12 @@ msgstr "" "\n" "아래의 와이프 전 후퇴량 설정에서 값을 설정하면 와이프 전에 초과 후퇴가 수행되고, 그렇지 않으면 와이프 후에 수행됩니다." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "프라임 타워는 객체를 출력할 때 외관 결함을 방지하기 위해 노즐의 잔류물을 청소하고 노즐 내부의 압력을 안정화하는 데 사용할 수 있습니다." @@ -18720,6 +18868,9 @@ msgstr "모델 파일의 메싱이 실패했거나 유효한 형태가 없습니 msgid "The supplied file couldn't be read because it's empty." msgstr "제공된 파일이 비어 있어 읽을 수 없습니다" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "알 수 없는 파일 형식: 입력 파일의 확장자는 .stl, .obj 또는 .amf(.xml)여야 합니다." diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 866f5fa3f6..e6fdc28d40 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -2937,6 +2937,9 @@ msgstr "Redaguoti" msgid "Merge with" msgstr "Sujungti su" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Ištrinti šią giją" @@ -3238,6 +3241,9 @@ msgstr "Surinkimas" msgid "Merge parts to an object" msgstr "Sujungti dalis į objektą" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Pridėti sluoksnių" @@ -7841,6 +7847,9 @@ msgstr "Individualizuoti esamą plokštę" msgid "The %s nozzle can not print %s." msgstr "%s purkštukas negali spausdinti %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "" @@ -7974,12 +7983,36 @@ msgstr "Sinchronizuoti gijų sąrašą iš AMS" msgid "Set filaments to use" msgstr "Nustatyti gijas naudojimui" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Plokštės, objekto ir dalies paieška." msgid "Pellets" msgstr "Granulės" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Baigus šią operaciją, projektas „%s“ bus uždarytas ir bus sukurtas naujas projektas." @@ -8164,6 +8197,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Aptiktas kelių dalių objektas" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Ar įkelti šiuos failus kaip vieną objektą su keliomis detalėmis?\n" @@ -8378,6 +8417,18 @@ msgstr "" msgid "Sync now" msgstr "Sinchronizuoti dabar" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Pakeistus profilius galite išsaugoti naujam projektui arba juos atmesti" @@ -9618,6 +9669,9 @@ msgstr "Spiralinė vaza" msgid "First layer filament sequence" msgstr "Pirmojo sluoksnio gijos eiga" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Pagal sluoksnį" @@ -9663,18 +9717,58 @@ msgstr "Pereiti į interneto puslapį" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12264,6 +12358,9 @@ msgstr "Jei vis tiek norite spausdinti, galite įjungti šią parinktį skiltyje msgid "No extrusions under current settings." msgstr "Pagal dabartinius nustatymus nėra išspaudimų." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Sklandus pakadrinio filmavimo (timelapse) režimas nepalaikomas, kai įjungta spausdinimo seka „pagal objektą“." @@ -12300,6 +12397,9 @@ msgstr "Galbūt norėsite sumažinti modelio dydį arba pakeisti esamus spausdin msgid "Variable layer height is not supported with Organic supports." msgstr "Kintamas sluoksnio aukštis nepalaikomas su \" Organinėmis atramomis\"." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Skirtingo skersmens purkštukai ir skirtingo skersmens gijos gali neveikti gerai, kai įjungtas valymo bokštas. Tai labai eksperimentinė priemonė, todėl elkitės atsargiai." @@ -14307,6 +14407,48 @@ msgstr "Atramų gija" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Atramų gija paprastai naudojama atramoms ir atramų skiriamiesiems sluoksniams spausdinti." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Gija tinkama spausdinti" @@ -17137,6 +17279,12 @@ msgstr "" "\n" "Jei žemiau esančiame nustatyme „Įtraukimo kiekis prieš nuvalymą“ nurodysite reikšmę, perteklinis gijos įtraukimas bus atliktas prieš nuvalymą, kitu atveju – po jo." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Valymo bokštelis (angl. \"wiping tower\") gali būti naudojamas likučiams nuo purkštuko nuvalyti ir purkštuko viduje esančiam slėgiui stabilizuoti, siekiant išvengti išvaizdos defektų spausdinant objektus." @@ -18220,6 +18368,9 @@ msgstr "Nepavyko suformuoti modelio failo poligonažo arba jame nėra tinkamos g msgid "The supplied file couldn't be read because it's empty." msgstr "Pateikto failo nepavyko nuskaityti, nes jis yra tuščias." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Nežinomas failo formatas: įvesties failas privalo turėti .stl, .obj arba .amf(.xml) plėtinį." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 470aa9fa86..fd1aec7c3f 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -3197,6 +3197,9 @@ msgstr "Bewerken" msgid "Merge with" msgstr "Samenvoegen met" +msgid "Decompose Color" +msgstr "" + # AI Translated msgid "Delete this filament" msgstr "Dit filament verwijderen" @@ -3519,6 +3522,9 @@ msgstr "Montage" msgid "Merge parts to an object" msgstr "Onderdelen samenvoegen tot een object" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Lagen toevoegen" @@ -8558,6 +8564,9 @@ msgstr "Huidig printbed aanpassen" msgid "The %s nozzle can not print %s." msgstr "Het %s-mondstuk kan %s niet printen." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8701,6 +8710,21 @@ msgstr "Synchroniseer filamentlijst vanuit AMS" msgid "Set filaments to use" msgstr "Stel filamenten in om te gebruiken" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Zoek plaat, object en onderdeel." @@ -8708,6 +8732,15 @@ msgstr "Zoek plaat, object en onderdeel." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8915,6 +8948,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Object met meerdere onderdelen gedetecteerd" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Wilt u deze bestanden laden als een enkel object bestaande uit meerdere onderdelen?\n" @@ -9146,6 +9185,18 @@ msgstr "" msgid "Sync now" msgstr "Nu synchroniseren" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Je kunt de aangepaste voorinstellingen bewaren voor het nieuwe project of ze laten vervallen" @@ -10550,6 +10601,9 @@ msgstr "Spiraalvaas" msgid "First layer filament sequence" msgstr "Eerste laag filamentvolgorde" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Op laag" @@ -10596,18 +10650,58 @@ msgstr "Ga naar de website" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -13448,6 +13542,9 @@ msgstr "Als u toch wilt printen, kunt u de optie inschakelen via Voorkeuren / Be msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Vloeiende modus van timelapse wordt niet ondersteund wanneer \"per object\" sequentie is ingeschakeld." @@ -13490,6 +13587,9 @@ msgstr "Verklein eventueel uw model of wijzig de huidige printinstellingen en pr msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Verschillende mondstukdiameters en verschillende filamentdiameters werken mogelijk niet goed wanneer de prime toren is ingeschakeld. Dit is zeer experimenteel; ga daarom voorzichtig te werk." @@ -15762,6 +15862,48 @@ msgstr "Support materiaal" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Support materiaal wordt vaak gebruikt om support en support interfaces af te drukken." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + # AI Translated msgid "Filament printable" msgstr "Filament printbaar" @@ -18985,6 +19127,12 @@ msgstr "" "\n" "Als u hieronder een waarde instelt bij de terugtrekhoeveelheid vóór het vegen, wordt de overtollige terugtrekking vóór het vegen uitgevoerd; anders gebeurt dat erna." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "De veegtoren kan worden gebruikt om resten op het mondstuk te verwijderen en de druk in het mondstuk te stabiliseren om uiterlijke gebreken bij het printen van objecten te voorkomen." @@ -20251,6 +20399,9 @@ msgstr "Het meshen van een modelbestand is mislukt of er is geen geldige vorm." msgid "The supplied file couldn't be read because it's empty." msgstr "Het opgegeven bestand kon niet worden gelezen omdat het leeg is." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + # AI Translated msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Onbekende bestandsindeling: het invoerbestand moet de extensie .stl, .obj of .amf(.xml) hebben." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 4adcf037ca..7fa43e8993 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -3012,6 +3012,9 @@ msgstr "Edytuj" msgid "Merge with" msgstr "Scal z" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Usuń ten filament" @@ -3319,6 +3322,9 @@ msgstr "Złożenie" msgid "Merge parts to an object" msgstr "Scal części w obiekt" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Dodaj warstwy" @@ -8036,6 +8042,9 @@ msgstr "Dostosuj bieżący stół" msgid "The %s nozzle can not print %s." msgstr "Dysza %s nie może drukować %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Mieszanie %1% z %2% podczas druku nie jest zalecane.\n" @@ -8162,12 +8171,36 @@ msgstr "Synchronizuj listę filamentów z AMS" msgid "Set filaments to use" msgstr "Wybierz filamenty do użycia" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Szukaj stołu, obiektu i części." msgid "Pellets" msgstr "Granulat" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Po zakończeniu operacji projekt %s zostanie zamknięty i zostanie utworzony nowy projekt." @@ -8363,6 +8396,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Wykryto obiekt składający się z wielu części" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Czy wczytać te pliki jako pojedynczy obiekt składający się z wielu części?\n" @@ -8591,6 +8630,18 @@ msgstr "" msgid "Sync now" msgstr "Synchronizuj teraz" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Można zachować zmodyfikowane profile w nowym projekcie lub je odrzucić." @@ -9945,6 +9996,9 @@ msgstr "Tryb wazy" msgid "First layer filament sequence" msgstr "Sekwencja koloru pierwszej warstwy" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Wg warstwy" @@ -9991,18 +10045,58 @@ msgstr "Przejdź na stronę" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12684,6 +12778,9 @@ msgstr "Jeśli mimo to chcesz drukować, możesz włączyć opcję w Preferencje msgid "No extrusions under current settings." msgstr "Brak ekstruzji przy obecnych ustawieniach." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Tryb „Wygładzony” timelapse nie jest obsługiwany, gdy włączona jest sekwencja druku „według obiektu”." @@ -12722,6 +12819,9 @@ msgstr "Może być konieczne zmniejszenie rozmiaru modelu lub zmiana bieżących msgid "Variable layer height is not supported with Organic supports." msgstr "Zmienna wysokość warstwy nie jest dostępna w przypadku podpór organicznych." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Różne średnice dysz i filamentu mogą nie działać poprawnie, gdy włączona jest wieża czyszcząca. Jest to mocno eksperymentalna funkcja, więc zaleca się ostrożność." @@ -14825,6 +14925,48 @@ msgstr "Materiał podporowy" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Materiał podporowy jest powszechnie używany do drukowania podpór i warstw łączących podpory z modelem" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament do druku" @@ -17795,6 +17937,12 @@ msgstr "" "\n" "Ustawienie wartości w ilości cofania przed ustawieniem czyszczenia poniżej spowoduje wykonanie nadmiernego cofania przed czyszczeniem, w przeciwnym razie zostanie wykonane po nim." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wieża czyszcząca może być używana do czyszczenia resztek na dyszy i stabilizacji ciśnienia w komorze wewnątrz dyszy, aby uniknąć defektów wyglądu podczas drukowania obiektów." @@ -18896,6 +19044,9 @@ msgstr "Siatkowanie pliku modelu nie powiodło się lub nie ma prawidłowego ksz msgid "The supplied file couldn't be read because it's empty." msgstr "Dostarczony plik nie mógł być odczytany, ponieważ jest pusty" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .stl, .obj, .amf(.xml)." diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 0e1e34c7d7..ceb095306d 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -2836,6 +2836,9 @@ msgstr "Editar" msgid "Merge with" msgstr "Mesclar com" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Apagar este filamento" @@ -3118,6 +3121,9 @@ msgstr "Montagem" msgid "Merge parts to an object" msgstr "Mesclar peças com um objeto" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "Adicionar camadas" @@ -7637,6 +7643,9 @@ msgstr "Personalizar a placa atual" msgid "The %s nozzle can not print %s." msgstr "O bico %s não pode imprimir %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Misturar %1% com %2% na impressão não é recomendado.\n" @@ -7761,12 +7770,36 @@ msgstr "Sincronizar lista de filamentos do AMS" msgid "Set filaments to use" msgstr "Definir filamentos para usar" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Pesquisar placa, objeto e peça." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "Após a conclusão da sua operação, o projeto %s será encerrado e um novo projeto será criado." @@ -7951,6 +7984,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objeto multi-peça detectado" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Carregar esses arquivos como um único objeto com múltiplas peças?\n" @@ -8158,6 +8197,18 @@ msgstr "" msgid "Sync now" msgstr "Sincronizar agora" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Você pode manter as predefinições modificadas no novo projeto ou descartá-las" @@ -9402,6 +9453,9 @@ msgstr "Vaso espiral" msgid "First layer filament sequence" msgstr "Sequência de filamento da primeira camada" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Por Camada" @@ -9447,18 +9501,58 @@ msgstr "Ir para a página web" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12011,6 +12105,9 @@ msgstr "Se ainda assim desejar imprimir, você pode ativar a opção em Preferê msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "O modo suave do timelapse não é suportado quando a sequência \"por objeto\" está ativada." @@ -12047,6 +12144,9 @@ msgstr "Você pode querer reduzir o tamanho do seu modelo ou alterar as configur msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes Orgânicos." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Diferentes diâmetros de bico e diferentes diâmetros de filamento podem não funcionar bem quando a torre de purga estiver habilitada. É muito experimental, então prossiga com cautela." @@ -14045,6 +14145,48 @@ msgstr "Material de suporte" msgid "Support material is commonly used to print supports and support interfaces." msgstr "O material de suporte é comumente usado para imprimir suportes e interfaces de suporte." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filamento imprimível" @@ -16846,6 +16988,12 @@ msgstr "" "\n" "Definir um valor na configuração de quantidade de retração antes da limpeza abaixo executará qualquer retração em excesso antes da limpeza, caso contrário, será realizada após." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "A torre de purga pode ser usada para limpar o resíduo no bico e estabilizar a pressão na câmara dentro do bico, a fim de evitar defeitos de aparência ao imprimir objetos." @@ -17902,6 +18050,9 @@ msgstr "A geração da malha do arquivo do modelo falhou ou não há forma váli msgid "The supplied file couldn't be read because it's empty." msgstr "O arquivo fornecido não pôde ser lido porque está vazio." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .stl, .obj, .amf(.xml)." diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index debec4f832..fc26e99615 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -2911,6 +2911,9 @@ msgstr "Правка" msgid "Merge with" msgstr "Объединить с" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Удалить материал" @@ -3222,6 +3225,9 @@ msgstr "Сборка" msgid "Merge parts to an object" msgstr "Сборка моделей" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # Запись в истории действий msgid "Add layers" msgstr "Добавление слоёв" @@ -7897,6 +7903,9 @@ msgstr "Настроить стол" msgid "The %s nozzle can not print %s." msgstr "Внимание: «%s» экструдер не может печатать %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Совмещение %1% с %2% при печати не рекомендуется.\n" @@ -8027,12 +8036,36 @@ msgstr "Синхронизировать материалы" msgid "Set filaments to use" msgstr "Выбрать материал" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Поиск стола, модели или части..." msgid "Pellets" msgstr "Гранулы" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + # Порядок слов сильно зависит от контекста; не могу воспроизвести в интерфейсе. По идее, выводится при bool Sidebar::is_new_project_in_gcode3mf(), но что-либо менять в нарезанном .gcode.3mf вообще нельзя #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8223,6 +8256,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Обнаружена модель, состоящая из нескольких частей" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Загрузить эти файлы как единую модель, состоящую из нескольких частей?\n" @@ -8437,6 +8476,18 @@ msgstr "" msgid "Sync now" msgstr "Синхронизировать" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Вы можете перенести сделанные изменения в новый проект или отказаться от их сохранения" @@ -9694,6 +9745,9 @@ msgstr "Режим вазы" msgid "First layer filament sequence" msgstr "Очерёдность материалов на первом слое" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Послойно" @@ -9739,18 +9793,58 @@ msgstr "Перейти на страницу" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12341,6 +12435,9 @@ msgstr "Если вас это не пугает, эту проверку мож msgid "No extrusions under current settings." msgstr "При текущих настройках экструзия отсутствует." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Плавный режим таймлапса не поддерживается, когда включена последовательность печати моделей по очереди." @@ -12379,6 +12476,9 @@ msgstr "Попробуйте уменьшить размер модели или msgid "Variable layer height is not supported with Organic supports." msgstr "Функция переменной высоты слоя несовместима с органическим стилем древовидных поддержек." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Совместное использование черновой башни с разными диаметрами сопел и прутков может привести к некорректной нарезке при включённой черновой башне. Этот метод работы экспериментальный, поэтому будьте осторожны при использовании." @@ -14526,6 +14626,48 @@ msgstr "Материал поддержки" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Обычно используется для печати поддержки и связующего слоя (интерфейса)." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + # ??? Настройка в режиме разработчика. Должна отображаться где-то в настройках # профиля, но поиском не ищется. msgid "Filament printable" @@ -17698,6 +17840,12 @@ msgstr "" "\n" "Внимание: процент первичного отката будет увеличен, если длины очистки окажется недостаточно при текущей скорости отката (или из-за иных ограничений)." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Черновая башня – специальная структура, которая используется для прочистки сопла от остатков материала и стабилизации давления внутри сопла при смене экструдера, чтобы избежать дефектов на поверхности печатаемой модели." @@ -18856,6 +19004,9 @@ msgstr "Не удалось обнаружить форму или создат msgid "The supplied file couldn't be read because it's empty." msgstr "Невозможно прочитать файл, так как он пуст." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Неизвестный формат файла: входной файл должен иметь расширение *.stl, *.obj или *.amf(.xml)." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 7add432a60..0e42c18f84 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3289,6 +3289,9 @@ msgstr "Redigera" msgid "Merge with" msgstr "Slå ihop med" +msgid "Decompose Color" +msgstr "" + # AI Translated msgid "Delete this filament" msgstr "Radera detta filament" @@ -3610,6 +3613,9 @@ msgstr "Montering" msgid "Merge parts to an object" msgstr "Slå ihop delar till ett objekt" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Lägg till lager" @@ -8650,6 +8656,9 @@ msgstr "Anpassa aktuell platta" msgid "The %s nozzle can not print %s." msgstr "Nozzeln %s kan inte skriva ut %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8793,6 +8802,21 @@ msgstr "Synkronisera filament listan från AMS" msgid "Set filaments to use" msgstr "Ställ in filament som ska användas" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Sök platta, objekt och del." @@ -8800,6 +8824,15 @@ msgstr "Sök platta, objekt och del." msgid "Pellets" msgstr "Pellets" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -9006,6 +9039,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Objekt i flera delar har upptäckts" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Ladda dessa filer som ett enkelt objekt med multipla delar?\n" @@ -9235,6 +9274,18 @@ msgstr "" msgid "Sync now" msgstr "Synkronisera nu" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Fortsätt med redigerings inställningarna till nytt projekt eller avfärda dem" @@ -10664,6 +10715,9 @@ msgstr "Spiral vas" msgid "First layer filament sequence" msgstr "Första lagrets filament sekvens" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Per lager" @@ -10710,18 +10764,58 @@ msgstr "Växla till hemsidan" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -13610,6 +13704,9 @@ msgstr "Om du ändå vill skriva ut kan du aktivera alternativet i Inställninga msgid "No extrusions under current settings." msgstr "Nuvarande inställning har ingen extrudering." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Smooth läge för timelapse stöds inte när ”per objekt” -sekvens är aktiverad." @@ -13652,6 +13749,9 @@ msgstr "Du kan behöva minska modellens storlek eller ändra de aktuella utskrif msgid "Variable layer height is not supported with Organic supports." msgstr "Variabel lagerhöjd stöds inte med organiska support." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + # AI Translated msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Olika nozzeldiametrar och olika filamentdiametrar kanske inte fungerar bra när prime tornet är aktiverat. Det är mycket experimentellt, så var försiktig." @@ -15950,6 +16050,48 @@ msgstr "Supportmaterial" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Support material används ofta för att skriva ut support och stödja gränssnittet" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + # AI Translated msgid "Filament printable" msgstr "Filament utskrivbart" @@ -19206,6 +19348,12 @@ msgstr "" "\n" "Om du anger ett värde i inställningen reduktionsmängd före avtorkning nedan utförs eventuell överskjutande reduktion före avtorkningen, annars utförs den efteråt." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Avstryknings tornet kan användas för att avlägsna rester på munstycket och stabilisera kammartrycket inuti munstycket för att undvika utseendefel vid utskrift av objekt." @@ -20479,6 +20627,9 @@ msgstr "Det gick inte att skapa mesh från modellfilen, eller så saknas en gilt msgid "The supplied file couldn't be read because it's empty." msgstr "Den medföljande filen kunde inte läsas eftersom den är tom." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Okänt filformat: indata filen måste ha tillägget .stl, .obj eller .amf(.xml)." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index 60163fe29b..ec74d28213 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -2942,6 +2942,9 @@ msgstr "แก้ไข" msgid "Merge with" msgstr "รวมกับ" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "ลบเส้นพลาสติกนี้" @@ -3237,6 +3240,9 @@ msgstr "การประกอบ" msgid "Merge parts to an object" msgstr "รวมชิ้นส่วนเป็นวัตถุเดียว" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "เพิ่มเลเยอร์" @@ -7813,6 +7819,9 @@ msgstr "ปรับแต่งแผ่นปัจจุบัน" msgid "The %s nozzle can not print %s." msgstr "หัวฉีด %s ไม่สามารถพิมพ์ %s ได้" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "ไม่แนะนำให้ผสม %1% กับ %2% ในการพิมพ์\n" @@ -7938,12 +7947,36 @@ msgstr "ประสานรายการเส้นพลาสติกจ msgid "Set filaments to use" msgstr "ตั้งค่าเส้นพลาสติกที่จะใช้" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "ค้นหาจาน วัตถุ และชิ้นส่วน" msgid "Pellets" msgstr "เม็ด" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "หลังจากเสร็จสิ้นการดำเนินการของคุณ โครงการ %s จะถูกปิดและสร้างโครงการใหม่" @@ -8128,6 +8161,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "ตรวจพบวัตถุที่มีหลายส่วน" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "โหลดไฟล์เหล่านี้เป็นออบเจ็กต์เดียวที่มีหลายส่วนใช่ไหม\n" @@ -8338,6 +8377,18 @@ msgstr "" msgid "Sync now" msgstr "ซิงค์เลย" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "คุณสามารถเก็บค่าที่ตั้งไว้ล่วงหน้าที่แก้ไขแล้วไว้ในโปรเจ็กต์ใหม่หรือทิ้งก็ได้" @@ -9591,6 +9642,9 @@ msgstr "แจกันเกลียว" msgid "First layer filament sequence" msgstr "ลำดับเส้นพลาสติกชั้นแรก" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "โดยเลเยอร์" @@ -9636,18 +9690,58 @@ msgstr "ข้ามไปที่หน้าเว็บ" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12231,6 +12325,9 @@ msgstr "หากคุณยังต้องการพิมพ์ คุ msgid "No extrusions under current settings." msgstr "ไม่มีการอัดขึ้นรูปภายใต้การตั้งค่าปัจจุบัน" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "ไม่รองรับโหมดไทม์แลปส์แบบราบรื่นเมื่อเปิดใช้งานลำดับ \"ตามวัตถุ\"" @@ -12267,6 +12364,9 @@ msgstr "คุณอาจต้องการลดขนาดแบบจำ msgid "Variable layer height is not supported with Organic supports." msgstr "ไม่รองรับความสูงของเลเยอร์ที่แปรผันได้ด้วยการรองรับแบบออร์แกนิก" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "เส้นผ่านศูนย์กลางของหัวฉีดที่แตกต่างกันและเส้นผ่านศูนย์กลางของเส้นพลาสติกที่แตกต่างกันอาจทำงานได้ไม่ดีนักเมื่อเปิดใช้งาน Prime Tower ยังเป็นการทดลองอยู่มาก ดังนั้นโปรดดำเนินการด้วยความระมัดระวัง" @@ -14286,6 +14386,48 @@ msgstr "วัสดุส่วนรองรับ" msgid "Support material is commonly used to print supports and support interfaces." msgstr "วัสดุรองรับมักใช้ในการพิมพ์ส่วนรองรับและอินเทอร์เฟซรองรับ" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "พิมพ์เส้นพลาสติกได้" @@ -17126,6 +17268,12 @@ msgstr "" "\n" "การตั้งค่าในจำนวนการถอนก่อนการล้างการตั้งค่าด้านล่างจะทำการถอนส่วนที่เกินก่อนการล้าง มิฉะนั้นจะดำเนินการหลังจากนั้น" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wipe Tower สามารถใช้เพื่อทำความสะอาดสิ่งตกค้างบนหัวฉีด และทำให้แรงดันในห้องภายในหัวฉีดคงที่ เพื่อหลีกเลี่ยงข้อบกพร่องในลักษณะที่ปรากฏเมื่อพิมพ์วัตถุ" @@ -18209,6 +18357,9 @@ msgstr "การประสานไฟล์โมเดลล้มเหล msgid "The supplied file couldn't be read because it's empty." msgstr "ไม่สามารถอ่านไฟล์ที่ให้มาได้เนื่องจากไฟล์ว่างเปล่า" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "รูปแบบไฟล์ที่ไม่รู้จัก ไฟล์อินพุตต้องมีนามสกุล .stl, .obj, .amf(.xml)" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index c0126ec8fd..c3812dd93f 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-08-21 23:18+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -2969,6 +2969,9 @@ msgstr "Düzenle" msgid "Merge with" msgstr "Şununla birleştir" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Bu filamenti sil" @@ -3269,6 +3272,9 @@ msgstr "Birleştir" msgid "Merge parts to an object" msgstr "Parçaları bir nesnede birleştir" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Katman ekle" @@ -7903,6 +7909,9 @@ msgstr "Mevcut plakayı özelleştir" msgid "The %s nozzle can not print %s." msgstr "%s püskürtme ucu %s'yi yazdıramıyor." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Yazdırmada %1% ile %2%'nin karıştırılması önerilmez.\n" @@ -8028,12 +8037,36 @@ msgstr "Filament listesini AMS'den senkronize edin" msgid "Set filaments to use" msgstr "Kullanılacak filamentleri ayarla" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Arama plakası, nesne ve parça." msgid "Pellets" msgstr "Peletler" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "İşleminizi tamamladıktan sonra %s projesi kapatılacak ve yeni bir proje oluşturulacak." @@ -8226,6 +8259,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Çok parçalı nesne algılandı" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Bu dosyalar birden fazla parçadan oluşan tek bir nesne olarak mı yüklensin?\n" @@ -8437,6 +8476,18 @@ msgstr "" msgid "Sync now" msgstr "Şimdi senkronize et" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Değiştirilen ön ayarları yeni projede tutabilir veya silebilirsiniz" @@ -9735,6 +9786,9 @@ msgstr "Spiral vazo" msgid "First layer filament sequence" msgstr "İlk katman filament dizisi" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Katmana göre" @@ -9780,18 +9834,58 @@ msgstr "Web sayfasına atla" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12439,6 +12533,9 @@ msgstr "Yine de yazdırmak istiyorsanız Tercihler / Denetim / Dilimleme / Karı msgid "No extrusions under current settings." msgstr "Mevcut ayarlarda ekstrüzyon yok." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "\"Nesneye göre\" dizisi etkinleştirildiğinde, hızlandırılmış çekimin yumuşak modu desteklenmez." @@ -12475,6 +12572,9 @@ msgstr "Modelinizin boyutunu küçültmek veya mevcut yazdırma ayarlarını de msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Farklı püskürtme ucu çapları ve farklı filament çapları, ana kule etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen dikkatli ilerleyin." @@ -14540,6 +14640,48 @@ msgstr "Destek malzemesi" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için kullanılır." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Filament yazdırılabilir" @@ -17455,6 +17597,12 @@ msgstr "" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi takdirde silme işleminden sonra gerçekleştirilecektir." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını dengelemek için kullanılabilir." @@ -18543,6 +18691,9 @@ msgstr "Bir model dosyasının meshlenmesi başarısız oldu veya geçerli bir msgid "The supplied file couldn't be read because it's empty." msgstr "Seçilen dosya boş olduğundan okunamıyor." +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı olmalıdır." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 2a8fb00b3e..e8dd6dde4b 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -2906,6 +2906,9 @@ msgstr "Змінити" msgid "Merge with" msgstr "Обʼєднати з" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "Видалити цей філамент" @@ -3197,6 +3200,9 @@ msgstr "Збірка" msgid "Merge parts to an object" msgstr "Обʼєднати частини в обʼєкт" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "Додати шари" @@ -7897,6 +7903,9 @@ msgstr "Пристосувати поточну пластину" msgid "The %s nozzle can not print %s." msgstr "Сопло %s не може друкувати %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "Змішування %1% з %2% в друці не рекомендується.\n" @@ -8025,12 +8034,36 @@ msgstr "Синхронізувати список ниток з AMS" msgid "Set filaments to use" msgstr "Встановити філаменти для використання" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Пошук пластини, об’єкта і деталі." msgid "Pellets" msgstr "Гранули" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8235,6 +8268,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Виявлено обʼєкт, що складається з кількох частин" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Завантажити ці файли як єдиний обʼєкт з кількома частинами?\n" @@ -8445,6 +8484,18 @@ msgstr "" msgid "Sync now" msgstr "Синхронізувати зараз" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Ви можете зберегти змінені пресети у новому проекті або відмовитися від них" @@ -9737,6 +9788,9 @@ msgstr "Спіральна ваза" msgid "First layer filament sequence" msgstr "Послідовність філаменту першого шару" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "По шарах" @@ -9783,18 +9837,58 @@ msgstr "Перейти на вебсторінку" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12500,6 +12594,9 @@ msgstr "Якщо ви все одно хочете друкувати, може msgid "No extrusions under current settings." msgstr "Немає екструзій під час поточних налаштувань." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Плавний режим таймлапсу не підтримується, коли послідовність \"по обʼєкт\" увімкнено." @@ -12540,6 +12637,9 @@ msgstr "Можливо, ви захочете зменшити розмір мо msgid "Variable layer height is not supported with Organic supports." msgstr "Змінна висота шару не підтримується з Органічними підтримками." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Різні діаметри сопел та різні діаметри філаменту можуть працювати некоректно коли ввімкнена підготовча вежа. Це експериментальна функція, тому використовуйте її з обережністю." @@ -14665,6 +14765,48 @@ msgstr "Матеріал підтримки" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Допоміжний матеріал зазвичай використовується для друку підтримки" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "Філамент придатний для друку" @@ -17660,6 +17802,12 @@ msgstr "" "\n" "Якщо встановити значення у параметрі \"Кількість втягування перед витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно буде виконано після нього." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + # AI Translated msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Вежа протирання може використовуватися для очищення залишків на соплі та стабілізації тиску в камері всередині сопла, щоб уникнути дефектів зовнішнього вигляду під час друку обʼєктів." @@ -18766,6 +18914,9 @@ msgstr "Не вдалося побудувати сітку файлу моде msgid "The supplied file couldn't be read because it's empty." msgstr "Наданий файл не вдалося прочитати, оскільки він порожній" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або .amf (.xml)." diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 519a6c3b25..b5e5a5dc5f 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -3077,6 +3077,9 @@ msgstr "Chỉnh sửa" msgid "Merge with" msgstr "Gộp với" +msgid "Decompose Color" +msgstr "" + # AI Translated msgid "Delete this filament" msgstr "Xóa filament này" @@ -3389,6 +3392,9 @@ msgstr "Lắp ráp" msgid "Merge parts to an object" msgstr "Gộp các phần thành một vật thể" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "Thêm lớp" @@ -8294,6 +8300,9 @@ msgstr "Tùy chỉnh bản hiện tại" msgid "The %s nozzle can not print %s." msgstr "Đầu phun %s không thể in %s." +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + # AI Translated #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" @@ -8436,12 +8445,36 @@ msgstr "Đồng bộ danh sách filament từ AMS" msgid "Set filaments to use" msgstr "Đặt filament để sử dụng" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "Tìm kiếm bản, đối tượng và phần." msgid "Pellets" msgstr "Viên" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + # AI Translated #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." @@ -8640,6 +8673,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "Phát hiện đối tượng nhiều phần" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "Tải các file này như một đối tượng đơn với nhiều phần?\n" @@ -8869,6 +8908,18 @@ msgstr "" msgid "Sync now" msgstr "Đồng bộ ngay" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "Bạn có thể giữ các preset đã chỉnh sửa cho dự án mới hoặc loại bỏ chúng" @@ -10250,6 +10301,9 @@ msgstr "Bình xoắn ốc" msgid "First layer filament sequence" msgstr "Trình tự filament lớp đầu tiên" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "Theo lớp" @@ -10296,18 +10350,58 @@ msgstr "Chuyển đến trang web" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -13075,6 +13169,9 @@ msgstr "Nếu bạn vẫn muốn in, bạn có thể bật tùy chọn trong Tù msgid "No extrusions under current settings." msgstr "Không có đùn dưới cài đặt hiện tại." +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "Chế độ mượt của timelapse không được hỗ trợ khi trình tự \"theo đối tượng\" được bật." @@ -13113,6 +13210,9 @@ msgstr "Bạn có thể muốn giảm kích thước model của mình hoặc th msgid "Variable layer height is not supported with Organic supports." msgstr "Chiều cao lớp thay đổi không được hỗ trợ với support hữu cơ." +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "Đường kính đầu phun khác nhau và đường kính filament khác nhau có thể không hoạt động tốt khi prime tower được bật. Nó rất thử nghiệm, vì vậy vui lòng tiến hành thận trọng." @@ -15234,6 +15334,48 @@ msgstr "Vật liệu support" msgid "Support material is commonly used to print supports and support interfaces." msgstr "Vật liệu support thường được sử dụng để in support và giao diện support." +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + # AI Translated msgid "Filament printable" msgstr "Filament in được" @@ -18178,6 +18320,12 @@ msgstr "" "\n" "Đặt giá trị trong cài đặt lượng rút trước khi lau bên dưới sẽ thực hiện bất kỳ rút dư nào trước khi lau, nếu không nó sẽ được thực hiện sau." +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "Wipe tower có thể được sử dụng để làm sạch cặn trên đầu phun và ổn định áp suất buồng bên trong đầu phun, để tránh khuyết điểm bề ngoài khi in đối tượng." @@ -19298,6 +19446,9 @@ msgstr "Tạo lưới cho file mô hình thất bại hoặc không có hình d msgid "The supplied file couldn't be read because it's empty." msgstr "File được cung cấp không thể đọc được vì nó trống" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Định dạng file không xác định. File đầu vào phải có phần mở rộng .stl, .obj, .amf(.xml)." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 2abe2fc5d2..4787976785 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -2843,6 +2843,9 @@ msgstr "编辑" msgid "Merge with" msgstr "与其合并" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "移除此耗材" @@ -3124,6 +3127,9 @@ msgstr "组合体" msgid "Merge parts to an object" msgstr "合并零件到对象" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + msgid "Add layers" msgstr "添加层" @@ -7644,6 +7650,9 @@ msgstr "自定义当前盘" msgid "The %s nozzle can not print %s." msgstr "%s 喷嘴无法打印 %s。" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "不建议在打印时将 %1% 与 %2% 混合。\n" @@ -7769,12 +7778,36 @@ msgstr "从AMS同步材料列表" msgid "Set filaments to use" msgstr "配置可选择的材料" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "搜索盘、模型和零件。" msgid "Pellets" msgstr "颗粒" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "完成操作后,%s 项目将关闭并创建一个新项目。" @@ -7961,6 +7994,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "检测到多部分对象" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "将这些文件加载为一个多零件对象?\n" @@ -8166,6 +8205,18 @@ msgstr "" msgid "Sync now" msgstr "立即同步" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "您可以保留修改的预设到新项目中或者忽略这些修改" @@ -9412,6 +9463,9 @@ msgstr "旋转花瓶" msgid "First layer filament sequence" msgstr "首层耗材打印顺序" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "逐层" @@ -9458,18 +9512,58 @@ msgstr "跳转到网页" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12029,6 +12123,9 @@ msgstr "如果您仍要打印,可以在 偏好设置 / 控制 / 切片 / 移 msgid "No extrusions under current settings." msgstr "根据当前设置,不会生成任何打印。" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "平滑模式的延时摄影不支持在逐件打印模式下使用。" @@ -12065,6 +12162,9 @@ msgstr "或许您想要缩小模型的尺寸,或者更改当前打印设置, msgid "Variable layer height is not supported with Organic supports." msgstr "Organic支撑不支持可变层高。" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "当启用擦拭塔时,不同的喷嘴直径和不同的耗材丝直径可能无法很好地工作。这是非常实验性的,所以请谨慎操作。" @@ -14051,6 +14151,48 @@ msgstr "支撑材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "支撑材料通常用于打印支撑体和支撑接触面" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "可打印耗材" @@ -16885,6 +17027,12 @@ msgstr "" "\n" "在下方的擦拭前回抽量设置中输入一个数值,将在擦拭动作之前执行任何超出部分的回抽,否则超出部分的回抽将在擦拭之后执行。" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "擦拭塔可以用来清理喷嘴上的残留料和让喷嘴内部的腔压达到稳定状态,以避免打印物体时出现外观瑕疵。" @@ -17960,6 +18108,9 @@ msgstr "模型文件的网格划分失败,或缺少有效的形状。" msgid "The supplied file couldn't be read because it's empty." msgstr "无法读取提供的文件,因为该文件内容为空。" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "未知的文件格式。输入文件的扩展名必须为 .stl、.obj 或 .amf(.xml)。" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 839e7cdb2b..f9287d0886 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-21 14:25+0800\n" +"POT-Creation-Date: 2026-08-28 12:15+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -2913,6 +2913,9 @@ msgstr "編輯" msgid "Merge with" msgstr "合併到" +msgid "Decompose Color" +msgstr "" + msgid "Delete this filament" msgstr "刪除此線材" @@ -3209,6 +3212,9 @@ msgstr "組合體" msgid "Merge parts to an object" msgstr "合併零件為物件" +msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality." +msgstr "" + # AI Translated msgid "Add layers" msgstr "新增層" @@ -7805,6 +7811,9 @@ msgstr "自訂列印板參數" msgid "The %s nozzle can not print %s." msgstr "%s 噴嘴無法列印 %s。" +msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging." +msgstr "" + #, boost-format msgid "Mixing %1% with %2% in printing is not recommended.\n" msgstr "不建議在列印時混用 %1% 和 %2%。\n" @@ -7930,12 +7939,36 @@ msgstr "從 AMS 同步線材清單" msgid "Set filaments to use" msgstr "設定可選擇的線材" +msgid "Add Mixed Filament" +msgstr "" + +msgid "Mixed Filament" +msgstr "" + +msgid "Remove last mixed filament" +msgstr "" + +msgid "Add mixed filament" +msgstr "" + +msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries." +msgstr "" + msgid "Search plate, object and part." msgstr "搜尋列印板、物件和零件。" msgid "Pellets" msgstr "顆粒" +msgid "Mixed filament has broken component references" +msgstr "" + +msgid "Edit / Delete / Merge" +msgstr "" + +msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?" +msgstr "" + #, c-format, boost-format msgid "After completing your operation, %s project will be closed and create a new project." msgstr "完成操作後,%s 專案將關閉並建立新專案。" @@ -8122,6 +8155,12 @@ msgstr "" msgid "Multi-part object detected" msgstr "偵測到多部分物件" +msgid "Matching textures to filaments" +msgstr "" + +msgid "Texture Import Warning" +msgstr "" + msgid "Load these files as a single object with multiple parts?\n" msgstr "將這些檔案載入為一個多零件物件?\n" @@ -8332,6 +8371,18 @@ msgstr "" msgid "Sync now" msgstr "立即同步" +msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only." +msgstr "" + +msgid "Applying texture colors..." +msgstr "" + +msgid "Updating 3D view..." +msgstr "" + +msgid "Texture colors applied." +msgstr "" + msgid "You can keep the modified presets for the new project or discard them" msgstr "您可以將修改後的預設檔保留到新專案中或者忽略這些修改" @@ -9586,6 +9637,9 @@ msgstr "螺旋花瓶模式" msgid "First layer filament sequence" msgstr "首層線材列印順序" +msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect." +msgstr "" + msgid "By Layer" msgstr "逐層" @@ -9631,18 +9685,58 @@ msgstr "跳至網頁" msgid "Material" msgstr "" +msgid "Mixed filament" +msgstr "" + +msgid "Some mixed filaments rely on filaments that will not be published:" +msgstr "" + +#, c-format, boost-format +msgid "Filament %d (mixed)" +msgstr "" + +msgid "needs" +msgstr "" + +msgid "not enabled" +msgstr "" + +msgid "material not published" +msgstr "" + +msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." +msgstr "" + +msgid "Publish anyway" +msgstr "" + msgid "Publish 3MF..." msgstr "" msgid "Select which settings to embed in the 3MF file" msgstr "" +msgid "Mixed filament - published as a whole when \"Enable\" above is selected" +msgstr "" + +msgid "Publish this mixed filament and enable + Full Publish its component filaments" +msgstr "" + +msgid "Publish this filament slot in the 3MF file" +msgstr "" + msgid "Full Publish" msgstr "" msgid "Embed the entire filament of this slot in the 3MF file" msgstr "" +msgid "Material Ratio" +msgstr "" + +msgid "Model Height" +msgstr "" + msgid "Filter non-selected" msgstr "" @@ -12233,6 +12327,9 @@ msgstr "如果您仍想列印,可以在「偏好設定 / 控制 / 切片 / 移 msgid "No extrusions under current settings." msgstr "根據目前設定,不會進行任何列印。" +msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." +msgstr "" + msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "逐件列印模式下不支援使用平滑模式的縮時錄影。" @@ -12269,6 +12366,9 @@ msgstr "您可能想要減小模型的尺寸或更改目前的列印設定並重 msgid "Variable layer height is not supported with Organic supports." msgstr "有機樹支撐不支持可變層高。" +msgid "The wipe tower filament cannot be a mixed filament." +msgstr "" + msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution." msgstr "當啟用換料時,不同的噴嘴直徑和線材直徑可能無法正常配合。此功能屬於實驗性階段,請小心使用。" @@ -14251,6 +14351,48 @@ msgstr "支撐材料" msgid "Support material is commonly used to print supports and support interfaces." msgstr "支撐材料通常用於列印支撐體和支撐接觸面" +msgid "Is mixed filament" +msgstr "" + +msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" +msgstr "" + +msgid "Mixed filament components" +msgstr "" + +msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" +msgstr "" + +msgid "Mixed filament sublayer ratios" +msgstr "" + +msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" +msgstr "" + +msgid "Mixed filament gradient" +msgstr "" + +msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." +msgstr "" + +msgid "Mixed filament gradient range" +msgstr "" + +msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." +msgstr "" + +msgid "Mixed filament gradient curve" +msgstr "" + +msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." +msgstr "" + +msgid "Mixed filament per-part gradient" +msgstr "" + +msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." +msgstr "" + msgid "Filament printable" msgstr "線材可列印" @@ -17079,6 +17221,12 @@ msgstr "" "\n" "在以下的『擦拭前的回抽量』設定中設定一個值,將在擦拭之前執行任何額外的回抽操作;否則,將在擦拭之後執行。" +msgid "Mixed color sublayer" +msgstr "" + +msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." +msgstr "" + msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects." msgstr "換料塔的功能是用於清除噴嘴上的殘留物,同時穩定噴嘴內的壓力,從而避免列印物件時出現外觀瑕疵。" @@ -18148,6 +18296,9 @@ msgstr "模型檔案網格化失敗或沒有有效形狀" msgid "The supplied file couldn't be read because it's empty." msgstr "無法讀取提供的檔案,因為該檔案為空" +msgid "The file format is incompatible and cannot be parsed." +msgstr "" + msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "檔案格式未知。輸入的檔案必須是 .stl、.obj 或 .amf(.xml) 格式。" diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index be28ae7499..1a8a860301 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -158,6 +158,43 @@ wxColour mixed_filament_blend_color(const DynamicPrintConfig& full, size_t slot) return slot < colors.size() ? colors[slot] : wxColour("#D9D9D9"); } +// The slot's own chip as the main GUI renders it: a curve-sampled gradient swatch for a +// gradient mixed slot, the static blended colour otherwise. Returns wxNullBitmap when nothing +// could be rendered (the caller falls back to a plain label). +wxBitmap mixed_filament_chip_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz) +{ + const std::string label = std::to_string(slot + 1); + const auto* grad_opt = full.opt("filament_mixed_gradient"); + const bool is_gradient = grad_opt != nullptr && slot < grad_opt->size() && grad_opt->values[slot]; + wxBitmap* icon = nullptr; + if (is_gradient) { + // The same curve-sampled ramp the sidebar chips use; an empty ramp (broken definition) + // degrades to a plain fade between the slot's two component colours. + const std::vector ramp = mixed_gradient_ramp(full, slot, swatch_sz); + if (!ramp.empty()) { + icon = get_extruder_color_icon(std::vector(), true, label, swatch_sz, swatch_sz, &ramp); + } else { + std::vector hexes; + for (const unsigned int comp : mixed_slot_components(full, slot)) { + std::string hex = filament_color_hex(full, size_t(comp) - 1); + if (hex.empty()) + hex = "#D9D9D9"; + hexes.push_back(std::move(hex)); + } + if (hexes.size() >= 2) + icon = get_extruder_color_icon(std::move(hexes), true, label, swatch_sz, swatch_sz); + } + } + if (icon == nullptr) { + const wxColour blend = mixed_filament_blend_color(full, slot); + const std::string blend_hex = blend.IsOk() ? + std::string(wxString::Format("#%02X%02X%02X", blend.Red(), blend.Green(), blend.Blue()).ToUTF8()) : + std::string("#808080"); + icon = get_extruder_color_icon(blend_hex, label, swatch_sz, swatch_sz); + } + return icon != nullptr ? *icon : wxNullBitmap; +} + // Tab-strip bitmap for a mixed slot: the mix's own chip, then its component swatches each // followed by their percent share (or a "->" arrow for gradients), mirroring the main GUI's // sidebar rows - e.g. "[3 purple]: [1 red] 50% + [2 blue] 50%". The whole composition is one @@ -207,13 +244,10 @@ wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, auto push_text = [&](const wxString& text) { pieces.push_back({Piece::Text, wxNullBitmap, text}); }; { - const wxColour blend = mixed_filament_blend_color(full, slot); - const std::string blend_hex = blend.IsOk() ? - std::string(wxString::Format("#%02X%02X%02X", blend.Red(), blend.Green(), blend.Blue()).ToUTF8()) : - std::string("#808080"); - const size_t before = pieces.size(); - push_swatch(blend_hex, std::to_string(slot + 1)); - has_lead = pieces.size() > before; + const wxBitmap chip = mixed_filament_chip_bitmap(full, slot, swatch_sz); + has_lead = chip.IsOk(); + if (has_lead) + pieces.push_back({Piece::Swatch, chip, wxString()}); } for (size_t ci = 0; ci < comps.size(); ++ci) { if (pieces.empty()) @@ -279,6 +313,83 @@ wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, } // namespace +// Warning shown on OK when an enabled mixed-filament slot relies on a filament that would ship +// without its material. One row per unmet dependency: the mixed slot's colour chip, the +// component filament's colour chip, and the reason. "Cancel" is the safe choice and keeps the +// dialog open; "Publish anyway" continues. +class MixedFilamentWarningDialog : public MsgDialog +{ +public: + MixedFilamentWarningDialog(wxWindow* parent, const DynamicPrintConfig& full, const std::vector& issues) + : MsgDialog(parent, _L("Warning"), wxEmptyString, wxOK | wxCANCEL | wxICON_WARNING) + { + auto* content = new wxBoxSizer(wxVERTICAL); + + auto* intro = new wxStaticText(this, wxID_ANY, _L("Some mixed filaments rely on filaments that will not be published:")); + intro->SetFont(Label::Body_13); + intro->Wrap(FromDIP(400)); + content->Add(intro, 0, wxEXPAND); + content->AddSpacer(FromDIP(10)); + + const int swatch = FromDIP(20); + for (const MixedDependencyIssue& issue : issues) { + auto* row = new wxBoxSizer(wxHORIZONTAL); + + // The mixed slot as just its own chip (gradient-aware, numbered like its tab); + // falls back to a plain label when the chip cannot be built. + const wxString mix_label = wxString::Format(_L("Filament %d (mixed)"), int(issue.mixed_slot) + 1); + const wxBitmap mix_bmp = mixed_filament_chip_bitmap(full, issue.mixed_slot, swatch); + if (mix_bmp.IsOk()) { + auto* bmp = new wxStaticBitmap(this, wxID_ANY, mix_bmp); + bmp->SetToolTip(mix_label); + row->Add(bmp, 0, wxALIGN_CENTER_VERTICAL); + } else { + auto* label = new wxStaticText(this, wxID_ANY, mix_label); + label->SetFont(Label::Body_12); + row->Add(label, 0, wxALIGN_CENTER_VERTICAL); + } + + auto* needs = new wxStaticText(this, wxID_ANY, _L("needs")); + needs->SetFont(Label::Body_12); + needs->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + row->Add(needs, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, FromDIP(6)); + + // The component filament's colour chip, numbered like the tab strips; the slot + // name stays on hover to keep the row itself short. + std::string hex = filament_color_hex(full, issue.component_slot); + if (hex.empty()) + hex = "#D9D9D9"; + if (wxBitmap* chip = get_extruder_color_icon(hex, std::to_string(issue.component_slot + 1), swatch, swatch)) { + auto* comp_bmp = new wxStaticBitmap(this, wxID_ANY, *chip); + comp_bmp->SetToolTip(wxString::Format(_L("Filament %d"), int(issue.component_slot) + 1)); + row->Add(comp_bmp, 0, wxALIGN_CENTER_VERTICAL); + } + + auto* reason = new wxStaticText(this, wxID_ANY, + issue.reason == MixedDependencyIssue::Reason::Disabled ? _L("not enabled") : _L("material not published")); + reason->SetFont(Label::Body_12); + reason->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#989898"))); + row->Add(reason, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + + content->Add(row, 0, wxLEFT, FromDIP(10)); + content->AddSpacer(FromDIP(6)); + } + + auto* hint = new wxStaticText(this, wxID_ANY, + _L("To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement.")); + hint->SetFont(Label::Body_12); + hint->Wrap(FromDIP(380)); + content->Add(hint, 0, wxEXPAND | wxTOP, FromDIP(4)); + + content_sizer->Add(content, 0, wxEXPAND); + + SetButtonLabel(wxID_OK, _L("Publish anyway")); + SetButtonLabel(wxID_CANCEL, _L("Cancel"), true); // safe choice gets the focus + + finalize(); + } +}; + PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_spec(const DynamicPrintConfig& full, size_t slot) { MixedVisualSpec spec; @@ -417,20 +528,11 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { // Publish is always allowed: no settings selected means no settings override. Warn only - // when an enabled mixed filament would ship without the identity of one of its - // components; "Proceed" accepts that and publishes anyway. - if (const std::vector missing = unpublished_mixed_components(); !missing.empty()) { - wxString missing_list; - for (size_t i = 0; i < missing.size(); ++i) { - if (i > 0) - missing_list += ", "; - missing_list += wxString::Format(_L("Filament %d"), int(missing[i] + 1)); - } - const wxString msg = _L("The following filaments are used by published mixed filaments but will not carry their material identity:") - + wxString(" ") + missing_list; - MessageDialog warn(this, msg, _L("Warning"), wxICON_WARNING); - warn.AddButton(wxID_CANCEL, _L("Cancel"), true); // safe choice gets the focus - warn.AddButton(wxID_OK, _L("Proceed"), false); + // when an enabled mixed filament would ship without the material of one of its + // components; "Publish anyway" accepts that and publishes anyway. + if (const std::vector issues = unpublished_mixed_components(); !issues.empty()) { + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + MixedFilamentWarningDialog warn(this, full, issues); if (warn.ShowModal() != wxID_OK) return; // Cancel: dismiss the warning and stay in this dialog } @@ -1712,9 +1814,9 @@ std::vector PublishSettingsDialog::GetPublishedKeys() const return out; } -std::vector PublishSettingsDialog::unpublished_mixed_components() const +std::vector PublishSettingsDialog::unpublished_mixed_components() const { - std::set missing; + std::vector out; for (const Category& cat : m_categories) { if (!cat.is_mixed || cat.section != Section::Material) continue; @@ -1739,7 +1841,7 @@ std::vector PublishSettingsDialog::unpublished_mixed_components() const // "Full Publish" nor the "Type" requirement row checked. Colour never counts: // the receiver renders the mix from its own components' colours. if (!comp_cat->enable_check->GetValue()) { - missing.insert(component_slot); + out.push_back({cat.filament_slot, component_slot, MixedDependencyIssue::Reason::Disabled}); continue; } if (comp_cat->full_check != nullptr && comp_cat->full_check->GetValue()) @@ -1753,10 +1855,15 @@ std::vector PublishSettingsDialog::unpublished_mixed_components() const } } if (!type_checked) - missing.insert(component_slot); + out.push_back({cat.filament_slot, component_slot, MixedDependencyIssue::Reason::MaterialNotPublished}); } } - return std::vector(missing.begin(), missing.end()); + // Deterministic order for the warning rows: by mixed slot, then component slot. The same + // (mix, component) pair cannot repeat: each mix's components come from a config list. + std::sort(out.begin(), out.end(), [](const MixedDependencyIssue& a, const MixedDependencyIssue& b) { + return std::tie(a.mixed_slot, a.component_slot) < std::tie(b.mixed_slot, b.component_slot); + }); + return out; } std::vector PublishSettingsDialog::GetPublishedMaterialKeys() const diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 60c33e5a2d..8d59192309 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -28,6 +28,17 @@ struct PublishMaterialIdentity std::string id; }; +// One unmet dependency of an enabled mixed-filament slot: the component filament the mix uses +// would ship without its material (either the component slot is not enabled at all, or it is +// enabled with neither "Full Publish" nor the "Type" requirement checked). Slots are 0-based. +struct MixedDependencyIssue +{ + enum class Reason { Disabled, MaterialNotPublished }; + size_t mixed_slot{0}; + size_t component_slot{0}; + Reason reason{Reason::Disabled}; +}; + // Dialog letting a model author select which settings get embedded in a 3MF. Nested tab layout // mirroring the Process settings (Printer / Filament / Process outer tabs, category or material // tabs inside each). Dirty settings are pre-checked and shown bold; on OK the print rows become @@ -187,11 +198,11 @@ private: // "Enable" toggled on a material slot: reveals/hides everything below the header and, for a // mixed slot, auto-selects its component filaments' "Enable" + "Full Publish" toggles. void on_enable_toggle(size_t category_index); - // 0-based material slots required by enabled mixed-filament slots that would ship without - // their identity: "Enable" not checked, or enabled with neither "Full Publish" nor the + // Unmet dependencies of enabled mixed-filament slots, one record per (mix, component) pair: + // "Enable" not checked on the component, or enabled with neither "Full Publish" nor the // "Type" requirement row checked. Colour is deliberately ignored (the receiver renders the - // mix from its own components' colours). Sorted, deduplicated. - std::vector unpublished_mixed_components() const; + // mix from its own components' colours). Sorted by mixed slot, then component slot. + std::vector unpublished_mixed_components() const; // Read-only visualization of a mixed slot's definition (a stacked ratio bar, or the // Material Ratio vs Model Height graph for a gradient), inserted above the info hint // inside the category's scroll area. From a62db72e023c6c85adadd2d175637087f8d9ad81 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 28 Aug 2026 15:24:03 +0800 Subject: [PATCH 033/162] Publish 3MF: import-side hardening and test coverage Validate mixed-filament definitions during the published material pass: definitions whose components reference slots that do not exist or hold other mixed filaments, or that carry fewer than two components, are reported through the shared skipped_keys channel instead of shipping a mix the GUI integrity check would only flag later. Fix the slot-limit exhaustion report being silently dropped: it wrote to published_config->skipped_keys, which the pass's final move-assignment from the local vector clobbers. All rejections now go through the local. Remove the unreachable persist branch from add_detached_preset: no caller passes save_to_project=false, so the parameter is gone and the copy is always project-embedded. Tests: cover the exhaustion path, the new definition validation, the identity-tier matching matrix (including substitute reporting), the structural-key denylist, whole-vector size-mismatch skips, relocation payload degradation, the "(Published 2)" uniquify chain, mixed blend colours staying out of shared preset configs, and duplicate-slot last-wins. Also fix the legacy-3mf scenario passing vacuously behind an if-guarded assertion. All existing published/3mf tests pass unchanged. --- src/libslic3r/Preset.cpp | 20 +- src/libslic3r/Preset.hpp | 12 +- src/libslic3r/PresetBundle.cpp | 53 +- tests/libslic3r/test_3mf.cpp | 7 +- .../libslic3r/test_preset_bundle_loading.cpp | 517 ++++++++++++++++++ 5 files changed, 582 insertions(+), 27 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 908bdec2b3..6646d98e71 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -3064,14 +3064,14 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det // diff against a parent; the caller decides whether to select it. // The published entry's filament_id is forwarded so user bases keep their stable // material grouping (get_filament_presets() groups user bases by filament_id). -// save_to_project=true (the Full Publish default) creates a project-embedded preset: -// it lives inside the loaded project only (serialized into the saved .3mf, restored by -// load_project_embedded_presets) and never touches the user's library directory; -// Preset::save() early-returns for embedded presets, so persistence is skipped here too. +// The copy is a project-embedded preset: it lives inside the loaded project only +// (serialized into the saved .3mf, restored by load_project_embedded_presets) and +// never touches the user's library directory; Preset::save() early-returns for +// embedded presets, so persistence is skipped here too. // Returns the final (uniquified) name; on collision "" -> " (Published)" -> // " (Published 2)" ... std::string PresetCollection::add_detached_preset(const std::string &name_base, DynamicPrintConfig config, - const std::string &filament_id, bool save_to_project) + const std::string &filament_id) { if (name_base.empty()) return std::string(); @@ -3111,7 +3111,7 @@ std::string PresetCollection::add_detached_preset(const std::string &name_base, preset.bundle_id.clear(); preset.file = this->path_for_preset(preset); preset.is_visible = true; - preset.is_project_embedded = save_to_project; + preset.is_project_embedded = true; if (m_type == Preset::TYPE_PRINT) preset.config.option("print_settings_id", true)->value = final_name; else if (m_type == Preset::TYPE_FILAMENT) @@ -3120,14 +3120,6 @@ std::string PresetCollection::add_detached_preset(const std::string &name_base, preset.config.option("printer_settings_id", true)->value = final_name; unlock(); - if (!save_to_project) { - // Persist the full resolved config (no parent). Project-embedded presets are - // serialized into the .3mf instead; Preset::save() would early-return anyway. - // find by final_name — m_presets may have reallocated, so don't keep a raw ref. - auto persist_it = this->find_preset_internal(final_name); - if (persist_it != m_presets.end() && persist_it->name == final_name) - persist_it->save(nullptr); - } return final_name; } diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index e904851a1d..85908b95a5 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -639,16 +639,14 @@ public: // preset's stable material grouping (get_filament_presets groups user bases by // filament_id); the published entry's filament_id is forwarded so the copy keeps // the author's grouping. - // With save_to_project=true (default) the copy is a project-embedded preset - // ("Preset Inside Project"): it lives inside the loaded project only, is serialized - // into the saved .3mf via get_current_project_embedded_presets(), and is never - // written to the user's library directory. With false it persists as a normal - // user preset file. + // The copy is a project-embedded preset ("Preset Inside Project"): it lives inside + // the loaded project only, is serialized into the saved .3mf via + // get_current_project_embedded_presets(), and is never written to the user's + // library directory. // Returns the final (uniquified) name; on collision the suffix rule is: // "" -> " (Published)" -> " (Published 2)" ... std::string add_detached_preset(const std::string &name_base, DynamicPrintConfig config, - const std::string &filament_id = std::string(), - bool save_to_project = true); + const std::string &filament_id = std::string()); // Delete the current preset, activate the first visible preset. // returns true if the preset was deleted successfully. diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b6b816b587..3219dec6d8 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5466,8 +5466,10 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, const std::string material_label = !entry.filament_id.empty() ? entry.filament_id : !entry.publish_type_value.empty() ? entry.publish_type_value : entry.filament_type; - published_config->skipped_keys.emplace_back("material:" + material_label + - " (mixed filament definition: filament slot limit reached)"); + // The local skipped_keys is published wholesale at the end of the pass; + // writing published_config->skipped_keys here would be clobbered by it. + skipped_keys.emplace_back("material:" + material_label + + " (mixed filament definition: filament slot limit reached)"); BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot << " could not be placed: all " << next_free_slot << " slots exhausted"; entry_it = published_config->material_keys.erase(entry_it); @@ -5880,6 +5882,19 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // slots wrote to it; that compound case is not chased.) const bool edited_survives_load = this->filament_presets.empty() || this->filament_presets.front() == this->filaments.get_edited_preset().name; + // Final layout for mix-definition validation: every slot that will hold a + // mixed definition once this load completes - the receiver's own virtual + // slots plus each published mixed entry's final (possibly relocated) slot. + // Mix components are 1-based slot numbers, so a component is valid only + // when the slot it names exists and does not itself hold a mixed filament. + std::set mixed_final_slots; + for (const PublishedMaterialEntry& mix_entry : published_config->material_keys) + if (mix_entry.slot >= 0 && is_mixed_definition(mix_entry)) + mixed_final_slots.insert(mix_entry.slot); + for (size_t i = 0; i < this->filament_presets.size(); ++i) + if (this->is_mixed_filament(i)) + mixed_final_slots.insert(int(i)); + const size_t mixed_final_slot_count = this->filament_presets.size(); // Full Publish within-load dedup: identical Full materials (same setting_id // + preset_name identity) share one created instance, so an author who // pointed two slots at one preset yields one standalone copy here. @@ -5900,6 +5915,40 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, entry.publish_type_value) : entry.filament_id; + // Import-side validation of a mixed-filament definition: the publish + // dialog cannot produce a definition whose components reference slots + // that do not exist or hold other mixed filaments, so a broken one here + // means the payload itself is broken (hand-crafted or corrupt file). + // Report it through the same channel as every other rejected input and + // skip the entry, instead of shipping a mix the GUI integrity check + // (check_mixed_filament_integrity) would only flag later. A payload + // that omits the mixed arrays entirely is not an error here: the key + // routing below reports those per key as usual. + if (is_mixed_definition(entry)) { + std::string mix_error; + if (const ConfigOptionStrings* comp_opt = config.opt("filament_mixed_components"); + comp_opt != nullptr && entry.slot < static_cast(comp_opt->values.size())) { + const std::vector comps = parse_mixed_components(comp_opt->values[entry.slot]); + if (comps.size() < 2) + // An empty definition cell counts as broken too: applying it + // would ship a mix the sidebar would only flag later. + mix_error = "needs at least two components"; + else + for (unsigned int comp : comps) + if (comp < 1 || size_t(comp) > mixed_final_slot_count || + mixed_final_slots.count(int(comp) - 1) != 0) { + mix_error = "components reference missing slots"; + break; + } + } + if (!mix_error.empty()) { + skipped_keys.emplace_back("material:" + material_label + " (mixed filament definition: " + mix_error + ")"); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot + << " rejected: " << mix_error; + continue; + } + } + // Full Publish: always create a standalone detached copy (even on exact // identity match) as a "Preset Inside Project" (project-embedded: lives // in this project only, never written to the library), universally diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index 37147b93b8..f595926699 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -688,10 +688,9 @@ SCENARIO("Legacy 3MF without published metadata loads unchanged", "[3mf]") { LoadStrategy::LoadModel | LoadStrategy::LoadConfig); THEN("no published key is fabricated") { REQUIRE(loaded); - if (dst_model.model_info != nullptr) { - REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_TAG) == 0); - REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_KEYS_TAG) == 0); - } + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_TAG) == 0); + REQUIRE(dst_model.model_info->metadata_items.count(ORCA_PUBLISHED_KEYS_TAG) == 0); } release_PlateData_list(dst_plates); } diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 931f9e96c3..356645d06c 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -3279,3 +3279,520 @@ TEST_CASE("remap_model_filament_slots repoints extruder configs and color painti CHECK_FALSE(TriangleSelector::has_facets(chained.objects[0]->volumes.front()->mmu_segmentation_facets.get_data(), EnforcerBlockerType(5))); } + +// The slot ceiling (EnforcerBlockerType::ExtruderMax) is what the color-painting encoding can +// address, so a mixed filament that does not fit must be dropped and reported instead of being +// forced onto one of the receiver's physical filaments. +TEST_CASE("Published 3MF drops a mixed filament that does not fit the slot limit and reports it", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + // A receiver already at the format's slot ceiling. + bundle.set_num_filaments(unsigned(EnforcerBlockerType::ExtruderMax), "#123456"); + const std::vector receiver_colours = + bundle.project_config.opt("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.slot = int(EnforcerBlockerType::ExtruderMax) + 6; // beyond the ceiling + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // Nothing grew and no slot became a virtual mix. + REQUIRE(bundle.filament_presets.size() == size_t(EnforcerBlockerType::ExtruderMax)); + for (size_t i = 0; i < bundle.filament_presets.size(); ++i) + CHECK_FALSE(bundle.is_mixed_filament(i)); + // The receiver's colours were not touched. + CHECK(bundle.project_config.opt("filament_colour")->values == receiver_colours); + // The mix was reported instead of being applied. + REQUIRE(contains_key(pub.skipped_keys, "material:PLA (mixed filament definition: filament slot limit reached)")); + CHECK(pub.material_replacements.empty()); +} + +// The publish dialog can only produce definitions whose components reference existing physical +// slots, so a payload whose components point at slots that do not exist (or at another mixed +// slot) or that carries fewer than two components is broken. The load reports it through the +// same channel as every other rejected input instead of shipping a mix the GUI integrity check +// would only flag later. +TEST_CASE("Published 3MF rejects a mixed filament definition with impossible components", "[Preset][Bundle][Published]") +{ + // A two-physical-plus-one-mix author file; the definition under test sits on slot 2. + auto make_file_config = [](const std::string &components) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt("filament_mixed_components")->values = { "", "", components }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + return config; + }; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + for (const char *components : { "1,4", "1,3", "1" }) { + // The claimed components: "1,4" names a slot past the final count, "1,3" names the mix + // slot itself (1-based), "1" is not enough components to blend. + INFO("components = " << components); + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + bundle.filament_presets = { "My PLA" }; + + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(components); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition was rejected, not applied: the slot stays a plain (grown) slot. + REQUIRE(bundle.filament_presets.size() == 3); + CHECK_FALSE(bundle.is_mixed_filament(2)); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[2].empty()); + CHECK(bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2].empty()); + // Reported through the shared rejection channel. + if (std::string(components) == "1") + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); + else + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: components reference missing slots)")); + // The blended colour was not written into the (shared) slot preset either. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == + std::vector{ "#123456" }); + CHECK(pub.material_replacements.empty()); + } +} + +// The relocation shifts cells inside the file's per-slot mixed arrays; a payload too short to +// actually carry the definition degrades to empty cells, which the definition validation then +// reports - an empty mix must not ship as a virtual slot. +TEST_CASE("Published 3MF reports a relocated mixed filament whose payload cells are missing", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(5, "#123456"); + const std::vector receiver_colours = + bundle.project_config.opt("filament_colour")->values; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 3; // authored slot 3; the receiver's five real slots occupy 0-4 + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + // The file's mixed arrays only cover its single physical slot: the definition data for + // slot 3 does not exist in the payload. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75 }; + config.opt("filament_self_index")->values = { 1 }; + config.opt("filament_extruder_variant")->values = { "Direct Drive Standard" }; + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt("filament_type")->values = { "PLA" }; + config.opt("filament_vendor")->values = { "Generic" }; + config.opt("filament_is_mixed")->values = { 0 }; + config.opt("filament_mixed_components")->values = { "" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "" }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The mix was relocated past the physical territory... + REQUIRE(pub.mixed_slot_relocations.size() == 1); + CHECK(pub.mixed_slot_relocations.at(3) == 5); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0].find("slot 3 -> slot 5") != std::string::npos); + // ...and the receiver grew to hold the destination slot, but the definition itself was + // rejected: the relocated cells degraded to empty defaults and were reported. + REQUIRE(bundle.filament_presets.size() == 6); + CHECK_FALSE(bundle.is_mixed_filament(5)); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[5].empty()); + CHECK(bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[5].empty()); + CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); + // The five real slots kept their colours. + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt("filament_colour")->values.begin())); +} + +// A grown slot's material is chosen by identity tiers: exact preset name, then the bare +// name/alias form, then exact setting_id, then exact filament_id, then vendor+type, then type +// only. Each section pits two adjacent tiers against each other. +TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Preset][Bundle][Published]") +{ + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + PublishedMaterialEntry entry; + entry.slot = 2; + entry.filament_type = "PLA"; + + SECTION("an exact preset name outranks the bare-name form") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &bare = add_inmemory_preset(bundle.filaments, "Authored PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + Preset &exact = add_inmemory_preset(bundle.filaments, "Authored PLA @Vendor"); + exact.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Authored PLA @Vendor"); + CHECK(pub.material_replacements.empty()); + } + + SECTION("a bare name outranks an exact setting_id") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &bare = add_inmemory_preset(bundle.filaments, "Authored PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + Preset &sid = add_inmemory_preset(bundle.filaments, "Bbb PLA"); + sid.config.opt_string("filament_type", 0u) = "PLA"; + sid.setting_id = "SID123"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name + entry.setting_id = "SID123"; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Authored PLA"); + } + + SECTION("an exact setting_id outranks an exact filament_id") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &sid = add_inmemory_preset(bundle.filaments, "Bbb PLA"); + sid.config.opt_string("filament_type", 0u) = "PLA"; + sid.setting_id = "SID123"; + Preset &fid = add_inmemory_preset(bundle.filaments, "Ccc PLA"); + fid.config.opt_string("filament_type", 0u) = "PLA"; + fid.filament_id = "GFA00"; + bundle.filament_presets = { "My PLA" }; + + entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name + entry.setting_id = "SID123"; + entry.filament_id = "GFA00"; + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[2] == "Bbb PLA"); + } + + SECTION("a vendor+type match is reported as a substitute") + { + PresetBundle bundle; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); + mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &exact_vendor = add_inmemory_preset(bundle.filaments, "Aaa PLA"); + exact_vendor.config.opt_string("filament_type", 0u) = "PLA"; + exact_vendor.config.opt_string("filament_vendor", 0u) = "Generic"; + Preset &other_vendor = add_inmemory_preset(bundle.filaments, "Zzz PLA"); + other_vendor.config.opt_string("filament_type", 0u) = "PLA"; + other_vendor.config.opt_string("filament_vendor", 0u) = "Other"; + bundle.filament_presets = { "My PLA" }; + + entry.filament_vendor = "Generic"; // no name or id identity: the family tiers decide + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + CHECK(bundle.filament_presets[1] == "My PLA"); + // The same-vendor PLA outranks the type-only candidate... + CHECK(bundle.filament_presets[2] == "Aaa PLA"); + // ...and since it is not an exact material match, the load says so. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: Aaa PLA (substitute: no exact material match)"); + } +} + +// Structural keys (identity links like filament_ids / inherits / printer_settings_id) are +// never applied onto the receiver and never reported: a hand-crafted file listing them must +// not trigger the "could not be applied" warning, while unknown keys still do. +TEST_CASE("Published 3MF silently ignores structural keys in published_keys", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt_float("layer_height") = 0.28; + Preset::normalize(config); + + PresetBundle bundle; + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + const std::vector ids_before = + bundle.filaments.get_edited_preset().config.opt("filament_settings_id")->values; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "filament_ids", "inherits", "printer_settings_id", "layer_height", "not_a_setting" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The real setting applied... + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 1e-6)); + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + // ...the structural keys were neither applied nor reported... + CHECK_FALSE(contains_key(pub.skipped_keys, "filament_ids")); + CHECK_FALSE(contains_key(pub.skipped_keys, "inherits")); + CHECK_FALSE(contains_key(pub.skipped_keys, "printer_settings_id")); + CHECK(bundle.filaments.get_edited_preset().config.opt("filament_settings_id")->values == ids_before); + // ...while an unknown key still reports. + CHECK(contains_key(pub.skipped_keys, "not_a_setting")); +} + +// A whole-vector key requires the receiver's vector to have the same number of elements as the +// author's: pasting a 3-extruder list into a 2-extruder machine would overwrite the wrong +// elements, so the key is reported as skipped and the receiver keeps its own values. +TEST_CASE("Published 3MF skips a whole-vector key whose size does not match the receiver", "[Preset][Bundle][Published]") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_colour")->values = { "#FF0000" }; + config.opt_float("layer_height") = 0.28; + // Author's wiping matrix sized for three extruders. + config.set_key_value("wiping_volumes_extruders", new ConfigOptionFloats({ 10., 20., 30. })); + Preset::normalize(config); + + PresetBundle bundle; + // Receiver sized for two extruders. + bundle.prints.get_edited_preset().config.set_key_value("wiping_volumes_extruders", new ConfigOptionFloats({ 40., 50. })); + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.1; + + PublishedConfig pub; + pub.published = true; + pub.published_keys = { "wiping_volumes_extruders", "layer_height" }; + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + check_double_vector(bundle.prints.get_edited_preset().config.opt("wiping_volumes_extruders")->values, + { 40., 50. }); + CHECK(contains_key(pub.skipped_keys, "wiping_volumes_extruders")); + // The matching scalar key still applied. + CHECK_FALSE(contains_key(pub.skipped_keys, "layer_height")); + CHECK_THAT(bundle.prints.get_edited_preset().config.opt_float("layer_height"), Catch::Matchers::WithinAbs(0.28, 1e-6)); +} + +// The uniquify chain continues past the first suffix: with both "X" and "X (Published)" already +// present, the next imported copy of "X" lands as "X (Published 2)" and leaves the others alone. +TEST_CASE("Published 3MF uniquifies a second imported full material as (Published 2)", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + petg.config.opt("filament_retraction_length", true)->values = { 0.6 }; + Preset &bare = add_inmemory_preset(bundle.filaments, "Generic PLA"); + bare.config.opt_string("filament_type", 0u) = "PLA"; + bare.config.opt("filament_retraction_length", true)->values = { 0.5 }; + Preset &pub1 = add_inmemory_preset(bundle.filaments, "Generic PLA (Published)"); + pub1.config.opt_string("filament_type", 0u) = "PLA"; + pub1.config.opt("filament_retraction_length", true)->values = { 0.5 }; + bundle.filament_presets = { "My PETG" }; + + PublishedMaterialEntry entry; + entry.slot = 0; + entry.full = true; + entry.publish_type = true; + entry.publish_type_value = "PLA"; + entry.preset_name = "Generic PLA @Qidi Q2 0.4 nozzle"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets[0] == "Generic PLA (Published 2)"); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published 2)", false, true) + ->config.opt("filament_retraction_length")->values, + { 0.9 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true) + ->config.opt("filament_retraction_length")->values, + { 0.5 }); + check_double_vector(bundle.filaments.find_preset("Generic PLA (Published)", false, true) + ->config.opt("filament_retraction_length")->values, + { 0.5 }); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 0: My PETG -> Generic PLA (Published 2) (published material imported)"); + CHECK(pub.skipped_keys.empty()); +} + +// A mixed filament's blended colour is a swatch for the project's colour strip only: it must +// never be written into the slot's (possibly shared) preset config, or every slot referencing +// that preset would turn into the blend colour. +TEST_CASE("Published 3MF never writes a mixed filament's blended colour into the slot's preset", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#123456" }; + Preset &petg = add_inmemory_preset(bundle.filaments, "My PETG"); + petg.config.opt_string("filament_type", 0u) = "PETG"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3); + bundle.project_config.opt("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt("filament_mixed_components")->values[2] = "1,1"; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2] = "0.5,0.5"; + + PublishedMaterialEntry mix; + mix.filament_type = "PLA"; + mix.filament_vendor = "Generic"; + mix.filament_id = "GFL99"; + mix.slot = 2; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#0000FF", "#800080" }; + config.opt("filament_type")->values = { "PLA", "PETG", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_is_mixed")->values = { 0, 0, 1 }; + config.opt("filament_mixed_components")->values = { "", "", "1,2" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "0.6,0.4" }; + config.opt("filament_mixed_gradient")->values = { 0, 0, 1 }; + config.opt("filament_mixed_gradient_range")->values = { "", "", "0.9,0.1" }; + config.opt("filament_mixed_gradient_curve")->values = { "", "", "0,0.1|1,0.9" }; + config.opt("filament_mixed_gradient_per_part")->values = { 0, 0, 1 }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The definition applied like-for-like onto the virtual slot... + CHECK(bundle.filament_presets.size() == 3); + CHECK(bundle.is_mixed_filament(2)); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[2] == "1,2"); + // ...the blend colour landed in the project strip only... + CHECK(bundle.project_config.opt("filament_colour")->values[2] == "#800080"); + // ...and the shared preset kept its own colour: slots 0 and 1 render unchanged. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == + std::vector{ "#123456" }); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); +} + +// Duplicate entries for the same authored slot only occur in hand-crafted files (the dialog +// emits one entry per slot); the load's contract under that input is deterministic last-wins, +// not corruption. +TEST_CASE("Published 3MF applies duplicate entries for one slot last-wins", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + pla.config.opt("filament_colour", true)->values = { "#000000" }; + bundle.filament_presets = { "My PLA" }; + + auto make_entry = [](const char *color) { + PublishedMaterialEntry entry; + entry.slot = 0; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_retraction_length" }; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_entry("#AA0000"), make_entry("#BB0000") }; + DynamicPrintConfig config = published_pla_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The second entry won both the project strip and the slot's preset. + CHECK(bundle.project_config.opt("filament_colour")->values[0] == "#BB0000"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == + std::vector{ "#BB0000" }); + check_double_vector(bundle.filaments.find_preset("My PLA", false, true) + ->config.opt("filament_retraction_length")->values, + { 0.9 }); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.material_replacements.empty()); +} From d9fa43f1d7e867cc315beecef2eeb06604a5118e Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Fri, 28 Aug 2026 19:40:31 +0800 Subject: [PATCH 034/162] fix: add opc support for ota workflow --- src/slic3r/Utils/PresetUpdater.cpp | 159 ++++++++++++++++++----------- 1 file changed, 100 insertions(+), 59 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 56a2b66b49..db29c7abf7 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -29,6 +29,7 @@ #include "libslic3r/format.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/PresetCacheFormat.hpp" #include "libslic3r_version.h" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" @@ -96,6 +97,8 @@ struct Update bool forced_update; //BBS: add directory support bool is_directory {false}; + // Orca: a vendor update may be the cache-only form. + bool is_opc {false}; Update() {} //BBS: add directory support @@ -131,6 +134,18 @@ struct Update } else { copy_file_fix(source, target); + + // A vendor must be installed in exactly one form. Remove the + // representation that would otherwise be stale or shadow this one. + boost::system::error_code ec; + if (is_opc) { + fs::remove(target.parent_path() / (vendor + ".json"), ec); + ec.clear(); + fs::remove_all(target.parent_path() / vendor, ec); + } + else { + fs::remove(target.parent_path() / (vendor + ".opc"), ec); + } } } @@ -708,6 +723,7 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) fs::remove_all(cache_profile_path / vendor_id, ec); fs::remove(cache_profile_path / (vendor_id + ".json"), ec); fs::remove(cache_profile_path / (vendor_id + ".changelog"), ec); + fs::remove(cache_profile_path / (vendor_id + ".opc"), ec); // Download the zip BOOST_LOG_TRIVIAL(info) << "[Orca Updater] downloading update for " << vendor_id @@ -735,7 +751,7 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) if (!download_ok || cancel || vendor_check_cancel) return; // Extract vendor profile bundles under ota/profiles. The downloaded zip contains - // the vendor json/folder at its root. + // either the vendor json/folder or the vendor cache at its root. BOOST_LOG_TRIVIAL(info) << "[Orca Updater] extracting update for " << vendor_id; if (!extract_file(download_file, cache_profile_path)) { BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] extraction failed for " << vendor_id; @@ -1147,68 +1163,93 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version if (!fs::exists(cache_profile_path)) return updates; - for (auto &dir_entry : boost::filesystem::directory_iterator(cache_profile_path)) { - const auto &path = dir_entry.path(); - std::string file_path = path.string(); - if (is_json_file(file_path)) { - const auto path_in_vendor = vendor_path / path.filename(); - std::string vendor_name = path.filename().string(); - // Remove the .json suffix. - vendor_name.erase(vendor_name.size() - 5); - auto print_in_cache = (cache_profile_path / vendor_name / PRESET_PRINT_NAME); - auto filament_in_cache = (cache_profile_path / vendor_name / PRESET_FILAMENT_NAME); - auto machine_in_cache = (cache_profile_path / vendor_name / PRESET_PRINTER_NAME); + for (auto &dir_entry : boost::filesystem::directory_iterator(cache_profile_path)) { + const auto &path = dir_entry.path(); + std::string file_path = path.string(); + const bool is_opc_file = boost::iequals(path.extension().string(), ".opc"); + if (!is_json_file(file_path) && !is_opc_file) + continue; - if (is_vendor_installed(vendor_name) - || fs::exists(print_in_cache) - || fs::exists(filament_in_cache) - || fs::exists(machine_in_cache)) { - // Orca: a vendor installed as a preset cache carries its version there. - Semver vendor_ver = installed_vendor_version(vendor_name); + const std::string vendor_name = path.stem().string(); + auto print_in_cache = (cache_profile_path / vendor_name / PRESET_PRINT_NAME); + auto filament_in_cache = (cache_profile_path / vendor_name / PRESET_FILAMENT_NAME); + auto machine_in_cache = (cache_profile_path / vendor_name / PRESET_PRINTER_NAME); - std::map key_values; - std::vector keys(3); - Semver cache_ver; - keys[0] = BBL_JSON_KEY_VERSION; - keys[1] = BBL_JSON_KEY_DESCRIPTION; - keys[2] = BBL_JSON_KEY_FORCE_UPDATE; - get_values_from_json(file_path, keys, key_values); - std::string description = key_values[BBL_JSON_KEY_DESCRIPTION]; - bool force_update = false; - if (key_values.find(BBL_JSON_KEY_FORCE_UPDATE) != key_values.end()) - force_update = (key_values[BBL_JSON_KEY_FORCE_UPDATE] == "1")?true:false; - auto config_version = Semver::parse(key_values[BBL_JSON_KEY_VERSION]); - if (config_version) - cache_ver = *config_version; + if (is_vendor_installed(vendor_name) + || is_opc_file + || fs::exists(print_in_cache) + || fs::exists(filament_in_cache) + || fs::exists(machine_in_cache)) { + // Orca: a vendor installed as a preset cache carries its version there. + Semver vendor_ver = installed_vendor_version(vendor_name); - std::string changelog; - std::string changelog_file = (cache_profile_path / (vendor_name + ".changelog")).string(); - boost::nowide::ifstream ifs(changelog_file); - if (ifs) { - std::ostringstream oss; - oss<< ifs.rdbuf(); - changelog = oss.str(); - ifs.close(); - } + Semver cache_ver; + std::string description; + bool force_update = false; + if (is_opc_file) { + cache_ver = VendorCacheFile::usable_version(file_path, vendor_name); + if (!cache_ver.valid()) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater]:ignoring unreadable vendor cache " << file_path; + continue; + } + } + else { + std::map key_values; + std::vector keys(3); + keys[0] = BBL_JSON_KEY_VERSION; + keys[1] = BBL_JSON_KEY_DESCRIPTION; + keys[2] = BBL_JSON_KEY_FORCE_UPDATE; + get_values_from_json(file_path, keys, key_values); + description = key_values[BBL_JSON_KEY_DESCRIPTION]; + if (key_values.find(BBL_JSON_KEY_FORCE_UPDATE) != key_values.end()) + force_update = (key_values[BBL_JSON_KEY_FORCE_UPDATE] == "1")?true:false; + auto config_version = Semver::parse(key_values[BBL_JSON_KEY_VERSION]); + if (config_version) + cache_ver = *config_version; + } - if (vendor_ver < cache_ver) { - BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:need to update settings from " << vendor_ver.to_string() - << " to newer version " << cache_ver.to_string() << ", app version " << SLIC3R_VERSION; - Version version; - version.config_version = cache_ver; - version.comment = description; - // Orca: update vendor.json - updates.updates.emplace_back(std::move(file_path), path_in_vendor.string(), std::move(version), vendor_name, changelog, "", force_update, false); - //Orca: update vendor folder - updates.updates.emplace_back(cache_profile_path / vendor_name, vendor_path / vendor_name, Version(), vendor_name, "", "", force_update, true); - } else { - BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:cached settings for " << vendor_name - << " are not newer than installed version, installed " << vendor_ver.to_string() - << ", cached " << cache_ver.to_string(); - } - } - } - } + std::string changelog; + std::string changelog_file = (cache_profile_path / (vendor_name + ".changelog")).string(); + boost::nowide::ifstream ifs(changelog_file); + if (ifs) { + std::ostringstream oss; + oss<< ifs.rdbuf(); + changelog = oss.str(); + ifs.close(); + } + + if (vendor_ver < cache_ver) { + BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:need to update settings from " << vendor_ver.to_string() + << " to newer version " << cache_ver.to_string() << ", app version " << SLIC3R_VERSION; + Version version; + version.config_version = cache_ver; + version.comment = description; + if (is_opc_file) { + // A cache contains the vendor profile and all presets. + // Install it directly; Update::install removes any + // superseded JSON representation. + auto &update = updates.updates.emplace_back( + std::move(file_path), vendor_path / (vendor_name + ".opc"), + std::move(version), vendor_name, changelog, "", force_update, false); + update.is_opc = true; + } + else { + // JSON profile and its preset directory are installed + // separately, as before. + updates.updates.emplace_back(std::move(file_path), + vendor_path / (vendor_name + ".json"), std::move(version), + vendor_name, changelog, "", force_update, false); + updates.updates.emplace_back(cache_profile_path / vendor_name, + vendor_path / vendor_name, Version(), vendor_name, + "", "", force_update, true); + } + } else { + BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:cached settings for " << vendor_name + << " are not newer than installed version, installed " << vendor_ver.to_string() + << ", cached " << cache_ver.to_string(); + } + } + } return updates; } From 06517e623f0bcd61518dfe9409d77eac2b73ada2 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 31 Aug 2026 10:46:23 +0800 Subject: [PATCH 035/162] Fixes issue where user imports a 3MF file where filament slots exceeds the maximum number of slots that user has on its printer --- src/libslic3r/PresetBundle.cpp | 183 ++++++++--- src/libslic3r/PublishSettings.hpp | 7 + .../libslic3r/test_preset_bundle_loading.cpp | 296 ++++++++++++++++++ 3 files changed, 446 insertions(+), 40 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 3219dec6d8..0e82046ce9 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5407,6 +5407,11 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // preset no other slot references wins on equal scores; with no replacement // available the receiver's material is kept and the keys are reported as skipped; // - colour: applied to the slot regardless of the type gate. + // - capacity: on a non-SEMM receiver whose printer has fewer nozzles than the + // authored slot needs, the entry becomes an empty mixed-filament placeholder + // appended at the tail (the GUI flags it; the user assigns components from their + // own filaments); on a single-physical-slot receiver it is dropped and reported + // instead, since an empty mix could never be edited there. // Applied partial values land on the collection's edited layer when the slot references // it and that layer survives the load (visible as a modification, revertible, the user's // unsaved edits preserved), otherwise on the stored preset in place. @@ -5417,11 +5422,38 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // Grow the receiver's slots only as far as the highest published slot (never // shrink, never pull filler materials for unpublished slots). bool has_published_entries = false; - size_t grow_target = 0; + // Physical filament capacity of the receiver's printer: a non-SEMM tool-changer + // feeds filament N from nozzle N, so the nozzle count is the hard limit; a SEMM + // printer (single_extruder_multi_material) sizes its slot list by hand, so only + // the global slot limit applies (same condition as GUI_App::load_current_presets). + // Published entries that would need a NEW physical slot past this capacity are + // appended as empty mixed-filament placeholders instead of growing the list. + size_t physical_capacity = size_t(EnforcerBlockerType::ExtruderMax); + { + const Preset& receiver_printer = this->printers.get_edited_preset(); + if (receiver_printer.printer_technology() == ptFFF && + !receiver_printer.config.opt_bool("single_extruder_multi_material")) { + if (const auto* nozzle_diameter = receiver_printer.config.option("nozzle_diameter"); + nozzle_diameter != nullptr && !nozzle_diameter->values.empty()) + physical_capacity = nozzle_diameter->values.size(); + } + } + const std::set& mixed_definitions = publish_mixed_keys(); + auto is_mixed_definition = [&mixed_definitions](const PublishedMaterialEntry& entry) { + return std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { + return mixed_definitions.count(publish_base_key(key)) != 0; + }); + }; + size_t grow_target = 0; for (const PublishedMaterialEntry& entry : published_config->material_keys) { has_published_entries = true; - if (entry.slot >= 0) - grow_target = std::max(grow_target, size_t(entry.slot) + 1); + if (entry.slot < 0) + continue; + // A physical entry past the capacity becomes a tail placeholder below; its + // growth is covered by the append counter, not the positional target. + if (!is_mixed_definition(entry) && size_t(entry.slot) >= physical_capacity) + continue; + grow_target = std::max(grow_target, size_t(entry.slot) + 1); } // Mixed-filament definitions live in project-level virtual slots, so applying one // positionally onto a receiver slot that holds a real, physical filament would @@ -5439,13 +5471,12 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // from the new index. No existing slot changes meaning. // - destinations are also capped: appends past the extruder limit are dropped // and reported instead of being forced onto a physical filament. - const std::set& mixed_definitions = publish_mixed_keys(); - auto is_mixed_definition = [&mixed_definitions](const PublishedMaterialEntry& entry) { - return std::any_of(entry.keys.begin(), entry.keys.end(), [&](const std::string& key) { - return mixed_definitions.count(publish_base_key(key)) != 0; - }); - }; - size_t next_free_slot = this->filament_presets.size(); + // Physical entries past the printer's capacity join the same append counter + // (dest = next_free, packed consecutively at the tail - never max(authored, + // next_free), which would grow filler physical slots past the capacity) and are + // flagged mixed_placeholder: they become empty mixed-filament placeholders the + // GUI flags for the user to assign components to. + size_t next_free_slot = this->filament_presets.size(); bool any_mixed_relocated = false; // All authored-slot -> destination moves decided by this pass, applied to the // incoming config in one batched snapshot step below (an earlier move's @@ -5455,42 +5486,95 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, std::vector> mixed_moves; for (auto entry_it = published_config->material_keys.begin(); entry_it != published_config->material_keys.end();) { PublishedMaterialEntry& entry = *entry_it; - if (entry.slot < 0 || !is_mixed_definition(entry) || - // Like-for-like override of a virtual receiver slot (bounds-checked). - this->is_mixed_filament(size_t(entry.slot))) { + if (entry.slot < 0) { ++entry_it; continue; } + const bool is_payload_mix = is_mixed_definition(entry); + // Does this entry need a tail slot at all? A payload mixed definition does, + // except when it like-for-like overrides a receiver slot that is already a + // mix (bounds-checked). A physical entry only becomes a placeholder when it + // would need a NEW physical slot: an authored position the receiver's list + // already covers is applied positionally as before, even when that list sits + // above the printer's capacity (pre-existing state is never shrunk). + bool keep_place = false; + if (is_payload_mix) + keep_place = this->is_mixed_filament(size_t(entry.slot)); + else + keep_place = size_t(entry.slot) < this->filament_presets.size() || + size_t(entry.slot) < physical_capacity; + if (keep_place) { + ++entry_it; + continue; + } + const std::string material_label = !entry.filament_id.empty() ? entry.filament_id : + !entry.publish_type_value.empty() ? entry.publish_type_value : + entry.filament_type; if (std::max(size_t(entry.slot), next_free_slot) >= size_t(EnforcerBlockerType::ExtruderMax)) { // No free virtual slot left: report instead of destroying a real filament. - const std::string material_label = !entry.filament_id.empty() ? entry.filament_id : - !entry.publish_type_value.empty() ? entry.publish_type_value : - entry.filament_type; // The local skipped_keys is published wholesale at the end of the pass; // writing published_config->skipped_keys here would be clobbered by it. - skipped_keys.emplace_back("material:" + material_label + - " (mixed filament definition: filament slot limit reached)"); - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot - << " could not be placed: all " << next_free_slot << " slots exhausted"; + skipped_keys.emplace_back("material:" + material_label + (is_payload_mix ? + " (mixed filament definition: filament slot limit reached)" : + " (filament slot limit reached)")); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF " << (is_payload_mix ? "mixed filament definition" : "material") + << " from slot " << entry.slot << " could not be placed: all " << next_free_slot + << " slots exhausted"; + entry_it = published_config->material_keys.erase(entry_it); + continue; + } + if (!is_payload_mix && physical_capacity < 2) { + // A single physical slot can never host a mixed-filament editor (the + // sidebar's mixed section needs two physical filaments to mix), so a + // placeholder would be invisible and unfixable: drop the entry and + // report it like any other unappliable input. + skipped_keys.emplace_back("material:" + material_label + " (printer supports only " + + std::to_string(physical_capacity) + " filament)"); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF material from slot " << entry.slot + << " dropped: printer supports only " << physical_capacity << " filament"; entry_it = published_config->material_keys.erase(entry_it); continue; } const int authored_slot = entry.slot; - const int dest_slot = int(std::max(size_t(authored_slot), next_free_slot)); + const int dest_slot = is_payload_mix ? int(std::max(size_t(authored_slot), next_free_slot)) : int(next_free_slot); next_free_slot = size_t(dest_slot) + 1; - if (dest_slot == authored_slot) - // Uncontended fresh tail slot: the definition is already readable there. - ++entry_it; - else { - entry.slot = dest_slot; + if (is_payload_mix) { + if (dest_slot == authored_slot) + // Uncontended fresh tail slot: the definition is already readable there. + ++entry_it; + else { + entry.slot = dest_slot; + any_mixed_relocated = true; + mixed_moves.emplace_back(size_t(authored_slot), size_t(entry.slot)); + published_config->mixed_slot_relocations.emplace(authored_slot, entry.slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(authored_slot) + " -> slot " + + std::to_string(entry.slot) + + ": mixed filament relocated (would have replaced a physical filament)"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated mixed filament slot " << authored_slot + << " -> " << entry.slot; + ++entry_it; + } + } else { + // Surplus published material beyond the printer's capacity: become an + // empty mixed-filament placeholder at the next free tail slot. The flag + // routes the entry to the placeholder finalize below; the slot's + // definition stays empty until the user assigns components. + entry.mixed_placeholder = true; any_mixed_relocated = true; - mixed_moves.emplace_back(size_t(authored_slot), size_t(entry.slot)); - published_config->mixed_slot_relocations.emplace(authored_slot, entry.slot); - published_config->material_replacements.emplace_back("slot " + std::to_string(authored_slot) + " -> slot " + - std::to_string(entry.slot) + - ": mixed filament relocated (would have replaced a physical filament)"); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated mixed filament slot " << authored_slot - << " -> " << entry.slot; + if (dest_slot != authored_slot) { + entry.slot = dest_slot; + mixed_moves.emplace_back(size_t(authored_slot), size_t(dest_slot)); + published_config->mixed_slot_relocations.emplace(authored_slot, dest_slot); + } + published_config->material_replacements.emplace_back( + (dest_slot != authored_slot ? + "slot " + std::to_string(authored_slot) + " -> slot " + std::to_string(dest_slot) : + "slot " + std::to_string(dest_slot)) + + ": " + material_label + " placed as an unassigned mixed filament (printer supports only " + + std::to_string(physical_capacity) + " filaments)"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF material from slot " << authored_slot + << " placed as an unassigned mixed filament at slot " << dest_slot + << " (printer supports only " << physical_capacity << " filaments)"; ++entry_it; } } @@ -5501,9 +5585,10 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // Defensive cap: growth never exceeds the file's own filament count. The // receiver's current slot count is a floor: neither the preset list nor the // project vectors are ever shrunk, even when the file carries fewer filaments - // than the receiver has slots. Relocated mixed entries legitimately land past - // the file's own slot count (virtual slots consume no nozzle or tray), so - // their destinations lift the ceiling explicitly. + // than the receiver has slots. Relocated mixed entries and capacity + // placeholders legitimately land past the file's own slot count (virtual + // slots consume no nozzle or tray), so their append destinations lift the + // ceiling explicitly. const size_t target_slots = std::max({this->filament_presets.size(), std::min(grow_target, num_filaments), any_mixed_relocated ? next_free_slot : size_t(0)}); // Slots carrying published content, steering the initial preset selection of @@ -5884,12 +5969,14 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, this->filament_presets.front() == this->filaments.get_edited_preset().name; // Final layout for mix-definition validation: every slot that will hold a // mixed definition once this load completes - the receiver's own virtual - // slots plus each published mixed entry's final (possibly relocated) slot. - // Mix components are 1-based slot numbers, so a component is valid only - // when the slot it names exists and does not itself hold a mixed filament. + // slots, each published mixed entry's final (possibly relocated) slot, and + // each capacity placeholder (they become mixes in the finalize below, before + // this loop's is_mixed_filament scan would see them). Mix components are + // 1-based slot numbers, so a component is valid only when the slot it names + // exists and does not itself hold a mixed filament. std::set mixed_final_slots; for (const PublishedMaterialEntry& mix_entry : published_config->material_keys) - if (mix_entry.slot >= 0 && is_mixed_definition(mix_entry)) + if (mix_entry.slot >= 0 && (is_mixed_definition(mix_entry) || mix_entry.mixed_placeholder)) mixed_final_slots.insert(mix_entry.slot); for (size_t i = 0; i < this->filament_presets.size(); ++i) if (this->is_mixed_filament(i)) @@ -5903,6 +5990,22 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, if (entry.slot < 0 || size_t(entry.slot) >= this->filament_presets.size()) continue; // out of range: nothing to do for this slot const size_t slot = size_t(entry.slot); + + // Surplus published material beyond the printer's capacity: finalize the + // tail placeholder - mark the slot virtual with an intentionally empty + // definition. The GUI flags the empty mix (check_mixed_filament_integrity) + // and blocks slicing until the user assigns components from their own + // filaments. The entry's keys are deliberately not applied and no preset + // is detached: the placeholder carries no material of its own. The colour + // was already seeded into the project arrays by the growth pass above. + if (entry.mixed_placeholder) { + if (ConfigOptionBools* is_mixed_opt = this->project_config.opt("filament_is_mixed"); + is_mixed_opt != nullptr && slot < is_mixed_opt->values.size()) + is_mixed_opt->values[slot] = true; + material_applied = true; + continue; + } + // Resolve the stored preset itself (real=true), never the edited snapshot: // find_preset would return &m_edited_preset for the selected slot. The // overlay target below decides between the edited layer and this preset. diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index 038a6eca11..d7f2c13c5f 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -80,6 +80,13 @@ struct PublishedMaterialEntry { // Required filament colour, applied on load regardless of the type match. bool publish_color{false}; std::string color; + // Import-side only, never serialized: the entry's authored slot sits past the receiver + // printer's physical filament capacity, so instead of growing a physical slot the entry + // is appended as an empty mixed-filament placeholder (virtual tail slot; the GUI flags + // it and the user assigns components from their own filaments). The flag also keeps the + // entry out of the payload mixed-definition validation and the value-apply passes, + // which only make sense for a slot that carries a real material. + bool mixed_placeholder{false}; }; // "PLA High Speed" -> "PLA" (strip a space modifier); dash types like "PA-CF" are kept intact. diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 356645d06c..069d40b8e5 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -2932,6 +2932,302 @@ TEST_CASE("Published 3MF relocates a mixed filament instead of overwriting a phy } } +// The receiver's printer gates how many PHYSICAL filament slots a published 3MF may add: a +// non-SEMM tool-changer feeds filament N from nozzle N, so a published slot past the nozzle +// count cannot become a physical filament. It becomes an empty mixed-filament placeholder +// instead - a virtual tail slot the GUI flags (broken mix) and the user fills with components +// from their own filaments. SEMM receivers keep the ungated behaviour. +TEST_CASE("Published 3MF turns a surplus slot past the printer's filament capacity into an empty mixed placeholder", "[Preset][Bundle][Published]") +{ + // An author project with physical slots, no mixed ones. + auto make_file_config = [](size_t num_author_slots) { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + std::vector diameters(num_author_slots, 1.75); + std::vector self_index; + std::vector variants; + for (size_t i = 0; i < num_author_slots; ++i) { + self_index.push_back(int(i + 1)); + variants.emplace_back("Direct Drive Standard"); + } + config.opt("filament_diameter")->values = diameters; + config.opt("filament_self_index")->values = self_index; + config.opt("filament_extruder_variant")->values = variants; + config.opt("filament_colour")->values.resize(num_author_slots, "#808080"); + config.opt("filament_type")->values.assign(num_author_slots, "PLA"); + config.opt("filament_vendor")->values.assign(num_author_slots, "Generic"); + config.opt("filament_ids")->values.resize(num_author_slots); + return config; + }; + // A non-SEMM receiver with nozzles running copies of one preset. + auto make_receiver = [](PresetBundle &bundle, size_t nozzles, size_t slots) { + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(slots, "My PLA"); + bundle.set_num_filaments(slots, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt("single_extruder_multi_material", true)->value = false; + printer_config.opt("nozzle_diameter", true)->values.assign(nozzles, 0.4); + }; + auto make_physical_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + + // The reported case: an author publishes with a filament on slot 5; the receiver is a + // 4-filament tool-changer. The receiver keeps its four physical slots and the surplus + // material lands as an empty mixed placeholder at the tail. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + const std::vector receiver_colours = + bundle.project_config.opt("filament_colour")->values; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew by exactly one virtual slot, not a fifth physical one. + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + // The placeholder carries no definition: the GUI's integrity check flags it and + // blocks slicing until the user assigns components. + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4].empty()); + // The four physical slots kept their meaning and colours. + CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), + bundle.project_config.opt("filament_colour")->values.begin())); + CHECK(bundle.filament_presets[0] == "My PLA"); + CHECK(bundle.filament_presets[3] == "My PLA"); + // The published colour seeds the placeholder's swatch. + CHECK(bundle.project_config.opt("filament_colour")->values[4] == "#ABCDEF"); + // The conversion is surfaced through the post-import notice. + bool placeholder_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("unassigned mixed filament") != std::string::npos) + placeholder_reported = true; + CHECK(placeholder_reported); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.mixed_slot_relocations.empty()); + } + + // Two surplus slots (5 and 6) become two consecutive empty placeholders. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF"), make_physical_entry(5, "#F0F0F0") }; + DynamicPrintConfig config = make_file_config(6); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 6); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 6); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 6); + CHECK(components[4].empty()); + CHECK(components[5].empty()); + const auto &colour = bundle.project_config.opt("filament_colour")->values; + REQUIRE(colour.size() == 6); + CHECK(colour[4] == "#ABCDEF"); + CHECK(colour[5] == "#F0F0F0"); + CHECK(pub.skipped_keys.empty()); + CHECK(pub.mixed_slot_relocations.empty()); + } + + // A surplus slot past both the receiver's list and the capacity packs onto the next free + // tail slot (never max(authored, next_free), which would grow filler physical slots past + // the capacity), and the relocation is recorded for the model-reference remapping. + { + PresetBundle bundle; + make_receiver(bundle, 2, 2); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(3, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(4); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 3); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 3); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK(is_mixed[2]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 3); + CHECK(components[2].empty()); + REQUIRE(pub.mixed_slot_relocations.size() == 1); + CHECK(pub.mixed_slot_relocations.at(3) == 2); + bool relocation_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 3 -> slot 2") != std::string::npos && + message.find("unassigned mixed filament") != std::string::npos) + relocation_reported = true; + CHECK(relocation_reported); + CHECK(pub.skipped_keys.empty()); + } + + // A Full Publish entry past the capacity becomes a placeholder too: no standalone + // detached copy is created for a material that got no physical slot. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedMaterialEntry entry = make_physical_entry(4, "#ABCDEF"); + entry.full = true; + entry.preset_name = "Generic PLA @System"; + entry.filament_id = "GFL99"; + entry.full_keys = { "filament_retraction_length" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { entry }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK(is_mixed[4]); + // No detached copy under the stripped name or its uniquified forms. + CHECK(bundle.filaments.find_preset("Generic PLA", false, true) == nullptr); + CHECK(bundle.filaments.find_preset("Generic PLA (Published)", false, true) == nullptr); + CHECK(pub.skipped_keys.empty()); + } + + // A SEMM receiver (the default printer preset) sizes its slot list by hand: the published + // slot past the nozzle count still grows physically, as before the capacity gate. + { + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(4, "#123456"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(bundle.project_config.opt("filament_colour")->values[4] == "#ABCDEF"); + CHECK(pub.skipped_keys.empty()); + } + + // A pre-existing oversized slot list is never shrunk: a published entry pointing at one + // of its slots is applied positionally even though the list exceeds the nozzle count. + { + PresetBundle bundle; + make_receiver(bundle, 4, 5); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(4, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(5); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 5; ++i) + CHECK_FALSE(is_mixed[i]); + // The published colour reached the addressed slot's (shared) preset in place. + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == + std::vector{ "#ABCDEF" }); + CHECK(bundle.project_config.opt("filament_colour")->values[4] == "#ABCDEF"); + CHECK(pub.skipped_keys.empty()); + } + + // On a single-physical-slot receiver an empty mix could never be edited (the sidebar's + // mixed section needs two physical filaments), so the surplus entry is dropped and + // reported instead of becoming an unfixable placeholder. + { + PresetBundle bundle; + make_receiver(bundle, 1, 1); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_physical_entry(1, "#ABCDEF") }; + DynamicPrintConfig config = make_file_config(2); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + CHECK(bundle.filament_presets.size() == 1); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 1); + CHECK_FALSE(is_mixed[0]); + REQUIRE(pub.skipped_keys.size() == 1); + CHECK(pub.skipped_keys.front().find("printer supports only 1") != std::string::npos); + } + + // A payload mixed definition is exempt from the capacity gate: mixes are virtual slots + // that consume no nozzle, so a published mix past the nozzle count still lands. + { + PresetBundle bundle; + make_receiver(bundle, 4, 4); + + PublishedMaterialEntry mix; + mix.slot = 4; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { mix }; + DynamicPrintConfig config = make_file_config(5); + config.opt("filament_is_mixed")->values.assign(5, 0); + config.opt("filament_mixed_components")->values.assign(5, ""); + config.opt("filament_mixed_sublayer_ratios")->values.assign(5, ""); + config.opt("filament_is_mixed")->values[4] = 1; + config.opt("filament_mixed_components")->values[4] = "1,2"; + config.opt("filament_mixed_sublayer_ratios")->values[4] = "0.6,0.4"; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK(is_mixed[4]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4] == "1,2"); + const auto &ratios = bundle.project_config.opt("filament_mixed_sublayer_ratios")->values; + REQUIRE(ratios.size() == 5); + CHECK(ratios[4] == "0.6,0.4"); + CHECK(pub.skipped_keys.empty()); + } +} + // A single-extruder receiver collapses the author's per-extruder printer slots onto its single // slot: the first serialized variant of a base key is applied, the remaining variants of that // base key are reported as skipped. From fff0efdb275003cf19d2c04b9605f3af6270a37e Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 31 Aug 2026 13:57:21 +0800 Subject: [PATCH 036/162] Fixes filament import bug --- src/libslic3r/PresetBundle.cpp | 61 ++++++++- .../libslic3r/test_preset_bundle_loading.cpp | 123 +++++++++++++++++- 2 files changed, 173 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 2a7e97a34e..688d2b90b0 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5979,6 +5979,22 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, if (this->is_mixed_filament(i)) mixed_final_slots.insert(int(i)); const size_t mixed_final_slot_count = this->filament_presets.size(); + // Finalize a slot as an empty mixed-filament placeholder: mark it virtual with + // an intentionally empty definition, and add it to the final-layout set so a + // later entry's components validate against the new state. Used by the capacity + // placeholders and by any mixed definition that has to be rejected after its + // slot was already grown and seeded - without it such a slot would keep the + // seeded preset and masquerade as a real filament. No definition is written: + // the placeholder carries no material of its own (the GUI flags the empty mix + // via check_mixed_filament_integrity and blocks slicing until components are + // assigned). The slot's colour was already seeded by the growth pass above. + auto finalize_mixed_placeholder = [&](size_t slot_idx) { + if (ConfigOptionBools* is_mixed_opt = this->project_config.opt("filament_is_mixed"); + is_mixed_opt != nullptr && slot_idx < is_mixed_opt->values.size()) + is_mixed_opt->values[slot_idx] = true; + mixed_final_slots.insert(int(slot_idx)); + material_applied = true; + }; // Full Publish within-load dedup: identical Full materials (same setting_id // + preset_name identity) share one created instance, so an author who // pointed two slots at one preset yields one standalone copy here. @@ -5996,10 +6012,7 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // is detached: the placeholder carries no material of its own. The colour // was already seeded into the project arrays by the growth pass above. if (entry.mixed_placeholder) { - if (ConfigOptionBools* is_mixed_opt = this->project_config.opt("filament_is_mixed"); - is_mixed_opt != nullptr && slot < is_mixed_opt->values.size()) - is_mixed_opt->values[slot] = true; - material_applied = true; + finalize_mixed_placeholder(slot); continue; } @@ -6007,8 +6020,19 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // find_preset would return &m_edited_preset for the selected slot. The // overlay target below decides between the edited layer and this preset. Preset* recv = this->filaments.find_preset(this->filament_presets[slot], false, true); - if (recv == nullptr) + if (recv == nullptr) { + // Defensive: the slot exists (grown and seeded above) but its preset + // could not be resolved. A mixed definition left unapplied on such a + // slot would keep the seeded preset and look like a real filament: + // finalize it as an empty placeholder instead, like a rejected + // definition below. + if (is_mixed_definition(entry) && !this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported"); + } continue; + } const std::string material_label = entry.filament_id.empty() ? (entry.publish_type_value.empty() ? entry.filament_type : @@ -6045,6 +6069,23 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, skipped_keys.emplace_back("material:" + material_label + " (mixed filament definition: " + mix_error + ")"); BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": published 3MF mixed filament from slot " << entry.slot << " rejected: " << mix_error; + // Degradation, not silent corruption: the slot was already grown and + // seeded by the pass above, so skipping the definition alone would + // leave it holding the seeded preset and looking like a real + // filament that carries the mix identity but no mix. + // - a slot that was NOT already a receiver mix is finalized as an + // empty mixed placeholder (consistent with the capacity + // placeholders; the user assigns components there); + // - a like-for-like override of the receiver's own mix leaves that + // valid definition untouched: nothing was applied, so the + // receiver's cells are intact and only the author's definition + // is reported as skipped above. + if (!this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported (" + + mix_error + ")"); + } continue; } } @@ -6247,6 +6288,16 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, for (const std::string& key : entry.keys) skipped_keys.emplace_back("material:" + material_label + " (" + key + ")"); apply_slot = false; + // A mixed definition left unapplied here would keep the grown + // slot's seeded preset and masquerade as a real filament: + // finalize it as an empty placeholder like a rejected + // definition (a like-for-like override of the receiver's own + // mix is left untouched). + if (is_mixed_definition(entry) && !this->is_mixed_filament(slot)) { + finalize_mixed_placeholder(slot); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + + ": mixed filament definition could not be imported"); + } } } } diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index a493ea9b7b..17e33f3320 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -11,6 +11,7 @@ #include "test_utils.hpp" #include +#include #include using namespace Slic3r; @@ -3671,9 +3672,11 @@ TEST_CASE("Published 3MF rejects a mixed filament definition with impossible com Preset::normalize(config); bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); - // The definition was rejected, not applied: the slot stays a plain (grown) slot. + // The definition was rejected, not applied: the grown slot is finalized as an empty + // mixed placeholder instead of keeping the seeded preset and masquerading as a real + // filament. REQUIRE(bundle.filament_presets.size() == 3); - CHECK_FALSE(bundle.is_mixed_filament(2)); + CHECK(bundle.is_mixed_filament(2)); CHECK(bundle.project_config.opt("filament_mixed_components")->values[2].empty()); CHECK(bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2].empty()); // Reported through the shared rejection channel. @@ -3681,13 +3684,119 @@ TEST_CASE("Published 3MF rejects a mixed filament definition with impossible com CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); else CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: components reference missing slots)")); + // The slot change was surfaced like the other slot adaptations. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0].find("slot 2: mixed filament definition could not be imported") != std::string::npos); // The blended colour was not written into the (shared) slot preset either. CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#123456" }); - CHECK(pub.material_replacements.empty()); } } +// The reported scenario: an author publishes two mixed filaments whose components are +// full-published physical slots; the receiver is a smaller tool-changer, so some of those +// component slots become empty mixed placeholders. A mix whose component turned into a +// placeholder can never be valid (mixes cannot reference mixes): it is rejected, and its +// grown slot must be finalized as an empty mixed placeholder too - not keep the seeded +// preset and masquerade as a real filament carrying the mix identity. +TEST_CASE("Published 3MF finalizes a mixed filament rejected over a placeholder component as an empty placeholder", "[Preset][Bundle][Published]") +{ + // An author project: six physical slots plus two tail mixes, the second referencing the + // sixth physical slot (H2C-style: slot 7 = 1+2, slot 8 = 2+6). + auto make_file_config = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = std::vector(8, 1.75); + config.opt("filament_self_index")->values = { 1, 2, 3, 4, 5, 6, 7, 8 }; + config.opt("filament_extruder_variant")->values = std::vector(8, "Direct Drive Standard"); + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00", + "#FF00FF", "#00FFFF", "#800080", "#804000" }; + config.opt("filament_type")->values.assign(8, "PLA"); + config.opt("filament_vendor")->values.assign(8, "Generic"); + config.opt("filament_is_mixed")->values = { 0, 0, 0, 0, 0, 0, 1, 1 }; + config.opt("filament_mixed_components")->values = { "", "", "", "", "", "", "1,2", "2,6" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "", "", "", "", "0.6,0.4", "0.5,0.5" }; + // The export always serializes all seven masked mixed arrays, not just the ones in + // use; the unused gradient arrays ride along as defaults. + config.opt("filament_mixed_gradient")->values = { 0, 0, 0, 0, 0, 0, 0, 0 }; + config.opt("filament_mixed_gradient_range")->values.assign(8, ""); + config.opt("filament_mixed_gradient_curve")->values.assign(8, ""); + config.opt("filament_mixed_gradient_per_part")->values = { 0, 0, 0, 0, 0, 0, 0, 0 }; + return config; + }; + // A non-SEMM receiver with four nozzles and four slots (tool-changer style). + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(4, "My PLA"); + bundle.set_num_filaments(4, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt("single_extruder_multi_material", true)->value = false; + printer_config.opt("nozzle_diameter", true)->values.assign(4, 0.4); + + auto make_full_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.full = true; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + auto make_mix_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + return entry; + }; + + // The dialog's emit order: the full-published physical slots (1, 2, 5, 6) and both mixes. + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_entry(0), make_full_entry(1), make_full_entry(4), make_full_entry(5), + make_mix_entry(6, "#800080"), make_mix_entry(7, "#804000") }; + DynamicPrintConfig config = make_file_config(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grew to the author's slot count, all virtual territory at the tail. + REQUIRE(bundle.filament_presets.size() == 8); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 8); + // Slots 0-3 stayed physical; authored slots 5 and 6 (0-based 4 and 5) became capacity + // placeholders. + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[4].empty()); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[5].empty()); + // The first mix applied onto its uncontended tail slot. + CHECK(is_mixed[6]); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[6] == "1,2"); + // The second mix was rejected - its second component (authored slot 6) turned into a + // placeholder - and its slot was finalized as an empty mixed placeholder instead of + // keeping the seeded preset as a phantom real filament. + CHECK(is_mixed[7]); + CHECK(bundle.project_config.opt("filament_mixed_components")->values[7].empty()); + CHECK(bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[7].empty()); + REQUIRE(pub.skipped_keys.size() == 1); + CHECK(pub.skipped_keys[0] == "material:PLA (mixed filament definition: components reference missing slots)"); + // Two Full Publish detach lines (slots 0-1), two capacity placeholder lines (slots 4-5), + // and the rejected mix's finalization line (slot 7). + REQUIRE(pub.material_replacements.size() == 5); + CHECK(std::any_of(pub.material_replacements.begin(), pub.material_replacements.end(), + [](const std::string &line) { + return line.find("slot 7: mixed filament definition could not be imported") != std::string::npos; + })); +} + // The relocation shifts cells inside the file's per-slot mixed arrays; a payload too short to // actually carry the definition degrades to empty cells, which the definition validation then // reports - an empty mix must not ship as a virtual slot. @@ -3734,15 +3843,17 @@ TEST_CASE("Published 3MF reports a relocated mixed filament whose payload cells // The mix was relocated past the physical territory... REQUIRE(pub.mixed_slot_relocations.size() == 1); CHECK(pub.mixed_slot_relocations.at(3) == 5); - REQUIRE(pub.material_replacements.size() == 1); + REQUIRE(pub.material_replacements.size() == 2); CHECK(pub.material_replacements[0].find("slot 3 -> slot 5") != std::string::npos); // ...and the receiver grew to hold the destination slot, but the definition itself was - // rejected: the relocated cells degraded to empty defaults and were reported. + // rejected: the relocated cells degraded to empty defaults, the slot was finalized as an + // empty mixed placeholder (not a real filament), and both facts were reported. REQUIRE(bundle.filament_presets.size() == 6); - CHECK_FALSE(bundle.is_mixed_filament(5)); + CHECK(bundle.is_mixed_filament(5)); CHECK(bundle.project_config.opt("filament_mixed_components")->values[5].empty()); CHECK(bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[5].empty()); CHECK(contains_key(pub.skipped_keys, "material:GFL99 (mixed filament definition: needs at least two components)")); + CHECK(pub.material_replacements[1].find("slot 5: mixed filament definition could not be imported") != std::string::npos); // The five real slots kept their colours. CHECK(std::equal(receiver_colours.begin(), receiver_colours.end(), bundle.project_config.opt("filament_colour")->values.begin())); From a6483e79b241ce2b9ee79841913422f7a5a726dc Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 31 Aug 2026 14:50:15 +0800 Subject: [PATCH 037/162] Fix ImGui crash --- src/slic3r/GUI/NotificationManager.cpp | 6 +++++- src/slic3r/GUI/NotificationManager.hpp | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index bfb9f50130..044771bf7c 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -3083,7 +3083,7 @@ bool NotificationManager::push_notification_data(std::unique_ptractivate_existing(notification.get())) { - if (m_initialized) { // ignore update action - it cant be initialized if canvas and imgui context is not ready + if (m_initialized && m_imgui_ready) { if (notification->get_type() == NotificationType::SlicingWarning) { m_pop_notifications.back()->append(notification->get_data().ori_text); } else { @@ -3129,6 +3129,10 @@ void NotificationManager::stop_delayed_notifications_of_type(const NotificationT void NotificationManager::render_notifications(GLCanvas3D &canvas, float overlay_width, float bottom_margin, float right_margin) { + // Notifications render inside an ImGui frame, so the font atlas is built from this point on + // and pushed notifications may safely measure their text. + m_imgui_ready = true; + sort_notifications(); float bottom_up_last_y = bottom_margin; // ORCA dont scale margins diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index d7a5d49977..55d10dd95c 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -1054,6 +1054,11 @@ private: bool m_is_dark = false; // set by init(), until false notifications are only added not updated and frame is not requested after push bool m_initialized{ false }; + // set by render_notifications() on the first rendered frame. m_initialized only proves the + // manager exists, not that the ImGui context can measure text: the font atlas is built lazily + // in ImGuiWrapper::new_frame() on the first GL render, so updating a notification before that + // (PopNotification::init -> count_spaces -> ImGui::CalcTextSize) dereferences a null font. + bool m_imgui_ready{ false }; // Target for wxWidgets events sent by clicking on the hyperlink available at some notifications. wxEvtHandler* m_evt_handler; // Cache of IDs to identify and reuse ImGUI windows. From c4fea8ad2477259fa4c50541407ebb4398f8d755 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Mon, 31 Aug 2026 15:48:13 +0800 Subject: [PATCH 038/162] gate workflow with enable_ota flag in app config --- src/slic3r/Utils/PresetUpdater.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index db29c7abf7..2de8716f47 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -283,7 +283,7 @@ void PresetUpdater::priv::set_download_prefs(AppConfig *app_config) version_check_url = app_config->version_check_url(); auto profile_update_url = app_config->profile_update_url(); - if (!profile_update_url.empty()) + if (!profile_update_url.empty() && app_config->get_bool("enable_ota")) enabled_config_update = true; else enabled_config_update = false; @@ -1055,6 +1055,10 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:Checking whether the profile from resource is newer"; AppConfig *app_config = GUI::wxGetApp().app_config; + + if (!app_config->get_bool("enable_ota")) + return; + const auto enabled_vendors = app_config->vendors(); std::set bundles; From 21c0bf795ad25ed55000d2bf6c923d88a5ba888e Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 31 Aug 2026 16:19:10 +0800 Subject: [PATCH 039/162] Fixes indentation on the Full Publish toggle --- src/slic3r/GUI/PublishSettingsDialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 1a8a860301..455a318935 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -986,13 +986,13 @@ size_t PublishSettingsDialog::category_index_for( page_sizer->Add(header_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); // Line 2: the "Full Publish" toggle, on its own line below the title (hidden until - // the slot is enabled). + // the slot is enabled), aligned with the colour chip above it. auto* full_sizer = new wxBoxSizer(wxHORIZONTAL); category.full_check = new wxCheckBox(category.page, wxID_ANY, _L("Full Publish")); category.full_check->SetFont(Label::Body_13); category.full_check->SetToolTip(_L("Embed the entire filament of this slot in the 3MF file")); full_sizer->Add(category.full_check, 0, wxALIGN_CENTER_VERTICAL); - category.full_line_item = page_sizer->Add(full_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(2)); + category.full_line_item = page_sizer->Add(full_sizer, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(6)); } } From b585d9f3d96b511eaf65011061959b60b990c73b Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Mon, 31 Aug 2026 17:45:29 +0800 Subject: [PATCH 040/162] feat: add new profiles over ota & updater url via app config --- resources/web/guide/21/common.css | 10 +- resources/web/guide/21/common.js | 37 ++- resources/web/guide/24/24.js | 16 ++ resources/web/guide/24/index.html | 3 +- src/libslic3r/AppConfig.cpp | 8 +- src/slic3r/GUI/WebGuideDialog.cpp | 87 ++++++- src/slic3r/Utils/PresetUpdater.cpp | 381 +++++++++++++++++++++++++++-- src/slic3r/Utils/PresetUpdater.hpp | 8 + 8 files changed, 523 insertions(+), 27 deletions(-) diff --git a/resources/web/guide/21/common.css b/resources/web/guide/21/common.css index e7cd57a32f..992c55d7a1 100644 --- a/resources/web/guide/21/common.css +++ b/resources/web/guide/21/common.css @@ -415,7 +415,9 @@ img.ModelThumbnail { border-width: 1px; border-style: solid; border-radius: 4px; - background-color: inherit; + border-color: var(--border-color); + background-color: var(--bg-color); + color: var(--fg-color-text); position: absolute; left: 50%; top: 200px; @@ -423,13 +425,17 @@ img.ModelThumbnail { } #NoticeBar { - background-color:#00f0d8; + background-color: var(--main-color); height: 40px; line-height: 40px; color: #fff; text-align: center; } +#NoticeBar.notice-error { + background-color: var(--button-bg-alert); +} + #NoticeContent { padding: 4mm 10mm; } diff --git a/resources/web/guide/21/common.js b/resources/web/guide/21/common.js index f7e8b1d409..9a3c76c248 100644 --- a/resources/web/guide/21/common.js +++ b/resources/web/guide/21/common.js @@ -37,6 +37,34 @@ function HandleStudio( pVal ) { HandleModelList(pVal['response']); } + else if(strCmd=='check_new_printers_result') + { + let button = document.getElementById("CheckNewPrintersBtn"); + if (button) { + button.style.pointerEvents = "auto"; + button.style.opacity = "1"; + } + + let noticeBar = document.getElementById("NoticeBar"); + let noticeText = document.getElementById("NoticeText"); + let hasError = pVal.hasOwnProperty("error"); + noticeBar.classList.toggle("notice-error", hasError); + if (hasError) { + noticeBar.textContent = "Error"; + noticeText.textContent = pVal["error"]; + } else if (pVal["vendors"] && pVal["vendors"].length > 0) { + noticeBar.textContent = "New printers found"; + noticeText.textContent = "New printer vendors installed: " + pVal["vendors"].join(", "); + } else if (pVal["declined"]) { + noticeBar.textContent = "Information"; + noticeText.textContent = "New printer vendors were found, but installation was cancelled."; + } else { + noticeBar.textContent = "Information"; + noticeText.textContent = "No new printers found."; + } + + ShowNotice(1); + } } function HandleModelList( pVal ) @@ -78,9 +106,13 @@ function HandleModelList( pVal ) } //Update Nozzel Html Append + // ORCA: HandleModelList can now be called more than once per dialog (e.g. after a new vendor + // is installed via "check for new printers"). pModel always holds the full, current list, so + // clear each vendor's printer area before repopulating instead of appending on top of a + // previous render. for( let key in ModelHtml ) { - $(".OneVendorBlock[vendor='"+key+"'] .PrinterArea").append( ModelHtml[key] ); + $(".OneVendorBlock[vendor='"+key+"'] .PrinterArea").empty().append( ModelHtml[key] ); } //Update Checkbox @@ -343,6 +375,9 @@ function OnExit() let nTotal=ModelSelect.length; if( nTotal==0 ) { + let noticeBar = document.getElementById("NoticeBar"); + noticeBar.classList.add("notice-error"); + noticeBar.textContent = "Error"; ShowNotice(1); return 0; } diff --git a/resources/web/guide/24/24.js b/resources/web/guide/24/24.js index 74a03db7b9..19ccb892c6 100644 --- a/resources/web/guide/24/24.js +++ b/resources/web/guide/24/24.js @@ -36,6 +36,22 @@ function ConfirmSelect() } } +function CheckForNewPrinters() +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="check_for_new_printers"; + tSend['data']={}; + + var button = document.getElementById("CheckNewPrintersBtn"); + if (button) { + button.style.pointerEvents = "none"; + button.style.opacity = "0.6"; + } + + SendWXMessage( JSON.stringify(tSend) ); +} + function CreateNewPrinter() { var tSend={}; diff --git a/resources/web/guide/24/index.html b/resources/web/guide/24/index.html index efb6148e0d..5f0a2407cc 100644 --- a/resources/web/guide/24/index.html +++ b/resources/web/guide/24/index.html @@ -82,7 +82,8 @@
Create
-
Confirm
+
Check for new printers
+
Confirm
Cancel
diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 2d0c6a5d8d..020fc0662d 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -42,6 +42,9 @@ namespace Slic3r { static const std::string VERSION_CHECK_URL = "https://check-version.orcaslicer.com/latest"; static const std::string PROFILE_UPDATE_URL = "https://check-version.orcaslicer.com/profile"; + +constexpr const char* CONFIG_ORCA_UPDATER_URL = "orca_updater_url"; + static const std::string MODELS_STR = "models"; const std::string AppConfig::SECTION_FILAMENTS = "filaments"; @@ -1814,7 +1817,10 @@ std::string AppConfig::version_check_url() const std::string AppConfig::profile_update_url() const { - return PROFILE_UPDATE_URL; + std::string orca_updater_url = get(CONFIG_ORCA_UPDATER_URL); + if (orca_updater_url.empty()) + return PROFILE_UPDATE_URL; + return orca_updater_url; } bool AppConfig::exists() diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 6b58fffead..0820f7181b 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -562,6 +563,78 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) m_ProfileJson["filament"][fName]["selected"] = 1; } } + else if (strCmd == "check_for_new_printers") { + json response = json::object(); + response["command"] = "check_new_printers_result"; + // Guide pages currently send sequence_id as a number, while older + // pages may send it as a string. Preserve the value without + // forcing either representation. + if (j.contains("sequence_id")) + response["sequence_id"] = j["sequence_id"]; + else + response["sequence_id"] = ""; + + if (!m_MainPtr->preset_updater) { + response["error"] = "Printer update service is unavailable."; + wxString strJS = wxString::Format("HandleStudio(%s)", response.dump(-1, ' ', true)); + wxGetApp().CallAfter([this, strJS] { RunScript(strJS); }); + } else { + // Orca: enumerate vendors directly from disk rather than from m_ProfileJson["model"] + // — a vendor with no machine models (e.g. a filament-only bundle, or a test fixture + // like "test123" with an empty machine_model_list) never gets a "vendor" entry + // pushed into "model" by LoadProfileFamily(), so it would be invisible to the + // request body and get endlessly re-offered by the server. Scan both the system dir + // (already-installed vendors) and the bundled resources dir (shipped-but-not-yet- + // installed vendors), same as LoadProfileData() does when building loaded_vendors. + std::set system_vendors; + for (const auto& dir : {vendor_dir, rsrc_vendor_dir}) { + if (!boost::filesystem::exists(dir)) + continue; + for (const auto& entry : boost::filesystem::directory_iterator(dir)) { + if (!boost::filesystem::is_directory(entry) && boost::iequals(entry.path().extension().string(), ".json")) + system_vendors.insert(entry.path().stem().string()); + } + } + // Orca: check_new_vendors() is async (network + confirmation dialog + download + // all happen off the calling thread apart from the dialog itself); guard against + // this dialog being closed before the callback fires. + wxWeakRef weak_this(this); + try { + m_MainPtr->preset_updater->check_new_vendors( + system_vendors, [weak_this, response](std::vector installed_vendors, bool declined) mutable { + if (!weak_this) + return; + + // Orca: append the newly installed vendor(s) into the in-memory + // profile data (instead of a full LoadProfileData() rescan of every + // vendor) and push the refreshed list to the webview, the same way + // request_userguide_profile does, so the printer list picks them up + // without needing to reopen the guide. + for (const auto& vendor_id : installed_vendors) { + weak_this->LoadProfileFamily(vendor_id, (weak_this->vendor_dir / (vendor_id + ".json")).string()); + } + if (!installed_vendors.empty()) { + json profile_response = json::object(); + profile_response["command"] = "response_userguide_profile"; + profile_response["sequence_id"] = "10001"; + profile_response["response"] = weak_this->m_ProfileJson; + wxString profileJS = wxString::Format("HandleStudio(%s)", profile_response.dump(-1, ' ', true)); + weak_this->RunScript(profileJS); + } + + response["vendors"] = installed_vendors; + response["declined"] = declined; + wxString strJS = wxString::Format("HandleStudio(%s)", response.dump(-1, ' ', true)); + weak_this->RunScript(strJS); + }); + } catch (const std::exception &e) { + BOOST_LOG_TRIVIAL(warning) << "Failed to check for new printers: " << e.what(); + response["error"] = "Failed to check for new printers."; + wxString strJS = wxString::Format("HandleStudio(%s)", response.dump(-1, ' ', true)); + wxGetApp().CallAfter([this, strJS] { RunScript(strJS); }); + } + } + } else if (strCmd == "user_guide_finish") { SaveProfile(); @@ -1644,13 +1717,15 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath 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(boost::filesystem::path(resources_dir()) / "/profiles/" / strVendor / cover_file).make_preferred(); + std::string cover_file = s1 + "_cover.png"; + boost::filesystem::path cover_path = boost::filesystem::absolute(vendor_dir / cover_file).make_preferred(); + BOOST_LOG_TRIVIAL(info) << "[WebGuideDialog] " << cover_path; if (!boost::filesystem::exists(cover_path)) { - cover_path = - (boost::filesystem::absolute(boost::filesystem::path(resources_dir()) / "/web/image/printer/") / - cover_file) - .make_preferred(); + cover_path = boost::filesystem::absolute(boost::filesystem::path(resources_dir()) / "/profiles/" / strVendor / cover_file) + .make_preferred(); + if (!boost::filesystem::exists(cover_path)) + cover_path = (boost::filesystem::absolute(boost::filesystem::path(resources_dir()) / "/web/image/printer/") / cover_file) + .make_preferred(); } OneModel["cover"] = cover_path.string(); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 2de8716f47..42bd346222 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -129,10 +130,9 @@ struct Update //BBS: add directory support void install() const { - if (is_directory) { + if (is_directory) { copy_directory_recursively(source, target, file_filter); - } - else { + } else { copy_file_fix(source, target); // A vendor must be installed in exactly one form. Remove the @@ -147,7 +147,7 @@ struct Update fs::remove(target.parent_path() / (vendor + ".opc"), ec); } } - } + } friend std::ostream& operator<<(std::ostream& os, const Update &self) { @@ -195,6 +195,8 @@ struct Updates std::vector updates; }; +static bool reload_configs_update_gui(); + wxDEFINE_EVENT(EVT_SLIC3R_VERSION_ONLINE, wxCommandEvent); wxDEFINE_EVENT(EVT_SLIC3R_EXPERIMENTAL_VERSION_ONLINE, wxCommandEvent); @@ -222,6 +224,10 @@ struct PresetUpdater::priv // Per-vendor update checking std::set checked_vendors; + // Orca (PR #130): changelog text for each vendor, captured in memory during + // sync_vendor_config()/check_new_vendors() instead of written beside the cache. + std::unordered_map vendor_changelogs; + mutable std::mutex vendor_changelogs_mutex; std::vector vendor_check_threads; std::atomic vendor_check_cancel{false}; @@ -246,6 +252,8 @@ struct PresetUpdater::priv void parse_version_string(const std::string& body) const; void sync_resources(std::string http_url, std::map &resources, bool check_patch = false, std::string current_version="", std::string changelog_file=""); void sync_vendor_config(const std::string& vendor_id); + void check_new_vendors(const std::set& system_vendors, + std::function, bool)> callback); void sync_tooltip(std::string http_url, std::string language); void sync_plugins(std::string http_url, std::string plugin_version); void sync_printer_config(std::string http_url); @@ -686,6 +694,9 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) std::string online_version_str; // this represents the PROFILE VERSION, not ORCA VERSION std::string download_url_str; + std::string changelog; + + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] fetching vendor update status from " << url; Http::get(url) .timeout_connect(5) @@ -698,9 +709,12 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) if (http_status != 200) return; try { json j = json::parse(body); + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] url: " << url << " returned:" << body; + if (j.contains("vendor_version") && j.contains("download_url")) { online_version_str = j["vendor_version"].get(); download_url_str = j["download_url"].get(); + changelog = j.value("changelog", std::string()); } } catch (const std::exception& e) { BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] vendor check JSON parse failed: " << e.what(); @@ -722,8 +736,11 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) boost::system::error_code ec; fs::remove_all(cache_profile_path / vendor_id, ec); fs::remove(cache_profile_path / (vendor_id + ".json"), ec); - fs::remove(cache_profile_path / (vendor_id + ".changelog"), ec); + // Orca: the OPC cache is the vendor's whole installation in one file; clear it too. fs::remove(cache_profile_path / (vendor_id + ".opc"), ec); + // Best-effort cleanup of the legacy on-disk changelog written by older builds + // (changelogs are now kept in memory - see vendor_changelogs). + fs::remove(cache_profile_path / (vendor_id + ".changelog"), ec); // Download the zip BOOST_LOG_TRIVIAL(info) << "[Orca Updater] downloading update for " << vendor_id @@ -761,6 +778,23 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) if (cancel || vendor_check_cancel) return; + const fs::path cached_vendor_json = cache_profile_path / (vendor_id + ".json"); + const fs::path cached_vendor_folder = cache_profile_path / vendor_id; + if (!fs::is_regular_file(cached_vendor_json) || !fs::is_directory(cached_vendor_folder) || + fs::is_empty(cached_vendor_folder)) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] rejected update for " << vendor_id + << ": expected " << vendor_id << ".json and a non-empty " + << vendor_id << " directory"; + fs::remove_all(cached_vendor_folder, ec); + fs::remove(cached_vendor_json, ec); + return; + } + + { + std::lock_guard lock(vendor_changelogs_mutex); + vendor_changelogs[vendor_id] = std::move(changelog); + } + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] vendor " << vendor_id << " update cached, notifying UI"; GUI::wxGetApp().CallAfter([] { GUI::wxGetApp().check_config_updates_from_updater(); @@ -1167,6 +1201,14 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version if (!fs::exists(cache_profile_path)) return updates; + // Orca (PR #130): vendor changelogs are captured in memory during + // sync_vendor_config()/check_new_vendors(), not written beside the cache. + std::unordered_map changelogs; + { + std::lock_guard lock(vendor_changelogs_mutex); + changelogs = vendor_changelogs; + } + for (auto &dir_entry : boost::filesystem::directory_iterator(cache_profile_path)) { const auto &path = dir_entry.path(); std::string file_path = path.string(); @@ -1179,6 +1221,21 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version auto filament_in_cache = (cache_profile_path / vendor_name / PRESET_FILAMENT_NAME); auto machine_in_cache = (cache_profile_path / vendor_name / PRESET_PRINTER_NAME); + // Orca (PR #130): a JSON cache entry is only meaningful next to a non-empty + // / preset directory; a stray or half-downloaded .json is + // skipped. An .opc cache is a single self-contained file (validated below), + // so this check does not apply to it. + if (!is_opc_file) { + const auto vendor_folder_in_cache = cache_profile_path / vendor_name; + if (!fs::is_regular_file(path) || !fs::is_directory(vendor_folder_in_cache) || + fs::is_empty(vendor_folder_in_cache)) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater]:ignoring invalid cached update for " + << vendor_name << ": expected " << vendor_name + << ".json and a non-empty " << vendor_name << " directory"; + continue; + } + } + if (is_vendor_installed(vendor_name) || is_opc_file || fs::exists(print_in_cache) @@ -1212,15 +1269,9 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version cache_ver = *config_version; } - std::string changelog; - std::string changelog_file = (cache_profile_path / (vendor_name + ".changelog")).string(); - boost::nowide::ifstream ifs(changelog_file); - if (ifs) { - std::ostringstream oss; - oss<< ifs.rdbuf(); - changelog = oss.str(); - ifs.close(); - } + // Orca (PR #130): changelog for this vendor was captured in memory at sync time. + const auto changelog_it = changelogs.find(vendor_name); + std::string changelog = changelog_it != changelogs.end() ? changelog_it->second : std::string(); if (vendor_ver < cache_ver) { BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:need to update settings from " << vendor_ver.to_string() @@ -1362,6 +1413,9 @@ void PresetUpdater::sync(std::string http_url, std::string language, std::string // after the startup printer preset has been restored. this->p->sync_plugins(http_url, plugin_version); this->p->sync_printer_config(http_url); + // Orca (PR #130): the filament library is always installed, so refresh it + // from the updater on every startup sync rather than deferring to check_vendor_update(). + this->p->sync_vendor_config(PresetBundle::ORCA_FILAMENT_LIBRARY); //if (p->cancel) // return; //remove the tooltip currently @@ -1394,6 +1448,302 @@ void PresetUpdater::check_vendor_update(const std::string& vendor_id) }); } +// Orca: ask the server which vendors from `system_vendors` have a profile bundle available that +// isn't installed yet (or is newer than what's installed). Request body maps vendor id -> currently +// installed profile version (unknown/not-yet-installed vendors report "0.0.0"). Response maps +// vendor id -> {version, download_url, changelog} for each vendor the server has an update for. +// Any such vendor is downloaded and cached under ota/profiles the same way sync_vendor_config() +// does; the caller's check_config_updates_from_updater() -> get_config_updates()/perform_updates() +// flow then installs the cached profiles into data_dir()/system. +// +// Mirrors check_vendor_update()/sync_vendor_config(): the network query and the download/extract +// work run on a background thread (vendor_check_threads), never on the calling (UI) thread. Only +// the confirmation dialog (which must run on the UI thread) and the final callback are marshaled +// back via CallAfter(). +void PresetUpdater::priv::check_new_vendors(const std::set& system_vendors, + std::function, bool)> callback) +{ + vendor_check_threads.emplace_back([this, system_vendors, callback]() { + AppConfig* app_config = GUI::wxGetApp().app_config; + std::string url = app_config->profile_update_url() + "/new?orcaslicer_version=" + Http::url_encode(SoftFever_VERSION); + + auto check_cancel = [this](Http::Progress, bool& cancel_http) { + if (cancel || vendor_check_cancel) + cancel_http = true; + }; + + json request_body = json::object(); + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] checking new vendors for:"; + for (const auto& vendor_id : system_vendors) { + // Orca: installed_vendor_version() reads whichever form the vendor is + // installed as - the .json profile or the .opc preset cache stamp - + // so a cache-only vendor is not reported as version 0.0.0 and then + // endlessly re-offered by the server. + Semver installed_ver = installed_vendor_version(vendor_id); + request_body[vendor_id] = installed_ver.to_string(); + BOOST_LOG_TRIVIAL(info) << vendor_id << " (installed version " << installed_ver.to_string() << ")"; + } + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] new vendor check request url: " << url; + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] new vendor check request body: " << request_body.dump(2); + + json response_json; + bool got_response = false; + + auto post = Http::post(url); + + post.timeout_connect(5); + post.on_progress(check_cancel); + post.header("Content-Type", "application/json"); + post.on_error([](std::string body, std::string error, unsigned http_status) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] new vendor check HTTP error: " << error; + }) + .on_complete([&response_json, &got_response](std::string body, unsigned http_status) { + if (http_status != 200) + return; + try { + json j = json::parse(body); + if (j.is_object()) { + response_json = std::move(j); + got_response = true; + } + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] new vendor check JSON parse failed: " << e.what(); + } + }); + + post.set_post_body(request_body.dump()); + post.perform_sync(); + + if (cancel || vendor_check_cancel) + return; + + if (!got_response) { + GUI::wxGetApp().CallAfter([callback]() { callback({}, false); }); + return; + } + + // Collect candidates before touching the filesystem or network again. + struct NewVendorCandidate + { + std::string vendor_id; + Semver version; + std::string download_url; + std::string changelog; + }; + std::vector candidates; + for (auto it = response_json.begin(); it != response_json.end(); ++it) { + const json& entry = it.value(); + if (!entry.is_object()) + continue; + std::string download_url_str = entry.value("download_url", std::string()); + if (download_url_str.empty()) + continue; + + NewVendorCandidate candidate; + candidate.vendor_id = it.key(); + auto parsed_ver = Semver::parse(entry.value("version", std::string())); + candidate.version = parsed_ver ? *parsed_ver : Semver(); + candidate.download_url = std::move(download_url_str); + candidate.changelog = entry.value("changelog", std::string()); + candidates.push_back(std::move(candidate)); + } + + if (candidates.empty()) { + GUI::wxGetApp().CallAfter([callback]() { callback({}, false); }); + return; + } + + // Orca: the confirmation dialog must run on the UI thread; if confirmed, the actual + // download/install work is dispatched back onto a new background thread from there, + // same as check_vendor_update() does for a single vendor. + GUI::wxGetApp().CallAfter([this, candidates, callback]() { + std::vector updates_msg; + for (const auto& candidate : candidates) + updates_msg.emplace_back(candidate.vendor_id, candidate.version, std::string(), candidate.changelog); + + GUI::MsgUpdateConfig dlg(updates_msg); + if (dlg.ShowModal() != wxID_OK) { + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] user declined installing new vendors"; + callback({}, true); + return; + } + + // Orca: the actual download runs on a background thread below (so it doesn't block the + // UI), but that also means nothing visibly happens for the several seconds it can take + // (longer still if a retry kicks in) — push a notification so it's clear work is + // ongoing rather than looking hung. + { + std::string vendor_list; + for (const auto& candidate : candidates) { + if (!vendor_list.empty()) + vendor_list += ", "; + vendor_list += candidate.vendor_id; + } + GUI::wxGetApp().plater()->get_notification_manager()->push_notification( + _u8L("Downloading new vendor profile(s): ") + vendor_list + _u8L("...")); + } + + vendor_check_threads.emplace_back([this, candidates, callback]() { + auto check_cancel = [this](Http::Progress, bool& cancel_http) { + if (cancel || vendor_check_cancel) + cancel_http = true; + }; + + std::vector new_vendor_ids; + std::vector failed_vendor_ids; + auto cache_profile_path = cache_path / "profiles"; + fs::create_directories(cache_profile_path); + boost::system::error_code ec; + + for (const auto& candidate : candidates) { + if (cancel || vendor_check_cancel) + break; + + const std::string& vendor_id = candidate.vendor_id; + const std::string& download_url_str = candidate.download_url; + std::string changelog = candidate.changelog; + + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] downloading new vendor " << vendor_id << " version " << candidate.version.to_string(); + + // Clear only this vendor's cached data, same as sync_vendor_config(). + fs::remove_all(cache_profile_path / vendor_id, ec); + fs::remove(cache_profile_path / (vendor_id + ".json"), ec); + + fs::path download_file = cache_path / (vendor_id + TMP_EXTENSION); + bool download_ok = false; + + // Orca: same retry pattern as Plater.cpp's project download — a single-shot + // 5s connect timeout against GitHub's redirect chain is prone to transient + // failures (DNS/connect hiccups) that succeed a moment later, so retry a few + // times before giving up rather than failing the whole vendor on one blip. + int retry_count = 0; + const int max_retries = 3; + bool keep_trying = true; + while (keep_trying && retry_count < max_retries) { + retry_count++; + Http::get(download_url_str) + .timeout_connect(5) + .on_progress(check_cancel) + .on_error([&vendor_id, &retry_count, max_retries](std::string body, std::string error, unsigned http_status) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] download failed for new vendor " << vendor_id + << " (attempt " << retry_count << "/" << max_retries << "): " << error; + }) + .on_complete([&](std::string body, unsigned http_status) { + if (http_status != 200) + return; + fs::fstream file(download_file, std::ios::out | std::ios::binary | std::ios::trunc); + if (!file.good()) + return; + file.write(body.c_str(), body.size()); + file.close(); + if (file.good()) + download_ok = true; + }) + .perform_sync(); + + keep_trying = !download_ok && !(cancel || vendor_check_cancel); + } + + if (!download_ok || cancel || vendor_check_cancel) { + if (!download_ok) + failed_vendor_ids.push_back(vendor_id); + continue; + } + + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] extracting new vendor " << vendor_id; + if (!extract_file(download_file, cache_profile_path)) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] extraction failed for new vendor " << vendor_id; + fs::remove(download_file, ec); + failed_vendor_ids.push_back(vendor_id); + continue; + } + fs::remove(download_file, ec); + + const fs::path cached_vendor_json = cache_profile_path / (vendor_id + ".json"); + const fs::path cached_vendor_folder = cache_profile_path / vendor_id; + if (!fs::is_regular_file(cached_vendor_json) || !fs::is_directory(cached_vendor_folder) || + fs::is_empty(cached_vendor_folder)) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] rejected new vendor " << vendor_id << ": expected " << vendor_id + << ".json and a non-empty " << vendor_id << " directory"; + fs::remove_all(cached_vendor_folder, ec); + fs::remove(cached_vendor_json, ec); + failed_vendor_ids.push_back(vendor_id); + continue; + } + + { + std::lock_guard lock(vendor_changelogs_mutex); + vendor_changelogs[vendor_id] = std::move(changelog); + } + + new_vendor_ids.push_back(vendor_id); + } + + if (!new_vendor_ids.empty()) { + // Orca: the user already confirmed via the dialog above, so install right away + // instead of routing through check_config_updates_from_updater(), which only + // queues a passive notification (meant for the silent background per-vendor + // check) requiring yet another click + confirmation before anything is copied + // into data_dir()/system. + GUI::wxGetApp().CallAfter([this, new_vendor_ids] { + AppConfig* app_config = GUI::wxGetApp().app_config; + Updates updates = get_config_updates(app_config->orig_version()); + + // Only install the vendors just confirmed; leave any other unrelated + // pending cached update (from a background sync_vendor_config()) alone, + // still gated behind its own notification/confirmation. + std::set confirmed(new_vendor_ids.begin(), new_vendor_ids.end()); + Updates filtered; + for (auto& update : updates.updates) + if (confirmed.count(update.vendor)) + filtered.updates.push_back(std::move(update)); + + if (filtered.updates.empty()) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] new vendors cached but no updates detected"; + return; + } + + if (!perform_updates(std::move(filtered)) || !reload_configs_update_gui()) { + BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] failed to install new vendors"; + return; + } + + BOOST_LOG_TRIVIAL(info) << "[Orca Updater] new vendors installed"; + for (const auto& vendor_id : new_vendor_ids) { + Semver cur_ver = GUI::wxGetApp().preset_bundle->get_vendor_profile_version(vendor_id); + GUI::wxGetApp().plater()->get_notification_manager()->push_notification( + GUI::NotificationType::PresetUpdateFinished, + GUI::NotificationManager::NotificationLevel::ImportantNotificationLevel, + _u8L("Configuration package: ") + vendor_id + _u8L(" updated to ") + cur_ver.to_string()); + } + }); + } + + if (!failed_vendor_ids.empty()) { + GUI::wxGetApp().CallAfter([failed_vendor_ids] { + std::string vendor_list; + for (const auto& vendor_id : failed_vendor_ids) { + if (!vendor_list.empty()) + vendor_list += ", "; + vendor_list += vendor_id; + } + GUI::wxGetApp().plater()->get_notification_manager()->push_notification( + _u8L("Failed to download vendor profile(s): ") + vendor_list); + }); + } + + GUI::wxGetApp().CallAfter([callback, new_vendor_ids]() { callback(new_vendor_ids, false); }); + }); + }); + }); +} + +void PresetUpdater::check_new_vendors(const std::set& system_vendors, + std::function, bool)> callback) +{ + p->check_new_vendors(system_vendors, std::move(callback)); +} + void PresetUpdater::slic3r_update_notify() { if (! p->enabled_version_check) @@ -1415,10 +1765,9 @@ static bool reload_configs_update_gui() GUI::wxGetApp().load_current_presets(); GUI::wxGetApp().plater()->set_bed_shape(); - return true; + return true; } - PresetUpdater::UpdateResult PresetUpdater::config_update(const Semver& old_slic3r_version, UpdateParams params) const { if (! p->enabled_config_update) { return R_NOOP; } diff --git a/src/slic3r/Utils/PresetUpdater.hpp b/src/slic3r/Utils/PresetUpdater.hpp index 27ec6748f2..ccb0902fd5 100644 --- a/src/slic3r/Utils/PresetUpdater.hpp +++ b/src/slic3r/Utils/PresetUpdater.hpp @@ -1,7 +1,9 @@ #ifndef slic3r_PresetUpdate_hpp_ #define slic3r_PresetUpdate_hpp_ +#include #include +#include #include #include @@ -59,6 +61,12 @@ public: void on_update_notification_confirm(); void do_printer_config_update(); void check_vendor_update(const std::string& vendor_id); + // Orca: async, mirrors check_vendor_update()/sync_vendor_config() — the network query and any + // download/install work happen on a background thread; only the confirmation dialog runs on + // the UI thread. `callback` is invoked on the UI thread with the ids of vendors that were + // installed (empty if none were found, or the user declined) and whether the user declined. + void check_new_vendors(const std::set& system_vendors, + std::function installed_vendors, bool declined)> callback); bool version_check_enabled() const; From 684cd37f8dd94e451d9013f065764b007ef6cd12 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 31 Aug 2026 18:01:15 +0800 Subject: [PATCH 041/162] UI Fixes and Polish --- src/slic3r/GUI/FilamentBitmapUtils.cpp | 385 +++++++++++++++++++++++ src/slic3r/GUI/FilamentBitmapUtils.hpp | 78 +++++ src/slic3r/GUI/GradientCurveEditor.cpp | 231 +++----------- src/slic3r/GUI/MixedFilamentDialog.cpp | 94 +----- src/slic3r/GUI/MixedFilamentDialog.hpp | 4 - src/slic3r/GUI/PublishSettingsDialog.cpp | 330 ++++++------------- src/slic3r/GUI/Widgets/TabCtrl.cpp | 2 +- 7 files changed, 622 insertions(+), 502 deletions(-) diff --git a/src/slic3r/GUI/FilamentBitmapUtils.cpp b/src/slic3r/GUI/FilamentBitmapUtils.cpp index 23b14c385b..3af3d1ad01 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.cpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.cpp @@ -1,11 +1,22 @@ #include +#include #include +#include +#include #include #include +#include +#include +#include +#include #include "EncodedFilament.hpp" #include "FilamentBitmapUtils.hpp" #include "GUI_App.hpp" +#include "GuiColor.hpp" +#include "I18N.hpp" +#include "Widgets/Label.hpp" +#include "Widgets/StateColor.hpp" #include "libslic3r/FilamentMixer.hpp" #include "libslic3r/PrintConfig.hpp" @@ -488,4 +499,378 @@ void recompute_mixed_slot_colors(std::vector& colors, } } +namespace { + +// Layout ratios of the gradient plot rect, copied from GradientCurveEditor so the read-only +// preview and the interactive editor stay pixel-identical. Plot rect is square 1:1; the +// right/bottom margins host the axis arrows and labels. +constexpr double kPlotLeftRatio = 0.0316; +constexpr double kPlotRightRatio = 0.6766; +constexpr double kPlotTopRatio = 0.1529; +constexpr double kPlotBottomRatio = 0.8474; +constexpr int kGridDivisions = 9; // 10 grid lines including the outer borders. +constexpr int kStrokeAxis = 2; // axis line width (px, no DPI scaling) +constexpr int kAxisArrowHalf = 5; // half-base of the axis arrow triangle (DIP) +constexpr int kAxisArrowLen = 10; // length of the axis arrow triangle (DIP) +constexpr int kPointRadius = 4; // anchor outer radius (DIP) +constexpr float kBgSimilarThreshold = 15.0f; +constexpr int kOutlineExtraDip = 2; +constexpr double kTriangleMarginDip = 20.0; + +// Quadratic blend that never goes out of gamut, matching MixedFilamentDialog::blend_colors. +wxColour lerp_blend(const wxColour& a, const wxColour& b, double ratio_a) +{ + unsigned char r, g, bl; + Slic3r::filament_mixer_lerp(a.Red(), a.Green(), a.Blue(), + b.Red(), b.Green(), b.Blue(), + static_cast(1.0 - ratio_a), &r, &g, &bl); + return wxColour(r, g, bl); +} + +// DIP conversion for these free functions: unlike the wxWindow member FromDIP, it needs the +// window parameter explicitly; nullptr picks the app's default DPI like the Publish dialog does. +int dip_px(int v) { return wxWindow::FromDIP(v, nullptr); } + +} // namespace + +wxRect mixed_gradient_plot_rect(const wxSize& sz) +{ + const int x = static_cast(std::lround(sz.x * kPlotLeftRatio)); + const int y = static_cast(std::lround(sz.y * kPlotTopRatio)); + const int x2 = static_cast(std::lround(sz.x * kPlotRightRatio)); + const int y2 = static_cast(std::lround(sz.y * kPlotBottomRatio)); + const int side = std::max(1, std::min(x2 - x, y2 - y)); + return wxRect(x, y, side, side); +} + +void draw_mixed_gradient_plot(wxDC& raw_dc, const wxSize& canvas, + const std::vector& curves, + const std::vector& anchors, + const MixedGradientTheme& theme) +{ + // Draw into an internal opaque buffer so wxGCDC text/curves anti-alias against a solid + // background (never a transparent one), then blit the finished image onto the caller's + // buffered paint DC. wxGCDC cannot wrap a generic wxDC&, so the buffer is always a + // wxMemoryDC -- the one type wxGCDC accepts on every platform. + if (canvas.x <= 0 || canvas.y <= 0) + return; + const wxRect rc = mixed_gradient_plot_rect(canvas); + if (rc.width <= 0 || rc.height <= 0) + return; + + wxBitmap buf(canvas); + wxMemoryDC memdc(buf); + memdc.SetBackground(wxBrush(theme.background)); + memdc.Clear(); + wxGCDC dc(memdc); + wxGraphicsContext* gc = dc.GetGraphicsContext(); + + // 10x10 light grid (10 lines including outer borders, 9 equal divisions). + dc.SetPen(wxPen(theme.grid, 1)); + for (int i = 0; i <= kGridDivisions; ++i) { + const int x = rc.x + rc.width * i / kGridDivisions; + const int y = rc.y + rc.height * i / kGridDivisions; + dc.DrawLine(x, rc.y, x, rc.y + rc.height); + dc.DrawLine(rc.x, y, rc.x + rc.width, y); + } + + // Set the label font first so text width measurements drive arrow / label placement. + wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); + label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); + dc.SetFont(label_font); + + const wxString axis_y_title = _L("Material Ratio"); + const wxString axis_x_title = _L("Model Height"); + const wxString pct_text = wxT("100%"); + const wxSize x_title_sz = dc.GetTextExtent(axis_x_title); + const wxSize y_title_sz = dc.GetTextExtent(axis_y_title); + + wxFont strong_font = label_font; + strong_font.SetWeight(wxFONTWEIGHT_SEMIBOLD); + dc.SetFont(strong_font); + const wxSize pct_text_sz = dc.GetTextExtent(pct_text); + dc.SetFont(label_font); + + // Axes (grey 700) with filled triangle arrows. Y-axis extends above the plot top to the + // canvas top edge; X-axis extends past the plot right toward the canvas right edge. + const int arrow_half = dip_px(kAxisArrowHalf); + const int arrow_len = dip_px(kAxisArrowLen); + dc.SetPen(wxPen(theme.axis, kStrokeAxis)); + dc.SetBrush(wxBrush(theme.axis)); + + const int y_axis_x = rc.x; + const int y_title_pct_gap = dip_px(1); + const int y_title_bottom_pad = dip_px(2); + const int y_title_y = std::max(0, rc.y - y_title_sz.y - y_title_pct_gap - pct_text_sz.y - y_title_bottom_pad); + const int y_arrow_tip_y = y_title_y; + const int y_arrow_ty = y_arrow_tip_y + arrow_len; + dc.DrawLine(y_axis_x, y_arrow_ty, y_axis_x, rc.y + rc.height); + { + wxPoint tri[3] = { + wxPoint(y_axis_x, y_arrow_tip_y), + wxPoint(y_axis_x - arrow_half, y_arrow_ty), + wxPoint(y_axis_x + arrow_half, y_arrow_ty), + }; + dc.DrawPolygon(3, tri); + } + + const int x_axis_y = rc.y + rc.height; + const int x_label_gap = dip_px(4); + const int x_edge_pad = dip_px(6); + const int x_arrow_ideal = rc.x + rc.width + dip_px(10); + const int x_arrow_max = canvas.x - x_title_sz.x - x_label_gap - x_edge_pad - arrow_len; + const int x_arrow_tx = std::max(rc.x + rc.width + arrow_len, std::min(x_arrow_ideal, x_arrow_max)); + const int x_arrow_tip_x = x_arrow_tx + arrow_len; + const int x_title_x = x_arrow_tip_x + x_label_gap; + dc.DrawLine(rc.x, x_axis_y, x_arrow_tx, x_axis_y); + { + wxPoint tri[3] = { + wxPoint(x_arrow_tip_x, x_axis_y), + wxPoint(x_arrow_tx, x_axis_y - arrow_half), + wxPoint(x_arrow_tx, x_axis_y + arrow_half), + }; + dc.DrawPolygon(3, tri); + } + + // Labels: "Material Ratio" and the leading "100%" share the same left x; the trailing + // "Model Height" follows the X-axis arrow tip (already clamped to make room). + const int label_left_x = y_axis_x + dip_px(10); + dc.SetTextForeground(theme.label); + dc.DrawText(axis_y_title, label_left_x, y_title_y); + + dc.SetFont(strong_font); + dc.SetTextForeground(theme.label_strong); + dc.DrawText(pct_text, label_left_x, y_title_y + y_title_sz.y + y_title_pct_gap); + + dc.DrawText(pct_text, rc.x + rc.width - pct_text_sz.x, x_axis_y); + dc.SetFont(label_font); + dc.SetTextForeground(theme.label); + dc.DrawText(axis_x_title, x_title_x, x_axis_y - x_title_sz.y / 2); + + if (!gc) + return; + + // Outline only when the curve colour is perceptually close to the background; otherwise the + // plain filament colour reads fine and the extra stroke would look heavy. + auto needs_outline = [&](const wxColour& c) { + return calc_color_distance(c, theme.background) < kBgSimilarThreshold; + }; + + // Only the geometry goes through the graphics context: dc.DrawLines() takes integer wxPoint + // and would quantize the curve back to whole pixels. The pen is still set on the dc, which + // forwards it here while keeping its own cached state in sync for later dc drawing. + auto draw_polyline = [&](const MixedGradientCurve& curve) { + if (curve.points.size() < 2) + return; + dc.SetPen(wxPen(curve.colour, dip_px(curve.stroke_dip))); + gc->StrokeLines(curve.points.size(), curve.points.data()); + }; + + for (const MixedGradientCurve& curve : curves) { + if (needs_outline(curve.colour)) + draw_polyline({curve.points, theme.outline, curve.stroke_dip + kOutlineExtraDip}); + draw_polyline(curve); + } + + // Control points: hollow circle with axis-colour border, theme-aware fill, drawn with a + // sub-pixel centre so the ring stays centred on the curve. + if (!anchors.empty()) { + const double r = dip_px(kPointRadius); + dc.SetPen(wxPen(theme.axis, 1)); + dc.SetBrush(wxBrush(theme.point_fill)); + for (const wxPoint2DDouble& p : anchors) + gc->DrawEllipse(p.m_x - r, p.m_y - r, r * 2, r * 2); + } + + memdc.SelectObject(wxNullBitmap); + raw_dc.DrawBitmap(buf, 0, 0); +} + +void draw_mixed_ratio_blend_bar(wxDC& dc, const wxRect& rect, const wxColour& first, + const wxColour& second, double second_fraction) +{ + if (rect.width <= 0 || rect.height <= 0) + return; + for (int x = 0; x < rect.width; ++x) { + const double t = rect.width > 1 ? double(x) / rect.width : 0.0; + const wxColour c = lerp_blend(first, second, 1.0 - t); + dc.SetPen(wxPen(c)); + dc.DrawLine(rect.x + x, rect.y, rect.x + x, rect.y + rect.height); + } + + // Fixed in both themes, like the triangle picker's drag handle: the divider is drawn over + // blended filament colour, so it has to keep its contrast against data rather than chrome. + const int div_x = rect.x + static_cast(second_fraction * rect.width); + dc.SetPen(wxPen(wxColour(80, 80, 80), dip_px(4))); + dc.DrawLine(div_x, rect.y, div_x, rect.y + rect.height); + dc.SetPen(wxPen(*wxWHITE, dip_px(2))); + dc.DrawLine(div_x, rect.y, div_x, rect.y + rect.height); +} + +void draw_mixed_ratio_segments(wxDC& dc, const wxRect& rect, const std::vector& colours, + const std::vector& shares) +{ + const size_t n = std::min(colours.size(), shares.size()); + if (n == 0 || rect.width <= 0 || rect.height <= 0) + return; + std::vector norm = shares; + double total = 0.0; + for (double s : norm) + total += s; + if (total <= 0.0) { + norm.assign(n, 1.0 / n); + total = 1.0; + } + auto share_to_px = [&](double share_sum) { return rect.x + int(std::lround(share_sum / total * double(rect.width))); }; + int x0 = rect.x; + std::vector segs(n); + for (size_t i = 0; i < n; ++i) { + int x1 = rect.x + rect.width; + if (i + 1 < n) + x1 = share_to_px(std::accumulate(norm.begin(), norm.begin() + i + 1, 0.0)); + segs[i] = wxRect(x0, rect.y, std::max(1, x1 - x0), rect.height); + x0 = segs[i].GetRight() + 1; + } + for (size_t i = 0; i < n; ++i) { + dc.SetPen(*wxTRANSPARENT_PEN); + dc.SetBrush(wxBrush(colours[i])); + dc.DrawRectangle(segs[i]); + } + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#ACACAC")), 1)); + dc.DrawRectangle(rect); +} + +namespace { + +struct TriCacheKey +{ + int w, h; + int c0r, c0g, c0b, c1r, c1g, c1b, c2r, c2g, c2b; + int bg_r, bg_g, bg_b, ol_r, ol_g, ol_b; + bool operator<(const TriCacheKey& o) const + { + return std::tie(w, h, c0r, c0g, c0b, c1r, c1g, c1b, c2r, c2g, c2b, bg_r, bg_g, bg_b, ol_r, ol_g, ol_b) < + std::tie(o.w, o.h, o.c0r, o.c0g, o.c0b, o.c1r, o.c1g, o.c1b, o.c2r, o.c2g, o.c2b, o.bg_r, o.bg_g, o.bg_b, o.ol_r, o.ol_g, o.ol_b); + } +}; + +std::map& tri_cache() +{ + static std::map cache; + return cache; +} + +} // namespace + +std::array mixed_triangle_vertices(const wxSize& size, double margin_dip) +{ + const double pw = size.GetWidth(), ph = size.GetHeight(); + const double margin = dip_px(int(margin_dip)); + const double avail = std::min(pw, ph) - 2.0 * margin; + const double side = avail; + const double tri_h = side * std::sqrt(3.0) / 2.0; + const double cx = pw / 2.0; + const double top_y = (ph - tri_h) / 2.0; + return {{{cx, top_y}, {cx - side / 2.0, top_y + tri_h}, {cx + side / 2.0, top_y + tri_h}}}; +} + +void draw_mixed_triangle_picker(wxDC& dc, const wxSize& size, const std::array& colours, + const std::array& weights, const MixedTriangleTheme& theme) +{ + if (size.GetWidth() <= 0 || size.GetHeight() <= 0) + return; + const std::array v = mixed_triangle_vertices(size, kTriangleMarginDip); + + dc.SetBrush(wxBrush(theme.background)); + dc.SetPen(*wxTRANSPARENT_PEN); + dc.DrawRectangle(0, 0, size.GetWidth(), size.GetHeight()); + + const wxColour& c0 = colours[0]; + const wxColour& c1 = colours[1]; + const wxColour& c2 = colours[2]; + const TriCacheKey key{size.GetWidth(), size.GetHeight(), + c0.Red(), c0.Green(), c0.Blue(), + c1.Red(), c1.Green(), c1.Blue(), + c2.Red(), c2.Green(), c2.Blue(), + theme.background.Red(), theme.background.Green(), theme.background.Blue(), + theme.outline.Red(), theme.outline.Green(), theme.outline.Blue()}; + + wxBitmap& bmp = tri_cache()[key]; + if (!bmp.IsOk()) { + bmp = wxBitmap(size.GetWidth(), size.GetHeight(), 24); + wxMemoryDC mdc(bmp); + mdc.SetBrush(wxBrush(theme.background)); + mdc.SetPen(*wxTRANSPARENT_PEN); + mdc.DrawRectangle(0, 0, size.GetWidth(), size.GetHeight()); + + const int min_y = int(std::min({v[0].y, v[1].y, v[2].y})); + const int max_y = int(std::max({v[0].y, v[1].y, v[2].y})); + const int min_x = int(std::min({v[0].x, v[1].x, v[2].x})); + const int max_x = int(std::max({v[0].x, v[1].x, v[2].x})); + for (int py = min_y; py <= max_y; ++py) { + for (int px = min_x; px <= max_x; ++px) { + const TriPoint p = {double(px), double(py)}; + if (!tri_contains(p, v[0], v[1], v[2])) + continue; + double w0, w1, w2; + tri_barycentric(p, v[0], v[1], v[2], w0, w1, w2); + unsigned char mr, mg, mb; + if (w0 + w1 > 1e-6) { + float t01 = float(w1 / (w0 + w1)); + Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), c1.Red(), c1.Green(), c1.Blue(), t01, &mr, &mg, &mb); + Slic3r::filament_mixer_lerp(mr, mg, mb, c2.Red(), c2.Green(), c2.Blue(), float(w2), &mr, &mg, &mb); + } else { + mr = c2.Red(); mg = c2.Green(); mb = c2.Blue(); + } + mdc.SetPen(wxPen(wxColour(mr, mg, mb))); + mdc.DrawPoint(px, py); + } + } + + mdc.SetPen(wxPen(theme.outline, 1)); + mdc.SetBrush(*wxTRANSPARENT_BRUSH); + const wxPoint pts[3] = {{int(v[0].x), int(v[0].y)}, {int(v[1].x), int(v[1].y)}, {int(v[2].x), int(v[2].y)}}; + mdc.DrawPolygon(3, pts); + mdc.SelectObject(wxNullBitmap); + + // Keep the cache from growing without bound across DPI/size changes. + if (tri_cache().size() > 6) { + auto& cache = tri_cache(); + cache.erase(cache.begin()); + } + } + dc.DrawBitmap(bmp, 0, 0); + + // Published-ratio marker (read-only twin of the editor's drag handle). + const double w0 = weights[0], w1 = weights[1], w2 = weights[2]; + const int hx = int(w0 * v[0].x + w1 * v[1].x + w2 * v[2].x); + const int hy = int(w0 * v[0].y + w1 * v[1].y + w2 * v[2].y); + dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen(wxPen(theme.ring, dip_px(2))); + dc.DrawCircle(hx, hy, dip_px(5)); +} + +void draw_mixed_triangle_labels(wxDC& dc, const wxSize& size, const std::array& weights, + const MixedTriangleTheme& theme) +{ + const std::array v = mixed_triangle_vertices(size, kTriangleMarginDip); + dc.SetFont(::Label::Body_12); + dc.SetTextForeground(theme.label); + + // "Ratio" title, sitting above the top vertex. + const wxString title = _L("Ratio"); + dc.DrawText(title, dip_px(2), std::max(0, int(v[0].y - dc.GetTextExtent(title).GetHeight() - dip_px(4)))); + + for (int i = 0; i < 3; ++i) { + const wxString text = wxString::Format("%d%%", int(std::lround(weights[i] * 100.0))); + const wxSize tsz = dc.GetTextExtent(text); + int lx = int(v[i].x - tsz.GetWidth() / 2.0); + int ly = (i == 0) ? int(v[i].y - tsz.GetHeight() - dip_px(4)) : int(v[i].y + dip_px(3)); + ly = std::clamp(ly, 0, size.GetHeight() - tsz.GetHeight()); + lx = std::clamp(lx, 0, size.GetWidth() - tsz.GetWidth()); + dc.DrawText(text, lx, ly); + } +} + }} // namespace Slic3r::GUI \ No newline at end of file diff --git a/src/slic3r/GUI/FilamentBitmapUtils.hpp b/src/slic3r/GUI/FilamentBitmapUtils.hpp index fc6eb1f9dd..687d34a825 100644 --- a/src/slic3r/GUI/FilamentBitmapUtils.hpp +++ b/src/slic3r/GUI/FilamentBitmapUtils.hpp @@ -5,6 +5,9 @@ #include #include #include +#include +#include +#include #include // Orca: forward-declare so the header is self-contained outside libslic3r_gui's @@ -79,6 +82,81 @@ wxBitmap create_gradient_ramp_bitmap(const std::vector& ramp, const wx void recompute_mixed_slot_colors(std::vector& colors, const Slic3r::DynamicPrintConfig& cfg); +// --- Gradient plot (shared by GradientCurveEditor and the Publish dialog's read-only +// preview). The plot is a square 1:1 rect laid out with the editor's ratios so both +// render identically; curves are drawn as sub-pixel anti-aliased polylines through +// wxGCDC so they never quantize to whole pixels. + +// One curve of the plot: screen-space sub-pixel points already mapped into the plot +// rect, the stroke colour and the stroke width in DIP. +struct MixedGradientCurve +{ + std::vector points; + wxColour colour; + int stroke_dip; +}; + +// Theme tokens, resolved by the caller through StateColor::darkModeColorFor. +struct MixedGradientTheme +{ + wxColour background; // for near-background outline detection + wxColour grid; // grid line + wxColour axis; // axis + arrow fill + wxColour label; // "Material Ratio" / "Model Height" + wxColour label_strong; // "100%" + wxColour outline; // near-background curve lift + wxColour point_fill; // anchor fill +}; + +// Square 1:1 plot rect inside `canvas`, using the editor's plot ratios. +wxRect mixed_gradient_plot_rect(const wxSize& canvas); + +// Draw the whole plot (grid, axes + arrowheads, axis labels, each curve with an optional +// near-background outline, and anchor circles). `anchors` are empty when the caller has +// none to show. `dc` is the caller's buffered paint DC; a wxGCDC is created inside so the +// geometry gets anti-aliased. +void draw_mixed_gradient_plot(wxDC& dc, const wxSize& canvas, + const std::vector& curves, + const std::vector& anchors, + const MixedGradientTheme& theme); + +// --- Ratio bar (2-component continuous blend + divider, matching MixedFilamentDialog). +// Colours blend first->second across the rect; the divider marks `second_fraction` of the +// rect's width (the second component's share, 0..1). +void draw_mixed_ratio_blend_bar(wxDC& dc, const wxRect& rect, const wxColour& first, + const wxColour& second, double second_fraction); + +// Fallback ratio bar for N>2 non-gradient slots: one solid segment per component, +// widths proportional to shares. Label text (the "NN%" inside wide-enough segments) is +// the caller's concern. +void draw_mixed_ratio_segments(wxDC& dc, const wxRect& rect, const std::vector& colours, + const std::vector& shares); + +// --- Triangle picker (3-component), shared by MixedFilamentDialog and the Publish preview. +struct MixedTriangleTheme +{ + wxColour background; + wxColour outline; // triangle border + wxColour ring; // drag-handle ring + wxColour label; // "Ratio" title + per-vertex labels +}; + +// The three vertices of the read-only/miniature triangle inside a `size` square panel, +// with `margin_dip` inset. Order: top, bottom-left, bottom-right. +std::array mixed_triangle_vertices(const wxSize& size, double margin_dip = 20.0); + +// Draw background, the cached barycentric fill, the outline and the drag-handle marker. +// `weights` are the three barycentric shares (sum 1). The "Ratio" title and per-vertex +// percentage labels are drawn by the caller so the interactive editor can keep its own +// live child labels while the read-only preview draws them as text. +void draw_mixed_triangle_picker(wxDC& dc, const wxSize& size, const std::array& colours, + const std::array& weights, const MixedTriangleTheme& theme); + +// Draw the "Ratio" title plus one "NN%" label per vertex (used by the read-only preview; +// the interactive editor positions its own live labels instead). +void draw_mixed_triangle_labels(wxDC& dc, const wxSize& size, const std::array& weights, + const MixedTriangleTheme& theme); + }} // namespace Slic3r::GUI #endif // slic3r_GUI_FilamentBitmapUtils_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/GradientCurveEditor.cpp b/src/slic3r/GUI/GradientCurveEditor.cpp index 5b1073d231..6d38ef81a5 100644 --- a/src/slic3r/GUI/GradientCurveEditor.cpp +++ b/src/slic3r/GUI/GradientCurveEditor.cpp @@ -1,4 +1,5 @@ #include "GradientCurveEditor.hpp" +#include "FilamentBitmapUtils.hpp" #include "GUI_App.hpp" #include "GuiColor.hpp" #include "I18N.hpp" @@ -19,23 +20,13 @@ namespace GUI { wxDEFINE_EVENT(wxEVT_GRADIENT_CURVE_CHANGED, wxCommandEvent); namespace { -// Layout ratios of the plot rect within the widget, taken from a 214 x 180 px reference drawing. -// Plot rect occupies the upper-left region; right + bottom margins host axis arrows / labels. -constexpr double kPlotLeftRatio = 0.0316; -constexpr double kPlotRightRatio = 0.6766; -constexpr double kPlotTopRatio = 0.1529; -constexpr double kPlotBottomRatio = 0.8474; -constexpr int kGridDivisions = 9; // 10 grid lines including the outer borders. - -// Hit / stroke (DIP). +// Hit / stroke (DIP). The plot-rect ratios, grid divisions, axis/arrow geometry and the +// near-background outline threshold now live in FilamentBitmapUtils so the read-only Publish +// preview and this editor stay pixel-identical. constexpr int kHitRadius = 6; constexpr int kCurveHitRadius = 5; -constexpr int kPointRadius = 4; // anchor outer radius (DIP) constexpr int kStrokeUnselected = 2; constexpr int kStrokeSelected = 4; -constexpr int kStrokeAxis = 2; // axis line width (px, no DPI scaling - matches kGridColor pen and 2DBed convention) -constexpr int kAxisArrowHalf = 5; // half-base of the axis arrow triangle (DIP) -constexpr int kAxisArrowLen = 10; // length of the axis arrow triangle (DIP) // Light-mode design tokens. Resolved through StateColor::darkModeColorFor() // at paint time so the editor follows the app theme (#EEEEEE -> #4C4C55, #6B6B6B -> @@ -46,12 +37,6 @@ const wxColour kAxisColor (107, 107, 107); // #6B6B6B grey 700 const wxColour kLabelMuted (107, 107, 107); // #6B6B6B grey 700 const wxColour kLabelStrong ( 38, 46, 48); // #262E30 grey 900 const wxColour kOutlineColor(172, 172, 172); // #ACACAC dimmed elements - -// LAB (DeltaE76) threshold for "curve color is too close to the background": below it the curve -// gets a subtle outline so it does not visually vanish, otherwise it is drawn plain. Looser than -// the 5.0 of FlushPredict::is_similar_color, so a pastel pink on white still gets an outline. -constexpr float kBgSimilarThreshold = 15.0f; -constexpr int kOutlineExtraDip = 2; } // namespace GradientCurveEditor::GradientCurveEditor(wxWindow* parent, @@ -177,15 +162,8 @@ void GradientCurveEditor::emit_changed() wxRect GradientCurveEditor::plot_rect() const { - const wxSize sz = GetClientSize(); - const int x = static_cast(std::lround(sz.x * kPlotLeftRatio)); - const int y = static_cast(std::lround(sz.y * kPlotTopRatio)); - const int x2 = static_cast(std::lround(sz.x * kPlotRightRatio)); - const int y2 = static_cast(std::lround(sz.y * kPlotBottomRatio)); - // Force square 1:1 so X/Y axes share the same scale and grid cells stay square. Anchor at - // the top-left so the "100%" labels on the bottom/right still align with the plot edges. - const int side = std::max(1, std::min(x2 - x, y2 - y)); - return wxRect(x, y, side, side); + // Square 1:1 plot, shared with the Publish dialog's read-only preview. + return mixed_gradient_plot_rect(GetClientSize()); } wxPoint2DDouble GradientCurveEditor::data_to_px_f(double x, double y) const @@ -330,171 +308,52 @@ void GradientCurveEditor::on_paint(wxPaintEvent& /*evt*/) raw_dc.SetBackground(wxBrush(bg)); raw_dc.Clear(); - // Render through wxGCDC so curves, arrows and anchor circles get anti-aliased; the buffered - // DC is the actual back buffer that gets blitted to the window. - wxGCDC dc(raw_dc); - // The curve and its anchors are drawn straight on the graphics context so their - // coordinates stay sub-pixel accurate (see data_to_px_f). - wxGraphicsContext* gc = dc.GetGraphicsContext(); - - const wxRect rc = plot_rect(); - if (rc.width <= 0 || rc.height <= 0) - return; - - // 10x10 light grid (10 lines including outer borders, 9 equal divisions). - dc.SetPen(wxPen(grid_color, 1)); - for (int i = 0; i <= kGridDivisions; ++i) { - const int x = rc.x + rc.width * i / kGridDivisions; - const int y = rc.y + rc.height * i / kGridDivisions; - dc.DrawLine(x, rc.y, x, rc.y + rc.height); - dc.DrawLine(rc.x, y, rc.x + rc.width, y); - } - - // Set the label font first so text width measurements drive arrow / label placement. - wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); - dc.SetFont(label_font); - - const wxString axis_y_title = _L("Material Ratio"); - const wxString axis_x_title = _L("Model Height"); - const wxString pct_text = wxT("100%"); - const wxSize x_title_sz = dc.GetTextExtent(axis_x_title); - const wxSize y_title_sz = dc.GetTextExtent(axis_y_title); - - wxFont strong_font = label_font; - strong_font.SetWeight(wxFONTWEIGHT_SEMIBOLD); - dc.SetFont(strong_font); - const wxSize pct_text_sz = dc.GetTextExtent(pct_text); - dc.SetFont(label_font); - - // Axes (grey 700) with filled triangle arrows. Y-axis extends above the plot top to the - // canvas top edge; X-axis extends past the plot right toward the canvas right edge. - const int arrow_half = FromDIP(kAxisArrowHalf); - const int arrow_len = FromDIP(kAxisArrowLen); - const wxSize sz = GetClientSize(); - dc.SetPen(wxPen(axis_color, kStrokeAxis)); - dc.SetBrush(wxBrush(axis_color)); - - // Y-axis: vertical line at plot_left, from arrow tip near canvas top down to plot bottom. - const int y_axis_x = rc.x; - const int y_title_pct_gap = FromDIP(1); - const int y_title_bottom_pad = FromDIP(2); - const int y_title_y = std::max(0, rc.y - y_title_sz.y - y_title_pct_gap - pct_text_sz.y - y_title_bottom_pad); - const int y_arrow_tip_y = y_title_y; - const int y_arrow_ty = y_arrow_tip_y + arrow_len; - dc.DrawLine(y_axis_x, y_arrow_ty, y_axis_x, rc.y + rc.height); - { - wxPoint tri[3] = { - wxPoint(y_axis_x, y_arrow_tip_y), - wxPoint(y_axis_x - arrow_half, y_arrow_ty), - wxPoint(y_axis_x + arrow_half, y_arrow_ty), + // Render the plot (grid, axes, labels, curves, anchors) through the shared painter so the + // interactive editor and the Publish dialog's read-only preview stay pixel-identical. The + // curves are handed over as sub-pixel polylines and anti-alias inside the helper. + std::vector curves; + std::vector anchors; + if (m_points.size() >= 2) { + auto color_for_curve = [&](int curve_idx) -> wxColour { + wxColour c = (curve_idx == 0) ? m_color_low : m_color_high; + // Transparent filaments (alpha == 0, e.g. #FFFFFF00) would be invisible. + if (c.Alpha() == 0) + c.Set(c.Red(), c.Green(), c.Blue(), 150); + return c; }; - dc.DrawPolygon(3, tri); - } - // X-axis arrow tip: stays just past the plot ideally, but is clamped so the trailing - // "Material Ratio" label still fits inside the canvas without overlapping the arrow. - const int x_axis_y = rc.y + rc.height; - const int x_label_gap = FromDIP(4); - const int x_edge_pad = FromDIP(6); - const int x_arrow_ideal = rc.x + rc.width + FromDIP(10); - const int x_arrow_max = sz.x - x_title_sz.x - x_label_gap - x_edge_pad - arrow_len; - const int x_arrow_tx = std::max(rc.x + rc.width + arrow_len, - std::min(x_arrow_ideal, x_arrow_max)); - const int x_arrow_tip_x = x_arrow_tx + arrow_len; - const int x_title_x = x_arrow_tip_x + x_label_gap; - dc.DrawLine(rc.x, x_axis_y, x_arrow_tx, x_axis_y); - { - wxPoint tri[3] = { - wxPoint(x_arrow_tip_x, x_axis_y), - wxPoint(x_arrow_tx, x_axis_y - arrow_half), - wxPoint(x_arrow_tx, x_axis_y + arrow_half), + auto build_polyline = [&](int curve_idx) -> std::vector { + const int samples = std::max(128, plot_rect().width * 2); + std::vector poly; + poly.reserve(samples + 1); + for (int s = 0; s <= samples; ++s) { + const double x = double(s) / samples; + const double y0 = sample_curve_y(x); + const double vy = to_visual_y(curve_idx, y0); + poly.push_back(data_to_px_f(x, vy)); + } + return poly; }; - dc.DrawPolygon(3, tri); - } - // Labels. - // "Model Height" and "100%" share the same left x; the gap is larger than the - // axis-arrow half-base so the text never visually touches the Y-axis arrow. - const int label_left_x = y_axis_x + FromDIP(10); - dc.SetTextForeground(label_muted); - dc.DrawText(axis_y_title, label_left_x, y_title_y); - - dc.SetFont(strong_font); - dc.SetTextForeground(label_strong); - dc.DrawText(pct_text, label_left_x, y_title_y + y_title_sz.y + y_title_pct_gap); - - // Bottom-right "100%" sits under the right end of the plot; "Material Ratio" follows the - // X-axis arrow tip (placement was already clamped above to leave room). - dc.DrawText(pct_text, rc.x + rc.width - pct_text_sz.x, x_axis_y); - dc.SetFont(label_font); - dc.SetTextForeground(label_muted); - dc.DrawText(axis_x_title, x_title_x, x_axis_y - x_title_sz.y / 2); - - if (m_points.size() < 2 || !gc) - return; - - auto color_for_curve = [&](int curve_idx) -> wxColour { - wxColour c = (curve_idx == 0) ? m_color_low : m_color_high; - // Transparent filaments (alpha == 0, e.g. #FFFFFF00) would be invisible. - // Lift alpha so the curve stays visible while still hinting at transparency. - if (c.Alpha() == 0) - c.Set(c.Red(), c.Green(), c.Blue(), 150); - return c; - }; - - auto build_polyline = [&](int curve_idx) -> std::vector { - const int samples = std::max(128, rc.width * 2); - std::vector poly; - poly.reserve(samples + 1); - for (int s = 0; s <= samples; ++s) { - const double x = double(s) / samples; - const double y0 = sample_curve_y(x); - const double vy = to_visual_y(curve_idx, y0); - poly.push_back(data_to_px_f(x, vy)); + // Draw unselected first so the selected curve sits on top. + const int other = 1 - m_selected_curve; + for (const int idx : {other, m_selected_curve}) { + std::vector pts = build_polyline(idx); + if (pts.empty()) + continue; + curves.push_back({std::move(pts), color_for_curve(idx), idx == m_selected_curve ? kStrokeSelected : kStrokeUnselected}); } - return poly; - }; - // Only the geometry goes through the graphics context: dc.DrawLines() takes integer wxPoint - // and would quantize the curve back to whole pixels. The pen is still set on the dc, which - // forwards it here while keeping its own cached state in sync for later dc drawing. - auto draw_polyline = [&](const std::vector& poly, const wxColour& col, int stroke_dip) { - dc.SetPen(wxPen(col, FromDIP(stroke_dip))); - gc->StrokeLines(poly.size(), poly.data()); - }; - - // Outline only when the curve color is perceptually close to the background; otherwise - // the plain filament color reads fine and the extra stroke would look heavy. - auto needs_outline = [&](const wxColour& c) { - return calc_color_distance(c, bg) < kBgSimilarThreshold; - }; - - auto draw_one = [&](int curve_idx, int stroke_dip) { - const auto poly = build_polyline(curve_idx); - const wxColour col = color_for_curve(curve_idx); - if (needs_outline(col)) - draw_polyline(poly, outline_color, stroke_dip + kOutlineExtraDip); - draw_polyline(poly, col, stroke_dip); - }; - - // Draw unselected first so the selected curve sits on top. - const int other = 1 - m_selected_curve; - draw_one(other, kStrokeUnselected); - draw_one(m_selected_curve, kStrokeSelected); - - // Control points (selected curve only): hollow circle with axis-color border, theme-aware fill. - // Drawn on the graphics context with a sub-pixel center so the ring stays centered on the - // curve instead of drifting up to half a pixel off it; pen and brush go through the dc for - // the same reason as in draw_polyline above. - const double r = FromDIP(kPointRadius); - dc.SetPen(wxPen(axis_color, 1)); - dc.SetBrush(wxBrush(point_fill)); - for (size_t i = 0; i < m_points.size(); ++i) { - const double vy = to_visual_y(m_selected_curve, m_points[i].y); - const wxPoint2DDouble p = data_to_px_f(m_points[i].x, vy); - gc->DrawEllipse(p.m_x - r, p.m_y - r, r * 2, r * 2); + // Control points (selected curve only). + anchors.reserve(m_points.size()); + for (size_t i = 0; i < m_points.size(); ++i) { + const double vy = to_visual_y(m_selected_curve, m_points[i].y); + anchors.push_back(data_to_px_f(m_points[i].x, vy)); + } } + + const MixedGradientTheme theme{bg, grid_color, axis_color, label_muted, label_strong, outline_color, point_fill}; + draw_mixed_gradient_plot(raw_dc, GetClientSize(), curves, anchors, theme); } void GradientCurveEditor::on_left_down(wxMouseEvent& evt) diff --git a/src/slic3r/GUI/MixedFilamentDialog.cpp b/src/slic3r/GUI/MixedFilamentDialog.cpp index c1cbcc7450..a3047aad34 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.cpp +++ b/src/slic3r/GUI/MixedFilamentDialog.cpp @@ -847,23 +847,8 @@ wxBoxSizer* MixedFilamentDialog::create_ratio_slider() m_ratio_bar->Bind(wxEVT_PAINT, [this](wxPaintEvent&) { wxBufferedPaintDC dc(m_ratio_bar); wxSize sz = m_ratio_bar->GetClientSize(); - - wxColour col_a = comp_colour(0), col_b = comp_colour(1); - - for (int x = 0; x < sz.GetWidth(); ++x) { - double t = (double)x / sz.GetWidth(); - wxColour c = blend_colors(col_a, col_b, 1.0 - t); - dc.SetPen(wxPen(c)); - dc.DrawLine(x, 0, x, sz.GetHeight()); - } - - int div_x = (int)(ratio(1) / 100.0 * sz.GetWidth()); - // Fixed in both themes, like the triangle picker's drag handle: the divider is drawn over - // blended filament colour, so it has to keep its contrast against data rather than chrome. - dc.SetPen(wxPen(wxColour(80, 80, 80), FromDIP(4))); - dc.DrawLine(div_x, 0, div_x, sz.GetHeight()); - dc.SetPen(wxPen(*wxWHITE, FromDIP(2))); - dc.DrawLine(div_x, 0, div_x, sz.GetHeight()); + draw_mixed_ratio_blend_bar(dc, wxRect(0, 0, sz.GetWidth(), sz.GetHeight()), + comp_colour(0), comp_colour(1), ratio(1) / 100.0); }); m_ratio_bar->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) { @@ -954,72 +939,15 @@ wxBoxSizer* MixedFilamentDialog::create_triangle_picker() wxSize sz = m_triangle_panel->GetClientSize(); auto [v0, v1, v2] = get_vertices(); - wxColour tri_bg = StateColor::darkModeColorFor(*wxWHITE); - dc.SetBrush(wxBrush(tri_bg)); - dc.SetPen(*wxTRANSPARENT_PEN); - dc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); - - wxColour c0 = comp_colour(0), c1 = comp_colour(1), c2 = comp_colour(2); - - const bool cache_valid = m_tri_cache_bmp.IsOk() && - m_tri_cache_size == sz && - m_tri_cache_c0 == c0 && m_tri_cache_c1 == c1 && m_tri_cache_c2 == c2; - - if (!cache_valid) { - int min_y = (int)std::min({v0.y, v1.y, v2.y}); - int max_y = (int)std::max({v0.y, v1.y, v2.y}); - int min_x = (int)std::min({v0.x, v1.x, v2.x}); - int max_x = (int)std::max({v0.x, v1.x, v2.x}); - - m_tri_cache_bmp = wxBitmap(sz.GetWidth(), sz.GetHeight(), 24); - wxMemoryDC mdc(m_tri_cache_bmp); - mdc.SetBrush(wxBrush(tri_bg)); - mdc.SetPen(*wxTRANSPARENT_PEN); - mdc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); - - for (int py = min_y; py <= max_y; ++py) { - for (int px = min_x; px <= max_x; ++px) { - TriPoint p = {(double)px, (double)py}; - if (!tri_contains(p, v0, v1, v2)) continue; - double w0, w1, w2; - tri_barycentric(p, v0, v1, v2, w0, w1, w2); - unsigned char mr, mg, mb; - if (w0 + w1 > 1e-6) { - float t01 = static_cast(w1 / (w0 + w1)); - Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), - c1.Red(), c1.Green(), c1.Blue(), - t01, &mr, &mg, &mb); - float t2 = static_cast(w2); - Slic3r::filament_mixer_lerp(mr, mg, mb, - c2.Red(), c2.Green(), c2.Blue(), - t2, &mr, &mg, &mb); - } else { - mr = c2.Red(); mg = c2.Green(); mb = c2.Blue(); - } - mdc.SetPen(wxPen(wxColour(mr, mg, mb))); - mdc.DrawPoint(px, py); - } - } - - mdc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#CECECE")), 1)); - mdc.SetBrush(*wxTRANSPARENT_BRUSH); - wxPoint pts[3] = {{(int)v0.x, (int)v0.y}, {(int)v1.x, (int)v1.y}, {(int)v2.x, (int)v2.y}}; - mdc.DrawPolygon(3, pts); - - mdc.SelectObject(wxNullBitmap); - m_tri_cache_c0 = c0; m_tri_cache_c1 = c1; m_tri_cache_c2 = c2; - m_tri_cache_size = sz; - } - - dc.DrawBitmap(m_tri_cache_bmp, 0, 0); - - // Drag handle (always redrawn on top of cached bitmap) - double hx = m_tri_wx * v0.x + m_tri_wy * v1.x + m_tri_wz * v2.x; - double hy = m_tri_wx * v0.y + m_tri_wy * v1.y + m_tri_wz * v2.y; - int handle_r = FromDIP(5); - dc.SetBrush(*wxWHITE_BRUSH); - dc.SetPen(wxPen(wxColour("#262E30"), FromDIP(2))); - dc.DrawCircle((int)hx, (int)hy, handle_r); + // Draw the background, cached barycentric fill, outline and drag-handle marker through the + // shared picker painter (same geometry the read-only Publish preview uses). + draw_mixed_triangle_picker(dc, sz, + {comp_colour(0), comp_colour(1), comp_colour(2)}, + {m_tri_wx, m_tri_wy, m_tri_wz}, + {StateColor::darkModeColorFor(*wxWHITE), + StateColor::darkModeColorFor(wxColour("#CECECE")), + StateColor::darkModeColorFor(wxColour("#262E30")), + StateColor::darkModeColorFor(COLOR_LABEL_MUTED)}); if (m_result.ratios.size() >= 3) { dc.SetFont(::Label::Body_10); diff --git a/src/slic3r/GUI/MixedFilamentDialog.hpp b/src/slic3r/GUI/MixedFilamentDialog.hpp index ea8ac5ad16..274eac1f92 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.hpp +++ b/src/slic3r/GUI/MixedFilamentDialog.hpp @@ -170,10 +170,6 @@ private: // Triangle picker drag point (barycentric weights) double m_tri_wx{0.333}, m_tri_wy{0.333}, m_tri_wz{0.334}; - // Cached triangle color bitmap (invalidated when colors or size change) - wxBitmap m_tri_cache_bmp; - wxColour m_tri_cache_c0, m_tri_cache_c1, m_tri_cache_c2; - wxSize m_tri_cache_size; std::array m_triangle_ratio_labels{nullptr, nullptr, nullptr}; }; diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 455a318935..73016f4902 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -31,6 +31,7 @@ #include #include #include +#include namespace Slic3r { namespace GUI { namespace { @@ -423,7 +424,7 @@ PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_ spec.tri_weights = spec.ratios; // the picker's barycentric shares } else { const Slic3r::GradientCurve curve = mixed_gradient_curve(full, slot); - constexpr int kSamples = 64; + constexpr int kSamples = 256; for (int i = 0; i <= kSamples; ++i) { const double t = double(i) / kSamples; spec.gradient_samples.emplace_back(t, sample_gradient_curve(curve, t)); @@ -894,9 +895,9 @@ size_t PublishSettingsDialog::section_group_for(Section kind) section.mixed_tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); section.mixed_tabs->SetFont(Label::Body_14); section.mixed_tabs->SetBackgroundColour(GetBackgroundColour()); - // The mixed tabs carry full swatch compositions: give them extra room to breathe so - // neighbouring compositions do not read as one long row (must precede AppendItem). - section.mixed_tabs->SetItemSpace(FromDIP(5)); + // The mixed tabs carry full swatch compositions: give them a touch more room than the + // filament tabs so neighbouring compositions stay distinguishable (must precede AppendItem). + section.mixed_tabs->SetItemSpace(FromDIP(3)); page_sizer->Add(section.mixed_tabs, 0, wxEXPAND | wxTOP, FromDIP(2)); section.mixed_tabs->Hide(); } @@ -1180,18 +1181,10 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV auto* viz = new wxPanel(category.page, wxID_ANY); viz->SetBackgroundStyle(wxBG_STYLE_PAINT); - // Per-panel fill-bitmap cache for the ternary branch; rebuilt only when size or colours - // change (shared_ptr keeps the lifetime independent of this method's locals). - struct TriCache - { - wxBitmap bmp; - wxSize sz{0, 0}; - wxColour c0, c1, c2; - }; - auto tri_cache = std::make_shared(); // Theme colours and DIP metrics are resolved inside the paint handler so dark-mode toggles - // and DPI changes are picked up on the next repaint without any explicit listener. - viz->Bind(wxEVT_PAINT, [this, panel = viz, spec, tri_cache](wxPaintEvent&) { + // and DPI changes are picked up on the next repaint without any explicit listener. The + // ternary fill cache lives inside the shared triangle painter (FilamentBitmapUtils). + viz->Bind(wxEVT_PAINT, [this, panel = viz, spec](wxPaintEvent&) { const wxColour bg = StateColor::darkModeColorFor(*wxWHITE); wxBufferedPaintDC pdc(panel); pdc.SetBackground(wxBrush(bg)); @@ -1203,236 +1196,117 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV const size_t n = spec.component_colours.size(); if (spec.tri_weights.size() == 3 && n == 3 && !spec.is_gradient) { - // Ternary mix: a read-only miniature of the MixedFilamentDialog's triangle picker. - // Per-pixel barycentric fill is cached into a bitmap keyed on size + colours; the - // marker and labels are redrawn on top every paint. - const wxColour tri_bg = StateColor::darkModeColorFor(*wxWHITE); - const wxColour outline = StateColor::darkModeColorFor(wxColour("#CECECE")); - const wxColour ring = StateColor::darkModeColorFor(wxColour("#262E30")); - const wxColour label_c = StateColor::darkModeColorFor(wxColour(107, 107, 107)); // grey 700 - const double margin_dip = 24.0; - auto& cache = *tri_cache; - - auto vertices_for = [&](const wxSize& sz) -> std::tuple { - const double pw = sz.GetWidth(), ph = sz.GetHeight(); - const int margin = FromDIP(int(margin_dip)); - const double avail = std::min(pw, ph) - 2.0 * margin; - const double side = avail; - const double tri_h = side * std::sqrt(3.0) / 2.0; - const double cx = pw / 2.0; - const double top_y = (ph - tri_h) / 2.0; - return {{cx, top_y}, {cx - side / 2.0, top_y + tri_h}, {cx + side / 2.0, top_y + tri_h}}; - }; - - pdc.SetFont(::Label::Body_12); - const wxColour& c0 = spec.component_colours[0]; - const wxColour& c1 = spec.component_colours[1]; - const wxColour& c2 = spec.component_colours[2]; - - if (!cache.bmp.IsOk() || cache.sz != rc.GetSize() || cache.c0 != c0 || cache.c1 != c1 || cache.c2 != c2) { - auto [v0, v1, v2] = vertices_for(rc.GetSize()); - cache.bmp = wxBitmap(rc.width, rc.height, 32); - wxMemoryDC mdc(cache.bmp); - mdc.SetBrush(wxBrush(tri_bg)); - mdc.SetPen(*wxTRANSPARENT_PEN); - mdc.DrawRectangle(0, 0, rc.width, rc.height); - - const int min_y = int(std::min({v0.y, v1.y, v2.y})); - const int max_y = int(std::max({v0.y, v1.y, v2.y})); - const int min_x = int(std::min({v0.x, v1.x, v2.x})); - const int max_x = int(std::max({v0.x, v1.x, v2.x})); - for (int py = min_y; py <= max_y; ++py) - for (int px = min_x; px <= max_x; ++px) { - const TriPoint p = {double(px), double(py)}; - if (!tri_contains(p, v0, v1, v2)) - continue; - double w0, w1, w2; - tri_barycentric(p, v0, v1, v2, w0, w1, w2); - unsigned char mr, mg, mb; - if (w0 + w1 > 1e-6) { - float t01 = static_cast(w1 / (w0 + w1)); - Slic3r::filament_mixer_lerp(c0.Red(), c0.Green(), c0.Blue(), c1.Red(), c1.Green(), c1.Blue(), t01, &mr, &mg, - &mb); - Slic3r::filament_mixer_lerp(mr, mg, mb, c2.Red(), c2.Green(), c2.Blue(), static_cast(w2), &mr, &mg, &mb); - } else { - mr = c2.Red(); - mg = c2.Green(); - mb = c2.Blue(); - } - mdc.SetPen(wxPen(wxColour(mr, mg, mb))); - mdc.DrawPoint(px, py); - } - - mdc.SetPen(wxPen(outline, 1)); - mdc.SetBrush(*wxTRANSPARENT_BRUSH); - const wxPoint pts[3] = {{int(v0.x), int(v0.y)}, {int(v1.x), int(v1.y)}, {int(v2.x), int(v2.y)}}; - mdc.DrawPolygon(3, pts); - mdc.SelectObject(wxNullBitmap); - - cache.sz = rc.GetSize(); - cache.c0 = c0; - cache.c1 = c1; - cache.c2 = c2; - } - pdc.DrawBitmap(cache.bmp, 0, 0); - - // Published-ratio marker (read-only twin of the editor's drag handle). - { - auto [v0, v1, v2] = vertices_for(rc.GetSize()); - const double w0 = spec.tri_weights[0], w1 = spec.tri_weights[1], w2 = spec.tri_weights[2]; - const int hx = int(w0 * v0.x + w1 * v1.x + w2 * v2.x); - const int hy = int(w0 * v0.y + w1 * v1.y + w2 * v2.y); - pdc.SetBrush(*wxWHITE_BRUSH); - pdc.SetPen(wxPen(ring, FromDIP(2))); - pdc.DrawCircle(hx, hy, FromDIP(5)); - - // Percent label beside each vertex. - for (int i = 0; i < 3; ++i) { - const wxString text = wxString::Format("%d%%", int(std::lround(spec.tri_weights[i] * 100.0))); + // Ternary mix: read-only miniature of the MixedFilamentDialog's triangle picker. + const MixedTriangleTheme tri_theme{StateColor::darkModeColorFor(*wxWHITE), + StateColor::darkModeColorFor(wxColour("#CECECE")), + StateColor::darkModeColorFor(wxColour("#262E30")), + StateColor::darkModeColorFor(wxColour(107, 107, 107))}; + draw_mixed_triangle_picker(pdc, rc.GetSize(), {spec.component_colours[0], spec.component_colours[1], spec.component_colours[2]}, + {spec.tri_weights[0], spec.tri_weights[1], spec.tri_weights[2]}, tri_theme); + draw_mixed_triangle_labels(pdc, rc.GetSize(), {spec.tri_weights[0], spec.tri_weights[1], spec.tri_weights[2]}, tri_theme); + } else if (!spec.is_gradient) { + // Ratio bar. A 2-component slot matches the MixedFilamentDialog's continuous blend + + // divider (with its two end labels); wider non-gradient mixes (rare) fall back to one + // solid segment per component. + if (n == 2) { + const int bar_h = FromDIP(27); + draw_mixed_ratio_blend_bar(pdc, wxRect(rc.x, rc.y, rc.width, bar_h), spec.component_colours[0], + spec.component_colours[1], spec.ratios[1]); + // Read-only twin of the dialog's left/right percentage labels. + pdc.SetFont(::Label::Body_12); + pdc.SetTextForeground(StateColor::darkModeColorFor(wxColour(107, 107, 107))); + const wxString la = wxString::Format("%d%%", int(std::lround(spec.ratios[0] * 100.0))); + const wxString lb = wxString::Format("%d%%", int(std::lround(spec.ratios[1] * 100.0))); + const int lab_y = rc.y + bar_h + FromDIP(2); + pdc.DrawText(la, rc.x, lab_y); + pdc.DrawText(lb, rc.x + rc.width - pdc.GetTextExtent(lb).GetWidth(), lab_y); + } else { + draw_mixed_ratio_segments(pdc, rc, spec.component_colours, spec.ratios); + // Percent label centred in each segment wide enough to hold it. + std::vector shares = spec.ratios; + double total = 0.0; + for (double r : shares) + total += r; + if (total <= 0.0) { + shares.assign(n, 1.0 / n); + total = 1.0; + } + pdc.SetFont(::Label::Body_12); + int x0 = rc.x; + for (size_t i = 0; i < n; ++i) { + const int x1 = (i + 1 < n) + ? rc.x + int(std::lround(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0) / total * double(rc.width))) + : rc.x + rc.width; + const int w = std::max(1, x1 - x0); + const wxString text = wxString::Format("%d%%", int(std::lround(shares[i] / total * 100.0))); const wxSize tsz = pdc.GetTextExtent(text); - const TriPoint vtx = (i == 0) ? v0 : (i == 1) ? v1 : v2; - int lx = int(vtx.x - tsz.GetWidth() / 2.0); - int ly = (i == 0) ? int(vtx.y - tsz.GetHeight()) : int(vtx.y + FromDIP(3)); - ly = std::clamp(ly, 0, rc.height - tsz.GetHeight()); - lx = std::clamp(lx, 0, rc.width - tsz.GetWidth()); - pdc.SetTextForeground(label_c); - pdc.DrawText(text, lx, ly); + if (tsz.GetWidth() + FromDIP(4) <= w) { + const wxColour& c = spec.component_colours[i]; + const double lum = 0.299 * c.Red() + 0.587 * c.Green() + 0.114 * c.Blue(); + pdc.SetTextForeground(lum > 140 ? wxColour("#262E30") : *wxWHITE); + pdc.DrawText(text, x0 + (w - tsz.GetWidth()) / 2, rc.y + (rc.height - tsz.GetHeight()) / 2); + } + x0 = x1; } } - } else if (!spec.is_gradient) { - // Stacked ratio bar: one solid segment per component, widths proportional to the - // published shares. Integer widths accumulate left to right; the last segment takes - // the rounding remainder so the bar always fills exactly. - std::vector shares = spec.ratios; - double total = 0.0; - for (double r : shares) - total += r; - if (shares.size() != n || total <= 0.0) { - shares.assign(n, 1.0 / n); - total = 1.0; - } - auto share_to_px = [&](double share_sum) { return rc.x + int(std::lround(share_sum / total * double(rc.width))); }; - std::vector segs(n); - int x0 = rc.x; - for (size_t i = 0; i < n; ++i) { - int x1 = rc.x + rc.width; - if (i + 1 < n) - x1 = share_to_px(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0)); - segs[i] = wxRect(x0, rc.y, std::max(1, x1 - x0), rc.height); - x0 = segs[i].GetRight() + 1; - } - - for (size_t i = 0; i < n; ++i) { - pdc.SetPen(*wxTRANSPARENT_PEN); - pdc.SetBrush(wxBrush(spec.component_colours[i])); - pdc.DrawRectangle(segs[i]); - } - pdc.SetBrush(*wxTRANSPARENT_BRUSH); - pdc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#ACACAC")), 1)); - pdc.DrawRectangle(rc); - - // Percent label centred in each segment wide enough to hold it. - pdc.SetFont(::Label::Body_12); - for (size_t i = 0; i < n; ++i) { - const wxString text = wxString::Format("%d%%", int(std::lround(shares[i] / total * 100.0))); - const wxSize tsz = pdc.GetTextExtent(text); - if (tsz.GetWidth() + FromDIP(4) > segs[i].GetWidth()) - continue; - // Label contrast follows the swatch itself, not the theme. - const wxColour& c = spec.component_colours[i]; - const double lum = 0.299 * c.Red() + 0.587 * c.Green() + 0.114 * c.Blue(); - pdc.SetTextForeground(lum > 140 ? wxColour("#262E30") : *wxWHITE); - pdc.DrawText(text, segs[i].x + (segs[i].GetWidth() - tsz.GetWidth()) / 2, rc.y + (rc.height - tsz.GetHeight()) / 2); - } } else { - // Gradient: compact "Material Ratio" over "Model Height" graph, a read-only - // miniature of the GradientCurveEditor plot. Component order matches the config; - // the second component's curve is the mirror of the first's. - const wxColour grid_color = StateColor::darkModeColorFor(wxColour(238, 238, 238)); // grey 300 - const wxColour axis_color = StateColor::darkModeColorFor(wxColour(107, 107, 107)); // grey 700 - const wxColour label_muted = StateColor::darkModeColorFor(wxColour(107, 107, 107)); - const wxColour point_fill = StateColor::darkModeColorFor(*wxWHITE); - - const int pad_left = FromDIP(34); - const int pad_right = FromDIP(10); - const int pad_top = FromDIP(18); - const int pad_bottom = FromDIP(16); - const wxRect plot(rc.x + pad_left, rc.y + pad_top, std::max(1, rc.width - pad_left - pad_right), - std::max(1, rc.height - pad_top - pad_bottom)); - - constexpr int kGridDivisions = 5; - pdc.SetPen(wxPen(grid_color, 1)); - for (int i = 0; i <= kGridDivisions; ++i) { - const int gx = plot.x + plot.width * i / kGridDivisions; - const int gy = plot.y + plot.height * i / kGridDivisions; - pdc.DrawLine(gx, plot.y, gx, plot.y + plot.height); - pdc.DrawLine(plot.x, gy, plot.x + plot.width, gy); - } - - // Axes with small filled arrowheads along the plot's left and bottom edges. - const int arrow_len = FromDIP(7); - const int arrow_half = FromDIP(3); - pdc.SetPen(wxPen(axis_color, 1)); - pdc.SetBrush(wxBrush(axis_color)); - pdc.DrawLine(plot.x, plot.y + plot.height, plot.x, plot.y); - { - wxPoint tri[3] = {wxPoint(plot.x, plot.y - arrow_len), wxPoint(plot.x - arrow_half, plot.y), - wxPoint(plot.x + arrow_half, plot.y)}; - pdc.DrawPolygon(3, tri); - } - pdc.DrawLine(plot.x, plot.y + plot.height, plot.x + plot.width, plot.y + plot.height); - { - wxPoint tri[3] = {wxPoint(plot.x + plot.width + arrow_len, plot.y + plot.height), - wxPoint(plot.x + plot.width, plot.y + plot.height - arrow_half), - wxPoint(plot.x + plot.width, plot.y + plot.height + arrow_half)}; - pdc.DrawPolygon(3, tri); - } - - wxFont label_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); - label_font.SetPointSize(std::max(7, label_font.GetPointSize() - 1)); - pdc.SetFont(label_font); - pdc.SetTextForeground(label_muted); - pdc.DrawText(_L("Material Ratio"), plot.x + FromDIP(4), plot.y - pdc.GetTextExtent(_L("Material Ratio")).GetHeight()); - const wxString height_title = _L("Model Height"); - pdc.DrawText(height_title, plot.x + plot.width - pdc.GetTextExtent(height_title).GetWidth(), plot.y + plot.height + FromDIP(2)); - + // Gradient: read-only miniature of the GradientCurveEditor plot, drawn through the + // shared painter so it anti-aliases and keeps the square proportions and labels. + const MixedGradientTheme grad_theme{StateColor::darkModeColorFor(*wxWHITE), + StateColor::darkModeColorFor(wxColour(238, 238, 238)), + StateColor::darkModeColorFor(wxColour(107, 107, 107)), + StateColor::darkModeColorFor(wxColour(107, 107, 107)), + StateColor::darkModeColorFor(wxColour(38, 46, 48)), + StateColor::darkModeColorFor(wxColour(172, 172, 172)), + StateColor::darkModeColorFor(*wxWHITE)}; + std::vector curves; + std::vector anchors; if (spec.gradient_samples.size() >= 2 && n >= 2) { - auto curve_point = [&](double t, double ratio) { - return wxPoint(plot.x + int(std::lround(t * plot.width)), plot.y + int(std::lround((1.0 - ratio) * plot.height))); + const wxRect plot = mixed_gradient_plot_rect(rc.GetSize()); + auto lift_alpha = [](wxColour c) { + if (c.Alpha() == 0) + c.Set(c.Red(), c.Green(), c.Blue(), 150); + return c; }; - // First component's ratio solid, its mirror dashed-free twin for the other. - const wxColour& col_a = spec.component_colours[0]; - const wxColour& col_b = spec.component_colours[1]; - std::vector pts_a, pts_b; + // First component's ratio solid, its mirror twin for the other. + const wxColour col_a = lift_alpha(spec.component_colours[0]); + const wxColour col_b = lift_alpha(spec.component_colours[1]); + std::vector pts_a, pts_b; pts_a.reserve(spec.gradient_samples.size()); pts_b.reserve(spec.gradient_samples.size()); for (const auto& [t, r] : spec.gradient_samples) { - pts_a.push_back(curve_point(t, r)); - pts_b.push_back(curve_point(t, 1.0 - r)); + pts_a.push_back({plot.x + t * plot.width, plot.y + (1.0 - r) * plot.height}); + pts_b.push_back({plot.x + t * plot.width, plot.y + r * plot.height}); } - pdc.SetPen(wxPen(col_b, 2)); - for (size_t i = 0; i + 1 < pts_b.size(); ++i) - pdc.DrawLine(pts_b[i], pts_b[i + 1]); - pdc.SetPen(wxPen(col_a, 2)); - for (size_t i = 0; i + 1 < pts_a.size(); ++i) - pdc.DrawLine(pts_a[i], pts_a[i + 1]); - // Control-point anchors of the stored curve on the first component's line. - pdc.SetBrush(wxBrush(point_fill)); - pdc.SetPen(wxPen(col_a, 1)); - for (const auto& [t, r] : spec.gradient_anchors) { - const wxPoint c = curve_point(t, r); - pdc.DrawCircle(c, FromDIP(3)); - } + anchors.reserve(spec.gradient_anchors.size()); + for (const auto& [t, r] : spec.gradient_anchors) + anchors.push_back({plot.x + t * plot.width, plot.y + (1.0 - r) * plot.height}); + curves.push_back({std::move(pts_a), col_a, 4}); + curves.push_back({std::move(pts_b), col_b, 2}); } + draw_mixed_gradient_plot(pdc, rc.GetSize(), curves, anchors, grad_theme); } }); // Fixed DIP size, left-aligned: the visualization keeps its proportions no matter how the // dialog is resized (the paint handler draws into whatever client rect the panel ends up - // with, so nothing else has to change). - const int viz_h = spec.is_gradient ? 150 : (spec.tri_weights.size() == 3 ? 180 : 30); - const wxSize viz_sz(FromDIP(240), FromDIP(viz_h)); + // with, so nothing else has to change). Sizes mirror the MixedFilamentDialog controls: the + // gradient plot and triangle picker match the editor's 260x200 / 160x160, the ratio bar is + // the dialog's 27px bar plus its label line. + int viz_h; + int viz_w; + if (spec.is_gradient) { + viz_w = 260; + viz_h = 200; + } else if (spec.tri_weights.size() == 3 && spec.component_colours.size() == 3) { + viz_w = 160; + viz_h = 160; + } else { + viz_w = 240; + viz_h = spec.component_colours.size() == 2 ? 50 : 30; + } + const wxSize viz_sz(FromDIP(viz_w), FromDIP(viz_h)); viz->SetMinSize(viz_sz); viz->SetMaxSize(viz_sz); // Parented to the page right above the scroll area, so it is always shown with the tab: diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 7e1f748e36..4090bf9c1b 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -92,7 +92,7 @@ int TabCtrl::AppendItem(const wxString& item, int image, int selImage, void* cli btn->Create(this, item, "", wxBORDER_NONE); btn->SetFont(GetFont()); btn->SetTextColor( - StateColor(std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), std::make_pair(*wxLIGHT_GREY, (int) StateColor::Normal))); + StateColor(std::make_pair(0x6B6B6C, (int) StateColor::NotChecked), std::make_pair(wxColour("#262E30"), (int) StateColor::Normal))); btn->SetBackgroundColor(StateColor()); btn->SetCornerRadius(0); btn->SetPaddingSize({TAB_BUTTON_PADDING}); From 174d23e22fc82a511fd95199750e9440a583cb15 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 12:40:41 +0800 Subject: [PATCH 042/162] Fixes windows light mode text issues --- src/slic3r/GUI/PublishSettingsDialog.cpp | 106 +++++++++++++---------- src/slic3r/GUI/PublishSettingsDialog.hpp | 2 + 2 files changed, 61 insertions(+), 47 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 73016f4902..26ed31dfc3 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -200,8 +200,12 @@ wxBitmap mixed_filament_chip_bitmap(const DynamicPrintConfig& full, size_t slot, // followed by their percent share (or a "->" arrow for gradients), mirroring the main GUI's // sidebar rows - e.g. "[3 purple]: [1 red] 50% + [2 blue] 50%". The whole composition is one // bitmap because a TabCtrl item cannot interleave images into its text; the tab's text is -// therefore empty. Transparent background like the other chips. -wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz) +// therefore empty. The bitmap is opaque and bakes tab_bg (the tab strip's background colour): +// its texts are rasterized with plain GDI on that solid ground, like the sidebar rows and the +// color chips. Text on a transparent bitmap has to go through the graphics-context route, and +// on MSW that degrades into jagged ClearType-fallback glyphs with fringe halos - the same +// reason draw_mixed_gradient_plot renders into an opaque buffer (FilamentBitmapUtils.cpp). +wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, int swatch_sz, const wxColour& tab_bg) { const std::vector comps = mixed_slot_components(full, slot); if (comps.empty()) @@ -272,40 +276,26 @@ wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, for (const Piece& p : pieces) width += (p.kind == Piece::Swatch ? swatch_sz : measure_dc.GetTextExtent(p.text).x + gap); - // Phase 2 (draw): transparent background like the page-header chips. + // Phase 2 (draw): opaque, filled with the tab strip's background colour. Text goes through + // the plain DC on every platform (see the function comment for why the alpha route is + // avoided); chip bitmaps keep their own alpha and composite cleanly onto the fill. wxBitmap composite(width, swatch_sz); wxMemoryDC memdc; -#ifdef __WXOSX__ - composite.UseAlpha(); memdc.SelectObject(composite); -#else - { - wxImage img(width, swatch_sz); - img.InitAlpha(); - memset(img.GetAlpha(), 0, width * swatch_sz); - composite = wxBitmap(std::move(img)); - } - memdc.SelectObject(composite); -#endif - { -#ifdef __WXMSW__ - wxGCDC dc(memdc); -#else - wxDC& dc = memdc; -#endif - dc.SetBackgroundMode(wxTRANSPARENT); - dc.SetFont(::Label::Body_12); - dc.SetTextForeground(StateColor::darkModeColorFor(wxColour("#262E30"))); - int x = 0; - for (const Piece& p : pieces) { - if (p.kind == Piece::Swatch) { - dc.DrawBitmap(p.bmp, x, 0); - x += swatch_sz; - } else { - const wxSize tsz = measure_dc.GetTextExtent(p.text); - dc.DrawText(p.text, x + gap / 2, (swatch_sz - tsz.y) / 2); - x += tsz.x + gap; - } + memdc.SetBackground(wxBrush(tab_bg)); + memdc.Clear(); + memdc.SetBackgroundMode(wxTRANSPARENT); + memdc.SetFont(::Label::Body_12); + memdc.SetTextForeground(StateColor::darkModeColorFor(wxColour("#262E30"))); + int x = 0; + for (const Piece& p : pieces) { + if (p.kind == Piece::Swatch) { + memdc.DrawBitmap(p.bmp, x, 0, true); + x += swatch_sz; + } else { + const wxSize tsz = measure_dc.GetTextExtent(p.text); + memdc.DrawText(p.text, x + gap / 2, (swatch_sz - tsz.y) / 2); + x += tsz.x + gap; } } memdc.SelectObject(wxNullBitmap); @@ -546,6 +536,10 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) SetSizerAndFit(w_sizer); fit_to_content(); // initial size only; the dialog is resizable wxGetApp().UpdateDlgDarkUI(this); + // The dark-UI walk re-colours the tab strips after the compositions were baked; rebuild so + // they carry the theme-resolved background (the sidebar resolves its colours at paint time, + // this dialog bakes, so the bake has to happen after the walk). + refresh_mixed_tab_bitmaps(); } // Size the window to its content: width follows the widest tab strip so no filament tab is @@ -1030,7 +1024,7 @@ size_t PublishSettingsDialog::category_index_for( // bitmap; the text is empty because a TabCtrl item cannot interleave images into // its text. const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); - const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20)); + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20), target->GetBackgroundColour()); if (tab_bmp.IsOk()) target->AppendItem(wxString(), tab_bmp); else @@ -1891,28 +1885,46 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) for (size_t category_index = 0; category_index < m_categories.size(); ++category_index) { const Category& category = m_categories[category_index]; - if (category.section != Section::Material) + if (category.section != Section::Material || category.is_mixed) continue; - const SectionGroup& section = m_sections[category.group]; - if (category.is_mixed) { - // The tab carries the full composition bitmap (mix chip + components + percents); - // the page header has no chip/title to refresh. - const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full, category.filament_slot, FromDIP(20)); - if (tab_bmp.IsOk()) { - const auto iter = std::find(section.mixed_categories.begin(), section.mixed_categories.end(), category_index); - if (iter != section.mixed_categories.end() && section.mixed_tabs != nullptr) - section.mixed_tabs->SetItemBitmap(static_cast(iter - section.mixed_categories.begin()), tab_bmp); - } - } else if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), - std::to_string(category.filament_slot + 1), FromDIP(20), FromDIP(20))) { + if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), + std::to_string(category.filament_slot + 1), FromDIP(20), FromDIP(20))) { + const SectionGroup& section = m_sections[category.group]; const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); if (iter != section.categories.end()) m_sections[category.group].tabs->SetItemBitmap(static_cast(iter - section.categories.begin()), *chip); } } + refresh_mixed_tab_bitmaps(); fit_to_content(); // tab buttons' min widths grew with the DPI: re-fit (incl. resize floor) Refresh(); } +void PublishSettingsDialog::refresh_mixed_tab_bitmaps() +{ + // The mixed-tab composition bitmaps bake the tab strip's background colour and DPI-scaled + // text, so both a theme flip and a DPI change have to rebuild them. + const DynamicPrintConfig full = wxGetApp().preset_bundle->full_config(); + for (SectionGroup& section : m_sections) { + if (section.mixed_tabs == nullptr) + continue; + const wxColour tab_bg = section.mixed_tabs->GetBackgroundColour(); + for (size_t i = 0; i < section.mixed_categories.size(); ++i) { + const Category& category = m_categories[section.mixed_categories[i]]; + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full, category.filament_slot, FromDIP(20), tab_bg); + if (tab_bmp.IsOk()) + section.mixed_tabs->SetItemBitmap(static_cast(i), tab_bmp); + } + } +} + +void PublishSettingsDialog::on_sys_color_changed() +{ + // The mixed-tab compositions bake the tab strip's background colour: rebuild them when the + // theme changes (on_dpi_changed covers rescales). + refresh_mixed_tab_bitmaps(); + Refresh(); +} + }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 8d59192309..f2dcf70bba 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -58,9 +58,11 @@ public: protected: void on_dpi_changed(const wxRect& suggested_rect) override; + void on_sys_color_changed() override; private: void fit_to_content(); + void refresh_mixed_tab_bitmaps(); // Which part of the settings the row/category came from. enum class Section { Print, Printer, Material }; From 49c4b09db62dae4d478d15edb21b9181de5ba194 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 14:56:03 +0800 Subject: [PATCH 043/162] Show alias instead of full name in publish dialog --- src/slic3r/GUI/PublishSettingsDialog.cpp | 47 +++++++++++++----------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 26ed31dfc3..fcc2816b06 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -93,8 +93,12 @@ wxString material_title(size_t slot, const PresetBundle* bundle, const DynamicPr { if (slot < bundle->filament_presets.size()) { const Preset* preset = bundle->filaments.find_preset(bundle->filament_presets[slot]); - if (preset != nullptr && !preset->name.empty()) - return from_u8(material_display_name(preset->name)); + if (preset != nullptr && !preset->name.empty()) { + // Display the name the sidebar does: the alias (already bare-name + variant-tail + // stripped for root filament presets). + const std::string& display = preset->alias.empty() ? get_preset_bare_name(preset->name) : preset->alias; + return from_u8(material_display_name(display)); + } } const PublishMaterialIdentity identity = material_identity(slot, full); if (!identity.type.empty()) @@ -250,7 +254,7 @@ wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, { const wxBitmap chip = mixed_filament_chip_bitmap(full, slot, swatch_sz); - has_lead = chip.IsOk(); + has_lead = chip.IsOk(); if (has_lead) pieces.push_back({Piece::Swatch, chip, wxString()}); } @@ -357,7 +361,8 @@ public: } auto* reason = new wxStaticText(this, wxID_ANY, - issue.reason == MixedDependencyIssue::Reason::Disabled ? _L("not enabled") : _L("material not published")); + issue.reason == MixedDependencyIssue::Reason::Disabled ? _L("not enabled") : + _L("material not published")); reason->SetFont(Label::Body_12); reason->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#989898"))); row->Add(reason, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); @@ -366,7 +371,8 @@ public: content->AddSpacer(FromDIP(6)); } - auto* hint = new wxStaticText(this, wxID_ANY, + auto* hint = new wxStaticText( + this, wxID_ANY, _L("To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement.")); hint->SetFont(Label::Body_12); hint->Wrap(FromDIP(380)); @@ -1024,7 +1030,7 @@ size_t PublishSettingsDialog::category_index_for( // bitmap; the text is empty because a TabCtrl item cannot interleave images into // its text. const DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config(); - const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20), target->GetBackgroundColour()); + const wxBitmap tab_bmp = mixed_filament_tab_bitmap(full_cfg, source_index, FromDIP(20), target->GetBackgroundColour()); if (tab_bmp.IsOk()) target->AppendItem(wxString(), tab_bmp); else @@ -1191,8 +1197,7 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV if (spec.tri_weights.size() == 3 && n == 3 && !spec.is_gradient) { // Ternary mix: read-only miniature of the MixedFilamentDialog's triangle picker. - const MixedTriangleTheme tri_theme{StateColor::darkModeColorFor(*wxWHITE), - StateColor::darkModeColorFor(wxColour("#CECECE")), + const MixedTriangleTheme tri_theme{StateColor::darkModeColorFor(*wxWHITE), StateColor::darkModeColorFor(wxColour("#CECECE")), StateColor::darkModeColorFor(wxColour("#262E30")), StateColor::darkModeColorFor(wxColour(107, 107, 107))}; draw_mixed_triangle_picker(pdc, rc.GetSize(), {spec.component_colours[0], spec.component_colours[1], spec.component_colours[2]}, @@ -1204,21 +1209,21 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV // solid segment per component. if (n == 2) { const int bar_h = FromDIP(27); - draw_mixed_ratio_blend_bar(pdc, wxRect(rc.x, rc.y, rc.width, bar_h), spec.component_colours[0], - spec.component_colours[1], spec.ratios[1]); + draw_mixed_ratio_blend_bar(pdc, wxRect(rc.x, rc.y, rc.width, bar_h), spec.component_colours[0], spec.component_colours[1], + spec.ratios[1]); // Read-only twin of the dialog's left/right percentage labels. pdc.SetFont(::Label::Body_12); pdc.SetTextForeground(StateColor::darkModeColorFor(wxColour(107, 107, 107))); const wxString la = wxString::Format("%d%%", int(std::lround(spec.ratios[0] * 100.0))); const wxString lb = wxString::Format("%d%%", int(std::lround(spec.ratios[1] * 100.0))); - const int lab_y = rc.y + bar_h + FromDIP(2); + const int lab_y = rc.y + bar_h + FromDIP(2); pdc.DrawText(la, rc.x, lab_y); pdc.DrawText(lb, rc.x + rc.width - pdc.GetTextExtent(lb).GetWidth(), lab_y); } else { draw_mixed_ratio_segments(pdc, rc, spec.component_colours, spec.ratios); // Percent label centred in each segment wide enough to hold it. std::vector shares = spec.ratios; - double total = 0.0; + double total = 0.0; for (double r : shares) total += r; if (total <= 0.0) { @@ -1228,10 +1233,10 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV pdc.SetFont(::Label::Body_12); int x0 = rc.x; for (size_t i = 0; i < n; ++i) { - const int x1 = (i + 1 < n) - ? rc.x + int(std::lround(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0) / total * double(rc.width))) - : rc.x + rc.width; - const int w = std::max(1, x1 - x0); + const int x1 = (i + 1 < n) ? rc.x + int(std::lround(std::accumulate(shares.begin(), shares.begin() + i + 1, 0.0) / + total * double(rc.width))) : + rc.x + rc.width; + const int w = std::max(1, x1 - x0); const wxString text = wxString::Format("%d%%", int(std::lround(shares[i] / total * 100.0))); const wxSize tsz = pdc.GetTextExtent(text); if (tsz.GetWidth() + FromDIP(4) <= w) { @@ -1254,10 +1259,10 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV StateColor::darkModeColorFor(wxColour(172, 172, 172)), StateColor::darkModeColorFor(*wxWHITE)}; std::vector curves; - std::vector anchors; + std::vector anchors; if (spec.gradient_samples.size() >= 2 && n >= 2) { const wxRect plot = mixed_gradient_plot_rect(rc.GetSize()); - auto lift_alpha = [](wxColour c) { + auto lift_alpha = [](wxColour c) { if (c.Alpha() == 0) c.Set(c.Red(), c.Green(), c.Blue(), 150); return c; @@ -1288,8 +1293,8 @@ void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedV // with, so nothing else has to change). Sizes mirror the MixedFilamentDialog controls: the // gradient plot and triangle picker match the editor's 260x200 / 160x160, the ratio bar is // the dialog's 27px bar plus its label line. - int viz_h; - int viz_w; + int viz_h; + int viz_w; if (spec.is_gradient) { viz_w = 260; viz_h = 200; @@ -1890,7 +1895,7 @@ void PublishSettingsDialog::on_dpi_changed(const wxRect& suggested_rect) if (wxBitmap* chip = get_extruder_color_icon(filament_color_hex(full, category.filament_slot), std::to_string(category.filament_slot + 1), FromDIP(20), FromDIP(20))) { const SectionGroup& section = m_sections[category.group]; - const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); + const auto iter = std::find(section.categories.begin(), section.categories.end(), category_index); if (iter != section.categories.end()) m_sections[category.group].tabs->SetItemBitmap(static_cast(iter - section.categories.begin()), *chip); } From 7133d6b22557b7ba664c8b9005388867df4980f2 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 16:59:25 +0800 Subject: [PATCH 044/162] Added wiki and youtube guide link as placeholders. Add to recently opened in home screen after publishing. Show PUB badge. Add .published as a file save name hint. --- resources/web/homepage/css/home.css | 29 ++++++++++++++ resources/web/homepage/js/home.js | 5 ++- src/libslic3r/Format/bbs_3mf.cpp | 50 ++++++++++++++++++++++++ src/libslic3r/Format/bbs_3mf.hpp | 3 ++ src/slic3r/GUI/MainFrame.cpp | 15 ++++++- src/slic3r/GUI/MainFrame.hpp | 2 + src/slic3r/GUI/Plater.cpp | 39 +++++++++++------- src/slic3r/GUI/PublishSettingsDialog.cpp | 19 +++++++++ 8 files changed, 145 insertions(+), 17 deletions(-) diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index e99d22ec64..395dcc9356 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -572,6 +572,35 @@ body word-break: break-all; } +.FileNamePack +{ + display: flex; + align-items: center; + min-width: 0; + overflow: hidden; +} + +.FileNamePack .FileName +{ + flex: 1 1 auto; + min-width: 0; +} + +.FilePublishedBadge +{ + flex: 0 0 auto; + margin-right: 4px; + padding: 0 4px; + height: 16px; + line-height: 16px; + font-size: 10px; + font-weight: 600; + color: #FFFFFF; + background-color: #00AE42; + border-radius: 2px; + white-space: nowrap; +} + .FileDate { color: #A8A8A8; diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index f522c44bed..3cb5ff4fb3 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -219,15 +219,18 @@ function ShowRecentFileList( pList ) let sImg=OneFile["image"] || sImages[sPath]; let sTime=OneFile['time']; let sName=OneFile['project_name']; + let sPublished=OneFile['published'] == '1'; sImages[sPath] = sImg; //let index=sPath.lastIndexOf('\\')>0?sPath.lastIndexOf('\\'):sPath.lastIndexOf('\/'); //let sShortName=sPath.substring(index+1,sPath.length); + let sBadge=sPublished? 'PUB':''; + let TmpHtml='
'+ ''+ '
No Image
'+ - '
'+sName+'
'+ + '
'+sBadge+'
'+sName+'
'+ '
'+sTime+'
'+ '
'; diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index ed88511d9c..3a3ee20e6f 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -9205,6 +9205,56 @@ std::string bbs_3mf_get_thumbnail(const char *path) return data; } +bool bbs_3mf_is_published(const std::string &path) +{ + mz_zip_archive archive; + mz_zip_zero_struct(&archive); + + struct close_lock + { + mz_zip_archive *archive; + void close() + { + if (archive) { + close_zip_reader(archive); + archive = nullptr; + } + } + ~close_lock() { close(); } + } lock{&archive}; + + if (!open_zip_reader(&archive, path)) + return false; + + // Read just the model XML and locate the published metadata node; no geometry parsing. + int index = mz_zip_reader_locate_file(&archive, MODEL_FILE.c_str(), nullptr, 0); + if (index < 0) + return false; + mz_zip_archive_file_stat stat; + if (!mz_zip_reader_file_stat(&archive, index, &stat)) + return false; + std::string xml(stat.m_uncomp_size, '\0'); + if (!mz_zip_reader_extract_to_mem(&archive, index, xml.data(), xml.size(), 0)) + return false; + + const std::string needle = std::string(""; + size_t pos = xml.find(needle); + if (pos == std::string::npos) + return false; + pos += needle.size(); + size_t end = xml.find("", pos); + if (end == std::string::npos) + return false; + + size_t value_begin = pos, value_end = end; + while (value_begin < value_end && (xml[value_begin] == ' ' || xml[value_begin] == '\t' || xml[value_begin] == '\n' || xml[value_begin] == '\r')) + ++value_begin; + while (value_end > value_begin && (xml[value_end - 1] == ' ' || xml[value_end - 1] == '\t' || xml[value_end - 1] == '\n' || xml[value_end - 1] == '\r')) + --value_end; + + return is_published_3mf_flag(xml.substr(value_begin, value_end - value_begin)); +} + bool load_gcode_3mf_from_stream(std::istream &data, DynamicPrintConfig *config, Model *model, PlateDataPtrs *plate_data_list, Semver *file_version) { CNumericLocalesSetter locales_setter; diff --git a/src/libslic3r/Format/bbs_3mf.hpp b/src/libslic3r/Format/bbs_3mf.hpp index 2e1600737b..768ae7bcfe 100644 --- a/src/libslic3r/Format/bbs_3mf.hpp +++ b/src/libslic3r/Format/bbs_3mf.hpp @@ -293,6 +293,9 @@ extern bool load_bbs_3mf(const char* path, DynamicPrintConfig* config, ConfigSub extern std::string bbs_3mf_get_thumbnail(const char * path); +// Lightweight check: does this 3mf carry the "published" (orca_published == "1") marker? Only reads the 3D/3dmodel.model metadata node +extern bool bbs_3mf_is_published(const std::string &path); + extern bool load_gcode_3mf_from_stream(std::istream & data, DynamicPrintConfig* config, Model* model, PlateDataPtrs* plate_data_list, Semver* file_version); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 3eb36154fc..7d73d884b0 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -4237,15 +4237,23 @@ std::wstring MainFrame::FileHistory::GetThumbnailUrl(int index) const return wss.str(); } +bool MainFrame::FileHistory::GetPublished(int index) const +{ + return index >= 0 && index < static_cast(m_published_files.size()) && m_published_files[index]; +} + void MainFrame::FileHistory::AddFileToHistory(const wxString &file) { if (this->m_fileMaxFiles == 0) return; wxFileHistory::AddFileToHistory(file); - if (m_load_called) + if (m_load_called) { m_thumbnails.push_front(bbs_3mf_get_thumbnail(into_u8(file).c_str())); - else + m_published_files.push_front(bbs_3mf_is_published(into_u8(file))); + } else { m_thumbnails.push_front(""); + m_published_files.push_front(false); + } } void MainFrame::FileHistory::RemoveFileFromHistory(size_t i) @@ -4254,6 +4262,7 @@ void MainFrame::FileHistory::RemoveFileFromHistory(size_t i) return; wxFileHistory::RemoveFileFromHistory(i); m_thumbnails.erase(m_thumbnails.begin() + i); + m_published_files.erase(m_published_files.begin() + i); } size_t MainFrame::FileHistory::FindFileInHistory(const wxString & file) @@ -4269,6 +4278,7 @@ void MainFrame::FileHistory::LoadThumbnails() if (!thumbnail.empty()) { m_thumbnails[i] = thumbnail; } + m_published_files[i] = bbs_3mf_is_published(into_u8(GetHistoryFile(i))); } }); m_load_called = true; @@ -4289,6 +4299,7 @@ void MainFrame::get_recent_projects(boost::property_tree::wptree &tree, int imag std::wstring proj = m_recent_projects.GetHistoryFile(i).ToStdWstring(); item.put(L"project_name", proj.substr(proj.find_last_of(L"/\\") + 1)); item.put(L"path", proj); + item.put(L"published", m_recent_projects.GetPublished(i) ? L"1" : L"0"); boost::system::error_code ec; std::time_t t = boost::filesystem::last_write_time(proj, ec); if (!ec) { diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index c09a29abb3..278c7e7f30 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -179,6 +179,7 @@ class MainFrame : public DPIFrame { FileHistory(int max) : wxFileHistory(max) {} std::wstring GetThumbnailUrl(int index) const; + bool GetPublished(int index) const; virtual void AddFileToHistory(const wxString &file); virtual void RemoveFileFromHistory(size_t i); @@ -189,6 +190,7 @@ class MainFrame : public DPIFrame void SetMaxFiles(int max); private: std::deque m_thumbnails; + std::deque m_published_files; // parallel to m_thumbnails: is it a published 3mf? bool m_load_called = false; }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d2c9c3589f..7a3789bc96 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5596,11 +5596,11 @@ void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_na // Count off filament_is_mixed, not filament_presets or the combos: the extruder-count spinner // reaches this before the sidebar has rebuilt, and update_multi_material_filament_presets() // can have grown filament_presets alone. - auto *bundle = wxGetApp().preset_bundle; - size_t insert_pos = bundle->num_physical_filaments(); - size_t total = insert_pos + bundle->num_mixed_filaments(); - int filament_count = (int)(total + 1); - std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); + auto* bundle = wxGetApp().preset_bundle; + size_t insert_pos = bundle->num_physical_filaments(); + size_t total = insert_pos + bundle->num_mixed_filaments(); + int filament_count = (int) (total + 1); + std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); bundle->set_num_filaments(filament_count, new_color); // Maintain physical-first ordering: rotate the new slot from end to insert_pos. @@ -7018,7 +7018,7 @@ struct Plater::priv void handle_textured_mesh_import(Slic3r::Model& model, const std::vector& obj_idxs, std::function cancel_callback = {}); fs::path get_export_file_path(GUI::FileType file_type); - wxString get_export_file(GUI::FileType file_type, const wxString& title = {}); + wxString get_export_file(GUI::FileType file_type, const wxString& title = {}, bool published = false); // BBS void load_auxiliary_files(); @@ -9069,7 +9069,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ for (const std::string& key : published_config.skipped_keys) message += "\n-" + key; // Informational: the load succeeded, these keys were skipped. - notify_manager->bbl_show_3mf_warn_notification(message, NotificationManager::NotificationLevel::WarningNotificationLevel); + notify_manager + ->bbl_show_3mf_warn_notification(message, + NotificationManager::NotificationLevel::WarningNotificationLevel); } // BBS: notify the user about slot materials that were replaced while @@ -9080,7 +9082,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ for (const std::string& replacement : published_config.material_replacements) message += "\n-" + replacement; // Informational: the load succeeded, the slots were adapted. - notify_manager->bbl_show_3mf_warn_notification(message, NotificationManager::NotificationLevel::WarningNotificationLevel); + notify_manager + ->bbl_show_3mf_warn_notification(message, + NotificationManager::NotificationLevel::WarningNotificationLevel); } ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); @@ -10026,7 +10030,7 @@ fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) return output_file; } -wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& title) +wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& title, bool published) { wxString wildcard; switch (file_type) { @@ -10060,7 +10064,10 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& break; } case FT_3MF: { - output_file.replace_extension("3mf"); + // A published export is suggested as ".published.3mf" so the role is visible in the + // dialog and in the recent-files list. This is only a pre-filled suggestion; the user's + // typed filename wins, keeping a plain ".3mf" output fully valid. + output_file.replace_extension(published ? "published.3mf" : "3mf"); dlg_title = title.empty() ? _L("Save file as") : title; break; } @@ -18262,7 +18269,7 @@ void Plater::export_core_3mf() int Plater::export_published_3mf(const std::vector& published_keys, const std::vector& material_keys) { - wxString path = p->get_export_file(FT_3MF, _L("Publish 3MF file as:")); + wxString path = p->get_export_file(FT_3MF, _L("Publish 3MF file as:"), true); if (path.empty() || path == "") return wxID_CANCEL; @@ -18397,6 +18404,10 @@ int Plater::export_published_3mf(const std::vector& published_keys, return wxID_CANCEL; } restore_now(); + + // Register the exported file in the "Recently opened" list + wxGetApp().mainframe->add_to_recent_projects(path); + return wxID_YES; } @@ -21869,9 +21880,9 @@ void Plater::show_object_info() int non_manifold_edges = 0; auto mesh_errors = p->sidebar->obj_list()->get_mesh_errors_info(&info_manifold, &non_manifold_edges); - if (non_manifold_edges > 0) { - info_manifold += "\n" + _L("Tips:") + "\n" + _L("Use \"Fix Model\" to repair the mesh."); - } + if (non_manifold_edges > 0) { + info_manifold += "\n" + _L("Tips:") + "\n" + _L("Use \"Fix Model\" to repair the mesh."); + } info_manifold = "" + info_manifold + ""; info_text += into_u8(info_manifold); diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index fcc2816b06..6b641e34da 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -515,6 +516,24 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) msg->Wrap(-1); w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + // Guide link: opens the (still WIP) Publish 3MF docs in a new window/tab, keeping the dialog open. + wxStaticText* guide_link = new wxStaticText(this, wxID_ANY, _L("Publish 3MF Wiki Guide")); + guide_link->SetFont(Label::Body_13); + guide_link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); + guide_link->SetCursor(wxCURSOR_HAND); + guide_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent&) { + wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html", wxBROWSER_NEW_WINDOW); + }); + w_sizer->Add(guide_link, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + + // Placeholder guide link: a Publish 3MF video URL, right below the wiki guide link. + wxStaticText* video_link = new wxStaticText(this, wxID_ANY, _L("Publish 3MF YouTube Video (Placeholder)")); + video_link->SetFont(Label::Body_13); + video_link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); + video_link->SetCursor(wxCURSOR_HAND); + video_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent&) { wxLaunchDefaultBrowser("https://www.youtube.com", wxBROWSER_NEW_WINDOW); }); + w_sizer->Add(video_link, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + w_sizer->Add(f_bar, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); w_sizer->Add(m_outer_tabs, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); w_sizer->Add(m_outer_host, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); From 90d5654db90adec6c1610b83936743e1cd74d238 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 17:56:47 +0800 Subject: [PATCH 045/162] Shifted the guide links to the bottom left of the publish dialog --- src/slic3r/GUI/PublishSettingsDialog.cpp | 41 ++++++++++++------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 6b641e34da..0e8c47b799 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -511,29 +511,11 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); - wxStaticText* msg = new wxStaticText(this, wxID_ANY, _L("Select which settings to embed in the 3MF file")); + wxStaticText* msg = new wxStaticText(this, wxID_ANY, _L("Select which settings to be published in the 3MF file")); msg->SetFont(Label::Body_13); msg->Wrap(-1); w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); - // Guide link: opens the (still WIP) Publish 3MF docs in a new window/tab, keeping the dialog open. - wxStaticText* guide_link = new wxStaticText(this, wxID_ANY, _L("Publish 3MF Wiki Guide")); - guide_link->SetFont(Label::Body_13); - guide_link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); - guide_link->SetCursor(wxCURSOR_HAND); - guide_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent&) { - wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html", wxBROWSER_NEW_WINDOW); - }); - w_sizer->Add(guide_link, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); - - // Placeholder guide link: a Publish 3MF video URL, right below the wiki guide link. - wxStaticText* video_link = new wxStaticText(this, wxID_ANY, _L("Publish 3MF YouTube Video (Placeholder)")); - video_link->SetFont(Label::Body_13); - video_link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); - video_link->SetCursor(wxCURSOR_HAND); - video_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent&) { wxLaunchDefaultBrowser("https://www.youtube.com", wxBROWSER_NEW_WINDOW); }); - w_sizer->Add(video_link, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); - w_sizer->Add(f_bar, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); w_sizer->Add(m_outer_tabs, 0, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); w_sizer->Add(m_outer_host, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); @@ -556,7 +538,26 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) }); dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); - w_sizer->Add(dlg_btns, 0, wxEXPAND); + // Guide links, bottom-left, sharing the footer row with the OK/Cancel buttons (pushed right). + auto make_link = [this](const wxString& label, const char* url) { + wxStaticText* link = new wxStaticText(this, wxID_ANY, label); + link->SetFont(Label::Body_13); + link->SetForegroundColour(wxColour(0x1F, 0x8E, 0xEA)); + link->SetCursor(wxCURSOR_HAND); + link->Bind(wxEVT_LEFT_DOWN, [url](wxMouseEvent&) { wxLaunchDefaultBrowser(url, wxBROWSER_NEW_WINDOW); }); + return link; + }; + wxBoxSizer* links_sizer = new wxBoxSizer(wxVERTICAL); + links_sizer->Add(make_link(_L("Publish 3MF Wiki Guide"), "https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html"), 0, + wxALIGN_LEFT); + links_sizer->Add(make_link(_L("Publish 3MF YouTube Video (Placeholder)"), "https://www.youtube.com"), 0, wxTOP | wxALIGN_LEFT, + FromDIP(4)); + + wxBoxSizer* footer = new wxBoxSizer(wxHORIZONTAL); + footer->Add(links_sizer, 0, wxALIGN_CENTER_VERTICAL); + footer->AddStretchSpacer(); + footer->Add(dlg_btns, 0, wxALIGN_CENTER_VERTICAL); + w_sizer->Add(footer, 0, wxRIGHT | wxLEFT | wxBOTTOM | wxEXPAND, FromDIP(10)); SetSizerAndFit(w_sizer); fit_to_content(); // initial size only; the dialog is resizable From 6985075c5b5024ce795f4e28f01c61306d3776e4 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 18:17:28 +0800 Subject: [PATCH 046/162] Change the PUB badge to OrcaSlicer's color --- resources/web/homepage/css/home.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index 395dcc9356..ff04d3ba3d 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -596,7 +596,7 @@ body font-size: 10px; font-weight: 600; color: #FFFFFF; - background-color: #00AE42; + background-color: #009688; border-radius: 2px; white-space: nowrap; } From d00af63a6153bce963f01b791a593986f6f3047f Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 1 Sep 2026 18:18:33 +0800 Subject: [PATCH 047/162] Removes identity matching for when slots need to grow without writing type key --- src/libslic3r/PresetBundle.cpp | 99 +++++++++------------------------- 1 file changed, 24 insertions(+), 75 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 688d2b90b0..76211314b0 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5666,81 +5666,10 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, const size_t new_slot_idx = this->filament_presets.size(); std::string initial_preset; if (published_slots.count(static_cast(new_slot_idx)) != 0) { - // Prefer the best distinct candidate for the slot's published material - // (exact id, then vendor+type, then type only), searching compatible - // presets first and falling back to incompatible ones only when no - // compatible candidate exists... - for (const PublishedMaterialEntry& entry : published_config->material_keys) { - // Scored for every entry with an identity (name / ids / family), - // not only when a Type requirement was checked; candidate_score's - // family tiers fall back to the entry's own filament_type. - if (entry.slot != static_cast(new_slot_idx)) - continue; - const std::string resolved_name = resolved_name_for(entry.slot); - int best_score = -1; - auto scan = [&](bool compatible_only) -> std::pair { - int best_score = -1; - std::string best_name; - for (size_t i = first_candidate; i < this->filaments.size(); ++i) { - const Preset& candidate = this->filaments.preset(i); - if (compatible_only && !candidate.is_compatible) - continue; - const int score = candidate_score(candidate, entry, resolved_name); - if (score > best_score) { - // Exact identity tiers (name / setting_id) win even when the - // preset is hidden or already referenced by another slot; the - // alias re-pointing pass below still de-aliases afterwards. - if (score < 3 && (!candidate.is_visible || used_preset_names.count(candidate.name) != 0)) - continue; - best_score = score; - best_name = candidate.name; - } - } - return {best_score, best_name}; - }; - const auto [compat_score, compat_name] = scan(true); - const auto [any_score, any_name] = scan(false); - if (compat_score >= 0) { - best_score = compat_score; - initial_preset = compat_name; - } else if (any_score >= 0) { - best_score = any_score; - initial_preset = any_name; - } - if (best_score >= 0) - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF grew slot " << new_slot_idx << " with " - << initial_preset << " (score " << best_score << ", preset_name \"" - << entry.preset_name << "\", type \"" << entry.publish_type_value << "\")"; - if (best_score >= 0 && best_score < 2 && (!entry.filament_id.empty() || !entry.filament_vendor.empty())) - published_config->material_replacements.emplace_back("slot " + std::to_string(new_slot_idx) + ": " + - initial_preset + " (substitute)"); - break; - } - // ...otherwise any visible preset not already used by another slot, - // preferring the published material's own family when it is known. - if (initial_preset.empty()) { - std::string slot_family; - for (const PublishedMaterialEntry& entry : published_config->material_keys) - if (entry.slot == static_cast(new_slot_idx)) { - slot_family = !entry.publish_type_value.empty() ? entry.publish_type_value : - normalize_filament_type(entry.filament_type); - break; - } - for (size_t i = first_candidate; i < this->filaments.size(); ++i) { - const Preset& candidate = this->filaments.preset(i); - if (!candidate.is_visible || used_preset_names.count(candidate.name) != 0) - continue; - if (!slot_family.empty()) { - const ConfigOptionStrings* types = candidate.config.opt("filament_type"); - const std::string cand_type = (types != nullptr && !types->values.empty()) ? types->get_at(0) : - std::string(); - if (normalize_filament_type(cand_type) != slot_family) - continue; - } - initial_preset = candidate.name; - break; - } - } + // Grow the slot the way the sidebar "add filament" does: seed it with + // the receiver's last preset. + if (!this->filament_presets.empty()) + initial_preset = this->filament_presets.back(); } if (initial_preset.empty()) // Unpublished filler slot, or every visible preset is already used: @@ -5764,6 +5693,26 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, for (size_t slot = 1; slot < this->filament_presets.size(); ++slot) { if (published_slots.count(static_cast(slot)) == 0 || !referenced_elsewhere(this->filament_presets[slot], slot)) continue; + // A slot whose published entry writes nothing into a shared preset in place + // keeps its own preset: de-aliasing would needlessly swap the material. Only + // keys routed to the slot's preset can leak across an aliased slot (colour is + // slot-scoped via project_config; a type requirement is handled by the + // type-gate below; full detaches separately). Mixed-definition keys go to the + // per-slot project arrays, never the preset. + bool writes_preset_keys = false; + for (const PublishedMaterialEntry& entry : published_config->material_keys) { + if (entry.slot != static_cast(slot)) + continue; + for (const std::string& key : entry.keys) + if (mixed_definitions.count(publish_base_key(key)) == 0) { + writes_preset_keys = true; + break; + } + if (writes_preset_keys) + break; + } + if (!writes_preset_keys) + continue; // Prefer the best distinct candidate for the slot's published material // (exact id, then vendor+type, then type only), compatible presets first... std::string replacement; From f85902b0cea6f741b31dd1c488ce1a894eb11ec8 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 2 Sep 2026 10:45:47 +0800 Subject: [PATCH 048/162] Preserving state of publish dialog --- src/slic3r/GUI/MainFrame.cpp | 8 ++- src/slic3r/GUI/Plater.cpp | 38 ++++++++++ src/slic3r/GUI/Plater.hpp | 4 ++ src/slic3r/GUI/PublishSettingsDialog.cpp | 91 +++++++++++++++++++++++- src/slic3r/GUI/PublishSettingsDialog.hpp | 15 +++- 5 files changed, 153 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 7d73d884b0..87e1271678 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1744,9 +1744,15 @@ void MainFrame::publish_project() { if (m_plater == nullptr) return; - PublishSettingsDialog dlg(this); + // Seed the dialog from the session selection (a remembered state or a freshly loaded + // published 3MF); a null pointer means "fresh", keeping the dirty defaults. + std::vector pending_keys; + std::vector pending_material; + const bool has_prior = m_plater->get_pending_published(pending_keys, pending_material); + PublishSettingsDialog dlg(this, has_prior ? &pending_keys : nullptr, has_prior ? &pending_material : nullptr); if (dlg.ShowModal() != wxID_OK) return; + m_plater->set_pending_published(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); m_plater->export_published_3mf(dlg.GetPublishedKeys(), dlg.GetPublishedMaterialKeys()); } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7a3789bc96..b5233b123b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6750,6 +6750,12 @@ struct Plater::priv SendToPrinterDialog* m_send_to_sdcard_dlg = nullptr; PublishDialog* m_publish_dlg = nullptr; + // Session-level stash of the last published selection. Written on publish and on + // loading a published 3MF; read when the Publish dialog is opened. + bool m_has_pending_published{false}; + std::vector m_pending_published_keys; + std::vector m_pending_material_keys; + // Data Slic3r::DynamicPrintConfig* config; // FIXME: leak? Slic3r::Print fff_print; @@ -9087,6 +9093,15 @@ std::vector Plater::priv::load_files(const std::vector& input_ NotificationManager::NotificationLevel::WarningNotificationLevel); } + // Remember the imported published selection so the Publish dialog is + // pre-seeded with the file's settings. Stored after the load so any + // per-slot relocations are already reflected in material_keys. + if (published_config.published) { + this->m_has_pending_published = true; + this->m_pending_published_keys = published_config.published_keys; + this->m_pending_material_keys = published_config.material_keys; + } + ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); if (bed_type_opt != nullptr) { BedType bed_type = (BedType) bed_type_opt->getInt(); @@ -10290,6 +10305,11 @@ void Plater::priv::reset(bool apply_presets_change) clear_warnings(); + // A new project must not inherit the previous project's published selection (Feature A/B). + m_has_pending_published = false; + m_pending_published_keys.clear(); + m_pending_material_keys.clear(); + set_project_filename(""); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: empty"; @@ -18411,6 +18431,24 @@ int Plater::export_published_3mf(const std::vector& published_keys, return wxID_YES; } +bool Plater::get_pending_published(std::vector& out_keys, + std::vector& out_material) const +{ + if (!p->m_has_pending_published) + return false; + out_keys = p->m_pending_published_keys; + out_material = p->m_pending_material_keys; + return true; +} + +void Plater::set_pending_published(const std::vector& published_keys, + const std::vector& material_keys) +{ + p->m_has_pending_published = true; + p->m_pending_published_keys = published_keys; + p->m_pending_material_keys = material_keys; +} + Preset* get_printer_preset(const MachineObject* obj) { if (!obj) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 2f83da1cb9..26cd06978b 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -520,6 +520,10 @@ public: // Export a "published" 3MF embedding the author-selected settings in the file metadata; a // pure export that leaves the in-memory project untouched. int export_published_3mf(const std::vector& published_keys, const std::vector& material_keys); + // Session-level stash of the last published selection, seeded into the Publish dialog on + // open and written on publish or on loading a published 3MF + bool get_pending_published(std::vector& out_keys, std::vector& out_material) const; + void set_pending_published(const std::vector& published_keys, const std::vector& material_keys); static TriangleMesh combine_mesh_fff(const ModelObject& mo, int instance_id, std::function notify_func = {}); void export_stl(bool extended = false, bool selection_only = false, bool multi_stls = false, FileType file_type = FT_STL); //BBS: remove amf diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 0e8c47b799..d4d9b5d5d2 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -434,7 +434,8 @@ PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_ return spec; } -PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) +PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, const std::vector* published_keys, + const std::vector* material_keys) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, _L("Publish 3MF..."), @@ -522,6 +523,11 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent) build_option_model(); + // Seed from a remembered session selection or a freshly loaded published 3MF (authoritative). + if (published_keys != nullptr || material_keys != nullptr) + apply_selection(published_keys != nullptr ? *published_keys : std::vector(), + material_keys != nullptr ? *material_keys : std::vector()); + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { @@ -1691,6 +1697,89 @@ void PublishSettingsDialog::show_menu(wxMouseEvent& evt) PopupMenu(&m, local_pos); } +void PublishSettingsDialog::apply_selection(const std::vector& published_keys, + const std::vector& material_keys) +{ + // The supplied selection is authoritative: clear the dirty-default pre-check first so a + // dirty key the user deselected stays off, then re-select exactly what the selection names. + for (Row& row : m_rows) + if (row.check != nullptr) + row.check->SetValue(false); + for (Category& cat : m_categories) { + if (cat.section != Section::Material) + continue; + if (cat.enable_check != nullptr) + cat.enable_check->SetValue(false); + if (cat.full_check != nullptr) + cat.full_check->SetValue(false); + } + + // Print / printer rows: match by exact row key (the full "#N" opt_id where present). + for (const std::string& key : published_keys) + for (Row& row : m_rows) + if ((row.section == Section::Print || row.section == Section::Printer) && row.check != nullptr && row.key == key) { + row.check->SetValue(true); + break; + } + + // Per-slot material selections, applied positionally by slot. + for (const Slic3r::PublishedMaterialEntry& entry : material_keys) { + if (entry.slot < 0) + continue; + bool entry_mixed = false; + for (const std::string& k : entry.keys) + if (publish_mixed_keys().count(publish_base_key(k)) != 0) { + entry_mixed = true; + break; + } + size_t cat_idx = size_t(-1); + for (size_t c = 0; c < m_categories.size(); ++c) { + const Category& cat = m_categories[c]; + if (cat.section != Section::Material || cat.is_mixed != entry_mixed || cat.filament_slot != size_t(entry.slot)) + continue; + cat_idx = c; + break; + } + if (cat_idx == size_t(-1)) + continue; // slot not present in the receiver (out of range / skipped) + Category& cat = m_categories[cat_idx]; + if (cat.enable_check != nullptr) { + cat.enable_check->SetValue(true); + on_enable_toggle(cat_idx); + } + if (entry.full && cat.full_check != nullptr) { + cat.full_check->SetValue(true); + on_full_toggle(cat_idx); + } else { + // Setting rows are keyed by the base key. + for (const std::string& key : entry.keys) { + const std::string base = publish_base_key(key); + for (const size_t r : cat.rows) { + Row& row = m_rows[r]; + if (row.kind == RowKind::Setting && row.key == base) { + row.check->SetValue(true); + break; + } + } + } + if (entry.publish_type && !entry.publish_type_value.empty()) + for (const size_t r : cat.rows) + if (m_rows[r].kind == RowKind::Type && m_rows[r].check != nullptr) { + m_rows[r].check->SetValue(true); + break; + } + if (entry.publish_color && !entry.color.empty()) + for (const size_t r : cat.rows) + if (m_rows[r].kind == RowKind::Color && m_rows[r].check != nullptr) { + m_rows[r].check->SetValue(true); + break; + } + } + } + + apply_visibility(); +} + std::vector PublishSettingsDialog::GetPublishedKeys() const { std::vector out; diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index f2dcf70bba..8d9342fadb 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -46,7 +46,14 @@ struct MixedDependencyIssue class PublishSettingsDialog : public DPIDialog { public: - PublishSettingsDialog(wxWindow* parent = nullptr); + // Optional published selection (Feature A/B): when the caller supplies one (either a + // remembered session selection or the payload of a freshly loaded published 3MF) the dialog + // is seeded from it, overriding the dirty-default pre-check. A non-null pointer to an empty + // selection means "publish nothing" (an intentional empty state); a null pointer means "no + // remembered selection" (keep the dirty defaults). + PublishSettingsDialog(wxWindow* parent = nullptr, + const std::vector* published_keys = nullptr, + const std::vector* material_keys = nullptr); ~PublishSettingsDialog(); // The selected print/printer setting keys (in display order); printer keys carry a '#N' @@ -179,6 +186,12 @@ private: }; void build_option_model(); + // Seed the dialog from a published selection (print/printer keys + per-slot material keys): + // the supplied selection is authoritative - it is applied after the dirty pre-check and + // overrides it, so deselected dirty keys stay off. Rows/slots not present in the selection + // are left unselected. Unknown or out-of-range entries are skipped gracefully. + void apply_selection(const std::vector& published_keys, + const std::vector& material_keys); // Frozen snapshot of a mixed slot's definition for the page visualization, resolved from // the full config once at dialog-build time. Gradient slots pre-sample exactly what the // slicer will print: the custom curve wins over the gradient_range endpoints over the From 4654d24f6f1191b30f7a3fd472b763e30994039b Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 2 Sep 2026 12:38:27 +0800 Subject: [PATCH 049/162] Add a OrcaSlicer badge in the thumbnail preview for published 3MF projects. Add a visual indicator in the publish dialog to show that something in the section is toggled --- resources/web/homepage/css/home.css | 16 +++++++++- resources/web/homepage/js/home.js | 3 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 39 ++++++++++++++++++++++++ src/slic3r/GUI/PublishSettingsDialog.hpp | 5 +++ src/slic3r/GUI/Widgets/Button.cpp | 35 +++++++++++++++++++++ src/slic3r/GUI/Widgets/Button.hpp | 7 +++++ src/slic3r/GUI/Widgets/TabCtrl.cpp | 8 +++++ src/slic3r/GUI/Widgets/TabCtrl.hpp | 3 ++ 8 files changed, 114 insertions(+), 2 deletions(-) diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index ff04d3ba3d..f4ef1d5420 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -552,7 +552,8 @@ body background-color: #E4E4E4; border-radius: 8px; width: 184px; - height: 184px; + height: 184px; + position: relative; } .FileItem img @@ -564,6 +565,19 @@ body object-fit: cover; } +.FileImg .FileLogoBadge +{ + position: absolute; + top: 8px; + left: 8px; + width: 26px; + height: 26px; + padding: 2px; + box-sizing: border-box; + background-color: rgba(255,255,255,0.85); + border-radius: 50%; +} + .FileName { white-space: nowrap; diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index 3cb5ff4fb3..20eb96474b 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -226,10 +226,11 @@ function ShowRecentFileList( pList ) //let sShortName=sPath.substring(index+1,sPath.length); let sBadge=sPublished? 'PUB':''; + let sLogoBadge=sPublished? '':''; let TmpHtml='
'+ ''+ - '
No Image
'+ + '
No Image'+sLogoBadge+'
'+ '
'+sBadge+'
'+sName+'
'+ '
'+sTime+'
'+ '
'; diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index d4d9b5d5d2..340ca8d02e 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -881,6 +881,7 @@ void PublishSettingsDialog::build_option_model() m_outer_tabs->SelectItem(0); show_outer_page(0); } + refresh_tab_indicators(); } size_t PublishSettingsDialog::section_group_for(Section kind) @@ -1127,6 +1128,7 @@ void PublishSettingsDialog::add_row_ui(const std::string& key, Row& current = m_rows[row_index]; current.check = new wxCheckBox(category.scroll, wxID_ANY, label); current.check->SetFont(Label::Body_13); + current.check->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { refresh_tab_indicators(); }); auto* row_sizer = new wxBoxSizer(wxHORIZONTAL); row_sizer->Add(current.check, 0, wxALIGN_CENTER_VERTICAL); // The value is read-only text (incl. the Type row: the published type is the slot's @@ -1161,6 +1163,7 @@ void PublishSettingsDialog::on_full_toggle(size_t category_index) const bool full = cat.full_check->GetValue(); for (size_t r : cat.rows) m_rows[r].check->Enable(!full); + refresh_tab_indicators(); } void PublishSettingsDialog::on_enable_toggle(size_t category_index) @@ -1195,6 +1198,7 @@ void PublishSettingsDialog::on_enable_toggle(size_t category_index) apply_visibility(); if (cat.page != nullptr) cat.page->GetSizer()->Layout(); + refresh_tab_indicators(); } void PublishSettingsDialog::add_mixed_visual(size_t category_index, const MixedVisualSpec& spec) @@ -1606,6 +1610,7 @@ void PublishSettingsDialog::select_all(bool value) if (m_categories[c].section == Section::Material) on_enable_toggle(c); apply_visibility(); + refresh_tab_indicators(); } bool PublishSettingsDialog::row_is_visible(const Row& row) const @@ -1637,6 +1642,7 @@ void PublishSettingsDialog::select_visible(bool value) m_filter_ctrl->ChangeValue(""); apply_filter(""); // resync visibility and the All/None bar } + refresh_tab_indicators(); } void PublishSettingsDialog::show_menu(wxMouseEvent& evt) @@ -1778,6 +1784,7 @@ void PublishSettingsDialog::apply_selection(const std::vector& publ } apply_visibility(); + refresh_tab_indicators(); } std::vector PublishSettingsDialog::GetPublishedKeys() const @@ -1932,6 +1939,38 @@ std::vector PublishSettingsDialog::GetPublishedM return out; } +bool PublishSettingsDialog::category_has_selection(const Category& cat) const +{ + // A material slot publishes (or not) as a whole, gated by "Enable". + if (cat.section == Section::Material) + return cat.enable_check != nullptr && cat.enable_check->GetValue(); + // Print/Printer categories have no gate: any checked row counts. + for (const size_t r : cat.rows) + if (m_rows[r].check->GetValue()) + return true; + return false; +} + +void PublishSettingsDialog::refresh_tab_indicators() +{ + for (size_t s = 0; s < m_sections.size(); ++s) { + SectionGroup& section = m_sections[s]; + bool any = false; + for (size_t i = 0; i < section.categories.size(); ++i) { + const bool on = category_has_selection(m_categories[section.categories[i]]); + section.tabs->SetItemIndicator(static_cast(i), on); + any = any || on; + } + if (section.mixed_tabs != nullptr) + for (size_t i = 0; i < section.mixed_categories.size(); ++i) { + const bool on = category_has_selection(m_categories[section.mixed_categories[i]]); + section.mixed_tabs->SetItemIndicator(static_cast(i), on); + any = any || on; + } + m_outer_tabs->SetItemIndicator(static_cast(s), any); + } +} + std::vector PublishSettingsDialog::full_keys_for_slot() const { // The canonical filament preset keys minus the structural keys the published overlay must diff --git a/src/slic3r/GUI/PublishSettingsDialog.hpp b/src/slic3r/GUI/PublishSettingsDialog.hpp index 8d9342fadb..f41b3e73a3 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.hpp +++ b/src/slic3r/GUI/PublishSettingsDialog.hpp @@ -213,6 +213,11 @@ private: // "Enable" toggled on a material slot: reveals/hides everything below the header and, for a // mixed slot, auto-selects its component filaments' "Enable" + "Full Publish" toggles. void on_enable_toggle(size_t category_index); + // Whether a category currently publishes something, driving its tab's indicator dot. + // Print/Printer: any row checked. Material: the slot's "Enable" is on. + bool category_has_selection(const Category& cat) const; + // Recompute the indicator dot on every outer/inner tab from the current selection state. + void refresh_tab_indicators(); // Unmet dependencies of enabled mixed-filament slots, one record per (mix, component) pair: // "Enable" not checked on the component, or enabled with neither "Full Publish" nor the // "Type" requirement row checked. Colour is deliberately ignored (the receiver renders the diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 5a5bd89403..22b1c34cab 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -162,6 +162,15 @@ void Button::SetCenter(bool isCenter) { this->isCenter = isCenter; } +void Button::SetIndicator(bool on) +{ + if (m_show_indicator == on) + return; + m_show_indicator = on; + messureSize(); + Refresh(); +} + void Button::SetVertical(bool vertical) { this->vertical = vertical; @@ -324,6 +333,13 @@ void Button::render(wxDC& dc) szContent.x -= d; } } + if (m_show_indicator) { + const int dot = FromDIP(6); + if (vertical) + szContent.y += dot + FromDIP(6); + else + szContent.x += dot + FromDIP(6); + } // move to center wxRect rcContent = { {0, 0}, size }; if (isCenter) { @@ -364,6 +380,17 @@ void Button::render(wxDC& dc) #endif dc.DrawText(text, pt); } + if (m_show_indicator) { + const int dot = FromDIP(6); // diameter + wxPoint dot_pt; + dot_pt.x = pt.x + (text.IsEmpty() ? 0 : textSize.x) + FromDIP(6) + dot / 2; + // Centre on the content vertically; a bitmap-only (empty-label) tab has no text row. + dot_pt.y = text.IsEmpty() ? rcContent.y + rcContent.height / 2 : pt.y + textSize.y / 2; + const wxColour c = StateColor::darkModeColorFor(m_indicator_color); + dc.SetBrush(wxBrush(c)); + dc.SetPen(wxPen(c)); + dc.DrawCircle(dot_pt, dot / 2); + } } void Button::messureSize() @@ -388,6 +415,14 @@ void Button::messureSize() if (szIcon.y > szContent.y) szContent.y = szIcon.y; } } + if (m_show_indicator) { + // Indicator dot sits to the right of the label: its diameter plus the gap from the text. + const int dot = FromDIP(6); + if (vertical) + szContent.y += dot + FromDIP(6); + else + szContent.x += dot + FromDIP(6); + } wxSize size = szContent + paddingSize * 2; if (minSize.GetHeight() > 0) size.SetHeight(minSize.GetHeight()); diff --git a/src/slic3r/GUI/Widgets/Button.hpp b/src/slic3r/GUI/Widgets/Button.hpp index 19dcd24938..758a9a4009 100644 --- a/src/slic3r/GUI/Widgets/Button.hpp +++ b/src/slic3r/GUI/Widgets/Button.hpp @@ -4,6 +4,7 @@ #include "../wxExtensions.hpp" #include "StaticBox.hpp" #include +#include class ButtonProps { @@ -44,6 +45,8 @@ class Button : public StaticBox bool canFocus = true; bool isCenter = true; bool vertical = false; + bool m_show_indicator = false; + wxColour m_indicator_color = wxColour("#009688"); static const int buttonWidth = 200; static const int buttonHeight = 50; @@ -75,6 +78,10 @@ public: void SetSelected(bool selected = true) { m_selected = selected; } + // Show a small coloured dot to the right of the label (used by TabCtrl tabs to flag that + // the tab's category has a selected/toggled setting). + void SetIndicator(bool on); + // Only meant to be used by inspector, not public API ButtonStyle GetStyle() const { return m_style; } ButtonType GetType() const { return m_type; } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 4090bf9c1b..34de109b8f 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -171,6 +171,14 @@ void TabCtrl::SetItemBitmap(unsigned int item, const wxBitmap& bitmap) relayout(); } +void TabCtrl::SetItemIndicator(unsigned int item, bool on) +{ + if (item >= btns.size()) + return; + btns[item]->SetIndicator(on); + relayout(); +} + bool TabCtrl::GetItemBold(unsigned int item) const { if (item >= btns.size()) diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 0d3606aca7..493c4edee5 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -46,6 +46,9 @@ public: void SetItemText(unsigned int item, wxString const& value); void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); + // Show/hide the small "has selection" dot next to a tab's text. + void SetItemIndicator(unsigned int item, bool on); + bool GetItemBold(unsigned int item) const; void SetItemBold(unsigned int item, bool bold); From f1719b558064c571485a7c544cef4f3be8141d08 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 2 Sep 2026 14:29:15 +0800 Subject: [PATCH 050/162] Fixes mixed filament growth bug. Fixes unit test --- src/libslic3r/PresetBundle.cpp | 25 ++ tests/libslic3r/test_3mf.cpp | 141 +++++++---- .../libslic3r/test_preset_bundle_loading.cpp | 232 +++++++++++++++--- 3 files changed, 329 insertions(+), 69 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 76211314b0..f1535fca90 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5595,6 +5595,12 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, for (const PublishedMaterialEntry& entry : published_config->material_keys) if (entry.slot >= 0) published_slots.insert(entry.slot); + // Grown slots the receiver creates that carry no published content of their own + // (e.g. an unpublished mixed slot left as a gap by a published mix's authored + // position) at or beyond the receiver's physical capacity. They must not become + // physical filaments (that would overflow the nozzle count): finalized as empty + // mixed placeholders below, like the surplus-material placeholders. + std::set virtual_gap_slots; // Exact-name resolution of each published slot's preset through the collection's // own name machinery: find_preset2 follows renamed_from (vendor profile renames) // and canonical bundle names, and auto-matches removed vendor-generic profiles @@ -5665,6 +5671,10 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, while (this->filament_presets.size() < target_slots) { const size_t new_slot_idx = this->filament_presets.size(); std::string initial_preset; + if (new_slot_idx >= physical_capacity && published_slots.count(static_cast(new_slot_idx)) == 0) + // An unpublished grown slot past the printer's physical capacity cannot + // host a real filament: finalize it as a virtual placeholder below. + virtual_gap_slots.insert(static_cast(new_slot_idx)); if (published_slots.count(static_cast(new_slot_idx)) != 0) { // Grow the slot the way the sidebar "add filament" does: seed it with // the receiver's last preset. @@ -5927,6 +5937,10 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, for (size_t i = 0; i < this->filament_presets.size(); ++i) if (this->is_mixed_filament(i)) mixed_final_slots.insert(int(i)); + // Unpublished gap slots past the capacity are virtual too: count them in the + // final layout so a published mix whose components collide with one is caught. + for (int gap_slot : virtual_gap_slots) + mixed_final_slots.insert(gap_slot); const size_t mixed_final_slot_count = this->filament_presets.size(); // Finalize a slot as an empty mixed-filament placeholder: mark it virtual with // an intentionally empty definition, and add it to the final-layout set so a @@ -6320,6 +6334,17 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, apply_slot_keys(write_config, preset_keys, entry.slot, material_label); } } + // Unpublished gap slots past the printer's physical capacity: the receiver grew + // them only to reach a published definition, so they must not become physical + // filaments (that would overflow the nozzle count). Finalize each as an empty + // mixed placeholder, exactly like the surplus-material placeholders above. + for (int gap_slot : virtual_gap_slots) + if (!this->is_mixed_filament(size_t(gap_slot))) { + finalize_mixed_placeholder(size_t(gap_slot)); + published_config->material_replacements.emplace_back( + "slot " + std::to_string(gap_slot) + + ": unassigned mixed filament (printer supports only " + std::to_string(physical_capacity) + " filaments)"); + } } } diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index f595926699..d30b40004d 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -866,10 +866,12 @@ SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer ta } } -// A "full publish" entry carries the whole slot's key list: its vector options keep only the -// author's slot value, the other slots are masked to their defaults so a slot-1 full publish -// does not leak slot 0's data into the file. -SCENARIO("Full-publish entries filter the whole slot and mask the other slots", "[3mf]") { +// An entry masks the non-published slots to their defaults so publishing slot 1 never leaks slot +// 0's value into the file. Both a full entry (the whole-slot key list) and a partial entry (a +// per-slot key) go through the same masking path in filter_published_config (keys and full_keys +// are filtered identically), so the two forms are exercised together. +SCENARIO("Published entries mask the other slots to their defaults", "[3mf]") { + const bool full = GENERATE(true, false); GIVEN("a full print configuration with two filament slots") { DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); full_cfg.opt("filament_diameter")->values = { 1.75, 1.75 }; @@ -878,45 +880,18 @@ SCENARIO("Full-publish entries filter the whole slot and mask the other slots", // mask can restore it on the non-published slot. full_cfg.opt("filament_flow_ratio", true)->values = { 1.02, 0.98 }; - PublishedMaterialEntry full_entry; - full_entry.slot = 1; - full_entry.full = true; - full_entry.full_keys = { "filament_flow_ratio" }; - - WHEN("filtering with a full entry for slot 1") { - DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { full_entry }); - - THEN("the full key list is present with the author's slot value") { - REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); - REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); + WHEN("filtering with a published entry for slot 1") { + PublishedMaterialEntry entry; + entry.slot = 1; + if (full) { + entry.full = true; + entry.full_keys = { "filament_flow_ratio" }; + } else { + entry.keys = { "filament_flow_ratio" }; } - THEN("the non-published slot is masked to its default") { - REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[0], Catch::Matchers::WithinAbs(1.0, 1e-6)); - } - THEN("the identity keys stay present") { - REQUIRE(filtered_cfg.option("filament_colour") != nullptr); - } - } - } -} + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { entry }); -// A partial-publish entry (per-slot keys) is masked to the author's slot exactly like a full -// entry, so publishing one slot's retraction does not ship the other slots' values in the file. -SCENARIO("Partial-publish entries mask the other slots like full entries", "[3mf]") { - GIVEN("a full print configuration with two filament slots") { - DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); - full_cfg.opt("filament_diameter")->values = { 1.75, 1.75 }; - full_cfg.opt("filament_colour")->values = { "#111111", "#222222" }; - full_cfg.opt("filament_flow_ratio", true)->values = { 1.02, 0.98 }; - - PublishedMaterialEntry partial_entry; - partial_entry.slot = 1; - partial_entry.keys = { "filament_flow_ratio" }; - - WHEN("filtering with a partial entry for slot 1") { - DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, {}, { partial_entry }); - - THEN("the partial key is present with the author's slot value") { + THEN("the selected key is present with the author's slot value") { REQUIRE(filtered_cfg.option("filament_flow_ratio") != nullptr); REQUIRE_THAT(filtered_cfg.opt("filament_flow_ratio")->values[1], Catch::Matchers::WithinAbs(0.98, 1e-6)); } @@ -1075,3 +1050,87 @@ SCENARIO("Published mixed-filament keys are masked to the author's slot", "[3mf] } } +// The published flag is gated on the exact string "1": any other serialized value means "not +// published", so a receiver never treats a file as published on a loose truthiness check. +TEST_CASE("is_published_3mf_flag accepts only the literal \"1\"", "[3mf]") { + CHECK(is_published_3mf_flag("1")); + CHECK_FALSE(is_published_3mf_flag("0")); + CHECK_FALSE(is_published_3mf_flag("false")); + CHECK_FALSE(is_published_3mf_flag("true")); + CHECK_FALSE(is_published_3mf_flag("")); + CHECK_FALSE(is_published_3mf_flag("YES")); +} + +// bbs_3mf_is_published is the lightweight metadata probe used to decide whether a file was +// produced by the publish feature (GUI "recently published" tracking). It must return true only +// for a file whose metadata carries the flag set to "1", and false for legacy files and for a +// file whose flag is present but not "1" (which loads as a normal, non-published 3MF). +SCENARIO("bbs_3mf_is_published detects only genuinely published 3MFs", "[3mf]") { + auto store_model = [](const std::string &path, const std::string &flag_value, const std::string &keys_value) { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + model.model_info = std::make_shared(); + // An empty flag_value means "don't write the flag at all" (a legacy file). + if (!flag_value.empty()) + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = flag_value; + model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] = keys_value; + ScopedTemporaryDir backup_dir("orca_is_pub"); + model.set_backup_path(backup_dir.string()); + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = path.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence; + REQUIRE(store_bbs_3mf(store_params)); + }; + + GIVEN("a minimal published 3MF whose flag is \"1\"") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "1", R"(["layer_height"])"); + WHEN("probed by bbs_3mf_is_published") { + THEN("it is recognized as published") { + CHECK(bbs_3mf_is_published(temp.string())); + } + } + } + GIVEN("a legacy 3MF without any published flag") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "", R"(["layer_height"])"); + WHEN("probed by bbs_3mf_is_published") { + THEN("it is not recognized as published") { + CHECK_FALSE(bbs_3mf_is_published(temp.string())); + } + } + } + GIVEN("a 3MF carrying the flag set to \"0\"") { + ScopedTemporaryFile temp(".3mf"); + store_model(temp.string(), "0", R"(["layer_height"])"); + WHEN("probed and loaded") { + THEN("it is not recognized as published") { + CHECK_FALSE(bbs_3mf_is_published(temp.string())); + } + THEN("it loads as a normal, non-published 3MF") { + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector project_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + REQUIRE(load_bbs_3mf(temp.string().c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &project_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig)); + REQUIRE(dst_model.model_info != nullptr); + // The key is present but not "1", so nothing treats the file as published; the + // stored keys still round-trip verbatim. + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "0"); + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_KEYS_TAG] == R"(["layer_height"])"); + release_PlateData_list(dst_plates); + } + } + } +} + diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 17e33f3320..d2d0560be2 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1212,13 +1212,14 @@ TEST_CASE("Published 3MF imports a full material under the author's stripped nam REQUIRE(bundle.filament_presets.size() == 2); CHECK(bundle.filament_presets[0] == "My PETG"); - // The grown slot lands on a freshly created copy carrying the author's slot-1 value; - // the library preset that seeded it stays untouched. + // The grown slot seeds the receiver's last preset ("My PETG"), then the full material + // detaches onto a copy carrying the author's slot-1 value; "Generic PLA @System" is + // left untouched. CHECK(bundle.filament_presets[1] == "Generic PLA"); check_double_vector(bundle.filaments.find_preset("Generic PLA", false, true)->config.opt("filament_retraction_length")->values, { 0.8 }); check_double_vector(bundle.filaments.find_preset("Generic PLA @System", false, true)->config.opt("filament_retraction_length")->values, { 0.5 }); REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 1: Generic PLA @System -> Generic PLA"); + CHECK(pub.material_replacements[0] == "slot 1: My PETG -> Generic PLA"); CHECK(pub.skipped_keys.empty()); } } @@ -1922,7 +1923,7 @@ TEST_CASE("Published 3MF grows the receiver's slots only as far as the published // A published slot is seeded from an unused library preset and the values are written onto it // in place, so the receiver's own material (slot 0) is never overwritten. -TEST_CASE("Published 3MF seeds published slots from unused presets and mutates them in place", "[Preset][Bundle][Published]") +TEST_CASE("Published 3MF grows published slots to the receiver's last preset and recolors it in place", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -1937,8 +1938,9 @@ TEST_CASE("Published 3MF seeds published slots from unused presets and mutates t }; // Receiver with its own material plus one more library preset; author publishes only slot 4 - // (Red). The grown slot is seeded from the unused library preset, so the published red - // recolors that preset in place and never the receiver's own material. + // (Red). Growth always repeats the receiver's last filament ("Add one filament"), so the + // grown slot references the shared "My PLA" preset and the published red recolors it in + // place; the unused "Other PLA" preset is left untouched. PresetBundle bundle; Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); mine.config.opt_string("filament_type", 0u) = "PLA"; @@ -1960,14 +1962,14 @@ TEST_CASE("Published 3MF seeds published slots from unused presets and mutates t bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 4); - // Unpublished filler slots repeat the receiver's last preset ("Add one filament"). + // Every grown slot (published or filler) repeats the receiver's last preset. CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "My PLA"); - // The published slot was seeded from the unused library preset; the published colour was - // written onto it in place, never onto the receiver's own material. - CHECK(bundle.filament_presets[3] == "Other PLA"); - CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#123456" }); - CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + // The published red recolors the shared "My PLA" preset in place; the unused "Other PLA" + // preset is left untouched. + CHECK(bundle.filament_presets[3] == "My PLA"); + CHECK(bundle.filaments.find_preset("My PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#ABCDEF" }); + CHECK(bundle.filaments.find_preset("Other PLA", false, true)->config.opt("filament_colour")->values == std::vector{ "#654321" }); // The project-level colours are sized and seeded for every grown slot. CHECK(bundle.project_config.opt("filament_colour")->values.size() == 4); CHECK(bundle.project_config.opt("filament_colour")->values[1] == "#123456"); @@ -1977,10 +1979,11 @@ TEST_CASE("Published 3MF seeds published slots from unused presets and mutates t CHECK(bundle.project_config.opt("filament_map")->values.size() == 4); } -// Without a checked Type row, a grown published slot is still seeded from the published -// material's identity - an exact filament_id outranks any arbitrary unused preset, and an -// entry carrying only a family constrains the pick to that family. -TEST_CASE("Published 3MF seeds a grown slot by published identity or family without a type requirement", "[Preset][Bundle][Published]") +// Growth always repeats the receiver's last preset; a published slot only lands on its +// material identity when the aliased grown slot is re-pointed (de-alias fires on a preset +// key). Lock the identity priority there: an exact filament_id outranks an arbitrary unused +// preset, and an entry carrying only a family constrains the pick to that family. +TEST_CASE("Published 3MF re-points an aliased grown slot by published identity or family without a type requirement", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -1998,6 +2001,7 @@ TEST_CASE("Published 3MF seeds a grown slot by published identity or family with entry.slot = 2; entry.filament_type = "PLA"; entry.filament_vendor = "Generic"; + entry.keys = { "filament_retraction_length" }; // An unused preset sorting before everything else: an unconstrained pick would take it. PresetBundle bundle; Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); @@ -2022,8 +2026,9 @@ TEST_CASE("Published 3MF seeds a grown slot by published identity or family with REQUIRE(bundle.filament_presets.size() == 3); CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "Zzz PLA"); - // An exact identity match is not a substitute, so nothing is reported. - CHECK(pub.material_replacements.empty()); + // The exact-id preset outranks the type-only "Aaa PLA"; the re-point is reported. + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Zzz PLA"); } SECTION("a family-only entry picks an unused preset of that family") { @@ -2039,7 +2044,11 @@ TEST_CASE("Published 3MF seeds a grown slot by published identity or family with bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 3); + // The family pick lands on the only PETG preset (the PLA presets and the receiver's own + // material lose), and the re-point is reported. CHECK(bundle.filament_presets[2] == "Bbb PETG"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Bbb PETG"); } } @@ -3797,6 +3806,103 @@ TEST_CASE("Published 3MF finalizes a mixed filament rejected over a placeholder })); } +// The receiver must not overflow its physical capacity when it grows slots to reach a published +// mixed definition: an unpublished mixed slot that lands as a gap past the nozzle count becomes +// an empty mixed placeholder, not a physical filament. An author with six physical slots (0-5) +// and two tail mixes (slots 6 and 7) publishes only 0-5 and 7; the receiver has four nozzles. +// Slots 4 and 5 become surplus placeholders, slot 7 keeps its authored mix position, and the +// unpublished gap slot 6 is finalized as a virtual placeholder - never a fifth physical slot. +TEST_CASE("Published 3MF turns an unpublished gap slot past the printer's capacity into an empty mixed placeholder", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets.assign(4, "My PLA"); + bundle.set_num_filaments(4, "#123456"); + auto &printer_config = bundle.printers.get_edited_preset().config; + printer_config.opt("single_extruder_multi_material", true)->value = false; + printer_config.opt("nozzle_diameter", true)->values.assign(4, 0.4); + + // 8 authored slots: 0-5 physical, 6 unpublished mixed, 7 published mixed. The payload masks + // the unpublished slot's mixed flag (filter_published_config), so slot 6 reads as physical. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = std::vector(8, 1.75); + config.opt("filament_self_index")->values = { 1, 2, 3, 4, 5, 6, 7, 8 }; + config.opt("filament_extruder_variant")->values = std::vector(8, "Direct Drive Standard"); + config.opt("filament_colour")->values = { "#FF0000", "#00FF00", "#0000FF", "#FFFF00", + "#FF00FF", "#00FFFF", "#800080", "#804000" }; + config.opt("filament_type")->values.assign(8, "PLA"); + config.opt("filament_vendor")->values.assign(8, "Generic"); + config.opt("filament_is_mixed")->values = { 0, 0, 0, 0, 0, 0, 0, 1 }; + config.opt("filament_mixed_components")->values = { "", "", "", "", "", "", "", "1,2" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "", "", "", "", "", "0.5,0.5" }; + config.opt("filament_mixed_gradient")->values = std::vector(8, 0); + config.opt("filament_mixed_gradient_range")->values.assign(8, ""); + config.opt("filament_mixed_gradient_curve")->values.assign(8, ""); + config.opt("filament_mixed_gradient_per_part")->values = std::vector(8, 0); + + auto make_full_entry = [](int slot) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.full = true; + entry.full_keys = { "filament_retraction_length" }; + return entry; + }; + auto make_mix_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.publish_color = true; + entry.color = color; + entry.keys = { "filament_is_mixed", "filament_mixed_components", + "filament_mixed_sublayer_ratios", "filament_mixed_gradient", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_full_entry(0), make_full_entry(1), make_full_entry(2), make_full_entry(3), + make_full_entry(4), make_full_entry(5), make_mix_entry(7, "#804000") }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 8); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 8); + // Slots 0-3 stay physical; 4 and 5 are surplus placeholders; 6 is the unpublished gap; 7 is + // the published mix. All four tail slots are virtual. + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + CHECK(is_mixed[5]); + CHECK(is_mixed[6]); + CHECK(is_mixed[7]); + // Surplus physical slots (4,5) and the unpublished gap (6) carry no definition; the + // published mix on slot 7 keeps its own. + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 8); + CHECK(components[4].empty()); + CHECK(components[5].empty()); + CHECK(components[6].empty()); + CHECK(components[7] == "1,2"); + // Exactly four physical slots remain (never a fifth past the nozzle count). + size_t physical_count = 0; + for (bool mixed : is_mixed) + if (!mixed) + ++physical_count; + CHECK(physical_count == 4); + // The unpublished gap's conversion is surfaced through the post-import notice. + bool gap_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 6: unassigned mixed filament") != std::string::npos) + gap_reported = true; + CHECK(gap_reported); + CHECK(pub.skipped_keys.empty()); +} + // The relocation shifts cells inside the file's per-slot mixed arrays; a payload too short to // actually carry the definition degrades to empty cells, which the definition validation then // reports - an empty mix must not ship as a virtual slot. @@ -3859,10 +3965,12 @@ TEST_CASE("Published 3MF reports a relocated mixed filament whose payload cells bundle.project_config.opt("filament_colour")->values.begin())); } -// A grown slot's material is chosen by identity tiers: exact preset name, then the bare -// name/alias form, then exact setting_id, then exact filament_id, then vendor+type, then type -// only. Each section pits two adjacent tiers against each other. -TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Preset][Bundle][Published]") +// A grown published slot always repeats the receiver's last preset; it can only move to the +// published material's identity when a replacement is warranted (an aliased slot that would +// otherwise leak keys, or a type mismatch). The tier priority candidate_score uses is locked +// here: exact preset name > bare name > exact setting_id > exact filament_id > vendor+type, +// with the lower tiers reported as a substitute. +TEST_CASE("Published 3MF re-points an aliased grown slot's material by identity tiers", "[Preset][Bundle][Published]") { auto make_file_config = [] { DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); @@ -3894,6 +4002,7 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr bundle.filament_presets = { "My PLA" }; entry.preset_name = "Authored PLA @Vendor"; + entry.keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; pub.material_keys = { entry }; @@ -3903,8 +4012,11 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr REQUIRE(bundle.filament_presets.size() == 3); CHECK(bundle.filament_presets[1] == "My PLA"); + // The aliased grown slot is re-pointed at the exact-name preset; the bare-name and the + // receiver's own preset lose. CHECK(bundle.filament_presets[2] == "Authored PLA @Vendor"); - CHECK(pub.material_replacements.empty()); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Authored PLA @Vendor"); } SECTION("a bare name outranks an exact setting_id") @@ -3921,6 +4033,7 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name entry.setting_id = "SID123"; + entry.keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; pub.material_keys = { entry }; @@ -3931,6 +4044,8 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr REQUIRE(bundle.filament_presets.size() == 3); CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "Authored PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Authored PLA"); } SECTION("an exact setting_id outranks an exact filament_id") @@ -3949,6 +4064,7 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr entry.preset_name = "Authored PLA @Vendor"; // no library preset carries this name entry.setting_id = "SID123"; entry.filament_id = "GFA00"; + entry.keys = { "filament_retraction_length" }; PublishedConfig pub; pub.published = true; pub.material_keys = { entry }; @@ -3959,22 +4075,26 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr REQUIRE(bundle.filament_presets.size() == 3); CHECK(bundle.filament_presets[1] == "My PLA"); CHECK(bundle.filament_presets[2] == "Bbb PLA"); + REQUIRE(pub.material_replacements.size() == 1); + CHECK(pub.material_replacements[0] == "slot 2: My PLA -> Bbb PLA"); } SECTION("a vendor+type match is reported as a substitute") { PresetBundle bundle; - Preset &mine = add_inmemory_preset(bundle.filaments, "My PLA"); - mine.config.opt_string("filament_type", 0u) = "PLA"; + Preset &mine = add_inmemory_preset(bundle.filaments, "My PETG"); + mine.config.opt_string("filament_type", 0u) = "PETG"; Preset &exact_vendor = add_inmemory_preset(bundle.filaments, "Aaa PLA"); exact_vendor.config.opt_string("filament_type", 0u) = "PLA"; exact_vendor.config.opt_string("filament_vendor", 0u) = "Generic"; Preset &other_vendor = add_inmemory_preset(bundle.filaments, "Zzz PLA"); other_vendor.config.opt_string("filament_type", 0u) = "PLA"; other_vendor.config.opt_string("filament_vendor", 0u) = "Other"; - bundle.filament_presets = { "My PLA" }; + bundle.filament_presets = { "My PETG" }; entry.filament_vendor = "Generic"; // no name or id identity: the family tiers decide + entry.publish_type = true; + entry.publish_type_value = "PLA"; // the grown slot seeds "My PETG" -> the gate reads a mismatch PublishedConfig pub; pub.published = true; pub.material_keys = { entry }; @@ -3983,12 +4103,12 @@ TEST_CASE("Published 3MF scores a grown slot's material by identity tiers", "[Pr bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); REQUIRE(bundle.filament_presets.size() == 3); - CHECK(bundle.filament_presets[1] == "My PLA"); + CHECK(bundle.filament_presets[1] == "My PETG"); // The same-vendor PLA outranks the type-only candidate... CHECK(bundle.filament_presets[2] == "Aaa PLA"); // ...and since it is not an exact material match, the load says so. REQUIRE(pub.material_replacements.size() == 1); - CHECK(pub.material_replacements[0] == "slot 2: Aaa PLA (substitute)"); + CHECK(pub.material_replacements[0] == "slot 2: My PETG -> Aaa PLA (substitute)"); } } @@ -4203,3 +4323,59 @@ TEST_CASE("Published 3MF applies duplicate entries for one slot last-wins", "[Pr CHECK(pub.skipped_keys.empty()); CHECK(pub.material_replacements.empty()); } + +// normalize_filament_type maps "PLA High Speed" onto the canonical family "PLA" (a space- +// separated modifier is dropped) but leaves dash-separated composite types like "PA-CF" intact, +// and passes through unknown types and the empty string unchanged. +TEST_CASE("normalize_filament_type strips a space modifier but keeps dash types", "[Preset][Bundle][Published]") +{ + CHECK(normalize_filament_type("PLA High Speed") == "PLA"); + CHECK(normalize_filament_type("PA-CF") == "PA-CF"); + CHECK(normalize_filament_type("PETG-CF") == "PETG-CF"); + CHECK(normalize_filament_type("PLA") == "PLA"); + CHECK(normalize_filament_type("ABC") == "ABC"); + CHECK(normalize_filament_type("") == ""); +} + +// collect_dirty_settings_keys feeds the Publish dialog's pre-check: it must be the set union of +// the dirty options across the edited print, printer and filament presets. +TEST_CASE("collect_dirty_settings_keys unions the dirty settings from all three presets", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + // The edited preset is initialised as a copy of the selected (default) preset, so a single + // edit makes exactly that option dirty. deep_diff reports scalar keys by name but per-element + // vector keys as "key#", so a vector edit surfaces as "key#0". + bundle.prints.get_edited_preset().config.opt_float("layer_height") = 0.28; + bundle.filaments.get_edited_preset().config.opt("filament_type", true)->values = { "ABS" }; + bundle.printers.get_edited_preset().config.opt("nozzle_diameter", true)->values = { 0.6 }; + + const std::vector dirty = collect_dirty_settings_keys(bundle); + for (const char *key : { "layer_height", "filament_type#0", "nozzle_diameter#0" }) + CHECK(contains_key(dirty, key)); +} + +// The publish denylist and the mixed-key list are single sources of truth for the import path: +// lock their members so a silent edit to either cannot drift away from the contract the import +// and export masks rely on. +TEST_CASE("Published 3MF denylist and mixed-key sets match the import/export contract", "[Preset][Bundle][Published]") +{ + const std::set& structural = publish_structural_keys(); + // Structural / inheritance keys must never be applied onto a receiver's presets. + for (const char *key : { "printer_settings_id", "filament_settings_id", "print_settings_id", + "compatible_printers", "compatible_prints", "compatible_printers_condition", + "compatible_prints_condition", "default_filament_profile", "default_print_profile", + "inherits", "extruder_count", "printer_model", "filament_ids" }) + CHECK(structural.count(key) == 1); + // ...but a per-slot publishable material key is not structural. + CHECK(structural.count("filament_retraction_length") == 0); + CHECK(structural.count("filament_colour") == 0); + + const std::set& mixed = publish_mixed_keys(); + CHECK(mixed == std::set{ + "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }); + // Mixed keys are project-level arrays, not material-preset keys, so none is structural. + for (const std::string &key : mixed) + CHECK(structural.count(key) == 0); +} From e17f932aff0362199385af9dd1d78ccc77016629 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 2 Sep 2026 17:22:06 +0800 Subject: [PATCH 051/162] Update Publish Guide Links --- src/slic3r/GUI/PublishSettingsDialog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 340ca8d02e..ed0b00aa29 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -434,7 +434,8 @@ PublishSettingsDialog::MixedVisualSpec PublishSettingsDialog::make_mixed_visual_ return spec; } -PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, const std::vector* published_keys, +PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, + const std::vector* published_keys, const std::vector* material_keys) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, @@ -554,10 +555,9 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, const std::vector return link; }; wxBoxSizer* links_sizer = new wxBoxSizer(wxVERTICAL); - links_sizer->Add(make_link(_L("Publish 3MF Wiki Guide"), "https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html"), 0, - wxALIGN_LEFT); - links_sizer->Add(make_link(_L("Publish 3MF YouTube Video (Placeholder)"), "https://www.youtube.com"), 0, wxTOP | wxALIGN_LEFT, - FromDIP(4)); + links_sizer->Add(make_link(_L("Publish 3MF Wiki"), "https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html"), 0, wxALIGN_LEFT); + links_sizer->Add(make_link(_L("Publish 3MF Video Guide"), "https://www.youtube.com/@OfficialOrcaSlicer/videos"), 0, + wxTOP | wxALIGN_LEFT, FromDIP(4)); wxBoxSizer* footer = new wxBoxSizer(wxHORIZONTAL); footer->Add(links_sizer, 0, wxALIGN_CENTER_VERTICAL); From 85f14673f09939827c210b63629bc5027d2a070a Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Wed, 2 Sep 2026 18:09:23 +0800 Subject: [PATCH 052/162] Only show the currently in used filaments for publishing --- src/slic3r/GUI/PublishSettingsDialog.cpp | 119 ++++++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index ed0b00aa29..16b0b6201c 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -17,6 +17,7 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/PublishSettings.hpp" #include "libslic3r/FilamentMixer.hpp" +#include "libslic3r/Model.hpp" #include #include @@ -307,6 +308,114 @@ wxBitmap mixed_filament_tab_bitmap(const DynamicPrintConfig& full, size_t slot, return composite; } +// The filament slots (0-based) the current project actually uses, across every plate: base and +// MMU-painted volume extruders, per-object layer-range and support/wall/infill filament +// overrides, and custom-gcode tool changes. Used mixed slots are preserved as themselves (so an +// in-use mix is publishable) while their physical components are added too - a mix always ships +// with the materials of its components even if a component is not referenced directly anywhere. +std::set project_used_filament_slots(const PresetBundle& bundle, const DynamicPrintConfig& full, const Model& model) +{ + std::set used; // 0-based used slots, mixed slots not yet expanded + if (model.objects.empty()) + return used; + + auto add_1based = [&used](int id) { + if (id > 0) + used.insert(size_t(id - 1)); + }; + + const DynamicPrintConfig& print_cfg = bundle.prints.get_edited_preset().config; + const int glb_support_intf = print_cfg.opt_int("support_interface_filament"); + const int glb_support = print_cfg.opt_int("support_filament"); + const int glb_outer_wall = print_cfg.opt_int("outer_wall_filament_id"); + const int glb_inner_wall = print_cfg.opt_int("inner_wall_filament_id"); + const int glb_sparse_infill = print_cfg.opt_int("sparse_infill_filament_id"); + const int glb_internal_solid = print_cfg.opt_int("internal_solid_filament_id"); + const int glb_top_surface = print_cfg.opt_int("top_surface_filament_id"); + const int glb_bottom_surface = print_cfg.opt_int("bottom_surface_filament_id"); + const bool glb_support_on = print_cfg.opt_bool("enable_support") || print_cfg.opt_int("raft_layers") > 0; + + for (ModelObject* mo : model.objects) { + for (ModelVolume* mv : mo->volumes) + for (int e : mv->get_extruders()) + add_1based(e); + + for (const auto& range_entry : mo->layer_config_ranges) + if (const ConfigOption* ext_opt = range_entry.second.option("extruder")) + add_1based(ext_opt->getInt()); + + bool obj_support = glb_support_on; + if (const ConfigOption* s_opt = mo->config.option("enable_support"); s_opt != nullptr) + obj_support = s_opt->getBool(); + else if (const ConfigOption* r_opt = mo->config.option("raft_layers"); r_opt != nullptr) + obj_support = r_opt->getInt() > 0; + + if (obj_support) { + if (const ConfigOption* opt = mo->config.option("support_interface_filament"); opt != nullptr && opt->getInt() != 0) + add_1based(opt->getInt()); + else + add_1based(glb_support_intf); + + if (const ConfigOption* opt = mo->config.option("support_filament"); opt != nullptr && opt->getInt() != 0) + add_1based(opt->getInt()); + else + add_1based(glb_support); + } + + auto obj_id = [&mo](const char* key) { + const ConfigOption* opt = mo->config.option(key); + return (opt != nullptr) ? opt->getInt() : 0; + }; + + int obj_outer_wall = obj_id("outer_wall_filament_id"); + if (obj_outer_wall == 0) + obj_outer_wall = obj_id("inner_wall_filament_id"); + add_1based(obj_outer_wall != 0 ? obj_outer_wall : glb_outer_wall); + + int obj_inner_wall = obj_id("inner_wall_filament_id"); + if (obj_inner_wall == 0) + obj_inner_wall = obj_id("outer_wall_filament_id"); + add_1based(obj_inner_wall != 0 ? obj_inner_wall : glb_inner_wall); + + const int obj_sparse = obj_id("sparse_infill_filament_id"); + add_1based(obj_sparse != 0 ? obj_sparse : glb_sparse_infill); + + const int obj_internal_solid = obj_id("internal_solid_filament_id"); + add_1based(obj_internal_solid != 0 ? obj_internal_solid : glb_internal_solid); + + int obj_top = obj_id("top_surface_filament_id"); + if (obj_top == 0) + obj_top = obj_internal_solid; + add_1based(obj_top != 0 ? obj_top : glb_top_surface); + + int obj_bottom = obj_id("bottom_surface_filament_id"); + if (obj_bottom == 0) + obj_bottom = obj_internal_solid; + add_1based(obj_bottom != 0 ? obj_bottom : glb_bottom_surface); + } + + for (const auto& plate_entry : model.plates_custom_gcodes) + for (const CustomGCode::Item& item : plate_entry.second.gcodes) + if (item.type == CustomGCode::Type::ToolChange) + add_1based(item.extruder); + + // Expand used mixed slots to their physical components and keep each mixed slot itself so the + // dialog shows the mix. A component both used directly and pulled in via a mix is deduped. + const auto* is_mixed_opt = full.opt("filament_is_mixed"); + const auto* comp_opt = full.opt("filament_mixed_components"); + if (is_mixed_opt != nullptr && comp_opt != nullptr && has_any_mixed_filament(is_mixed_opt->values)) { + const std::vector raw(used.begin(), used.end()); + const std::vector expanded = expand_mixed_filaments(raw, is_mixed_opt->values, comp_opt->values); + std::set result(expanded.begin(), expanded.end()); + for (unsigned int s : raw) + if (s < is_mixed_opt->values.size() && is_mixed_opt->values[s]) + result.insert(s); + return result; + } + + return used; +} + } // namespace // Warning shown on OK when an enabled mixed-filament slot relies on a filament that would ship @@ -732,9 +841,15 @@ void PublishSettingsDialog::build_option_model() // settings; their "Enable" toggle always embeds the mix definition (components, // ratios, gradient). Detect them via the project-level flag. const ConfigOptionBools* is_mixed_opt = full.opt("filament_is_mixed"); - // One section per filament slot (a 4-slot printer shows 4 pages), each - // disambiguated by its colour chip and slot identity while showing the bare name. + // Only the slots the project actually uses: base/MMU-painted volume extruders, + // support/wall/infill overrides and custom-gcode tool changes, plus the physical + // components of any in-use mixed slot. Unused slots get no section at all (and are + // therefore never published). One section per used slot, disambiguated by its + // colour chip and slot identity while showing the bare name. + const std::set used_slots = project_used_filament_slots(*bundle, full, wxGetApp().plater()->model()); for (size_t slot = 0; slot < bundle->filament_presets.size(); ++slot) { + if (used_slots.find(slot) == used_slots.end()) + continue; const bool is_mixed = is_mixed_opt != nullptr && slot < is_mixed_opt->size() && is_mixed_opt->values[slot]; const PublishMaterialIdentity identity = material_identity(slot, full); // A mixed slot's title is its component composition (e.g. "1 (60%) + 2 From 8c7160079e73626061eaa6f157c84e9c501461cd Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Thu, 3 Sep 2026 13:17:13 +0800 Subject: [PATCH 053/162] Revert clang-format changes then reapplied chagnes for Plater/PresetBundle. Fixed extruder masking incorrectness. Fix warning notifications stacking --- src/libslic3r/Format/bbs_3mf.cpp | 12 +- src/libslic3r/Preset.cpp | 2 + src/libslic3r/PresetBundle.cpp | 3706 ++++---- src/libslic3r/PublishSettings.cpp | 44 +- src/slic3r/GUI/NotificationManager.cpp | 36 +- src/slic3r/GUI/NotificationManager.hpp | 5 +- src/slic3r/GUI/Plater.cpp | 10596 ++++++++++++----------- tests/libslic3r/test_3mf.cpp | 93 + 8 files changed, 7286 insertions(+), 7208 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 3a3ee20e6f..4b9c666ce0 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -6997,8 +6997,16 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // receivers onto a geometry-only fallback whose baked-in popup misreports the // file ("old OrcaSlicer version" / "BambuStudio"), while tag-less files classify // as From_Other and import the geometry silently. - if (!m_minimal_published) + if (m_minimal_published) { + // metadata_item_map is seeded from the input file's metadata_items above, so a + // project opened from a regular Orca/BBS 3MF still carries the Application / + // OrcaSlicer tags it came with. Erase them: skipping the overwrite is not enough, + // and an empty value would still emit a "present-looking" tag to old receivers. + metadata_item_map.erase(BBL_APPLICATION_TAG); + metadata_item_map.erase(ORCASLICER_TAG); + } else { metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); + } } metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); @@ -7025,7 +7033,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) << xml_escape(item.second) << "\n"; if (item.first == BBL_APPLICATION_TAG) { // The OrcaSlicer tag is only written for files that carry the Application - // tag, which a minimal published 3MF omits (see the map assignment above): + // tag, which a minimal published 3MF erases (see the map assignment above): // the branch below is unreachable in minimal mode. stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" << xml_escape(SoftFever_VERSION) << "\n"; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 6646d98e71..460276c420 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -3096,6 +3096,8 @@ std::string PresetCollection::add_detached_preset(const std::string &name_base, // effects or project-embedded path. lock(); const auto it = this->find_preset_internal(final_name); + if (m_presets.begin() + m_idx_selected >= it) + ++m_idx_selected; Preset &preset = *m_presets.insert(it, stored); preset.name = final_name; preset.vendor = nullptr; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 3e88d67ea6..e4bafd0071 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -43,7 +43,7 @@ // Store the print/filament/printer presets into a "presets" subdirectory of the Slic3rPE config dir. // This breaks compatibility with the upstream Slic3r if the --datadir is used to switch between the two versions. -// #define SLIC3R_PROFILE_USE_PRESETS_SUBDIR +//#define SLIC3R_PROFILE_USE_PRESETS_SUBDIR namespace Slic3r { @@ -51,29 +51,45 @@ namespace Slic3r { // below is the reduced subset that crosses over in "published" 3MF mode; keep both in sync. // s_project_options_published additionally carries wipe_tower_rotation_angle, which normal // loads do not import (it is not listed here): published-only plate geometry. -static std::vector s_project_options{"flush_volumes_vector", "flush_volumes_matrix", - // BBS - "filament_colour", "filament_colour_type", "filament_multi_colour", "wipe_tower_x", - "wipe_tower_y", "curr_bed_type", "flush_multiplier", - // Fast-purge mode: project-level purge control, inert at Default. - "flush_multiplier_fast", "prime_volume_mode", "nozzle_volume_type", "filament_map_mode", - "filament_map", - // Per-filament nozzle-volume choice; project-level like filament_map so the per-filament - // slot resolution survives preset switches. - "filament_volume_map", - // Per-filament physical-nozzle choice the grouping engine writes back; project-level so a - // saved project round-trips the assignment alongside filament_map/filament_volume_map. - "filament_nozzle_map", - // Filament Track Switch device state: whether the switch is installed and ready, and - // whether dynamic per-nozzle filament mapping is active. Persisted with the project and - // restored from a saved 3mf; reset to false on load and set true only by live device sync. - "has_filament_switcher", "enable_filament_dynamic_map", - // Mixed-color filament slots. Project-level parallel arrays indexed like filament_colour: - // which slots are virtual mixes, their component filaments, blend ratios and the optional - // Z-gradient description. Kept with the project so a saved 3mf round-trips the mix setup. - "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", - "filament_mixed_gradient", "filament_mixed_gradient_range", - "filament_mixed_gradient_curve", "filament_mixed_gradient_per_part"}; +static std::vector s_project_options { + "flush_volumes_vector", + "flush_volumes_matrix", + // BBS + "filament_colour", + "filament_colour_type", + "filament_multi_colour", + "wipe_tower_x", + "wipe_tower_y", + "curr_bed_type", + "flush_multiplier", + // Fast-purge mode: project-level purge control, inert at Default. + "flush_multiplier_fast", + "prime_volume_mode", + "nozzle_volume_type", + "filament_map_mode", + "filament_map", + // Per-filament nozzle-volume choice; project-level like filament_map so the per-filament + // slot resolution survives preset switches. + "filament_volume_map", + // Per-filament physical-nozzle choice the grouping engine writes back; project-level so a + // saved project round-trips the assignment alongside filament_map/filament_volume_map. + "filament_nozzle_map", + // Filament Track Switch device state: whether the switch is installed and ready, and + // whether dynamic per-nozzle filament mapping is active. Persisted with the project and + // restored from a saved 3mf; reset to false on load and set true only by live device sync. + "has_filament_switcher", + "enable_filament_dynamic_map", + // Mixed-color filament slots. Project-level parallel arrays indexed like filament_colour: + // which slots are virtual mixes, their component filaments, blend ratios and the optional + // Z-gradient description. Kept with the project so a saved 3mf round-trips the mix setup. + "filament_is_mixed", + "filament_mixed_components", + "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", + "filament_mixed_gradient_range", + "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" +}; // Project options applied when loading a "published" 3MF project: s_project_options minus the // filament/purge keys, plus wipe_tower_rotation_angle (plate geometry that only published @@ -90,24 +106,25 @@ static std::vector s_project_options{"flush_volumes_vector", "flush // assertions in tests/libslic3r/test_preset_bundle_loading.cpp guard both directions. static std::vector s_project_options_published{"wipe_tower_x", "wipe_tower_y", "wipe_tower_rotation_angle"}; -// 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 = "Generic PLA @System"; -const char* PresetBundle::ORCA_FILAMENT_LIBRARY = "OrcaFilamentLibrary"; -const char* PresetBundle::ORCA_DEFAULT_FILAMENT_PLACEHOLDER = "Default Filament"; +//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 = "Generic PLA @System"; +const char *PresetBundle::ORCA_FILAMENT_LIBRARY = "OrcaFilamentLibrary"; +const char *PresetBundle::ORCA_DEFAULT_FILAMENT_PLACEHOLDER = "Default Filament"; -DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset, - Preset& in_print_preset, - const DynamicPrintConfig& project_config, - std::vector& in_filament_presets, - bool apply_extruder, - std::optional> filament_maps_new, - std::optional> filament_volume_maps_new) +DynamicPrintConfig PresetBundle::construct_full_config( + Preset& in_printer_preset, + Preset& in_print_preset, + const DynamicPrintConfig& project_config, + std::vector& in_filament_presets, + bool apply_extruder, + std::optional> filament_maps_new, + std::optional> filament_volume_maps_new) { - DynamicPrintConfig& printer_config = in_printer_preset.config; - DynamicPrintConfig& print_config = in_print_preset.config; + DynamicPrintConfig &printer_config = in_printer_preset.config; + DynamicPrintConfig &print_config = in_print_preset.config; DynamicPrintConfig out; out.apply(FullPrintConfig::defaults()); @@ -119,7 +136,7 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset size_t num_filaments = in_filament_presets.size(); std::vector filament_maps = out.option("filament_map")->values; - std::vector filament_volume_maps(num_filaments, (int) nvtStandard); + std::vector filament_volume_maps(num_filaments, (int)nvtStandard); ConfigOptionInts* filament_volume_map_opt = out.option("filament_volume_map"); if (filament_maps_new.has_value()) @@ -137,7 +154,7 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset filament_volume_maps.resize(num_filaments, nvtStandard); } - auto* extruder_diameter = dynamic_cast(out.option("nozzle_diameter")); + auto *extruder_diameter = dynamic_cast(out.option("nozzle_diameter")); // Collect the "compatible_printers_condition" and "inherits" values over all presets (print, filaments, printers) into a single vector. std::vector compatible_printers_condition; std::vector compatible_prints_condition; @@ -146,12 +163,11 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset std::vector print_compatible_printers; // BBS: add logic for settings check between different system presets std::vector different_settings; - std::string different_print_settings, different_printer_settings; + std::string different_print_settings, different_printer_settings; compatible_printers_condition.emplace_back(in_print_preset.compatible_printers_condition()); - const ConfigOptionStrings* compatible_printers = print_config.option("compatible_printers", false); - if (compatible_printers) - print_compatible_printers = compatible_printers->values; + const ConfigOptionStrings *compatible_printers = print_config.option("compatible_printers", false); + if (compatible_printers) print_compatible_printers = compatible_printers->values; // BBS: add logic for settings check between different system presets std::string print_inherits = in_print_preset.inherits(); inherits.emplace_back(print_inherits); @@ -161,7 +177,7 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset int extruder_count = 1, extruder_volume_type_count = 1; bool different_extruder = false; if (apply_extruder) { - different_extruder = out.support_different_extruders(extruder_count); + different_extruder = out.support_different_extruders(extruder_count); extruder_volume_type_count = out.get_extruder_nozzle_volume_count(extruder_count, nozzle_volume_types); if ((extruder_count > 1) || different_extruder) { @@ -173,13 +189,10 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset // per variant (e.g. X2D machine_max_speed_e/machine_max_acceleration_e). The slicing // path composes variant_2 first and is unaffected; changing the order here would alter // long-standing composed values, so any fix must re-baseline them. - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - printer_options_with_variant_1, "printer_extruder_id", "printer_extruder_variant"); - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - printer_options_with_variant_2, "printer_extruder_id", "printer_extruder_variant", 2); + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, printer_options_with_variant_1, "printer_extruder_id", "printer_extruder_variant"); + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, printer_options_with_variant_2, "printer_extruder_id", "printer_extruder_variant", 2); // update print config related with variants - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - print_options_with_variant, "print_extruder_id", "print_extruder_variant"); + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, print_options_with_variant, "print_extruder_id", "print_extruder_variant"); } } @@ -187,9 +200,7 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset // BBS: update filament config related with variants DynamicPrintConfig filament_config = in_filament_presets[0].config; if (apply_extruder && ((extruder_count > 1) || different_extruder)) - filament_config.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - filament_options_with_variant, "", "filament_extruder_variant", 1, - filament_maps[0], (NozzleVolumeType) filament_volume_maps[0]); + filament_config.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, filament_options_with_variant, "", "filament_extruder_variant", 1, filament_maps[0], (NozzleVolumeType)filament_volume_maps[0]); out.apply(filament_config); compatible_printers_condition.emplace_back(in_filament_presets[0].compatible_printers_condition()); compatible_prints_condition.emplace_back(in_filament_presets[0].compatible_prints_condition()); @@ -197,13 +208,13 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset inherits.emplace_back(filament_inherits); filament_ids.emplace_back(in_filament_presets[0].filament_id); - std::vector& filament_self_indice = out.option("filament_self_index", true)->values; - int index_size = out.option("filament_extruder_variant")->size(); + std::vector &filament_self_indice = out.option("filament_self_index", true)->values; + int index_size = out.option("filament_extruder_variant")->size(); filament_self_indice.resize(index_size, 1); } else { - std::vector filament_configs; - std::vector filament_presets; - for (const Preset& preset : in_filament_presets) { + std::vector filament_configs; + std::vector filament_presets; + for (const Preset & preset : in_filament_presets) { filament_presets.emplace_back(&preset); filament_configs.emplace_back(&(preset.config)); } @@ -213,45 +224,37 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset for (size_t i = 0; i < num_filaments; ++i) { filament_temp_configs[i] = *(filament_configs[i]); if (apply_extruder && ((extruder_count > 1) || different_extruder)) - filament_temp_configs[i].update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, - nozzle_volume_types, filament_options_with_variant, "", - "filament_extruder_variant", 1, filament_maps[i], - (NozzleVolumeType) filament_volume_maps[i]); + filament_temp_configs[i].update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, filament_options_with_variant, "", "filament_extruder_variant", 1, filament_maps[i], (NozzleVolumeType)filament_volume_maps[i]); } // loop through options and apply them to the resulting config. std::vector filament_variant_count(num_filaments, 1); - for (const t_config_option_key& key : in_filament_presets[0].config.keys()) { - if (key == "compatible_prints" || key == "compatible_printers") - continue; + for (const t_config_option_key &key : in_filament_presets[0].config.keys()) { + if (key == "compatible_prints" || key == "compatible_printers") continue; // Get a destination option. - ConfigOption* opt_dst = out.option(key, false); + ConfigOption *opt_dst = out.option(key, false); if (opt_dst->is_scalar()) { // Get an option, do not create if it does not exist. - const ConfigOption* opt_src = filament_temp_configs.front().option(key); - if (opt_src != nullptr) - opt_dst->set(opt_src); + const ConfigOption *opt_src = filament_temp_configs.front().option(key); + if (opt_src != nullptr) opt_dst->set(opt_src); } else { // BBS - ConfigOptionVectorBase* opt_vec_dst = static_cast(opt_dst); + ConfigOptionVectorBase *opt_vec_dst = static_cast(opt_dst); { if (apply_extruder) { - std::vector filament_opts(num_filaments, nullptr); + std::vector filament_opts(num_filaments, nullptr); // Setting a vector value from all filament_configs. - for (size_t i = 0; i < filament_opts.size(); ++i) - filament_opts[i] = filament_temp_configs[i].option(key); + for (size_t i = 0; i < filament_opts.size(); ++i) filament_opts[i] = filament_temp_configs[i].option(key); opt_vec_dst->set(filament_opts); } else { for (size_t i = 0; i < num_filaments; ++i) { - const ConfigOptionVectorBase* filament_option = static_cast( - filament_temp_configs[i].option(key)); + const ConfigOptionVectorBase *filament_option = static_cast(filament_temp_configs[i].option(key)); if (i == 0) opt_vec_dst->set(filament_option); else opt_vec_dst->append(filament_option); - if (key == "filament_extruder_variant") - filament_variant_count[i] = filament_option->size(); + if (key == "filament_extruder_variant") filament_variant_count[i] = filament_option->size(); } } } @@ -260,14 +263,12 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset if (!apply_extruder) { // append filament_self_index - std::vector& filament_self_indice = out.option("filament_self_index", true)->values; - int index_size = out.option("filament_extruder_variant")->size(); + std::vector &filament_self_indice = out.option("filament_self_index", true)->values; + int index_size = out.option("filament_extruder_variant")->size(); filament_self_indice.resize(index_size, 1); int k = 0; for (size_t i = 0; i < num_filaments; i++) { - for (size_t j = 0; j < filament_variant_count[i]; j++) { - filament_self_indice[k++] = i + 1; - } + for (size_t j = 0; j < filament_variant_count[i]; j++) { filament_self_indice[k++] = i + 1; } } } } @@ -281,10 +282,10 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset // BBS: add logic for settings check between different system presets out.erase("different_settings_to_system"); - static const char* keys[] = {"support_filament", "support_interface_filament"}; + static const char *keys[] = {"support_filament", "support_interface_filament"}; for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); ++i) { std::string key = std::string(keys[i]); - auto* opt = dynamic_cast(out.option(key, false)); + auto *opt = dynamic_cast(out.option(key, false)); assert(opt != nullptr); opt->value = boost::algorithm::clamp(opt->value, 0, int(num_filaments)); } @@ -300,28 +301,27 @@ DynamicPrintConfig PresetBundle::construct_full_config(Preset& in_printer_preset out.option("filament_map", true)->values = filament_maps; out.option("filament_volume_map", true)->values = filament_volume_maps; - auto add_if_some_non_empty = [&out](std::vector&& values, const std::string& key) { + auto add_if_some_non_empty = [&out](std::vector &&values, const std::string &key) { bool nonempty = false; - for (const std::string& v : values) + for (const std::string &v : values) if (!v.empty()) { nonempty = true; break; } - if (nonempty) - out.set_key_value(key, new ConfigOptionStrings(std::move(values))); + if (nonempty) out.set_key_value(key, new ConfigOptionStrings(std::move(values))); }; add_if_some_non_empty(std::move(compatible_printers_condition), "compatible_machine_expression_group"); add_if_some_non_empty(std::move(compatible_prints_condition), "compatible_process_expression_group"); add_if_some_non_empty(std::move(inherits), "inherits_group"); // BBS: add logic for settings check between different system presets - // add_if_some_non_empty(std::move(different_settings), "different_settings_to_system"); + //add_if_some_non_empty(std::move(different_settings), "different_settings_to_system"); add_if_some_non_empty(std::move(print_compatible_printers), "print_compatible_printers"); out.option("printer_technology", true)->value = ptFFF; return out; } -std::string PresetBundle::find_preset_vendor(const std::string& preset_name, Preset::Type type) +std::string PresetBundle::find_preset_vendor(const std::string &preset_name, Preset::Type type) { // Get the resources preset directory (contains all bundled vendor profiles) fs::path system_dir = fs::path(Slic3r::resources_dir()) / PRESET_PROFILES_DIR; @@ -347,9 +347,10 @@ std::string PresetBundle::find_preset_vendor(const std::string& preset_name, Pre // instead of the raw profile JSONs, by its cache alone. for (const std::string& vendor_name : vendor_names_in(system_dir)) { const fs::path vendor_json = system_dir / (vendor_name + ".json"); - if (!fs::exists(vendor_json)) { + if (! fs::exists(vendor_json)) { if (VendorCacheFile::carries_preset((system_dir / (vendor_name + ".opc")).string(), vendor_name, type, preset_name)) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found preset " << preset_name << " in vendor cache " << vendor_name; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found preset " << preset_name + << " in vendor cache " << vendor_name; return vendor_name; } continue; @@ -385,11 +386,13 @@ std::string PresetBundle::find_preset_vendor(const std::string& preset_name, Pre continue; // Found the preset! Get the vendor name and install the entire bundle - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found preset " << p_name << " in vendor bundle " << vendor_name; - + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found preset " << p_name + << " in vendor bundle " << vendor_name; + return vendor_name; } - } catch (const std::exception& e) { + } + catch (const std::exception &e) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to find vendor name for " << preset_name << ": " << e.what(); return ""; } @@ -400,21 +403,11 @@ std::string PresetBundle::find_preset_vendor(const std::string& preset_name, Pre } PresetBundle::PresetBundle() - : prints(Preset::TYPE_PRINT, Preset::print_options(), static_cast(FullPrintConfig::defaults())) - , filaments(Preset::TYPE_FILAMENT, - Preset::filament_options(), - static_cast(FullPrintConfig::defaults()), - ORCA_DEFAULT_FILAMENT_PLACEHOLDER) - , sla_materials(Preset::TYPE_SLA_MATERIAL, - Preset::sla_material_options(), - static_cast(SLAFullPrintConfig::defaults())) - , sla_prints(Preset::TYPE_SLA_PRINT, - Preset::sla_print_options(), - static_cast(SLAFullPrintConfig::defaults())) - , printers(Preset::TYPE_PRINTER, - Preset::printer_options(), - static_cast(FullPrintConfig::defaults()), - "Default Printer") + : prints(Preset::TYPE_PRINT, Preset::print_options(), static_cast(FullPrintConfig::defaults())) + , filaments(Preset::TYPE_FILAMENT, Preset::filament_options(), static_cast(FullPrintConfig::defaults()), ORCA_DEFAULT_FILAMENT_PLACEHOLDER) + , sla_materials(Preset::TYPE_SLA_MATERIAL, Preset::sla_material_options(), static_cast(SLAFullPrintConfig::defaults())) + , sla_prints(Preset::TYPE_SLA_PRINT, Preset::sla_print_options(), static_cast(SLAFullPrintConfig::defaults())) + , printers(Preset::TYPE_PRINTER, Preset::printer_options(), static_cast(FullPrintConfig::defaults()), "Default Printer") , physical_printers(PhysicalPrinter::printer_options()) { // The following keys are handled by the UI, they do not have a counterpart in any StaticPrintConfig derived classes, @@ -436,12 +429,12 @@ PresetBundle::PresetBundle() // Set all the nullable values to nils. { auto& default_config = this->filaments.default_preset().config; - for (const std::string& opt_key : default_config.keys()) { - ConfigOption* opt = default_config.optptr(opt_key, false); + for(const std::string& opt_key : default_config.keys()){ + ConfigOption* opt = default_config.optptr(opt_key, false); bool is_override_key = is_filament_extruder_override_key(opt_key); - if (!is_override_key || !opt->nullable()) + if(!is_override_key || !opt->nullable()) continue; - opt->deserialize("nil", ForwardCompatibilitySubstitutionRule::Disable); + opt->deserialize("nil",ForwardCompatibilitySubstitutionRule::Disable); } } @@ -454,16 +447,15 @@ PresetBundle::PresetBundle() this->sla_prints.default_preset().compatible_printers_condition(); this->sla_prints.default_preset().inherits(); - // this->printers.add_default_preset(Preset::sla_printer_options(), static_cast(SLAFullPrintConfig::defaults()), "- default SLA -"); this->printers.preset(1).printer_technology_ref() = ptSLA; + //this->printers.add_default_preset(Preset::sla_printer_options(), static_cast(SLAFullPrintConfig::defaults()), "- default SLA -"); + //this->printers.preset(1).printer_technology_ref() = ptSLA; for (size_t i = 0; i < 1; ++i) { // The following ugly switch is to avoid printers.preset(0) to return the edited instance, as the 0th default is the current one. - Preset& preset = this->printers.default_preset(i); - for (const char* key : {"printer_settings_id", "printer_model", "printer_variant", "thumbnails"}) - preset.config.optptr(key, true); - // if (i == 0) { - preset.config.optptr("default_print_profile", true); - preset.config.option("default_filament_profile", true); + Preset &preset = this->printers.default_preset(i); + for (const char *key : {"printer_settings_id", "printer_model", "printer_variant", "thumbnails"}) preset.config.optptr(key, true); + //if (i == 0) { + preset.config.optptr("default_print_profile", true); + preset.config.option("default_filament_profile", true); //} else { // preset.config.optptr("default_sla_print_profile", true); // preset.config.optptr("default_sla_material_profile", true); @@ -482,29 +474,32 @@ PresetBundle::PresetBundle() this->project_config.apply_only(FullPrintConfig::defaults(), s_project_options); } -PresetBundle::PresetBundle(const PresetBundle& rhs) { *this = rhs; } - -PresetBundle& PresetBundle::operator=(const PresetBundle& rhs) +PresetBundle::PresetBundle(const PresetBundle &rhs) { - prints = rhs.prints; - sla_prints = rhs.sla_prints; - filaments = rhs.filaments; - sla_materials = rhs.sla_materials; - printers = rhs.printers; - physical_printers = rhs.physical_printers; + *this = rhs; +} - filament_presets = rhs.filament_presets; - project_config = rhs.project_config; - vendors = rhs.vendors; - obsolete_presets = rhs.obsolete_presets; - m_errors = rhs.m_errors; +PresetBundle& PresetBundle::operator=(const PresetBundle &rhs) +{ + prints = rhs.prints; + sla_prints = rhs.sla_prints; + filaments = rhs.filaments; + sla_materials = rhs.sla_materials; + printers = rhs.printers; + physical_printers = rhs.physical_printers; + + filament_presets = rhs.filament_presets; + project_config = rhs.project_config; + vendors = rhs.vendors; + obsolete_presets = rhs.obsolete_presets; + m_errors = rhs.m_errors; // Adjust Preset::vendor pointers to point to the copied vendors map. - prints.update_vendor_ptrs_after_copy(this->vendors); - sla_prints.update_vendor_ptrs_after_copy(this->vendors); - filaments.update_vendor_ptrs_after_copy(this->vendors); + prints .update_vendor_ptrs_after_copy(this->vendors); + sla_prints .update_vendor_ptrs_after_copy(this->vendors); + filaments .update_vendor_ptrs_after_copy(this->vendors); sla_materials.update_vendor_ptrs_after_copy(this->vendors); - printers.update_vendor_ptrs_after_copy(this->vendors); + printers .update_vendor_ptrs_after_copy(this->vendors); return *this; } @@ -513,13 +508,13 @@ void PresetBundle::reset(bool delete_files) { // Clear the existing presets, delete their respective files. this->vendors.clear(); - this->prints.reset(delete_files); - this->sla_prints.reset(delete_files); - this->filaments.reset(delete_files); + this->prints .reset(delete_files); + this->sla_prints .reset(delete_files); + this->filaments .reset(delete_files); this->sla_materials.reset(delete_files); - this->printers.reset(delete_files); + this->printers .reset(delete_files); // BBS: filament_presets is load from project config, not handled here - // this->filament_presets.clear(); + //this->filament_presets.clear(); if (this->filament_presets.empty()) this->filament_presets.emplace_back(this->filaments.get_selected_preset_name()); this->obsolete_presets.prints.clear(); @@ -532,25 +527,26 @@ void PresetBundle::reset(bool delete_files) void PresetBundle::setup_directories() { boost::filesystem::path data_dir = boost::filesystem::path(Slic3r::data_dir()); - // BBS: change directoties by design + //BBS: change directoties by design std::initializer_list paths = { data_dir, data_dir / "ota", - data_dir / PRESET_SYSTEM_DIR, + data_dir / PRESET_SYSTEM_DIR, data_dir / PRESET_USER_DIR, // Store the print/filament/printer presets at the same location as the upstream Slic3r. - // data_dir / PRESET_SYSTEM_DIR / PRESET_PRINT_NAME, - // data_dir / PRESET_SYSTEM_DIR / PRESET_FILAMENT_NAME, - // data_dir / PRESET_SYSTEM_DIR / PRESET_PRINTER_NAME + //data_dir / PRESET_SYSTEM_DIR / PRESET_PRINT_NAME, + //data_dir / PRESET_SYSTEM_DIR / PRESET_FILAMENT_NAME, + //data_dir / PRESET_SYSTEM_DIR / PRESET_PRINTER_NAME }; - for (const boost::filesystem::path& path : paths) { - boost::filesystem::path subdir = path; + for (const boost::filesystem::path &path : paths) { + boost::filesystem::path subdir = path; subdir.make_preferred(); - if (!boost::filesystem::is_directory(subdir) && !boost::filesystem::create_directory(subdir)) { + if (! boost::filesystem::is_directory(subdir) && + ! boost::filesystem::create_directory(subdir)) { if (boost::filesystem::is_directory(subdir)) { - BOOST_LOG_TRIVIAL(warning) << boost::format("creating directory %1% failed, maybe created by other instance, go on!") % - subdir.string(); - } else + BOOST_LOG_TRIVIAL(warning) << boost::format("creating directory %1% failed, maybe created by other instance, go on!")%subdir.string(); + } + else throw Slic3r::RuntimeError(std::string("Unable to create directory ") + subdir.string()); } } @@ -559,7 +555,7 @@ void PresetBundle::setup_directories() // recursively copy all files and dirs in from_dir to to_dir static void copy_dir(const boost::filesystem::path& from_dir, const boost::filesystem::path& to_dir) { - if (!boost::filesystem::is_directory(from_dir)) + if(!boost::filesystem::is_directory(from_dir)) return; // i assume to_dir.parent surely exists if (!boost::filesystem::is_directory(to_dir)) @@ -583,33 +579,33 @@ void PresetBundle::copy_files(const std::string& from) // list of searched paths based on current directory system in setup_directories() // do not copy cache and snapshots boost::filesystem::path from_data_dir = boost::filesystem::path(from); - // BBS: change directoties by design - std::initializer_list from_dirs = - {// from_data_dir / "vendor", - // Store the print/filament/printer presets at the same location as the upstream Slic3r. - from_data_dir / PRESET_PRINT_NAME, from_data_dir / PRESET_FILAMENT_NAME, from_data_dir / PRESET_PRINTER_NAME}; + //BBS: change directoties by design + std::initializer_list from_dirs= { + //from_data_dir / "vendor", + // Store the print/filament/printer presets at the same location as the upstream Slic3r. + from_data_dir / PRESET_PRINT_NAME, + from_data_dir / PRESET_FILAMENT_NAME, + from_data_dir / PRESET_PRINTER_NAME + }; // copy recursively all files - // BBS: change directoties by design + //BBS: change directoties by design for (const boost::filesystem::path& from_dir : from_dirs) { - copy_dir(from_dir, data_dir / "old" / from_dir.filename()); + copy_dir(from_dir, data_dir /"old"/from_dir.filename()); } } -PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig& config, - ForwardCompatibilitySubstitutionRule substitution_rule, - const PresetPreferences& preferred_selection /* = PresetPreferences()*/) +PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig &config, ForwardCompatibilitySubstitutionRule substitution_rule, + const PresetPreferences& preferred_selection/* = PresetPreferences()*/) { // First load the vendor specific system presets. PresetsConfigSubstitutions substitutions; std::string errors_cummulative; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" enter, substitution_rule %1%, preferred printer_model_id %2%") % substitution_rule % - preferred_selection.printer_model_id; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, substitution_rule %1%, preferred printer_model_id %2%")%substitution_rule%preferred_selection.printer_model_id; const auto startup_t0 = std::chrono::steady_clock::now(); - // BBS: change system config to json + //BBS: change system config to json std::tie(substitutions, errors_cummulative) = this->load_system_presets_from_json(substitution_rule); // BBS load preset from user's folder, load system default if @@ -635,26 +631,35 @@ PresetsConfigSubstitutions PresetBundle::load_presets(AppConfig& config, set_calibrate_printer(""); { - const auto total_ms = std::chrono::duration_cast(std::chrono::steady_clock::now() - startup_t0).count(); + const auto total_ms = std::chrono::duration_cast( + std::chrono::steady_clock::now() - startup_t0).count(); BOOST_LOG_TRIVIAL(info) << "PresetBundle: all presets loaded in " << total_ms << " ms"; } - // BBS: add config related logs - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" finished, returned substitutions %1%") % substitutions.size(); + //BBS: add config related logs + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" finished, returned substitutions %1%")%substitutions.size(); return substitutions; } -// BBS: add function to generate differed preset for save -// the pointer should be freed by the caller +//BBS: add function to generate differed preset for save +//the pointer should be freed by the caller Preset* PresetBundle::get_preset_differed_for_save(Preset& preset) { PresetCollection* preset_collection; - switch (preset.type) { - case Preset::TYPE_PRINT: preset_collection = &(this->prints); break; - case Preset::TYPE_PRINTER: preset_collection = &(this->printers); break; - case Preset::TYPE_FILAMENT: preset_collection = &(this->filaments); break; - default: BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly") % preset.type; return nullptr; + switch(preset.type) { + case Preset::TYPE_PRINT: + preset_collection = &(this->prints); + break; + case Preset::TYPE_PRINTER: + preset_collection = &(this->printers); + break; + case Preset::TYPE_FILAMENT: + preset_collection = &(this->filaments); + break; + default: + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly")%preset.type; + return nullptr; } return preset_collection->get_preset_differed_for_save(preset); @@ -664,17 +669,25 @@ int PresetBundle::get_differed_values_to_update(Preset& preset, std::mapprints); break; - case Preset::TYPE_PRINTER: preset_collection = &(this->printers); break; - case Preset::TYPE_FILAMENT: preset_collection = &(this->filaments); break; - default: BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly") % preset.type; return -1; + switch(preset.type) { + case Preset::TYPE_PRINT: + preset_collection = &(this->prints); + break; + case Preset::TYPE_PRINTER: + preset_collection = &(this->printers); + break; + case Preset::TYPE_FILAMENT: + preset_collection = &(this->filaments); + break; + default: + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" invalid type %1%, return directly")%preset.type; + return -1; } return preset_collection->get_differed_values_to_update(preset, key_values); } -// BBS: get vendor's current version +//BBS: get vendor's current version Semver PresetBundle::get_vendor_profile_version(std::string vendor_name) { Semver result_ver; @@ -689,11 +702,12 @@ Semver PresetBundle::get_vendor_profile_version(std::string vendor_name) VendorType PresetBundle::get_current_vendor_type() { - auto t = VendorType::Unknown; - auto config = &printers.get_edited_preset().config; + auto t = VendorType::Unknown; + auto config = &printers.get_edited_preset().config; const auto* printer_model = config->opt("printer_model"); if (printer_model == nullptr) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": printer_model is " << (config->has("printer_model") ? "not a string" : "missing") + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": printer_model is " + << (config->has("printer_model") ? "not a string" : "missing") << ", vendor type is Unknown"; return t; } @@ -709,11 +723,12 @@ VendorType PresetBundle::get_current_vendor_type() if (!vendor_name.empty()) break; } - if (!vendor_name.empty()) { - if (vendor_name.compare("BBL") == 0) + if (!vendor_name.empty()) + { + if(vendor_name.compare("BBL") == 0) t = VendorType::Marlin_BBL; - - if (vendor_name.compare("Qidi") == 0) + + if(vendor_name.compare("Qidi") == 0) t = VendorType::Klipper_Qidi; } return t; @@ -726,8 +741,7 @@ bool PresetBundle::use_bbl_network() return use_bbl_network; } -bool PresetBundle::use_bbl_device_tab() -{ +bool PresetBundle::use_bbl_device_tab() { if (!is_bbl_vendor()) { return false; } @@ -737,7 +751,7 @@ bool PresetBundle::use_bbl_device_tab() } const auto cfg = printers.get_edited_preset().config; - // Use bbl device tab if printhost webui url is not set + // Use bbl device tab if printhost webui url is not set return cfg.opt_string("print_host_webui").empty(); } @@ -764,8 +778,7 @@ bool PresetBundle::backup_user_folder() const } } -std::optional PresetBundle::get_filament_by_filament_id(const std::string& filament_id, - const std::string& printer_name) const +std::optional PresetBundle::get_filament_by_filament_id(const std::string& filament_id, const std::string& printer_name) const { if (filament_id.empty()) return std::nullopt; @@ -775,11 +788,11 @@ std::optional PresetBundle::get_filament_by_filament_id(const for (auto iter = filaments.begin(); iter != filaments.end(); ++iter) { const Preset& filament_preset = *iter; - const auto& config = filament_preset.config; + const auto& config = filament_preset.config; if (filament_preset.filament_id == filament_id) { FilamentBaseInfo info; - info.filament_id = filament_id; - info.is_system = filament_preset.is_system; + info.filament_id = filament_id; + info.is_system = filament_preset.is_system; info.filament_name = filament_preset.alias; if (config.has("filament_is_support")) info.is_support = config.option("filament_is_support")->values[0]; @@ -791,7 +804,7 @@ std::optional PresetBundle::get_filament_by_filament_id(const info.nozzle_temp_range_high = config.option("nozzle_temperature_range_high")->values[0]; if (config.has("nozzle_temperature_range_low")) info.nozzle_temp_range_low = config.option("nozzle_temperature_range_low")->values[0]; - if (config.has("temperature_vitrification")) + if(config.has("temperature_vitrification")) info.temperature_vitrification = config.option("temperature_vitrification")->values[0]; if (!printer_name.empty()) { @@ -800,11 +813,11 @@ std::optional PresetBundle::get_filament_by_filament_id(const if (iter != compatible_printers.end() && config.has("filament_printable")) { info.filament_printable = config.option("filament_printable")->values[0]; if (config.has("filament_extruder_compatibility")) - info.set_filament_extruder_compatibility( - config.option("filament_extruder_compatibility")->values[0]); + info.set_filament_extruder_compatibility(config.option("filament_extruder_compatibility")->values[0]); return info; } - } else { + } + else { return info; } } @@ -812,47 +825,44 @@ std::optional PresetBundle::get_filament_by_filament_id(const return std::nullopt; } -// BBS: load project embedded presets -PresetsConfigSubstitutions PresetBundle::load_project_embedded_presets(std::vector project_presets, - ForwardCompatibilitySubstitutionRule substitution_rule) +//BBS: load project embedded presets +PresetsConfigSubstitutions PresetBundle::load_project_embedded_presets(std::vector project_presets, ForwardCompatibilitySubstitutionRule substitution_rule) { // First load the vendor specific system presets. PresetsConfigSubstitutions substitutions; std::string errors_cummulative; - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(" enter, substitution_rule %1%, preset toltal count %2%") % substitution_rule % - project_presets.size(); + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, substitution_rule %1%, preset toltal count %2%")%substitution_rule% project_presets.size(); try { this->prints.load_project_embedded_presets(project_presets, PRESET_PRINT_NAME, substitutions, substitution_rule); - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { errors_cummulative += err.what(); } try { this->filaments.load_project_embedded_presets(project_presets, PRESET_FILAMENT_NAME, substitutions, substitution_rule); - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { errors_cummulative += err.what(); } try { this->printers.load_project_embedded_presets(project_presets, PRESET_PRINTER_NAME, substitutions, substitution_rule); - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { errors_cummulative += err.what(); } - // this->update_multi_material_filament_presets(); - // this->update_compatible(PresetSelectCompatibleType::Never); - // Rewrite renamed compatible references before the caller (Plater) selects the project presets. + //this->update_multi_material_filament_presets(); + //this->update_compatible(PresetSelectCompatibleType::Never); + // Rewrite renamed compatible references before the caller (Plater) selects the project presets. this->normalize_compatible_presets(); - if (!errors_cummulative.empty()) + if (! errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative); - // this->load_selections(config, ""); + //this->load_selections(config, ""); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, returned substitutions %1%") % substitutions.size(); + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, returned substitutions %1%")%substitutions.size(); return substitutions; } -// BBS: get current project embedded presets +//BBS: get current project embedded presets std::vector PresetBundle::get_current_project_embedded_presets() { std::vector project_presets; @@ -866,38 +876,39 @@ std::vector PresetBundle::get_current_project_embedded_presets() if (!printer_presets.empty()) std::copy(printer_presets.begin(), printer_presets.end(), std::back_inserter(project_presets)); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, returned project_presets count %1%") % project_presets.size(); + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, returned project_presets count %1%")%project_presets.size(); return project_presets; } -// BBS: reset project embedded presets +//BBS: reset project embedded presets void PresetBundle::reset_project_embedded_presets() { std::string prefer_printer; Preset& current_printer = this->printers.get_selected_preset(); - ConfigOption* inherits = current_printer.config.option("inherits"); + ConfigOption* inherits = current_printer.config.option("inherits"); if (inherits) { - prefer_printer = dynamic_cast(inherits)->value; + prefer_printer = dynamic_cast(inherits)->value; } - // first printer, then filament, then print - bool printer_reselect = this->printers.reset_project_embedded_presets(); + //first printer, then filament, then print + bool printer_reselect = this->printers.reset_project_embedded_presets(); bool filament_reselect = this->filaments.reset_project_embedded_presets(); - bool print_reselect = this->prints.reset_project_embedded_presets(); + bool print_reselect = this->prints.reset_project_embedded_presets(); if (printer_reselect) { if (!prefer_printer.empty()) - this->printers.select_preset_by_name(prefer_printer, true); + this->printers.select_preset_by_name(prefer_printer, true); else - this->printers.select_preset(this->printers.first_visible_idx()); + this->printers.select_preset(this->printers.first_visible_idx()); - // this->update_multi_material_filament_presets(); + //this->update_multi_material_filament_presets(); this->update_compatible(PresetSelectCompatibleType::Never); - } else if (filament_reselect || print_reselect) { - // Preset& current_printer = this->printers.get_selected_preset(); + } + else if (filament_reselect || print_reselect) { + //Preset& current_printer = this->printers.get_selected_preset(); /*if (filament_reselect) { - const std::vector &prefered_filament_profiles = - current_printer.config.option("default_filament_profile")->values; const std::string prefered_filament_profile - = prefered_filament_profiles.empty() ? std::string() : prefered_filament_profiles.front(); if (!prefered_filament_profile.empty()) + const std::vector &prefered_filament_profiles = current_printer.config.option("default_filament_profile")->values; + const std::string prefered_filament_profile = prefered_filament_profiles.empty() ? std::string() : prefered_filament_profiles.front(); + if (!prefered_filament_profile.empty()) this->filaments.select_preset_by_name(prefered_filament_profile, true); else this->filaments.select_preset(this->filaments.first_visible_idx()); @@ -908,18 +919,17 @@ void PresetBundle::reset_project_embedded_presets() this->update_compatible(PresetSelectCompatibleType::Never); } - // this->update_multi_material_filament_presets(); + //this->update_multi_material_filament_presets(); - // update filament_presets - for (size_t i = 0; i < filament_presets.size(); ++i) { + //update filament_presets + for (size_t i = 0; i < filament_presets.size(); ++ i) + { Preset* selected_filament = this->filaments.find_preset(filament_presets[i], false); if (!selected_filament) { - // it should be the project embedded presets + //it should be the project embedded presets Preset& current_printer = this->printers.get_selected_preset(); - const std::vector& prefered_filament_profiles = - current_printer.config.option("default_filament_profile")->values; - const std::string prefered_filament_profile = prefered_filament_profiles.empty() ? std::string() : - prefered_filament_profiles.front(); + const std::vector &prefered_filament_profiles = current_printer.config.option("default_filament_profile")->values; + const std::string prefered_filament_profile = prefered_filament_profiles.empty() ? std::string() : prefered_filament_profiles.front(); if (!prefered_filament_profile.empty()) { // Check if preferred filament exists and is visible const Preset* preferred_preset = this->filaments.find_preset(prefered_filament_profile, false); @@ -935,22 +945,26 @@ void PresetBundle::reset_project_embedded_presets() } } -// BBS: get bed texture for printer model +//BBS: get bed texture for printer model std::string PresetBundle::get_texture_for_printer_model(std::string model_name) { std::string texture_name, vendor_name, out; - for (auto vendor_profile : this->vendors) { - for (auto vendor_model : vendor_profile.second.models) { - if (vendor_model.name == model_name || vendor_model.id == model_name) { + for (auto vendor_profile: this->vendors) + { + for (auto vendor_model: vendor_profile.second.models) + { + if (vendor_model.name == model_name || vendor_model.id == model_name) + { texture_name = vendor_model.bed_texture; - vendor_name = vendor_profile.first; + vendor_name = vendor_profile.first; break; } } } - if (!texture_name.empty()) { + if (!texture_name.empty()) + { out = Slic3r::data_dir() + "/vendor/" + vendor_name + "/" + texture_name; if (!boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/" + vendor_name + "/" + texture_name; @@ -959,22 +973,26 @@ std::string PresetBundle::get_texture_for_printer_model(std::string model_name) return out; } -// BBS: get stl model for printer model +//BBS: get stl model for printer model std::string PresetBundle::get_stl_model_for_printer_model(std::string model_name) { std::string stl_name, vendor_name, out; - for (auto vendor_profile : this->vendors) { - for (auto vendor_model : vendor_profile.second.models) { - if (vendor_model.name == model_name) { - stl_name = vendor_model.bed_model; + for (auto vendor_profile: this->vendors) + { + for (auto vendor_model: vendor_profile.second.models) + { + if (vendor_model.name == model_name) + { + stl_name = vendor_model.bed_model; vendor_name = vendor_profile.first; break; } } } - if (!stl_name.empty()) { + if (!stl_name.empty()) + { out = Slic3r::data_dir() + "/vendor/" + vendor_name + "/" + stl_name; if (!boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/" + vendor_name + "/" + stl_name; @@ -987,23 +1005,27 @@ std::string PresetBundle::get_hotend_model_for_printer_model(std::string model_n { std::string hotend_stl, vendor_name, out; - for (auto vendor_profile : this->vendors) { - for (auto vendor_model : vendor_profile.second.models) { - if (vendor_model.name == model_name) { - hotend_stl = vendor_model.hotend_model; + for (auto vendor_profile: this->vendors) + { + for (auto vendor_model: vendor_profile.second.models) + { + if (vendor_model.name == model_name) + { + hotend_stl = vendor_model.hotend_model; vendor_name = vendor_profile.first; break; } } } - if (!hotend_stl.empty()) { + if (!hotend_stl.empty()) + { out = Slic3r::data_dir() + "/vendor/" + vendor_name + "/" + hotend_stl; if (!boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/" + vendor_name + "/" + hotend_stl; } - if (out.empty() || !boost::filesystem::exists(boost::filesystem::path(out))) + if (out.empty() ||!boost::filesystem::exists(boost::filesystem::path(out))) out = Slic3r::resources_dir() + "/profiles/hotend.stl"; return out; @@ -1016,13 +1038,11 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For std::string errors_cummulative; fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); - if (!fs::exists(user_folder)) - fs::create_directory(user_folder); + if (!fs::exists(user_folder)) fs::create_directory(user_folder); std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + user; - fs::path folder(user_folder / user); - if (!fs::exists(folder)) - fs::create_directory(folder); + fs::path folder(user_folder / user); + if (!fs::exists(folder)) fs::create_directory(folder); bundles.WriteLock(); bundles.m_bundles.clear(); @@ -1035,36 +1055,30 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For if (fs::exists(local_dir)) { dir_user_presets_local = local_dir; for (auto& entry : fs::directory_iterator(local_dir)) { - if (!fs::is_directory(entry.path())) - continue; + if (!fs::is_directory(entry.path())) continue; std::string bundle_dir = entry.path().string(); fs::path metadata_file = entry.path() / PRESET_BUNDLE_METADATA; - if (!fs::exists(metadata_file)) - continue; + if (!fs::exists(metadata_file)) continue; BundleMetadata metadata; - if (!metadata.load_from_json(metadata_file.string())) - continue; + if (!metadata.load_from_json(metadata_file.string())) continue; metadata.print_presets.clear(); metadata.filament_presets.clear(); metadata.printer_presets.clear(); - this->prints.load_presets( - bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.print_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); - this->filaments.load_presets( - bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.filament_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); - this->printers.load_presets( - bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.printer_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + this->prints.load_presets(bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.print_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + this->filaments.load_presets(bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.filament_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); + this->printers.load_presets(bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.printer_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::LocalBundle, metadata.id)); metadata.bundle_type = BundleType::Local; - metadata.path = metadata_file.string(); + metadata.path = metadata_file.string(); bundles.WriteLock(); bundles.m_bundles[metadata.id] = metadata; @@ -1076,38 +1090,32 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For fs::path subscribed_dir(folder / PRESET_SUBSCRIBED_DIR); if (fs::exists(subscribed_dir)) { for (auto& entry : fs::directory_iterator(subscribed_dir)) { - if (!fs::is_directory(entry.path())) - continue; + if (!fs::is_directory(entry.path())) continue; std::string bundle_dir = entry.path().string(); fs::path metadata_file = entry.path() / PRESET_BUNDLE_METADATA; - if (!fs::exists(metadata_file)) - continue; + if (!fs::exists(metadata_file)) continue; BundleMetadata metadata; - if (!metadata.load_from_json(metadata_file.string())) - continue; + if (!metadata.load_from_json(metadata_file.string())) continue; metadata.print_presets.clear(); metadata.filament_presets.clear(); metadata.printer_presets.clear(); metadata.is_subscribed = true; - this->prints.load_presets( - bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.print_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); - this->filaments.load_presets( - bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.filament_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); - this->printers.load_presets( - bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, - [&](Preset& preset) { metadata.printer_presets.push_back(preset.name); }, - PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + this->prints.load_presets(bundle_dir, PRESET_PRINT_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.print_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + this->filaments.load_presets(bundle_dir, PRESET_FILAMENT_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.filament_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); + this->printers.load_presets(bundle_dir, PRESET_PRINTER_NAME, substitutions, substitution_rule, [&](Preset& preset) { + metadata.printer_presets.push_back(preset.name); + }, PresetOrigin(PresetOrigin::Kind::SubscribedBundle, metadata.id)); - metadata.bundle_type = BundleType::Subscribed; - metadata.path = metadata_file.string(); + metadata.bundle_type = BundleType::Subscribed; + metadata.path = metadata_file.string(); metadata.update_available = false; bundles.WriteLock(); @@ -1125,32 +1133,27 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For std::string sel = prints.get_selected_preset().name; this->prints.load_presets(dir_user_presets, PRESET_PRINT_NAME, substitutions, substitution_rule); prints.select_preset_by_name(sel, false); - } catch (const std::runtime_error& err) { - errors_cummulative += err.what(); - } + } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } try { std::string sel = filaments.get_selected_preset().name; this->filaments.load_presets(dir_user_presets, PRESET_FILAMENT_NAME, substitutions, substitution_rule); filaments.select_preset_by_name(sel, false); - } catch (const std::runtime_error& err) { - errors_cummulative += err.what(); - } + } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } try { std::string sel = printers.get_selected_preset().name; this->printers.load_presets(dir_user_presets, PRESET_PRINTER_NAME, substitutions, substitution_rule); printers.select_preset_by_name(sel, false); - } catch (const std::runtime_error& err) { - errors_cummulative += err.what(); - } - if (!errors_cummulative.empty()) - throw Slic3r::RuntimeError(errors_cummulative); + } catch (const std::runtime_error& err) { errors_cummulative += err.what(); } + if (!errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative); - const auto json_ms = std::chrono::duration_cast(std::chrono::steady_clock::now() - json_t0).count(); + const auto json_ms = std::chrono::duration_cast( + std::chrono::steady_clock::now() - json_t0).count(); BOOST_LOG_TRIVIAL(info) << "PresetBundle: user presets loaded from JSON in " << json_ms << " ms"; } { - const auto ms = std::chrono::duration_cast(std::chrono::steady_clock::now() - user_load_t0).count(); + const auto ms = std::chrono::duration_cast( + std::chrono::steady_clock::now() - user_load_t0).count(); BOOST_LOG_TRIVIAL(info) << "PresetBundle: user + bundle presets loaded in " << ms << " ms"; } @@ -1161,70 +1164,62 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(std::string user, For return PresetsConfigSubstitutions(); } -PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig& config, - std::map>& my_presets, - ForwardCompatibilitySubstitutionRule substitution_rule) +PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig & config, + std::map> &my_presets, + ForwardCompatibilitySubstitutionRule substitution_rule) { // First load the vendor specific system presets. PresetsConfigSubstitutions substitutions; std::string errors_cummulative; bool process_added = false, filament_added = false, machine_added = false; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" enter, substitution_rule %1%, preset toltal count %2%") % substitution_rule % - my_presets.size(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" print's selected_idx %1%, selected_name %2%") % prints.get_selected_idx() % - prints.get_selected_preset_name(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" filament's selected_idx %1%, selected_name %2%") % filaments.get_selected_idx() % - filaments.get_selected_preset_name(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" printers's selected_idx %1%, selected_name %2%") % printers.get_selected_idx() % - printers.get_selected_preset_name(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, substitution_rule %1%, preset toltal count %2%")%substitution_rule%my_presets.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" print's selected_idx %1%, selected_name %2%") %prints.get_selected_idx() %prints.get_selected_preset_name(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" filament's selected_idx %1%, selected_name %2%") %filaments.get_selected_idx() %filaments.get_selected_preset_name(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" printers's selected_idx %1%, selected_name %2%") %printers.get_selected_idx() %printers.get_selected_preset_name(); // Sync removing remove_users_preset(config, &my_presets); std::map>::iterator it; for (int pass = 0; pass < 2; ++pass) - for (it = my_presets.begin(); it != my_presets.end(); it++) { - std::string name = it->first; - std::map& value_map = it->second; - // Load user root presets at first pass - std::map::iterator inherits_iter = value_map.find(BBL_JSON_KEY_INHERITS); - if ((pass == 1) == (inherits_iter == value_map.end() || inherits_iter->second.empty())) - continue; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " start load from cloud: " << name; - // get the type first - std::map::iterator type_iter = value_map.find(BBL_JSON_KEY_TYPE); - if (type_iter == value_map.end()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find type for setting %1%") % name; - continue; + for (it = my_presets.begin(); it != my_presets.end(); it++) { + std::string name = it->first; + std::map& value_map = it->second; + // Load user root presets at first pass + std::map::iterator inherits_iter = value_map.find(BBL_JSON_KEY_INHERITS); + if ((pass == 1) == (inherits_iter == value_map.end() || inherits_iter->second.empty())) + continue; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " start load from cloud: " << name; + //get the type first + std::map::iterator type_iter = value_map.find(BBL_JSON_KEY_TYPE); + if (type_iter == value_map.end()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find type for setting %1%")%name; + continue; + } + try { + PresetCollection *preset_collection = nullptr; + if (type_iter->second == PRESET_IOT_PRINT_TYPE) { + preset_collection = &(this->prints); + process_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, PresetOrigin(PresetOrigin::Kind::User)); } - try { - PresetCollection* preset_collection = nullptr; - if (type_iter->second == PRESET_IOT_PRINT_TYPE) { - preset_collection = &(this->prints); - process_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, - PresetOrigin(PresetOrigin::Kind::User)); - } else if (type_iter->second == PRESET_IOT_FILAMENT_TYPE) { - preset_collection = &(this->filaments); - filament_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, - PresetOrigin(PresetOrigin::Kind::User)); - } else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { - preset_collection = &(this->printers); - machine_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, - PresetOrigin(PresetOrigin::Kind::User)); - } else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format("invalid type %1% for setting %2%") % type_iter->second % name; - continue; - } - } catch (const std::runtime_error& err) { - errors_cummulative += err.what(); + else if (type_iter->second == PRESET_IOT_FILAMENT_TYPE) { + preset_collection = &(this->filaments); + filament_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, PresetOrigin(PresetOrigin::Kind::User)); + } + else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { + preset_collection = &(this->printers); + machine_added |= preset_collection->load_user_preset(name, value_map, substitutions, substitution_rule, PresetOrigin(PresetOrigin::Kind::User)); + } + else { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format("invalid type %1% for setting %2%") %type_iter->second %name; + continue; } } + catch (const std::runtime_error& err) { + errors_cummulative += err.what(); + } + } /*if (process_added) { this->prints.update_after_user_presets_loaded(); } @@ -1240,38 +1235,37 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig& config, this->update_multi_material_filament_presets(); this->update_compatible(PresetSelectCompatibleType::Never); - // this->load_selections(config, PresetPreferences()); + //this->load_selections(config, PresetPreferences()); set_calibrate_printer(""); - if (!errors_cummulative.empty()) + if (! errors_cummulative.empty()) throw Slic3r::RuntimeError(errors_cummulative); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(" finished, process_added %1%, filament_added %2%, machine_added %3%") % process_added % - filament_added % machine_added; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, process_added %1%, filament_added %2%, machine_added %3%")%process_added %filament_added %machine_added; return substitutions; } -bool PresetBundle::apply_vendor_config(const std::map>>& new_vendors, - const std::map& new_filaments, - AppConfig* app_config, - bool overwrite, - const std::string& preferred_printer_model, - const std::string& preferred_printer_variant, - const std::string& preferred_filament) +bool PresetBundle::apply_vendor_config( + const std::map>>& new_vendors, + const std::map& new_filaments, + AppConfig* app_config, + bool overwrite, + const std::string& preferred_printer_model, + const std::string& preferred_printer_variant, + const std::string& preferred_filament) { namespace fs = boost::filesystem; // Get current configuration from AppConfig - const auto old_vendors = app_config->vendors(); - const auto old_filaments = app_config->has_section(AppConfig::SECTION_FILAMENTS) ? - app_config->get_section(AppConfig::SECTION_FILAMENTS) : - std::map(); + const auto old_vendors = app_config->vendors(); + const auto old_filaments = app_config->has_section(AppConfig::SECTION_FILAMENTS) + ? app_config->get_section(AppConfig::SECTION_FILAMENTS) + : std::map(); // Find vendors that need installation std::vector install_bundles; - for (const auto& it : new_vendors) { + for (const auto &it : new_vendors) { if (it.second.size() > 0) { if (!is_vendor_installed(it.first)) { install_bundles.emplace_back(it.first); @@ -1295,9 +1289,9 @@ bool PresetBundle::apply_vendor_config(const std::mapsecond.empty(); + static const std::string system_suffix = " @System"; + auto it_default = new_vendors.find(PresetBundle::ORCA_DEFAULT_BUNDLE); + bool has_default_bundle_printer = it_default != new_vendors.end() && !it_default->second.empty(); // Check if any non-default vendor has selected printers bool has_vendor_printer = false; @@ -1325,8 +1319,7 @@ bool PresetBundle::apply_vendor_config(const std::mapvendors.end()) { // Vendor is loaded, check if the filament exists for (auto f : vendor_it->second.default_filaments) { - BOOST_LOG_TRIVIAL(info) - << " checking if vendor filament " << f << " matches " << short_name << "(" << name << ")"; + BOOST_LOG_TRIVIAL(info) << " checking if vendor filament " << f << " matches " << short_name << "(" << name << ")"; if (f.find(short_name) != std::string::npos) { BOOST_LOG_TRIVIAL(info) << name << " has filament from vendor: " << vendor; has_vendor_filament = true; @@ -1356,7 +1349,8 @@ bool PresetBundle::apply_vendor_config(const std::mapset_section(AppConfig::SECTION_FILAMENTS, supplemented_filaments); app_config->set_vendors(new_vendors); - } else { + } + else { // Merge filaments std::map merged_filaments = old_filaments; for (const auto& [name, value] : supplemented_filaments) { @@ -1378,7 +1372,7 @@ bool PresetBundle::apply_vendor_config(const std::mapload_presets(*app_config, ForwardCompatibilitySubstitutionRule::Enable, - {preferred_printer_model, preferred_printer_variant, preferred_filament, std::string()}); + {preferred_printer_model, preferred_printer_variant, preferred_filament, std::string()}); // Ensure active filament compatibility // If the active filament is not in the wizard-selected filaments, switch to the first @@ -1404,56 +1398,49 @@ bool PresetBundle::apply_vendor_config(const std::map& files, - std::function override_confirm, - ForwardCompatibilitySubstitutionRule rule, - AppConfig& config) +PresetsConfigSubstitutions PresetBundle::import_presets(std::vector & files, + std::function override_confirm, + ForwardCompatibilitySubstitutionRule rule, + AppConfig& config) { bundles.PauseRead(); // Pause threads from reading BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " entry"; PresetsConfigSubstitutions substitutions; int overwrite = 0; - std::vector result; - std::string user_id = config.get("preset_folder"); + std::vector result; + std::string user_id = config.get("preset_folder"); if (user_id.empty()) user_id = DEFAULT_USER_FOLDER_NAME; this->update_user_presets_directory(user_id); - for (auto& file : files) { + for (auto &file : files) { if (Slic3r::is_json_file(file)) { import_json_presets(substitutions, file, override_confirm, rule, overwrite, result); } // Determine if it is a preset bundle - if (boost::iends_with(file, ".orca_printer") || boost::iends_with(file, ".orca_bundle") || - boost::iends_with(file, ".orca_filament") || boost::iends_with(file, ".zip")) { + if (boost::iends_with(file, ".orca_printer") || boost::iends_with(file, ".orca_bundle") || boost::iends_with(file, ".orca_filament") || boost::iends_with(file, ".zip")) { boost::system::error_code ec; // create user folder fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); - if (!fs::exists(user_folder)) - fs::create_directory(user_folder, ec); - if (ec) - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); + if (!fs::exists(user_folder)) fs::create_directory(user_folder, ec); + if (ec) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); // create default folder fs::path configs_folder(user_folder / user_id); - if (!fs::exists(configs_folder)) - fs::create_directory(configs_folder, ec); - if (ec) - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); - // create temp folder - // std::string user_default_temp_dir = data_dir() + "/" + PRESET_USER_DIR + "/" + DEFAULT_USER_FOLDER_NAME + "/" + "temp"; + if (!fs::exists(configs_folder)) fs::create_directory(configs_folder, ec); + if (ec) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); + //create temp folder + //std::string user_default_temp_dir = data_dir() + "/" + PRESET_USER_DIR + "/" + DEFAULT_USER_FOLDER_NAME + "/" + "temp"; fs::path temp_folder(configs_folder / "temp"); std::string user_default_temp_dir = temp_folder.make_preferred().string(); - if (fs::exists(temp_folder)) - fs::remove_all(temp_folder); + if (fs::exists(temp_folder)) fs::remove_all(temp_folder); fs::create_directory(temp_folder, ec); - if (ec) - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); + if (ec) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " create directory failed: " << ec.message(); file = boost::filesystem::path(file).make_preferred().string(); mz_zip_archive zip_archive; mz_zip_zero_struct(&zip_archive); mz_bool status; - FILE* zipFile = boost::nowide::fopen(file.c_str(), "rb"); + FILE *zipFile = boost::nowide::fopen(file.c_str(), "rb"); status = mz_zip_reader_init_cfile(&zip_archive, zipFile, 0, MZ_ZIP_FLAG_CASE_SENSITIVE | MZ_ZIP_FLAG_IGNORE_PATH); if (MZ_FALSE == status) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Failed to initialize reader ZIP archive"; @@ -1467,19 +1454,17 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector bool has_bundle_structure = false; BundleMetadata metadata; fs::path metadata_path = temp_folder / BUNDLE_STRUCTURE_JSON_NAME; - status = mz_zip_reader_extract_file_to_file(&zip_archive, BUNDLE_STRUCTURE_JSON_NAME, - encode_path(metadata_path.string().c_str()).c_str(), MZ_ZIP_FLAG_CASE_SENSITIVE); + status = mz_zip_reader_extract_file_to_file(&zip_archive, BUNDLE_STRUCTURE_JSON_NAME, encode_path(metadata_path.string().c_str()).c_str(), MZ_ZIP_FLAG_CASE_SENSITIVE); if (status) { if (metadata.load_from_json(metadata_path.string())) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found bundle_id: " << metadata.id << " from " - << BUNDLE_STRUCTURE_JSON_NAME; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found bundle_id: " << metadata.id << " from " << BUNDLE_STRUCTURE_JSON_NAME; has_bundle_structure = true; } } if (has_bundle_structure && metadata.id.empty()) { boost::uuids::uuid uuid = boost::uuids::random_generator()(); - metadata.id = to_string(uuid); + metadata.id = to_string(uuid); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " bundle_id was empty, so generating a UUID: " << metadata.id; } @@ -1491,11 +1476,9 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector if (!fs::exists(bundle_base_dir)) fs::create_directories(bundle_base_dir, ec); if (ec) - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to create bundle directory: " << bundle_base_dir.string() - << " error: " << ec.message(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " Failed to create bundle directory: " << bundle_base_dir.string() << " error: " << ec.message(); } else { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << " No bundle_structure.json found, importing presets into the user preset directory"; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " No bundle_structure.json found, importing presets into the user preset directory"; } // Extract Files @@ -1510,21 +1493,18 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector if (std::string::npos != index) { file_name = file_name.substr(index + 1); } - if (BUNDLE_STRUCTURE_JSON_NAME == file_name) - continue; + if (BUNDLE_STRUCTURE_JSON_NAME == file_name) continue; // create target file path std::string target_file_path = boost::filesystem::path(temp_folder / file_name).make_preferred().string(); - status = mz_zip_reader_extract_to_file(&zip_archive, i, encode_path(target_file_path.c_str()).c_str(), - MZ_ZIP_FLAG_CASE_SENSITIVE); + status = mz_zip_reader_extract_to_file(&zip_archive, i, encode_path(target_file_path.c_str()).c_str(), MZ_ZIP_FLAG_CASE_SENSITIVE); // target file is opened if (MZ_FALSE == status) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Failed to open target file: " << target_file_path; } else { bool is_success = import_json_presets(substitutions, target_file_path, override_confirm, rule, overwrite, result, has_bundle_structure ? bundle_base_dir.string() : std::string()); - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << " import target file: " << target_file_path << " import result" << is_success; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " import target file: " << target_file_path << " import result" << is_success; } } } @@ -1542,8 +1522,9 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Saved bundle metadata to: " << metadata_save_path.string(); metadata.bundle_type = BundleType::Local; - metadata.path = metadata_save_path.string(); + metadata.path = metadata_save_path.string(); // Store the bundle metadata in m_bundles for tracking + bundles.WriteLock(); bundles.m_bundles[metadata.id] = metadata; @@ -1554,10 +1535,8 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector } fclose(zipFile); - if (fs::exists(temp_folder)) - fs::remove_all(temp_folder, ec); - if (ec) - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " remove directory failed: " << ec.message(); + if (fs::exists(temp_folder)) fs::remove_all(temp_folder, ec); + if (ec) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " remove directory failed: " << ec.message(); } } bundles.UnpauseRead(); @@ -1565,37 +1544,38 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector return substitutions; } -bool PresetBundle::import_json_presets(PresetsConfigSubstitutions& substitutions, - std::string& file, - std::function override_confirm, - ForwardCompatibilitySubstitutionRule rule, - int& overwrite, - std::vector& result, - const std::string& bundle_dir) +bool PresetBundle::import_json_presets(PresetsConfigSubstitutions & substitutions, + std::string & file, + std::function override_confirm, + ForwardCompatibilitySubstitutionRule rule, + int & overwrite, + std::vector & result, + const std::string & bundle_dir) { try { DynamicPrintConfig config; // BBS: change to json format // ConfigSubstitutions config_substitutions = config.load_from_ini(preset.file, substitution_rule); std::map key_values; - std::string reason; - ConfigSubstitutions config_substitutions = config.load_from_json(file, rule, key_values, reason); - std::string name = key_values[BBL_JSON_KEY_NAME]; - std::string version_str = key_values[BBL_JSON_KEY_VERSION]; - boost::optional version = Semver::parse(version_str); - if (!version) - return false; + std::string reason; + ConfigSubstitutions config_substitutions = config.load_from_json(file, rule, key_values, reason); + std::string name = key_values[BBL_JSON_KEY_NAME]; + std::string version_str = key_values[BBL_JSON_KEY_VERSION]; + boost::optional version = Semver::parse(version_str); + if (!version) return false; - std::string type_subdir; // also note the type subdir for bundles - PresetCollection* collection = nullptr; + std::string type_subdir; // also note the type subdir for bundles + PresetCollection *collection = nullptr; if (config.has("printer_settings_id")) { - collection = &printers; + collection = &printers; type_subdir = PRESET_PRINTER_NAME; - } else if (config.has("print_settings_id")) { - collection = &prints; + } + else if (config.has("print_settings_id")) { + collection = &prints; type_subdir = PRESET_PRINT_NAME; - } else if (config.has("filament_settings_id")) { - collection = &filaments; + } + else if (config.has("filament_settings_id")) { + collection = &filaments; type_subdir = PRESET_FILAMENT_NAME; } if (collection == nullptr) { @@ -1603,17 +1583,15 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions& substitutions return false; } const PresetOrigin load_origin = detect_origin_from_path(boost::filesystem::path(bundle_dir)); - const std::string preset_name = get_preset_canonical_name(name, load_origin); + const std::string preset_name = get_preset_canonical_name(name, load_origin); - if (overwrite == 0) - overwrite = 1; + if (overwrite == 0) overwrite = 1; if (auto p = collection->find_preset(preset_name, false)) { if (p->is_default || p->is_system) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset already present and is system preset, not loading: " << preset_name; return false; } - if (overwrite != 2 && overwrite != 3) - overwrite = override_confirm(preset_name); // 3: yes to all 2: no to all + if (overwrite != 2 && overwrite != 3) overwrite = override_confirm(preset_name); //3: yes to all 2: no to all } if (overwrite == 0 || overwrite == 2) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset already present, not loading: " << preset_name; @@ -1621,61 +1599,55 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions& substitutions } DynamicPrintConfig new_config; - Preset* inherit_preset = nullptr; - ConfigOption* inherits_config = config.option(BBL_JSON_KEY_INHERITS); - std::string inherits_value; + Preset * inherit_preset = nullptr; + ConfigOption * inherits_config = config.option(BBL_JSON_KEY_INHERITS); + std::string inherits_value; if (inherits_config) { - ConfigOptionString* option_str = dynamic_cast(inherits_config); + ConfigOptionString *option_str = dynamic_cast(inherits_config); inherits_value = option_str->value; inherit_preset = collection->find_preset2(inherits_value, true); Preset::normalize_inherits(config, inherit_preset); if (inherit_preset) - inherits_value = inherit_preset->name; // keep the base_id redo below in sync + inherits_value = inherit_preset->name; // keep the base_id redo below in sync } if (inherit_preset) { new_config = inherit_preset->config; new_config.apply(std::move(config)); } else { // We support custom root preset now - auto inherits_config2 = dynamic_cast(inherits_config); + auto inherits_config2 = dynamic_cast(inherits_config); if (inherits_config2 && !inherits_config2->value.empty()) { // we should skip this preset here - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(", can not find inherit preset for user preset %1%, just skip") % name; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", can not find inherit preset for user preset %1%, just skip") % name; return false; } - // Find a default preset for the config. The PrintPresetCollection provides different default preset based on the - // "printer_technology" field. - const Preset& default_preset = collection->default_preset_for(config); + // Find a default preset for the config. The PrintPresetCollection provides different default preset based on the "printer_technology" field. + const Preset &default_preset = collection->default_preset_for(config); new_config = default_preset.config; new_config.apply(std::move(config)); extend_default_config_length(new_config, true, default_preset.config); } - Preset& preset = collection->load_preset(collection->path_from_name(name, inherit_preset == nullptr), preset_name, - std::move(new_config), false); + Preset &preset = collection->load_preset(collection->path_from_name(name, inherit_preset == nullptr), preset_name, std::move(new_config), false); preset.bundle_id = load_origin.bundle_id; if (key_values.find(BBL_JSON_KEY_FILAMENT_ID) != key_values.end()) preset.filament_id = key_values[BBL_JSON_KEY_FILAMENT_ID]; preset.is_external = true; preset.version = *version; inherit_preset = collection->find_preset(inherits_value, false, true); // pointer maybe wrong after insert, redo find - if (inherit_preset) - preset.base_id = inherit_preset->setting_id; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << preset.name << " have filament_id: " << preset.filament_id - << " and base_id: " << preset.base_id; + if (inherit_preset) preset.base_id = inherit_preset->setting_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << preset.name << " have filament_id: " << preset.filament_id << " and base_id: " << preset.base_id; Preset::normalize(preset.config); // Report configuration fields, which are misplaced into a wrong group. - const Preset& default_preset = collection->default_preset_for(new_config); - std::string incorrect_keys = Preset::remove_invalid_keys(preset.config, default_preset.config); + const Preset &default_preset = collection->default_preset_for(new_config); + std::string incorrect_keys = Preset::remove_invalid_keys(preset.config, default_preset.config); if (!incorrect_keys.empty()) { ++m_errors; BOOST_LOG_TRIVIAL(error) << "Error in a preset file: The preset \"" << preset.file << "\" contains the following incorrect keys: " << incorrect_keys << ", which were removed"; } if (!config_substitutions.empty()) - substitutions.push_back( - {name, collection->type(), PresetConfigSubstitutions::Source::UserFile, file, std::move(config_substitutions)}); + substitutions.push_back({name, collection->type(), PresetConfigSubstitutions::Source::UserFile, file, std::move(config_substitutions)}); collection->set_custom_preset_alias(preset); // If bundle_dir is provided, use it for the save operation @@ -1689,26 +1661,26 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions& substitutions } result.push_back(file); - } catch (const std::ifstream::failure& err) { + } catch (const std::ifstream::failure &err) { ++m_errors; BOOST_LOG_TRIVIAL(error) << boost::format("The config cannot be loaded: %1%. Reason: %2%") % file % err.what(); - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { ++m_errors; BOOST_LOG_TRIVIAL(error) << boost::format("Failed importing config file: %1%. Reason: %2%") % file % err.what(); } return true; } -// BBS save user preset to user_id preset folder +//BBS save user preset to user_id preset folder void PresetBundle::save_user_presets(AppConfig& config, std::map& need_to_delete_list) { std::string user_sub_folder = DEFAULT_USER_FOLDER_NAME; if (!config.get("preset_folder").empty()) user_sub_folder = config.get("preset_folder"); - // BBS: change directory by design - const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + user_sub_folder; + //BBS: change directory by design + const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/"+ user_sub_folder; - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, save to %1%") % dir_user_presets; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, save to %1%")%dir_user_presets; fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); if (!fs::exists(user_folder)) @@ -1740,7 +1712,7 @@ void PresetBundle::check_and_fix_user_presets_syncinfo(const std::string& user_i process_collection(this->printers); } -// Orca: Import subscribed bundle presets (load and save to disk in one operation) +//Orca: Import subscribed bundle presets (load and save to disk in one operation) PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( AppConfig& config, const std::map>& bundle_presets, @@ -1751,8 +1723,7 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( std::string errors_cumulative; bool process_added = false, filament_added = false, machine_added = false; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " enter, substitution_rule " << substitution_rule << ", bundle_id: " << remote_metadata.id - << ", preset count: " << bundle_presets.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " enter, substitution_rule " << substitution_rule << ", bundle_id: " << remote_metadata.id << ", preset count: " << bundle_presets.size(); BundleMetadata merged_metadata; auto existing_it = bundles.m_bundles.find(remote_metadata.id); @@ -1762,16 +1733,16 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( merged_metadata.imported_time = std::time(nullptr); } - merged_metadata.id = remote_metadata.id; - merged_metadata.name = remote_metadata.name; - merged_metadata.version = remote_metadata.version; - merged_metadata.description = remote_metadata.description; - merged_metadata.author = remote_metadata.author; - merged_metadata.updated_time = remote_metadata.updated_time; - merged_metadata.bundle_type = BundleType::Subscribed; - merged_metadata.is_subscribed = true; + merged_metadata.id = remote_metadata.id; + merged_metadata.name = remote_metadata.name; + merged_metadata.version = remote_metadata.version; + merged_metadata.description = remote_metadata.description; + merged_metadata.author = remote_metadata.author; + merged_metadata.updated_time = remote_metadata.updated_time; + merged_metadata.bundle_type = BundleType::Subscribed; + merged_metadata.is_subscribed = true; merged_metadata.update_available = false; - merged_metadata.unauthorized = false; + merged_metadata.unauthorized = false; const PresetOrigin subscribed_origin(PresetOrigin::Kind::SubscribedBundle, remote_metadata.id); @@ -1795,8 +1766,8 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( remote_printers.insert(subscribed_name); } - auto remove_obsolete_bundle_presets = [&](PresetCollection& collection, const std::unordered_set& remote_names, - const char* type_name) -> int { + auto remove_obsolete_bundle_presets = + [&](PresetCollection& collection, const std::unordered_set& remote_names, const char* type_name) -> int { int removed_count = 0; std::vector to_delete; @@ -1810,12 +1781,10 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( for (const std::string& preset_name : to_delete) { if (collection.delete_preset(preset_name, true)) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << type_name << " preset '" << preset_name - << "' no longer in remote bundle, deleted"; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << type_name << " preset '" << preset_name << "' no longer in remote bundle, deleted"; ++removed_count; } else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": failed to delete obsolete " << type_name << " preset '" << preset_name - << "'"; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": failed to delete obsolete " << type_name << " preset '" << preset_name << "'"; } } @@ -1833,8 +1802,7 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( // Get current user ID for path construction std::string user_id = config.get("preset_folder"); - if (user_id.empty()) - user_id = DEFAULT_USER_FOLDER_NAME; + if (user_id.empty()) user_id = DEFAULT_USER_FOLDER_NAME; // Create the subscribed directory base path boost::filesystem::path user_folder(Slic3r::data_dir() + "/" + PRESET_USER_DIR); @@ -1845,8 +1813,7 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( if (!boost::filesystem::exists(subscribed_base)) boost::filesystem::create_directories(subscribed_base, ec); if (ec) { - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create subscribed directory: " << subscribed_base.string() - << " error: " << ec.message(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create subscribed directory: " << subscribed_base.string() << " error: " << ec.message(); return substitutions; } @@ -1857,8 +1824,7 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( if (!boost::filesystem::exists(bundle_dir)) boost::filesystem::create_directories(bundle_dir, ec); if (ec) { - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create bundle directory: " << bundle_dir.string() - << " error: " << ec.message(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create bundle directory: " << bundle_dir.string() << " error: " << ec.message(); return substitutions; } @@ -1868,8 +1834,8 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( // Load each preset from the bundle and save to disk for (const auto& preset_entry : bundle_presets) { - const std::string& preset_name = preset_entry.first; - const std::string subscribed_name = get_preset_canonical_name(preset_name, subscribed_origin); + const std::string& preset_name = preset_entry.first; + const std::string subscribed_name = get_preset_canonical_name(preset_name, subscribed_origin); std::map value_map = preset_entry.second; // Make a copy since we might modify it BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " importing preset: " << preset_name << " from bundle: " << remote_metadata.id; @@ -1884,8 +1850,7 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( // If this preset inherits from another preset inside the same bundle, rewrite the // reference to the canonical (bundle-prefixed) name so the lookup matches the stored identity. auto inherits_iter = value_map.find(BBL_JSON_KEY_INHERITS); - if (inherits_iter != value_map.end() && !inherits_iter->second.empty() && - bundle_presets.find(inherits_iter->second) != bundle_presets.end()) + if (inherits_iter != value_map.end() && !inherits_iter->second.empty() && bundle_presets.find(inherits_iter->second) != bundle_presets.end()) inherits_iter->second = get_preset_canonical_name(inherits_iter->second, subscribed_origin); try { @@ -1895,23 +1860,23 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( if (type_iter->second == PRESET_IOT_PRINT_TYPE) { preset_collection = &(this->prints); - type_subdir = PRESET_PRINT_NAME; - preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, - subscribed_origin); + type_subdir = PRESET_PRINT_NAME; + preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, subscribed_origin); process_added |= preset_added; - } else if (type_iter->second == PRESET_IOT_FILAMENT_TYPE) { + } + else if (type_iter->second == PRESET_IOT_FILAMENT_TYPE) { preset_collection = &(this->filaments); - type_subdir = PRESET_FILAMENT_NAME; - preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, - subscribed_origin); + type_subdir = PRESET_FILAMENT_NAME; + preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, subscribed_origin); filament_added |= preset_added; - } else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { + } + else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { preset_collection = &(this->printers); - type_subdir = PRESET_PRINTER_NAME; - preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, - subscribed_origin); + type_subdir = PRESET_PRINTER_NAME; + preset_added = preset_collection->load_user_preset(preset_name, value_map, substitutions, substitution_rule, subscribed_origin); machine_added |= preset_added; - } else { + } + else { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " invalid type " << type_iter->second << " for preset " << preset_name; continue; } @@ -1933,19 +1898,20 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) merged_metadata.printer_presets.push_back(preset->name); } - } catch (const std::runtime_error& err) { + } + catch (const std::runtime_error& err) { errors_cumulative += err.what(); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " error importing preset " << preset_name << ": " << err.what(); } } boost::filesystem::path metadata_save_path = bundle_dir / PRESET_BUNDLE_METADATA; - merged_metadata.path = metadata_save_path.string(); - bundles.m_bundles[remote_metadata.id] = merged_metadata; + merged_metadata.path = metadata_save_path.string(); + bundles.m_bundles[remote_metadata.id] = merged_metadata; if (bundles.m_bundles[remote_metadata.id].save_to_json(metadata_save_path.string())) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " saved bundle metadata to: " << metadata_save_path.string(); - } else { + } else { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to save bundle metadata to: " << metadata_save_path.string(); } @@ -1960,18 +1926,15 @@ PresetsConfigSubstitutions PresetBundle::update_subscribed_presets( if (!errors_cumulative.empty()) throw Slic3r::RuntimeError(errors_cumulative); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << " finished, process_added " << process_added << ", filament_added " << filament_added - << ", machine_added " << machine_added; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << " finished, process_added " << process_added << ", filament_added " << filament_added << ", machine_added " << machine_added; return substitutions; } // Helper function: save preset to bundle directory with common logic // This function extracts the common code used by both import_json_presets and import_subscribed_presets -bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, - PresetCollection* collection, - const std::string& bundle_id, - const std::string& type_subdir, - const std::string& bundle_base_dir) +bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, PresetCollection* collection, + const std::string& bundle_id, const std::string& type_subdir, + const std::string& bundle_base_dir) { if (bundle_base_dir.empty()) { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " bundle_base_dir is empty, cannot save preset " << preset.name; @@ -1988,8 +1951,7 @@ bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, if (!boost::filesystem::exists(bundle_dir)) boost::filesystem::create_directories(bundle_dir, ec); if (ec) { - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create bundle directory: " << bundle_dir.string() - << " error: " << ec.message(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create bundle directory: " << bundle_dir.string() << " error: " << ec.message(); return false; } @@ -1998,8 +1960,7 @@ bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, if (!boost::filesystem::exists(type_dir)) { boost::filesystem::create_directories(type_dir, ec); if (ec) { - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create type directory: " << type_dir.string() - << " error: " << ec.message(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " failed to create type directory: " << type_dir.string() << " error: " << ec.message(); return false; } } @@ -2009,8 +1970,8 @@ bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, // Bundle preset names may include the subscribed/local prefix path. // Persist the file under the type directory using only the base preset name. const std::string preset_filename = boost::filesystem::path(preset.name).filename().string(); - const std::string file_name = boost::iends_with(preset_filename, ".json") ? preset_filename : (preset_filename + ".json"); - preset.file = (type_dir / file_name).make_preferred().string(); + const std::string file_name = boost::iends_with(preset_filename, ".json") ? preset_filename : (preset_filename + ".json"); + preset.file = (type_dir / file_name).make_preferred().string(); // Save with parent config if inherits from another preset std::string inherits = Preset::inherits(preset.config); @@ -2026,8 +1987,10 @@ bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, Preset::normalize_inherits(preset.config, parent_preset); if (preset.base_id.empty()) preset.base_id = parent_preset->setting_id; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " saved preset " << preset.name << " filament_id: " << preset.filament_id - << " base_id: " << preset.base_id << " bundle: " << bundle_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " saved preset " << preset.name + << " filament_id: " << preset.filament_id + << " base_id: " << preset.base_id + << " bundle: " << bundle_id; preset.save(&(parent_preset->config)); } } @@ -2043,13 +2006,13 @@ bool PresetBundle::save_preset_to_bundle_dir(Preset& preset, } } -// BBS: save user preset to user_id preset folder +//BBS: save user preset to user_id preset folder void PresetBundle::update_user_presets_directory(const std::string preset_folder) { - // BBS: change directory by design - const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + preset_folder; + //BBS: change directory by design + const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/"+ preset_folder; - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, update directory to %1%") % dir_user_presets; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, update directory to %1%")%dir_user_presets; fs::path user_folder(data_dir() + "/" + PRESET_USER_DIR); if (!fs::exists(user_folder)) @@ -2070,8 +2033,7 @@ void PresetBundle::remove_user_presets_directory(const std::string preset_folder const std::string dir_user_presets = data_dir() + "/" + PRESET_USER_DIR + "/" + preset_folder; if (preset_folder.empty()) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(": preset_folder is empty, no need to remove directory : %1%") % dir_user_presets; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": preset_folder is empty, no need to remove directory : %1%") % dir_user_presets; return; } BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, delete directory : %1%") % dir_user_presets; @@ -2083,69 +2045,72 @@ void PresetBundle::remove_user_presets_directory(const std::string preset_folder void PresetBundle::update_system_preset_setting_ids(std::map>& system_presets) { - for (auto iterator : system_presets) { - std::string name = iterator.first; + for (auto iterator: system_presets) + { + std::string name = iterator.first; std::map& value_map = iterator.second; - // get the type first + //get the type first std::map::iterator type_iter = value_map.find(BBL_JSON_KEY_TYPE); if (type_iter == value_map.end()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find type for setting %1%") % name; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find type for setting %1%")%name; continue; } - PresetCollection* preset_collection = nullptr; + PresetCollection *preset_collection = nullptr; if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { preset_collection = &(this->printers); - } else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { + } + else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { preset_collection = &(this->printers); - } else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { + } + else if (type_iter->second == PRESET_IOT_PRINTER_TYPE) { preset_collection = &(this->printers); - } else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format("invalid type %1% for setting %2%") % type_iter->second % name; + } + else { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format("invalid type %1% for setting %2%") %type_iter->second %name; continue; } std::string setting_id; if (value_map.count(BBL_JSON_KEY_SETTING_ID) > 0) setting_id = value_map[BBL_JSON_KEY_SETTING_ID]; else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find setting_id for setting %1%") % name; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(" can not find setting_id for setting %1%")%name; continue; } Preset* preset = preset_collection->find_preset(name, false, true); if (preset) { if (!preset->setting_id.empty() && (preset->setting_id.compare(setting_id) != 0)) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << boost::format("name %1%, local setting_id %2% is different with remote id %3%") % preset->name % - preset->setting_id % setting_id; - } else if (preset->setting_id.empty()) + BOOST_LOG_TRIVIAL(error) << boost::format("name %1%, local setting_id %2% is different with remote id %3%") + %preset->name %preset->setting_id %setting_id; + } + else if (preset->setting_id.empty()) preset->setting_id = setting_id; - } else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format("can not find setting %1% in system presets, type %2%") % name % type_iter->second; + } + else { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format("can not find setting %1% in system presets, type %2%") %name %type_iter->second; continue; } } return; } -// BBS: validate printers from previous project -static std::set gcodes_key_set = {"filament_end_gcode", "filament_start_gcode", "change_filament_gcode", - "layer_change_gcode", "machine_end_gcode", "machine_pause_gcode", - "machine_start_gcode", "template_custom_gcode", "printing_by_object_gcode", - "before_layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode"}; -int PresetBundle::validate_presets(const std::string& file_name, DynamicPrintConfig& config, std::set& different_gcodes) +//BBS: validate printers from previous project +static std::set gcodes_key_set = {"filament_end_gcode", "filament_start_gcode", "change_filament_gcode", "layer_change_gcode", "machine_end_gcode", "machine_pause_gcode", "machine_start_gcode", + "template_custom_gcode", "printing_by_object_gcode", "before_layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode"}; +int PresetBundle::validate_presets(const std::string &file_name, DynamicPrintConfig& config, std::set& different_gcodes) { - bool validated = false; - std::vector inherits_values = config.option("inherits_group", true)->values; - std::vector filament_preset_name = config.option("filament_settings_id", true)->values; - std::string printer_preset = config.option("printer_settings_id", true)->value; - bool has_different_settings_to_system = config.option("different_settings_to_system") ? true : false; + bool validated = false; + std::vector inherits_values = config.option("inherits_group", true)->values; + std::vector filament_preset_name = config.option("filament_settings_id", true)->values; + std::string printer_preset = config.option("printer_settings_id", true)->value; + bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; std::vector different_values; - int ret = VALIDATE_PRESETS_SUCCESS; + int ret = VALIDATE_PRESETS_SUCCESS; if (has_different_settings_to_system) different_values = config.option("different_settings_to_system", true)->values; - // PrinterTechnology printer_technology = Preset::printer_technology(config); + //PrinterTechnology printer_technology = Preset::printer_technology(config); size_t filament_count = config.option("filament_diameter")->values.size(); inherits_values.resize(filament_count + 2, std::string()); different_values.resize(filament_count + 2, std::string()); @@ -2155,14 +2120,14 @@ int PresetBundle::validate_presets(const std::string& file_name, DynamicPrintCon validated = this->printers.validate_preset(printer_preset, printer_inherits); if (!validated) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(":file_name %1%, found the printer preset not inherit from system") % file_name; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":file_name %1%, found the printer preset not inherit from system") % file_name; different_gcodes.emplace(printer_preset); ret = VALIDATE_PRESETS_PRINTER_NOT_FOUND; } - for (unsigned int index = 0; index < filament_count; index++) { - std::string filament_preset = filament_preset_name[index]; - std::string filament_inherits = inherits_values[index + 1]; + for(unsigned int index = 0; index < filament_count; index ++) + { + std::string filament_preset = filament_preset_name[index]; + std::string filament_inherits = inherits_values[index+1]; // filament_preset_name is padded up to filament_count from filament_diameter. Unfilled // slots have no assigned preset, so there's nothing to validate or warn about. @@ -2171,23 +2136,21 @@ int PresetBundle::validate_presets(const std::string& file_name, DynamicPrintCon validated = this->filaments.validate_preset(filament_preset, filament_inherits); if (!validated) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(":file_name %1%, found the filament %2% preset not inherit from system") % - file_name % (index + 1); + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":file_name %1%, found the filament %2% preset not inherit from system") % file_name %(index+1); different_gcodes.emplace(filament_preset); ret = VALIDATE_PRESETS_FILAMENTS_NOT_FOUND; } } - // self defined presets, return directly - if (ret) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(":file_name %1%, found self defined presets, count %2%") % file_name % - different_gcodes.size(); + //self defined presets, return directly + if (ret) + { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":file_name %1%, found self defined presets, count %2%") %file_name %different_gcodes.size(); return ret; } - for (unsigned int index = 1; index < filament_count; index++) { + for(unsigned int index = 1; index < filament_count; index ++) + { std::string different_settingss = different_values[index]; std::vector different_keys; @@ -2197,16 +2160,14 @@ int PresetBundle::validate_presets(const std::string& file_name, DynamicPrintCon for (unsigned int j = 0; j < different_keys.size(); j++) { if (gcodes_key_set.find(different_keys[j]) != gcodes_key_set.end()) { different_gcodes.emplace(different_keys[j]); - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(":preset index %1%, different key %2%") % index % different_keys[j]; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":preset index %1%, different key %2%") %index %different_keys[j]; } } } - if (!different_gcodes.empty()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(":file_name %1%, found different gcodes count %2%") % file_name % - different_gcodes.size(); + if (!different_gcodes.empty()) + { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(":file_name %1%, found different gcodes count %2%") %file_name %different_gcodes.size(); return VALIDATE_PRESETS_MODIFIED_GCODES; } @@ -2215,7 +2176,7 @@ int PresetBundle::validate_presets(const std::string& file_name, DynamicPrintCon return VALIDATE_PRESETS_SUCCESS; } -void PresetBundle::remove_users_preset(AppConfig& config, std::map>* my_presets) +void PresetBundle::remove_users_preset(AppConfig &config, std::map> *my_presets) { auto check_removed = [my_presets](Preset &preset) -> bool { if (my_presets == nullptr) return true; @@ -2230,18 +2191,17 @@ void PresetBundle::remove_users_preset(AppConfig& config, std::mapis_user() && it->user_id.compare(preset_folder_user_id) == 0 && check_removed(*it)) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(":printers erase %1%, type %2%, user_id %3%") % it->name % - Preset::get_type_string(it->type) % it->user_id; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(":printers erase %1%, type %2%, user_id %3%") % it->name % Preset::get_type_string(it->type) % it->user_id; if (it->name == printer_selected_preset_name) need_reset_printer_preset = true; it = printers.erase(it); - } else { + } + else { it++; } } @@ -2263,17 +2223,16 @@ void PresetBundle::remove_users_preset(AppConfig& config, std::mapis_user() && it->user_id.compare(preset_folder_user_id) == 0 && check_removed(*it)) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(":prints erase %1%, type %2%, user_id %3%") % it->name % - Preset::get_type_string(it->type) % it->user_id; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(":prints erase %1%, type %2%, user_id %3%")%it->name %Preset::get_type_string(it->type) %it->user_id; if (it->name == selected_print_name) need_reset_print_preset = true; it = prints.erase(it); - } else { + } + else { it++; } } @@ -2285,22 +2244,20 @@ void PresetBundle::remove_users_preset(AppConfig& config, std::mapis_user() && it->user_id.compare(preset_folder_user_id) == 0 && check_removed(*it)) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(":filaments erase %1%, type %2%, user_id %3%") % it->name % - Preset::get_type_string(it->type) % it->user_id; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(":filaments erase %1%, type %2%, user_id %3%")%it->name %Preset::get_type_string(it->type) %it->user_id; if (it->name == selected_filament_name) need_reset_filament_preset = true; it = filaments.erase(it); - } else { + } + else { it++; } } if (need_reset_filament_preset && printers.get_selected_preset().config.has("default_filament_profile")) { - const std::vector& prefered_filament_profiles = - printers.get_selected_preset().config.option("default_filament_profile")->values; + const std::vector& prefered_filament_profiles = printers.get_selected_preset().config.option("default_filament_profile")->values; if (prefered_filament_profiles.size() > 0) filaments.select_preset_by_name(prefered_filament_profiles[0], true); } else { @@ -2310,7 +2267,8 @@ void PresetBundle::remove_users_preset(AppConfig& config, std::mapfilaments.find_preset(filament_presets[i]); if (preset == nullptr) filament_presets[i] = filaments.get_selected_preset_name(); @@ -2328,12 +2286,11 @@ void PresetBundle::clear_printer_hold_aliases() this->printers.m_printer_hold_alias.clear(); } -// BBS: add json related logic, load system presets from json -std::pair PresetBundle::load_system_presets_from_json( - ForwardCompatibilitySubstitutionRule compatibility_rule) +//BBS: add json related logic, load system presets from json +std::pair PresetBundle::load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule) { - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%") % 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; @@ -2342,8 +2299,8 @@ std::pair PresetBundle::load_system_pre 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(); + //BBS: change directory by design + boost::filesystem::path dir = (boost::filesystem::path(data_dir()) / PRESET_SYSTEM_DIR).make_preferred(); if (validation_mode) dir = (boost::filesystem::path(data_dir())).make_preferred(); @@ -2352,10 +2309,10 @@ std::pair PresetBundle::load_system_pre // The vendors below are loaded whole and against each other — the filament // library first, then every other vendor with it as the base — so each parse // is complete enough to be worth caching. - m_generate_vendor_caches = m_generate_vendor_caches || !validation_mode; + m_generate_vendor_caches = m_generate_vendor_caches || ! validation_mode; - PresetsConfigSubstitutions substitutions; - std::string errors_cummulative; + PresetsConfigSubstitutions substitutions; + std::string errors_cummulative; bool first = true; // Sorted, so any duplicate-preset warning below comes out in the same order on // every run. @@ -2375,17 +2332,16 @@ std::pair PresetBundle::load_system_pre } // Step 1: Load ORCA_FILAMENT_LIBRARY into `this` synchronously. - if (!orca_lib_vendor.empty()) { + if (! orca_lib_vendor.empty()) { try { // Match a fresh launch before parsing: hold aliases and the error // counter survive reset(), and would otherwise carry prior-cycle // state into this load. this->clear_printer_hold_aliases(); this->m_errors = 0; - append(substitutions, - this->load_vendor_configs_from_json(dir.string(), orca_lib_vendor, PresetBundle::LoadSystem, compatibility_rule).first); + append(substitutions, this->load_vendor_configs_from_json(dir.string(), orca_lib_vendor, PresetBundle::LoadSystem, compatibility_rule).first); first = false; - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { if (validation_mode) throw err; errors_cummulative += err.what(); @@ -2396,25 +2352,26 @@ std::pair PresetBundle::load_system_pre // Step 2: Load remaining vendors in parallel. Each gets its own // PresetBundle and uses `this` (which contains ORCA_FILAMENT_LIBRARY) // as the base_bundle for cross-bundle inheritance lookups. - std::vector> parallel_bundles(other_vendors.size()); - std::vector parallel_substitutions(other_vendors.size()); - std::vector parallel_errors(other_vendors.size()); + std::vector> parallel_bundles(other_vendors.size()); + std::vector parallel_substitutions(other_vendors.size()); + std::vector parallel_errors(other_vendors.size()); - tbb::parallel_for(tbb::blocked_range(0, other_vendors.size()), [&](const tbb::blocked_range& range) { - for (size_t i = range.begin(); i < range.end(); ++i) { - auto bundle = std::make_unique(); - bundle->set_is_validation_mode(validation_mode); - bundle->set_generate_vendor_caches(m_generate_vendor_caches); - try { - auto result = bundle->load_vendor_configs_from_json(dir.string(), other_vendors[i], PresetBundle::LoadSystem, - compatibility_rule, this); - parallel_substitutions[i] = std::move(result.first); - parallel_bundles[i] = std::move(bundle); - } catch (const std::runtime_error& err) { - parallel_errors[i] = err.what(); + tbb::parallel_for(tbb::blocked_range(0, other_vendors.size()), + [&](const tbb::blocked_range& range) { + for (size_t i = range.begin(); i < range.end(); ++i) { + auto bundle = std::make_unique(); + bundle->set_is_validation_mode(validation_mode); + bundle->set_generate_vendor_caches(m_generate_vendor_caches); + try { + auto result = bundle->load_vendor_configs_from_json( + dir.string(), other_vendors[i], PresetBundle::LoadSystem, compatibility_rule, this); + parallel_substitutions[i] = std::move(result.first); + parallel_bundles[i] = std::move(bundle); + } catch (const std::runtime_error &err) { + parallel_errors[i] = err.what(); + } } - } - }); + }); // Step 3: Sequentially merge the parallel-loaded bundles into `this`. // The merge order is the original vendor order so any duplicate-warning @@ -2433,7 +2390,7 @@ std::pair PresetBundle::load_system_pre const std::string& vendor_name = other_vendors[i]; append(substitutions, std::move(parallel_substitutions[i])); std::vector duplicates = this->merge_presets(std::move(*parallel_bundles[i])); - first = false; + first = false; if (!duplicates.empty()) { errors_cummulative += "Found duplicated settings in vendor " + vendor_name + "'s json file lists: "; for (size_t j = 0; j < duplicates.size(); ++j) { @@ -2447,22 +2404,22 @@ std::pair PresetBundle::load_system_pre } if (first) { - // No config bundle loaded, reset. - this->reset(false); - } + // No config bundle loaded, reset. + this->reset(false); + } - this->update_system_maps(); + this->update_system_maps(); - const auto load_ms = std::chrono::duration_cast(std::chrono::steady_clock::now() - load_t0).count(); + const auto load_ms = std::chrono::duration_cast( + std::chrono::steady_clock::now() - load_t0).count(); BOOST_LOG_TRIVIAL(info) << "PresetBundle: " << vendor_names.size() << " vendor(s) loaded in " << load_ms << " ms"; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, errors_cummulative %1%") % errors_cummulative; + //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); } -std::pair PresetBundle::load_system_models_from_json( - ForwardCompatibilitySubstitutionRule compatibility_rule) +std::pair PresetBundle::load_system_models_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%") % compatibility_rule; if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSystemSilent) @@ -2473,10 +2430,10 @@ std::pair PresetBundle::load_system_mod compatibility_rule = ForwardCompatibilitySubstitutionRule::Disable; // Here the vendor specific read only Config Bundles are stored. - boost::filesystem::path dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); + boost::filesystem::path dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); PresetsConfigSubstitutions substitutions; - std::string errors_cummulative; - for (auto& dir_entry : boost::filesystem::directory_iterator(dir)) { + std::string errors_cummulative; + 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(); @@ -2484,9 +2441,8 @@ std::pair PresetBundle::load_system_mod vendor_name.erase(vendor_name.size() - 5); try { // Load the config bundle, flatten it. - append(substitutions, - load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadVendorOnly, compatibility_rule).first); - } catch (const std::runtime_error& err) { + append(substitutions, load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadVendorOnly, compatibility_rule).first); + } catch (const std::runtime_error &err) { errors_cummulative += err.what(); errors_cummulative += "\n"; } @@ -2497,8 +2453,7 @@ std::pair PresetBundle::load_system_mod return std::make_pair(std::move(substitutions), errors_cummulative); } -std::pair PresetBundle::load_system_filaments_json( - ForwardCompatibilitySubstitutionRule compatibility_rule) +std::pair PresetBundle::load_system_filaments_json(ForwardCompatibilitySubstitutionRule compatibility_rule) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%") % compatibility_rule; if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSystemSilent) @@ -2509,11 +2464,11 @@ std::pair PresetBundle::load_system_fil compatibility_rule = ForwardCompatibilitySubstitutionRule::Disable; // Here the vendor specific read only Config Bundles are stored. - boost::filesystem::path dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); + boost::filesystem::path dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); PresetsConfigSubstitutions substitutions; - std::string errors_cummulative; - bool first = true; - for (auto& dir_entry : boost::filesystem::directory_iterator(dir)) { + std::string errors_cummulative; + bool first = true; + 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(); @@ -2522,31 +2477,23 @@ std::pair PresetBundle::load_system_fil try { 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 | PresetBundle::LoadFilamentOnly, - compatibility_rule) - .first); + append(substitutions, this->load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem | PresetBundle::LoadFilamentOnly, 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 | PresetBundle::LoadFilamentOnly, compatibility_rule) - .first); + append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem | PresetBundle::LoadFilamentOnly, 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 += ", "; + if (i > 0) errors_cummulative += ", "; errors_cummulative += duplicates[i]; } } } - } catch (const std::runtime_error& err) { + } catch (const std::runtime_error &err) { errors_cummulative += err.what(); errors_cummulative += "\n"; } @@ -2562,19 +2509,17 @@ VendorProfile PresetBundle::get_custom_vendor_models() const VendorProfile vendor; vendor.name = PRESET_CUSTOM_VENDOR; vendor.id = PRESET_CUSTOM_VENDOR; - for (auto& preset : printers.get_presets()) { - if (preset.is_system) - continue; - if (printers.get_preset_base(preset) != &preset) - continue; - if (preset.is_default) - continue; - auto model = preset.config.opt_string("printer_model"); - auto variant = preset.config.opt_string("printer_variant"); - auto iter_model = std::find_if(vendor.models.begin(), vendor.models.end(), - [model](VendorProfile::PrinterModel& m) { return m.name == model; }); + for (auto &preset : printers.get_presets()) { + if (preset.is_system) continue; + if (printers.get_preset_base(preset) != &preset) continue; + if (preset.is_default) continue; + auto model = preset.config.opt_string("printer_model"); + auto variant = preset.config.opt_string("printer_variant"); + auto iter_model = std::find_if(vendor.models.begin(), vendor.models.end(), [model](VendorProfile::PrinterModel &m) { + return m.name == model; + }); if (iter_model == vendor.models.end()) { - iter_model = vendor.models.emplace(vendor.models.end(), VendorProfile::PrinterModel{}); + iter_model = vendor.models.emplace(vendor.models.end(), VendorProfile::PrinterModel{}); iter_model->id = model; iter_model->name = model; iter_model->variants = {VendorProfile::PrinterVariant(variant)}; @@ -2586,21 +2531,21 @@ VendorProfile PresetBundle::get_custom_vendor_models() const } // Merge one vendor's presets with the other vendor's presets, report duplicates. -std::vector PresetBundle::merge_presets(PresetBundle&& other) +std::vector PresetBundle::merge_presets(PresetBundle &&other) { this->vendors.insert(other.vendors.begin(), other.vendors.end()); - std::vector duplicate_prints = this->prints.merge_presets(std::move(other.prints), this->vendors); - std::vector duplicate_sla_prints = this->sla_prints.merge_presets(std::move(other.sla_prints), this->vendors); - std::vector duplicate_filaments = this->filaments.merge_presets(std::move(other.filaments), this->vendors); + std::vector duplicate_prints = this->prints .merge_presets(std::move(other.prints), this->vendors); + std::vector duplicate_sla_prints = this->sla_prints .merge_presets(std::move(other.sla_prints), this->vendors); + std::vector duplicate_filaments = this->filaments .merge_presets(std::move(other.filaments), this->vendors); std::vector duplicate_sla_materials = this->sla_materials.merge_presets(std::move(other.sla_materials), this->vendors); - std::vector duplicate_printers = this->printers.merge_presets(std::move(other.printers), this->vendors); - append(this->obsolete_presets.prints, std::move(other.obsolete_presets.prints)); - append(this->obsolete_presets.sla_prints, std::move(other.obsolete_presets.sla_prints)); - append(this->obsolete_presets.filaments, std::move(other.obsolete_presets.filaments)); + std::vector duplicate_printers = this->printers .merge_presets(std::move(other.printers), this->vendors); + append(this->obsolete_presets.prints, std::move(other.obsolete_presets.prints)); + append(this->obsolete_presets.sla_prints, std::move(other.obsolete_presets.sla_prints)); + append(this->obsolete_presets.filaments, std::move(other.obsolete_presets.filaments)); append(this->obsolete_presets.sla_materials, std::move(other.obsolete_presets.sla_materials)); - append(this->obsolete_presets.printers, std::move(other.obsolete_presets.printers)); - append(duplicate_prints, std::move(duplicate_sla_prints)); - append(duplicate_prints, std::move(duplicate_filaments)); + append(this->obsolete_presets.printers, std::move(other.obsolete_presets.printers)); + append(duplicate_prints, std::move(duplicate_sla_prints)); + append(duplicate_prints, std::move(duplicate_filaments)); append(duplicate_prints, std::move(duplicate_sla_materials)); append(duplicate_prints, std::move(duplicate_printers)); m_errors += other.m_errors; @@ -2609,22 +2554,22 @@ std::vector PresetBundle::merge_presets(PresetBundle&& other) void PresetBundle::update_system_maps() { - this->prints.update_map_system_profile_renamed(); - this->sla_prints.update_map_system_profile_renamed(); - this->filaments.update_map_system_profile_renamed(); + this->prints .update_map_system_profile_renamed(); + this->sla_prints .update_map_system_profile_renamed(); + this->filaments .update_map_system_profile_renamed(); this->sla_materials.update_map_system_profile_renamed(); - this->printers.update_map_system_profile_renamed(); + this->printers .update_map_system_profile_renamed(); - this->prints.update_map_alias_to_profile_name(); - this->sla_prints.update_map_alias_to_profile_name(); - this->filaments.update_map_alias_to_profile_name(); + this->prints .update_map_alias_to_profile_name(); + 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->printers.update_map_alias_to_profile_name(); + this->printers .update_map_alias_to_profile_name(); this->filaments.update_library_profile_excluded_from(); } -static inline std::string remove_ini_suffix(const std::string& name) +static inline std::string remove_ini_suffix(const std::string &name) { std::string out = name; if (boost::iends_with(out, ".ini")) @@ -2635,14 +2580,14 @@ static inline std::string remove_ini_suffix(const std::string& name) // Set the "enabled" flag for printer vendors, printer models and printer variants // based on the user configuration. // If the "vendor" section is missing, enable all models and variants of the particular vendor. -void PresetBundle::load_installed_printers(const AppConfig& config) +void PresetBundle::load_installed_printers(const AppConfig &config) { - this->update_system_maps(); - for (auto& preset : printers) + this->update_system_maps(); + for (auto &preset : printers) preset.set_visible_from_appconfig(config); } -const std::string& PresetBundle::get_preset_name_by_alias(const Preset::Type& preset_type, const std::string& alias) const +const std::string& PresetBundle::get_preset_name_by_alias( const Preset::Type& preset_type, const std::string& alias) const { if (preset_type == Preset::TYPE_INVALID) return alias; @@ -2651,21 +2596,21 @@ const std::string& PresetBundle::get_preset_name_by_alias(const Preset::Type& pr preset_type == Preset::TYPE_SLA_PRINT ? sla_prints : preset_type == Preset::TYPE_FILAMENT ? filaments : preset_type == Preset::TYPE_PRINTER ? printers : - sla_materials; + sla_materials; return presets.get_preset_name_by_alias(alias); } -// BBS: get filament required hrc by filament type +//BBS: get filament required hrc by filament type const int PresetBundle::get_required_hrc_by_filament_type(const std::string& filament_type) const { - static std::unordered_map filament_type_to_hrc; + static std::unordered_mapfilament_type_to_hrc; if (filament_type_to_hrc.empty()) { for (auto iter = filaments.m_presets.begin(); iter != filaments.m_presets.end(); iter++) { if (iter->vendor && iter->vendor->id == "BBL") { if (iter->config.has("filament_type") && iter->config.has("required_nozzle_HRC")) { - auto type = iter->config.opt_string("filament_type", 0); - auto hrc = iter->config.opt_int("required_nozzle_HRC", 0); + auto type = iter->config.opt_string("filament_type", 0); + auto hrc = iter->config.opt_int("required_nozzle_HRC", 0); filament_type_to_hrc[type] = hrc; } } @@ -2678,17 +2623,14 @@ const int PresetBundle::get_required_hrc_by_filament_type(const std::string& fil return 0; } -// BBS: add project embedded preset logic -void PresetBundle::save_changes_for_preset(const std::string& new_name, - Preset::Type type, - const std::vector& unselected_options, - bool save_to_project) +//BBS: add project embedded preset logic +void PresetBundle::save_changes_for_preset(const std::string& new_name, Preset::Type type, + const std::vector& unselected_options, bool save_to_project) { - PresetCollection& presets = type == Preset::TYPE_PRINT ? prints : - type == Preset::TYPE_SLA_PRINT ? sla_prints : - type == Preset::TYPE_FILAMENT ? filaments : - type == Preset::TYPE_SLA_MATERIAL ? sla_materials : - printers; + PresetCollection& presets = type == Preset::TYPE_PRINT ? prints : + type == Preset::TYPE_SLA_PRINT ? sla_prints : + type == Preset::TYPE_FILAMENT ? filaments : + type == Preset::TYPE_SLA_MATERIAL ? sla_materials : printers; // if we want to save just some from selected options if (!unselected_options.empty()) { @@ -2697,12 +2639,11 @@ void PresetBundle::save_changes_for_preset(const std::string& new_name, } // Save the preset into Slic3r::data_dir / presets / section_name / preset_name.ini - // BBS: add project embedded preset logic - // presets.save_current_preset(new_name); + //BBS: add project embedded preset logic + //presets.save_current_preset(new_name); presets.save_current_preset(new_name, false, save_to_project); // Mark the print & filament enabled if they are compatible with the currently selected preset. - // If saving the preset changes compatibility with other presets, keep the now incompatible dependent presets selected, however with a - // "red flag" icon showing that they are no more compatible. + // If saving the preset changes compatibility with other presets, keep the now incompatible dependent presets selected, however with a "red flag" icon showing that they are no more compatible. update_compatible(PresetSelectCompatibleType::Never); if (type == Preset::TYPE_FILAMENT) { @@ -2711,90 +2652,87 @@ void PresetBundle::save_changes_for_preset(const std::string& new_name, } } -void PresetBundle::load_installed_filaments(AppConfig& config) +void PresetBundle::load_installed_filaments(AppConfig &config) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": enter, printer size %1%") % printers.size(); - // if (! config.has_section(AppConfig::SECTION_FILAMENTS) - // || config.get_section(AppConfig::SECTION_FILAMENTS).empty()) { - // Compatibility with the PrusaSlicer 2.1.1 and older, where the filament profiles were not installable yet. - // Find all filament profiles, which are compatible with installed printers, and act as if these filament profiles - // were installed. - std::unordered_set compatible_filaments; - for (const Preset& printer : printers) - if (printer.is_visible && printer.printer_technology() == ptFFF && printer.vendor && (!printer.vendor->models.empty())) { - bool add_default_materials = true; - if (config.has_section(AppConfig::SECTION_FILAMENTS)) { - const std::map& installed_filament = config.get_section(AppConfig::SECTION_FILAMENTS); - for (auto filament_iter : installed_filament) { - Preset* filament = filaments.find_preset(filament_iter.first, false, true); - if (filament && is_compatible_with_printer(PresetWithVendorProfile(*filament, filament->vendor), - PresetWithVendorProfile(printer, printer.vendor))) { - // already has compatible filament - add_default_materials = false; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": printer %1% vendor %2% already has default filament %3%") % - printer.name % printer.vendor % filament_iter.first; - break; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": enter, printer size %1%")%printers.size(); + //if (! config.has_section(AppConfig::SECTION_FILAMENTS) + // || config.get_section(AppConfig::SECTION_FILAMENTS).empty()) { + // Compatibility with the PrusaSlicer 2.1.1 and older, where the filament profiles were not installable yet. + // Find all filament profiles, which are compatible with installed printers, and act as if these filament profiles + // were installed. + std::unordered_set compatible_filaments; + for (const Preset &printer : printers) + if (printer.is_visible && printer.printer_technology() == ptFFF && printer.vendor && (!printer.vendor->models.empty())) { + bool add_default_materials = true; + if (config.has_section(AppConfig::SECTION_FILAMENTS)) + { + const std::map& installed_filament = config.get_section(AppConfig::SECTION_FILAMENTS); + for (auto filament_iter : installed_filament) + { + Preset* filament = filaments.find_preset(filament_iter.first, false, true); + if (filament && is_compatible_with_printer(PresetWithVendorProfile(*filament, filament->vendor), PresetWithVendorProfile(printer, printer.vendor))) + { + + //already has compatible filament + add_default_materials = false; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": printer %1% vendor %2% already has default filament %3%")%printer.name %printer.vendor %filament_iter.first; + break; + } } } - } - if (!add_default_materials) - continue; + if (!add_default_materials) + continue; - const VendorProfile::PrinterModel* printer_model = PresetUtils::system_printer_model(printer); - if (!printer_model) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": can not find printer_model for printer %1%") % printer.name; - continue; + const VendorProfile::PrinterModel *printer_model = PresetUtils::system_printer_model(printer); + if (!printer_model) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": can not find printer_model for printer %1%")%printer.name; + continue; + } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": printer %1% vendor %2% don't have filament visible, will add %3% default filaments")%printer.name %printer.vendor %printer_model->default_materials.size(); + for (auto default_filament: printer_model->default_materials) + { + Preset* filament = filaments.find_preset(default_filament, false, true); + if (filament && filament->is_system) + compatible_filaments.insert(filament); + } + //const PresetWithVendorProfile printer_with_vendor_profile = printers.get_preset_with_vendor_profile(printer); + //for (const Preset &filament : filaments) + // if (filament.is_system && is_compatible_with_printer(filaments.get_preset_with_vendor_profile(filament), printer_with_vendor_profile)) + // compatible_filaments.insert(&filament); } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format( - ": printer %1% vendor %2% don't have filament visible, will add %3% default filaments") % - printer.name % printer.vendor % printer_model->default_materials.size(); - for (auto default_filament : printer_model->default_materials) { - Preset* filament = filaments.find_preset(default_filament, false, true); - if (filament && filament->is_system) - compatible_filaments.insert(filament); - } - // const PresetWithVendorProfile printer_with_vendor_profile = printers.get_preset_with_vendor_profile(printer); - // for (const Preset &filament : filaments) - // if (filament.is_system && is_compatible_with_printer(filaments.get_preset_with_vendor_profile(filament), - // printer_with_vendor_profile)) - // compatible_filaments.insert(&filament); + // and mark these filaments as installed, therefore this code will not be executed at the next start of the application. + for (const auto &filament: compatible_filaments) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": set filament %1% to visible by default")%filament->name; + config.set(AppConfig::SECTION_FILAMENTS, filament->name, "true"); } - // and mark these filaments as installed, therefore this code will not be executed at the next start of the application. - for (const auto& filament : compatible_filaments) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": set filament %1% to visible by default") % filament->name; - config.set(AppConfig::SECTION_FILAMENTS, filament->name, "true"); - } //} - for (auto& preset : filaments) + for (auto &preset : filaments) preset.set_visible_from_appconfig(config); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": exit."); } -void PresetBundle::load_installed_sla_materials(AppConfig& config) +void PresetBundle::load_installed_sla_materials(AppConfig &config) { - if (!config.has_section(AppConfig::SECTION_MATERIALS)) { + if (! config.has_section(AppConfig::SECTION_MATERIALS)) { std::unordered_set comp_sla_materials; - // Compatibility with the PrusaSlicer 2.1.1 and older, where the SLA material profiles were not installable yet. - // Find all SLA material profiles, which are compatible with installed printers, and act as if these SLA material profiles - // were installed. - for (const Preset& printer : printers) + // Compatibility with the PrusaSlicer 2.1.1 and older, where the SLA material profiles were not installable yet. + // Find all SLA material profiles, which are compatible with installed printers, and act as if these SLA material profiles + // were installed. + for (const Preset &printer : printers) if (printer.is_visible && printer.printer_technology() == ptSLA) { - const PresetWithVendorProfile printer_with_vendor_profile = printers.get_preset_with_vendor_profile(printer); - for (const Preset& material : sla_materials) - if (material.is_system && - is_compatible_with_printer(sla_materials.get_preset_with_vendor_profile(material), printer_with_vendor_profile)) - comp_sla_materials.insert(&material); - } - // and mark these SLA materials as installed, therefore this code will not be executed at the next start of the application. - for (const auto& material : comp_sla_materials) + const PresetWithVendorProfile printer_with_vendor_profile = printers.get_preset_with_vendor_profile(printer); + for (const Preset &material : sla_materials) + if (material.is_system && is_compatible_with_printer(sla_materials.get_preset_with_vendor_profile(material), printer_with_vendor_profile)) + comp_sla_materials.insert(&material); + } + // and mark these SLA materials as installed, therefore this code will not be executed at the next start of the application. + for (const auto &material: comp_sla_materials) config.set(AppConfig::SECTION_MATERIALS, material->name, "true"); } - for (auto& preset : sla_materials) + for (auto &preset : sla_materials) preset.set_visible_from_appconfig(config); } @@ -2805,10 +2743,11 @@ void PresetBundle::load_installed_sla_materials(AppConfig& config) // indices into exactly that list. Missing keys clear the arrays, so one printer never inherits // another's mixes; fallback_to_global also reads the shared "presets" keys an older config // layout used, which export_selections drops on the next save. -static void load_mixed_filament_settings( - DynamicPrintConfig& project_config, AppConfig& config, const std::string& printer_name, size_t n_filaments, bool fallback_to_global) +static void load_mixed_filament_settings(DynamicPrintConfig &project_config, AppConfig &config, + const std::string &printer_name, size_t n_filaments, + bool fallback_to_global) { - auto raw_value = [&](const char* key, bool& found) -> std::string { + auto raw_value = [&](const char *key, bool &found) -> std::string { if (config.has_printer_setting(printer_name, key)) { found = true; return config.get_printer_setting(printer_name, key); @@ -2821,22 +2760,21 @@ static void load_mixed_filament_settings( return std::string{}; }; std::vector parts; - auto load_bools = [&](const char* key) { - auto& vals = project_config.option(key)->values; + auto load_bools = [&](const char *key) { + auto &vals = project_config.option(key)->values; vals.clear(); - bool found = false; + bool found = false; const std::string s = raw_value(key, found); if (found && !s.empty()) { boost::algorithm::split(parts, s, boost::algorithm::is_any_of(",")); - for (const auto& p : parts) - vals.push_back(p == "1"); + for (const auto &p : parts) vals.push_back(p == "1"); } vals.resize(n_filaments, false); }; - auto load_strings = [&](const char* key) { - auto& vals = project_config.option(key)->values; + auto load_strings = [&](const char *key) { + auto &vals = project_config.option(key)->values; vals.clear(); - bool found = false; + bool found = false; const std::string s = raw_value(key, found); if (found && !s.empty()) { boost::algorithm::split(parts, s, boost::algorithm::is_any_of("|")); @@ -2855,9 +2793,9 @@ static void load_mixed_filament_settings( // The gradient curve is the one array whose values contain '|' themselves (it separates the // control points), so it is stored C-style escaped rather than '|'-joined. { - auto& vals = project_config.option("filament_mixed_gradient_curve")->values; + auto &vals = project_config.option("filament_mixed_gradient_curve")->values; vals.clear(); - bool found = false; + bool found = false; const std::string s = raw_value("filament_mixed_gradient_curve", found); if (found && !s.empty()) { std::vector curves; @@ -2871,12 +2809,12 @@ static void load_mixed_filament_settings( } } -void PresetBundle::update_selections(AppConfig& config) +void PresetBundle::update_selections(AppConfig &config) { - std::string initial_printer_profile_name = printers.get_selected_preset_name(); + std::string initial_printer_profile_name = printers.get_selected_preset_name(); // Orca: load from orca_presets - std::string initial_print_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_PRINT_NAME); - std::string initial_filament_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_FILAMENT_NAME); + std::string initial_print_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_PRINT_NAME); + std::string initial_filament_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_FILAMENT_NAME); // Selects the profiles, which were selected at the last application close. prints.select_preset_by_name_strict(initial_print_profile_name); @@ -2886,8 +2824,8 @@ void PresetBundle::update_selections(AppConfig& config) // Load it even if the current printer technology is SLA. // The possibly excessive filament names will be later removed with this->update_multi_material_filament_presets() // once the FFF technology gets selected. - this->filament_presets = {filaments.get_selected_preset_name()}; - for (unsigned int i = 1; i < 1000; ++i) { + this->filament_presets = { filaments.get_selected_preset_name() }; + for (unsigned int i = 1; i < 1000; ++ i) { char name[64]; sprintf(name, "filament_%02u", i); auto f_name = config.get_printer_setting(initial_printer_profile_name, name); @@ -2908,18 +2846,14 @@ void PresetBundle::update_selections(AppConfig& config) std::vector multi_filament_colors; if (config.has_printer_setting(initial_printer_profile_name, "filament_multi_colors")) { - boost::algorithm::split(multi_filament_colors, config.get_printer_setting(initial_printer_profile_name, "filament_multi_colors"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(multi_filament_colors, config.get_printer_setting(initial_printer_profile_name, "filament_multi_colors"), boost::algorithm::is_any_of(",")); } - if (multi_filament_colors.size() == 0) - project_config.option("filament_multi_colour")->values = filament_colors; - else - project_config.option("filament_multi_colour")->values = multi_filament_colors; + if (multi_filament_colors.size() == 0) project_config.option("filament_multi_colour")->values = filament_colors; + else project_config.option("filament_multi_colour")->values = multi_filament_colors; std::vector filament_color_types; if (config.has_printer_setting(initial_printer_profile_name, "filament_color_types")) { - boost::algorithm::split(filament_color_types, config.get_printer_setting(initial_printer_profile_name, "filament_color_types"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(filament_color_types, config.get_printer_setting(initial_printer_profile_name, "filament_color_types"), boost::algorithm::is_any_of(",")); } filament_color_types.resize(filament_presets.size(), "1"); project_config.option("filament_colour_type")->values = filament_color_types; @@ -2935,32 +2869,25 @@ void PresetBundle::update_selections(AppConfig& config) std::vector extruder_ams_count_str; if (config.has_printer_setting(initial_printer_profile_name, "extruder_ams_count")) { - boost::algorithm::split(extruder_ams_count_str, config.get_printer_setting(initial_printer_profile_name, "extruder_ams_count"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(extruder_ams_count_str, config.get_printer_setting(initial_printer_profile_name, "extruder_ams_count"), boost::algorithm::is_any_of(",")); } this->extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str); std::vector matrix; if (config.has_printer_setting(initial_printer_profile_name, "flush_volumes_matrix")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_matrix"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_matrix"), boost::algorithm::is_any_of("|")); auto flush_volumes_matrix = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_volumes_matrix")->values = std::vector(flush_volumes_matrix.begin(), - flush_volumes_matrix.end()); + project_config.option("flush_volumes_matrix")->values = std::vector(flush_volumes_matrix.begin(), flush_volumes_matrix.end()); } if (config.has_printer_setting(initial_printer_profile_name, "flush_volumes_vector")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_vector"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_vector"), boost::algorithm::is_any_of("|")); auto flush_volumes_vector = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_volumes_vector")->values = std::vector(flush_volumes_vector.begin(), - flush_volumes_vector.end()); + project_config.option("flush_volumes_vector")->values = std::vector(flush_volumes_vector.begin(), flush_volumes_vector.end()); } if (config.has_printer_setting(initial_printer_profile_name, "flush_multiplier")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_multiplier"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_multiplier"), boost::algorithm::is_any_of("|")); auto flush_multipliers = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_multiplier")->values = std::vector(flush_multipliers.begin(), - flush_multipliers.end()); + project_config.option("flush_multiplier")->values = std::vector(flush_multipliers.begin(), flush_multipliers.end()); } // No global fallback here: on a printer change the legacy shared keys describe another // printer's filament list, so absent per-printer keys must clear the mixes, not revive them. @@ -2974,27 +2901,26 @@ void PresetBundle::update_selections(AppConfig& config) this->update_multi_material_filament_presets(); std::string first_visible_filament_name; - for (auto& fp : filament_presets) { + for (auto & fp : filament_presets) { // Orca: also match the ORCA_DEFAULT_FILAMENT_PLACEHOLDER placeholder. update_compatible_internal // iterates from m_num_default_presets, so the placeholder's is_compatible flag // stays true and the not-found/visible/compatible predicate alone would miss it. - if (auto it = filaments.find_preset_internal(fp); - fp == ORCA_DEFAULT_FILAMENT_PLACEHOLDER || it == filaments.end() || !it->is_visible || !it->is_compatible) { + if (auto it = filaments.find_preset_internal(fp); fp == ORCA_DEFAULT_FILAMENT_PLACEHOLDER || it == filaments.end() || !it->is_visible || !it->is_compatible) { if (first_visible_filament_name.empty()) first_visible_filament_name = filaments.first_compatible().name; fp = first_visible_filament_name; } } + } // Load selections (current print, current filaments, current printer) from config.ini // This is done on application start up or after updates are applied. -void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& preferred_selection /* = PresetPreferences()*/) +void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& preferred_selection/* = PresetPreferences()*/) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": enter, preferred printer_model_id %1%") % preferred_selection.printer_model_id; - // Update visibility of presets based on application vendor / model / variant configuration. - this->load_installed_printers(config); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": enter, preferred printer_model_id %1%")%preferred_selection.printer_model_id; + // Update visibility of presets based on application vendor / model / variant configuration. + this->load_installed_printers(config); // Update visibility of filament and sla material presets this->load_installed_filaments(config); @@ -3003,7 +2929,7 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p // Parse the initial print / filament / printer profile names. // std::string initial_sla_print_profile_name = remove_ini_suffix(config.get("presets", PRESET_SLA_PRINT_NAME)); // std::string initial_sla_material_profile_name = remove_ini_suffix(config.get("presets", PRESET_SLA_MATERIALS_NAME)); - std::string initial_printer_profile_name = remove_ini_suffix(config.get("presets", PRESET_PRINTER_NAME)); + std::string initial_printer_profile_name = remove_ini_suffix(config.get("presets", PRESET_PRINTER_NAME)); // Activate print / filament / printer profiles from either the config, // or from the preferred_model_id suggestion passed in by ConfigWizard. @@ -3011,26 +2937,25 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p // Do not select alternate profiles for the print / filament profiles as those presets // will be selected by the following call of this->update_compatible(PresetSelectCompatibleType::Always). - const Preset* initial_printer = printers.find_preset(initial_printer_profile_name); + const Preset *initial_printer = printers.find_preset(initial_printer_profile_name); // If executed due to a Config Wizard update, preferred_printer contains the first newly installed printer, otherwise nullptr. - const Preset* preferred_printer = printers.find_system_preset_by_model_and_variant(preferred_selection.printer_model_id, - preferred_selection.printer_variant); + const Preset *preferred_printer = printers.find_system_preset_by_model_and_variant(preferred_selection.printer_model_id, preferred_selection.printer_variant); printers.select_preset_by_name(preferred_printer ? preferred_printer->name : initial_printer_profile_name, true); CNumericLocalesSetter locales_setter; // Orca: load from orca_presets // const auto os_presets = config.get_machine_settings(initial_printer_profile_name); - std::string initial_print_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_PRINT_NAME); - std::string initial_filament_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_FILAMENT_NAME); + std::string initial_print_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_PRINT_NAME); + std::string initial_filament_profile_name = config.get_printer_setting(initial_printer_profile_name, PRESET_FILAMENT_NAME); - // BBS: set default print/filament profiles to BBL's default setting - if (preferred_printer) { + //BBS: set default print/filament profiles to BBL's default setting + if (preferred_printer) + { const std::string& prefered_print_profile = preferred_printer->config.opt_string("default_print_profile"); if ((!initial_print_profile_name.compare("Default Setting")) && (prefered_print_profile.size() > 0)) initial_print_profile_name = prefered_print_profile; - const std::vector& prefered_filament_profiles = - preferred_printer->config.option("default_filament_profile")->values; + const std::vector& prefered_filament_profiles = preferred_printer->config.option("default_filament_profile")->values; if ((!initial_filament_profile_name.compare(ORCA_DEFAULT_FILAMENT_PLACEHOLDER)) && (prefered_filament_profiles.size() > 0)) { // Check if preferred filament is visible const Preset* preferred_preset = this->filaments.find_preset(prefered_filament_profiles[0], false); @@ -3044,15 +2969,15 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p // Selects the profile, leaves it to -1 if the initial profile name is empty or if it was not found. prints.select_preset_by_name_strict(initial_print_profile_name); filaments.select_preset_by_name_strict(initial_filament_profile_name); - // sla_prints.select_preset_by_name_strict(initial_sla_print_profile_name); + // sla_prints.select_preset_by_name_strict(initial_sla_print_profile_name); // sla_materials.select_preset_by_name_strict(initial_sla_material_profile_name); // Load the names of the other filament profiles selected for a multi-material printer. // Load it even if the current printer technology is SLA. // The possibly excessive filament names will be later removed with this->update_multi_material_filament_presets() // once the FFF technology gets selected. - this->filament_presets = {filaments.get_selected_preset_name()}; - for (unsigned int i = 1; i < 1000; ++i) { + this->filament_presets = { filaments.get_selected_preset_name() }; + for (unsigned int i = 1; i < 1000; ++ i) { char name[64]; sprintf(name, "filament_%02u", i); auto f_name = config.get_printer_setting(initial_printer_profile_name, name); @@ -3074,18 +2999,14 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p std::vector multi_filament_colors; if (config.has_printer_setting(initial_printer_profile_name, "filament_multi_colors")) { - boost::algorithm::split(multi_filament_colors, config.get_printer_setting(initial_printer_profile_name, "filament_multi_colors"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(multi_filament_colors, config.get_printer_setting(initial_printer_profile_name, "filament_multi_colors"), boost::algorithm::is_any_of(",")); } - if (multi_filament_colors.size() == 0) - project_config.option("filament_multi_colour")->values = filament_colors; - else - project_config.option("filament_multi_colour")->values = multi_filament_colors; + if (multi_filament_colors.size() == 0) project_config.option("filament_multi_colour")->values = filament_colors; + else project_config.option("filament_multi_colour")->values = multi_filament_colors; std::vector filament_color_types; if (config.has_printer_setting(initial_printer_profile_name, "filament_color_types")) { - boost::algorithm::split(filament_color_types, config.get_printer_setting(initial_printer_profile_name, "filament_color_types"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(filament_color_types, config.get_printer_setting(initial_printer_profile_name, "filament_color_types"), boost::algorithm::is_any_of(",")); } filament_color_types.resize(filament_presets.size(), "1"); project_config.option("filament_colour_type")->values = filament_color_types; @@ -3101,32 +3022,25 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p std::vector extruder_ams_count_str; if (config.has_printer_setting(initial_printer_profile_name, "extruder_ams_count")) { - boost::algorithm::split(extruder_ams_count_str, config.get_printer_setting(initial_printer_profile_name, "extruder_ams_count"), - boost::algorithm::is_any_of(",")); + boost::algorithm::split(extruder_ams_count_str, config.get_printer_setting(initial_printer_profile_name, "extruder_ams_count"), boost::algorithm::is_any_of(",")); } this->extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str); std::vector matrix; if (config.has_printer_setting(initial_printer_profile_name, "flush_volumes_matrix")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_matrix"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_matrix"), boost::algorithm::is_any_of("|")); auto flush_volumes_matrix = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_volumes_matrix")->values = std::vector(flush_volumes_matrix.begin(), - flush_volumes_matrix.end()); + project_config.option("flush_volumes_matrix")->values = std::vector(flush_volumes_matrix.begin(), flush_volumes_matrix.end()); } if (config.has_printer_setting(initial_printer_profile_name, "flush_volumes_vector")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_vector"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_volumes_vector"), boost::algorithm::is_any_of("|")); auto flush_volumes_vector = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_volumes_vector")->values = std::vector(flush_volumes_vector.begin(), - flush_volumes_vector.end()); + project_config.option("flush_volumes_vector")->values = std::vector(flush_volumes_vector.begin(), flush_volumes_vector.end()); } if (config.has_printer_setting(initial_printer_profile_name, "flush_multiplier")) { - boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_multiplier"), - boost::algorithm::is_any_of("|")); + boost::algorithm::split(matrix, config.get_printer_setting(initial_printer_profile_name, "flush_multiplier"), boost::algorithm::is_any_of("|")); auto flush_multipliers = matrix | boost::adaptors::transformed(boost::lexical_cast); - project_config.option("flush_multiplier")->values = std::vector(flush_multipliers.begin(), - flush_multipliers.end()); + project_config.option("flush_multiplier")->values = std::vector(flush_multipliers.begin(), flush_multipliers.end()); } load_mixed_filament_settings(project_config, config, initial_printer_profile_name, filament_presets.size(), true); @@ -3138,17 +3052,17 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p this->update_multi_material_filament_presets(); if (initial_printer != nullptr && (preferred_printer == nullptr || initial_printer == preferred_printer)) { - // Don't run the following code, as we want to activate default filament / SLA material profiles when installing and selecting a new - // printer. Only run this code if just a filament / SLA material was installed by Config Wizard for an active Printer. + // Don't run the following code, as we want to activate default filament / SLA material profiles when installing and selecting a new printer. + // Only run this code if just a filament / SLA material was installed by Config Wizard for an active Printer. auto printer_technology = printers.get_selected_preset().printer_technology(); - if (printer_technology == ptFFF && !preferred_selection.filament.empty()) { + if (printer_technology == ptFFF && ! preferred_selection.filament.empty()) { std::string preferred_preset_name = get_preset_name_by_alias(Preset::Type::TYPE_FILAMENT, preferred_selection.filament); if (auto it = filaments.find_preset_internal(preferred_preset_name); - it != filaments.end() && (it->name == preferred_preset_name) && it->is_visible && it->is_compatible) { + it != filaments.end() && (it->name == preferred_preset_name ) && it->is_visible && it->is_compatible) { filaments.select_preset_by_name_strict(preferred_preset_name); this->filament_presets.front() = filaments.get_selected_preset_name(); } - } else if (printer_technology == ptSLA && !preferred_selection.sla_material.empty()) { + } else if (printer_technology == ptSLA && ! preferred_selection.sla_material.empty()) { std::string preferred_preset_name = get_preset_name_by_alias(Preset::Type::TYPE_SLA_MATERIAL, preferred_selection.sla_material); if (auto it = sla_materials.find_preset_internal(preferred_preset_name); it != sla_materials.end() && it->is_visible && it->is_compatible) @@ -3157,18 +3071,17 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p } std::string first_visible_filament_name; - for (auto& fp : filament_presets) { + for (auto & fp : filament_presets) { // Orca: also match the ORCA_DEFAULT_FILAMENT_PLACEHOLDER placeholder — see update_selections. - if (auto it = filaments.find_preset_internal(fp); - fp == ORCA_DEFAULT_FILAMENT_PLACEHOLDER || it == filaments.end() || !it->is_visible || !it->is_compatible) { + if (auto it = filaments.find_preset_internal(fp); fp == ORCA_DEFAULT_FILAMENT_PLACEHOLDER || it == filaments.end() || !it->is_visible || !it->is_compatible) { if (first_visible_filament_name.empty()) first_visible_filament_name = filaments.first_compatible().name; fp = first_visible_filament_name; } } - const Preset& current_printer = printers.get_selected_preset(); - const Preset* base_printer = printers.get_preset_base(current_printer); + const Preset& current_printer = printers.get_selected_preset(); + const Preset* base_printer = printers.get_preset_base(current_printer); bool use_default_nozzle_volume_type = true; if (base_printer) { std::string prev_nozzle_volume_type = config.get_nozzle_volume_types_from_config(base_printer->name); @@ -3181,12 +3094,11 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p } if (use_default_nozzle_volume_type) { - project_config.option("nozzle_volume_type")->values = - current_printer.config.option("default_nozzle_volume_type")->values; + project_config.option("nozzle_volume_type")->values = current_printer.config.option("default_nozzle_volume_type")->values; } else { // Orca: make sure `nozzle_volume_type` not shorter than `default_nozzle_volume_type`, otherwise we got array out of bound access // later in `Tab::switch_excluder` - auto& opt = project_config.option("nozzle_volume_type")->values; + auto& opt = project_config.option("nozzle_volume_type")->values; const auto& opt_default = current_printer.config.option("default_nozzle_volume_type")->values; while (opt.size() < opt_default.size()) { opt.emplace_back(opt_default[opt.size()]); @@ -3200,17 +3112,15 @@ void PresetBundle::load_selections(AppConfig& config, const PresetPreferences& p if (!initial_physical_printer_name.empty()) physical_printers.select_printer(initial_physical_printer_name); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": finished, preferred printer_model_id %1%") % preferred_selection.printer_model_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": finished, preferred printer_model_id %1%")%preferred_selection.printer_model_id; } // Export selections (current print, current filaments, current printer) into config.ini // BBS: change directories by design -void PresetBundle::export_selections(AppConfig& config) +void PresetBundle::export_selections(AppConfig &config) { - assert(this->printers.get_edited_preset().printer_technology() != ptFFF || filament_presets.size() >= 1); - // assert(this->printers.get_edited_preset().printer_technology() != ptFFF || filament_presets.size() > 1 || - // filaments.get_selected_preset_name() == filament_presets.front()); + assert(this->printers.get_edited_preset().printer_technology() != ptFFF || filament_presets.size() >= 1); + //assert(this->printers.get_edited_preset().printer_technology() != ptFFF || filament_presets.size() > 1 || filaments.get_selected_preset_name() == filament_presets.front()); config.clear_section("presets"); auto printer_name = printers.get_selected_preset_name(); config.set("presets", PRESET_PRINTER_NAME, printer_name); @@ -3227,7 +3137,7 @@ void PresetBundle::export_selections(AppConfig& config) config.clear_printer_settings(printer_name); config.set_printer_setting(printer_name, PRESET_PRINTER_NAME, printer_name); config.set_printer_setting(printer_name, PRESET_PRINT_NAME, prints.get_selected_preset_name()); - config.set_printer_setting(printer_name, PRESET_FILAMENT_NAME, filament_presets.front()); + config.set_printer_setting(printer_name, PRESET_FILAMENT_NAME, filament_presets.front()); config.set_printer_setting(printer_name, "curr_bed_type", config.get("curr_bed_type")); for (unsigned i = 1; i < filament_presets.size(); ++i) { char name[64]; @@ -3237,75 +3147,68 @@ void PresetBundle::export_selections(AppConfig& config) } // Load project config data into app config CNumericLocalesSetter locales_setter; - std::string filament_colors = boost::algorithm::join(project_config.option("filament_colour")->values, ","); + std::string filament_colors = boost::algorithm::join(project_config.option("filament_colour")->values, ","); config.set_printer_setting(printer_name, "filament_colors", filament_colors); // Load filament multi color data into app config - std::string filament_multi_colors = boost::algorithm::join(project_config.option("filament_multi_colour")->values, - ","); + std::string filament_multi_colors = boost::algorithm::join(project_config.option("filament_multi_colour")->values, ","); config.set_printer_setting(printer_name, "filament_multi_colors", filament_multi_colors); // Load filament color type data into app config - std::string filament_color_types = boost::algorithm::join(project_config.option("filament_colour_type")->values, - ","); + std::string filament_color_types = boost::algorithm::join(project_config.option("filament_colour_type")->values, ","); config.set_printer_setting(printer_name, "filament_color_types", filament_color_types); // Load ams counts data into app config - std::string extruder_ams_count_str = boost::algorithm::join(save_extruder_ams_count_to_string(this->extruder_ams_counts), ","); + std::string extruder_ams_count_str = boost::algorithm::join(save_extruder_ams_count_to_string(this->extruder_ams_counts), ","); config.set_printer_setting(printer_name, "extruder_ams_count", extruder_ams_count_str); std::string flush_volumes_matrix = boost::algorithm::join(project_config.option("flush_volumes_matrix")->values | - boost::adaptors::transformed( - static_cast(std::to_string)), - "|"); + boost::adaptors::transformed(static_cast(std::to_string)), + "|"); config.set_printer_setting(printer_name, "flush_volumes_matrix", flush_volumes_matrix); std::string flush_volumes_vector = boost::algorithm::join(project_config.option("flush_volumes_vector")->values | - boost::adaptors::transformed( - static_cast(std::to_string)), - "|"); + boost::adaptors::transformed(static_cast(std::to_string)), + "|"); config.set_printer_setting(printer_name, "flush_volumes_vector", flush_volumes_vector); + std::string flush_multiplier_str = boost::algorithm::join(project_config.option("flush_multiplier")->values | - boost::adaptors::transformed( - static_cast(std::to_string)), + boost::adaptors::transformed(static_cast(std::to_string)), "|"); config.set_printer_setting(printer_name, "flush_multiplier", flush_multiplier_str); // Mixed-color filament metadata goes into the per-printer snapshot next to the filament list // it indexes (see load_mixed_filament_settings). Bools are ','-joined and the component, ratio // and range strings '|'-joined; the gradient curve is escaped instead, as it contains '|'. - auto join_bools = [](const std::vector& vals) { + auto join_bools = [](const std::vector &vals) { std::string s; for (size_t i = 0; i < vals.size(); ++i) { - if (i > 0) - s += ","; + if (i > 0) s += ","; s += (vals[i] ? "1" : "0"); } return s; }; - if (auto* opt = project_config.option("filament_is_mixed")) + if (auto *opt = project_config.option("filament_is_mixed")) config.set_printer_setting(printer_name, "filament_is_mixed", join_bools(opt->values)); - if (auto* opt = project_config.option("filament_mixed_components")) + if (auto *opt = project_config.option("filament_mixed_components")) config.set_printer_setting(printer_name, "filament_mixed_components", boost::algorithm::join(opt->values, "|")); - if (auto* opt = project_config.option("filament_mixed_sublayer_ratios")) + if (auto *opt = project_config.option("filament_mixed_sublayer_ratios")) config.set_printer_setting(printer_name, "filament_mixed_sublayer_ratios", boost::algorithm::join(opt->values, "|")); - if (auto* opt = project_config.option("filament_mixed_gradient")) + if (auto *opt = project_config.option("filament_mixed_gradient")) config.set_printer_setting(printer_name, "filament_mixed_gradient", join_bools(opt->values)); - if (auto* opt = project_config.option("filament_mixed_gradient_range")) + if (auto *opt = project_config.option("filament_mixed_gradient_range")) config.set_printer_setting(printer_name, "filament_mixed_gradient_range", boost::algorithm::join(opt->values, "|")); - if (auto* opt = project_config.option("filament_mixed_gradient_curve")) + if (auto *opt = project_config.option("filament_mixed_gradient_curve")) config.set_printer_setting(printer_name, "filament_mixed_gradient_curve", escape_strings_cstyle(opt->values)); - if (auto* opt = project_config.option("filament_mixed_gradient_per_part")) + if (auto *opt = project_config.option("filament_mixed_gradient_per_part")) config.set_printer_setting(printer_name, "filament_mixed_gradient_per_part", join_bools(opt->values)); // BBS - // config.set("presets", "sla_print", sla_prints.get_selected_preset_name()); - // config.set("presets", "sla_material", sla_materials.get_selected_preset_name()); - // config.set("presets", "physical_printer", physical_printers.get_selected_full_printer_name()); - // BBS: add config related log - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": printer %1%, print %2%, filaments[0] %3% ") % printers.get_selected_preset_name() % - prints.get_selected_preset_name() % filament_presets[0]; + //config.set("presets", "sla_print", sla_prints.get_selected_preset_name()); + //config.set("presets", "sla_material", sla_materials.get_selected_preset_name()); + //config.set("presets", "physical_printer", physical_printers.get_selected_full_printer_name()); + //BBS: add config related log + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": printer %1%, print %2%, filaments[0] %3% ")%printers.get_selected_preset_name() % prints.get_selected_preset_name() %filament_presets[0]; } void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) @@ -3316,12 +3219,12 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) else { filament_presets.resize(n); } - ConfigOptionStrings* filament_color = project_config.option("filament_colour"); - ConfigOptionStrings* filament_multi_color = project_config.option("filament_multi_colour"); - ConfigOptionStrings* filament_color_type = project_config.option("filament_colour_type"); - ConfigOptionInts* filament_map = project_config.option("filament_map"); - ConfigOptionInts* filament_nozzle_map = project_config.option("filament_nozzle_map"); - ConfigOptionInts* filament_volume_map = project_config.option("filament_volume_map"); + ConfigOptionStrings* filament_color = project_config.option("filament_colour"); + ConfigOptionStrings *filament_multi_color = project_config.option("filament_multi_colour"); + ConfigOptionStrings* filament_color_type = project_config.option("filament_colour_type"); + ConfigOptionInts* filament_map = project_config.option("filament_map"); + ConfigOptionInts* filament_nozzle_map = project_config.option("filament_nozzle_map"); + ConfigOptionInts* filament_volume_map = project_config.option("filament_volume_map"); // Which slots are new is a fact about the arrays below, not about filament_presets: // update_multi_material_filament_presets() tops that list up to the nozzle count on its own, @@ -3357,12 +3260,12 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) if (auto* opt = project_config.option("filament_mixed_gradient_per_part")) opt->values.resize(n, false); - // BBS set new filament color to new_color + //BBS set new filament color to new_color if (!new_color.empty()) { for (size_t i = old_slot_count; i < n; i++) { - filament_color->values[i] = new_color; + filament_color->values[i] = new_color; filament_multi_color->values[i] = new_color; - filament_color_type->values[i] = "1"; // default color type + filament_color_type->values[i] = "1"; // default color type } } @@ -3377,8 +3280,8 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id) // update edited_preset { - Preset& edited_preset = filaments.get_edited_preset(); - bool edited_preset_deleted = true; + Preset& edited_preset = filaments.get_edited_preset(); + bool edited_preset_deleted = true; for (std::string filament_preset_name : filament_presets) { if (filament_preset_name == edited_preset.name) { edited_preset_deleted = false; @@ -3389,12 +3292,12 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id) } } - ConfigOptionStrings* filament_color = project_config.option("filament_colour"); - ConfigOptionStrings* filament_multi_color = project_config.option("filament_multi_colour"); - ConfigOptionStrings* filament_color_type = project_config.option("filament_colour_type"); - ConfigOptionInts* filament_map = project_config.option("filament_map"); - ConfigOptionInts* filament_nozzle_map = project_config.option("filament_nozzle_map"); - ConfigOptionInts* filament_volume_map = project_config.option("filament_volume_map"); + ConfigOptionStrings *filament_color = project_config.option("filament_colour"); + ConfigOptionStrings *filament_multi_color = project_config.option("filament_multi_colour"); + ConfigOptionStrings *filament_color_type = project_config.option("filament_colour_type"); + ConfigOptionInts* filament_map = project_config.option("filament_map"); + ConfigOptionInts* filament_nozzle_map = project_config.option("filament_nozzle_map"); + ConfigOptionInts* filament_volume_map = project_config.option("filament_volume_map"); if (filament_color->values.size() > to_del_flament_id) { filament_color->values.erase(filament_color->values.begin() + to_del_flament_id); if (filament_map->values.size() > to_del_flament_id) { @@ -3406,7 +3309,8 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id) if (filament_volume_map->values.size() > to_del_flament_id) { filament_volume_map->values.erase(filament_volume_map->values.begin() + to_del_flament_id); } - } else { + } + else { filament_color->values.resize(to_del_flament_id); filament_map->values.resize(to_del_flament_id, 1); filament_nozzle_map->values.resize(to_del_flament_id, 0); @@ -3430,27 +3334,29 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id) // *physical* filament must be remapped out of every mix before the arrays themselves shrink. // Deleting a mixed slot needs no remap (nothing references a mixed slot as a component). { - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - auto* comp_opt = project_config.option("filament_mixed_components"); + auto *is_mixed_opt = project_config.option("filament_is_mixed"); + auto *comp_opt = project_config.option("filament_mixed_components"); if (is_mixed_opt && comp_opt) { - bool del_is_physical = (to_del_flament_id >= is_mixed_opt->values.size() || !is_mixed_opt->values[to_del_flament_id]); + bool del_is_physical = (to_del_flament_id >= is_mixed_opt->values.size() + || !is_mixed_opt->values[to_del_flament_id]); if (del_is_physical) - remap_mixed_components_on_delete(is_mixed_opt->values, comp_opt->values, to_del_flament_id + 1); + remap_mixed_components_on_delete(is_mixed_opt->values, comp_opt->values, + to_del_flament_id + 1); } if (is_mixed_opt) erase_or_resize(is_mixed_opt->values); if (comp_opt) erase_or_resize(comp_opt->values); } - if (auto* opt = project_config.option("filament_mixed_sublayer_ratios")) + if (auto *opt = project_config.option("filament_mixed_sublayer_ratios")) erase_or_resize(opt->values); - if (auto* opt = project_config.option("filament_mixed_gradient")) + if (auto *opt = project_config.option("filament_mixed_gradient")) erase_or_resize(opt->values); - if (auto* opt = project_config.option("filament_mixed_gradient_range")) + if (auto *opt = project_config.option("filament_mixed_gradient_range")) erase_or_resize(opt->values); - if (auto* opt = project_config.option("filament_mixed_gradient_curve")) + if (auto *opt = project_config.option("filament_mixed_gradient_curve")) erase_or_resize(opt->values); - if (auto* opt = project_config.option("filament_mixed_gradient_per_part")) + if (auto *opt = project_config.option("filament_mixed_gradient_per_part")) erase_or_resize(opt->values); update_multi_material_filament_presets(to_del_flament_id); @@ -3458,13 +3364,13 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id) bool PresetBundle::is_mixed_filament(size_t idx) const { - auto* opt = project_config.option("filament_is_mixed"); + auto *opt = project_config.option("filament_is_mixed"); return opt && idx < opt->values.size() && opt->values[idx]; } size_t PresetBundle::num_mixed_filaments() const { - auto* opt = project_config.option("filament_is_mixed"); + auto *opt = project_config.option("filament_is_mixed"); return opt == nullptr ? 0 : size_t(std::count(opt->values.begin(), opt->values.end(), true)); } @@ -3487,16 +3393,17 @@ std::vector PresetBundle::physical_filament_config_indices() const return indices; } + void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) { combox_info.clear(); - for (auto& entry : filament_ams_list) { - auto& ams = entry.second; - auto filament_id = ams.opt_string("filament_id", 0u); - auto filament_color = ams.opt_string("filament_colour", 0u); - auto ams_name = ams.opt_string("tray_name", 0u); - auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed"); - auto filament_multi_color = ams.opt("filament_multi_colour")->values; + for (auto &entry : filament_ams_list) { + auto &ams = entry.second; + auto filament_id = ams.opt_string("filament_id", 0u); + auto filament_color = ams.opt_string("filament_colour", 0u); + auto ams_name = ams.opt_string("tray_name", 0u); + auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed"); + auto filament_multi_color = ams.opt("filament_multi_colour")->values; if (filament_id.empty()) { continue; } @@ -3507,18 +3414,15 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) combox_info.ams_names.push_back(ams_name); continue; } - auto iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id](auto& f) { - return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; - }); + auto iter = std::find_if(filaments.begin(), filaments.end(), + [this, &filament_id](auto &f) { return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; }); if (iter == filaments.end()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(": filament_id %1% not found or system or compatible") % filament_id; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id; auto filament_type = ams.opt_string("filament_type", 0u); if (!filament_type.empty()) { filament_type = "Generic " + filament_type; - iter = std::find_if(filaments.begin(), filaments.end(), [&filament_type](auto& f) { - return f.is_compatible && f.is_system && boost::algorithm::starts_with(f.name, filament_type); - }); + iter = std::find_if(filaments.begin(), filaments.end(), + [&filament_type](auto &f) { return f.is_compatible && f.is_system && boost::algorithm::starts_with(f.name, filament_type); }); } if (iter == filaments.end()) { // Prefer old selection @@ -3542,18 +3446,13 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info) } } -unsigned int PresetBundle::sync_ams_list(std::vector>& unknowns, - bool use_map, - std::map& maps, - bool enable_append, - MergeFilamentInfo& merge_info, - bool color_only) +unsigned int PresetBundle::sync_ams_list(std::vector> &unknowns, bool use_map, std::map &maps, bool enable_append, MergeFilamentInfo &merge_info, bool color_only) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "use_map:" << use_map << " enable_append:" << enable_append; std::vector ams_filament_presets; std::vector ams_filament_colors; std::vector ams_filament_color_types; - std::vector ams_array_maps; + std::vector ams_array_maps; ams_multi_color_filment.clear(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": filament_ams_list size: %1%") % filament_ams_list.size(); struct AmsInfo @@ -3561,24 +3460,24 @@ unsigned int PresetBundle::sync_ams_list(std::vector mutli_filament_color; }; auto is_double_extruder = get_printer_extruder_count() == 2; std::vector ams_infos; - int index = 0; - for (auto& entry : filament_ams_list) { - auto& ams = entry.second; - auto filament_id = ams.opt_string("filament_id", 0u); - auto filament_color = ams.opt_string("filament_colour", 0u); - auto filament_color_type = ams.opt_string("filament_colour_type", 0u); - auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed"); + int index = 0; + for (auto &entry : filament_ams_list) { + auto & ams = entry.second; + auto filament_id = ams.opt_string("filament_id", 0u); + auto filament_color = ams.opt_string("filament_colour", 0u); + auto filament_color_type = ams.opt_string("filament_colour_type", 0u); + auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed"); auto filament_multi_color = ams.opt("filament_multi_colour")->values; - auto ams_id = ams.opt_string("ams_id", 0u); - auto slot_id = ams.opt_string("slot_id", 0u); - auto is_placeholder = ams.has("filament_slot_placeholder") && ams.opt_bool("filament_slot_placeholder", 0u); + auto ams_id = ams.opt_string("ams_id", 0u); + auto slot_id = ams.opt_string("slot_id", 0u); + auto is_placeholder = ams.has("filament_slot_placeholder") && ams.opt_bool("filament_slot_placeholder", 0u); ams_infos.push_back({filament_id.empty() ? false : true, false, is_placeholder, filament_color}); AMSMapInfo temp = {ams_id, slot_id}; ams_array_maps.push_back(temp); @@ -3590,7 +3489,7 @@ unsigned int PresetBundle::sync_ams_list(std::vectorconfig.opt_string("filament_type", 0u)); if (preset_type.size() > best_len && contains_word(upper_type, preset_type)) { - iter = it; - best_len = preset_type.size(); + iter = it; + best_len = preset_type.size(); filament_type = "Generic " + it->config.opt_string("filament_type", 0u); } } @@ -3665,28 +3564,26 @@ unsigned int PresetBundle::sync_ams_list(std::vectorname, filament_type) ? - (has_type ? - L("The filament may not be compatible with the current machine settings. Generic filament presets will be used.") : - L("The filament model is unknown. Generic filament presets will be used.")) : - (has_type ? - L("The filament may not be compatible with the current machine settings. A random filament preset will be used.") : - L("The filament model is unknown. A random filament preset will be used."))); + unknowns.emplace_back(&ams, boost::algorithm::starts_with(iter->name, filament_type) ? + (has_type ? L("The filament may not be compatible with the current machine settings. Generic filament presets will be used.") : + L("The filament model is unknown. Generic filament presets will be used.")) : + (has_type ? L("The filament may not be compatible with the current machine settings. A random filament preset will be used.") : + L("The filament model is unknown. A random filament preset will be used."))); filament_id = iter->filament_id; } ams_filament_presets.push_back(iter->name); @@ -3697,26 +3594,25 @@ unsigned int PresetBundle::sync_ams_list(std::vector("filament_colour"); - ConfigOptionStrings* filament_color_type = project_config.option("filament_colour_type"); - ConfigOptionInts* filament_map = project_config.option("filament_map"); - ConfigOptionInts* filament_volume_map = project_config.option("filament_volume_map"); + ConfigOptionStrings *filament_color = project_config.option("filament_colour"); + ConfigOptionStrings *filament_color_type = project_config.option("filament_colour_type"); + ConfigOptionInts * filament_map = project_config.option("filament_map"); + ConfigOptionInts * filament_volume_map = project_config.option("filament_volume_map"); // Snapshot and temporarily strip mixed filament slots so AMS sync operates on physical // filaments only. A mixed slot is virtual and has no tray to sync against; leaving it in // would let AMS mapping overwrite it and would break the physical-first slot ordering the // rest of the feature relies on. The slots are re-appended verbatim after the sync. - struct MixedSlotSnapshot - { + struct MixedSlotSnapshot { std::string preset; std::string color; std::string color_type; std::string mixed_components; std::string mixed_sublayer_ratios; - bool mixed_gradient = false; + bool mixed_gradient = false; std::string mixed_gradient_range; std::string mixed_gradient_curve; - bool mixed_gradient_per_part = false; + bool mixed_gradient_per_part = false; }; std::vector mixed_snapshots; auto* is_mixed_opt = project_config.option("filament_is_mixed"); @@ -3732,48 +3628,35 @@ unsigned int PresetBundle::sync_ams_list(std::vectorfilament_presets[i]; - snap.color = (i < filament_color->values.size()) ? filament_color->values[i] : ""; + snap.color = (i < filament_color->values.size()) ? filament_color->values[i] : ""; snap.color_type = (i < filament_color_type->values.size()) ? filament_color_type->values[i] : ""; - if (mixed_comp_opt && i < mixed_comp_opt->values.size()) - snap.mixed_components = mixed_comp_opt->values[i]; - if (mixed_ratios_opt && i < mixed_ratios_opt->values.size()) - snap.mixed_sublayer_ratios = mixed_ratios_opt->values[i]; - if (mixed_gradient_opt && i < mixed_gradient_opt->values.size()) - snap.mixed_gradient = mixed_gradient_opt->values[i]; - if (mixed_grad_range_opt && i < mixed_grad_range_opt->values.size()) - snap.mixed_gradient_range = mixed_grad_range_opt->values[i]; - if (mixed_grad_curve_opt && i < mixed_grad_curve_opt->values.size()) - snap.mixed_gradient_curve = mixed_grad_curve_opt->values[i]; - if (mixed_per_part_opt && i < mixed_per_part_opt->values.size()) - snap.mixed_gradient_per_part = mixed_per_part_opt->values[i]; + if (mixed_comp_opt && i < mixed_comp_opt->values.size()) snap.mixed_components = mixed_comp_opt->values[i]; + if (mixed_ratios_opt && i < mixed_ratios_opt->values.size()) snap.mixed_sublayer_ratios = mixed_ratios_opt->values[i]; + if (mixed_gradient_opt && i < mixed_gradient_opt->values.size()) snap.mixed_gradient = mixed_gradient_opt->values[i]; + if (mixed_grad_range_opt && i < mixed_grad_range_opt->values.size()) snap.mixed_gradient_range = mixed_grad_range_opt->values[i]; + if (mixed_grad_curve_opt && i < mixed_grad_curve_opt->values.size()) snap.mixed_gradient_curve = mixed_grad_curve_opt->values[i]; + if (mixed_per_part_opt && i < mixed_per_part_opt->values.size()) snap.mixed_gradient_per_part = mixed_per_part_opt->values[i]; mixed_snapshots.push_back(snap); } if (!mixed_snapshots.empty()) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": stripping " << mixed_snapshots.size() - << " mixed filament slot(s) before AMS sync"; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": stripping " << mixed_snapshots.size() << " mixed filament slot(s) before AMS sync"; size_t phys_count = this->filament_presets.size() - mixed_snapshots.size(); this->filament_presets.resize(phys_count); filament_color->values.resize(phys_count); filament_color_type->values.resize(phys_count); filament_map->values.resize(phys_count, 1); is_mixed_opt->values.resize(phys_count); - if (mixed_comp_opt) - mixed_comp_opt->values.resize(phys_count); - if (mixed_ratios_opt) - mixed_ratios_opt->values.resize(phys_count); - if (mixed_gradient_opt) - mixed_gradient_opt->values.resize(phys_count); - if (mixed_grad_range_opt) - mixed_grad_range_opt->values.resize(phys_count); - if (mixed_grad_curve_opt) - mixed_grad_curve_opt->values.resize(phys_count); - if (mixed_per_part_opt) - mixed_per_part_opt->values.resize(phys_count); + if (mixed_comp_opt) mixed_comp_opt->values.resize(phys_count); + if (mixed_ratios_opt) mixed_ratios_opt->values.resize(phys_count); + if (mixed_gradient_opt) mixed_gradient_opt->values.resize(phys_count); + if (mixed_grad_range_opt) mixed_grad_range_opt->values.resize(phys_count); + if (mixed_grad_curve_opt) mixed_grad_curve_opt->values.resize(phys_count); + if (mixed_per_part_opt) mixed_per_part_opt->values.resize(phys_count); } } if (color_only) { - auto get_map_index = [&ams_infos](const std::vector& infos, const AMSMapInfo& temp) { + auto get_map_index = [&ams_infos](const std::vector &infos, const AMSMapInfo &temp) { for (int i = 0; i < infos.size(); i++) { if (infos[i].slot_id == temp.slot_id && infos[i].ams_id == temp.ams_id) { ams_infos[i].is_map = true; @@ -3789,7 +3672,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector("filament_multi_colour"); + ConfigOptionStrings *project_multi_color = project_config.option("filament_multi_colour"); if (project_multi_color) { for (size_t i = 0; i < std::min(exist_multi_color_filment.size(), project_multi_color->values.size()); i++) { std::vector colors = split_string(project_multi_color->values[i], ' '); @@ -3808,7 +3691,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector= 0 && valid_index < int(ams_filament_colors.size()) && !ams_filament_colors[valid_index].empty()) { exist_colors[i] = ams_filament_colors[valid_index]; - mapped_any = true; + mapped_any = true; if (valid_index < int(ams_multi_color_filment.size()) && !ams_multi_color_filment[valid_index].empty()) { exist_multi_color_filment[i] = ams_multi_color_filment[valid_index]; } else { @@ -3833,11 +3716,11 @@ unsigned int PresetBundle::sync_ams_list(std::vectorvalues = exist_colors; + filament_color->values = exist_colors; ams_multi_color_filment = exist_multi_color_filment; merge_info.merges.clear(); } else if (use_map) { - auto check_has_merge_info = [](std::map& maps, MergeFilamentInfo& merge_info, int exist_colors_size) { + auto check_has_merge_info = [](std::map &maps, MergeFilamentInfo &merge_info, int exist_colors_size) { std::set done; for (auto it_i = maps.begin(); it_i != maps.end(); ++it_i) { std::vector same_ams; @@ -3846,7 +3729,7 @@ unsigned int PresetBundle::sync_ams_list(std::vectorfirst) != done.end()) { continue; } - if (it_i->second.slot_id == "" || it_i->second.ams_id == "") { + if (it_i->second.slot_id == "" || it_i->second.ams_id == ""){ continue; } if (it_i->second.slot_id == it_j->second.slot_id && it_i->second.ams_id == it_j->second.ams_id) { @@ -3859,8 +3742,8 @@ unsigned int PresetBundle::sync_ams_list(std::vectorvalues.size()); - auto get_map_index = [&ams_infos](const std::vector& infos, const AMSMapInfo& temp) { + check_has_merge_info(maps, merge_info,filament_color->values.size()); + auto get_map_index = [&ams_infos](const std::vector &infos, const AMSMapInfo &temp) { for (int i = 0; i < infos.size(); i++) { if (infos[i].slot_id == temp.slot_id && infos[i].ams_id == temp.ams_id) { ams_infos[i].is_map = true; @@ -3870,8 +3753,8 @@ unsigned int PresetBundle::sync_ams_list(std::vector need_append_colors; - auto exist_colors = filament_color->values; - auto exist_color_types = filament_color_type->values; + auto exist_colors = filament_color->values; + auto exist_color_types = filament_color_type->values; auto exist_filament_presets = this->filament_presets; std::vector> exist_multi_color_filment; exist_multi_color_filment.resize(exist_colors.size()); @@ -3879,57 +3762,54 @@ unsigned int PresetBundle::sync_ams_list(std::vector= 0 && valid_index < ams_filament_presets.size()) { - exist_colors[i] = ams_filament_colors[valid_index]; - exist_color_types[i] = ams_filament_color_types[valid_index]; - exist_filament_presets[i] = ams_filament_presets[valid_index]; + exist_colors[i] = ams_filament_colors[valid_index]; + exist_color_types[i] = ams_filament_color_types[valid_index]; + exist_filament_presets[i] = ams_filament_presets[valid_index]; exist_multi_color_filment[i] = ams_multi_color_filment[valid_index]; } else { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "check error: array bound (mapping exist)"; } } } - for (size_t i = 0; i < ams_infos.size(); i++) { // check append + for (size_t i = 0; i < ams_infos.size(); i++) {// check append if (ams_infos[i].valid) { if (i >= ams_filament_presets.size()) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "check error: array bound (check append)"; continue; } - ams_infos[i].filament_preset = ams_filament_presets[i]; + ams_infos[i].filament_preset = ams_filament_presets[i]; ams_infos[i].mutli_filament_color = ams_multi_color_filment[i]; if (!ams_infos[i].is_map) { need_append_colors.emplace_back(ams_infos[i]); - ams_filament_colors[i] = ""; + ams_filament_colors[i] = ""; ams_filament_color_types[i] = ""; - ams_filament_presets[i] = ""; - ams_multi_color_filment[i] = std::vector(); + ams_filament_presets[i] = ""; + ams_multi_color_filment[i] = std::vector(); } - } else { - ams_filament_colors[i] = ""; + } + else { + ams_filament_colors[i] = ""; ams_filament_color_types[i] = ""; - ams_filament_presets[i] = ""; - ams_multi_color_filment[i] = std::vector(); + ams_filament_presets[i] = ""; + ams_multi_color_filment[i] = std::vector(); } } - // delete redundant color - ams_filament_colors.erase(std::remove_if(ams_filament_colors.begin(), ams_filament_colors.end(), - [](std::string& value) { return value.empty(); }), + //delete redundant color + ams_filament_colors.erase(std::remove_if(ams_filament_colors.begin(), ams_filament_colors.end(), [](std::string &value) { return value.empty(); }), ams_filament_colors.end()); - ams_filament_color_types.erase(std::remove_if(ams_filament_color_types.begin(), ams_filament_color_types.end(), - [](std::string& value) { return value.empty(); }), + ams_filament_color_types.erase(std::remove_if(ams_filament_color_types.begin(), ams_filament_color_types.end(), [](std::string &value) { return value.empty(); }), ams_filament_color_types.end()); - ams_filament_presets.erase(std::remove_if(ams_filament_presets.begin(), ams_filament_presets.end(), - [](std::string& value) { return value.empty(); }), + ams_filament_presets.erase(std::remove_if(ams_filament_presets.begin(), ams_filament_presets.end(), [](std::string &value) { return value.empty(); }), ams_filament_presets.end()); ams_multi_color_filment.erase(std::remove_if(ams_multi_color_filment.begin(), ams_multi_color_filment.end(), - [](std::vector& value) { return value.empty(); }), + [](std::vector &value) { return value.empty(); }), ams_multi_color_filment.end()); if (need_append_colors.size() > 0 && enable_append) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "need_append_colors.size() > 0 && enable_append"; - auto get_idx_in_array = [](std::vector& presets, std::vector& colors, const std::string& preset, - const std::string& color) -> int { + auto get_idx_in_array = [](std::vector &presets, std::vector &colors, const std::string &preset, const std::string &color) -> int { for (size_t i = 0; i < presets.size(); i++) { if (presets[i] == preset && colors[i] == color) { return i; @@ -3937,12 +3817,11 @@ unsigned int PresetBundle::sync_ams_list(std::vector= MAXIMUM_AMS_SYNC_FILAMENT_NUMBER) { + for (size_t i = 0; i < need_append_colors.size(); i++){ + if (exist_filament_presets.size() >= MAXIMUM_AMS_SYNC_FILAMENT_NUMBER){ break; } - auto idx = get_idx_in_array(exist_filament_presets, exist_colors, need_append_colors[i].filament_preset, - need_append_colors[i].filament_color); + auto idx = get_idx_in_array(exist_filament_presets, exist_colors, need_append_colors[i].filament_preset, need_append_colors[i].filament_color); if (idx >= 0) { continue; } @@ -3952,19 +3831,21 @@ unsigned int PresetBundle::sync_ams_list(std::vectorvalues = exist_colors; + filament_color->values = exist_colors; filament_color_type->values = exist_color_types; - ams_multi_color_filment = exist_multi_color_filment; - this->filament_presets = exist_filament_presets; + ams_multi_color_filment = exist_multi_color_filment; + this->filament_presets = exist_filament_presets; filament_map->values.resize(exist_filament_presets.size(), 1); filament_volume_map->values.resize(exist_filament_presets.size(), static_cast(NozzleVolumeType::nvtStandard)); - } else { // overwrite; - bool has_placeholders = std::any_of(ams_infos.begin(), ams_infos.end(), [](const AmsInfo& a) { return a.is_placeholder; }); + } + else {//overwrite; + bool has_placeholders = std::any_of(ams_infos.begin(), ams_infos.end(), + [](const AmsInfo& a) { return a.is_placeholder; }); if (has_placeholders) { // Orca: merge — keep existing filaments for empty slots - auto exist_colors = filament_color->values; - auto exist_color_types = filament_color_type->values; - auto exist_presets = this->filament_presets; + auto exist_colors = filament_color->values; + auto exist_color_types = filament_color_type->values; + auto exist_presets = this->filament_presets; size_t tray_count = ams_filament_presets.size(); size_t total = std::max(tray_count, exist_presets.size()); @@ -3982,8 +3863,9 @@ unsigned int PresetBundle::sync_ams_list(std::vector{ams_filament_colors[i]}); + result_multi_colors.push_back( + i < ams_multi_color_filment.size() ? ams_multi_color_filment[i] + : std::vector{ams_filament_colors[i]}); } else if (i < exist_presets.size()) { // Empty tray or beyond tray count: keep existing filament result_colors.push_back(exist_colors[i]); @@ -3992,8 +3874,9 @@ unsigned int PresetBundle::sync_ams_list(std::vectorname : filaments.first_visible().name; result_colors.push_back("#CECECE"); @@ -4011,15 +3894,15 @@ unsigned int PresetBundle::sync_ams_list(std::vectorvalues.resize(total, static_cast(NozzleVolumeType::nvtStandard)); } else { // BBL: existing wholesale replace - filament_color->values = ams_filament_colors; + filament_color->values = ams_filament_colors; filament_color_type->values = ams_filament_color_types; - this->filament_presets = ams_filament_presets; + this->filament_presets = ams_filament_presets; filament_map->values.resize(ams_filament_colors.size(), 1); filament_volume_map->values.resize(ams_filament_colors.size(), static_cast(NozzleVolumeType::nvtStandard)); } - auto& print_config = this->prints.get_edited_preset().config; - auto support_filament_opt = print_config.option("support_filament"); + auto& print_config = this->prints.get_edited_preset().config; + auto support_filament_opt = print_config.option("support_filament"); auto support_interface_filament_opt = print_config.option("support_interface_filament"); if (support_filament_opt->value > filament_color_type->values.size()) support_filament_opt->value = 0; @@ -4031,20 +3914,13 @@ unsigned int PresetBundle::sync_ams_list(std::vectorfilament_presets.size(); - if (is_mixed_opt) - is_mixed_opt->values.resize(new_phys_count, (unsigned char) false); - if (mixed_comp_opt) - mixed_comp_opt->values.resize(new_phys_count); - if (mixed_ratios_opt) - mixed_ratios_opt->values.resize(new_phys_count); - if (mixed_gradient_opt) - mixed_gradient_opt->values.resize(new_phys_count, (unsigned char) false); - if (mixed_grad_range_opt) - mixed_grad_range_opt->values.resize(new_phys_count); - if (mixed_grad_curve_opt) - mixed_grad_curve_opt->values.resize(new_phys_count); - if (mixed_per_part_opt) - mixed_per_part_opt->values.resize(new_phys_count, (unsigned char) false); + if (is_mixed_opt) is_mixed_opt->values.resize(new_phys_count, (unsigned char)false); + if (mixed_comp_opt) mixed_comp_opt->values.resize(new_phys_count); + if (mixed_ratios_opt) mixed_ratios_opt->values.resize(new_phys_count); + if (mixed_gradient_opt) mixed_gradient_opt->values.resize(new_phys_count, (unsigned char)false); + if (mixed_grad_range_opt) mixed_grad_range_opt->values.resize(new_phys_count); + if (mixed_grad_curve_opt) mixed_grad_curve_opt->values.resize(new_phys_count); + if (mixed_per_part_opt) mixed_per_part_opt->values.resize(new_phys_count, (unsigned char)false); for (auto& snap : mixed_snapshots) { this->filament_presets.push_back(snap.preset); @@ -4052,20 +3928,13 @@ unsigned int PresetBundle::sync_ams_list(std::vectorvalues.push_back(snap.color_type); ams_multi_color_filment.push_back({snap.color}); filament_map->values.push_back(1); - if (is_mixed_opt) - is_mixed_opt->values.push_back((unsigned char) true); - if (mixed_comp_opt) - mixed_comp_opt->values.push_back(snap.mixed_components); - if (mixed_ratios_opt) - mixed_ratios_opt->values.push_back(snap.mixed_sublayer_ratios); - if (mixed_gradient_opt) - mixed_gradient_opt->values.push_back((unsigned char) snap.mixed_gradient); - if (mixed_grad_range_opt) - mixed_grad_range_opt->values.push_back(snap.mixed_gradient_range); - if (mixed_grad_curve_opt) - mixed_grad_curve_opt->values.push_back(snap.mixed_gradient_curve); - if (mixed_per_part_opt) - mixed_per_part_opt->values.push_back((unsigned char) snap.mixed_gradient_per_part); + if (is_mixed_opt) is_mixed_opt->values.push_back((unsigned char)true); + if (mixed_comp_opt) mixed_comp_opt->values.push_back(snap.mixed_components); + if (mixed_ratios_opt) mixed_ratios_opt->values.push_back(snap.mixed_sublayer_ratios); + if (mixed_gradient_opt) mixed_gradient_opt->values.push_back((unsigned char)snap.mixed_gradient); + if (mixed_grad_range_opt) mixed_grad_range_opt->values.push_back(snap.mixed_gradient_range); + if (mixed_grad_curve_opt) mixed_grad_curve_opt->values.push_back(snap.mixed_gradient_curve); + if (mixed_per_part_opt) mixed_per_part_opt->values.push_back((unsigned char)snap.mixed_gradient_per_part); } } @@ -4079,38 +3948,36 @@ unsigned int PresetBundle::sync_ams_list(std::vector exsit_multi_colors; - for (auto& fil_item : ams_multi_color_filment) { - if (fil_item.empty()) - break; + for (auto &fil_item : ams_multi_color_filment){ + if (fil_item.empty()) break; if (fil_item.size() == 1) exsit_multi_colors.push_back(fil_item[0]); else { std::string colors = ""; - for (auto& color : fil_item) { - colors += color + " "; + for (auto &color : fil_item){ + colors += color + " "; } colors.erase(colors.size() - 1); // remove last space exsit_multi_colors.push_back(colors); } } - ConfigOptionStrings* filament_multi_colour = project_config.option("filament_multi_colour"); + ConfigOptionStrings *filament_multi_colour = project_config.option("filament_multi_colour"); filament_multi_colour->resize(exsit_multi_colors.size()); filament_multi_colour->values = exsit_multi_colors; } -std::vector PresetBundle::get_used_tpu_filaments(const std::vector& used_filaments) +std::vector PresetBundle::get_used_tpu_filaments(const std::vector &used_filaments) { std::vector tpu_filaments; for (size_t i = 0; i < this->filament_presets.size(); ++i) { auto iter = std::find(used_filaments.begin(), used_filaments.end(), i + 1); - if (iter == used_filaments.end()) - continue; + if (iter == used_filaments.end()) continue; std::string filament_name = this->filament_presets[i]; for (int f_index = 0; f_index < this->filaments.size(); f_index++) { - PresetCollection* filament_presets = &this->filaments; - Preset* preset = &filament_presets->preset(f_index); - int size = this->filaments.size(); + PresetCollection *filament_presets = &this->filaments; + Preset *preset = &filament_presets->preset(f_index); + int size = this->filaments.size(); if (preset && filament_name.compare(preset->name) == 0) { std::string display_filament_type; std::string filament_type = preset->config.get_filament_type(display_filament_type); @@ -4131,20 +3998,18 @@ void PresetBundle::set_calibrate_printer(std::string name) } if (!name.empty()) calibrate_printer = printers.find_preset(name); - const Preset& printer_preset = calibrate_printer ? *calibrate_printer : printers.get_edited_preset(); + const Preset & printer_preset = calibrate_printer ? *calibrate_printer : printers.get_edited_preset(); const PresetWithVendorProfile active_printer = printers.get_preset_with_vendor_profile(printer_preset); - DynamicPrintConfig config; + DynamicPrintConfig config; config.set_key_value("printer_preset", new ConfigOptionString(active_printer.preset.name)); - const ConfigOption* opt = active_printer.preset.config.option("nozzle_diameter"); - if (opt) - config.set_key_value("num_extruders", new ConfigOptionInt((int) static_cast(opt)->values.size())); + const ConfigOption *opt = active_printer.preset.config.option("nozzle_diameter"); + if (opt) config.set_key_value("num_extruders", new ConfigOptionInt((int) static_cast(opt)->values.size())); calibrate_filaments.clear(); for (size_t i = filaments.num_default_presets(); i < filaments.size(); ++i) { - const Preset& preset = filaments.m_presets[i]; + const Preset & preset = filaments.m_presets[i]; const PresetWithVendorProfile this_preset_with_vendor_profile = filaments.get_preset_with_vendor_profile(preset); - bool is_compatible = is_compatible_with_printer(this_preset_with_vendor_profile, active_printer, &config); - if (is_compatible) - calibrate_filaments.insert(&preset); + bool is_compatible = is_compatible_with_printer(this_preset_with_vendor_profile, active_printer, &config); + if (is_compatible) calibrate_filaments.insert(&preset); } } @@ -4165,31 +4030,25 @@ std::vector> PresetBundle::get_extruder_filament return filament_infos; } -std::set PresetBundle::get_printer_names_by_printer_type_and_nozzle(const std::string& printer_type, - std::string nozzle_diameter_str, - bool system_only) +std::set PresetBundle::get_printer_names_by_printer_type_and_nozzle(const std::string &printer_type, std::string nozzle_diameter_str, bool system_only) { std::set printer_names; if ("0.0" == nozzle_diameter_str || nozzle_diameter_str.empty()) { nozzle_diameter_str = "0.4"; } - std::ostringstream stream; + std::ostringstream stream; for (auto printer_it = this->printers.begin(); printer_it != this->printers.end(); printer_it++) { - if (system_only && !printer_it->is_system) - continue; + if (system_only && !printer_it->is_system) continue; - ConfigOption* printer_model_opt = printer_it->config.option("printer_model"); - ConfigOptionString* printer_model_str = dynamic_cast(printer_model_opt); - if (!printer_model_str) - continue; + ConfigOption * printer_model_opt = printer_it->config.option("printer_model"); + ConfigOptionString *printer_model_str = dynamic_cast(printer_model_opt); + if (!printer_model_str) continue; // use printer_model as printer type - if (printer_model_str->value != printer_type) - continue; + if (printer_model_str->value != printer_type) continue; - if (printer_it->name.find(nozzle_diameter_str) != std::string::npos) - printer_names.insert(printer_it->name); + if (printer_it->name.find(nozzle_diameter_str) != std::string::npos) printer_names.insert(printer_it->name); } assert(printer_names.size() == 1); @@ -4201,40 +4060,32 @@ std::set PresetBundle::get_printer_names_by_printer_type_and_nozzle return printer_names; } -bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray(const std::string& printer_type, - std::string& nozzle_diameter_str, - std::string& setting_id, - std::string& tag_uid, - std::string& nozzle_temp_min, - std::string& nozzle_temp_max, - std::string& preset_setting_id) +bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray( + const std::string &printer_type, std::string& nozzle_diameter_str, std::string &setting_id, std::string &tag_uid, std::string &nozzle_temp_min, std::string &nozzle_temp_max, std::string& preset_setting_id) { bool is_equation = true; - std::map> filament_list = filaments.get_filament_presets(); - std::set printer_names = get_printer_names_by_printer_type_and_nozzle(printer_type, nozzle_diameter_str); + std::map> filament_list = filaments.get_filament_presets(); + std::set printer_names = get_printer_names_by_printer_type_and_nozzle(printer_type, nozzle_diameter_str); - for (const Preset* preset : filament_list.find(setting_id)->second) { - if (tag_uid == "0" || (tag_uid.size() == 16 && tag_uid.substr(12, 2) == "01")) - continue; - if (preset && !preset->is_user()) - continue; - ConfigOption* printer_opt = const_cast(preset)->config.option("compatible_printers"); - ConfigOptionStrings* printer_strs = dynamic_cast(printer_opt); - bool compared = false; - for (const std::string& printer_str : printer_strs->values) { + for (const Preset *preset : filament_list.find(setting_id)->second) { + if (tag_uid == "0" || (tag_uid.size() == 16 && tag_uid.substr(12, 2) == "01")) continue; + if (preset && !preset->is_user()) continue; + ConfigOption * printer_opt = const_cast(preset)->config.option("compatible_printers"); + ConfigOptionStrings *printer_strs = dynamic_cast(printer_opt); + bool compared = false; + for (const std::string &printer_str : printer_strs->values) { if (printer_names.find(printer_str) != printer_names.end()) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << "nozzle temp matching: preset name: " << preset->name - << " printer name: " << printer_str; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << "nozzle temp matching: preset name: " << preset->name << " printer name: " << printer_str; // Compare only once if (!compared) { - compared = true; - bool min_temp_equation = false, max_temp_equation = false; - int min_nozzle_temp = std::stoi(nozzle_temp_min); - int max_nozzle_temp = std::stoi(nozzle_temp_max); - ConfigOption* opt_min = const_cast(preset)->config.option("nozzle_temperature_range_low"); + compared = true; + bool min_temp_equation = false, max_temp_equation = false; + int min_nozzle_temp = std::stoi(nozzle_temp_min); + int max_nozzle_temp = std::stoi(nozzle_temp_max); + ConfigOption *opt_min = const_cast(preset)->config.option("nozzle_temperature_range_low"); if (opt_min) { - ConfigOptionInts* opt_min_ints = dynamic_cast(opt_min); + ConfigOptionInts *opt_min_ints = dynamic_cast(opt_min); min_nozzle_temp = opt_min_ints->get_at(0); if (std::to_string(min_nozzle_temp) == nozzle_temp_min) min_temp_equation = true; @@ -4243,9 +4094,9 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m nozzle_temp_min = std::to_string(min_nozzle_temp); } } - ConfigOption* opt_max = const_cast(preset)->config.option("nozzle_temperature_range_high"); + ConfigOption *opt_max = const_cast(preset)->config.option("nozzle_temperature_range_high"); if (opt_max) { - ConfigOptionInts* opt_max_ints = dynamic_cast(opt_max); + ConfigOptionInts *opt_max_ints = dynamic_cast(opt_max); max_nozzle_temp = opt_max_ints->get_at(0); if (std::to_string(max_nozzle_temp) == nozzle_temp_max) max_temp_equation = true; @@ -4255,13 +4106,11 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m } } if (min_temp_equation && max_temp_equation) { - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << " " << __LINE__ << "Determine if the temperature has changed: no changed"; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << "Determine if the temperature has changed: no changed"; } else { - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << " " << __LINE__ << "Determine if the temperature has changed: has changed"; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << "Determine if the temperature has changed: has changed"; preset_setting_id = preset->setting_id; - is_equation = false; + is_equation = false; } } else { assert(false); @@ -4272,7 +4121,7 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m return is_equation; } -Preset* PresetBundle::get_similar_printer_preset(std::string printer_model, std::string printer_variant) +Preset *PresetBundle::get_similar_printer_preset(std::string printer_model, std::string printer_variant) { if (printer_model.empty()) printer_model = printers.get_selected_preset().config.opt_string("printer_model"); @@ -4280,7 +4129,7 @@ Preset* PresetBundle::get_similar_printer_preset(std::string printer_model, std: return nullptr; auto printer_variant_old = printers.get_selected_preset().config.opt_string("printer_variant"); std::map printer_presets; - for (auto& preset : printers.m_presets) { + for (auto &preset : printers.m_presets) { if (printer_variant.empty() && !preset.is_system) continue; if (preset.config.opt_string("printer_model") == printer_model) @@ -4288,8 +4137,7 @@ Preset* PresetBundle::get_similar_printer_preset(std::string printer_model, std: } if (printer_presets.empty()) return nullptr; - auto prefer_printer = printers.get_selected_preset().alias; //.name ORCA use alias instead "name" for calling system presets. otherwise - // nozzle combo will not change printer presets if they custom named + auto prefer_printer = printers.get_selected_preset().alias; //.name ORCA use alias instead "name" for calling system presets. otherwise nozzle combo will not change printer presets if they custom named if (!printer_variant.empty()) boost::replace_all(prefer_printer, printer_variant_old, printer_variant); @@ -4307,29 +4155,30 @@ Preset* PresetBundle::get_similar_printer_preset(std::string printer_model, std: return printer_presets.begin()->second; } -// BBS: check whether this is the only edited filament +//BBS: check whether this is the only edited filament bool PresetBundle::is_the_only_edited_filament(unsigned int filament_index) { unsigned n = this->filament_presets.size(); if (filament_index >= n) return false; - std::string name = this->filament_presets[filament_index]; + std::string name = this->filament_presets[filament_index]; Preset& edited_preset = this->filaments.get_edited_preset(); if (edited_preset.name != name) return false; unsigned index = 0; - while (index < n) { + while (index < n) + { if (index == filament_index) { - index++; + index ++; continue; } std::string filament_preset = this->filament_presets[index]; if (edited_preset.name == filament_preset) return false; else - index++; + index ++; } return true; } @@ -4337,8 +4186,7 @@ bool PresetBundle::is_the_only_edited_filament(unsigned int filament_index) void PresetBundle::reset_default_nozzle_volume_type() { Preset& current_printer = this->printers.get_edited_preset(); - this->project_config.option("nozzle_volume_type")->values = - current_printer.config.option("default_nozzle_volume_type")->values; + this->project_config.option("nozzle_volume_type")->values = current_printer.config.option("default_nozzle_volume_type")->values; } int PresetBundle::get_printer_extruder_count() const @@ -4367,7 +4215,9 @@ void PresetBundle::update_filament_count() const size_t num_extruders = static_cast(get_printer_extruder_count()); if (filament_presets.size() >= num_extruders) return; - filament_presets.resize(num_extruders, filament_presets.empty() ? filaments.first_visible().name : filament_presets.back()); + filament_presets.resize(num_extruders, filament_presets.empty() + ? filaments.first_visible().name + : filament_presets.back()); } bool PresetBundle::support_different_extruders() const @@ -4386,7 +4236,8 @@ std::vector PresetBundle::get_default_nozzle_volume_types_for_filaments(std result.resize(filament_count, static_cast(NozzleVolumeType::nvtStandard)); auto opt_nozzle_volume_type = dynamic_cast(this->project_config.option("nozzle_volume_type")); - for (int index = 0; index < filament_count; index++) { + for (int index = 0; index < filament_count; index++) + { if (opt_nozzle_volume_type && opt_nozzle_volume_type->values.size() > (f_maps[index] - 1)) result[index] = opt_nozzle_volume_type->values[f_maps[index] - 1]; } @@ -4394,43 +4245,40 @@ std::vector PresetBundle::get_default_nozzle_volume_types_for_filaments(std return result; } -DynamicPrintConfig PresetBundle::full_config(bool apply_extruder, - std::optional> filament_maps, - std::optional> filament_volume_maps) const +DynamicPrintConfig PresetBundle::full_config(bool apply_extruder, std::optional>filament_maps, std::optional> filament_volume_maps) const { return (this->printers.get_edited_preset().printer_technology() == ptFFF) ? - this->full_fff_config(apply_extruder, filament_maps, filament_volume_maps) : - this->full_sla_config(); + this->full_fff_config(apply_extruder, filament_maps, filament_volume_maps) : + this->full_sla_config(); } -DynamicPrintConfig PresetBundle::full_config_secure(std::optional> filament_maps) const +DynamicPrintConfig PresetBundle::full_config_secure(std::optional>filament_maps) const { DynamicPrintConfig config = this->full_fff_config(false, filament_maps); - // FIXME legacy, the keys should not be there after conversion to a Physical Printer profile. + //FIXME legacy, the keys should not be there after conversion to a Physical Printer profile. config.erase("print_host"); config.erase("print_host_webui"); config.erase("printhost_apikey"); - config.erase("printhost_cafile"); - config.erase("printhost_user"); - config.erase("printhost_password"); + config.erase("printhost_cafile"); + config.erase("printhost_user"); + config.erase("printhost_password"); config.erase("printhost_port"); return config; } std::vector>> PresetBundle::get_full_flush_matrix(bool with_multiplier) const { - auto full_config = this->full_config(); - int extruder_nums = full_config.option("nozzle_diameter")->values.size(); + auto full_config = this->full_config(); + int extruder_nums = full_config.option("nozzle_diameter")->values.size(); std::vector flush_volume_value = full_config.option("flush_volumes_matrix")->values; - int filament_nums = full_config.option("filament_type")->values.size(); + int filament_nums = full_config.option("filament_type")->values.size(); std::vector>> matrix; for (size_t extruder_id = 0; extruder_id < extruder_nums; ++extruder_id) { - std::vector flush_matrix(cast(get_flush_volumes_matrix(flush_volume_value, extruder_id, extruder_nums))); + std::vector flush_matrix(cast(get_flush_volumes_matrix(flush_volume_value, extruder_id, extruder_nums))); std::vector> wipe_volumes; for (unsigned int i = 0; i < filament_nums; ++i) - wipe_volumes.push_back( - std::vector(flush_matrix.begin() + i * filament_nums, flush_matrix.begin() + (i + 1) * filament_nums)); + wipe_volumes.push_back(std::vector(flush_matrix.begin() + i * filament_nums, flush_matrix.begin() + (i + 1) * filament_nums)); matrix.emplace_back(wipe_volumes); } @@ -4438,9 +4286,9 @@ std::vector>> PresetBundle::get_full_flush_matrix if (with_multiplier) { // Fast purge mode uses flush_multiplier_fast; the default prime_volume_mode==Default // (or the key absent) reads flush_multiplier, so this is inert. - auto* mode_opt = project_config.option>("prime_volume_mode"); - const bool use_fast = mode_opt && mode_opt->value == PrimeVolumeMode::pvmFast; - auto* mult_opt = project_config.option(use_fast ? "flush_multiplier_fast" : "flush_multiplier"); + auto* mode_opt = project_config.option>("prime_volume_mode"); + const bool use_fast = mode_opt && mode_opt->value == PrimeVolumeMode::pvmFast; + auto* mult_opt = project_config.option(use_fast ? "flush_multiplier_fast" : "flush_multiplier"); auto flush_multiplies = mult_opt ? mult_opt->values : project_config.option("flush_multiplier")->values; flush_multiplies.resize(extruder_nums, 1); for (size_t extruder_id = 0; extruder_id < extruder_nums; ++extruder_id) { @@ -4454,38 +4302,41 @@ std::vector>> PresetBundle::get_full_flush_matrix return matrix; } -const std::set ignore_settings_list = {"inherits", "print_settings_id", "filament_settings_id", "printer_settings_id"}; +const std::set ignore_settings_list ={ + "inherits", + "print_settings_id", "filament_settings_id", "printer_settings_id" +}; -DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, - std::optional> filament_maps_new, - std::optional> filament_volume_maps_new) const +DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, std::optional> filament_maps_new, std::optional> filament_volume_maps_new) const { DynamicPrintConfig out; out.apply(FullPrintConfig::defaults()); out.apply(this->prints.get_edited_preset().config); // Add the default filament preset to have the "filament_preset_id" defined. - out.apply(this->filaments.default_preset().config); - out.apply(this->printers.get_edited_preset().config); + out.apply(this->filaments.default_preset().config); + out.apply(this->printers.get_edited_preset().config); out.apply(this->project_config); // BBS - size_t num_filaments = this->filament_presets.size(); + size_t num_filaments = this->filament_presets.size(); std::vector filament_maps = out.option("filament_map")->values; - std::vector filament_volume_maps(num_filaments, (int) nvtStandard); + std::vector filament_volume_maps(num_filaments, (int)nvtStandard); ConfigOptionInts* filament_volume_map_opt = out.option("filament_volume_map"); if (filament_maps_new.has_value()) filament_maps = *filament_maps_new; if (filament_volume_maps_new.has_value()) { - filament_volume_maps = *filament_volume_maps_new; + filament_volume_maps = *filament_volume_maps_new; out.option("filament_volume_map", true)->values = filament_volume_maps; - } else if (filament_volume_map_opt && filament_volume_map_opt->values.size() == num_filaments) + } + else if (filament_volume_map_opt && filament_volume_map_opt->values.size() == num_filaments) filament_volume_maps = filament_volume_map_opt->values; - // in some middle state, they may be different + //in some middle state, they may be different if (filament_maps.size() != num_filaments) { filament_maps.resize(num_filaments, 1); - } else { + } + else { assert(filament_maps.size() == num_filaments); } if (filament_volume_maps.size() != num_filaments) { @@ -4499,35 +4350,32 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, std::vector inherits; std::vector filament_ids; std::vector print_compatible_printers; - // BBS: add logic for settings check between different system presets + //BBS: add logic for settings check between different system presets std::vector different_settings; std::string different_print_settings, different_printer_settings; compatible_printers_condition.emplace_back(this->prints.get_edited_preset().compatible_printers_condition()); - const ConfigOptionStrings* compatible_printers = - (const_cast(this))->prints.get_edited_preset().config.option("compatible_printers", false); + const ConfigOptionStrings* compatible_printers = (const_cast(this))->prints.get_edited_preset().config.option("compatible_printers", false); if (compatible_printers) print_compatible_printers = compatible_printers->values; - // BBS: add logic for settings check between different system presets + //BBS: add logic for settings check between different system presets std::string print_inherits = this->prints.get_edited_preset().inherits(); - inherits.emplace_back(print_inherits); - const Preset* print_parent_preset = this->prints.get_selected_preset_parent(); + inherits .emplace_back(print_inherits); + const Preset* print_parent_preset = this->prints.get_selected_preset_parent(); if (print_parent_preset) { - std::vector dirty_options = this->prints.dirty_options_without_option_list(&(this->prints.get_edited_preset()), - print_parent_preset, ignore_settings_list, - false); + std::vector dirty_options = this->prints.dirty_options_without_option_list(&(this->prints.get_edited_preset()), print_parent_preset, ignore_settings_list, false); if (!dirty_options.empty()) { different_print_settings = Slic3r::escape_strings_cstyle(dirty_options); } } different_settings.emplace_back(different_print_settings); - // BBS: update printer config related with variants + //BBS: update printer config related with variants std::vector> nozzle_volume_types; int extruder_count = 1, extruder_volume_type_count = 1; bool different_extruder = false; if (apply_extruder) { - different_extruder = out.support_different_extruders(extruder_count); + different_extruder = out.support_different_extruders(extruder_count); extruder_volume_type_count = out.get_extruder_nozzle_volume_count(extruder_count, nozzle_volume_types); if ((extruder_count > 1) || different_extruder) { @@ -4539,40 +4387,33 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, // per variant (e.g. X2D machine_max_speed_e/machine_max_acceleration_e). The slicing // path composes variant_2 first and is unaffected; changing the order here would alter // long-standing composed values, so any fix must re-baseline them. - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - printer_options_with_variant_1, "printer_extruder_id", "printer_extruder_variant"); - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - printer_options_with_variant_2, "printer_extruder_id", "printer_extruder_variant", 2); - // update print config related with variants - out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - print_options_with_variant, "print_extruder_id", "print_extruder_variant"); + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, printer_options_with_variant_1, "printer_extruder_id", "printer_extruder_variant"); + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, printer_options_with_variant_2, "printer_extruder_id", "printer_extruder_variant", 2); + //update print config related with variants + out.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, print_options_with_variant, "print_extruder_id", "print_extruder_variant"); } } if (num_filaments <= 1) { - // BBS: update filament config related with variants + //BBS: update filament config related with variants DynamicPrintConfig filament_config = this->filaments.get_edited_preset().config; if (apply_extruder && ((extruder_count > 1) || different_extruder)) - filament_config.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, - filament_options_with_variant, "", "filament_extruder_variant", 1, - filament_maps[0], (NozzleVolumeType) filament_volume_maps[0]); + filament_config.update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, filament_options_with_variant, "", "filament_extruder_variant", 1, filament_maps[0], (NozzleVolumeType)filament_volume_maps[0]); out.apply(filament_config); compatible_printers_condition.emplace_back(this->filaments.get_edited_preset().compatible_printers_condition()); - compatible_prints_condition.emplace_back(this->filaments.get_edited_preset().compatible_prints_condition()); - // BBS: add logic for settings check between different system presets - // std::string filament_inherits = this->filaments.get_edited_preset().inherits(); + compatible_prints_condition .emplace_back(this->filaments.get_edited_preset().compatible_prints_condition()); + //BBS: add logic for settings check between different system presets + //std::string filament_inherits = this->filaments.get_edited_preset().inherits(); std::string current_preset_name = this->filament_presets[0]; - const Preset* preset = this->filaments.find_preset(current_preset_name, true); - std::string filament_inherits = preset->inherits(); - inherits.emplace_back(filament_inherits); + const Preset* preset = this->filaments.find_preset(current_preset_name, true); + std::string filament_inherits = preset->inherits(); + inherits .emplace_back(filament_inherits); filament_ids.emplace_back(this->filaments.get_edited_preset().filament_id); std::string different_filament_settings; - const Preset* filament_parent_preset = this->filaments.get_selected_preset_parent(); + const Preset* filament_parent_preset = this->filaments.get_selected_preset_parent(); if (filament_parent_preset) { - std::vector dirty_options = - this->filaments.dirty_options_without_option_list(&(this->filaments.get_edited_preset()), filament_parent_preset, - ignore_settings_list, false); + std::vector dirty_options = this->filaments.dirty_options_without_option_list(&(this->filaments.get_edited_preset()), filament_parent_preset, ignore_settings_list, false); if (!dirty_options.empty()) { different_filament_settings = Slic3r::escape_strings_cstyle(dirty_options); } @@ -4581,7 +4422,7 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, different_settings.emplace_back(different_filament_settings); std::vector& filament_self_indice = out.option("filament_self_index", true)->values; - int index_size = out.option("filament_extruder_variant")->size(); + int index_size = out.option("filament_extruder_variant")->size(); filament_self_indice.resize(index_size, 1); } else { // Retrieve filament presets and build a single config object for them. @@ -4600,16 +4441,16 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, filament_configs.emplace_back(&(preset->config)); } for (int index = 0; index < num_filaments; index++) { - const DynamicPrintConfig* cfg = filament_configs[index]; - const Preset* preset = filament_presets[index]; + const DynamicPrintConfig *cfg = filament_configs[index]; + const Preset *preset = filament_presets[index]; // The compatible_prints/printers_condition() returns a reference to configuration key, which may not yet exist. - DynamicPrintConfig& cfg_rw = *const_cast(cfg); + DynamicPrintConfig &cfg_rw = *const_cast(cfg); compatible_printers_condition.emplace_back(Preset::compatible_printers_condition(cfg_rw)); - compatible_prints_condition.emplace_back(Preset::compatible_prints_condition(cfg_rw)); + compatible_prints_condition .emplace_back(Preset::compatible_prints_condition(cfg_rw)); - // BBS: add logic for settings check between different system presets + //BBS: add logic for settings check between different system presets std::string filament_inherits = Preset::inherits(cfg_rw); - inherits.emplace_back(filament_inherits); + inherits .emplace_back(filament_inherits); filament_ids.emplace_back(preset->filament_id); std::string different_filament_settings; @@ -4617,13 +4458,15 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, if (preset->is_system || preset->is_default) { bool is_selected = this->filaments.get_selected_preset_name() == preset->name; if (is_selected) { - // use the real preset + //use the real preset filament_parent_preset = const_cast(this)->filaments.find_preset(preset->name, false, true); - } else { + } + else { filament_parent_preset = preset; } - } else if (!filament_inherits.empty()) - filament_parent_preset = const_cast(this)->filaments.find_preset(filament_inherits, false, true); + } + else if (!filament_inherits.empty()) + filament_parent_preset = const_cast(this)->filaments.find_preset(filament_inherits, false, true); if (filament_parent_preset) { std::vector dirty_options = cfg_rw.diff(filament_parent_preset->config); @@ -4632,7 +4475,8 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, while (iter != dirty_options.end()) { if (ignore_settings_list.find(*iter) != ignore_settings_list.end()) { iter = dirty_options.erase(iter); - } else { + } + else { ++iter; } } @@ -4648,22 +4492,19 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, for (size_t i = 0; i < num_filaments; ++i) { filament_temp_configs[i] = *(filament_configs[i]); if (apply_extruder && ((extruder_count > 1) || different_extruder)) - filament_temp_configs[i].update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, - nozzle_volume_types, filament_options_with_variant, "", - "filament_extruder_variant", 1, filament_maps[i], - (NozzleVolumeType) filament_volume_maps[i]); + filament_temp_configs[i].update_values_to_printer_extruders(out, extruder_count, extruder_volume_type_count, nozzle_volume_types, filament_options_with_variant, "", "filament_extruder_variant", 1, filament_maps[i], (NozzleVolumeType)filament_volume_maps[i]); } // loop through options and apply them to the resulting config. std::vector filament_variant_count(num_filaments, 1); - for (const t_config_option_key& key : this->filaments.default_preset().config.keys()) { - if (key == "compatible_prints" || key == "compatible_printers") - continue; + for (const t_config_option_key &key : this->filaments.default_preset().config.keys()) { + if (key == "compatible_prints" || key == "compatible_printers") + continue; // Get a destination option. - ConfigOption* opt_dst = out.option(key, false); + ConfigOption *opt_dst = out.option(key, false); if (opt_dst->is_scalar()) { // Get an option, do not create if it does not exist. - const ConfigOption* opt_src = filament_temp_configs.front().option(key); + const ConfigOption *opt_src = filament_temp_configs.front().option(key); if (opt_src != nullptr) opt_dst->set(opt_src); } else { @@ -4676,10 +4517,10 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, for (size_t i = 0; i < filament_opts.size(); ++i) filament_opts[i] = filament_temp_configs[i].option(key); opt_vec_dst->set(filament_opts); - } else { + } + else { for (size_t i = 0; i < num_filaments; ++i) { - const ConfigOptionVectorBase* filament_option = static_cast( - filament_temp_configs[i].option(key)); + const ConfigOptionVectorBase* filament_option = static_cast(filament_temp_configs[i].option(key)); if (i == 0) opt_vec_dst->set(filament_option); else @@ -4694,9 +4535,9 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, } if (!apply_extruder) { - // append filament_self_index + //append filament_self_index std::vector& filament_self_indice = out.option("filament_self_index", true)->values; - int index_size = out.option("filament_extruder_variant")->size(); + int index_size = out.option("filament_extruder_variant")->size(); filament_self_indice.resize(index_size, 1); int k = 0; for (size_t i = 0; i < num_filaments; i++) { @@ -4707,15 +4548,13 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, } } - // BBS: add logic for settings check between different system presets + //BBS: add logic for settings check between different system presets std::string printer_inherits = this->printers.get_edited_preset().inherits(); // Don't store the "compatible_printers_condition" for the printer profile, there is none. - inherits.emplace_back(printer_inherits); - const Preset* printer_parent_preset = this->printers.get_selected_preset_parent(); + inherits .emplace_back(printer_inherits); + const Preset* printer_parent_preset = this->printers.get_selected_preset_parent(); if (printer_parent_preset) { - std::vector dirty_options = this->printers.dirty_options_without_option_list(&(this->printers.get_edited_preset()), - printer_parent_preset, - ignore_settings_list, false); + std::vector dirty_options = this->printers.dirty_options_without_option_list(&(this->printers.get_edited_preset()), printer_parent_preset, ignore_settings_list, false); if (!dirty_options.empty()) { different_printer_settings = Slic3r::escape_strings_cstyle(dirty_options); } @@ -4728,38 +4567,40 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, out.erase("compatible_printers"); out.erase("compatible_printers_condition"); out.erase("inherits"); - // BBS: add logic for settings check between different system presets + //BBS: add logic for settings check between different system presets out.erase("different_settings_to_system"); static const char* keys[] = {"support_filament", "support_interface_filament", "wipe_tower_filament"}; - for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); ++i) { + for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); ++ i) { std::string key = std::string(keys[i]); - auto* opt = dynamic_cast(out.option(key, false)); + auto *opt = dynamic_cast(out.option(key, false)); assert(opt != nullptr); opt->value = boost::algorithm::clamp(opt->value, 0, int(num_filaments)); } - static const char* keys_with_default[] = {"outer_wall_filament_id", "inner_wall_filament_id", "sparse_infill_filament_id", - "internal_solid_filament_id", "top_surface_filament_id", "bottom_surface_filament_id"}; - for (size_t i = 0; i < sizeof(keys_with_default) / sizeof(keys_with_default[0]); ++i) { + static const char* keys_with_default[] = { + "outer_wall_filament_id", "inner_wall_filament_id", "sparse_infill_filament_id", + "internal_solid_filament_id", "top_surface_filament_id", "bottom_surface_filament_id" + }; + for (size_t i = 0; i < sizeof(keys_with_default) / sizeof(keys_with_default[0]); ++ i) { std::string key = std::string(keys_with_default[i]); - auto* opt = dynamic_cast(out.option(key, false)); + auto *opt = dynamic_cast(out.option(key, false)); assert(opt != nullptr); - if (opt->value < 0 || opt->value > int(num_filaments)) + if(opt->value < 0 || opt->value > int(num_filaments)) opt->value = 0; } - out.option("print_settings_id", true)->value = this->prints.get_selected_preset_name(); + out.option("print_settings_id", true)->value = this->prints.get_selected_preset_name(); out.option("filament_settings_id", true)->values = this->filament_presets; - out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); - out.option("filament_ids", true)->values = filament_ids; - out.option("filament_map", true)->values = filament_maps; + out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); + out.option("filament_ids", true)->values = filament_ids; + out.option("filament_map", true)->values = filament_maps; // Serialize the collected "compatible_printers_condition" and "inherits" fields. // There will be 1 + num_exturders fields for "inherits" and 2 + num_extruders for "compatible_printers_condition" stored. // The vector will not be stored if all fields are empty strings. - auto add_if_some_non_empty = [&out](std::vector&& values, const std::string& key) { + auto add_if_some_non_empty = [&out](std::vector &&values, const std::string &key) { bool nonempty = false; - for (const std::string& v : values) - if (!v.empty()) { + for (const std::string &v : values) + if (! v.empty()) { nonempty = true; break; } @@ -4767,14 +4608,14 @@ DynamicPrintConfig PresetBundle::full_fff_config(bool apply_extruder, out.set_key_value(key, new ConfigOptionStrings(std::move(values))); }; add_if_some_non_empty(std::move(compatible_printers_condition), "compatible_machine_expression_group"); - add_if_some_non_empty(std::move(compatible_prints_condition), "compatible_process_expression_group"); - add_if_some_non_empty(std::move(inherits), "inherits_group"); - // BBS: add logic for settings check between different system presets - add_if_some_non_empty(std::move(different_settings), "different_settings_to_system"); - add_if_some_non_empty(std::move(print_compatible_printers), "print_compatible_printers"); - out.option("extruder_ams_count", true)->values = save_extruder_ams_count_to_string(this->extruder_ams_counts); + add_if_some_non_empty(std::move(compatible_prints_condition), "compatible_process_expression_group"); + add_if_some_non_empty(std::move(inherits), "inherits_group"); + //BBS: add logic for settings check between different system presets + add_if_some_non_empty(std::move(different_settings), "different_settings_to_system"); + add_if_some_non_empty(std::move(print_compatible_printers), "print_compatible_printers"); + out.option("extruder_ams_count", true)->values = save_extruder_ams_count_to_string(this->extruder_ams_counts); - out.option("printer_technology", true)->value = ptFFF; + out.option("printer_technology", true)->value = ptFFF; return out; } @@ -4786,36 +4627,35 @@ DynamicPrintConfig PresetBundle::full_sla_config() const out.apply(this->sla_materials.get_edited_preset().config); out.apply(this->printers.get_edited_preset().config); // There are no project configuration values as of now, the project_config is reserved for FFF printers. - // out.apply(this->project_config); +// out.apply(this->project_config); - // Collect the "compatible_printers_condition" and "inherits" values over all presets (sla_prints, sla_materials, printers) into a - // single vector. + // Collect the "compatible_printers_condition" and "inherits" values over all presets (sla_prints, sla_materials, printers) into a single vector. std::vector compatible_printers_condition; - std::vector compatible_prints_condition; + std::vector compatible_prints_condition; std::vector inherits; compatible_printers_condition.emplace_back(this->sla_prints.get_edited_preset().compatible_printers_condition()); - inherits.emplace_back(this->sla_prints.get_edited_preset().inherits()); + inherits .emplace_back(this->sla_prints.get_edited_preset().inherits()); compatible_printers_condition.emplace_back(this->sla_materials.get_edited_preset().compatible_printers_condition()); - compatible_prints_condition.emplace_back(this->sla_materials.get_edited_preset().compatible_prints_condition()); - inherits.emplace_back(this->sla_materials.get_edited_preset().inherits()); - inherits.emplace_back(this->printers.get_edited_preset().inherits()); + compatible_prints_condition .emplace_back(this->sla_materials.get_edited_preset().compatible_prints_condition()); + inherits .emplace_back(this->sla_materials.get_edited_preset().inherits()); + inherits .emplace_back(this->printers.get_edited_preset().inherits()); // These two value types clash between the print and filament profiles. They should be renamed. out.erase("compatible_printers"); out.erase("compatible_printers_condition"); out.erase("inherits"); - out.option("sla_print_settings_id", true)->value = this->sla_prints.get_selected_preset_name(); - out.option("sla_material_settings_id", true)->value = this->sla_materials.get_selected_preset_name(); - out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); + out.option("sla_print_settings_id", true)->value = this->sla_prints.get_selected_preset_name(); + out.option("sla_material_settings_id", true)->value = this->sla_materials.get_selected_preset_name(); + out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); // Serialize the collected "compatible_printers_condition" and "inherits" fields. // There will be 1 + num_exturders fields for "inherits" and 2 + num_extruders for "compatible_printers_condition" stored. // The vector will not be stored if all fields are empty strings. - auto add_if_some_non_empty = [&out](std::vector&& values, const std::string& key) { + auto add_if_some_non_empty = [&out](std::vector &&values, const std::string &key) { bool nonempty = false; - for (const std::string& v : values) - if (!v.empty()) { + for (const std::string &v : values) + if (! v.empty()) { nonempty = true; break; } @@ -4823,49 +4663,48 @@ DynamicPrintConfig PresetBundle::full_sla_config() const out.set_key_value(key, new ConfigOptionStrings(std::move(values))); }; add_if_some_non_empty(std::move(compatible_printers_condition), "compatible_machine_expression_group"); - add_if_some_non_empty(std::move(compatible_prints_condition), "compatible_process_expression_group"); - add_if_some_non_empty(std::move(inherits), "inherits_group"); + add_if_some_non_empty(std::move(compatible_prints_condition), "compatible_process_expression_group"); + add_if_some_non_empty(std::move(inherits), "inherits_group"); - out.option("printer_technology", true)->value = ptSLA; - return out; + out.option("printer_technology", true)->value = ptSLA; + return out; } // Load an external config file containing the print, filament and printer presets. // Instead of a config file, a G-code may be loaded containing the full set of parameters. // In the future the configuration will likely be read from an AMF file as well. // If the file is loaded successfully, its print / filament / printer profiles will be activated. -ConfigSubstitutions PresetBundle::load_config_file(const std::string& path, ForwardCompatibilitySubstitutionRule compatibility_rule) +ConfigSubstitutions PresetBundle::load_config_file(const std::string &path, ForwardCompatibilitySubstitutionRule compatibility_rule) { - if (is_gcode_file(path)) { - DynamicPrintConfig config; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(" enter, gcodefile %1%, compatibility_rule %2%") % path % compatibility_rule; - config.apply(FullPrintConfig::defaults()); + if (is_gcode_file(path)) { + DynamicPrintConfig config; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, gcodefile %1%, compatibility_rule %2%")%path %compatibility_rule; + config.apply(FullPrintConfig::defaults()); ConfigSubstitutions config_substitutions = config.load_from_gcode_file(path, compatibility_rule); Preset::normalize(config); - load_config_file_config(path, true, std::move(config)); - return config_substitutions; - } + load_config_file_config(path, true, std::move(config)); + return config_substitutions; + } - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" can not load config file %1% not from gcode") % path; + //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); - + return ConfigSubstitutions{}; } -// some filament presets split from one to sperate ones -// following map recording these filament presets -// for example: previously ''Bambu PLA Basic @BBL H2D 0.6 nozzle' was saved in ''Bambu PLA Basic @BBL H2D' with 0.4 -static std::map> filament_preset_convert = - {{"Bambu Lab H2D 0.6 nozzle", - {{"Bambu PLA Basic @BBL H2D", "Bambu PLA Basic @BBL H2D 0.6 nozzle"}, - {"Bambu PLA Matte @BBL H2D", "Bambu PLA Matte @BBL H2D 0.6 nozzle"}, - {"Bambu ABS @BBL H2D", "Bambu ABS @BBL H2D 0.6 nozzle"}}}, - {"Bambu Lab H2D 0.8 nozzle", - {{"Bambu PETG HF @BBL H2D 0.6 nozzle", "Bambu PETG HF @BBL H2D 0.8 nozzle"}, - {"Bambu ASA @BBL H2D 0.6 nozzle", "Bambu ASA @BBL H2D 0.8 nozzle"}}}}; + +//some filament presets split from one to sperate ones +//following map recording these filament presets +//for example: previously ''Bambu PLA Basic @BBL H2D 0.6 nozzle' was saved in ''Bambu PLA Basic @BBL H2D' with 0.4 +static std::map> filament_preset_convert = { +{"Bambu Lab H2D 0.6 nozzle", {{"Bambu PLA Basic @BBL H2D", "Bambu PLA Basic @BBL H2D 0.6 nozzle"}, + {"Bambu PLA Matte @BBL H2D", "Bambu PLA Matte @BBL H2D 0.6 nozzle"}, + {"Bambu ABS @BBL H2D", "Bambu ABS @BBL H2D 0.6 nozzle"}}}, +{"Bambu Lab H2D 0.8 nozzle", {{"Bambu PETG HF @BBL H2D 0.6 nozzle", "Bambu PETG HF @BBL H2D 0.8 nozzle"}, + {"Bambu ASA @BBL H2D 0.6 nozzle", "Bambu ASA @BBL H2D 0.8 nozzle"}}} +}; // Relocate the per-slot cells of one mixed-filament project vector inside the imported // config, applying every authored-slot -> destination move at once. Each move reads its @@ -4910,26 +4749,24 @@ static void apply_mixed_config_relocations(DynamicPrintConfig& } } -// convert the old filament preset to new one after split + +//convert the old filament preset to new one after split static void convert_filament_preset_name(std::string& machine_name, std::string& filament_name) { auto machine_iter = filament_preset_convert.find(machine_name); - if (machine_iter != filament_preset_convert.end()) { + if (machine_iter != filament_preset_convert.end()) + { std::map& filament_maps = machine_iter->second; - auto filament_iter = filament_maps.find(filament_name); - if (filament_iter != filament_maps.end()) { + auto filament_iter = filament_maps.find(filament_name); + if (filament_iter != filament_maps.end()) + { filament_name = filament_iter->second; } } } // Load a config file from a boost property_tree. This is a private method called from load_config_file. // is_external == false on if called from ConfigWizard -void PresetBundle::load_config_file_config(const std::string& name_or_path, - bool is_external, - DynamicPrintConfig&& config, - Semver file_version, - bool selected, - PublishedConfig* published_config) +void PresetBundle::load_config_file_config(const std::string &name_or_path, bool is_external, DynamicPrintConfig &&config, Semver file_version, bool selected, PublishedConfig *published_config) { PrinterTechnology printer_technology = Preset::printer_technology(config); @@ -4937,8 +4774,8 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // the author-selected published keys onto the edited presets. const bool is_published = published_config != nullptr && published_config->published; - auto clear_compatible_printers = [](DynamicPrintConfig& config) { - ConfigOption* opt_compatible = config.optptr("compatible_printers"); + auto clear_compatible_printers = [](DynamicPrintConfig& config){ + ConfigOption *opt_compatible = config.optptr("compatible_printers"); if (opt_compatible != nullptr) { assert(opt_compatible->type() == coStrings); if (opt_compatible->type() == coStrings) @@ -4960,49 +4797,44 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, #else // BBS: use filament_colour insteadof filament_settings_id, filament_settings_id sometimes is not generated ConfigOptionStrings* filament_colour_option = config.option("filament_colour"); - size_t num_filaments = filament_colour_option ? filament_colour_option->size() : 0; + size_t num_filaments = filament_colour_option?filament_colour_option->size():0; if (num_filaments == 0) throw Slic3r::RuntimeError(std::string("Invalid configuration file: ") + name_or_path); #endif - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(": , name_or_path %1%, is_external %2%, num_filaments %3%") % name_or_path % is_external % - num_filaments; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": , name_or_path %1%, is_external %2%, num_filaments %3%") % name_or_path % is_external % num_filaments; // Make a copy of the "compatible_machine_expression_group" and "inherits_group" vectors, which // accumulate values over all presets (print, filaments, printers). // These values will be distributed into their particular presets when loading. - std::vector compatible_printers_condition_values = std::move( - config.option("compatible_machine_expression_group", true)->values); - std::vector compatible_prints_condition_values = std::move( - config.option("compatible_process_expression_group", true)->values); - std::vector inherits_values = std::move(config.option("inherits_group", true)->values); - std::vector filament_ids = std::move(config.option("filament_ids", true)->values); - std::vector print_compatible_printers = std::move( - config.option("print_compatible_printers", true)->values); - // BBS: add different settings check logic - bool has_different_settings_to_system = config.option("different_settings_to_system") ? true : false; - std::vector different_values = std::move(config.option("different_settings_to_system", true)->values); - std::string& compatible_printers_condition = Preset::compatible_printers_condition(config); - std::string& compatible_prints_condition = Preset::compatible_prints_condition(config); - std::string& inherits = Preset::inherits(config); + std::vector compatible_printers_condition_values = std::move(config.option("compatible_machine_expression_group", true)->values); + std::vector compatible_prints_condition_values = std::move(config.option("compatible_process_expression_group", true)->values); + std::vector inherits_values = std::move(config.option("inherits_group", true)->values); + std::vector filament_ids = std::move(config.option("filament_ids", true)->values); + std::vector print_compatible_printers = std::move(config.option("print_compatible_printers", true)->values); + //BBS: add different settings check logic + bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; + std::vector different_values = std::move(config.option("different_settings_to_system", true)->values); + std::string &compatible_printers_condition = Preset::compatible_printers_condition(config); + std::string &compatible_prints_condition = Preset::compatible_prints_condition(config); + std::string &inherits = Preset::inherits(config); compatible_printers_condition_values.resize(num_filaments + 2, std::string()); compatible_prints_condition_values.resize(num_filaments, std::string()); inherits_values.resize(num_filaments + 2, std::string()); different_values.resize(num_filaments + 2, std::string()); filament_ids.resize(num_filaments, std::string()); // The "default_filament_profile" will be later extracted into the printer profile. - switch (printer_technology) { - case ptFFF: - config.option("default_print_profile", true); + switch (printer_technology) { + case ptFFF: + config.option("default_print_profile", true); config.option("default_filament_profile", true); - break; - case ptSLA: - config.option("default_sla_print_profile", true); - config.option("default_sla_material_profile", true); - break; + break; + case ptSLA: + config.option("default_sla_print_profile", true); + config.option("default_sla_material_profile", true); + break; default: break; - } + } bool process_multi_extruder = false; std::vector filament_variant_index; @@ -5022,15 +4854,13 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, filament_extruder_variant.resize(num_filaments, "Direct Drive Standard"); } if (config.option("extruder_variant_list")) { - // 3mf support multiple extruder logic - size_t extruder_count = config.option("nozzle_diameter")->values.size(); + //3mf support multiple extruder logic + size_t extruder_count = config.option("nozzle_diameter")->values.size(); extruder_variant_count = config.option("filament_extruder_variant", true)->size(); - if ((extruder_variant_count != filament_self_indice.size()) || (extruder_variant_count < num_filaments)) { + if ((extruder_variant_count != filament_self_indice.size()) + || (extruder_variant_count < num_filaments)) { assert(false); - BOOST_LOG_TRIVIAL(error) - << __FUNCTION__ - << boost::format(": invalid config file %1%, can not find suitable filament_extruder_variant or filament_self_index") % - name_or_path; + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(": invalid config file %1%, can not find suitable filament_extruder_variant or filament_self_index") % name_or_path; throw Slic3r::RuntimeError(std::string("Invalid configuration file: ") + name_or_path); } if (num_filaments != extruder_variant_count) { @@ -5048,12 +4878,13 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, } } } - // no need to parse extruder_ams_count + //no need to parse extruder_ams_count std::vector extruder_ams_count = std::move(config.option("extruder_ams_count", true)->values); config.erase("extruder_ams_count"); if (this->extruder_ams_counts.empty()) this->extruder_ams_counts = get_extruder_ams_count(extruder_ams_count); + // 1) Create a name from the file name. // Keep the suffix (.ini, .gcode, .amf, .3mf etc) to differentiate it from the normal profiles. std::string name = is_external ? boost::filesystem::path(name_or_path).filename().string() : name_or_path; @@ -5061,62 +4892,63 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // 2) If the loading succeeded, split and load the config into print / filament / printer settings. // First load the print and printer presets. - auto load_preset = [&config, &inherits, &inherits_values, &compatible_printers_condition, &compatible_printers_condition_values, - &compatible_prints_condition, &compatible_prints_condition_values, is_external, &name, &name_or_path, file_version, - selected](PresetCollection& presets, size_t idx, const std::string& key, - const std::set& different_keys, std::string filament_id) { - // Split the "compatible_printers_condition" and "inherits" values one by one from a single vector to the print & printer profiles. - inherits = inherits_values[idx]; - compatible_printers_condition = compatible_printers_condition_values[idx]; + auto load_preset = + [&config, &inherits, &inherits_values, + &compatible_printers_condition, &compatible_printers_condition_values, + &compatible_prints_condition, &compatible_prints_condition_values, + is_external, &name, &name_or_path, file_version, selected] + (PresetCollection &presets, size_t idx, const std::string &key, const std::set &different_keys, std::string filament_id) { + // Split the "compatible_printers_condition" and "inherits" values one by one from a single vector to the print & printer profiles. + inherits = inherits_values[idx]; + compatible_printers_condition = compatible_printers_condition_values[idx]; if (idx > 0 && idx - 1 < compatible_prints_condition_values.size()) compatible_prints_condition = compatible_prints_condition_values[idx - 1]; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(": , name %1%, is_external %2%, inherits %3%") % name % is_external % inherits; - if (is_external) - presets.load_external_preset(name_or_path, name, config.opt_string(key, true), config, different_keys, - PresetCollection::LoadAndSelect::Always, file_version, filament_id); - else + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": , name %1%, is_external %2%, inherits %3%")%name %is_external %inherits; + if (is_external) + presets.load_external_preset(name_or_path, name, config.opt_string(key, true), config, different_keys, PresetCollection::LoadAndSelect::Always, file_version, filament_id); + else presets.load_preset(presets.path_from_name(name, inherits.empty()), name, config, selected, file_version).save(nullptr); - }; + }; switch (Preset::printer_technology(config)) { - case ptFFF: { + case ptFFF: + { // A "published" 3MF project keeps the user's currently-selected presets, so the // print / printer / filament presets are NOT loaded from the file. Only the // project config values and the published keys are applied below. if (!is_published) { - // BBS: add different settings logic + //BBS: add different settings logic BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load print preset from print_settings_id"); std::vector print_different_keys_vector; std::string print_different_settings = different_values[0]; Slic3r::unescape_strings_cstyle(print_different_settings, print_different_keys_vector); std::set print_different_keys_set(print_different_keys_vector.begin(), print_different_keys_vector.end()); - // if (!has_different_settings_to_system) { - // print_different_keys_set.clear(); - // } - // else - print_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + //if (!has_different_settings_to_system) { + // print_different_keys_set.clear(); + //} + //else + print_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); if (!print_compatible_printers.empty()) { ConfigOptionStrings* compatible_printers = config.option("compatible_printers", true); - compatible_printers->values = print_compatible_printers; + compatible_printers->values = print_compatible_printers; } load_preset(this->prints, 0, "print_settings_id", print_different_keys_set, std::string()); - // clear compatible printers + //clear compatible printers clear_compatible_printers(config); std::vector printer_different_keys_vector; std::string printer_different_settings = different_values[num_filaments + 1]; Slic3r::unescape_strings_cstyle(printer_different_settings, printer_different_keys_vector); std::set printer_different_keys_set(printer_different_keys_vector.begin(), printer_different_keys_vector.end()); - // if (!has_different_settings_to_system) { - // printer_different_keys_set.clear(); - // } - // else - printer_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); - // BBS: add config related logs + //if (!has_different_settings_to_system) { + // printer_different_keys_set.clear(); + //} + //else + printer_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load printer preset from printer_settings_id"); load_preset(this->printers, num_filaments + 1, "printer_settings_id", printer_different_keys_set, std::string()); @@ -5130,55 +4962,51 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // Split the "compatible_printers_condition" and "inherits" values from the cummulative vectors to separate filament presets. inherits = inherits_values[1]; compatible_printers_condition = compatible_printers_condition_values[1]; - compatible_prints_condition = compatible_prints_condition_values.front(); - Preset* loaded = nullptr; + compatible_prints_condition = compatible_prints_condition_values.front(); + Preset *loaded = nullptr; - // BBS: add different settings logic + //BBS: add different settings logic std::vector filament_different_keys_vector; std::string filament_different_settings = different_values[1]; Slic3r::unescape_strings_cstyle(filament_different_settings, filament_different_keys_vector); - std::set filament_different_keys_set(filament_different_keys_vector.begin(), - filament_different_keys_vector.end()); - // if (!has_different_settings_to_system) { - // filament_different_keys_set.clear(); - // } - // else - filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + std::set filament_different_keys_set(filament_different_keys_vector.begin(), filament_different_keys_vector.end()); + //if (!has_different_settings_to_system) { + // filament_different_keys_set.clear(); + //} + //else + filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); std::string filament_id = filament_ids[0]; - // BBS: add config related logs + //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load single filament preset from filament_settings_id"); if (is_external) { if (inherits.empty()) convert_filament_preset_name(old_machine_profile_name->value, old_filament_profile_names->values.front()); else convert_filament_preset_name(old_machine_profile_name->value, inherits); - loaded = this->filaments - .load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config, - filament_different_keys_set, PresetCollection::LoadAndSelect::Always, file_version, - filament_id) - .first; - } else { - // called from Config Wizard. - loaded = &this->filaments.load_preset(this->filaments.path_from_name(name, inherits.empty()), name, config, true, - file_version); - loaded->save(nullptr); + loaded = this->filaments.load_external_preset(name_or_path, name, old_filament_profile_names->values.front(), config, filament_different_keys_set, PresetCollection::LoadAndSelect::Always, file_version, filament_id).first; } + else { + // called from Config Wizard. + loaded= &this->filaments.load_preset(this->filaments.path_from_name(name, inherits.empty()), name, config, true, file_version); + loaded->save(nullptr); + } this->filament_presets.clear(); - this->filament_presets.emplace_back(loaded->name); + this->filament_presets.emplace_back(loaded->name); } else { assert(is_external); // Split the filament presets, load each of them separately. std::vector configs(num_filaments, this->filaments.default_preset().config); // loop through options and scatter them into configs. - for (const t_config_option_key& key : this->filaments.default_preset().config.keys()) { - ConfigOption* other_opt = config.option(key); + for (const t_config_option_key &key : this->filaments.default_preset().config.keys()) { + ConfigOption *other_opt = config.option(key); if (other_opt == nullptr) continue; if (other_opt->is_scalar()) { - for (size_t i = 0; i < configs.size(); ++i) + for (size_t i = 0; i < configs.size(); ++ i) configs[i].option(key, false)->set(other_opt); - } else if (key != "compatible_printers" && key != "compatible_prints") { + } + else if (key != "compatible_printers" && key != "compatible_prints") { for (size_t i = 0; i < configs.size(); ++i) { if (process_multi_extruder && (filament_options_with_variant.find(key) != filament_options_with_variant.end())) { ConfigOptionVectorBase* other_opt_vec = static_cast(other_opt); @@ -5186,9 +5014,9 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, other_opt_vec->resize(extruder_variant_count); } size_t next_index = (i < (configs.size() - 1)) ? filament_variant_index[i + 1] : extruder_variant_count; - static_cast(configs[i].option(key, false)) - ->set(other_opt, filament_variant_index[i], next_index - filament_variant_index[i]); - } else + static_cast(configs[i].option(key, false))->set(other_opt, filament_variant_index[i], next_index - filament_variant_index[i]); + } + else static_cast(configs[i].option(key, false))->set_at(other_opt, 0, i); } } @@ -5199,26 +5027,25 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // in a case when next added preset take a place of previosly selected preset, // we should add presets from last to first bool any_modified = false; - // BBS: add config related logs + //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": load multiple filament preset from filament_settings_id"); - for (int i = (int) configs.size() - 1; i >= 0; i--) { - DynamicPrintConfig& cfg = configs[i]; + for (int i = (int)configs.size()-1; i >= 0; i--) { + DynamicPrintConfig &cfg = configs[i]; // Split the "compatible_printers_condition" and "inherits" from the cummulative vectors to separate filament presets. cfg.opt_string("compatible_printers_condition", true) = compatible_printers_condition_values[i + 1]; - cfg.opt_string("compatible_prints_condition", true) = compatible_prints_condition_values[i]; + cfg.opt_string("compatible_prints_condition", true) = compatible_prints_condition_values[i]; cfg.opt_string("inherits", true) = inherits_values[i + 1]; - // BBS: add different settings logic + //BBS: add different settings logic std::vector filament_different_keys_vector; - std::string filament_different_settings = different_values[i + 1]; + std::string filament_different_settings = different_values[i+1]; Slic3r::unescape_strings_cstyle(filament_different_settings, filament_different_keys_vector); - std::set filament_different_keys_set(filament_different_keys_vector.begin(), - filament_different_keys_vector.end()); - // if (!has_different_settings_to_system) { - // filament_different_keys_set.clear(); - // } - // else - filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); + std::set filament_different_keys_set(filament_different_keys_vector.begin(), filament_different_keys_vector.end()); + //if (!has_different_settings_to_system) { + // filament_different_keys_set.clear(); + //} + //else + filament_different_keys_set.insert(ignore_settings_list.begin(), ignore_settings_list.end()); std::string filament_id = filament_ids[i]; @@ -5229,15 +5056,16 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, else convert_filament_preset_name(old_machine_profile_name->value, filament_inherit); auto [loaded, modified] = this->filaments.load_external_preset(name_or_path, name, - (i < int(old_filament_profile_names->values.size())) ? - old_filament_profile_names->values[i] : - "", - std::move(cfg), filament_different_keys_set, - i == 0 ? PresetCollection::LoadAndSelect::Always : - any_modified ? - PresetCollection::LoadAndSelect::Never : - PresetCollection::LoadAndSelect::OnlyIfModified, - file_version, filament_id); + (i < int(old_filament_profile_names->values.size())) ? old_filament_profile_names->values[i] : "", + std::move(cfg), + filament_different_keys_set, + i == 0 ? + PresetCollection::LoadAndSelect::Always : + any_modified ? + PresetCollection::LoadAndSelect::Never : + PresetCollection::LoadAndSelect::OnlyIfModified, + file_version, + filament_id); any_modified |= modified; this->filament_presets[i] = loaded->name; } @@ -5250,17 +5078,19 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, break; } - case ptSLA: { + case ptSLA: + { /*std::set different_keys_set; load_preset(this->sla_prints, 0, "sla_print_settings_id", different_keys_set); load_preset(this->sla_materials, 1, "sla_material_settings_id", different_keys_set); load_preset(this->printers, 2, "printer_settings_id", different_keys_set);*/ break; } - default: break; + default: + break; } - this->update_compatible(PresetSelectCompatibleType::Never); + this->update_compatible(PresetSelectCompatibleType::Never); this->update_multi_material_filament_presets(); // A "published" 3MF project overlays the author-selected published keys onto the user's @@ -6369,23 +6199,23 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, this->filaments.select_preset_by_name(this->filament_presets.front(), false); } - // BBS - // const std::string &physical_printer = config.option("physical_printer_settings_id", true)->value; + + //BBS + //const std::string &physical_printer = config.option("physical_printer_settings_id", true)->value; const std::string physical_printer; if (!is_published) { if (this->printers.get_edited_preset().is_external || physical_printer.empty()) { this->physical_printers.unselect_printer(); } else { // Activate the physical printer profile if possible. - PhysicalPrinter* pp = this->physical_printers.find_printer(physical_printer, true); - if (pp != nullptr && std::find(pp->preset_names.begin(), pp->preset_names.end(), this->printers.get_edited_preset().name) != - pp->preset_names.end()) + PhysicalPrinter *pp = this->physical_printers.find_printer(physical_printer, true); + if (pp != nullptr && std::find(pp->preset_names.begin(), pp->preset_names.end(), this->printers.get_edited_preset().name) != pp->preset_names.end()) this->physical_printers.select_printer(pp->name, this->printers.get_edited_preset().name); else this->physical_printers.unselect_printer(); } } - // BBS: add config related logs + //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": finished"); } @@ -6396,31 +6226,27 @@ void PresetBundle::load_config_file_config(const std::string& name_or_path, // (config_maps) or against base_bundle's filament library, flattens, validates // and registers the preset. Returns the reason loading failed, empty on // success. -std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, - const std::string& path, - const std::string& vendor_name, - const PresetBundle* base_bundle, - LoadConfigBundleAttributes flags, - ConfigSubstitutionContext& substitution_context, - PresetsConfigSubstitutions& substitutions, - std::map& config_maps, - std::map& filament_id_maps, - PresetCollection* presets_collection, - size_t& count, - bool is_from_lib, - const std::set* retain_configs) +std::string PresetBundle::load_vendor_preset( + const CachedPreset& entry, + const std::string& path, const std::string& vendor_name, + const PresetBundle* base_bundle, + LoadConfigBundleAttributes flags, + ConfigSubstitutionContext& substitution_context, PresetsConfigSubstitutions& substitutions, + std::map& config_maps, std::map& filament_id_maps, + PresetCollection* presets_collection, size_t& count, bool is_from_lib, + const std::set* retain_configs) { - const VendorProfile* current_vendor_profile = &this->vendors.at(vendor_name); - const std::string subfile = path + "/" + vendor_name + "/" + entry.sub_path; - const std::string& preset_name = entry.name; - std::string alias_name, filament_id = entry.filament_id; - std::vector renamed_from = entry.renamed_from; - DynamicPrintConfig config; + const VendorProfile* current_vendor_profile = &this->vendors.at(vendor_name); + const std::string subfile = path + "/" + vendor_name + "/" + entry.sub_path; + const std::string& preset_name = entry.name; + std::string alias_name, filament_id = entry.filament_id; + std::vector renamed_from = entry.renamed_from; + DynamicPrintConfig config; const DynamicPrintConfig* default_config = nullptr; - std::string reason; + std::string reason; - // check whether it inherits other preset or not - if (!entry.inherits.empty()) { + //check whether it inherits other preset or not + if (! entry.inherits.empty()) { auto it2 = config_maps.find(entry.inherits); if (it2 != config_maps.end()) default_config = &(it2->second); @@ -6442,14 +6268,16 @@ std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, } } } - } else { + } + else { ++m_errors; BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": can not find inherits " << entry.inherits << " for " << preset_name; // throw ConfigurationError(format("can not find inherits %1% for %2%", inherits, preset_name)); reason = "Can not find inherits: " + entry.inherits; return reason; } - } else { + } + else { if (presets_collection->type() == Preset::TYPE_PRINTER) default_config = &presets_collection->default_preset_for(entry.config_src).config; else @@ -6474,7 +6302,7 @@ std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, return reason; } if (config.has("alias")) - alias_name = (dynamic_cast(config.option("alias")))->value; + alias_name = (dynamic_cast(config.option("alias")))->value; Preset::normalize(config); // Report configuration fields, which are misplaced into a wrong group. @@ -6488,36 +6316,37 @@ std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, if (presets_collection->type() == Preset::TYPE_PRINTER) { // 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"); + auto printer_model = config.opt_string("printer_model"); if (printer_model.empty()) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" defines no printer model, it will be ignored."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" defines no printer model, it will be ignored."; reason = std::string("can not find printer_model"); return reason; } auto printer_variant = config.opt_string("printer_variant"); if (printer_variant.empty()) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" defines no printer variant, it will be ignored."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" defines no printer variant, it will be ignored."; reason = std::string("can not find printer_variant"); return reason; } auto it_model = std::find_if(current_vendor_profile->models.cbegin(), current_vendor_profile->models.cend(), - [&](const VendorProfile::PrinterModel& m) { return m.id == printer_model; }); + [&](const VendorProfile::PrinterModel &m) { return m.id == printer_model; } + ); if (it_model == current_vendor_profile->models.end()) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" defines invalid printer model \"" << printer_model << "\", it will be ignored."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" defines invalid printer model \"" << printer_model << "\", it will be ignored."; reason = std::string("can not find printer model in vendor profile"); return reason; } auto it_variant = it_model->variant(printer_variant); if (it_variant == nullptr) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" defines invalid printer variant \"" << printer_variant << "\", it will be ignored."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" defines invalid printer variant \"" << printer_variant << "\", it will be ignored."; reason = std::string("can not find printer_variant in vendor profile"); return reason; } @@ -6530,74 +6359,71 @@ std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, // validated, not variant uniqueness. Validation-only so the app keeps loading existing // profiles unchanged. if (validation_mode && entry.instantiation == "true") { - const auto* nd = config.option("nozzle_diameter"); + const auto *nd = config.option("nozzle_diameter"); std::set nozzles, variant_nozzles; if (nd != nullptr) nozzles.insert(nd->values.begin(), nd->values.end()); std::vector variant_tokens; boost::algorithm::split(variant_tokens, printer_variant, boost::algorithm::is_any_of("+")); bool variant_ok = true; // printer_variant is already guaranteed non-empty above - for (const std::string& tok : variant_tokens) { + for (const std::string &tok : variant_tokens) { size_t consumed = 0; - double d = string_to_double_decimal_point(tok, &consumed); + double d = string_to_double_decimal_point(tok, &consumed); // Require a leading numeric diameter; a trailing suffix (e.g. "HF") is allowed. - if (consumed == 0) { - variant_ok = false; - break; - } + if (consumed == 0) { variant_ok = false; break; } variant_nozzles.insert(d); } if (!variant_ok || variant_nozzles != nozzles) { ++m_errors; - BOOST_LOG_TRIVIAL(error) - << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" has printer_variant \"" << printer_variant << "\" that does not match its nozzle_diameter \"" - << (nd ? nd->serialize() : std::string()) - << "\". " - "printer_variant must begin with the nozzle diameter, optionally followed by a non-numeric suffix " - "(e.g. \"0.4\", \"0.8HF\"); for multi-nozzle printers, join the per-nozzle diameters with \"+\" in " - "nozzle order (e.g. \"0.4+0.6\")."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" has printer_variant \"" << printer_variant << + "\" that does not match its nozzle_diameter \"" << (nd ? nd->serialize() : std::string()) << "\". " + "printer_variant must begin with the nozzle diameter, optionally followed by a non-numeric suffix " + "(e.g. \"0.4\", \"0.8HF\"); for multi-nozzle printers, join the per-nozzle diameters with \"+\" in " + "nozzle order (e.g. \"0.4+0.6\")."; } } } - const Preset* preset_existing = presets_collection->find_preset(preset_name, false); + const Preset *preset_existing = presets_collection->find_preset(preset_name, false); if (preset_existing != nullptr) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << preset_name - << "\" has already been loaded from another Config Bundle."; + BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << + preset_name << "\" has already been loaded from another Config Bundle."; reason = std::string("duplicated defines"); return reason; } - auto file_path = (boost::filesystem::path(data_dir()) / PRESET_SYSTEM_DIR / vendor_name / entry.sub_path).make_preferred(); - if (validation_mode) + auto file_path = (boost::filesystem::path(data_dir()) /PRESET_SYSTEM_DIR/ vendor_name / entry.sub_path).make_preferred(); + if(validation_mode) file_path = (boost::filesystem::path(data_dir()) / vendor_name / entry.sub_path).make_preferred(); // Load the preset into the list of presets, save it to disk. - Preset& loaded = presets_collection->load_preset(file_path.string(), preset_name, std::move(config), false); + Preset &loaded = presets_collection->load_preset(file_path.string(), preset_name, std::move(config), false); if (flags.has(LoadConfigBundleAttribute::LoadSystem)) { - loaded.is_system = true; - loaded.vendor = current_vendor_profile; - loaded.version = current_vendor_profile->config_version; + loaded.is_system = true; + loaded.vendor = current_vendor_profile; + loaded.version = current_vendor_profile->config_version; loaded.description = entry.description; - loaded.setting_id = entry.setting_id; + loaded.setting_id = entry.setting_id; // Derive the preset setting_id on the fly when a profile ships without one, // matching scripts/assign_vendor_setting_ids.py. Only instantiated presets // carry an id; non-instantiated base profiles return earlier above. This never // touches the per-user cloud-sync setting_id written into user .info files. if (loaded.setting_id.empty() && entry.instantiation == "true") - loaded.setting_id = generate_preset_setting_id(vendor_name, Preset::get_type_string(presets_collection->type()), preset_name); - loaded.filament_id = filament_id; + loaded.setting_id = generate_preset_setting_id( + vendor_name, Preset::get_type_string(presets_collection->type()), preset_name); + loaded.filament_id = filament_id; loaded.m_from_orca_filament_lib = is_from_lib; BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << " " << __LINE__ << ", " << loaded.name << " load filament_id: " << filament_id; if (presets_collection->type() == Preset::TYPE_FILAMENT) { if (filament_id.empty() && "Template" != vendor_name) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": can not find filament_id for " << preset_name; - // throw ConfigurationError(format("can not find inherits %1% for %2%", inherits, preset_name)); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": can not find filament_id for " << preset_name; + //throw ConfigurationError(format("can not find inherits %1% for %2%", inherits, preset_name)); reason = "Can not find filament_id for " + preset_name; return reason; - } else { + } + else { filament_id_maps.emplace(preset_name, filament_id); } } @@ -6621,34 +6447,31 @@ std::string PresetBundle::load_vendor_preset(const CachedPreset& entry, filaments.set_printer_hold_alias(loaded.alias, loaded); } loaded.renamed_from = std::move(renamed_from); - if (!substitution_context.empty()) - substitutions.push_back({preset_name, presets_collection->type(), PresetConfigSubstitutions::Source::ConfigBundle, std::string(), - std::move(substitution_context.substitutions)}); + if (! substitution_context.empty()) + substitutions.push_back({ + preset_name, presets_collection->type(), PresetConfigSubstitutions::Source::ConfigBundle, + std::string(), std::move(substitution_context.substitutions) }); if (retain_configs == nullptr || retain_configs->count(preset_name) != 0) config_maps.emplace(preset_name, loaded.config); ++count; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", got preset %1%, from %2%") % loaded.name % subfile; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", got preset %1%, from %2%")%loaded.name %subfile; return reason; } -// BBS: Load a config bundle file from json +//BBS: Load a config bundle file from json std::pair PresetBundle::load_vendor_configs_from_json( - const std::string& dir, - const std::string& vendor_name, - LoadConfigBundleAttributes flags, - ForwardCompatibilitySubstitutionRule compatibility_rule, - const PresetBundle* base_bundle) + const std::string &dir, 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}; + ConfigSubstitutionContext substitution_context { compatibility_rule }; PresetsConfigSubstitutions substitutions; // Errors already on this bundle when the load began; the cache stamp below // counts only what this parse adds. const int errors_at_entry = m_errors; - // BBS: add config related logs - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, path %1%, compatibility_rule %2%") % dir.c_str() % compatibility_rule; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, path %1%, compatibility_rule %2%")%dir.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)); @@ -6656,15 +6479,13 @@ std::pair PresetBundle::load_vendor_configs_ // Orca: only a whole-vendor load has a cache — the vendor-only and filament-only // scans want a slice of one. Validation reads the JSONs whatever is cached. const boost::filesystem::path dir_path(dir); - const bool cacheable = flags.has(LoadConfigBundleAttribute::LoadSystem) && !flags.has(LoadConfigBundleAttribute::LoadFilamentOnly); - if (cacheable && !validation_mode && this->load_vendor_cache(dir_path, vendor_name, base_bundle)) { + const bool cacheable = flags.has(LoadConfigBundleAttribute::LoadSystem) && ! flags.has(LoadConfigBundleAttribute::LoadFilamentOnly); + if (cacheable && ! validation_mode && this->load_vendor_cache(dir_path, vendor_name, base_bundle)) { size_t presets_loaded = 0; - for (const PresetCollection* coll : - std::initializer_list{&this->prints, &this->sla_prints, &this->filaments, &this->sla_materials, - &this->printers}) + for (const PresetCollection* coll : std::initializer_list{ + &this->prints, &this->sla_prints, &this->filaments, &this->sla_materials, &this->printers }) presets_loaded += coll->m_presets.size() - coll->m_num_default_presets; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(", %1% served from its preset cache, %2% presets") % vendor_name % presets_loaded; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", %1% served from its preset cache, %2% presets")%vendor_name%presets_loaded; return std::make_pair(std::move(substitutions), presets_loaded); } @@ -6688,9 +6509,10 @@ std::pair PresetBundle::load_vendor_configs_ } else if (boost::iequals(iter2.key(), BBL_JSON_KEY_SUB_PATH)) { subpath = iter2.value(); } - } else { + } + else { ++m_errors; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": invalid value type for " << iter2.key(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": invalid value type for " << iter2.key(); } } if (!name.empty() && !subpath.empty()) @@ -6712,51 +6534,55 @@ std::pair PresetBundle::load_vendor_configs_ boost::nowide::ifstream ifs(root_file); json j; ifs >> j; - // parse the json elements + //parse the json elements for (auto it = j.begin(); it != j.end(); it++) { if (boost::iequals(it.key(), BBL_JSON_KEY_VERSION)) { - // get version + //get version std::string version_str = it.value(); - auto config_version = Semver::parse(version_str); - if (!config_version) { + auto config_version = Semver::parse(version_str); + if (! config_version) { ++m_errors; - throw ConfigurationError( - (boost::format("vendor %1%'s config version: %2% invalid\nSuggest cleaning the directory %3% firstly") % - vendor_name % version_str % dir) - .str()); + throw ConfigurationError((boost::format("vendor %1%'s config version: %2% invalid\nSuggest cleaning the directory %3% firstly") + % vendor_name % version_str % dir).str()); } else { vendor_profile.config_version = std::move(*config_version); } - } else if (boost::iequals(it.key(), BBL_JSON_KEY_URL)) { - // get url + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_URL)) { + //get url vendor_profile.config_update_url = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_DESCRIPTION)) { - // get description - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": parse " << root_file << ", got description: " << it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_NAME)) { - // get name + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_DESCRIPTION)) { + //get description + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< ": parse "< PresetBundle::load_vendor_configs_ process_subfiles.clear(); } - // 2) paste the machine model - for (auto& machine_model : machine_model_subfiles) { + //2) paste the machine model + for (auto& machine_model : machine_model_subfiles) + { std::string subfile = dir + "/" + vendor_name + "/" + machine_model.second; VendorProfile::PrinterModel model; model.id = machine_model.first; @@ -6774,44 +6601,49 @@ std::pair PresetBundle::load_vendor_configs_ boost::nowide::ifstream ifs(subfile); json j; ifs >> j; - // parse the json elements + //parse the json elements for (auto it = j.begin(); it != j.end(); it++) { if (boost::iequals(it.key(), BBL_JSON_KEY_VERSION)) { - // get version - } else if (boost::iequals(it.key(), BBL_JSON_KEY_URL)) { - // get url - } else if (boost::iequals(it.key(), BBL_JSON_KEY_NAME)) { - // get name + //get version + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_URL)) { + //get url + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_NAME)) { + //get name model.name = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_MODEL_ID)) { - // get model_id + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_MODEL_ID)) { + //get model_id model.model_id = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_NOZZLE_DIAMETER)) { - // get nozzle diameter + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_NOZZLE_DIAMETER)) { + //get nozzle diameter std::string nozzle_diameters = it.value(); std::vector variants; if (Slic3r::unescape_strings_cstyle(nozzle_diameters, variants)) { - for (const std::string& variant_name : variants) { + for (const std::string &variant_name : variants) { if (model.variant(variant_name) == nullptr) model.variants.emplace_back(VendorProfile::PrinterVariant(variant_name)); } } else { ++m_errors; - BOOST_LOG_TRIVIAL(error) - << __FUNCTION__ - << boost::format(": invalid nozzle_diameters %1% for Vendor %1%") % nozzle_diameters % vendor_name; + BOOST_LOG_TRIVIAL(error)<< __FUNCTION__ << boost::format(": invalid nozzle_diameters %1% for Vendor %1%") % nozzle_diameters % vendor_name; } - } else if (boost::iequals(it.key(), BBL_JSON_KEY_PRINTER_TECH)) { - // get printer tech + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_PRINTER_TECH)) { + //get printer tech if (boost::algorithm::starts_with(it.value(), "SL")) model.technology = ptSLA; else model.technology = ptFFF; - } else if (boost::iequals(it.key(), BBL_JSON_KEY_FAMILY)) { - // get family + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_FAMILY)) { + //get family model.family = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_BED_MODEL)) { - // get bed model + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_BED_MODEL)) { + //get bed model model.bed_model = it.value(); } else if (boost::iequals(it.key(), BBL_JSON_KEY_BOTTOM_TEXTURE_END_NAME)) { model.bottom_texture_end_name = it.value(); @@ -6823,26 +6655,28 @@ std::pair PresetBundle::load_vendor_configs_ model.bottom_texture_rect_longer = it.value(); } else if (boost::iequals(it.key(), BBL_JSON_KEY_MIDDLE_TEXTURE_RECT)) { model.middle_texture_rect = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_IMAGE_BED_TYPE)) { + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_IMAGE_BED_TYPE)) { model.image_bed_type = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_BED_TEXTURE)) { - // get bed texture + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_BED_TEXTURE)) { + //get bed texture model.bed_texture = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_HOTEND_MODEL)) { + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_HOTEND_MODEL)) { model.hotend_model = it.value(); - } else if (boost::iequals(it.key(), BBL_JSON_KEY_DEFAULT_MATERIALS)) { - // get machine list + } + else if (boost::iequals(it.key(), BBL_JSON_KEY_DEFAULT_MATERIALS)) { + //get machine list std::string default_materials_field = it.value(); if (Slic3r::unescape_strings_cstyle(default_materials_field, model.default_materials)) { - Slic3r::sort_remove_duplicates(model.default_materials); - if (!model.default_materials.empty() && model.default_materials.front().empty()) + Slic3r::sort_remove_duplicates(model.default_materials); + if (! model.default_materials.empty() && model.default_materials.front().empty()) // An empty material was inserted into the list of default materials. Remove it. model.default_materials.erase(model.default_materials.begin()); } else { ++m_errors; - BOOST_LOG_TRIVIAL(error) - << __FUNCTION__ - << boost::format(": invalid default_materials %1% for Vendor %1%") % default_materials_field % vendor_name; + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(": invalid default_materials %1% for Vendor %1%") % default_materials_field % vendor_name; } } else if (boost::iequals(it.key(), BBL_JSON_KEY_NOT_SUPPORT_BED_TYPE)) { // get machine list @@ -6854,67 +6688,65 @@ std::pair PresetBundle::load_vendor_configs_ model.not_support_bed_types.erase(model.not_support_bed_types.begin()); } else { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ - << boost::format(": invalid not_support_bed_types %1% for Vendor %1%") % - not_support_bed_type_field % vendor_name; + << boost::format(": invalid not_support_bed_types %1% for Vendor %1%") % not_support_bed_type_field % vendor_name; } } } - } catch (nlohmann::detail::parse_error& err) { - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << subfile - << " got a nlohmann::detail::parse_error, reason = " << err.what(); - throw ConfigurationError( - (boost::format("Failed loading configuration file %1%: %2%\nSuggest cleaning the directory %3% firstly") % subfile % - err.what() % dir) - .str()); + } + catch(nlohmann::detail::parse_error &err) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": parse "<< subfile <<" got a nlohmann::detail::parse_error, reason = " << err.what(); + throw ConfigurationError((boost::format("Failed loading configuration file %1%: %2%\nSuggest cleaning the directory %3% firstly") + %subfile %err.what() % dir).str()); } - if (!model.id.empty() && !model.variants.empty()) + if (! model.id.empty() && ! model.variants.empty()) vendor_profile.models.push_back(std::move(model)); } - // insert the vendor profile + //insert the vendor profile this->vendors.emplace(vendor_name, 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(); + 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); // 3) paste the process/filament/print configs - PresetCollection* presets = nullptr; - size_t presets_loaded = 0; + PresetCollection *presets = nullptr; + size_t presets_loaded = 0; // Parse one subfile into a source-form entry — everything the JSON states, // nothing resolved. Loading the entry (load_vendor_preset) is the // same code whether the entry was parsed just now or deserialized from the // vendor's cache. - auto parse_subfile = [this, dir, vendor_name](ConfigSubstitutionContext& substitution_context, - const std::pair& subfile_iter, - CachedPreset& entry) -> std::string { + auto parse_subfile = [this, dir, vendor_name]( + ConfigSubstitutionContext& substitution_context, + const std::pair& subfile_iter, + CachedPreset& entry) -> std::string { + std::string subfile = dir + "/" + vendor_name + "/" + subfile_iter.second; std::string reason; try { std::map key_values; substitution_context.substitutions.clear(); - // parse the json elements + //parse the json elements entry.sub_path = subfile_iter.second; entry.config_src.load_from_json(subfile, substitution_context, false, key_values, reason); if (!reason.empty()) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": load config file " << subfile << " Failed!"; + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": load config file "< PresetBundle::load_vendor_configs_ << "\" contains invalid \"renamed_from\" key, which is being ignored."; } } - } catch (nlohmann::detail::parse_error& err) { + } + catch(nlohmann::detail::parse_error &err) { ++m_errors; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << subfile - << " got a nlohmann::detail::parse_error, reason = " << err.what(); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": parse "<< subfile <<" got a nlohmann::detail::parse_error, reason = " << err.what(); reason = std::string("json parse error") + err.what(); return reason; } @@ -6966,8 +6798,8 @@ std::pair PresetBundle::load_vendor_configs_ // so the parse_errors stamped into the cache must hold only what a cache load // will not recount. int install_errors = 0; - auto load_subfiles = [&](std::vector>& subfiles, std::vector& entries, - const char* kind, bool is_from_lib = false) { + auto load_subfiles = [&](std::vector>& subfiles, + std::vector& entries, const char* kind, bool is_from_lib = false) { configs.clear(); filament_id_maps.clear(); for (auto& subfile : subfiles) { @@ -6975,19 +6807,17 @@ std::pair PresetBundle::load_vendor_configs_ std::string reason = parse_subfile(substitution_context, subfile, entry); if (reason.empty()) { const int errors_before_install = m_errors; - reason = load_vendor_preset(entry, dir, vendor_name, base_bundle, flags, substitution_context, substitutions, configs, - filament_id_maps, presets, presets_loaded, is_from_lib); + reason = load_vendor_preset(entry, dir, vendor_name, base_bundle, flags, + substitution_context, substitutions, configs, filament_id_maps, presets, + presets_loaded, is_from_lib); install_errors += m_errors - errors_before_install; } if (!reason.empty()) { ++m_errors; - // parse error + //parse error std::string subfile_path = dir + "/" + vendor_name + "/" + subfile.second; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ - << boost::format(", got error when parse %1% setting from %2%") % kind % subfile_path; - throw ConfigurationError( - (boost::format("Failed loading configuration file %1%\nSuggest cleaning the directory %2% firstly") % subfile_path % dir) - .str()); + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(", got error when parse %1% setting from %2%") % kind % subfile_path; + throw ConfigurationError((boost::format("Failed loading configuration file %1%\nSuggest cleaning the directory %2% firstly") % subfile_path % dir).str()); } if (will_cache) entries.emplace_back(std::move(entry)); @@ -6997,12 +6827,12 @@ std::pair PresetBundle::load_vendor_configs_ // The section order below — process, filaments (with the ORCA-lib map copy), // printers — is mirrored by load_vendor_cache's install loops; keep the two // in lockstep. - // 3.1) paste the process + //3.1) paste the process presets = &this->prints; load_subfiles(process_subfiles, cache_data.process_entries, "process"); - // 3.2) paste the filaments - presets = &this->filaments; + //3.2) paste the filaments + presets = &this->filaments; const auto is_orca_lib = vendor_name == ORCA_FILAMENT_LIBRARY; load_subfiles(filament_subfiles, cache_data.filament_entries, "filament", is_orca_lib); if (is_orca_lib) { @@ -7010,7 +6840,7 @@ std::pair PresetBundle::load_vendor_configs_ m_filament_id_maps = filament_id_maps; } - // 3.3) paste the printers + //3.3) paste the printers presets = &this->printers; load_subfiles(machine_subfiles, cache_data.machine_entries, "printer"); @@ -7019,13 +6849,13 @@ std::pair PresetBundle::load_vendor_configs_ // wrapped would be added to every future load of this vendor. cache_data.parse_errors = uint64_t(std::max(0, m_errors - errors_at_entry - install_errors)); cache_data.vendors = this->vendors; - if (!VendorCacheFile::save((dir_path / (vendor_name + ".opc")).string(), vendor_name, vendor_profile.config_version.to_string(), - cache_data)) + if (! VendorCacheFile::save((dir_path / (vendor_name + ".opc")).string(), vendor_name, + vendor_profile.config_version.to_string(), cache_data)) BOOST_LOG_TRIVIAL(warning) << "PresetBundle: failed to save vendor cache for " << vendor_name; } - // BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", finished, presets_loaded %1%") % presets_loaded; + //BBS: add config related logs + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", finished, presets_loaded %1%")%presets_loaded; return std::make_pair(std::move(substitutions), presets_loaded); } @@ -7063,9 +6893,9 @@ void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filam // Now verify if flush_volumes_matrix has proper size (it is used to deduce number of extruders in wipe tower generator): std::vector old_matrix = this->project_config.option("flush_volumes_matrix")->values; - size_t old_nozzle_nums = this->project_config.option("flush_multiplier")->values.size(); + size_t old_nozzle_nums = this->project_config.option("flush_multiplier")->values.size(); size_t old_number_of_filaments = size_t(sqrt(old_matrix.size() / old_nozzle_nums) + EPSILON); - size_t nozzle_nums = get_printer_extruder_count(); + size_t nozzle_nums = get_printer_extruder_count(); if (old_nozzle_nums != nozzle_nums) { std::vector& f_multiplier = this->project_config.option("flush_multiplier")->values; f_multiplier.resize(nozzle_nums, 1.f); @@ -7074,11 +6904,11 @@ void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filam if (old_matrix.size() != num_filaments * num_filaments * nozzle_nums) { // First verify if purging volumes presets for each extruder matches number of extruders std::vector& filaments = this->project_config.option("flush_volumes_vector")->values; - while (filaments.size() < 2 * num_filaments) { - filaments.push_back(filaments.size() > 1 ? filaments[0] : 140.); // copy the values from the first extruder - filaments.push_back(filaments.size() > 1 ? filaments[1] : 140.); + while (filaments.size() < 2* num_filaments) { + filaments.push_back(filaments.size()>1 ? filaments[0] : 140.); // copy the values from the first extruder + filaments.push_back(filaments.size()>1 ? filaments[1] : 140.); } - while (filaments.size() > 2 * num_filaments) { + while (filaments.size() > 2* num_filaments) { filaments.pop_back(); filaments.pop_back(); } @@ -7096,19 +6926,14 @@ void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filam // for this nozzle slot; otherwise initialize from the per-filament // flush volumes the same way the (i,j) out-of-range branch does. if (nozzle_id < old_nozzle_nums) { - new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = - old_matrix[old_i * old_number_of_filaments + old_j + old_matrix_size * nozzle_id]; + new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = old_matrix[old_i * old_number_of_filaments + old_j + old_matrix_size * nozzle_id]; } else { - new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = (i == j ? - 0. : - filaments[2 * i] + filaments[2 * j + 1]); + new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = (i == j ? 0. : filaments[2 * i] + filaments[2 * j + 1]); } } } else { for (size_t nozzle_id = 0; nozzle_id < nozzle_nums; ++nozzle_id) { - new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = (i == j ? - 0. : - filaments[2 * i] + filaments[2 * j + 1]); + new_matrix[i * num_filaments + j + new_matrix_size * nozzle_id] = (i == j ? 0. : filaments[2 * i] + filaments[2 * j + 1]); } } } @@ -7121,15 +6946,15 @@ void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filam // Preset::normalize_inherits: target.find_preset(name, false) resolves "renamed_from" recursively // and returns nullptr for unknown names, so we rewrite only on a positive, changed match and leave // user/deleted names untouched. -static void normalize_compatible_field(Preset& preset, const char* field_key, PresetCollection& target) +static void normalize_compatible_field(Preset &preset, const char *field_key, PresetCollection &target) { - auto* opt = preset.config.option(field_key); + auto *opt = preset.config.option(field_key); if (opt == nullptr) return; - for (std::string& name : opt->values) { + for (std::string &name : opt->values) { if (name.empty()) continue; - if (const Preset* resolved = target.find_preset(name, false); resolved != nullptr && resolved->name != name) + if (const Preset *resolved = target.find_preset(name, false); resolved != nullptr && resolved->name != name) name = resolved->name; } } @@ -7146,59 +6971,56 @@ void PresetBundle::normalize_compatible_presets() // references a process preset. System presets are normalized too: a vendor profile can itself // reference a sibling preset by a name that was later renamed, and the rewrite is in-memory only // (system presets are never persisted back to vendor JSON). (begin()/end() skip defaults.) - auto normalize = [this](PresetCollection& holders, PresetCollection* processes) { - for (Preset& p : holders) { + auto normalize = [this](PresetCollection &holders, PresetCollection *processes) { + for (Preset &p : holders) { normalize_compatible_field(p, "compatible_printers", this->printers); if (processes != nullptr) normalize_compatible_field(p, "compatible_prints", *processes); } }; - normalize(this->prints, nullptr); - normalize(this->filaments, &this->prints); - normalize(this->sla_prints, nullptr); + normalize(this->prints, nullptr); + normalize(this->filaments, &this->prints); + normalize(this->sla_prints, nullptr); normalize(this->sla_materials, &this->sla_prints); } -void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_print_if_incompatible, - PresetSelectCompatibleType select_other_filament_if_incompatible) +void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_print_if_incompatible, PresetSelectCompatibleType select_other_filament_if_incompatible) { - const Preset& printer_preset = this->printers.get_edited_preset(); - const PresetWithVendorProfile printer_preset_with_vendor_profile = this->printers.get_preset_with_vendor_profile(printer_preset); + const Preset &printer_preset = this->printers.get_edited_preset(); + const PresetWithVendorProfile printer_preset_with_vendor_profile = this->printers.get_preset_with_vendor_profile(printer_preset); class PreferedProfileMatch { public: - PreferedProfileMatch(const std::string& prefered_alias, const std::string& prefered_name) - : m_prefered_alias(prefered_alias), m_prefered_name(prefered_name) - {} + PreferedProfileMatch(const std::string &prefered_alias, const std::string &prefered_name) : + m_prefered_alias(prefered_alias), m_prefered_name(prefered_name) {} - int operator()(const Preset& preset) const + int operator()(const Preset &preset) const { - return preset.is_default || preset.is_external ? - // Don't match any properties of the "-- default --" profile or the external profiles when switching printer profile. - 0 : - !m_prefered_alias.empty() && m_prefered_alias == preset.alias ? - // Matching an alias, always take this preset with priority. - std::numeric_limits::max() : - // Otherwise take the prefered profile, or the first compatible. - preset.name == m_prefered_name; + return + preset.is_default || preset.is_external ? + // Don't match any properties of the "-- default --" profile or the external profiles when switching printer profile. + 0 : + ! m_prefered_alias.empty() && m_prefered_alias == preset.alias ? + // Matching an alias, always take this preset with priority. + std::numeric_limits::max() : + // Otherwise take the prefered profile, or the first compatible. + preset.name == m_prefered_name; } private: - const std::string m_prefered_alias; - const std::string& m_prefered_name; + const std::string m_prefered_alias; + const std::string &m_prefered_name; }; // Matching by the layer height in addition. class PreferedPrintProfileMatch : public PreferedProfileMatch { public: - PreferedPrintProfileMatch(const Preset* preset, const std::string& prefered_name) - : PreferedProfileMatch(preset ? preset->alias : std::string(), prefered_name) - , m_prefered_layer_height(preset ? preset->config.opt_float("layer_height") : 0) - {} + PreferedPrintProfileMatch(const Preset *preset, const std::string &prefered_name) : + PreferedProfileMatch(preset ? preset->alias : std::string(), prefered_name), m_prefered_layer_height(preset ? preset->config.opt_float("layer_height") : 0) {} - int operator()(const Preset& preset) const + int operator()(const Preset &preset) const { // Don't match any properties of the "-- default --" profile or the external profiles when switching printer profile. if (preset.is_default || preset.is_external) @@ -7222,12 +7044,11 @@ void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_pri class PreferedFilamentProfileMatch : public PreferedProfileMatch { public: - PreferedFilamentProfileMatch(const Preset* preset, const std::string& prefered_name) - : PreferedProfileMatch(preset ? preset->alias : std::string(), prefered_name) - , m_prefered_filament_type(preset ? preset->config.opt_string("filament_type", 0) : std::string()) - {} + PreferedFilamentProfileMatch(const Preset *preset, const std::string &prefered_name) : + PreferedProfileMatch(preset ? preset->alias : std::string(), prefered_name), + m_prefered_filament_type(preset ? preset->config.opt_string("filament_type", 0) : std::string()) {} - int operator()(const Preset& preset) const + int operator()(const Preset &preset) const { // Don't match any properties of the "-- default --" profile or the external profiles when switching printer profile. if (preset.is_default || preset.is_external) @@ -7235,9 +7056,9 @@ void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_pri int match_quality = PreferedProfileMatch::operator()(preset); if (match_quality < std::numeric_limits::max()) { match_quality += 1; - if (preset.is_visible) + if(preset.is_visible) match_quality += 1; - if (!m_prefered_filament_type.empty() && m_prefered_filament_type == preset.config.opt_string("filament_type", 0)) + if (! m_prefered_filament_type.empty() && m_prefered_filament_type == preset.config.opt_string("filament_type", 0)) match_quality *= 10; } return match_quality; @@ -7251,141 +7072,118 @@ void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_pri class PreferedFilamentsProfileMatch { public: - PreferedFilamentsProfileMatch(const Preset* preset, const std::vector& prefered_names) - : m_prefered_alias(preset ? preset->alias : std::string()) - , m_prefered_filament_type(preset ? preset->config.opt_string("filament_type", 0) : std::string("PLA")) - , // BBS: default choose PLA + PreferedFilamentsProfileMatch(const Preset *preset, const std::vector &prefered_names) : + m_prefered_alias(preset ? preset->alias : std::string()), + m_prefered_filament_type(preset ? preset->config.opt_string("filament_type", 0) : std::string("PLA")), // BBS: default choose PLA m_prefered_names(prefered_names) - {} + {} - int operator()(const Preset& preset) const + int operator()(const Preset &preset) const { // Don't match any properties of the "-- default --" profile or the external profiles when switching printer profile. if (preset.is_default || preset.is_external || !preset.is_visible) return 0; - if (!m_prefered_alias.empty() && m_prefered_alias == preset.alias) + if (! m_prefered_alias.empty() && m_prefered_alias == preset.alias) // Matching an alias, always take this preset with priority. return std::numeric_limits::max(); int match_quality = (std::find(m_prefered_names.begin(), m_prefered_names.end(), preset.name) != m_prefered_names.end()) + 1; - if (!m_prefered_filament_type.empty() && m_prefered_filament_type == preset.config.opt_string("filament_type", 0)) + if (! m_prefered_filament_type.empty() && m_prefered_filament_type == preset.config.opt_string("filament_type", 0)) match_quality *= 10; return match_quality; } private: - const std::string m_prefered_alias; - const std::string m_prefered_filament_type; - const std::vector& m_prefered_names; + const std::string m_prefered_alias; + const std::string m_prefered_filament_type; + const std::vector &m_prefered_names; }; - BOOST_LOG_TRIVIAL(info) << boost::format("update_compatibility for all presets enter, select_other_print_if_incompatible %1%, " - "select_other_filament_if_incompatible %2%") % - (int) select_other_print_if_incompatible % (int) select_other_filament_if_incompatible; - switch (printer_preset.printer_technology()) { - case ptFFF: { - assert(printer_preset.config.has("default_print_profile")); - assert(printer_preset.config.has("default_filament_profile")); - const std::vector& prefered_filament_profiles = - printer_preset.config.option("default_filament_profile")->values; + BOOST_LOG_TRIVIAL(info) << boost::format("update_compatibility for all presets enter, select_other_print_if_incompatible %1%, select_other_filament_if_incompatible %2%")%(int)select_other_print_if_incompatible %(int)select_other_filament_if_incompatible; + switch (printer_preset.printer_technology()) { + case ptFFF: + { + assert(printer_preset.config.has("default_print_profile")); + assert(printer_preset.config.has("default_filament_profile")); + const std::vector &prefered_filament_profiles = printer_preset.config.option("default_filament_profile")->values; this->prints.update_compatible(printer_preset_with_vendor_profile, nullptr, select_other_print_if_incompatible, - PreferedPrintProfileMatch(this->prints.get_selected_idx() == size_t(-1) ? - nullptr : - &this->prints.get_edited_preset(), - printer_preset.config.opt_string("default_print_profile"))); - const PresetWithVendorProfile print_preset_with_vendor_profile = this->prints.get_edited_preset_with_vendor_profile(); + PreferedPrintProfileMatch(this->prints.get_selected_idx() == size_t(-1) ? nullptr : &this->prints.get_edited_preset(), printer_preset.config.opt_string("default_print_profile"))); + const PresetWithVendorProfile print_preset_with_vendor_profile = this->prints.get_edited_preset_with_vendor_profile(); // Remember whether the filament profiles were compatible before updating the filament compatibility. - std::vector filament_preset_was_compatible(this->filament_presets.size(), false); - for (size_t idx = 0; idx < this->filament_presets.size(); ++idx) { - Preset* preset = this->filaments.find_preset(this->filament_presets[idx], false); + std::vector filament_preset_was_compatible(this->filament_presets.size(), false); + for (size_t idx = 0; idx < this->filament_presets.size(); ++ idx) { + Preset *preset = this->filaments.find_preset(this->filament_presets[idx], false); filament_preset_was_compatible[idx] = preset != nullptr && preset->is_compatible; } // First select a first compatible profile for the preset editor. - BOOST_LOG_TRIVIAL(info) << boost::format("prefered filaments: size %1%, previous selected %2%") % - prefered_filament_profiles.size() % this->filaments.get_selected_idx(); - if (this->filaments.get_selected_idx() != size_t(-1)) { + BOOST_LOG_TRIVIAL(info) << boost::format("prefered filaments: size %1%, previous selected %2%") %prefered_filament_profiles.size() % this->filaments.get_selected_idx(); + if (this->filaments.get_selected_idx() != size_t(-1)) + { BOOST_LOG_TRIVIAL(info) << boost::format("previous selected filament: %1%") % this->filaments.get_edited_preset().name; } for (size_t idx = 0; idx < prefered_filament_profiles.size(); ++idx) { BOOST_LOG_TRIVIAL(info) << boost::format("prefered filament: %1%") % prefered_filament_profiles[idx]; } - this->filaments.update_compatible(printer_preset_with_vendor_profile, &print_preset_with_vendor_profile, - select_other_filament_if_incompatible, - PreferedFilamentsProfileMatch(this->filaments.get_selected_idx() == size_t(-1) ? - nullptr : - &this->filaments.get_edited_preset(), - prefered_filament_profiles)); + this->filaments.update_compatible(printer_preset_with_vendor_profile, &print_preset_with_vendor_profile, select_other_filament_if_incompatible, + PreferedFilamentsProfileMatch(this->filaments.get_selected_idx() == size_t(-1) ? nullptr : &this->filaments.get_edited_preset(), prefered_filament_profiles)); if (select_other_filament_if_incompatible != PresetSelectCompatibleType::Never) { // Verify validity of the current filament presets. - const std::string prefered_filament_profile = prefered_filament_profiles.empty() ? std::string() : - prefered_filament_profiles.front(); + const std::string prefered_filament_profile = prefered_filament_profiles.empty() ? std::string() : prefered_filament_profiles.front(); if (this->filament_presets.size() == 1) { // The compatible profile should have been already selected for the preset editor. Just use it. - if (select_other_filament_if_incompatible == PresetSelectCompatibleType::Always || filament_preset_was_compatible.front()) - this->filament_presets.front() = this->filaments.get_edited_preset().name; + if (select_other_filament_if_incompatible == PresetSelectCompatibleType::Always || filament_preset_was_compatible.front()) + this->filament_presets.front() = this->filaments.get_edited_preset().name; } else { - for (size_t idx = 0; idx < this->filament_presets.size(); ++idx) { - std::string& filament_name = this->filament_presets[idx]; - Preset* preset = this->filaments.find_preset(filament_name, false); - if (preset == nullptr || - (!preset->is_compatible && (select_other_filament_if_incompatible == PresetSelectCompatibleType::Always || - filament_preset_was_compatible[idx]))) + for (size_t idx = 0; idx < this->filament_presets.size(); ++ idx) { + std::string &filament_name = this->filament_presets[idx]; + Preset *preset = this->filaments.find_preset(filament_name, false); + if (preset == nullptr || (! preset->is_compatible && (select_other_filament_if_incompatible == PresetSelectCompatibleType::Always || filament_preset_was_compatible[idx]))) // Pick a compatible profile. If there are prefered_filament_profiles, use them. - filament_name = this->filaments - .first_compatible( - PreferedFilamentProfileMatch(preset, (idx < prefered_filament_profiles.size()) ? - prefered_filament_profiles[idx] : - prefered_filament_profile)) - .name; + filament_name = this->filaments.first_compatible( + PreferedFilamentProfileMatch(preset, + (idx < prefered_filament_profiles.size()) ? prefered_filament_profiles[idx] : prefered_filament_profile)).name; } } } - break; + break; } - case ptSLA: { - assert(printer_preset.config.has("default_sla_print_profile")); - assert(printer_preset.config.has("default_sla_material_profile")); - this->sla_prints.update_compatible(printer_preset_with_vendor_profile, nullptr, select_other_print_if_incompatible, - PreferedPrintProfileMatch(this->sla_prints.get_selected_idx() == size_t(-1) ? - nullptr : - &this->sla_prints.get_edited_preset(), - printer_preset.config.opt_string("default_sla_print_profile"))); + case ptSLA: + { + assert(printer_preset.config.has("default_sla_print_profile")); + assert(printer_preset.config.has("default_sla_material_profile")); + this->sla_prints.update_compatible(printer_preset_with_vendor_profile, nullptr, select_other_print_if_incompatible, + PreferedPrintProfileMatch(this->sla_prints.get_selected_idx() == size_t(-1) ? nullptr : &this->sla_prints.get_edited_preset(), printer_preset.config.opt_string("default_sla_print_profile"))); const PresetWithVendorProfile sla_print_preset_with_vendor_profile = this->sla_prints.get_edited_preset_with_vendor_profile(); - this->sla_materials.update_compatible(printer_preset_with_vendor_profile, &sla_print_preset_with_vendor_profile, - select_other_filament_if_incompatible, - PreferedProfileMatch(this->sla_materials.get_selected_idx() == size_t(-1) ? - std::string() : - this->sla_materials.get_edited_preset().alias, - printer_preset.config.opt_string("default_sla_material_profile"))); - break; - } + this->sla_materials.update_compatible(printer_preset_with_vendor_profile, &sla_print_preset_with_vendor_profile, select_other_filament_if_incompatible, + PreferedProfileMatch(this->sla_materials.get_selected_idx() == size_t(-1) ? std::string() : this->sla_materials.get_edited_preset().alias, printer_preset.config.opt_string("default_sla_material_profile"))); + break; + } default: break; } BOOST_LOG_TRIVIAL(info) << boost::format("update_compatibility for all presets exit"); } -std::vector PresetBundle::export_current_configs(const std::string& path, - std::function override_confirm, - bool include_modify, - bool export_system_settings) + +std::vector PresetBundle::export_current_configs(const std::string & path, + std::function override_confirm, + bool include_modify, + bool export_system_settings) { - const Preset& print_preset = include_modify ? prints.get_edited_preset() : prints.get_selected_preset(); - const Preset& printer_preset = include_modify ? printers.get_edited_preset() : printers.get_selected_preset(); - std::set presets{&print_preset, &printer_preset}; - for (auto& f : filament_presets) { + const Preset &print_preset = include_modify ? prints.get_edited_preset() : prints.get_selected_preset(); + const Preset &printer_preset = include_modify ? printers.get_edited_preset() : printers.get_selected_preset(); + std::set presets { &print_preset, &printer_preset }; + for (auto &f : filament_presets) { auto filament_preset = filaments.find_preset(f, include_modify); - if (filament_preset) - presets.insert(filament_preset); + if (filament_preset) presets.insert(filament_preset); } int overwrite = 0; std::vector result; for (auto preset : presets) { - if ((preset->is_system && !export_system_settings) || preset->is_default) + if ((preset->is_system && !export_system_settings) || preset->is_default) continue; std::string file = path + "/" + preset->name + ".json"; - if (overwrite == 0) - overwrite = 1; + if (overwrite == 0) overwrite = 1; if (boost::filesystem::exists(file) && overwrite < 2) { overwrite = override_confirm(preset->name); if (overwrite == 0 || overwrite == 2) @@ -7399,7 +7197,7 @@ std::vector PresetBundle::export_current_configs(const std::string& // Set the filament preset name. As the name could come from the UI selection box, // an optional "(modified)" suffix will be removed from the filament name. -void PresetBundle::set_filament_preset(size_t idx, const std::string& name) +void PresetBundle::set_filament_preset(size_t idx, const std::string &name) { if (idx >= filament_presets.size()) { BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: set_filament_preset out of range %1% - %2%") % idx % filament_presets.size(); @@ -7428,7 +7226,7 @@ bool PresetBundle::has_errors(bool check_duplicate_filament_subtypes) const 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) + 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()) { @@ -7451,7 +7249,7 @@ bool PresetBundle::has_errors(bool check_duplicate_filament_subtypes) const // VS Code integrated terminal (Cmd/Ctrl+click) and macOS Terminal.app // (Cmd+double-click); quotes or literal spaces break link detection in both, so // the characters that would terminate the URI token are percent-encoded. -static std::string preset_file_uri(const std::string& file) +static std::string preset_file_uri(const std::string &file) { std::string path; try { @@ -7467,7 +7265,7 @@ static std::string preset_file_uri(const std::string& file) case ' ': uri += "%20"; break; case '#': uri += "%23"; break; case '%': uri += "%25"; break; - default: uri += c; + default: uri += c; } } return uri; @@ -7489,34 +7287,34 @@ bool PresetBundle::check_preset_references() const // Resolve one reference (an inherits parent or a compatible_* entry) against its target // collection and log if it is dangling (unknown) or uses a renamed preset's old name. - auto report_ref = [&](const Preset& p, const std::string& name, const PresetCollection& target, const char* verb, const char* noun) { - const Preset* resolved = target.find_preset(name, false); + auto report_ref = [&](const Preset &p, const std::string &name, const PresetCollection &target, + const char *verb, const char *noun) { + const Preset *resolved = target.find_preset(name, false); if (resolved == nullptr) { found = true; BOOST_LOG_TRIVIAL(error) << "Preset \"" << p.name << "\" " << verb << " unknown " << noun << " \"" << name << "\":\n" << preset_file_uri(p.file); } else if (resolved->name != name) { found = true; - BOOST_LOG_TRIVIAL(error) << "Preset \"" << p.name << "\" " << verb << " renamed " << noun << " \"" << name << "\" (now \"" - << resolved->name << "\"):\n" - << preset_file_uri(p.file); + BOOST_LOG_TRIVIAL(error) << "Preset \"" << p.name << "\" " << verb << " renamed " << noun << " \"" << name + << "\" (now \"" << resolved->name << "\"):\n" << preset_file_uri(p.file); } }; - auto check_list = [&](const Preset& p, const char* key, const PresetCollection& target) { - const auto* opt = p.config.option(key); + auto check_list = [&](const Preset &p, const char *key, const PresetCollection &target) { + const auto *opt = p.config.option(key); if (opt == nullptr) return; - for (const std::string& name : opt->values) + for (const std::string &name : opt->values) if (!name.empty()) report_ref(p, name, target, "references", key); }; - auto check_collection = [&](const PresetCollection& holders, const PresetCollection* processes) { - for (const Preset& p : holders) { + auto check_collection = [&](const PresetCollection &holders, const PresetCollection *processes) { + for (const Preset &p : holders) { if (!p.is_system) continue; - if (const std::string& inh = p.inherits(); !inh.empty()) + if (const std::string &inh = p.inherits(); !inh.empty()) report_ref(p, inh, holders, "inherits", "parent"); check_list(p, "compatible_printers", this->printers); if (processes != nullptr) @@ -7526,10 +7324,10 @@ bool PresetBundle::check_preset_references() const // Printers carry no compatible_printers/compatible_prints (those name a printer, so a printer // holding them makes no sense); check_list is a no-op for them, so only their inherits is checked. - check_collection(this->printers, nullptr); - check_collection(this->prints, nullptr); - check_collection(this->filaments, &this->prints); - check_collection(this->sla_prints, nullptr); + check_collection(this->printers, nullptr); + check_collection(this->prints, nullptr); + check_collection(this->filaments, &this->prints); + check_collection(this->sla_prints, nullptr); check_collection(this->sla_materials, &this->sla_prints); return found; @@ -7547,15 +7345,15 @@ bool PresetBundle::check_duplicate_filament_subtypes() const // printer against its own vendor's filaments. A vendor's compatible_printers // only names that vendor's printers, so same-vendor scoping is correctness // preserving and avoids an O(all printers x all filaments) sweep. - std::map> filaments_by_vendor; - for (const auto& preset : filaments) { + std::map> filaments_by_vendor; + for (const auto &preset : filaments) { if (!preset.is_system || preset.filament_id.empty() || preset.vendor == nullptr) continue; filaments_by_vendor[preset.vendor->name].push_back(&preset); } bool found_duplicates = false; - for (const auto& printer : printers) { + for (const auto &printer : printers) { if (!printer.is_system || printer.vendor == nullptr) continue; auto vendor_it = filaments_by_vendor.find(printer.vendor->name); @@ -7564,39 +7362,40 @@ bool PresetBundle::check_duplicate_filament_subtypes() const const PresetWithVendorProfile active_printer = printers.get_preset_with_vendor_profile(printer); // std::map keeps the reported errors in a deterministic (sorted) order. - std::map> by_filament_id; - for (const Preset* fil : vendor_it->second) + std::map> by_filament_id; + for (const Preset *fil : vendor_it->second) if (is_compatible_with_printer(filaments.get_preset_with_vendor_profile(*fil), active_printer)) by_filament_id[fil->filament_id].push_back(fil); - for (const auto& entry : by_filament_id) { + for (const auto &entry : by_filament_id) { if (entry.second.size() < 2) continue; found_duplicates = true; // List each conflicting preset with a clickable file:// URI on its own // line, so the profile author can jump straight to the files to fix. std::string presets; - for (const Preset* p : entry.second) + for (const Preset *p : entry.second) presets += "\n - " + p->name + "\n " + preset_file_uri(p->file); - BOOST_LOG_TRIVIAL(error) << "Ambiguous AMS filament match: " << entry.second.size() << " filament presets share filament_id \"" - << entry.first << "\" and are all compatible with printer \"" << printer.name - << "\". When matching an AMS spool the slicer cannot tell them apart and" - " silently picks whichever loads first." - << presets; + BOOST_LOG_TRIVIAL(error) + << "Ambiguous AMS filament match: " << entry.second.size() + << " filament presets share filament_id \"" << entry.first + << "\" and are all compatible with printer \"" << printer.name + << "\". When matching an AMS spool the slicer cannot tell them apart and" + " silently picks whichever loads first." << presets; } } // Print the troubleshooting guidance once, not per error, to keep the log readable. if (found_duplicates) BOOST_LOG_TRIVIAL(error) << "\n========================================\n" - << "How to fix \"Ambiguous AMS filament match\" errors: make sure only ONE filament" - " preset with a given filament_id is compatible with each printer. Either" - "\n (a) remove the overlapping printer from a preset's \"compatible_printers\"" - " list (e.g. a '@printer' preset over-claiming a nozzle that already has its own" - " '@printer 0.x nozzle' preset), or" - "\n (b) if these are genuinely different materials, give each its own" - " \"filament_id\" - a common cause is a wrong \"inherits\" pointing at another" - " material's @base preset."; + << "How to fix \"Ambiguous AMS filament match\" errors: make sure only ONE filament" + " preset with a given filament_id is compatible with each printer. Either" + "\n (a) remove the overlapping printer from a preset's \"compatible_printers\"" + " list (e.g. a '@printer' preset over-claiming a nozzle that already has its own" + " '@printer 0.x nozzle' preset), or" + "\n (b) if these are genuinely different materials, give each its own" + " \"filament_id\" - a common cause is a wrong \"inherits\" pointing at another" + " material's @base preset."; return found_duplicates; } @@ -7612,39 +7411,30 @@ bool BundleMetadata::load_from_json(const std::string& path) json j; ifs >> j; - if (j.contains("id")) - this->id = j["id"].get(); + if (j.contains("id")) this->id = j["id"].get(); - if (j.contains("name")) - this->name = j["name"].get(); - else if (j.contains("bundle_id")) - this->name = j["bundle_id"].get(); // backwards compat w bundle_structure.json + if (j.contains("name")) this->name = j["name"].get(); + else if (j.contains("bundle_id")) this->name = j["bundle_id"].get(); // backwards compat w bundle_structure.json - if (j.contains("version")) - this->version = j["version"].get(); + if (j.contains("version")) this->version = j["version"].get(); - if (j.contains("description")) - this->description = j["description"].get(); - else if (j.contains("bundle_type")) - this->description = j["bundle_type"].get(); // backwards compat w bundle_structure.json + if (j.contains("description")) this->description = j["description"].get(); + else if (j.contains("bundle_type")) this->description = j["bundle_type"].get(); // backwards compat w bundle_structure.json - if (j.contains("author")) - this->author = j["author"].get(); + if (j.contains("author")) this->author = j["author"].get(); - if (j.contains("imported_time")) - this->imported_time = j["imported_time"].get(); + if (j.contains("imported_time")) this->imported_time = j["imported_time"].get(); - if (j.contains("updated_time")) - this->updated_time = j["updated_time"].get(); + if (j.contains("updated_time")) this->updated_time = j["updated_time"].get(); - if (j.contains("print_presets")) - this->print_presets = j["print_presets"].get>(); - - if (j.contains("filament_presets")) - this->filament_presets = j["filament_presets"].get>(); - - if (j.contains("printer_presets")) - this->printer_presets = j["printer_presets"].get>(); + if (j.contains("print_presets")) + this->print_presets = j["print_presets"].get>(); + + if (j.contains("filament_presets")) + this->filament_presets = j["filament_presets"].get>(); + + if (j.contains("printer_presets")) + this->printer_presets = j["printer_presets"].get>(); return true; } catch (const std::exception& e) { @@ -7656,26 +7446,27 @@ bool BundleMetadata::load_from_json(const std::string& path) bool BundleMetadata::save_to_json(const std::string& path) const { auto strip_prefix = [](const std::vector& names) { - json arr = json::array(); - for (const auto& name : names) { - arr.push_back(boost::filesystem::path(name).filename().string()); - std::string test = boost::filesystem::path(name).filename().string(); - } - return arr; - }; + json arr = json::array(); + for (const auto& name : names) + { + arr.push_back(boost::filesystem::path(name).filename().string()); + std::string test = boost::filesystem::path(name).filename().string(); + } + return arr; + }; try { json j; - j["id"] = this->id; - j["name"] = this->name; - j["version"] = this->version; - j["description"] = this->description; - j["author"] = this->author; + j["id"] = this->id; + j["name"] = this->name; + j["version"] = this->version; + j["description"] = this->description; + j["author"] = this->author; j["imported_time"] = this->imported_time; - j["updated_time"] = this->updated_time; + j["updated_time"] = this->updated_time; - j["print_presets"] = strip_prefix(this->print_presets); - j["filament_presets"] = strip_prefix(this->filament_presets); - j["printer_presets"] = strip_prefix(this->printer_presets); + j["print_presets"] = strip_prefix(this->print_presets); + j["filament_presets"] = strip_prefix(this->filament_presets); + j["printer_presets"] = strip_prefix(this->printer_presets); boost::nowide::ofstream ofs(path); ofs << j.dump(4); @@ -7696,14 +7487,13 @@ bool PresetBundle::load_vendor_cache(const boost::filesystem::path& dir, const s // of the installation, against nothing, since nothing on disk can then be // newer than it. That state is Semver::inf(), which no real profile carries. const boost::filesystem::path profile = dir / (vendor_name + ".json"); - const Semver version = boost::filesystem::exists(profile) ? get_version_from_json(profile.string()) : Semver::inf(); + const Semver version = boost::filesystem::exists(profile) ? get_version_from_json(profile.string()) + : Semver::inf(); return this->load_vendor_cache((dir / (vendor_name + ".opc")).string(), vendor_name, version, base_bundle); } -bool PresetBundle::load_vendor_cache(const std::string& cache_path, - const std::string& expected_vendor_name, - const Semver& expected_vendor_version, - const PresetBundle* base_bundle) +bool PresetBundle::load_vendor_cache(const std::string& cache_path, const std::string& expected_vendor_name, + const Semver& expected_vendor_version, const PresetBundle* base_bundle) { // What this bundle had counted before the cache was tried. The caller // measures its own parse against this same baseline, so a rejection must @@ -7712,11 +7502,11 @@ bool PresetBundle::load_vendor_cache(const std::string& cache_path, // Read and validated before this bundle is touched: a rejected file leaves // no state to roll back. VendorCacheData data; - if (!VendorCacheFile::load(cache_path, expected_vendor_name, expected_vendor_version, data)) + if (! VendorCacheFile::load(cache_path, expected_vendor_name, expected_vendor_version, data)) return false; try { - const std::string& vendor_name = expected_vendor_name; // VendorCacheFile::load checked they match - this->vendors = std::move(data.vendors); + const std::string& vendor_name = expected_vendor_name; // VendorCacheFile::load checked they match + this->vendors = std::move(data.vendors); // What the parse counted before install took over; install recounts its // own below, so m_errors comes out as a JSON parse would leave it. @@ -7726,13 +7516,13 @@ bool PresetBundle::load_vendor_cache(const std::string& cache_path, // them straight after parsing — same code, same order. The substitution // context stays empty (the entries were substituted when they were // parsed), so no substitutions are reported, as before. - ConfigSubstitutionContext substitution_context{ForwardCompatibilitySubstitutionRule::EnableSilent}; + ConfigSubstitutionContext substitution_context { ForwardCompatibilitySubstitutionRule::EnableSilent }; PresetsConfigSubstitutions substitutions; std::map configs; std::map filament_id_maps; const std::string path = boost::filesystem::path(cache_path).parent_path().string(); - size_t count = 0; - auto install_entries = [&](const std::vector& entries, PresetCollection* presets, bool is_from_lib) { + size_t count = 0; + auto install_entries = [&](const std::vector& entries, PresetCollection* presets, bool is_from_lib) { configs.clear(); filament_id_maps.clear(); // Only configs of presets that other entries inherit are ever looked @@ -7741,14 +7531,14 @@ bool PresetBundle::load_vendor_cache(const std::string& cache_path, // become the m_config_maps other vendors resolve against. std::set inherited; for (const CachedPreset& entry : entries) - if (!entry.inherits.empty()) + if (! entry.inherits.empty()) inherited.insert(entry.inherits); const std::set* retain_configs = is_from_lib ? nullptr : &inherited; for (const CachedPreset& entry : entries) { - const std::string reason = load_vendor_preset(entry, path, vendor_name, base_bundle, LoadConfigBundleAttribute::LoadSystem, - substitution_context, substitutions, configs, filament_id_maps, presets, - count, is_from_lib, retain_configs); - if (!reason.empty()) + const std::string reason = load_vendor_preset(entry, path, vendor_name, + base_bundle, LoadConfigBundleAttribute::LoadSystem, substitution_context, substitutions, + configs, filament_id_maps, presets, count, is_from_lib, retain_configs); + if (! reason.empty()) throw std::runtime_error("entry " + entry.name + " failed to install: " + reason); } }; diff --git a/src/libslic3r/PublishSettings.cpp b/src/libslic3r/PublishSettings.cpp index c4c71f9436..6d28cc0af3 100644 --- a/src/libslic3r/PublishSettings.cpp +++ b/src/libslic3r/PublishSettings.cpp @@ -19,6 +19,27 @@ std::string publish_base_key(const std::string &key) return pos == std::string::npos ? key : key.substr(0, pos); } +// Parse the trailing "#N" variant index ("retraction_length#2" -> 2). Returns -1 when the key +// carries no '#' separator or its suffix is malformed; mirrors the importer's strict parse +// (PresetBundle.cpp) so the export side rejects the same variants the receiver would skip. +static int publish_variant_index(const std::string &key, const std::string &base_key) +{ + if (key.size() <= base_key.size() || key.compare(0, base_key.size(), base_key) != 0 || key[base_key.size()] != '#') + return -1; + const std::string suffix = key.substr(base_key.size() + 1); + if (suffix.empty()) + return -1; + int idx = 0; + for (const char c : suffix) { + if (c < '0' || c > '9') + return -1; + idx = idx * 10 + (c - '0'); + if (idx > 1000000) // overflow guard; real vector sizes are tiny + return -1; + } + return idx; +} + std::string normalize_filament_type(const std::string& type) { if (type.empty()) @@ -174,8 +195,8 @@ DynamicPrintConfig filter_published_config( DynamicPrintConfig filtered; std::set base_keys_to_include; - // Never masked (whole-vector serialization): identity, plate geometry and process/printer - // keys. + // Never masked (whole-vector serialization): identity, plate geometry, process keys and + // printer keys without a "#N" variant. std::set mask_exempt_keys; // Material entries: base key -> author slots whose values must survive; other slots are // masked to their defaults so a publish (partial or full) does not leak unrelated slot @@ -209,12 +230,23 @@ DynamicPrintConfig filter_published_config( mask_exempt_keys.insert(key); } - // 3. Process and printer published keys + // 3. Process and printer published keys. Printer per-extruder keys carry a "#N" variant + // (e.g. retraction_length#2): mask the base to the author's extruder index so a partial + // publish does not serialize every extruder's value (same slot-masking as the material side). + const std::set &printer_keys = publishable_printer_keys(); for (const std::string &key : published_keys) { const std::string base_key = publish_base_key(key); - if (!base_key.empty()) { - base_keys_to_include.insert(base_key); - mask_exempt_keys.insert(base_key); + if (base_key.empty()) + continue; + base_keys_to_include.insert(base_key); + if (printer_keys.count(base_key) != 0) { + const int variant_idx = publish_variant_index(key, base_key); + if (variant_idx >= 0) + slot_mask_map[base_key].insert(variant_idx); + else + mask_exempt_keys.insert(base_key); // bare printer key or malformed variant: whole vector + } else { + mask_exempt_keys.insert(base_key); // process key: whole vector } } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 044771bf7c..2ee875901c 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -3343,17 +3343,7 @@ size_t NotificationManager::get_notification_count() const void NotificationManager::bbl_show_plateinfo_notification(const std::string &text) { NotificationData data{NotificationType::BBLPlateInfo, NotificationLevel::PrintInfoNotificationLevel, BBL_NOTICE_MAX_INTERVAL, text}; - - for (std::unique_ptr ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBLPlateInfo) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + push_notification_data(data, 0); } void NotificationManager::bbl_close_3mf_warn_notification() @@ -3367,17 +3357,7 @@ void NotificationManager::bbl_close_3mf_warn_notification() void NotificationManager::bbl_show_3mf_warn_notification(const std::string &text, NotificationLevel level) { NotificationData data{NotificationType::BBL3MFInfo, level, BBL_NOTICE_MAX_INTERVAL, text}; - - for (std::unique_ptr ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBL3MFInfo) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + push_notification_data(data, 0); } void NotificationManager::bbl_close_plateinfo_notification() @@ -3392,17 +3372,7 @@ void NotificationManager::bbl_close_plateinfo_notification() void NotificationManager::bbl_show_preview_only_notification(const std::string &text) { NotificationData data{NotificationType::BBLPreviewOnlyMode, NotificationLevel::WarningNotificationLevel, 0, text}; - - for (std::unique_ptr ¬ification : m_pop_notifications) { - if (notification->get_type() == NotificationType::BBLPreviewOnlyMode) { - notification->reinit(); - notification->update(data); - return; - } - } - - auto notification = std::make_unique(data, m_id_provider, m_evt_handler); - push_notification_data(std::move(notification), 0); + push_notification_data(data, 0); } void NotificationManager::bbl_close_preview_only_notification() diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 55d10dd95c..cb65524dac 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -1083,7 +1083,10 @@ private: NotificationType::ProgressBar, NotificationType::PrintHostUpload, NotificationType::SimplifySuggestion, - NotificationType::ValidateWarning + NotificationType::ValidateWarning, + // A published file load can produce several distinct 3MF warnings (invalid values, + // skipped settings, changed slots); let them stack rather than clobber each other. + NotificationType::BBL3MFInfo }; //prepared (basic) notifications // non-static so its not loaded too early. If static, the translations wont load correctly. diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 86f3626eaa..0d2c5ac4c9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -61,7 +61,7 @@ #include "libslic3r/Format/DRC.hpp" #include "libslic3r/Format/STEP.hpp" #include "libslic3r/Format/AMF.hpp" -// #include "libslic3r/Format/3mf.hpp" +//#include "libslic3r/Format/3mf.hpp" #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/GCode/ThumbnailData.hpp" #include "libslic3r/Model.hpp" @@ -128,11 +128,11 @@ #include "NotificationManager.hpp" #include "PresetComboBoxes.hpp" #include "MsgDialog.hpp" -#include "Widgets/MultiNozzleSync.hpp" // NozzleOption, tryPopUpMultiNozzleDialog, setExtruderNozzleCount -#include "DeviceCore/DevNozzleSystem.h" // DevNozzle, GetExtNozzles / GetRackNozzles +#include "Widgets/MultiNozzleSync.hpp" // NozzleOption, tryPopUpMultiNozzleDialog, setExtruderNozzleCount +#include "DeviceCore/DevNozzleSystem.h" // DevNozzle, GetExtNozzles / GetRackNozzles #include "ProjectDirtyStateManager.hpp" #include "Gizmos/GLGizmoSimplify.hpp" // create suggestion notification -#include "Gizmos/GLGizmoSVG.hpp" // Drop SVG file +#include "Gizmos/GLGizmoSVG.hpp" // Drop SVG file #include "Gizmos/GizmoObjectManipulation.hpp" // BBS @@ -155,7 +155,7 @@ #endif // __APPLE__ #include -#include // Needs to be last because reasons :-/ +#include // Needs to be last because reasons :-/ #include #include "WipeTowerDialog.hpp" #include "MixedFilamentDialog.hpp" @@ -195,9 +195,10 @@ using Slic3r::Preset; using Slic3r::GUI::format_wxstr; using namespace nlohmann; -static const std::pair THUMBNAIL_SIZE_3MF = {512, 512}; +static const std::pair THUMBNAIL_SIZE_3MF = { 512, 512 }; -namespace Slic3r { namespace GUI { +namespace Slic3r { +namespace GUI { // A textured mesh is only worth routing through the import dialog when it actually carries // decoded image data; UV-only meshes have nothing to sample. @@ -210,37 +211,37 @@ static bool has_importable_texture(const Slic3r::TexturedMesh& textured_mesh) return true; return std::any_of(textured_mesh.textures.begin(), textured_mesh.textures.end(), - [](const Slic3r::TextureImage& texture) { return !texture.data.empty(); }); + [](const Slic3r::TextureImage& texture) { return !texture.data.empty(); }); } -wxDEFINE_EVENT(EVT_SCHEDULE_BACKGROUND_PROCESS, SimpleEvent); -wxDEFINE_EVENT(EVT_SLICING_UPDATE, SlicingStatusEvent); -wxDEFINE_EVENT(EVT_SLICING_COMPLETED, wxCommandEvent); -wxDEFINE_EVENT(EVT_PROCESS_COMPLETED, SlicingProcessCompletedEvent); -wxDEFINE_EVENT(EVT_EXPORT_BEGAN, wxCommandEvent); -wxDEFINE_EVENT(EVT_EXPORT_FINISHED, wxCommandEvent); -wxDEFINE_EVENT(EVT_IMPORT_MODEL_ID, wxCommandEvent); -wxDEFINE_EVENT(EVT_DOWNLOAD_PROJECT, wxCommandEvent); -wxDEFINE_EVENT(EVT_PUBLISH, wxCommandEvent); -wxDEFINE_EVENT(EVT_OPEN_PLATESETTINGSDIALOG, wxCommandEvent); +wxDEFINE_EVENT(EVT_SCHEDULE_BACKGROUND_PROCESS, SimpleEvent); +wxDEFINE_EVENT(EVT_SLICING_UPDATE, SlicingStatusEvent); +wxDEFINE_EVENT(EVT_SLICING_COMPLETED, wxCommandEvent); +wxDEFINE_EVENT(EVT_PROCESS_COMPLETED, SlicingProcessCompletedEvent); +wxDEFINE_EVENT(EVT_EXPORT_BEGAN, wxCommandEvent); +wxDEFINE_EVENT(EVT_EXPORT_FINISHED, wxCommandEvent); +wxDEFINE_EVENT(EVT_IMPORT_MODEL_ID, wxCommandEvent); +wxDEFINE_EVENT(EVT_DOWNLOAD_PROJECT, wxCommandEvent); +wxDEFINE_EVENT(EVT_PUBLISH, wxCommandEvent); +wxDEFINE_EVENT(EVT_OPEN_PLATESETTINGSDIALOG, wxCommandEvent); wxDEFINE_EVENT(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG, wxCommandEvent); // BBS: backup & restore -wxDEFINE_EVENT(EVT_RESTORE_PROJECT, wxCommandEvent); -wxDEFINE_EVENT(EVT_PRINT_FINISHED, wxCommandEvent); -wxDEFINE_EVENT(EVT_SEND_CALIBRATION_FINISHED, wxCommandEvent); -wxDEFINE_EVENT(EVT_SEND_FINISHED, wxCommandEvent); -wxDEFINE_EVENT(EVT_PUBLISH_FINISHED, wxCommandEvent); -// BBS: repair model -wxDEFINE_EVENT(EVT_REPAIR_MODEL, wxCommandEvent); -wxDEFINE_EVENT(EVT_FILAMENT_COLOR_CHANGED, wxCommandEvent); -wxDEFINE_EVENT(EVT_INSTALL_PLUGIN_NETWORKING, wxCommandEvent); -wxDEFINE_EVENT(EVT_UPDATE_PLUGINS_WHEN_LAUNCH, wxCommandEvent); -wxDEFINE_EVENT(EVT_INSTALL_PLUGIN_HINT, wxCommandEvent); -wxDEFINE_EVENT(EVT_PREVIEW_ONLY_MODE_HINT, wxCommandEvent); -// BBS: change light/dark mode -wxDEFINE_EVENT(EVT_GLCANVAS_COLOR_MODE_CHANGED, SimpleEvent); -// BBS: print -wxDEFINE_EVENT(EVT_PRINT_FROM_SDCARD_VIEW, SimpleEvent); +wxDEFINE_EVENT(EVT_RESTORE_PROJECT, wxCommandEvent); +wxDEFINE_EVENT(EVT_PRINT_FINISHED, wxCommandEvent); +wxDEFINE_EVENT(EVT_SEND_CALIBRATION_FINISHED, wxCommandEvent); +wxDEFINE_EVENT(EVT_SEND_FINISHED, wxCommandEvent); +wxDEFINE_EVENT(EVT_PUBLISH_FINISHED, wxCommandEvent); +//BBS: repair model +wxDEFINE_EVENT(EVT_REPAIR_MODEL, wxCommandEvent); +wxDEFINE_EVENT(EVT_FILAMENT_COLOR_CHANGED, wxCommandEvent); +wxDEFINE_EVENT(EVT_INSTALL_PLUGIN_NETWORKING, wxCommandEvent); +wxDEFINE_EVENT(EVT_UPDATE_PLUGINS_WHEN_LAUNCH, wxCommandEvent); +wxDEFINE_EVENT(EVT_INSTALL_PLUGIN_HINT, wxCommandEvent); +wxDEFINE_EVENT(EVT_PREVIEW_ONLY_MODE_HINT, wxCommandEvent); +//BBS: change light/dark mode +wxDEFINE_EVENT(EVT_GLCANVAS_COLOR_MODE_CHANGED, SimpleEvent); +//BBS: print +wxDEFINE_EVENT(EVT_PRINT_FROM_SDCARD_VIEW, SimpleEvent); wxDEFINE_EVENT(EVT_CREATE_FILAMENT, SimpleEvent); wxDEFINE_EVENT(EVT_MODIFY_FILAMENT, SimpleEvent); @@ -250,31 +251,32 @@ wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent); wxDEFINE_EVENT(EVT_NOTICE_CHILDE_SIZE_CHANGED, SimpleEvent); wxDEFINE_EVENT(EVT_NOTICE_FULL_SCREEN_CHANGED, IntEvent); #define PRINTER_THUMBNAIL_SIZE (wxSize(40, 40)) // ORCA -#define PRINTER_PANEL_SIZE (wxSize(70, 60)) // ORCA -#define PRINTER_PANEL_RADIUS (6) // ORCA +#define PRINTER_PANEL_SIZE ( wxSize(70, 60)) // ORCA +#define PRINTER_PANEL_RADIUS (6) // ORCA #define BTN_SYNC_SIZE (wxSize(FromDIP(96), FromDIP(98))) static string get_diameter_string(float diameter) { std::ostringstream stream; // ORCA ensure 0.25 returned as 0.25. previous code returned as 0.2 because of std::setprecision(1) - stream << std::fixed << std::setprecision(2) << diameter; // Use 2 decimals to capture 0.25 / 0.15 reliably + stream << std::fixed << std::setprecision(2) << diameter; // Use 2 decimals to capture 0.25 / 0.15 reliably std::string s = stream.str(); - if (s.find('.') != std::string::npos) { // Remove trailing zeros, but keep at least one decimal if needed + if (s.find('.') != std::string::npos) { // Remove trailing zeros, but keep at least one decimal if needed s.erase(s.find_last_not_of('0') + 1); - if (s.back() == '.') - s += '0'; // Ensure "1." → "1.0" + if (s.back() == '.') s += '0'; // Ensure "1." → "1.0" } return s; } -template static void set_config_values(DynamicPrintConfig* config, const std::string& key, T value) +template +static void set_config_values(DynamicPrintConfig *config, const std::string &key, T value) { auto config_opt = config->option(key); if (config_opt) { for (size_t i = 0; i < config_opt->values.size(); ++i) { config_opt->values[i] = value; } - } else { + } + else { BOOST_LOG_TRIVIAL(info) << "set_config_values: the key" << key << "is empty."; } } @@ -296,22 +298,36 @@ bool Plater::has_illegal_filename_characters(const std::string& name) } void Plater::show_illegal_characters_warning(wxWindow* parent) -{ show_error(parent, _L("Invalid name, the following characters are not allowed:") + " <>:/\\|?*\""); } +{ + show_error(parent, _L("Invalid name, the following characters are not allowed:") + " <>:/\\|?*\""); +} -void Plater::mark_plate_toolbar_image_dirty() { m_b_plate_toolbar_image_dirty = true; } +void Plater::mark_plate_toolbar_image_dirty() +{ + m_b_plate_toolbar_image_dirty = true; +} -bool Plater::is_plate_toolbar_image_dirty() const { return m_b_plate_toolbar_image_dirty; } +bool Plater::is_plate_toolbar_image_dirty() const +{ + return m_b_plate_toolbar_image_dirty; +} -void Plater::clear_plate_toolbar_image_dirty() { m_b_plate_toolbar_image_dirty = false; } +void Plater::clear_plate_toolbar_image_dirty() +{ + m_b_plate_toolbar_image_dirty = false; +} -static std::map bed_type_thumbnails = {{BedType::btPC, "bed_cool"}, - {BedType::btEP, "bed_engineering"}, - {BedType::btPEI, "bed_high_templ"}, - {BedType::btPTE, "bed_pei"}, - {BedType::btPCT, "bed_pei_cool"}, - {BedType::btSuperTack, "bed_cool_supertack"}}; +static std::map bed_type_thumbnails = { + {BedType::btPC, "bed_cool" }, + {BedType::btEP, "bed_engineering" }, + {BedType::btPEI, "bed_high_templ" }, + {BedType::btPTE, "bed_pei" }, + {BedType::btPCT, "bed_pei_cool" }, + {BedType::btSuperTack, "bed_cool_supertack" } +}; -enum SlicedInfoIdx { +enum SlicedInfoIdx +{ siFilament_m, siFilament_mm3, siFilament_g, @@ -331,30 +347,37 @@ enum class LoadFilesType { Multiple3MFOther, }; -enum class LoadType : unsigned char { Unknown, OpenProject, LoadGeometry, LoadConfig }; +enum class LoadType : unsigned char +{ + Unknown, + OpenProject, + LoadGeometry, + LoadConfig +}; class SlicedInfo : public wxStaticBoxSizer { public: - SlicedInfo(wxWindow* parent); - void SetTextAndShow(SlicedInfoIdx idx, const wxString& text, const wxString& new_label = ""); + SlicedInfo(wxWindow *parent); + void SetTextAndShow(SlicedInfoIdx idx, const wxString& text, const wxString& new_label=""); private: std::vector> info_vec; }; -SlicedInfo::SlicedInfo(wxWindow* parent) : wxStaticBoxSizer(new wxStaticBox(parent, wxID_ANY, _L("Sliced Info")), wxVERTICAL) +SlicedInfo::SlicedInfo(wxWindow *parent) : + wxStaticBoxSizer(new wxStaticBox(parent, wxID_ANY, _L("Sliced Info")), wxVERTICAL) { GetStaticBox()->SetFont(wxGetApp().bold_font()); wxGetApp().UpdateDarkUI(GetStaticBox()); - auto* grid_sizer = new wxFlexGridSizer(2, 5, 15); + auto *grid_sizer = new wxFlexGridSizer(2, 5, 15); grid_sizer->SetFlexibleDirection(wxVERTICAL); info_vec.reserve(siCount); auto init_info_label = [this, parent, grid_sizer](wxString text_label) { - auto* text = new wxStaticText(parent, wxID_ANY, text_label); + auto *text = new wxStaticText(parent, wxID_ANY, text_label); text->SetForegroundColour(*wxBLACK); text->SetFont(wxGetApp().small_font()); auto info_label = new wxStaticText(parent, wxID_ANY, "N/A"); @@ -377,7 +400,7 @@ SlicedInfo::SlicedInfo(wxWindow* parent) : wxStaticBoxSizer(new wxStaticBox(pare this->Show(false); } -void SlicedInfo::SetTextAndShow(SlicedInfoIdx idx, const wxString& text, const wxString& new_label /*=""*/) +void SlicedInfo::SetTextAndShow(SlicedInfoIdx idx, const wxString& text, const wxString& new_label/*=""*/) { const bool show = text != "N/A"; if (show) @@ -402,8 +425,9 @@ wxString sanitize_window_layout_for_wayland(const wxString& layout, bool* remove } static const std::regex state_pattern(R"(state=(\d+);)"); - constexpr unsigned int disabled_wayland_flags = static_cast(wxAuiPaneInfo::optionFloating) | - static_cast(wxAuiPaneInfo::optionFloatable); + constexpr unsigned int disabled_wayland_flags = + static_cast(wxAuiPaneInfo::optionFloating) | + static_cast(wxAuiPaneInfo::optionFloatable); const std::string input = layout.utf8_string(); std::string output; @@ -417,9 +441,9 @@ wxString sanitize_window_layout_for_wayland(const wxString& layout, bool* remove output.append(search_start, match[0].first); try { - const unsigned long state = std::stoul(match[1].str()); + const unsigned long state = std::stoul(match[1].str()); const unsigned long sanitized_state = state & ~static_cast(disabled_wayland_flags); - modified = modified || sanitized_state != state; + modified = modified || sanitized_state != state; output += "state=" + std::to_string(sanitized_state) + ";"; } catch (const std::exception&) { @@ -442,7 +466,11 @@ wxString sanitize_window_layout_for_wayland(const wxString& layout, bool* remove // Sidebar / private -enum class ActionButtonType : int { abReslice, abExport, abSendGCode }; +enum class ActionButtonType : int { + abReslice, + abExport, + abSendGCode +}; // Background for the extruder-group title chip and its edit buttons, matching the StaticGroup // interior. macOS keeps a lighter #F7F7F7 tint in light mode; dark mode uses the mapped colour. @@ -461,7 +489,7 @@ static wxColour extruder_group_chip_bg() class HoverLabel : public wxPanel { public: - HoverLabel(wxWindow* parent, const wxString& label) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE) + HoverLabel(wxWindow *parent, const wxString &label) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE) { SetBackgroundColour(extruder_group_chip_bg()); auto sizer = new wxBoxSizer(wxHORIZONTAL); @@ -488,7 +516,7 @@ public: m_hover_btn = new ScalableButton(this, wxID_ANY, "dot"); m_hover_btn->SetMinSize(wxSize(FromDIP(25), -1)); m_hover_btn->SetBackgroundColour(extruder_group_chip_bg()); - m_hover_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto& evt) { + m_hover_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &evt) { if (m_enabled && m_hover_on_click) m_hover_on_click(); }); @@ -529,7 +557,7 @@ public: UpdateSizing(); } - void SetTitle(const wxString& title) + void SetTitle(const wxString &title) { m_label->SetLabel(title); UpdateSizing(); @@ -542,7 +570,7 @@ public: { SetBackgroundColour(extruder_group_chip_bg()); m_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); - for (wxStaticText* t : {m_brace_left, m_count, m_brace_right}) + for (wxStaticText *t : {m_brace_left, m_count, m_brace_right}) t->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); m_hover_btn->SetBackgroundColour(extruder_group_chip_bg()); Refresh(); @@ -560,36 +588,36 @@ private: GetParent()->Layout(); } - wxStaticText* m_label; - wxStaticText* m_brace_left; - wxStaticText* m_count; - wxStaticText* m_brace_right; - ScalableButton* m_hover_btn; + wxStaticText *m_label; + wxStaticText *m_brace_left; + wxStaticText *m_count; + wxStaticText *m_brace_right; + ScalableButton *m_hover_btn; std::function m_hover_on_click; - bool m_enabled{false}; + bool m_enabled{false}; }; struct ExtruderGroup : StaticGroup { - ExtruderGroup(wxWindow* parent, int index, wxString const& title); - wxStaticBoxSizer* sizer = nullptr; - HoverLabel* hover_label = nullptr; - ScalableButton* btn_edit = nullptr; - ComboBox* combo_diameter = nullptr; - ComboBox* combo_flow = nullptr; - AMSPreview* ams[4] = {nullptr}; - wxStaticText* ams_not_installed_msg{nullptr}; - ScalableButton* btn_up{nullptr}; - ScalableButton* btn_down{nullptr}; - wxBoxSizer* hsizer_ams{nullptr}; - size_t page_cur{0}; - size_t page_num{3}; - size_t ams_n4 = 0; - size_t ams_n1 = 0; + ExtruderGroup(wxWindow * parent, int index, wxString const &title); + wxStaticBoxSizer *sizer = nullptr; + HoverLabel * hover_label = nullptr; + ScalableButton * btn_edit = nullptr; + ComboBox * combo_diameter = nullptr; + ComboBox * combo_flow = nullptr; + AMSPreview * ams[4] = {nullptr}; + wxStaticText *ams_not_installed_msg{nullptr}; + ScalableButton * btn_up{nullptr}; + ScalableButton * btn_down{nullptr}; + wxBoxSizer *hsizer_ams { nullptr }; + size_t page_cur{0}; + size_t page_num{3}; + size_t ams_n4 = 0; + size_t ams_n1 = 0; std::vector ams_4; std::vector ams_1; - wxString diameter; + wxString diameter; void set_ams_count(int n4, int n1) { @@ -604,23 +632,11 @@ struct ExtruderGroup : StaticGroup void update_ams(); void SetTitle(const wxString& title); - void SetCount(int count) - { - if (hover_label) - hover_label->SetCount(count); - } - void SetEditEnabled(bool enable) - { - if (hover_label) - hover_label->EnableEdit(enable); - } - void SetOnHoverClick(std::function on_click) - { - if (hover_label) - hover_label->SetOnHoverClick(std::move(on_click)); - } + void SetCount(int count) { if (hover_label) hover_label->SetCount(count); } + void SetEditEnabled(bool enable) { if (hover_label) hover_label->EnableEdit(enable); } + void SetOnHoverClick(std::function on_click) { if (hover_label) hover_label->SetOnHoverClick(std::move(on_click)); } - void sync_ams(MachineObject const* obj, std::vector const& ams4, std::vector const& ams1); + void sync_ams(MachineObject const *obj, std::vector const &ams4, std::vector const &ams1); void Rescale() { @@ -648,70 +664,70 @@ struct ExtruderGroup : StaticGroup struct Sidebar::priv { - Plater* plater; + Plater *plater; - wxPanel* scrolled = nullptr; - PlaterPresetComboBox* combo_sla_print = nullptr; - PlaterPresetComboBox* combo_sla_material = nullptr; + wxPanel *scrolled = nullptr; + PlaterPresetComboBox *combo_sla_print = nullptr; + PlaterPresetComboBox *combo_sla_material = nullptr; // Printer - wxSizer* vsizer_printer = nullptr; - wxBoxSizer* extruder_dual_sizer = nullptr; - wxBoxSizer* extruder_single_sizer = nullptr; + wxSizer * vsizer_printer = nullptr; + wxBoxSizer * extruder_dual_sizer = nullptr; + wxBoxSizer * extruder_single_sizer = nullptr; // Printer - preset - StaticBox* panel_printer_preset = nullptr; - wxStaticBitmap* image_printer = nullptr; - PlaterPresetComboBox* combo_printer = nullptr; - ScalableButton* btn_edit_printer = nullptr; - ScalableButton* btn_connect_printer = nullptr; + StaticBox * panel_printer_preset = nullptr; + wxStaticBitmap * image_printer = nullptr; + PlaterPresetComboBox *combo_printer = nullptr; + ScalableButton * btn_edit_printer = nullptr; + ScalableButton * btn_connect_printer = nullptr; // Nozzle diameter - StaticBox* panel_nozzle_dia = nullptr; - Label* label_nozzle_title = nullptr; - ComboBox* combo_nozzle_dia = nullptr; - Label* label_nozzle_type = nullptr; + StaticBox * panel_nozzle_dia = nullptr; + Label * label_nozzle_title= nullptr; + ComboBox * combo_nozzle_dia = nullptr; + Label * label_nozzle_type = nullptr; // Printer - bed - StaticBox* panel_printer_bed = nullptr; - wxStaticBitmap* image_printer_bed = nullptr; - ComboBox* combo_printer_bed = nullptr; + StaticBox * panel_printer_bed = nullptr; + wxStaticBitmap *image_printer_bed = nullptr; + ComboBox * combo_printer_bed = nullptr; - ImageDPIFrame* big_bed_image_popup = nullptr; + ImageDPIFrame *big_bed_image_popup = nullptr; // Printer - sync - // Button *btn_sync_printer; + //Button *btn_sync_printer; std::shared_ptr counter_sync_printer = std::make_shared(); - wxTimer* timer_sync_printer = new wxTimer(); + wxTimer * timer_sync_printer = new wxTimer(); // Printer - ams - ExtruderGroup* left_extruder = nullptr; - ExtruderGroup* right_extruder = nullptr; - ExtruderGroup* single_extruder = nullptr; + ExtruderGroup *left_extruder = nullptr; + ExtruderGroup *right_extruder = nullptr; + ExtruderGroup *single_extruder = nullptr; - int FromDIP(int n) { return plater->FromDIP(n); } + int FromDIP(int n) { return plater->FromDIP(n); } void layout_printer(bool isBBL, bool isDual); void flush_printer_sync(bool restart = false); - PlaterPresetComboBox* combo_print = nullptr; + PlaterPresetComboBox *combo_print = nullptr; std::vector combos_filament; - int editing_filament = -1; - wxBoxSizer* sizer_filaments = nullptr; + int editing_filament = -1; + wxBoxSizer *sizer_filaments = nullptr; - // BBS Sidebar widgets + //BBS Sidebar widgets wxPanel* m_panel_print_title; wxStaticText* m_staticText_print_title; wxPanel* m_panel_print_content; - wxBoxSizer* sizer_params; + wxBoxSizer *sizer_params; - // wxComboBox * m_comboBox_print_preset; - wxStaticLine* m_staticline1; + //wxComboBox * m_comboBox_print_preset; + wxStaticLine * m_staticline1; StaticBox* m_panel_filament_title; - wxPanel* m_panel_filament_separator; + wxPanel* m_panel_filament_separator; wxStaticText* m_staticText_filament_settings; wxStaticText* m_staticText_filament_count; - ScalableButton* m_bpButton_add_filament; - ScalableButton* m_bpButton_del_filament; - ScalableButton* m_bpButton_ams_filament; - ScalableButton* m_bpButton_set_filament; + ScalableButton * m_bpButton_add_filament; + ScalableButton * m_bpButton_del_filament; + ScalableButton * m_bpButton_ams_filament; + ScalableButton * m_bpButton_set_filament; int m_menu_filament_id = -1; wxPanel* m_filament_area_wrapper; @@ -721,63 +737,63 @@ struct Sidebar::priv // Mixed-color filament section. Sits directly under the physical filament list in // scrolled_sizer. BBS hosts the equivalent widgets inside an m_filament_area_wrapper // that Orca's sidebar has no counterpart for, so these are parented to p->scrolled. - wxPanel* m_btn_add_mixed_filament{nullptr}; // "+ Add Mixed Filament" full-width button - wxPanel* m_panel_mixed_title{nullptr}; // title row: "Mixed Filament" + add/del buttons - wxStaticText* m_text_mixed_title{nullptr}; - ScalableButton* m_btn_mixed_add{nullptr}; - ScalableButton* m_btn_mixed_del{nullptr}; - wxScrolledWindow* m_mixed_scroll_area{nullptr}; // independent scrollbar for mixed rows - wxPanel* m_panel_mixed_content{nullptr}; - wxBoxSizer* m_sizer_mixed_filaments{nullptr}; // two-column, mirrors sizer_filaments - wxPanel* m_panel_mixed_warning{nullptr}; // red bar for broken/mismatched mixes - wxStaticText* m_text_mixed_warning{nullptr}; - bool m_mixed_filament_broken{false}; + wxPanel* m_btn_add_mixed_filament{nullptr}; // "+ Add Mixed Filament" full-width button + wxPanel* m_panel_mixed_title{nullptr}; // title row: "Mixed Filament" + add/del buttons + wxStaticText* m_text_mixed_title{nullptr}; + ScalableButton* m_btn_mixed_add{nullptr}; + ScalableButton* m_btn_mixed_del{nullptr}; + wxScrolledWindow* m_mixed_scroll_area{nullptr}; // independent scrollbar for mixed rows + wxPanel* m_panel_mixed_content{nullptr}; + wxBoxSizer* m_sizer_mixed_filaments{nullptr}; // two-column, mirrors sizer_filaments + wxPanel* m_panel_mixed_warning{nullptr}; // red bar for broken/mismatched mixes + wxStaticText* m_text_mixed_warning{nullptr}; + bool m_mixed_filament_broken{false}; wxScrolledWindow* m_scrolledWindow_filament_content; wxStaticLine* m_staticline2; wxPanel* m_panel_project_title; ScalableButton* m_filament_icon = nullptr; - Button* m_purge_mode_btn = nullptr; - Button* m_flushing_volume_btn = nullptr; - TextInput* m_search_item = nullptr; - StaticBox* m_search_bar = nullptr; + Button * m_purge_mode_btn = nullptr; + Button * m_flushing_volume_btn = nullptr; + TextInput* m_search_item = nullptr; + StaticBox* m_search_bar = nullptr; Search::SearchObjectDialog* dia = nullptr; // BBS printer config - StaticBox* m_panel_printer_title = nullptr; - wxPanel* m_panel_printer_separator = nullptr; - ScalableButton* m_printer_icon = nullptr; - ScalableButton* m_printer_connect = nullptr; - ScalableButton* m_printer_bbl_sync = nullptr; - ScalableButton* m_printer_setting = nullptr; - wxStaticText* m_text_printer_settings = nullptr; - wxPanel* m_panel_printer_content = nullptr; + StaticBox* m_panel_printer_title = nullptr; + wxPanel* m_panel_printer_separator = nullptr; + ScalableButton* m_printer_icon = nullptr; + ScalableButton* m_printer_connect = nullptr; + ScalableButton* m_printer_bbl_sync = nullptr; + ScalableButton* m_printer_setting = nullptr; + wxStaticText * m_text_printer_settings = nullptr; + wxPanel* m_panel_printer_content = nullptr; // Filament Track Switch status overlay: an icon floated over the left/single extruder AMS area, // shown only when the switch is installed (green when ready, red when not calibrated). wxStaticBitmap* extruder_separator_icon = nullptr; - ObjectList* m_object_list{nullptr}; - ObjectSettings* object_settings{nullptr}; - ObjectLayers* object_layers{nullptr}; + ObjectList *m_object_list{ nullptr }; + ObjectSettings *object_settings{ nullptr }; + ObjectLayers *object_layers{ nullptr }; - wxButton* btn_export_gcode; - wxButton* btn_reslice; - ScalableButton* btn_send_gcode; - // ScalableButton *btn_eject_device; - ScalableButton* btn_export_gcode_removable; // exports to removable drives (appears only if removable drive is connected) + wxButton *btn_export_gcode; + wxButton *btn_reslice; + ScalableButton *btn_send_gcode; + //ScalableButton *btn_eject_device; + ScalableButton* btn_export_gcode_removable; //exports to removable drives (appears only if removable drive is connected) - bool is_switching_diameter{false}; - Search::OptionsSearcher searcher; + bool is_switching_diameter{false}; + Search::OptionsSearcher searcher; std::string ams_list_device; - priv(Plater* plater) : plater(plater) {} + priv(Plater *plater) : plater(plater) {} ~priv(); void show_preset_comboboxes(); void jump_to_object(ObjectDataViewModelNode* item); void can_search(); - bool sync_extruder_list(bool& only_external_material, bool is_manual = false); + bool sync_extruder_list(bool &only_external_material, bool is_manual = false); // Resolve the nozzle option for a multi-nozzle machine. Returns nullopt (and is a no-op) unless // extruder_count >= 2 && support_multi_nozzle. When is_manual, always pops the MultiNozzleSyncDialog; // otherwise reuses the app_config-cached option when the machine's nozzle config is unchanged. @@ -808,16 +824,17 @@ struct Sidebar::priv void Sidebar::priv::layout_printer(bool isBBL, bool isDual) { // Printer - preset - if (auto sizer = static_cast(panel_printer_preset->GetSizer()); - sizer == nullptr /*|| isBBL != (sizer->GetOrientation() == wxVERTICAL)*/) { - // if (isBBL) { - wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); - hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); - hsizer->Add(combo_printer, 1, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(2)); // 1 already triggers wxEXPAND - hsizer->AddSpacer(FromDIP(2)); - hsizer->Add(btn_edit_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing())); - // hsizer->Add(btn_connect_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing())); - panel_printer_preset->SetSizer(hsizer); + if (auto sizer = static_cast(panel_printer_preset->GetSizer()); + sizer == nullptr /*|| isBBL != (sizer->GetOrientation() == wxVERTICAL)*/) { + + //if (isBBL) { + wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL); + hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + hsizer->Add(combo_printer, 1, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(2)); // 1 already triggers wxEXPAND + hsizer->AddSpacer(FromDIP(2)); + hsizer->Add(btn_edit_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing())); + //hsizer->Add(btn_connect_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing())); + panel_printer_preset->SetSizer(hsizer); //} else { // wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL); // hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_CENTER, FromDIP(4)); @@ -829,11 +846,11 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) } if (vsizer_printer->GetItemCount() == 0) { - wxBoxSizer* hsizer_printer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *hsizer_printer = new wxBoxSizer(wxHORIZONTAL); hsizer_printer->Add(panel_printer_preset, 1, wxEXPAND, 0); - hsizer_printer->Add(panel_nozzle_dia, 0, wxLEFT, FromDIP(4)); + hsizer_printer->Add(panel_nozzle_dia , 0, wxLEFT, FromDIP(4)); hsizer_printer->Add(panel_printer_bed, 0, wxLEFT, FromDIP(4)); - // hsizer_printer->Add(btn_sync_printer , 0, wxLEFT, FromDIP(4)); + //hsizer_printer->Add(btn_sync_printer , 0, wxLEFT, FromDIP(4)); vsizer_printer->AddSpacer(FromDIP(SidebarProps::ContentMarginV())); vsizer_printer->Add(hsizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin())); @@ -848,9 +865,8 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) // Filament Track Switch status icon, floated over the extruder AMS area (positioned in // update_extruder_separator_icon). Created hidden; a click re-shows the ready/not-ready tip. if (!extruder_separator_icon) { - auto bitmap = ScalableBitmap(m_panel_printer_content, "fila_switch", 10); - extruder_separator_icon = new wxStaticBitmap(m_panel_printer_content, wxID_ANY, bitmap.bmp(), wxDefaultPosition, - bitmap.GetBmpSize()); + auto bitmap = ScalableBitmap(m_panel_printer_content, "fila_switch", 10); + extruder_separator_icon = new wxStaticBitmap(m_panel_printer_content, wxID_ANY, bitmap.bmp(), wxDefaultPosition, bitmap.GetBmpSize()); extruder_separator_icon->Hide(); extruder_separator_icon->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& evt) { show_fila_switch_msg(is_fila_switch_ready()); @@ -859,9 +875,9 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) } // single - extruder_single_sizer = single_extruder->sizer; - wxBoxSizer* extruder_sizer = new wxBoxSizer(wxVERTICAL); - extruder_sizer->Add(extruder_dual_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin())); + extruder_single_sizer = single_extruder->sizer; + wxBoxSizer * extruder_sizer = new wxBoxSizer(wxVERTICAL); + extruder_sizer->Add(extruder_dual_sizer , 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin())); extruder_sizer->Add(extruder_single_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin())); vsizer_printer->Add(extruder_sizer, 1, wxEXPAND | wxTOP, FromDIP(2)); @@ -869,14 +885,14 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) vsizer_printer->AddSpacer(FromDIP(SidebarProps::ContentMarginV())); } - // btn_connect_printer->Show(!isBBL); + //btn_connect_printer->Show(!isBBL); m_printer_connect->Show(!isBBL); - // btn_sync_printer->Show(isBBL); + //btn_sync_printer->Show(isBBL); m_printer_bbl_sync->Show(isBBL); // ORCA show plate type combo box only when its supported - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - const auto& cfg = preset_bundle.printers.get_edited_preset().config; + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto& cfg = preset_bundle.printers.get_edited_preset().config; // Orca: we use preset_bundle.is_bbl_vendor() instead of isBBL to determine if the plate type combo box should be shown // ref: https://github.com/OrcaSlicer/OrcaSlicer/pull/11610#discussion_r2607411847 panel_printer_bed->Show(preset_bundle.is_bbl_vendor() || cfg.opt_bool("support_multi_bed_types")); @@ -887,7 +903,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) // Single nozzle & non ams if (!isDual) { // Orca: for printer without flow variant, we do not show flow combo - int extruder_count = 0; + int extruder_count = 0; const bool has_flow_variant = cfg.support_different_extruders(extruder_count); panel_nozzle_dia->Show(!has_flow_variant); @@ -899,9 +915,9 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) // ORCA ensure printer section is visible after changing printer from printer selection dialog // this will inform user on printer change when printer section is collapsed - if (m_panel_printer_content) { + if (m_panel_printer_content){ bool isShown = m_panel_printer_content->IsShown(); - if (!isShown && m_text_printer_settings) { + if(!isShown && m_text_printer_settings){ m_text_printer_settings->SetLabel(_L("Printer")); // ensure title returns to default state m_panel_printer_content->Show(); } @@ -914,7 +930,7 @@ void Sidebar::priv::flush_printer_sync(bool restart) *counter_sync_printer = 6; timer_sync_printer->Start(500); } - // btn_sync_printer->SetBackgroundColorNormal((*counter_sync_printer & 1) ? "#F8F8F8" :"#009688"); + //btn_sync_printer->SetBackgroundColorNormal((*counter_sync_printer & 1) ? "#F8F8F8" :"#009688"); m_printer_bbl_sync->SetBitmap_((*counter_sync_printer & 1) ? "printer_sync_not" : "printer_sync_ok"); if (--*counter_sync_printer <= 0) timer_sync_printer->Stop(); @@ -923,7 +939,7 @@ void Sidebar::priv::flush_printer_sync(bool restart) Sidebar::priv::~priv() { // BBS - // delete object_manipulation; + //delete object_manipulation; delete object_settings; // BBS #if 0 @@ -935,7 +951,7 @@ void Sidebar::priv::show_preset_comboboxes() { const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; -// BBS +//BBS #if 0 for (size_t i = 0; i < 4; ++i) sizer_presets->Show(i, !showSLA); @@ -952,7 +968,10 @@ void Sidebar::priv::show_preset_comboboxes() scrolled->Refresh(); } -void Sidebar::priv::jump_to_object(ObjectDataViewModelNode* item) { m_object_list->selected_object(item); } +void Sidebar::priv::jump_to_object(ObjectDataViewModelNode* item) +{ + m_object_list->selected_object(item); +} void Sidebar::priv::can_search() { @@ -1003,75 +1022,61 @@ void Sidebar::priv::hide_rich_tip(wxButton* btn) } #endif -std::vector get_min_flush_volumes(const DynamicPrintConfig& full_config, size_t nozzle_id) +std::vector get_min_flush_volumes(const DynamicPrintConfig &full_config, size_t nozzle_id) { - std::vector extra_flush_volumes; - // const auto& full_config = wxGetApp().preset_bundle->full_config(); - // auto& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; + std::vectorextra_flush_volumes; + //const auto& full_config = wxGetApp().preset_bundle->full_config(); + //auto& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; const ConfigOptionFloatsNullable* nozzle_volume_opt = full_config.option("nozzle_volume"); - int nozzle_volume_val = nozzle_volume_opt ? (int) nozzle_volume_opt->get_at(nozzle_id) : 0; + int nozzle_volume_val = nozzle_volume_opt ? (int)nozzle_volume_opt->get_at(nozzle_id) : 0; const ConfigOptionInt* enable_long_retraction_when_cut_opt = full_config.option("enable_long_retraction_when_cut"); - int machine_enabled_level = 0; + int machine_enabled_level = 0; if (enable_long_retraction_when_cut_opt) { machine_enabled_level = enable_long_retraction_when_cut_opt->value; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": get enable_long_retraction_when_cut from config, value=%1%") % machine_enabled_level; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": get enable_long_retraction_when_cut from config, value=%1%")%machine_enabled_level; } const ConfigOptionBools* long_retractions_when_cut_opt = full_config.option("long_retractions_when_cut"); - bool machine_activated = false; + bool machine_activated = false; if (long_retractions_when_cut_opt) { machine_activated = long_retractions_when_cut_opt->values[nozzle_id] == 1; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": get long_retractions_when_cut from config, value=%1%, activated=%2%") % - long_retractions_when_cut_opt->values[0] % machine_activated; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": get long_retractions_when_cut from config, value=%1%, activated=%2%")%long_retractions_when_cut_opt->values[0] %machine_activated; } size_t filament_size = full_config.option("filament_diameter")->values.size(); - std::vector filament_retraction_distance_when_cut(filament_size, 18.0f), - printer_retraction_distance_when_cut(filament_size, 18.0f); + std::vector filament_retraction_distance_when_cut(filament_size, 18.0f), printer_retraction_distance_when_cut(filament_size, 18.0f); std::vector filament_long_retractions_when_cut(filament_size, 0); - const ConfigOptionFloats* filament_retraction_distances_when_cut_opt = full_config.option( - "filament_retraction_distances_when_cut"); + const ConfigOptionFloats* filament_retraction_distances_when_cut_opt = full_config.option("filament_retraction_distances_when_cut"); if (filament_retraction_distances_when_cut_opt) { filament_retraction_distance_when_cut = filament_retraction_distances_when_cut_opt->values; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": get filament_retraction_distance_when_cut from config, size=%1%, values=%2%") % - filament_retraction_distance_when_cut.size() % - filament_retraction_distances_when_cut_opt->serialize(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": get filament_retraction_distance_when_cut from config, size=%1%, values=%2%")%filament_retraction_distance_when_cut.size() %filament_retraction_distances_when_cut_opt->serialize(); } - const ConfigOptionFloats* printer_retraction_distance_when_cut_opt = full_config.option( - "retraction_distances_when_cut"); + const ConfigOptionFloats* printer_retraction_distance_when_cut_opt = full_config.option("retraction_distances_when_cut"); if (printer_retraction_distance_when_cut_opt) { printer_retraction_distance_when_cut = printer_retraction_distance_when_cut_opt->values; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": get retraction_distances_when_cut from config, size=%1%, values=%2%") % - printer_retraction_distance_when_cut.size() % printer_retraction_distance_when_cut_opt->serialize(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": get retraction_distances_when_cut from config, size=%1%, values=%2%")%printer_retraction_distance_when_cut.size() %printer_retraction_distance_when_cut_opt->serialize(); } - const ConfigOptionBools* filament_long_retractions_when_cut_opt = full_config.option( - "filament_long_retractions_when_cut"); + const ConfigOptionBools* filament_long_retractions_when_cut_opt = full_config.option("filament_long_retractions_when_cut"); if (filament_long_retractions_when_cut_opt) { filament_long_retractions_when_cut = filament_long_retractions_when_cut_opt->values; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": get filament_long_retractions_when_cut from config, size=%1%, values=%2%") % - filament_long_retractions_when_cut.size() % filament_long_retractions_when_cut_opt->serialize(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": get filament_long_retractions_when_cut from config, size=%1%, values=%2%")%filament_long_retractions_when_cut.size() %filament_long_retractions_when_cut_opt->serialize(); } for (size_t idx = 0; idx < filament_size; ++idx) { int extra_flush_volume = nozzle_volume_val; - int retract_length = machine_enabled_level && machine_activated ? printer_retraction_distance_when_cut[nozzle_id] : 0; + int retract_length = machine_enabled_level && machine_activated ? printer_retraction_distance_when_cut[nozzle_id] : 0; unsigned char filament_activated = filament_long_retractions_when_cut[idx]; - double filament_retract_length = filament_retraction_distance_when_cut[idx]; + double filament_retract_length = filament_retraction_distance_when_cut[idx]; if (filament_activated == 0) retract_length = 0; else if (filament_activated == 1 && machine_enabled_level == LongRectrationLevel::EnableFilament) { if (!std::isnan(filament_retract_length)) - retract_length = (int) filament_retraction_distance_when_cut[idx]; + retract_length = (int)filament_retraction_distance_when_cut[idx]; else retract_length = printer_retraction_distance_when_cut[nozzle_id]; } @@ -1092,20 +1097,20 @@ struct DynamicFilamentList : DynamicList // physical-only list for all of its keys. explicit DynamicFilamentList(bool physical_only = false) : physical_only(physical_only) {} bool physical_only; - std::vector> items; + std::vector> items; std::vector slot_map{0}; // combo index -> 1-based filament slot; slot_map[0] = 0 is "Default" - void apply_on(Choice* c) override + void apply_on(Choice *c) override { if (!c) return; if (items.empty()) update(true); - auto cb = dynamic_cast(c->window); + auto cb = dynamic_cast(c->window); if (!cb) return; wxString old_selection = cb->GetStringSelection(); - int old_index = cb->GetSelection(); + int old_index = cb->GetSelection(); // slot_map is already rebuilt here: restoring through it keeps the index of every slot // still listed and sends a vanished slot to the fallback below. int old_slot = old_index >= 0 && old_index < int(slot_map.size()) ? slot_map[old_index] : -1; @@ -1152,7 +1157,7 @@ struct DynamicFilamentList : DynamicList slot_map.assign(1, 0); if (!force && m_choices.empty()) return; - auto icons = get_extruder_color_icons(true); + auto icons = get_extruder_color_icons(true); auto presets = wxGetApp().preset_bundle->filament_presets; for (int i = 0; i < presets.size(); ++i) { if (physical_only && wxGetApp().preset_bundle->is_mixed_filament(i)) @@ -1176,7 +1181,10 @@ static bool has_junction_deviation(const DynamicPrintConfig* printer_config) } const auto gcode_flavor = printer_config->option>("gcode_flavor"); const auto junction_dev = printer_config->option("machine_max_junction_deviation"); - return gcode_flavor && gcode_flavor->value == GCodeFlavor::gcfMarlinFirmware && junction_dev && !junction_dev->values.empty() && + return gcode_flavor && + gcode_flavor->value == GCodeFlavor::gcfMarlinFirmware && + junction_dev && + !junction_dev->values.empty() && junction_dev->values.front() > 0.0; } @@ -1186,22 +1194,21 @@ static DynamicFilamentList dynamic_physical_filament_list(true); // physical slo class AMSCountPopupWindow : public PopupWindow { public: - AMSCountPopupWindow(ExtruderGroup* extruder, int index) : PopupWindow(extruder, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS) + AMSCountPopupWindow(ExtruderGroup *extruder, int index) + : PopupWindow(extruder, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS) { SetBackgroundColour(*wxWHITE); - auto msg = new wxStaticText(this, wxID_ANY, _L("Set the number of AMS installed on the nozzle.")); + auto msg = new wxStaticText(this, wxID_ANY, _L("Set the number of AMS installed on the nozzle.")); msg->SetFont(Label::Body_14); msg->SetForegroundColour("#262E30"); msg->Wrap(FromDIP(280)); auto box = new StaticBox(this, wxID_ANY); box->SetBackgroundColor(0xF8F8F8); box->SetBorderWidth(0); - auto img4 = new ScalableButton(box, wxID_ANY, "ams_4_tray", {}, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, - false, 44); - // img4->SetBackgroundColour(*wxWHITE); - auto img1 = new ScalableButton(box, wxID_ANY, "ams_1_tray", {}, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, - false, 44); - // img1->SetBackgroundColour(*wxWHITE); + auto img4 = new ScalableButton(box, wxID_ANY, "ams_4_tray", {}, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 44); + //img4->SetBackgroundColour(*wxWHITE); + auto img1 = new ScalableButton(box, wxID_ANY, "ams_1_tray", {}, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 44); + //img1->SetBackgroundColour(*wxWHITE); auto txt4 = new wxStaticText(box, wxID_ANY, _L("AMS(4 slots)")); txt4->SetFont(Label::Body_14); txt4->SetBackgroundColour(0xF8F8F8); @@ -1216,28 +1223,28 @@ public: GetAMSCount(1 - index, oth4, oth1); auto val4 = new SpinInput(box, {}, {}, wxDefaultPosition, {FromDIP(60), -1}, 0, 0, 4 - oth4, ams4); auto val1 = new SpinInput(box, {}, {}, wxDefaultPosition, {FromDIP(60), -1}, 0, 0, 8 - oth1, ams1); - auto event_handler = [index, val4, val1, extruder](auto& evt) { + auto event_handler = [index, val4, val1, extruder](auto &evt) { SetAMSCount(index, val4->GetValue(), val1->GetValue()); UpdateAMSCount(index, extruder); }; val4->Bind(wxEVT_SPINCTRL, event_handler); val1->Bind(wxEVT_SPINCTRL, event_handler); - wxSizer* sizer = new wxBoxSizer(wxVERTICAL); + wxSizer * sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(msg, 0, wxTOP | wxLEFT | wxRIGHT, FromDIP(10)); - wxSizer* sizer2 = new wxBoxSizer(wxVERTICAL); - wxSizer* sizer21 = new wxBoxSizer(wxHORIZONTAL); - sizer21->Add(img4, 0, wxALIGN_CENTRE); - sizer21->Add(txt4, 2, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); - sizer21->Add(val4, 1, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); - sizer2->Add(sizer21, 0, wxLEFT | wxRIGHT | wxTOP | wxEXPAND, FromDIP(14)); - sizer2->AddSpacer(FromDIP(6)); - wxSizer* sizer22 = new wxBoxSizer(wxHORIZONTAL); - sizer22->Add(img1, 0, wxALIGN_CENTRE); - sizer22->Add(txt1, 2, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); - sizer22->Add(val1, 1, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); - sizer2->Add(sizer22, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, FromDIP(14)); - box->SetSizer(sizer2); + wxSizer *sizer2 = new wxBoxSizer(wxVERTICAL); + wxSizer *sizer21 = new wxBoxSizer(wxHORIZONTAL); + sizer21->Add(img4, 0, wxALIGN_CENTRE); + sizer21->Add(txt4, 2, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); + sizer21->Add(val4, 1, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); + sizer2->Add(sizer21, 0, wxLEFT | wxRIGHT | wxTOP | wxEXPAND, FromDIP(14)); + sizer2->AddSpacer(FromDIP(6)); + wxSizer *sizer22 = new wxBoxSizer(wxHORIZONTAL); + sizer22->Add(img1, 0, wxALIGN_CENTRE); + sizer22->Add(txt1, 2, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); + sizer22->Add(val1, 1, wxLEFT | wxALIGN_CENTRE, FromDIP(10)); + sizer2->Add(sizer22, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND, FromDIP(14)); + box->SetSizer(sizer2); sizer->Add(box, 0, wxTOP | wxBOTTOM | wxLEFT | wxRIGHT | wxEXPAND, FromDIP(14)); SetSizer(sizer); @@ -1245,11 +1252,11 @@ public: Fit(); Bind(wxEVT_PAINT, [this](wxPaintEvent& evt) { - wxPaintDC dc(this); - dc.SetPen(StateColor::darkModeColorFor(wxColour("#DBDBDB"))); // ORCA match popup border color - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0); - }); + wxPaintDC dc(this); + dc.SetPen(StateColor::darkModeColorFor(wxColour("#DBDBDB"))); // ORCA match popup border color + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0); + }); SetBackgroundColour(*wxWHITE); wxGetApp().UpdateDarkUIWin(this); @@ -1257,34 +1264,35 @@ public: static void SetAMSCount(int index, int ams4, int ams1) { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; preset_bundle.extruder_ams_counts.resize(2); - auto& ams_map = preset_bundle.extruder_ams_counts[index]; - ams_map[4] = ams4; - ams_map[1] = ams1; + auto &ams_map = preset_bundle.extruder_ams_counts[index]; + ams_map[4] = ams4; + ams_map[1] = ams1; - std::vector extruder_ams_count = save_extruder_ams_count_to_string(preset_bundle.extruder_ams_counts); - std::string extruder_ams_count_str = boost::algorithm::join(extruder_ams_count, ","); + std::vector extruder_ams_count = save_extruder_ams_count_to_string(preset_bundle.extruder_ams_counts); + std::string extruder_ams_count_str = boost::algorithm::join(extruder_ams_count, ","); wxGetApp().app_config->set("presets", "extruder_ams_count", extruder_ams_count_str); wxGetApp().plater()->update(); // update slice status } - static void GetAMSCount(int index, int& ams4, int& ams1) + static void GetAMSCount(int index, int & ams4, int & ams1) { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; if (preset_bundle.extruder_ams_counts.empty()) { ams4 = 0; ams1 = 0; - } else { + } + else { assert(preset_bundle.extruder_ams_counts.size() == 2); ams4 = preset_bundle.extruder_ams_counts[index][4]; ams1 = preset_bundle.extruder_ams_counts[index][1]; } } - static void UpdateAMSCount(int index, ExtruderGroup* extruder) + static void UpdateAMSCount(int index, ExtruderGroup *extruder) { - std::vector>& ams_counts = wxGetApp().preset_bundle->extruder_ams_counts; + std::vector> &ams_counts = wxGetApp().preset_bundle->extruder_ams_counts; ams_counts.resize(2); std::map& ams_map = ams_counts[index]; if (ams_map.find(4) == ams_map.end()) { @@ -1298,7 +1306,8 @@ public: } }; -ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) : StaticGroup(parent, wxID_ANY, wxString()) +ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title) + : StaticGroup(parent, wxID_ANY, wxString()) { SetFont(Label::Body_10); SetForegroundColour(wxColour("#CECECE")); @@ -1311,18 +1320,16 @@ ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) hover_label = new HoverLabel(this, title); // Nozzle - wxStaticText* label_diameter = new wxStaticText(this, wxID_ANY, _L("Diameter")); + wxStaticText *label_diameter = new wxStaticText(this, wxID_ANY, _L("Diameter")); label_diameter->SetFont(Label::Body_14); label_diameter->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); - if (index >= 0) - label_diameter->SetMinSize({FromDIP(80), -1}); - auto combo_diameter = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); - this->combo_diameter = combo_diameter; - wxStaticText* label_flow = new wxStaticText(this, wxID_ANY, _L("Flow")); + if (index >= 0) label_diameter->SetMinSize({FromDIP(80), -1}); + auto combo_diameter = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); + this->combo_diameter = combo_diameter; + wxStaticText *label_flow = new wxStaticText(this, wxID_ANY, _L("Flow")); label_flow->SetFont(Label::Body_14); label_flow->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); - if (index >= 0) - label_flow->SetMinSize({FromDIP(80), -1}); + if (index >= 0) label_flow->SetMinSize({FromDIP(80), -1}); auto combo_flow = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); combo_flow->GetDropDown().SetUseContentWidth(true); combo_flow->Bind(wxEVT_COMBOBOX, [index, combo_flow](wxCommandEvent &evt) { @@ -1341,36 +1348,27 @@ ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) this->combo_flow = combo_flow; // AMS - wxStaticText* label_ams = new wxStaticText(this, wxID_ANY, _L("AMS")); + wxStaticText *label_ams = new wxStaticText(this, wxID_ANY, _L("AMS")); label_ams->SetFont(Label::Body_14); label_ams->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30"))); - // label_ams->SetMinSize({FromDIP(70), -1}); + //label_ams->SetMinSize({FromDIP(70), -1}); if (index >= 0) { btn_edit = new ScalableButton(this, wxID_ANY, "dot"); btn_edit->SetBackgroundColour(extruder_group_chip_bg()); btn_edit->Hide(); - btn_edit->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto& evt) { - PopupWindow* window = new AMSCountPopupWindow(this, index); - auto size = GetSize(); - auto pos = ClientToScreen({0, size.y + 12}); + btn_edit->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) { + PopupWindow *window = new AMSCountPopupWindow(this, index); + auto size = GetSize(); + auto pos = ClientToScreen({0, size.y + 12}); size.SetWidth(size.GetWidth() + FromDIP(10)); window->Position(pos, {0, 0}); window->Popup(); }); - auto hovered = std::make_shared(); - for (wxWindow* w : - std::initializer_list{this, label_diameter, combo_diameter, label_flow, combo_flow, btn_edit, label_ams}) { - w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, this](wxMouseEvent& evt) { - *hovered = w; - btn_edit->SetBitmap_("edit"); - }); - w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, this](wxMouseEvent& evt) { - if (*hovered == w) { - btn_edit->SetBitmap_("dot"); - *hovered = nullptr; - } - }); + auto hovered = std::make_shared(); + for (wxWindow *w : std::initializer_list{this, label_diameter, combo_diameter, label_flow, combo_flow, btn_edit, label_ams}) { + w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, this](wxMouseEvent &evt) { *hovered = w; btn_edit->SetBitmap_("edit"); }); + w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, this](wxMouseEvent &evt) { if (*hovered == w) { btn_edit->SetBitmap_("dot"); *hovered = nullptr; } }); } } @@ -1392,8 +1390,7 @@ ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) hsizer_ams->Add(btn_edit, 0, wxLEFT | wxALIGN_CENTER, FromDIP(2)); hsizer_ams->Add(ams_not_installed_msg, 0, wxALIGN_CENTER); - btn_up = new ScalableButton(this, wxID_ANY, "page_up", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, - false, 14); + btn_up = new ScalableButton(this, wxID_ANY, "page_up", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 14); btn_up->SetBackgroundColour(*wxWHITE); btn_up->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &evt) { if (page_cur > 0) @@ -1401,8 +1398,7 @@ ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) update_ams(); }); btn_up->Hide(); - btn_down = new ScalableButton(this, wxID_ANY, "page_down", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, - wxBU_EXACTFIT | wxNO_BORDER, false, 14); + btn_down = new ScalableButton(this, wxID_ANY, "page_down", "", {FromDIP(14), FromDIP(14)}, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 14); btn_down->SetBackgroundColour(*wxWHITE); btn_down->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this](auto &evt) { if (page_cur + 1 < page_num) @@ -1411,25 +1407,25 @@ ExtruderGroup::ExtruderGroup(wxWindow* parent, int index, wxString const& title) }); btn_down->Hide(); - wxBoxSizer* hsizer_diameter = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *hsizer_diameter = new wxBoxSizer(wxHORIZONTAL); hsizer_diameter->Add(label_diameter, 0, wxALIGN_CENTER); hsizer_diameter->Add(combo_diameter, 1, wxEXPAND); - wxBoxSizer* hsizer_nozzle = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer * hsizer_nozzle = new wxBoxSizer(wxHORIZONTAL); hsizer_nozzle->Add(label_flow, 0, wxALIGN_CENTER); hsizer_nozzle->Add(combo_flow, 1, wxEXPAND); if (index < 0) { label_ams->Hide(); ams_not_installed_msg->Hide(); - wxStaticBoxSizer* vsizer = new wxStaticBoxSizer(this, wxVERTICAL); - wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); - hsizer->Add(hsizer_diameter, 1, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(8)); + wxStaticBoxSizer *vsizer = new wxStaticBoxSizer(this, wxVERTICAL); + wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL); + hsizer->Add(hsizer_diameter, 1, wxEXPAND | wxTOP| wxBOTTOM, FromDIP(8)); hsizer->Add(hsizer_nozzle, 1, wxEXPAND | wxALL, FromDIP(8)); hsizer->AddSpacer(FromDIP(2)); // Avoid badge vsizer->Add(hover_label, 0, wxLEFT | wxALL, FromDIP(2)); vsizer->Add(hsizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, FromDIP(2)); this->sizer = vsizer; } else { - wxStaticBoxSizer* vsizer = new wxStaticBoxSizer(this, wxVERTICAL); + wxStaticBoxSizer *vsizer = new wxStaticBoxSizer(this, wxVERTICAL); vsizer->Add(hover_label, 0, wxLEFT | wxALL, FromDIP(2)); vsizer->Add(hsizer_ams, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, FromDIP(2)); vsizer->Add(hsizer_diameter, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, FromDIP(2)); @@ -1444,8 +1440,7 @@ void ExtruderGroup::update_ams() static AMSinfo info4; static AMSinfo info1; if (info4.cans.empty()) { - for (size_t i = 0; i < 4; ++i) - info4.cans.push_back({}); + for (size_t i = 0; i < 4; ++i) info4.cans.push_back({}); info1.ams_type = AMSModel::N3S_AMS; info1.cans.push_back({}); } @@ -1496,7 +1491,7 @@ void ExtruderGroup::update_ams() hsizer_ams->AddStretchSpacer(1); if (btn_up->IsShown() && btn_down->IsShown()) { auto vsizer_btn = new wxBoxSizer(wxVERTICAL); - auto size = btn_up->GetSize(); + auto size = btn_up->GetSize(); vsizer_btn->Add(btn_up, 0); vsizer_btn->Add(btn_down, 0); hsizer_ams->Add(vsizer_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(2)); @@ -1510,16 +1505,16 @@ void ExtruderGroup::update_ams() sizer->Layout(); } -void ExtruderGroup::sync_ams(MachineObject const* obj, std::vector const& ams4, std::vector const& ams1) +void ExtruderGroup::sync_ams(MachineObject const *obj, std::vector const &ams4, std::vector const &ams1) { - if (ams_4.empty() && ams4.empty() && ams_1.empty() && ams1.empty()) + if (ams_4.empty() && ams4.empty() + && ams_1.empty() && ams1.empty()) return; - auto sync = [obj](std::vector& infos, std::vector const& ams) -> bool { + auto sync = [obj](std::vector &infos, std::vector const &ams) -> bool { std::vector infos2; for (auto a : ams) { AMSinfo ams_info; - ams_info.parse_ams_info(const_cast(obj), a, obj->GetFilaSystem()->IsDetectRemainEnabled(), - obj->is_support_ams_humidity); + ams_info.parse_ams_info(const_cast(obj), a, obj->GetFilaSystem()->IsDetectRemainEnabled(), obj->is_support_ams_humidity); infos2.push_back(ams_info); } if (infos == infos2) @@ -1543,14 +1538,12 @@ bool Sidebar::priv::switch_diameter(bool single) if (single) { diameter = single_extruder->combo_diameter->GetValue(); } else { - auto diameter_left = left_extruder->combo_diameter->GetValue(); + auto diameter_left = left_extruder->combo_diameter->GetValue(); auto diameter_right = right_extruder->combo_diameter->GetValue(); if (diameter_left != diameter_right) { std::string printer_type = wxGetApp().preset_bundle->printers.get_edited_preset().get_printer_type(wxGetApp().preset_bundle); - auto left_name = _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::SentenceCase)); - auto right_name = _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::SentenceCase)); + auto left_name = _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::SentenceCase)); + auto right_name = _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::SentenceCase)); MessageDialog dlg(this->plater, _L("The software does not support using different diameter of nozzles for one print. " "If the left and right nozzles are inconsistent, we can only proceed with single-head printing. " @@ -1565,14 +1558,15 @@ bool Sidebar::priv::switch_diameter(bool single) diameter = diameter_right; else return false; - } else { + } + else { diameter = diameter_left; } } - + // ORCA: Check if the selected diameter matches the current nozzle diameter in the config Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); - auto* nozzle_diameter = dynamic_cast(printer_preset.config.option("nozzle_diameter")); + auto* nozzle_diameter = dynamic_cast(printer_preset.config.option("nozzle_diameter")); if (nozzle_diameter && nozzle_diameter->size() > 0) { auto current_nozzle_dia = get_diameter_string(nozzle_diameter->values[0]); // If the selected diameter is the same as current nozzle, don't switch profiles @@ -1580,8 +1574,8 @@ bool Sidebar::priv::switch_diameter(bool single) return true; } } - - auto preset = wxGetApp().preset_bundle->get_similar_printer_preset({}, diameter.ToStdString()); + + auto preset = wxGetApp().preset_bundle->get_similar_printer_preset({}, diameter.ToStdString()); if (preset == nullptr) { // ORCA add a text. this appears when user tries to change nozzle value but config doesnt have a inherited or compatible preset MessageDialog dlg(this->plater, _L("Configuration incompatible"), _L("Warning"), wxICON_WARNING | wxOK); @@ -1594,7 +1588,9 @@ bool Sidebar::priv::switch_diameter(bool single) static bool is_skip_high_flow_printer(const std::string& printer) { - static const std::set invalidate_list = {"Bambu Lab X1E"}; + static const std::set invalidate_list = { + "Bambu Lab X1E" + }; return invalidate_list.count(printer); }; @@ -1619,8 +1615,7 @@ static std::string serialize_nozzle_config(const std::map 0) - oss << ";"; + if (i > 0) oss << ";"; oss << std::fixed << std::setprecision(1) << deputy_nozzles[i].GetNozzleDiameter() << "," << static_cast(deputy_nozzles[i].GetNozzleFlowType()); } @@ -1628,8 +1623,7 @@ static std::string serialize_nozzle_config(const std::map 0) - oss << ";"; + if (i > 0) oss << ";"; oss << std::fixed << std::setprecision(1) << main_nozzles[i].GetNozzleDiameter() << "," << static_cast(main_nozzles[i].GetNozzleFlowType()); } @@ -1637,11 +1631,10 @@ static std::string serialize_nozzle_config(const std::map> deserialize_nozzle_config(const std::string& config_str) +static std::map> deserialize_nozzle_config(const std::string &config_str) { std::map> nozzle_cfg_map; - if (config_str.empty()) - return nozzle_cfg_map; + if (config_str.empty()) return nozzle_cfg_map; std::vector extruder_parts; boost::split(extruder_parts, config_str, boost::is_any_of("|")); @@ -1650,12 +1643,12 @@ static std::map> deserialize_nozzle_config(const std std::vector nozzles; std::vector parts; boost::split(parts, part_str, boost::is_any_of(";")); - for (const auto& part : parts) { + for (const auto &part : parts) { std::vector values; boost::split(values, part, boost::is_any_of(",")); if (values.size() == 2) { DevNozzle nozzle; - nozzle.m_diameter = std::stof(values[0]); + nozzle.m_diameter = std::stof(values[0]); nozzle.m_nozzle_flow = static_cast(std::stoi(values[1])); nozzles.push_back(nozzle); } @@ -1664,42 +1657,39 @@ static std::map> deserialize_nozzle_config(const std }; if (extruder_parts.size() != 2) { - auto nozzles = get_nozzles_from_string(config_str); - nozzle_cfg_map[MAIN_EXTRUDER_ID] = nozzles; - nozzle_cfg_map[DEPUTY_EXTRUDER_ID] = {DevNozzle()}; + auto nozzles = get_nozzles_from_string(config_str); + nozzle_cfg_map[MAIN_EXTRUDER_ID] = nozzles; + nozzle_cfg_map[DEPUTY_EXTRUDER_ID] = { DevNozzle() }; return nozzle_cfg_map; } if (!extruder_parts[0].empty()) { - auto nozzles = get_nozzles_from_string(extruder_parts[0]); + auto nozzles = get_nozzles_from_string(extruder_parts[0]); nozzle_cfg_map[DEPUTY_EXTRUDER_ID] = nozzles; } if (!extruder_parts[1].empty()) { - auto nozzles = get_nozzles_from_string(extruder_parts[1]); + auto nozzles = get_nozzles_from_string(extruder_parts[1]); nozzle_cfg_map[MAIN_EXTRUDER_ID] = nozzles; } return nozzle_cfg_map; } -static bool is_same_nozzle_config(const std::map>& config1, const std::map>& config2) +static bool is_same_nozzle_config(const std::map> &config1, const std::map> &config2) { - if (config1.size() != config2.size()) - return false; + if (config1.size() != config2.size()) return false; for (const auto& [eid, nozzles1] : config1) { auto it = config2.find(eid); - if (it == config2.end()) - return false; + if (it == config2.end()) return false; - const auto& nozzles2 = it->second; - if (nozzles1.size() != nozzles2.size()) - return false; + const auto &nozzles2 = it->second; + if (nozzles1.size() != nozzles2.size()) return false; auto sorted_nozzles1 = nozzles1; auto sorted_nozzles2 = nozzles2; - auto compare_nozzle = [](const DevNozzle& a, const DevNozzle& b) { + auto compare_nozzle = [](const DevNozzle &a, const DevNozzle &b) { float dia_a = a.GetNozzleDiameter(); float dia_b = b.GetNozzleDiameter(); if (std::abs(dia_a - dia_b) > EPSILON) { @@ -1722,22 +1712,19 @@ static bool is_same_nozzle_config(const std::map>& c return true; } -static std::string serialize_nozzle_option(const NozzleOption& option) -{ +static std::string serialize_nozzle_option(const NozzleOption& option) { std::ostringstream oss; oss << option.diameter << "|"; bool first = true; for (const auto& pair : option.extruder_nozzle_stats) { - if (!first) - oss << ";"; + if (!first) oss << ";"; first = false; oss << pair.first << ":"; bool first_stat = true; for (const auto& stat_pair : pair.second) { - if (!first_stat) - oss << ","; + if (!first_stat) oss << ","; first_stat = false; oss << static_cast(stat_pair.first) << "#" << stat_pair.second; } @@ -1745,15 +1732,12 @@ static std::string serialize_nozzle_option(const NozzleOption& option) return oss.str(); } -static std::optional deserialize_nozzle_option(const std::string& option_str) -{ - if (option_str.empty()) - return std::nullopt; +static std::optional deserialize_nozzle_option(const std::string& option_str) { + if (option_str.empty()) return std::nullopt; std::vector parts; boost::split(parts, option_str, boost::is_any_of("|")); - if (parts.size() != 2) - return std::nullopt; + if (parts.size() != 2) return std::nullopt; NozzleOption option; option.diameter = parts[0]; @@ -1762,13 +1746,11 @@ static std::optional deserialize_nozzle_option(const std::string& boost::split(extruder_parts, parts[1], boost::is_any_of(";")); for (const auto& extruder_part : extruder_parts) { - if (extruder_part.empty()) - continue; + if (extruder_part.empty()) continue; std::vector extruder_data; boost::split(extruder_data, extruder_part, boost::is_any_of(":")); - if (extruder_data.size() != 2) - continue; + if (extruder_data.size() != 2) continue; int extruder_id = std::stoi(extruder_data[0]); std::unordered_map stats; @@ -1781,8 +1763,8 @@ static std::optional deserialize_nozzle_option(const std::string& boost::split(kv, stat_part, boost::is_any_of("#")); if (kv.size() == 2) { NozzleVolumeType type = static_cast(std::stoi(kv[0])); - int count = std::stoi(kv[1]); - stats[type] = count; + int count = std::stoi(kv[1]); + stats[type] = count; } } @@ -1792,21 +1774,16 @@ static std::optional deserialize_nozzle_option(const std::string& return option; } -std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj, - int extruder_count, - bool support_multi_nozzle, - bool is_manual) +std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj, int extruder_count, bool support_multi_nozzle, bool is_manual) { if (extruder_count < 2 || !support_multi_nozzle) { return std::nullopt; } - if (!obj || !obj->GetNozzleSystem()) - return std::nullopt; + if (!obj || !obj->GetNozzleSystem()) return std::nullopt; auto nozzle_system = obj->GetNozzleSystem(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - if (!preset_bundle) - return std::nullopt; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + if (!preset_bundle) return std::nullopt; std::string curr_dev_id = obj->get_dev_id(); std::map> curr_nozzle_cfg; @@ -1820,8 +1797,8 @@ std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj curr_nozzle_cfg[MAIN_EXTRUDER_ID].emplace_back(rack_nozzle.second); } - AppConfig* app_config = wxGetApp().app_config; - std::string saved_dev_id = app_config->get("sync_extruder", "dev_id"); + AppConfig *app_config = wxGetApp().app_config; + std::string saved_dev_id = app_config->get("sync_extruder", "dev_id"); std::string saved_nozzle_config_str = app_config->get("sync_extruder", "nozzle_config"); std::string saved_nozzle_option_str = app_config->get("sync_extruder", "nozzle_option"); std::optional nozzle_option; @@ -1833,20 +1810,20 @@ std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj if (!saved_dev_id.empty() && !saved_nozzle_config_str.empty() && !saved_nozzle_option_str.empty() && saved_dev_id == curr_dev_id) { auto saved_nozzle_config = deserialize_nozzle_config(saved_nozzle_config_str); if (is_same_nozzle_config(saved_nozzle_config, curr_nozzle_cfg)) { - nozzle_option = deserialize_nozzle_option(saved_nozzle_option_str); + nozzle_option = deserialize_nozzle_option(saved_nozzle_option_str); can_reuse_saved_option = nozzle_option.has_value(); } if (can_reuse_saved_option) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Reusing saved nozzle option for dev_id: " << curr_dev_id; - auto& project_config = preset_bundle->project_config; - ConfigOptionEnumsGeneric* nozzle_volume_type_opt = project_config.option("nozzle_volume_type"); + auto &project_config = preset_bundle->project_config; + ConfigOptionEnumsGeneric *nozzle_volume_type_opt = project_config.option("nozzle_volume_type"); // Write to preset bundle config for (int extruder_id = 0; extruder_id < extruder_count; ++extruder_id) { NozzleVolumeType volume_type; - int nozzle_count; - bool clear_all = true; + int nozzle_count; + bool clear_all = true; if (!nozzle_option->extruder_nozzle_stats.count(extruder_id)) { nozzle_count = 0; @@ -1863,7 +1840,7 @@ std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj clear_all = false; } } else { - for (auto& stat : nozzle_option->extruder_nozzle_stats[extruder_id]) { + for (auto &stat : nozzle_option->extruder_nozzle_stats[extruder_id]) { volume_type = stat.first; nozzle_count = stat.second; setExtruderNozzleCount(preset_bundle, extruder_id, volume_type, nozzle_count, clear_all); @@ -1875,8 +1852,7 @@ std::optional Sidebar::priv::get_nozzle_options(MachineObject* obj // a manual flow switch, and refresh the sidebar badges. setNozzleStatsFromMachine(true); if (nozzle_volume_type_opt) { - for (int extruder_id = 0; extruder_id < extruder_count && extruder_id < (int) nozzle_volume_type_opt->values.size(); - ++extruder_id) + for (int extruder_id = 0; extruder_id < extruder_count && extruder_id < (int) nozzle_volume_type_opt->values.size(); ++extruder_id) updateNozzleCountDisplay(preset_bundle, extruder_id, NozzleVolumeType(nozzle_volume_type_opt->values[extruder_id])); } } @@ -1930,7 +1906,7 @@ void Sidebar::priv::show_fila_switch_msg(bool ready) long style = ready ? (wxICON_INFORMATION | wxOK) : (wxICON_WARNING | wxOK); // Orca: drop the vendor "Learn more" tracking link; there is no Orca help page for the switch yet. - MessageDialog dlg(static_cast(wxGetApp().mainframe), msg, _L("Tips"), style); + MessageDialog dlg(static_cast(wxGetApp().mainframe), msg, _L("Tips"), style); dlg.CenterOnParent(); dlg.ShowModal(); } @@ -1980,12 +1956,12 @@ void Sidebar::priv::update_extruder_separator_icon(bool show, bool ready) // left_extruder->GetPosition() and the icon position live in the same coordinate space. wxPoint left_box_pos = left_extruder->GetPosition(); wxPoint ams_local_pos = left_extruder->hsizer_ams->GetPosition(); - wxSize left_size = left_extruder->sizer->GetSize(); - wxSize ams_size = left_extruder->hsizer_ams->GetSize(); - wxSize icon_size = extruder_separator_icon->GetSize(); - int ams_abs_y = left_box_pos.y + ams_local_pos.y + FromDIP(4); - int center_x = left_size.GetWidth() + FromDIP(6); - int center_y = ams_abs_y + (ams_size.GetHeight() - icon_size.GetHeight()) / 2; + wxSize left_size = left_extruder->sizer->GetSize(); + wxSize ams_size = left_extruder->hsizer_ams->GetSize(); + wxSize icon_size = extruder_separator_icon->GetSize(); + int ams_abs_y = left_box_pos.y + ams_local_pos.y + FromDIP(4); + int center_x = left_size.GetWidth() + FromDIP(6); + int center_y = ams_abs_y + (ams_size.GetHeight() - icon_size.GetHeight()) / 2; center_x -= icon_size.GetWidth() / 2; center_y -= icon_size.GetHeight() / 2; extruder_separator_icon->SetPosition(wxPoint(center_x, center_y)); @@ -2004,19 +1980,19 @@ void Sidebar::priv::update_extruder_separator_icon(bool show, bool ready) m_panel_printer_content->Refresh(); } -bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_manual) +bool Sidebar::priv::sync_extruder_list(bool &only_external_material, bool is_manual) { - MachineObject* obj = wxGetApp().getDeviceManager()->get_selected_machine(); - auto printer_name = plater->get_selected_printer_name_in_combox(); + MachineObject *obj = wxGetApp().getDeviceManager()->get_selected_machine(); + auto printer_name = plater->get_selected_printer_name_in_combox(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " begin sync_extruder_list"; if (obj == nullptr) { plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information")); return false; } - // if (obj->get_extder_system()->extders.size() != 2) {//wxString(obj->get_preset_printer_model_name(machine_print_name)) - // plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::INCONSISTENT, _L("Sync printer - // information")); return false; - // } + //if (obj->get_extder_system()->extders.size() != 2) {//wxString(obj->get_preset_printer_model_name(machine_print_name)) + // plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::INCONSISTENT, _L("Sync printer information")); + // return false; + //} if (!plater->check_printer_initialized(obj)) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " check_printer_initialized fail"; @@ -2024,18 +2000,16 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man } std::string machine_print_name = obj->get_show_printer_type(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - std::string target_model_id = preset_bundle->printers.get_selected_preset().get_printer_type(preset_bundle); - Preset* machine_preset = get_printer_preset(obj); + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + std::string target_model_id = preset_bundle->printers.get_selected_preset().get_printer_type(preset_bundle); + Preset* machine_preset = get_printer_preset(obj); if (!machine_preset) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "check error: machine_preset empty"; return false; } if (machine_print_name != target_model_id) { - MessageDialog dlg(this->plater, - _L("The currently selected machine preset is inconsistent with the connected printer type.\n" - "Are you sure to continue syncing?"), - _L("Sync printer information"), wxICON_WARNING | wxYES | wxNO); + MessageDialog dlg(this->plater, _L("The currently selected machine preset is inconsistent with the connected printer type.\n" + "Are you sure to continue syncing?"), _L("Sync printer information"), wxICON_WARNING | wxYES | wxNO); if (dlg.ShowModal() == wxID_NO) { return false; } @@ -2049,11 +2023,11 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man }); } BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " go on sync_extruder_list"; - const Preset& cur_preset = preset_bundle->printers.get_selected_preset(); - int extruder_nums = preset_bundle->get_printer_extruder_count(); + const Preset &cur_preset = preset_bundle->printers.get_selected_preset(); + int extruder_nums = preset_bundle->get_printer_extruder_count(); std::vector extruder_map(extruder_nums); std::iota(extruder_map.begin(), extruder_map.end(), 0); - const ConfigOptionInts* physical_extruder_map = cur_preset.config.option("physical_extruder_map"); + const ConfigOptionInts *physical_extruder_map = cur_preset.config.option("physical_extruder_map"); if (physical_extruder_map != nullptr) { assert(physical_extruder_map->values.size() == extruder_nums); extruder_map = physical_extruder_map->values; @@ -2065,12 +2039,11 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man // value > 1 (nil-guarded, matching the manual/ToolOrdering gates), which no shipping single-nozzle or // dual-extruder profile sets. When the machine is multi-nozzle but no option resolves (e.g. user cancelled), // abort the sync. - const ConfigOptionIntsNullable* extruder_max_nozzle_count = cur_preset.config.option( - "extruder_max_nozzle_count"); + const ConfigOptionIntsNullable *extruder_max_nozzle_count = cur_preset.config.option("extruder_max_nozzle_count"); bool support_multi_nozzle = extruder_max_nozzle_count != nullptr && std::any_of(extruder_max_nozzle_count->values.begin(), extruder_max_nozzle_count->values.end(), [](int val) { return val > 1 && val != ConfigOptionIntsNullable::nil_value(); }); - auto nozzle_option = get_nozzle_options(obj, extruder_nums, support_multi_nozzle, is_manual); + auto nozzle_option = get_nozzle_options(obj, extruder_nums, support_multi_nozzle, is_manual); if (!nozzle_option && support_multi_nozzle) return false; @@ -2078,13 +2051,12 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man nozzle_diameters.resize(extruder_nums); std::vector target_types(extruder_nums, NozzleVolumeType::nvtStandard); for (size_t index = 0; index < extruder_nums; ++index) { - int extruder_id = extruder_map[index]; - nozzle_diameters[extruder_id] = nozzle_option ? atof(nozzle_option->diameter.c_str()) : - obj->GetExtderSystem()->GetNozzleDiameter(index); - NozzleVolumeType target_type = NozzleVolumeType::nvtStandard; + int extruder_id = extruder_map[index]; + nozzle_diameters[extruder_id] = nozzle_option ? atof(nozzle_option->diameter.c_str()) : obj->GetExtderSystem()->GetNozzleDiameter(index); + NozzleVolumeType target_type = NozzleVolumeType::nvtStandard; std::optional select_type; if (nozzle_option && nozzle_option->extruder_nozzle_stats.count(index)) { - const auto& stats = nozzle_option->extruder_nozzle_stats[index]; + const auto &stats = nozzle_option->extruder_nozzle_stats[index]; if (stats.size() > 1) // The extruder holds nozzles of several flow types: select the mixed-flow mode. select_type = NozzleVolumeType::nvtHybrid; @@ -2093,8 +2065,7 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man } if (obj->is_nozzle_flow_type_supported()) { if (obj->GetExtderSystem()->GetNozzleFlowType(index) == NozzleFlowType::NONE_FLOWTYPE) { - MessageDialog dlg(this->plater, - _L("There are unset nozzle types. Please set the nozzle types of all extruders before synchronizing."), + MessageDialog dlg(this->plater, _L("There are unset nozzle types. Please set the nozzle types of all extruders before synchronizing."), _L("Sync extruder infomation"), wxICON_WARNING | wxOK); dlg.ShowModal(); continue; @@ -2122,29 +2093,23 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man auto switcher_pos = ams.second->GetSwitcherPos(); if (!switcher_pos) continue; - int switcher_id = obj->is_main_extruder_on_left() ? (1 - static_cast(switcher_pos.value())) : - static_cast(switcher_pos.value()); + int switcher_id = obj->is_main_extruder_on_left() ? (1 - static_cast(switcher_pos.value())) + : static_cast(switcher_pos.value()); if (extruder_id != switcher_id) continue; } const bool is_n3s = ams.second->GetAmsType() == DevAms::N3S; // Main (first) extruder is id 0, deputy is id 1. if (extruder_id == 0) { - if (is_n3s) - ++main_1; - else - ++main_4; + if (is_n3s) ++main_1; else ++main_4; } else if (extruder_id == 1) { - if (is_n3s) - ++deputy_1; - else - ++deputy_4; + if (is_n3s) ++deputy_1; else ++deputy_4; } } } only_external_material = !obj->GetFilaSystem()->HasAms(); - int main_index = obj->is_main_extruder_on_left() ? 0 : 1; - int deputy_index = obj->is_main_extruder_on_left() ? 1 : 0; + int main_index = obj->is_main_extruder_on_left() ? 0 : 1; + int deputy_index = obj->is_main_extruder_on_left() ? 1 : 0; if (extruder_nums > 1) { int left_index = left_extruder->combo_diameter->FindString(get_diameter_string(nozzle_diameters[0])); @@ -2169,7 +2134,7 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man } // set nozzle volume type after switching prset, so this value can override the old value stored in conf - auto printer_tab = dynamic_cast(wxGetApp().get_tab(Preset::TYPE_PRINTER)); + auto printer_tab = dynamic_cast(wxGetApp().get_tab(Preset::TYPE_PRINTER)); for (size_t idx = 0; idx < target_types.size(); ++idx) { printer_tab->set_extruder_volume_type(idx, target_types[idx]); } @@ -2184,17 +2149,17 @@ bool Sidebar::priv::sync_extruder_list(bool& only_external_material, bool is_man // Copy the live switch state into the project so slicing and the send dialog honor it. Both // resolve to false unless the switch is installed and calibrated, so nothing changes without one. - auto& project_config = wxGetApp().preset_bundle->project_config; - if (auto* dynamic_filament = project_config.opt("enable_filament_dynamic_map")) + auto &project_config = wxGetApp().preset_bundle->project_config; + if (auto *dynamic_filament = project_config.opt("enable_filament_dynamic_map")) dynamic_filament->value = is_fila_switch_ready(); - if (auto* has_switcher = project_config.opt("has_filament_switcher")) + if (auto *has_switcher = project_config.opt("has_filament_switcher")) has_switcher->value = is_fila_switch_ready(); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " finish sync_extruder_list"; return true; } -void Sidebar::priv::update_sync_status(const MachineObject* obj) +void Sidebar::priv::update_sync_status(const MachineObject *obj) { StateColor not_synced_colour(std::pair(wxColour("#009688"), StateColor::Normal)); auto clear_all_sync_status = [this]() { @@ -2208,8 +2173,8 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) single_extruder->ShowBadge(false); single_extruder->sync_ams(nullptr, {}, {}); update_extruder_separator_icon(false, false); - // btn_sync_printer->SetBorderColor(not_synced_colour); - // btn_sync_printer->SetIcon("printer_sync"); + //btn_sync_printer->SetBorderColor(not_synced_colour); + //btn_sync_printer->SetIcon("printer_sync"); m_printer_bbl_sync->SetBitmap_("printer_sync_not"); }; @@ -2228,7 +2193,7 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) fila_switch_warning_shown = false; } - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; if (!preset_bundle) { clear_all_sync_status(); return; @@ -2236,7 +2201,7 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) bool printer_synced = false; // 1. update printer status - const Preset& cur_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); + const Preset &cur_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); if (preset_bundle && preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == obj->get_show_printer_type()) { panel_printer_preset->ShowBadge(true); printer_synced = true; @@ -2252,23 +2217,25 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) struct ExtruderInfo { float diameter{0.4}; - // int nozzle_volue_type{0}; - int ams_4{0}; - int ams_1{0}; - std::vector ams_v4; - std::vector ams_v1; + //int nozzle_volue_type{0}; + int ams_4{0}; + int ams_1{0}; + std::vector ams_v4; + std::vector ams_v1; - bool operator==(const ExtruderInfo& other) const + bool operator==(const ExtruderInfo &other) const { - return abs(diameter - other.diameter) < EPSILON && /*nozzle_volue_type == other.nozzle_volue_type - &&*/ ams_4 == other.ams_4 && ams_1 == other.ams_1; + return abs(diameter - other.diameter) < EPSILON + && /*nozzle_volue_type == other.nozzle_volue_type + &&*/ ams_4 == other.ams_4 + && ams_1 == other.ams_1; } }; - auto is_same_nozzle_info = [obj](const ExtruderInfo& left, const ExtruderInfo& right) { + auto is_same_nozzle_info = [obj](const ExtruderInfo &left, const ExtruderInfo &right) { bool is_same_nozzle_type = true; if (obj->is_nozzle_flow_type_supported()) - is_same_nozzle_type = true; // left.nozzle_volue_type == right.nozzle_volue_type; // TODO: Orca hack + is_same_nozzle_type = true;//left.nozzle_volue_type == right.nozzle_volue_type; // TODO: Orca hack return abs(left.diameter - right.diameter) < EPSILON && is_same_nozzle_type; }; @@ -2293,11 +2260,10 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) } std::vector extruder_infos(extruder_nums); - std::vector nozzle_volume_types = - wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")->values; - // for (size_t i = 0; i < nozzle_volume_types.size(); ++i) { - // extruder_infos[i].nozzle_volue_type = nozzle_volume_types[i]; - // } + std::vector nozzle_volume_types = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")->values; + //for (size_t i = 0; i < nozzle_volume_types.size(); ++i) { + // extruder_infos[i].nozzle_volue_type = nozzle_volume_types[i]; + //} std::vector> extruder_ams_counts = wxGetApp().preset_bundle->extruder_ams_counts; if (extruder_ams_counts.size() >= extruder_nums) { @@ -2315,11 +2281,12 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) double value = 0.0; single_extruder->diameter.ToDouble(&value); extruder_infos[0].diameter = float(value); - } else if (extruder_nums == 2) { + } + else if(extruder_nums == 2){ double value = 0.0; left_extruder->diameter.ToDouble(&value); extruder_infos[0].diameter = float(value); - + value = 0.0; right_extruder->diameter.ToDouble(&value); extruder_infos[1].diameter = float(value); @@ -2328,11 +2295,11 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) std::vector machine_extruder_infos(obj->GetExtderSystem()->GetTotalExtderCount()); const auto& extruders = obj->GetExtderSystem()->GetExtruders(); - for (const DevExtder& extruder : extruders) { - // machine_extruder_infos[extruder.GetExtId()].nozzle_volue_type = int(extruder.GetNozzleFlowType()) - 1; - machine_extruder_infos[extruder.GetExtId()].diameter = extruder.GetNozzleDiameter(); + for (const DevExtder &extruder : extruders) { + //machine_extruder_infos[extruder.GetExtId()].nozzle_volue_type = int(extruder.GetNozzleFlowType()) - 1; + machine_extruder_infos[extruder.GetExtId()].diameter = extruder.GetNozzleDiameter(); } - for (auto& item : obj->GetFilaSystem()->GetAmsList()) { + for (auto &item : obj->GetFilaSystem()->GetAmsList()) { int extruder_id; // With the switch ready every AMS feeds both extruders, so attribute each to the extruder its // input track feeds. Without a switch the binding is a single extruder @@ -2342,10 +2309,10 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) auto switcher_pos = item.second->GetSwitcherPos(); if (!switcher_pos) continue; - extruder_id = obj->is_main_extruder_on_left() ? (1 - static_cast(switcher_pos.value())) : - static_cast(switcher_pos.value()); + extruder_id = obj->is_main_extruder_on_left() ? (1 - static_cast(switcher_pos.value())) + : static_cast(switcher_pos.value()); } else { - const auto& uniq_extruder_id = item.second->GetUniqueBindedExtruderId(); + const auto &uniq_extruder_id = item.second->GetUniqueBindedExtruderId(); if (!uniq_extruder_id) continue; extruder_id = uniq_extruder_id.value(); @@ -2354,7 +2321,8 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) if (extruder_id >= machine_extruder_infos.size()) continue; - if (item.second->GetAmsType() == DevAms::N3S) { // N3S + if (item.second->GetAmsType() == DevAms::N3S) + { // N3S machine_extruder_infos[extruder_id].ams_1++; machine_extruder_infos[extruder_id].ams_v1.push_back(item.second); } else { @@ -2372,17 +2340,20 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) panel_nozzle_dia->ShowBadge(true); // ORCA add support for nozzle sync single_extruder->sync_ams(obj, machine_extruder_infos[0].ams_v4, machine_extruder_infos[0].ams_v1); extruder_synced[0] = true; - } else { + } + else { single_extruder->ShowBadge(false); panel_nozzle_dia->ShowBadge(false); // ORCA add support for nozzle sync single_extruder->sync_ams(obj, {}, {}); } - } else if (extruder_nums == 2) { + } + else if (extruder_nums == 2) { if (extruder_infos[0] == machine_extruder_infos[0]) { left_extruder->ShowBadge(true); left_extruder->sync_ams(obj, machine_extruder_infos[0].ams_v4, machine_extruder_infos[0].ams_v1); extruder_synced[0] = true; - } else { + } + else { left_extruder->ShowBadge(false); left_extruder->sync_ams(obj, {}, {}); } @@ -2391,7 +2362,8 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) right_extruder->ShowBadge(true); right_extruder->sync_ams(obj, machine_extruder_infos[1].ams_v4, machine_extruder_infos[1].ams_v1); extruder_synced[1] = true; - } else { + } + else { right_extruder->ShowBadge(false); right_extruder->sync_ams(obj, {}, {}); } @@ -2400,12 +2372,13 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) StateColor synced_colour(std::pair(wxColour("#CECECE"), StateColor::Normal)); bool all_extruder_synced = std::all_of(extruder_synced.begin(), extruder_synced.end(), [](bool value) { return value; }); if (printer_synced && all_extruder_synced) { - // btn_sync_printer->SetBorderColor(synced_colour); - // btn_sync_printer->SetIcon("ams_nozzle_sync"); + // btn_sync_printer->SetBorderColor(synced_colour); + // btn_sync_printer->SetIcon("ams_nozzle_sync"); m_printer_bbl_sync->SetBitmap_("printer_sync_ok"); - } else { - // btn_sync_printer->SetBorderColor(not_synced_colour); - // btn_sync_printer->SetIcon("printer_sync"); + } + else { + // btn_sync_printer->SetBorderColor(not_synced_colour); + // btn_sync_printer->SetIcon("printer_sync"); m_printer_bbl_sync->SetBitmap_("printer_sync_not"); } @@ -2418,24 +2391,25 @@ void Sidebar::priv::update_sync_status(const MachineObject* obj) last_filament_ams_list = wxGetApp().preset_bundle->filament_ams_list; const auto print_tech = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology(); if (print_tech == ptFFF && !is_same_ams_list) { - for (PlaterPresetComboBox* cb : combos_filament) + for (PlaterPresetComboBox *cb : combos_filament) cb->update(); } } -} + } -void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent& e) -{ - if (m_last_slice_state != p->plater->is_background_process_slicing()) { - m_last_slice_state = p->plater->is_background_process_slicing(); - // btn_sync->Enable(!m_last_slice_state); - p->m_printer_bbl_sync->Enable(!m_last_slice_state); - ams_btn->Enable(!m_last_slice_state); - Refresh(); - } -} +void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent &e) + { + if (m_last_slice_state != p->plater->is_background_process_slicing()) { + m_last_slice_state = p->plater->is_background_process_slicing(); + //btn_sync->Enable(!m_last_slice_state); + p->m_printer_bbl_sync->Enable(!m_last_slice_state); + ams_btn->Enable(!m_last_slice_state); + Refresh(); + } + } -Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(39 * wxGetApp().em_unit(), -1)), p(new priv(parent)) +Sidebar::Sidebar(Plater *parent) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(39 * wxGetApp().em_unit(), -1)), p(new priv(parent)) { Choice::register_dynamic_list("support_filament", &dynamic_physical_filament_list); Choice::register_dynamic_list("support_interface_filament", &dynamic_physical_filament_list); @@ -2452,9 +2426,10 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // but this cause the bad layout of the sidebar, when all infoboxes appear. // As a result we can see the empty block at the bottom of the sidebar // But if we set this value to 5, layout will be better - // p->scrolled->SetScrollRate(0, 5); + //p->scrolled->SetScrollRate(0, 5); p->scrolled->SetBackgroundColour(*wxWHITE); + SetFont(wxGetApp().normal_font()); #ifndef __APPLE__ #ifdef _WIN32 @@ -2466,14 +2441,14 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, #endif int em = wxGetApp().em_unit(); - // BBS refine layout and styles - // Sizer in the scrolled area + //BBS refine layout and styles + // Sizer in the scrolled area auto* scrolled_sizer = m_scrolled_sizer = new wxBoxSizer(wxVERTICAL); p->scrolled->SetSizer(scrolled_sizer); - wxColour title_bg = wxColour(248, 248, 248); - wxColour inactive_text = wxColour(86, 86, 86); - wxColour active_text = wxColour(0, 0, 0); + wxColour title_bg = wxColour(248, 248, 248); + wxColour inactive_text = wxColour(86, 86, 86); + wxColour active_text = wxColour(0, 0, 0); wxColour static_line_col = wxColour(166, 169, 170); #ifdef __WINDOWS__ @@ -2488,7 +2463,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->m_panel_printer_title->SetBackgroundColor(title_bg); p->m_panel_printer_title->SetBackgroundColor2(0xF1F1F1); - p->m_printer_icon = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer"); + p->m_printer_icon = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer"); p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END); p->m_printer_icon->Bind(wxEVT_BUTTON, [](wxCommandEvent& e) { @@ -2499,7 +2474,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // ORCA use connect button on titlebar p->m_printer_connect = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "monitor_signal_strong"); p->m_printer_connect->SetToolTip(_L("Connection")); - p->m_printer_connect->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + p->m_printer_connect->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { PhysicalPrinterDialog dlg(this->GetParent()); dlg.ShowModal(); }); @@ -2507,7 +2482,9 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // ORCA use sync button on titlebar p->m_printer_bbl_sync = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer_sync_not"); p->m_printer_bbl_sync->SetToolTip(_L("Synchronize nozzle information and the number of AMS")); - p->m_printer_bbl_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { deal_btn_sync(); }); + p->m_printer_bbl_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { + deal_btn_sync(); + }); p->m_printer_setting = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "settings"); p->m_printer_setting->Bind(wxEVT_BUTTON, [](wxCommandEvent &e) { @@ -2515,17 +2492,15 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // wxGetApp().params_dialog()->Popup(); // wxGetApp().get_tab(Preset::TYPE_FILAMENT)->restore_last_select_item(); wxGetApp().run_wizard(ConfigWizard::RR_USER, ConfigWizard::SP_PRINTERS); - }); + }); wxBoxSizer* h_sizer_title = new wxBoxSizer(wxHORIZONTAL); h_sizer_title->Add(p->m_printer_icon, 0, wxALIGN_CENTRE | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); h_sizer_title->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); h_sizer_title->Add(p->m_text_printer_settings, 1, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); - // h_sizer_title->AddStretchSpacer(); - h_sizer_title->Add(p->m_printer_connect, 0, wxALIGN_CENTER | wxRIGHT, - FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks - h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, - FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks + //h_sizer_title->AddStretchSpacer(); + h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks + h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_setting, 0, wxALIGN_CENTER); h_sizer_title->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); h_sizer_title->SetMinSize(-1, 3 * em); @@ -2537,20 +2512,19 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // add printer title scrolled_sizer->Add(p->m_panel_printer_title, 0, wxEXPAND | wxALL, 0); - p->m_panel_printer_title->Bind(wxEVT_LEFT_UP, [this](auto& e) { + p->m_panel_printer_title->Bind(wxEVT_LEFT_UP, [this] (auto & e) { if (!p || !p->combo_printer || !p->m_text_printer_settings || !p->m_panel_printer_content || !m_scrolled_sizer) return; // ORCA Show printer name on title when its folded to inform user without expanding it again - bool isShown = p->m_panel_printer_content->IsShown(); - wxString title = _L("Printer") + wxString(!isShown ? "" : (" | " + p->combo_printer->GetValue())); + bool isShown = p->m_panel_printer_content->IsShown(); + wxString title = _L("Printer") + wxString(!isShown ? "" : (" | " + p->combo_printer->GetValue())); p->m_text_printer_settings->SetLabel(title); p->m_panel_printer_content->Show(!isShown); p->m_panel_printer_separator->Show(isShown); m_scrolled_sizer->Layout(); }); // ORCA add bottom border for seperation wile sections folded - p->m_panel_printer_separator = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, - wxSize(-1, FromDIP(2))); // ORCA staticline class not works without string + p->m_panel_printer_separator = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(2))); // ORCA staticline class not works without string p->m_panel_printer_separator->SetBackgroundColour("#FFFFFF"); scrolled_sizer->Add(p->m_panel_printer_separator, 0, wxEXPAND); @@ -2559,8 +2533,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->m_panel_printer_content = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); p->m_panel_printer_content->SetBackgroundColour(wxColour(255, 255, 255)); - struct PanelColors - { + struct PanelColors { wxColour bg_normal = "#FFFFFF"; wxColour bg_focus = "#E5F0EE"; wxColour bd_normal = "#DBDBDB"; @@ -2573,17 +2546,18 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->panel_printer_preset->SetCornerRadius(FromDIP(PRINTER_PANEL_RADIUS)); p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); p->panel_printer_preset->SetMinSize(FromDIP(PRINTER_PANEL_SIZE)); - p->panel_printer_preset->Bind(wxEVT_LEFT_DOWN, [this](auto& evt) { p->combo_printer->wxEvtHandler::ProcessEvent(evt); }); + p->panel_printer_preset->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) { + p->combo_printer->wxEvtHandler::ProcessEvent(evt); + }); // ORCA Hide Cover automatically if there is not enough space - p->panel_printer_preset->Bind(wxEVT_SIZE, [this](auto& e) { + p->panel_printer_preset->Bind(wxEVT_SIZE, [this](auto & e) { auto current_width = e.GetSize().GetWidth(); auto narrow_width = FromDIP(235); - auto label_width = p->combo_printer->GetTextExtent(p->combo_printer->GetStringSelection()).GetWidth(); - auto min_width = label_width + FromDIP(25 + PRINTER_PANEL_SIZE.GetWidth()); - if (((min_width < narrow_width && min_width > current_width) || (current_width < narrow_width && min_width > narrow_width)) && - p->image_printer->IsShown()) + auto label_width = p->combo_printer->GetTextExtent(p->combo_printer->GetStringSelection()).GetWidth(); + auto min_width = label_width + FromDIP(25 + PRINTER_PANEL_SIZE.GetWidth()); + if(((min_width < narrow_width && min_width > current_width) || (current_width < narrow_width && min_width > narrow_width)) && p->image_printer->IsShown()) p->image_printer->Hide(); - else if ((current_width > min_width || !(current_width < narrow_width)) && !p->image_printer->IsShown()) + else if((current_width > min_width || !(current_width < narrow_width)) && !p->image_printer->IsShown()) p->image_printer->Show(); e.Skip(); }); @@ -2594,18 +2568,16 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->btn_edit_printer = new ScalableButton(p->panel_printer_preset, wxID_ANY, "edit"); p->btn_edit_printer->SetToolTip(_L("Click to edit preset")); p->btn_edit_printer->Hide(); // hide for first launch - p->btn_edit_printer->Bind(wxEVT_BUTTON, [this, panel_color, printer_preset_hovered](wxCommandEvent) { + p->btn_edit_printer->Bind(wxEVT_BUTTON, [this, panel_color, printer_preset_hovered](wxCommandEvent){ p->editing_filament = -1; if (p->combo_printer->switch_to_tab()) p->editing_filament = 0; - // ORCA: FIX crash on wxGTK, directly modifying UI (self->Hide() / parent->Layout()) inside a button event can crash because - // callbacks are not re-entrant, leaving widgets in an inconsistent state + // ORCA: FIX crash on wxGTK, directly modifying UI (self->Hide() / parent->Layout()) inside a button event can crash because callbacks are not re-entrant, leaving widgets in an inconsistent state wxGetApp().CallAfter([this, panel_color, printer_preset_hovered]() { - // ORCA clicking edit button not triggers wxEVT_KILL_FOCUS wxEVT_LEAVE_WINDOW make changes manually to prevent stucked - // colors when opening printer settings + // ORCA clicking edit button not triggers wxEVT_KILL_FOCUS wxEVT_LEAVE_WINDOW make changes manually to prevent stucked colors when opening printer settings if (!p || !p->panel_printer_preset || !p->btn_edit_printer) return; - p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); + p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); printer_preset_hovered->clear(); p->btn_edit_printer->Hide(); p->panel_printer_preset->Layout(); @@ -2613,15 +2585,16 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, }); ScalableBitmap bitmap_printer(p->panel_printer_preset, "printer_placeholder", PRINTER_THUMBNAIL_SIZE.GetHeight()); - p->image_printer = new wxStaticBitmap(p->panel_printer_preset, wxID_ANY, bitmap_printer.bmp(), wxDefaultPosition, - FromDIP(PRINTER_THUMBNAIL_SIZE), 0); - p->image_printer->Bind(wxEVT_LEFT_DOWN, [this](auto& evt) { p->combo_printer->wxEvtHandler::ProcessEvent(evt); }); + p->image_printer = new wxStaticBitmap(p->panel_printer_preset, wxID_ANY, bitmap_printer.bmp(), wxDefaultPosition, FromDIP(PRINTER_THUMBNAIL_SIZE), 0); + p->image_printer->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) { + p->combo_printer->wxEvtHandler::ProcessEvent(evt); + }); p->combo_printer = new PlaterPresetComboBox(p->panel_printer_preset, Preset::TYPE_PRINTER); p->combo_printer->SetBorderWidth(0); p->combo_printer->SetMaxSize(wxSize(-1, FromDIP(30))); // limiting height makes badge visible // ORCA paint whole combobox on focus - auto printer_focus_bg = [this, panel_color](bool focused) { + auto printer_focus_bg = [this, panel_color](bool focused){ auto bg_color = StateColor::darkModeColorFor(focused ? panel_color.bg_focus : panel_color.bg_normal); p->panel_printer_preset->SetBackgroundColor(bg_color); p->panel_printer_preset->SetBorderColor(focused ? panel_color.bd_focus : panel_color.bd_normal); @@ -2643,15 +2616,14 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, }); */ // ORCA use Show/Hide to gain text area instead using blank icon. also manages hover effect for border - for (wxWindow* w : - std::initializer_list{p->panel_printer_preset, p->btn_edit_printer, p->image_printer, p->combo_printer}) { - w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, printer_preset_hovered](wxMouseEvent& e) { + for (wxWindow *w : std::initializer_list{p->panel_printer_preset, p->btn_edit_printer, p->image_printer, p->combo_printer}) { + w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, printer_preset_hovered](wxMouseEvent &e) { printer_preset_hovered->insert(w); - if (!p->combo_printer->HasFocus()) + if(!p->combo_printer->HasFocus()) p->panel_printer_preset->SetBorderColor(panel_color.bd_hover); e.Skip(); }); - w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, printer_preset_hovered](wxMouseEvent& e) { + w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, printer_preset_hovered](wxMouseEvent &e) { printer_preset_hovered->erase(w); if (printer_preset_hovered->empty() && !p->combo_printer->HasFocus()) p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); @@ -2661,7 +2633,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // Perform show/hide in wxEVT_IDLE after enter/leave events have settled. // This prevents the extraneous enter/leave events generated by the // layout change itself from causing a feedback loop. - Bind(wxEVT_IDLE, [this, printer_preset_hovered](wxIdleEvent& e) { + Bind(wxEVT_IDLE, [this, printer_preset_hovered](wxIdleEvent &e) { auto hovered = !printer_preset_hovered->empty(); if (p->btn_edit_printer->IsShown() != hovered) { if (hovered) { @@ -2678,18 +2650,19 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->panel_nozzle_dia->SetCornerRadius(FromDIP(PRINTER_PANEL_RADIUS)); p->panel_nozzle_dia->SetBorderColor(panel_color.bd_normal); p->panel_nozzle_dia->SetMinSize(FromDIP(PRINTER_PANEL_SIZE)); - p->panel_nozzle_dia->Bind(wxEVT_LEFT_DOWN, [this](auto& evt) { p->combo_nozzle_dia->wxEvtHandler::ProcessEvent(evt); }); + p->panel_nozzle_dia->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) { + p->combo_nozzle_dia->wxEvtHandler::ProcessEvent(evt); + }); p->label_nozzle_title = new Label(p->panel_nozzle_dia, _L("Nozzle"), LB_PROPAGATE_MOUSE_EVENT); p->label_nozzle_title->SetFont(Label::Body_10); - p->combo_nozzle_dia = new ComboBox(p->panel_nozzle_dia, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, - wxCB_READONLY); + p->combo_nozzle_dia = new ComboBox(p->panel_nozzle_dia, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); p->combo_nozzle_dia->SetBorderWidth(0); p->combo_nozzle_dia->GetDropDown().SetUseContentWidth(true); p->combo_nozzle_dia->SetMinSize(FromDIP(wxSize(PRINTER_PANEL_SIZE.GetWidth() - 4, 26))); // requires a static value in here p->combo_nozzle_dia->SetMaxSize(FromDIP(wxSize(PRINTER_PANEL_SIZE.GetWidth() - 4, 26))); // using -1 with wxEXPAND has issues - p->combo_nozzle_dia->Bind(wxEVT_COMBOBOX, [this](auto& e) { + p->combo_nozzle_dia->Bind(wxEVT_COMBOBOX, [this](auto &e) { auto evt_combo = (*p->single_extruder).combo_diameter; evt_combo->SetSelection(e.GetSelection()); wxCommandEvent evt(wxEVT_COMBOBOX, evt_combo->GetId()); @@ -2699,7 +2672,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, e.Skip(); }); // ORCA paint whole combobox on focus - auto nozzle_focus_bg = [this, panel_color](bool focused) { + auto nozzle_focus_bg = [this, panel_color](bool focused){ auto bg_color = StateColor::darkModeColorFor(focused ? panel_color.bg_focus : panel_color.bg_normal); p->panel_nozzle_dia->SetBackgroundColor(bg_color); p->panel_nozzle_dia->SetBorderColor(focused ? panel_color.bd_focus : panel_color.bd_normal); @@ -2710,23 +2683,21 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->combo_nozzle_dia->Bind(wxEVT_SET_FOCUS, [nozzle_focus_bg](auto& e) {nozzle_focus_bg(true ); e.Skip();}); p->combo_nozzle_dia->Bind(wxEVT_KILL_FOCUS, [nozzle_focus_bg](auto& e) {nozzle_focus_bg(false); e.Skip();}); - p->label_nozzle_type = new Label(p->panel_nozzle_dia, "Brass", - LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END | wxALIGN_CENTRE_HORIZONTAL); + p->label_nozzle_type = new Label(p->panel_nozzle_dia, "Brass", LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END | wxALIGN_CENTRE_HORIZONTAL); p->label_nozzle_type->SetFont(Label::Body_10); p->label_nozzle_type->SetMinSize(FromDIP(wxSize(56, -1))); p->label_nozzle_type->SetMaxSize(FromDIP(wxSize(56, -1))); // highlight border on hover auto nozzle_dia_hovered = std::make_shared>(); - for (wxWindow* w : - std::initializer_list{p->panel_nozzle_dia, p->label_nozzle_title, p->label_nozzle_type, p->combo_nozzle_dia}) { - w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, nozzle_dia_hovered](wxMouseEvent& e) { + for (wxWindow *w : std::initializer_list{p->panel_nozzle_dia, p->label_nozzle_title, p->label_nozzle_type, p->combo_nozzle_dia}) { + w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, nozzle_dia_hovered](wxMouseEvent &e) { nozzle_dia_hovered->insert(w); - if (!p->combo_nozzle_dia->HasFocus()) + if(!p->combo_nozzle_dia->HasFocus()) p->panel_nozzle_dia->SetBorderColor(panel_color.bd_hover); e.Skip(); }); - w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, nozzle_dia_hovered](wxMouseEvent& e) { + w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, nozzle_dia_hovered](wxMouseEvent &e) { nozzle_dia_hovered->erase(w); if (nozzle_dia_hovered->empty() && !p->combo_nozzle_dia->HasFocus()) p->panel_nozzle_dia->SetBorderColor(panel_color.bd_normal); @@ -2734,10 +2705,10 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, }); } - wxGridSizer* nozzle_dia_sizer = new wxGridSizer(3, 1, FromDIP(2), 0); - nozzle_dia_sizer->Add(p->label_nozzle_title, 1, wxALIGN_CENTER | wxTOP, FromDIP(2)); - nozzle_dia_sizer->Add(p->combo_nozzle_dia, 0, wxALIGN_CENTER); - nozzle_dia_sizer->Add(p->label_nozzle_type, 1, wxALIGN_CENTER | wxBOTTOM, FromDIP(1)); + wxGridSizer *nozzle_dia_sizer = new wxGridSizer(3, 1, FromDIP(2), 0); + nozzle_dia_sizer->Add(p->label_nozzle_title, 1, wxALIGN_CENTER | wxTOP , FromDIP(2)); + nozzle_dia_sizer->Add(p->combo_nozzle_dia , 0, wxALIGN_CENTER); + nozzle_dia_sizer->Add(p->label_nozzle_type , 1, wxALIGN_CENTER | wxBOTTOM, FromDIP(1)); p->panel_nozzle_dia->SetSizer(nozzle_dia_sizer); @@ -2746,39 +2717,38 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->panel_printer_bed->SetCornerRadius(FromDIP(PRINTER_PANEL_RADIUS)); p->panel_printer_bed->SetBorderColor(panel_color.bd_normal); p->panel_printer_bed->SetMinSize(FromDIP(PRINTER_PANEL_SIZE)); - p->panel_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto& evt) { + p->panel_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) { on_leave_image_printer_bed(evt); p->combo_printer_bed->wxEvtHandler::ProcessEvent(evt); }); - // ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "help"); - // wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) { - // wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/x1/manual/compatibility-and-parameter-settings-of-filaments"); - // }); + //ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "help"); + //wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) { + // wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/x1/manual/compatibility-and-parameter-settings-of-filaments"); + //}); ScalableBitmap bitmap_bed(p->panel_printer_bed, "printer_placeholder", PRINTER_THUMBNAIL_SIZE.GetHeight()); p->image_printer_bed = new wxStaticBitmap(p->panel_printer_bed, wxID_ANY, bitmap_bed.bmp(), wxDefaultPosition, wxDefaultSize, 0); - p->image_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto& evt) { + p->image_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) { on_leave_image_printer_bed(evt); p->combo_printer_bed->wxEvtHandler::ProcessEvent(evt); }); - p->combo_printer_bed = new ComboBox(p->panel_printer_bed, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, - wxCB_READONLY); + p->combo_printer_bed = new ComboBox(p->panel_printer_bed, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); p->combo_printer_bed->SetBorderWidth(0); p->combo_printer_bed->GetDropDown().SetUseContentWidth(true); - p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18, -1))); // ORCA show only arrow - p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18, -1))); // ORCA show only arrow + p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow + p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow reset_bed_type_combox_choices(true); - p->combo_printer_bed->Bind(wxEVT_COMBOBOX, [this](auto& e) { - auto image_path = get_cur_select_bed_image(); + p->combo_printer_bed->Bind(wxEVT_COMBOBOX, [this](auto &e) { + auto image_path = get_cur_select_bed_image(); p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight())); e.Skip(); }); // ORCA paint whole combobox on focus - auto bed_focus_bg = [this, panel_color](bool focused) { + auto bed_focus_bg = [this, panel_color](bool focused){ auto bg_color = StateColor::darkModeColorFor(focused ? panel_color.bg_focus : panel_color.bg_normal); p->panel_printer_bed->SetBackgroundColor(bg_color); p->panel_printer_bed->SetBorderColor(focused ? panel_color.bd_focus : panel_color.bd_normal); @@ -2790,34 +2760,34 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, // highlight border on hover auto printer_bed_hovered = std::make_shared>(); - for (wxWindow* w : std::initializer_list{p->panel_printer_bed, p->image_printer_bed, p->combo_printer_bed}) { - w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, printer_bed_hovered](wxMouseEvent& e) { + for (wxWindow *w : std::initializer_list{p->panel_printer_bed, p->image_printer_bed, p->combo_printer_bed}) { + w->Bind(wxEVT_ENTER_WINDOW, [this, w, panel_color, printer_bed_hovered](wxMouseEvent &e) { printer_bed_hovered->insert(w); - if (!p->combo_printer_bed->HasFocus()) + if(!p->combo_printer_bed->HasFocus()) p->panel_printer_bed->SetBorderColor(panel_color.bd_hover); - if (w == p->image_printer_bed && !p->combo_printer_bed->is_drop_down()) // dont trigger while combo open + if(w == p->image_printer_bed && !p->combo_printer_bed->is_drop_down()) // dont trigger while combo open on_enter_image_printer_bed(e); e.Skip(); }); - w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, printer_bed_hovered](wxMouseEvent& e) { + w->Bind(wxEVT_LEAVE_WINDOW, [this, w, panel_color, printer_bed_hovered](wxMouseEvent &e) { printer_bed_hovered->erase(w); if (printer_bed_hovered->empty() && !p->combo_printer_bed->HasFocus()) p->panel_printer_bed->SetBorderColor(panel_color.bd_normal); - if (w == p->image_printer_bed) + if(w == p->image_printer_bed) on_leave_image_printer_bed(e); e.Skip(); }); } - wxBoxSizer* bed_type_sizer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *bed_type_sizer = new wxBoxSizer(wxHORIZONTAL); bed_type_sizer->Add(p->combo_printer_bed, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); bed_type_sizer->Add(p->image_printer_bed, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); p->panel_printer_bed->SetSizer(bed_type_sizer); - AppConfig* app_config = wxGetApp().app_config; + AppConfig *app_config = wxGetApp().app_config; std::string str_bed_type = app_config->get("curr_bed_type"); - int bed_type_value = atoi(str_bed_type.c_str()); + int bed_type_value = atoi(str_bed_type.c_str()); // hotfix: btDefault is added as the first one in BedType, and app_config should not be btDefault if (bed_type_value == 0) { app_config->set("curr_bed_type", "1"); @@ -2834,7 +2804,7 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, if (item.first == str_bed_type) bed_type = (BedType)item.second; }*/ - BedType bed_type = (BedType) bed_type_value; + BedType bed_type = (BedType)bed_type_value; project_config.set_key_value("curr_bed_type", new ConfigOptionEnum(bed_type)); /* ORCA THIS PART MOVED TO TITLEBAR @@ -2864,10 +2834,13 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, }); p->btn_sync_printer = btn_sync; */ - p->timer_sync_printer->Bind(wxEVT_TIMER, [this](wxTimerEvent& e) { p->flush_printer_sync(); }); + p->timer_sync_printer->Bind(wxEVT_TIMER, [this] (wxTimerEvent & e) { + p->flush_printer_sync(); + }); + - p->left_extruder = new ExtruderGroup(p->m_panel_printer_content, 0, _L("Left Nozzle")); - p->right_extruder = new ExtruderGroup(p->m_panel_printer_content, 1, _L("Right Nozzle")); + p->left_extruder = new ExtruderGroup(p->m_panel_printer_content, 0, _L("Left Nozzle")); + p->right_extruder = new ExtruderGroup(p->m_panel_printer_content, 1, _L("Right Nozzle")); p->single_extruder = new ExtruderGroup(p->m_panel_printer_content, -1, _L("Nozzle")); // manuallySetNozzleCount refreshes the badge and the plater itself; it is a no-op unless the // printer has a multi-nozzle extruder (and the edit button is only enabled then, see @@ -2877,24 +2850,24 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->single_extruder->SetEditEnabled(false); // Orca: keep the floating switcher icon aligned with the left extruder's AMS row when the // extruder card is resized (the overlay is absolutely positioned, not managed by a sizer). - p->left_extruder->Bind(wxEVT_SIZE, [this](wxSizeEvent& evt) { + p->left_extruder->Bind(wxEVT_SIZE, [this](wxSizeEvent &evt) { if (p->extruder_separator_icon && p->extruder_separator_icon->IsShown()) { wxPoint left_box_pos = p->left_extruder->GetPosition(); wxPoint ams_local_pos = p->left_extruder->hsizer_ams->GetPosition(); - wxSize left_size = p->left_extruder->sizer->GetSize(); - wxSize ams_size = p->left_extruder->hsizer_ams->GetSize(); - wxSize icon_size = p->extruder_separator_icon->GetSize(); - int ams_abs_y = left_box_pos.y + ams_local_pos.y + FromDIP(4); - int center_x = left_size.GetWidth() + FromDIP(6) - icon_size.GetWidth() / 2; - int center_y = ams_abs_y + (ams_size.GetHeight() - icon_size.GetHeight()) / 2 - icon_size.GetHeight() / 2; + wxSize left_size = p->left_extruder->sizer->GetSize(); + wxSize ams_size = p->left_extruder->hsizer_ams->GetSize(); + wxSize icon_size = p->extruder_separator_icon->GetSize(); + int ams_abs_y = left_box_pos.y + ams_local_pos.y + FromDIP(4); + int center_x = left_size.GetWidth() + FromDIP(6) - icon_size.GetWidth() / 2; + int center_y = ams_abs_y + (ams_size.GetHeight() - icon_size.GetHeight()) / 2 - icon_size.GetHeight() / 2; p->extruder_separator_icon->SetPosition(wxPoint(center_x, center_y)); if (p->m_panel_printer_content) p->m_panel_printer_content->Refresh(); } evt.Skip(); }); - auto switch_diameter = [this](wxCommandEvent& evt) { - auto extruder = dynamic_cast(dynamic_cast(evt.GetEventObject())->GetParent()); + auto switch_diameter = [this](wxCommandEvent & evt) { + auto extruder = dynamic_cast(dynamic_cast(evt.GetEventObject())->GetParent()); p->is_switching_diameter = true; p->switch_diameter(extruder == p->single_extruder); p->is_switching_diameter = false; @@ -2911,394 +2884,379 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, } { - // Orca: Sidebar - Filament titlebar UI - // add filament title - p->m_panel_filament_title = new StaticBox(p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_NONE); - p->m_panel_filament_title->SetBackgroundColor(title_bg); - p->m_panel_filament_title->SetBackgroundColor2(0xF1F1F1); - p->m_panel_filament_title->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) { - if (!p || !p->m_filament_area_wrapper || !m_scrolled_sizer || !p->m_bpButton_set_filament || !p->m_purge_mode_btn || - !p->m_flushing_volume_btn || !p->m_bpButton_add_filament || !ams_btn) - return; - // ORCA exclude area of del button from titlebar collapse/expand feature to fix undesired collapse when user spams del filament - // button also block fold/unfold feature when user clicks to spacing between icons - int exclude_pt = p->m_bpButton_set_filament->GetPosition().x; // maximum fixed item - if (p->m_purge_mode_btn->IsShown()) - exclude_pt = p->m_purge_mode_btn->GetPosition().x; - else if (p->m_flushing_volume_btn->IsShown()) - exclude_pt = p->m_flushing_volume_btn->GetPosition().x; - else if (p->m_bpButton_add_filament->IsShown()) - exclude_pt = p->m_bpButton_add_filament->GetPosition().x - FromDIP(30); // reserve spacing for delete button - else if (ams_btn->IsShown()) - exclude_pt = ams_btn->GetPosition().x; - if (e.GetPosition().x > exclude_pt) - return; - bool isShown = p->m_filament_area_wrapper->IsShown(); - p->m_filament_area_wrapper->Show(!isShown); - p->m_panel_filament_separator->Show(isShown); - m_scrolled_sizer->Layout(); - CallAfter([this] { update_filaments_counter(true); }); // call after all UI processing done - }); + // Orca: Sidebar - Filament titlebar UI + // add filament title + p->m_panel_filament_title = new StaticBox(p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_NONE); + p->m_panel_filament_title->SetBackgroundColor(title_bg); + p->m_panel_filament_title->SetBackgroundColor2(0xF1F1F1); + p->m_panel_filament_title->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent &e) { + if (!p || !p->m_filament_area_wrapper || !m_scrolled_sizer || !p->m_bpButton_set_filament || !p->m_purge_mode_btn || !p->m_flushing_volume_btn || !p->m_bpButton_add_filament || !ams_btn) + return; + // ORCA exclude area of del button from titlebar collapse/expand feature to fix undesired collapse when user spams del filament button + // also block fold/unfold feature when user clicks to spacing between icons + int exclude_pt = p->m_bpButton_set_filament->GetPosition().x; // maximum fixed item + if (p->m_purge_mode_btn->IsShown()) exclude_pt = p->m_purge_mode_btn->GetPosition().x; + else if (p->m_flushing_volume_btn->IsShown()) exclude_pt = p->m_flushing_volume_btn->GetPosition().x; + else if (p->m_bpButton_add_filament->IsShown()) exclude_pt = p->m_bpButton_add_filament->GetPosition().x - FromDIP(30); // reserve spacing for delete button + else if (ams_btn->IsShown()) exclude_pt = ams_btn->GetPosition().x; + if (e.GetPosition().x > exclude_pt) + return; + bool isShown = p->m_filament_area_wrapper->IsShown(); + p->m_filament_area_wrapper->Show(!isShown); + p->m_panel_filament_separator->Show(isShown); + m_scrolled_sizer->Layout(); - wxBoxSizer* bSizer39; - bSizer39 = new wxBoxSizer(wxHORIZONTAL); - p->m_filament_icon = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "filament"); - p->m_staticText_filament_settings = new Label(p->m_panel_filament_title, _L("Project Filaments"), LB_PROPAGATE_MOUSE_EVENT); - bSizer39->Add(p->m_filament_icon, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); - bSizer39->Add(p->m_staticText_filament_settings, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ElementSpacing())); - bSizer39->SetMinSize(-1, FromDIP(30)); + CallAfter([this]{update_filaments_counter(true);}); // call after all UI processing done + }); - p->m_staticText_filament_count = new Label(p->m_panel_filament_title, "(0)", LB_PROPAGATE_MOUSE_EVENT); - bSizer39->Add(p->m_staticText_filament_count, 0, wxALIGN_CENTER); - bSizer39->Add(FromDIP(10), 0, 0, 0, 0); + wxBoxSizer* bSizer39; + bSizer39 = new wxBoxSizer( wxHORIZONTAL ); + p->m_filament_icon = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "filament"); + p->m_staticText_filament_settings = new Label(p->m_panel_filament_title, _L("Project Filaments"), LB_PROPAGATE_MOUSE_EVENT); + bSizer39->Add(p->m_filament_icon, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); + bSizer39->Add(p->m_staticText_filament_settings, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ElementSpacing())); + bSizer39->SetMinSize(-1, FromDIP(30)); - p->m_panel_filament_title->SetSizer(bSizer39); - p->m_panel_filament_title->Layout(); - scrolled_sizer->Add(p->m_panel_filament_title, 0, wxEXPAND | wxALL, 0); - // ORCA add bottom border for seperation wile sections folded - p->m_panel_filament_separator = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, - wxSize(-1, FromDIP(2))); // ORCA staticline class not works without string - p->m_panel_filament_separator->SetBackgroundColour("#FFFFFF"); - scrolled_sizer->Add(p->m_panel_filament_separator, 0, wxEXPAND); + p->m_staticText_filament_count = new Label(p->m_panel_filament_title, "(0)", LB_PROPAGATE_MOUSE_EVENT); + bSizer39->Add(p->m_staticText_filament_count, 0, wxALIGN_CENTER ); + bSizer39->Add(FromDIP(10), 0, 0, 0, 0); - bSizer39->AddStretchSpacer(1); + p->m_panel_filament_title->SetSizer( bSizer39 ); + p->m_panel_filament_title->Layout(); + scrolled_sizer->Add(p->m_panel_filament_title, 0, wxEXPAND | wxALL, 0); + // ORCA add bottom border for seperation wile sections folded + p->m_panel_filament_separator = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(2))); // ORCA staticline class not works without string + p->m_panel_filament_separator->SetBackgroundColour("#FFFFFF"); + scrolled_sizer->Add(p->m_panel_filament_separator, 0, wxEXPAND); - p->m_purge_mode_btn = new Button(p->m_panel_filament_title, _L("Purge mode")); - p->m_purge_mode_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Compact); + bSizer39->AddStretchSpacer(1); - p->m_purge_mode_btn->Bind(wxEVT_BUTTON, [](wxCommandEvent& e) { - auto& preset_bundle = *wxGetApp().preset_bundle; - auto support_fast_purge_opt = preset_bundle.printers.get_edited_preset().config.option( - "support_fast_purge_mode"); - bool support_fast_purge = support_fast_purge_opt ? support_fast_purge_opt->value : false; - auto dlg_type = support_fast_purge ? PurgeModeDialogType::FastMode : PurgeModeDialogType::MultiNozzle; - PurgeModeDialog dlg(static_cast(wxGetApp().mainframe), dlg_type); - if (dlg.ShowModal() == wxID_OK) { - preset_bundle.project_config.set_key_value("prime_volume_mode", - new ConfigOptionEnum(dlg.get_selected_mode())); - wxGetApp().plater()->update(); - } - }); + p->m_purge_mode_btn = new Button(p->m_panel_filament_title, _L("Purge mode")); + p->m_purge_mode_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Compact); - bSizer39->Add(p->m_purge_mode_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - bSizer39->Hide(p->m_purge_mode_btn); // hidden on launch; shown only for printers that support purge mode selection - - // BBS - // add wiping dialog - // wiping_dialog_button->SetFont(wxGetApp().normal_font()); - p->m_flushing_volume_btn = new Button(p->m_panel_filament_title, _L("Flushing volumes")); - p->m_flushing_volume_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Compact); - p->m_flushing_volume_btn->SetId(wxID_RESET); - auto has_modify = is_flush_config_modified(); - set_flushing_volume_warning(has_modify); - - p->m_flushing_volume_btn->Bind(wxEVT_BUTTON, ([parent, this](wxCommandEvent& e) { - open_flushing_dialog(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent)); - p->plater->get_view3D_canvas3D()->reload_scene(true); - p->plater->update(); - })); - - bSizer39->Add(p->m_flushing_volume_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); - bSizer39->Hide(p->m_flushing_volume_btn); // ORCA Ensure button is hidden on launch while 1 filament exist - - ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); - add_btn->SetToolTip(_L("Add one filament")); - add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e) { - add_filament(); - update_filaments_counter(); - }); - p->m_bpButton_add_filament = add_btn; - - // ORCA Moved add button after delete button to prevent add button position change when remove icon automatically hidden - - ScalableButton* del_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "delete_filament"); - del_btn->SetToolTip(_L("Remove last filament")); - del_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e) { - delete_filament(); - update_filaments_counter(); - }); - p->m_bpButton_del_filament = del_btn; - - bSizer39->Add(del_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); - bSizer39->Add(add_btn, 0, wxALIGN_CENTER | wxLEFT, - FromDIP(SidebarProps::IconSpacing())); // ORCA Moved add button after delete button to prevent add button position - // change when remove icon automatically hidden - - bSizer39->Hide(p->m_bpButton_del_filament); // ORCA Ensure button is hidden on launch while 1 filament exist - - ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, - wxBU_EXACTFIT | wxNO_BORDER, false, 16); // ORCA match icon size with other icons as 16x16 - ams_btn->SetToolTip(_L("Synchronize filament list from AMS")); - ams_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e) { sync_ams_list(); }); - - ams_btn->Bind(wxEVT_UPDATE_UI, &Sidebar::update_sync_ams_btn_enable, this); - p->m_bpButton_ams_filament = ams_btn; - - bSizer39->Add(ams_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); - // bSizer39->Add(FromDIP(10), 0, 0, 0, 0 ); - - ScalableButton* set_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "settings"); - set_btn->SetToolTip(_L("Set filaments to use")); - set_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { - p->editing_filament = -1; - // wxGetApp().params_dialog()->Popup(); - // wxGetApp().get_tab(Preset::TYPE_FILAMENT)->restore_last_select_item(); - wxGetApp().run_wizard(ConfigWizard::RR_USER, ConfigWizard::SP_FILAMENTS); - }); - p->m_bpButton_set_filament = set_btn; - - bSizer39->Add(set_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); - bSizer39->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); - - // ---- Wrapper panel for collapse/expand of all filament content ---- - p->m_filament_area_wrapper = new wxPanel(p->scrolled, wxID_ANY); - p->m_filament_area_wrapper->SetBackgroundColour(*wxWHITE); - auto* wrapper_sizer = new wxBoxSizer(wxVERTICAL); - - // add filament content - p->m_panel_filament_content = new wxScrolledWindow(p->m_filament_area_wrapper, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTAB_TRAVERSAL); - p->m_panel_filament_content->SetScrollbars(0, 100, 1, 2); - p->m_panel_filament_content->SetScrollRate(0, 5); - // p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(174)}); - p->m_panel_filament_content->SetBackgroundColour(wxColour(255, 255, 255)); - - // wxBoxSizer* bSizer_filament_content; - // bSizer_filament_content = new wxBoxSizer( wxHORIZONTAL ); - - // Orca: Sidebar - Filament content UI: setup filament selection combos panel layout - // Creates a two-column grid layout for filament selection dropdowns within the scrollable panel - p->sizer_filaments = new wxBoxSizer(wxHORIZONTAL); - p->sizer_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); - p->sizer_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); - - p->combos_filament.push_back(nullptr); - - /* first filament item */ - init_filament_combo(&p->combos_filament[0], 0); - - // bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); - wxSizer* sizer_filaments2 = new wxBoxSizer(wxVERTICAL); - sizer_filaments2->Add(p->sizer_filaments, 0, wxEXPAND, 0); - p->m_panel_filament_content->SetSizer(sizer_filaments2); - p->m_panel_filament_content->Layout(); - - update_filaments_area_height(); // ORCA - - wrapper_sizer->Add(p->m_panel_filament_content, 0, wxEXPAND); - - // ---- Mixed-color filament section ---- - // A mixed filament is a virtual slot realized from 2-3 physical filaments at slicing time. - // Everything here stays hidden until at least two physical filaments exist, so a single - // filament setup looks exactly as before. - { - // 1) "+ Add Mixed Filament" button, shown only while no mixed filament exists yet. - p->m_btn_add_mixed_filament = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); - p->m_btn_add_mixed_filament->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F8F8F8"))); - p->m_btn_add_mixed_filament->SetMinSize(wxSize(-1, FromDIP(23))); - { - auto* btn_sizer = new wxBoxSizer(wxHORIZONTAL); - auto* icon_add = new ScalableButton(p->m_btn_add_mixed_filament, wxID_ANY, "add_filament", wxEmptyString, wxDefaultSize, - wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 16); - auto* add_label = new wxStaticText(p->m_btn_add_mixed_filament, wxID_ANY, _L("Add Mixed Filament"), wxDefaultPosition, - wxDefaultSize, 0); - add_label->SetFont(::Label::Body_13); - btn_sizer->AddStretchSpacer(); - btn_sizer->Add(icon_add, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); - btn_sizer->Add(add_label, 0, wxALIGN_CENTER_VERTICAL); - btn_sizer->AddStretchSpacer(); - p->m_btn_add_mixed_filament->SetSizer(btn_sizer); - p->m_btn_add_mixed_filament->SetCursor(wxCursor(wxCURSOR_HAND)); - // Whole panel is the hit target, so forward clicks from the children too. - auto on_click = [this](wxMouseEvent&) { add_mixed_filament(); }; - p->m_btn_add_mixed_filament->Bind(wxEVT_LEFT_UP, on_click); - add_label->Bind(wxEVT_LEFT_UP, on_click); - icon_add->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { add_mixed_filament(); }); - } - wrapper_sizer->Add(p->m_btn_add_mixed_filament, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM, FromDIP(8)); - - // 2) Title row with add / remove buttons, shown once a mixed filament exists. - p->m_panel_mixed_title = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); - p->m_panel_mixed_title->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); - { - auto* title_sizer = new wxBoxSizer(wxHORIZONTAL); - p->m_text_mixed_title = new wxStaticText(p->m_panel_mixed_title, wxID_ANY, _L("Mixed Filament")); - p->m_text_mixed_title->SetFont(::Label::Head_14); - title_sizer->Add(p->m_text_mixed_title, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); - title_sizer->AddStretchSpacer(); - - p->m_btn_mixed_del = new ScalableButton(p->m_panel_mixed_title, wxID_ANY, "delete_filament"); - p->m_btn_mixed_del->SetToolTip(_L("Remove last mixed filament")); - p->m_btn_mixed_del->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { - auto* plater_ptr = dynamic_cast(GetParent()); - if (!plater_ptr) - return; - auto mixed_indices = plater_ptr->mixed_filament_config_indices(); - if (!mixed_indices.empty()) - delete_mixed_filament_at(mixed_indices.size() - 1); - }); - title_sizer->Add(p->m_btn_mixed_del, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); - - p->m_btn_mixed_add = new ScalableButton(p->m_panel_mixed_title, wxID_ANY, "add_filament"); - p->m_btn_mixed_add->SetToolTip(_L("Add mixed filament")); - p->m_btn_mixed_add->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { add_mixed_filament(); }); - title_sizer->Add(p->m_btn_mixed_add, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); - title_sizer->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); - - p->m_panel_mixed_title->SetSizer(title_sizer); - } - wrapper_sizer->Add(p->m_panel_mixed_title, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(8)); - - // 3) Mixed filament rows, in their own scroll area so a long mixed list does not - // push the physical filament list off screen. - p->m_mixed_scroll_area = new wxScrolledWindow(p->m_filament_area_wrapper, wxID_ANY, wxDefaultPosition, wxDefaultSize, - wxTAB_TRAVERSAL); - p->m_mixed_scroll_area->SetScrollbars(0, 100, 1, 2); - p->m_mixed_scroll_area->SetScrollRate(0, 5); - p->m_mixed_scroll_area->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); - { - auto* mix_scroll_sizer = new wxBoxSizer(wxVERTICAL); - p->m_panel_mixed_content = new wxPanel(p->m_mixed_scroll_area, wxID_ANY); - p->m_panel_mixed_content->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); - - // Two columns, same idiom as sizer_filaments. - p->m_sizer_mixed_filaments = new wxBoxSizer(wxHORIZONTAL); - p->m_sizer_mixed_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); - p->m_sizer_mixed_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); - - auto* sizer_mixed2 = new wxBoxSizer(wxVERTICAL); - sizer_mixed2->Add(p->m_sizer_mixed_filaments, 0, wxEXPAND, 0); - p->m_panel_mixed_content->SetSizer(sizer_mixed2); - mix_scroll_sizer->Add(p->m_panel_mixed_content, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); - p->m_mixed_scroll_area->SetSizer(mix_scroll_sizer); - } - p->m_mixed_scroll_area->EnableScrolling(false, true); - p->m_mixed_scroll_area->ShowScrollbars(wxSHOW_SB_NEVER, wxSHOW_SB_DEFAULT); - p->m_mixed_scroll_area->Bind(wxEVT_SIZE, [this](wxSizeEvent& e) { - int w = p->m_mixed_scroll_area->GetClientSize().GetWidth(); - if (w > 0) - p->m_mixed_scroll_area->SetVirtualSize(w, p->m_mixed_scroll_area->GetVirtualSize().GetHeight()); - e.Skip(); - }); - wrapper_sizer->Add(p->m_mixed_scroll_area, 0, wxEXPAND, 0); - - // 4) Warning bar for mixes whose components were deleted or whose types disagree. - p->m_panel_mixed_warning = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); - p->m_panel_mixed_warning->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); - { - auto* warn_sizer = new wxBoxSizer(wxHORIZONTAL); - p->m_text_mixed_warning = - new wxStaticText(p->m_panel_mixed_warning, wxID_ANY, - _L("Mixed filament has invalid or mismatched components. Please re-edit affected entries.")); - p->m_text_mixed_warning->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#D01B1B"))); - p->m_text_mixed_warning->SetFont(::Label::Body_12); - p->m_text_mixed_warning->Wrap(FromDIP(360)); - warn_sizer->Add(p->m_text_mixed_warning, 1, wxALL, FromDIP(6)); - p->m_panel_mixed_warning->SetSizer(warn_sizer); - } - wrapper_sizer->Add(p->m_panel_mixed_warning, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(8)); - - // Hidden until update_mixed_filament_list() decides otherwise. - p->m_btn_add_mixed_filament->Hide(); - p->m_panel_mixed_title->Hide(); - p->m_mixed_scroll_area->Hide(); - p->m_panel_mixed_content->Hide(); - p->m_panel_mixed_warning->Hide(); + p->m_purge_mode_btn->Bind(wxEVT_BUTTON, [](wxCommandEvent &e) { + auto &preset_bundle = *wxGetApp().preset_bundle; + auto support_fast_purge_opt = preset_bundle.printers.get_edited_preset().config.option("support_fast_purge_mode"); + bool support_fast_purge = support_fast_purge_opt ? support_fast_purge_opt->value : false; + auto dlg_type = support_fast_purge ? PurgeModeDialogType::FastMode : PurgeModeDialogType::MultiNozzle; + PurgeModeDialog dlg(static_cast(wxGetApp().mainframe), dlg_type); + if (dlg.ShowModal() == wxID_OK) { + preset_bundle.project_config.set_key_value("prime_volume_mode", new ConfigOptionEnum(dlg.get_selected_mode())); + wxGetApp().plater()->update(); } - // ---- End mixed-color filament section ---- + }); - p->m_filament_area_wrapper->SetSizer(wrapper_sizer); - p->m_filament_area_wrapper->Layout(); - scrolled_sizer->Add( - p->m_filament_area_wrapper, 0, wxEXPAND | wxTOP | wxBOTTOM, - FromDIP(SidebarProps::ContentMarginV())); // ORCA use vertical margin on parent otherwise it shows scrollbar even on 1 filament - // ---- End filament area ---- + bSizer39->Add(p->m_purge_mode_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + bSizer39->Hide(p->m_purge_mode_btn); // hidden on launch; shown only for printers that support purge mode selection + + // BBS + // add wiping dialog + //wiping_dialog_button->SetFont(wxGetApp().normal_font()); + p->m_flushing_volume_btn = new Button(p->m_panel_filament_title, _L("Flushing volumes")); + p->m_flushing_volume_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Compact); + p->m_flushing_volume_btn->SetId(wxID_RESET); + auto has_modify = is_flush_config_modified(); + set_flushing_volume_warning(has_modify); + + p->m_flushing_volume_btn->Bind(wxEVT_BUTTON, ([parent, this](wxCommandEvent &e) { + open_flushing_dialog(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent)); + p->plater->get_view3D_canvas3D()->reload_scene(true); + p->plater->update(); + })); + + bSizer39->Add(p->m_flushing_volume_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(4)); + bSizer39->Hide(p->m_flushing_volume_btn); // ORCA Ensure button is hidden on launch while 1 filament exist + + ScalableButton* add_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "add_filament"); + add_btn->SetToolTip(_L("Add one filament")); + add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e){ + add_filament(); + update_filaments_counter(); + }); + p->m_bpButton_add_filament = add_btn; + + // ORCA Moved add button after delete button to prevent add button position change when remove icon automatically hidden + + ScalableButton* del_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "delete_filament"); + del_btn->SetToolTip(_L("Remove last filament")); + del_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { + delete_filament(); + update_filaments_counter(); + }); + p->m_bpButton_del_filament = del_btn; + + bSizer39->Add(del_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + bSizer39->Add(add_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::IconSpacing())); // ORCA Moved add button after delete button to prevent add button position change when remove icon automatically hidden + + bSizer39->Hide(p->m_bpButton_del_filament); // ORCA Ensure button is hidden on launch while 1 filament exist + + ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, + wxBU_EXACTFIT | wxNO_BORDER, false, 16); // ORCA match icon size with other icons as 16x16 + ams_btn->SetToolTip(_L("Synchronize filament list from AMS")); + ams_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { + sync_ams_list(); + }); + + ams_btn->Bind(wxEVT_UPDATE_UI, &Sidebar::update_sync_ams_btn_enable, this); + p->m_bpButton_ams_filament = ams_btn; + + bSizer39->Add(ams_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); + //bSizer39->Add(FromDIP(10), 0, 0, 0, 0 ); + + ScalableButton* set_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "settings"); + set_btn->SetToolTip(_L("Set filaments to use")); + set_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { + p->editing_filament = -1; + // wxGetApp().params_dialog()->Popup(); + // wxGetApp().get_tab(Preset::TYPE_FILAMENT)->restore_last_select_item(); + wxGetApp().run_wizard(ConfigWizard::RR_USER, ConfigWizard::SP_FILAMENTS); + }); + p->m_bpButton_set_filament = set_btn; + + bSizer39->Add(set_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::WideSpacing())); + bSizer39->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); + + // ---- Wrapper panel for collapse/expand of all filament content ---- + p->m_filament_area_wrapper = new wxPanel(p->scrolled, wxID_ANY); + p->m_filament_area_wrapper->SetBackgroundColour(*wxWHITE); + auto* wrapper_sizer = new wxBoxSizer(wxVERTICAL); + + // add filament content + p->m_panel_filament_content = new wxScrolledWindow(p->m_filament_area_wrapper, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + p->m_panel_filament_content->SetScrollbars(0, 100, 1, 2); + p->m_panel_filament_content->SetScrollRate(0, 5); + //p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(174)}); + p->m_panel_filament_content->SetBackgroundColour(wxColour(255, 255, 255)); + + //wxBoxSizer* bSizer_filament_content; + //bSizer_filament_content = new wxBoxSizer( wxHORIZONTAL ); + + // Orca: Sidebar - Filament content UI: setup filament selection combos panel layout + // Creates a two-column grid layout for filament selection dropdowns within the scrollable panel + p->sizer_filaments = new wxBoxSizer(wxHORIZONTAL); + p->sizer_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); + p->sizer_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); + + p->combos_filament.push_back(nullptr); + + /* first filament item */ + init_filament_combo(&p->combos_filament[0], 0); + + //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); + wxSizer *sizer_filaments2 = new wxBoxSizer(wxVERTICAL); + sizer_filaments2->Add(p->sizer_filaments, 0, wxEXPAND, 0); + p->m_panel_filament_content->SetSizer(sizer_filaments2); + p->m_panel_filament_content->Layout(); + + update_filaments_area_height(); // ORCA + + wrapper_sizer->Add(p->m_panel_filament_content, 0, wxEXPAND); + + // ---- Mixed-color filament section ---- + // A mixed filament is a virtual slot realized from 2-3 physical filaments at slicing time. + // Everything here stays hidden until at least two physical filaments exist, so a single + // filament setup looks exactly as before. + { + // 1) "+ Add Mixed Filament" button, shown only while no mixed filament exists yet. + p->m_btn_add_mixed_filament = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); + p->m_btn_add_mixed_filament->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F8F8F8"))); + p->m_btn_add_mixed_filament->SetMinSize(wxSize(-1, FromDIP(23))); + { + auto* btn_sizer = new wxBoxSizer(wxHORIZONTAL); + auto* icon_add = new ScalableButton(p->m_btn_add_mixed_filament, wxID_ANY, "add_filament", wxEmptyString, + wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 16); + auto* add_label = new wxStaticText(p->m_btn_add_mixed_filament, wxID_ANY, _L("Add Mixed Filament"), + wxDefaultPosition, wxDefaultSize, 0); + add_label->SetFont(::Label::Body_13); + btn_sizer->AddStretchSpacer(); + btn_sizer->Add(icon_add, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + btn_sizer->Add(add_label, 0, wxALIGN_CENTER_VERTICAL); + btn_sizer->AddStretchSpacer(); + p->m_btn_add_mixed_filament->SetSizer(btn_sizer); + p->m_btn_add_mixed_filament->SetCursor(wxCursor(wxCURSOR_HAND)); + // Whole panel is the hit target, so forward clicks from the children too. + auto on_click = [this](wxMouseEvent&) { add_mixed_filament(); }; + p->m_btn_add_mixed_filament->Bind(wxEVT_LEFT_UP, on_click); + add_label->Bind(wxEVT_LEFT_UP, on_click); + icon_add->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { add_mixed_filament(); }); + } + wrapper_sizer->Add(p->m_btn_add_mixed_filament, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM, FromDIP(8)); + + // 2) Title row with add / remove buttons, shown once a mixed filament exists. + p->m_panel_mixed_title = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); + p->m_panel_mixed_title->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); + { + auto* title_sizer = new wxBoxSizer(wxHORIZONTAL); + p->m_text_mixed_title = new wxStaticText(p->m_panel_mixed_title, wxID_ANY, _L("Mixed Filament")); + p->m_text_mixed_title->SetFont(::Label::Head_14); + title_sizer->Add(p->m_text_mixed_title, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); + title_sizer->AddStretchSpacer(); + + p->m_btn_mixed_del = new ScalableButton(p->m_panel_mixed_title, wxID_ANY, "delete_filament"); + p->m_btn_mixed_del->SetToolTip(_L("Remove last mixed filament")); + p->m_btn_mixed_del->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { + auto* plater_ptr = dynamic_cast(GetParent()); + if (!plater_ptr) return; + auto mixed_indices = plater_ptr->mixed_filament_config_indices(); + if (!mixed_indices.empty()) + delete_mixed_filament_at(mixed_indices.size() - 1); + }); + title_sizer->Add(p->m_btn_mixed_del, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + + p->m_btn_mixed_add = new ScalableButton(p->m_panel_mixed_title, wxID_ANY, "add_filament"); + p->m_btn_mixed_add->SetToolTip(_L("Add mixed filament")); + p->m_btn_mixed_add->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { add_mixed_filament(); }); + title_sizer->Add(p->m_btn_mixed_add, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing())); + title_sizer->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); + + p->m_panel_mixed_title->SetSizer(title_sizer); + } + wrapper_sizer->Add(p->m_panel_mixed_title, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(8)); + + // 3) Mixed filament rows, in their own scroll area so a long mixed list does not + // push the physical filament list off screen. + p->m_mixed_scroll_area = new wxScrolledWindow(p->m_filament_area_wrapper, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + p->m_mixed_scroll_area->SetScrollbars(0, 100, 1, 2); + p->m_mixed_scroll_area->SetScrollRate(0, 5); + p->m_mixed_scroll_area->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); + { + auto* mix_scroll_sizer = new wxBoxSizer(wxVERTICAL); + p->m_panel_mixed_content = new wxPanel(p->m_mixed_scroll_area, wxID_ANY); + p->m_panel_mixed_content->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); + + // Two columns, same idiom as sizer_filaments. + p->m_sizer_mixed_filaments = new wxBoxSizer(wxHORIZONTAL); + p->m_sizer_mixed_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); + p->m_sizer_mixed_filaments->Add(new wxBoxSizer(wxVERTICAL), 1, wxEXPAND); + + auto* sizer_mixed2 = new wxBoxSizer(wxVERTICAL); + sizer_mixed2->Add(p->m_sizer_mixed_filaments, 0, wxEXPAND, 0); + p->m_panel_mixed_content->SetSizer(sizer_mixed2); + mix_scroll_sizer->Add(p->m_panel_mixed_content, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); + p->m_mixed_scroll_area->SetSizer(mix_scroll_sizer); + } + p->m_mixed_scroll_area->EnableScrolling(false, true); + p->m_mixed_scroll_area->ShowScrollbars(wxSHOW_SB_NEVER, wxSHOW_SB_DEFAULT); + p->m_mixed_scroll_area->Bind(wxEVT_SIZE, [this](wxSizeEvent& e) { + int w = p->m_mixed_scroll_area->GetClientSize().GetWidth(); + if (w > 0) + p->m_mixed_scroll_area->SetVirtualSize(w, p->m_mixed_scroll_area->GetVirtualSize().GetHeight()); + e.Skip(); + }); + wrapper_sizer->Add(p->m_mixed_scroll_area, 0, wxEXPAND, 0); + + // 4) Warning bar for mixes whose components were deleted or whose types disagree. + p->m_panel_mixed_warning = new wxPanel(p->m_filament_area_wrapper, wxID_ANY); + p->m_panel_mixed_warning->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE)); + { + auto* warn_sizer = new wxBoxSizer(wxHORIZONTAL); + p->m_text_mixed_warning = new wxStaticText(p->m_panel_mixed_warning, wxID_ANY, + _L("Mixed filament has invalid or mismatched components. Please re-edit affected entries.")); + p->m_text_mixed_warning->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#D01B1B"))); + p->m_text_mixed_warning->SetFont(::Label::Body_12); + p->m_text_mixed_warning->Wrap(FromDIP(360)); + warn_sizer->Add(p->m_text_mixed_warning, 1, wxALL, FromDIP(6)); + p->m_panel_mixed_warning->SetSizer(warn_sizer); + } + wrapper_sizer->Add(p->m_panel_mixed_warning, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(8)); + + // Hidden until update_mixed_filament_list() decides otherwise. + p->m_btn_add_mixed_filament->Hide(); + p->m_panel_mixed_title->Hide(); + p->m_mixed_scroll_area->Hide(); + p->m_panel_mixed_content->Hide(); + p->m_panel_mixed_warning->Hide(); + } + // ---- End mixed-color filament section ---- + + p->m_filament_area_wrapper->SetSizer(wrapper_sizer); + p->m_filament_area_wrapper->Layout(); + scrolled_sizer->Add(p->m_filament_area_wrapper, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(SidebarProps::ContentMarginV())); // ORCA use vertical margin on parent otherwise it shows scrollbar even on 1 filament + // ---- End filament area ---- } { - // add project title - auto params_panel = ((MainFrame*) parent->GetParent())->m_param_panel; - if (params_panel) { - params_panel->get_top_panel()->Reparent(p->scrolled); - auto spliter_1 = new ::StaticLine(p->scrolled); - spliter_1->SetLineColour("#A6A9AA"); - scrolled_sizer->Add(spliter_1, 0, wxEXPAND); - scrolled_sizer->Add(params_panel->get_top_panel(), 0, wxEXPAND); - auto spliter_2 = new ::StaticLine(p->scrolled); - spliter_2->SetLineColour("#CECECE"); - scrolled_sizer->Add(spliter_2, 0, wxEXPAND); + //add project title + auto params_panel = ((MainFrame*)parent->GetParent())->m_param_panel; + if (params_panel) { + params_panel->get_top_panel()->Reparent(p->scrolled); + auto spliter_1 = new ::StaticLine(p->scrolled); + spliter_1->SetLineColour("#A6A9AA"); + scrolled_sizer->Add(spliter_1, 0, wxEXPAND); + scrolled_sizer->Add(params_panel->get_top_panel(), 0, wxEXPAND); + auto spliter_2 = new ::StaticLine(p->scrolled); + spliter_2->SetLineColour("#CECECE"); + scrolled_sizer->Add(spliter_2, 0, wxEXPAND); + } + + //add project content + p->sizer_params = new wxBoxSizer(wxVERTICAL); + + // ORCA: Update search box to modern style + p->m_search_bar = new StaticBox(p->scrolled); + p->m_search_bar->SetCornerRadius(0); + p->m_search_bar->SetBorderColor(wxColour("#CECECE")); + + p->m_search_item = new TextInput(p->m_search_bar, wxEmptyString, wxEmptyString, "", wxDefaultPosition, wxDefaultSize, 0 | wxBORDER_NONE); + p->m_search_item->SetIcon(*BitmapCache().load_svg("search", FromDIP(16), FromDIP(16))); // ORCA: Add search icon to search box + + wxTextCtrl* text_ctrl = p->m_search_item->GetTextCtrl(); + text_ctrl->SetHint(_L("Search plate, object and part.")); + text_ctrl->SetForegroundColour(wxColour("#262E30")); + text_ctrl->SetFont(Label::Body_13); + text_ctrl->SetSize(wxSize(-1, FromDIP(16))); // Centers text vertically + + text_ctrl->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) { + if (p->dia->IsShown()) { + e.Skip(); + return; } - - // add project content - p->sizer_params = new wxBoxSizer(wxVERTICAL); - - // ORCA: Update search box to modern style - p->m_search_bar = new StaticBox(p->scrolled); - p->m_search_bar->SetCornerRadius(0); - p->m_search_bar->SetBorderColor(wxColour("#CECECE")); - - p->m_search_item = new TextInput(p->m_search_bar, wxEmptyString, wxEmptyString, "", wxDefaultPosition, wxDefaultSize, - 0 | wxBORDER_NONE); - p->m_search_item->SetIcon(*BitmapCache().load_svg("search", FromDIP(16), FromDIP(16))); // ORCA: Add search icon to search box - - wxTextCtrl* text_ctrl = p->m_search_item->GetTextCtrl(); - text_ctrl->SetHint(_L("Search plate, object and part.")); - text_ctrl->SetForegroundColour(wxColour("#262E30")); - text_ctrl->SetFont(Label::Body_13); - text_ctrl->SetSize(wxSize(-1, FromDIP(16))); // Centers text vertically - - text_ctrl->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) { - if (p->dia->IsShown()) { - e.Skip(); - return; - } - p->m_search_bar->SetBorderColor(wxColour("#009688")); - wxPoint pos = this->p->m_search_bar->ClientToScreen(wxPoint(0, 0)); + p->m_search_bar->SetBorderColor(wxColour("#009688")); + wxPoint pos = this->p->m_search_bar->ClientToScreen(wxPoint(0, 0)); #ifndef __WXGTK__ - pos.y += this->p->m_search_bar->GetRect().height; + pos.y += this->p->m_search_bar->GetRect().height; #else this->p->m_search_item->Enable(false); #endif - p->dia->SetPosition(pos); - p->dia->Popup(); - e.Skip(); // required to show caret - }); + p->dia->SetPosition(pos); + p->dia->Popup(); + e.Skip(); // required to show caret + }); - auto search_sizer = new wxBoxSizer(wxHORIZONTAL); - search_sizer->Add(new wxWindow(p->m_search_bar, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND | wxLEFT | wxRIGHT, - FromDIP(1)); - search_sizer->Add(p->m_search_item, 1, wxEXPAND | wxALL, FromDIP(2)); - p->m_search_bar->SetSizer(search_sizer); - p->m_search_bar->Layout(); - search_sizer->Fit(p->m_search_bar); + auto search_sizer = new wxBoxSizer(wxHORIZONTAL); + search_sizer->Add(new wxWindow(p->m_search_bar, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(1)); + search_sizer->Add(p->m_search_item, 1, wxEXPAND | wxALL, FromDIP(2)); + p->m_search_bar->SetSizer(search_sizer); + p->m_search_bar->Layout(); + search_sizer->Fit(p->m_search_bar); - p->m_object_list = new ObjectList(p->scrolled); - p->m_object_list->Bind(wxCUSTOMEVT_EXIT_SEARCH, [this](wxCommandEvent&) { + p->m_object_list = new ObjectList(p->scrolled); + p->m_object_list->Bind(wxCUSTOMEVT_EXIT_SEARCH, [this](wxCommandEvent&) { #ifdef __WXGTK__ - this->p->m_search_item->Enable(true); + this->p->m_search_item->Enable(true); #endif - this->p->m_search_bar->SetBorderColor(wxColour("#CECECE")); - this->p->m_search_item->GetTextCtrl()->SetValue(""); // reset value when close - }); + this->p->m_search_bar->SetBorderColor(wxColour("#CECECE")); + this->p->m_search_item->GetTextCtrl()->SetValue(""); // reset value when close + }); - p->sizer_params->Add(p->m_search_bar, 0, wxALL | wxEXPAND, 0); - p->sizer_params->Add(p->m_object_list, 1, wxEXPAND | wxTOP, 0); - scrolled_sizer->Add(p->sizer_params, 2, wxEXPAND | wxLEFT, 0); - p->m_object_list->Hide(); - p->m_search_bar->Hide(); - // Frequently Object Settings - p->object_settings = new ObjectSettings(p->scrolled); + p->sizer_params->Add(p->m_search_bar, 0, wxALL | wxEXPAND, 0); + p->sizer_params->Add(p->m_object_list, 1, wxEXPAND | wxTOP, 0); + scrolled_sizer->Add(p->sizer_params, 2, wxEXPAND | wxLEFT, 0); + p->m_object_list->Hide(); + p->m_search_bar->Hide(); + // Frequently Object Settings + p->object_settings = new ObjectSettings(p->scrolled); - p->dia = new Search::SearchObjectDialog(p->m_object_list, p->scrolled->GetParent(), p->m_search_item); + p->dia = new Search::SearchObjectDialog(p->m_object_list, p->scrolled->GetParent(), p->m_search_item); #if !NEW_OBJECT_SETTING - p->object_settings->Hide(); - p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, 5 * em / 10); + p->object_settings->Hide(); + p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, 5 * em / 10); #else - if (params_panel) { - params_panel->Reparent(p->scrolled); - scrolled_sizer->Add(params_panel, 3, wxEXPAND); - } + if (params_panel) { + params_panel->Reparent(p->scrolled); + scrolled_sizer->Add(params_panel, 3, wxEXPAND); + } #endif } @@ -3306,71 +3264,67 @@ Sidebar::Sidebar(Plater* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, p->object_layers->Hide(); p->sizer_params->Add(p->object_layers->get_sizer(), 0, wxEXPAND | wxTOP, 0); - auto* sizer = new wxBoxSizer(wxVERTICAL); + auto *sizer = new wxBoxSizer(wxVERTICAL); sizer->Add(p->scrolled, 1, wxEXPAND); SetSizer(sizer); } Sidebar::~Sidebar() {} -void Sidebar::on_enter_image_printer_bed(wxMouseEvent& evt) -{ - // p->image_printer_bed->Bind(wxEVT_LEAVE_WINDOW, &Sidebar::on_leave_image_printer_bed, this); - auto pos = p->panel_printer_bed->GetScreenPosition(); - auto rect = p->panel_printer_bed->GetRect(); - wxPoint temp_pos(pos.x + rect.GetWidth() + FromDIP(3), pos.y); +void Sidebar::on_enter_image_printer_bed(wxMouseEvent &evt) { + //p->image_printer_bed->Bind(wxEVT_LEAVE_WINDOW, &Sidebar::on_leave_image_printer_bed, this); + auto pos = p->panel_printer_bed->GetScreenPosition(); + auto rect = p->panel_printer_bed->GetRect(); + wxPoint temp_pos(pos.x + rect.GetWidth() + FromDIP(3), pos.y); if (p->big_bed_image_popup == nullptr) p->big_bed_image_popup = new ImageDPIFrame(); - auto image_path = get_cur_select_bed_image(); - p->big_bed_image_popup->set_bitmap( - create_scaled_bitmap("big_" + image_path, p->big_bed_image_popup, p->big_bed_image_popup->get_image_px())); + auto image_path = get_cur_select_bed_image(); + p->big_bed_image_popup->set_bitmap(create_scaled_bitmap("big_" + image_path, p->big_bed_image_popup, p->big_bed_image_popup->get_image_px())); p->big_bed_image_popup->set_title(p->combo_printer_bed->GetString(p->combo_printer_bed->GetSelection())); p->big_bed_image_popup->SetCanFocus(false); p->big_bed_image_popup->SetPosition(temp_pos); p->big_bed_image_popup->on_show(); } -void Sidebar::on_leave_image_printer_bed(wxMouseEvent& evt) -{ - // auto pos_x = evt.GetX(); - // auto pos_y = evt.GetY(); - // auto rect = p->image_printer_bed->GetRect(); - // if ((pos_x <= 0 || pos_y <= 0 || pos_x >= rect.GetWidth()) && p->big_bed_image_popup) { +void Sidebar::on_leave_image_printer_bed(wxMouseEvent &evt) { + //auto pos_x = evt.GetX(); + //auto pos_y = evt.GetY(); + //auto rect = p->image_printer_bed->GetRect(); + //if ((pos_x <= 0 || pos_y <= 0 || pos_x >= rect.GetWidth()) && p->big_bed_image_popup) { if (p->big_bed_image_popup) { bool was_visible = p->big_bed_image_popup->IsShown(); p->big_bed_image_popup->on_hide(); - if (!p->combo_printer_bed->is_drop_down() && was_visible) - p->combo_printer_bed->SetFocus(); // set focus back to bed type combo. this prevents weird look if focus on other item + if(!p->combo_printer_bed->is_drop_down() && was_visible) + p->combo_printer_bed->SetFocus(); // set focus back to bed type combo. this prevents weird look if focus on other item } } -void Sidebar::on_change_color_mode(bool is_dark) -{ - const ModelObjectPtrs& mos = wxGetApp().model().objects; +void Sidebar::on_change_color_mode(bool is_dark) { + const ModelObjectPtrs &mos = wxGetApp().model().objects; for (int i = 0; i < mos.size(); i++) { - wxGetApp().obj_list()->update_info_items(i, nullptr, false, true); + wxGetApp().obj_list()->update_info_items(i,nullptr,false,true); } + } void Sidebar::create_printer_preset() { CreatePrinterPresetDialog dlg(wxGetApp().mainframe); - int res = dlg.ShowModal(); + int res = dlg.ShowModal(); if (wxID_OK == res) { wxGetApp().load_current_presets(); wxGetApp().mainframe->update_side_preset_ui(); update_ui_from_settings(); update_all_preset_comboboxes(); CreatePresetSuccessfulDialog success_dlg(wxGetApp().mainframe, SuccessType::PRINTER); - int res = success_dlg.ShowModal(); + int res = success_dlg.ShowModal(); if (res == wxID_OK) { p->editing_filament = -1; - if (p->combo_printer->switch_to_tab()) - p->editing_filament = 0; + if (p->combo_printer->switch_to_tab()) p->editing_filament = 0; } } } -void Sidebar::init_filament_combo(PlaterPresetComboBox** combo, const int filament_idx) +void Sidebar::init_filament_combo(PlaterPresetComboBox **combo, const int filament_idx) { *combo = new PlaterPresetComboBox(p->m_panel_filament_content, Slic3r::Preset::TYPE_FILAMENT); (*combo)->set_filament_idx(filament_idx); @@ -3384,10 +3338,8 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox** combo, const int filame combo_and_btn_sizer->AddSpacer(FromDIP((filament_idx % 2) == 0 ? 12 : 3)); // Content Margin (*combo)->clr_picker->SetLabel(wxString::Format("%d", filament_idx + 1)); - combo_and_btn_sizer->Add((*combo)->clr_picker, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, - FromDIP(SidebarProps::ElementSpacing()) - FromDIP(2)); // ElementSpacing - 2 (from combo box)) - combo_and_btn_sizer->Add(*combo, 1, wxALL | wxEXPAND, FromDIP(2)) - ->SetMinSize({-1, 30 * wxGetApp().em_unit() / 10}); // ORCA ensure height matches with PlaterPresetComboBox + combo_and_btn_sizer->Add((*combo)->clr_picker, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(SidebarProps::ElementSpacing()) - FromDIP(2)); // ElementSpacing - 2 (from combo box)) + combo_and_btn_sizer->Add(*combo, 1, wxALL | wxEXPAND, FromDIP(2))->SetMinSize({-1, 30 * wxGetApp().em_unit() / 10}); // ORCA ensure height matches with PlaterPresetComboBox /* BBS hide del_btn ScalableButton* del_btn = new ScalableButton(p->m_panel_filament_content, wxID_ANY, "delete_filament"); @@ -3410,15 +3362,16 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox** combo, const int filame edit_btn->Bind(wxEVT_BUTTON, [this, edit_btn, combobox, filament_idx](wxCommandEvent) { bool single_or_bbl = should_show_SEMM_buttons(); bool is_multi_material = p->combos_filament.size() > 1; - if (single_or_bbl && is_multi_material) { - // MULTI MATERIAL Show menu + if(single_or_bbl && is_multi_material) { + // MULTI MATERIAL Show menu auto menu = p->plater->filament_action_menu(filament_idx); - wxPoint pt{0, edit_btn->GetSize().GetHeight() + FromDIP(2)}; - pt = edit_btn->ClientToScreen(pt); - pt = wxGetApp().mainframe->ScreenToClient(pt); + wxPoint pt { 0, edit_btn->GetSize().GetHeight() + FromDIP(2) }; + pt = edit_btn->ClientToScreen(pt); + pt = wxGetApp().mainframe->ScreenToClient(pt); p->m_menu_filament_id = filament_idx; p->plater->PopupMenu(menu, (int) pt.x, pt.y); - } else { + } + else { // SINGLE MATERIAL / MULTI EXTRUDER / TOOLCHANGER / IDEX Opens Dialog directly p->editing_filament = filament_idx; combobox->switch_to_tab(); @@ -3426,16 +3379,14 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox** combo, const int filame }); combobox->edit_btn = edit_btn; - combo_and_btn_sizer->Add(edit_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, - FromDIP(SidebarProps::ElementSpacing()) - FromDIP(2)); // ElementSpacing - 2 (from combo box)) + combo_and_btn_sizer->Add(edit_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::ElementSpacing()) - FromDIP(2)); // ElementSpacing - 2 (from combo box)) combo_and_btn_sizer->AddSpacer(FromDIP(SidebarProps::ContentMargin())); // BBS: filament double columns - auto side = filament_idx % 2; - auto /***/ sizer_filaments = this->p->sizer_filaments->GetItem(side)->GetSizer(); - if (side == 1 && filament_idx > 1) - sizer_filaments->Remove(filament_idx / 2); + auto side = filament_idx % 2; + auto /***/sizer_filaments = this->p->sizer_filaments->GetItem(side)->GetSizer(); + if (side == 1 && filament_idx > 1) sizer_filaments->Remove(filament_idx / 2); sizer_filaments->Add(combo_and_btn_sizer, 1, wxEXPAND); if (side == 0 && filament_idx > 0) { sizer_filaments = this->p->sizer_filaments->GetItem(1)->GetSizer(); @@ -3448,14 +3399,14 @@ void Sidebar::remove_unused_filament_combos(const size_t current_extruder_count) if (current_extruder_count >= p->combos_filament.size()) return; while (p->combos_filament.size() > current_extruder_count) { - const int last = p->combos_filament.size() - 1; + const int last = p->combos_filament.size() - 1; auto sizer_filaments = this->p->sizer_filaments->GetItem(last % 2)->GetSizer(); sizer_filaments->Remove(last / 2); (*p->combos_filament[last]).Destroy(); p->combos_filament.pop_back(); } // BBS: filament double columns - auto sizer_filaments0 = this->p->sizer_filaments->GetItem((size_t) 0)->GetSizer(); + auto sizer_filaments0 = this->p->sizer_filaments->GetItem((size_t)0)->GetSizer(); auto sizer_filaments1 = this->p->sizer_filaments->GetItem(1)->GetSizer(); if (current_extruder_count < 2) { sizer_filaments1->Clear(); @@ -3471,27 +3422,27 @@ void Sidebar::remove_unused_filament_combos(const size_t current_extruder_count) void Sidebar::update_all_preset_comboboxes() { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); bool is_bbl_vendor = preset_bundle.is_bbl_vendor(); - auto p_mainframe = wxGetApp().mainframe; - auto cfg = preset_bundle.printers.get_edited_preset().config; - const bool use_printer_agents = wxGetApp().app_config->get_bool("use_printer_agents"); + auto p_mainframe = wxGetApp().mainframe; + auto cfg = preset_bundle.printers.get_edited_preset().config; + const bool use_printer_agents = wxGetApp().app_config->get_bool("use_printer_agents"); const bool use_native_device_tab = preset_bundle.use_bbl_device_tab() || use_printer_agents; if (preset_bundle.use_bbl_network()) { - // only show connection button for not-BBL printer - // p->btn_connect_printer->Hide(); + //only show connection button for not-BBL printer + //p->btn_connect_printer->Hide(); p->m_printer_connect->Hide(); - // only show sync-ams button for BBL printer + //only show sync-ams button for BBL printer p->m_bpButton_ams_filament->Show(); - // update print button default value for bbl or third-party printer + //update print button default value for bbl or third-party printer p_mainframe->set_print_button_to_default(MainFrame::PrintSelectType::ePrintPlate); } else { - // p->btn_connect_printer->Show(); - // ORCA: hide the physical-printer connection button when printer agents are enabled + //p->btn_connect_printer->Show(); + // ORCA: hide the physical-printer connection button when printer agents are enabled p->m_printer_connect->Show(!use_printer_agents); // ORCA: show/hide sync-ams button based on filament sync mode @@ -3504,19 +3455,19 @@ void Sidebar::update_all_preset_comboboxes() // Orca: with "Support 3MF as gcode" (use_3mf) the local export is a .gcode.3mf bundle, so when no // printer host/IP is configured the default action is "Export plate sliced file" (mirrors the // print dropdown) instead of "Export G-code file". - auto print_btn_type = cfg.opt_bool("use_3mf") ? MainFrame::PrintSelectType::eExportSlicedFile : - MainFrame::PrintSelectType::eExportGcode; - wxString url = from_u8(PrintHost::get_print_host_webui(&cfg)); + auto print_btn_type = cfg.opt_bool("use_3mf") ? MainFrame::PrintSelectType::eExportSlicedFile + : MainFrame::PrintSelectType::eExportGcode; + wxString url = from_u8(PrintHost::get_print_host_webui(&cfg)); wxString apikey; - if (url.empty()) + if(url.empty()) url = wxString::Format("file://%s/web/orca/missing_connection.html", from_u8(resources_dir())); else { const auto host_type = cfg.option>("host_type")->value; if (cfg.has("printhost_apikey") && (host_type != htSimplyPrint)) apikey = cfg.opt_string("printhost_apikey"); - print_btn_type = (preset_bundle.is_bbl_vendor() || wxGetApp().app_config->get_bool("use_printer_agents")) ? - MainFrame::PrintSelectType::ePrintPlate : - MainFrame::PrintSelectType::eSendGcode; + print_btn_type = (preset_bundle.is_bbl_vendor() || wxGetApp().app_config->get_bool("use_printer_agents")) + ? MainFrame::PrintSelectType::ePrintPlate + : MainFrame::PrintSelectType::eSendGcode; } if (use_printer_agents) @@ -3524,27 +3475,29 @@ void Sidebar::update_all_preset_comboboxes() else if (!use_native_device_tab) p_mainframe->load_printer_url(url, apikey); + p_mainframe->set_print_button_to_default(print_btn_type); + } if (cfg.opt_bool("pellet_modded_printer")) { - p->m_staticText_filament_settings->SetLabel(_L("Pellets")); + p->m_staticText_filament_settings->SetLabel(_L("Pellets")); p->m_filament_icon->SetBitmap_("pellets"); } else { - p->m_staticText_filament_settings->SetLabel(_L("Filament")); + p->m_staticText_filament_settings->SetLabel(_L("Filament")); p->m_filament_icon->SetBitmap_("filament"); } show_SEMM_buttons(); - // p->m_staticText_filament_settings->Update(); + //p->m_staticText_filament_settings->Update(); if (is_bbl_vendor || cfg.opt_bool("support_multi_bed_types")) { p->combo_printer_bed->Enable(); // Orca: don't update bed type if loading project if (!p->plater->is_loading_project()) { bool has_changed = reset_bed_type_combox_choices(); - bool flag = m_begin_sync_printer_status && !has_changed; + bool flag = m_begin_sync_printer_status && !has_changed; if (!(flag)) { auto str_bed_type = wxGetApp().app_config->get_printer_setting(wxGetApp().preset_bundle->printers.get_selected_preset_name(), "curr_bed_type"); @@ -3554,7 +3507,7 @@ void Sidebar::update_all_preset_comboboxes() bed_type_value = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); } - set_bed_type_accord_combox((BedType) bed_type_value); + set_bed_type_accord_combox((BedType) bed_type_value); } else { BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); set_bed_type_accord_combox(bed_type); @@ -3574,10 +3527,10 @@ void Sidebar::update_all_preset_comboboxes() p->panel_printer_bed->Show(is_bbl_vendor || cfg.opt_bool("support_multi_bed_types")); // Update the print choosers to only contain the compatible presets, update the dirty flags. - // BBS + //BBS // Update the printer choosers, update the dirty flags. - // p->combo_printer->update(); + //p->combo_printer->update(); // Update the filament choosers to only contain the compatible presets, update the color preview, // update the dirty flags. if (print_tech == ptFFF) { @@ -3596,12 +3549,13 @@ void Sidebar::update_all_preset_comboboxes() void Sidebar::update_presets(Preset::Type preset_type) { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%") % preset_type; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%")%preset_type; switch (preset_type) { - case Preset::TYPE_FILAMENT: { + case Preset::TYPE_FILAMENT: + { // BBS #if 0 const size_t extruder_cnt = print_tech != ptFFF ? 1 : @@ -3610,16 +3564,16 @@ void Sidebar::update_presets(Preset::Type preset_type) #else const size_t filament_cnt = p->combos_filament.size(); #endif - const std::string& name = preset_bundle.filaments.get_selected_preset_name(); + const std::string &name = preset_bundle.filaments.get_selected_preset_name(); if (p->editing_filament >= 0) { preset_bundle.set_filament_preset(p->editing_filament, name); } else if (filament_cnt == 1) { // Single filament printer, synchronize the filament presets. - Preset* preset = preset_bundle.filaments.find_preset(name, false); + Preset *preset = preset_bundle.filaments.find_preset(name, false); if (preset) { - if (preset->is_compatible) - preset_bundle.set_filament_preset(0, name); + if (preset->is_compatible) preset_bundle.set_filament_preset(0, name); } + } for (size_t i = 0; i < filament_cnt; i++) @@ -3630,22 +3584,25 @@ void Sidebar::update_presets(Preset::Type preset_type) } case Preset::TYPE_PRINT: - // wxGetApp().mainframe->m_param_panel; - // p->combo_print->update(); + //wxGetApp().mainframe->m_param_panel; + //p->combo_print->update(); { - Tab* print_tab = wxGetApp().get_tab(Preset::TYPE_PRINT); - if (print_tab) { - print_tab->get_combo_box()->update(); - } - break; + Tab* print_tab = wxGetApp().get_tab(Preset::TYPE_PRINT); + if (print_tab) { + print_tab->get_combo_box()->update(); } - case Preset::TYPE_SLA_PRINT:; // p->combo_sla_print->update(); + break; + } + case Preset::TYPE_SLA_PRINT: + ;// p->combo_sla_print->update(); break; - case Preset::TYPE_SLA_MATERIAL:; // p->combo_sla_material->update(); + case Preset::TYPE_SLA_MATERIAL: + ;// p->combo_sla_material->update(); break; - case Preset::TYPE_PRINTER: { + case Preset::TYPE_PRINTER: + { update_all_preset_comboboxes(); p->show_preset_comboboxes(); @@ -3659,17 +3616,17 @@ void Sidebar::update_presets(Preset::Type preset_type) Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); if (auto printer_structure_opt = printer_preset.config.option>("printer_structure")) { - wxGetApp().plater()->get_current_canvas3D()->get_arrange_settings().align_to_y_axis = (printer_structure_opt->value == - PrinterStructure::psI3); - } else + wxGetApp().plater()->get_current_canvas3D()->get_arrange_settings().align_to_y_axis = (printer_structure_opt->value == PrinterStructure::psI3); + } + else wxGetApp().plater()->get_current_canvas3D()->get_arrange_settings().align_to_y_axis = false; // Update dual extrudes - auto* nozzle_diameter = dynamic_cast(printer_preset.config.option("nozzle_diameter")); - auto extruder_variants = printer_preset.config.option("extruder_variant_list"); + auto* nozzle_diameter = dynamic_cast(printer_preset.config.option("nozzle_diameter")); + auto extruder_variants = printer_preset.config.option("extruder_variant_list"); std::string printer_model = printer_preset.config.option("printer_model")->value; - bool isBBL = preset_bundle.is_bbl_vendor(); + bool isBBL = preset_bundle.is_bbl_vendor(); bool is_dual_extruder = extruder_variants->size() == 2; // why: agent mode drives the native device tab, so the sidebar lays out like BBL // (no physical-printer connect button). @@ -3680,40 +3637,36 @@ void Sidebar::update_presets(Preset::Type preset_type) // UI left = DEPUTY_EXTRUDER_ID(1), UI right = MAIN_EXTRUDER_ID(0) if (is_dual_extruder) { std::string printer_type = printer_preset.get_printer_type(wxGetApp().preset_bundle); - auto left_title = DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::TitleCase); - auto right_title = DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::TitleCase); + auto left_title = DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::TitleCase); + auto right_title = DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::TitleCase); p->left_extruder->SetTitle(_L(left_title)); p->right_extruder->SetTitle(_L(right_title)); } - auto extruders_def = printer_preset.config.def()->get("extruder_type"); - auto extruders = printer_preset.config.option("extruder_type"); - auto nozzle_volumes_def = wxGetApp().preset_bundle->project_config.def()->get("nozzle_volume_type"); - auto nozzle_volumes = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type"); - auto diameters = wxGetApp().preset_bundle->printers.diameters_of_selected_printer(); - auto diameter = printer_preset.config.opt_string("printer_variant"); + auto extruders_def = printer_preset.config.def()->get("extruder_type"); + auto extruders = printer_preset.config.option("extruder_type"); + auto nozzle_volumes_def = wxGetApp().preset_bundle->project_config.def()->get("nozzle_volume_type"); + auto nozzle_volumes = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type"); + auto diameters = wxGetApp().preset_bundle->printers.diameters_of_selected_printer(); + auto diameter = printer_preset.config.opt_string("printer_variant"); auto extruder_max_nozzle_count = printer_preset.config.option("extruder_max_nozzle_count"); - auto update_extruder_variant = [printer_model, extruders_def, extruders, nozzle_volumes_def, nozzle_volumes, extruder_variants, - diameter, extruder_max_nozzle_count](ExtruderGroup& extruder, int index) { + auto update_extruder_variant = [printer_model, extruders_def, extruders, nozzle_volumes_def, nozzle_volumes, extruder_variants,diameter,extruder_max_nozzle_count](ExtruderGroup & extruder, int index) { extruder.combo_flow->Clear(); - auto type = extruders_def->enum_labels[extruders->values[index]]; + auto type = extruders_def->enum_labels[extruders->values[index]]; int select = -1; for (size_t i = 0; i < nozzle_volumes_def->enum_labels.size(); ++i) { // get_at falls back to the first entry when a profile defines no per-extruder value, // so extruders without an explicit sub-nozzle count never offer Hybrid. A nullable-int // nil is INT_MAX (> 1) and would otherwise falsely pass the gate, so exclude it too. if (boost::algorithm::contains(extruder_variants->values[index], type + " " + nozzle_volumes_def->enum_labels[i]) || - extruder_max_nozzle_count->get_at(index) > 1 && - extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && - nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid) { - if (nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == NozzleVolumeType::nvtHighFlow && - (diameter == "0.2" || is_skip_high_flow_printer(printer_model))) + extruder_max_nozzle_count->get_at(index) > 1 && extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && + nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid) { + if (nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == NozzleVolumeType::nvtHighFlow &&(diameter == "0.2" || + is_skip_high_flow_printer(printer_model))) continue; if (nozzle_volumes->values[index] == i) select = extruder.combo_flow->GetCount(); - extruder.combo_flow->Append(_L(nozzle_volumes_def->enum_labels[i]), {}, (void*) i); + extruder.combo_flow->Append(_L(nozzle_volumes_def->enum_labels[i]), {}, (void*)i); } } if (select == -1) @@ -3727,7 +3680,7 @@ void Sidebar::update_presets(Preset::Type preset_type) // ORCA get the actual nozzle diameter from printer config auto nozzle_dia = get_diameter_string(nozzle_diameter->values[extruder_index]); // ORCA try to add nozzle diameter from config if list is empty. fixes blank nozzle combo box when preset has no alias - if (diameters[0].empty() && !nozzle_dia.empty()) { + if(diameters[0].empty() && !nozzle_dia.empty()){ diameters[0] = nozzle_dia; } // Orca: Check if the actual nozzle diameter exists in the list, if not add it as a custom option @@ -3745,38 +3698,34 @@ void Sidebar::update_presets(Preset::Type preset_type) auto image_path = get_cur_select_bed_image(); if (is_dual_extruder) { std::string printer_type = printer_preset.get_printer_type(wxGetApp().preset_bundle); - p->left_extruder->SetTitle( - _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::TitleCase))); - p->right_extruder->SetTitle( - _L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, - ToolHeadNameCase::TitleCase))); + p->left_extruder->SetTitle(_L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::TitleCase))); + p->right_extruder->SetTitle(_L(DevPrinterConfigUtil::get_toolhead_display_name(printer_type, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::TitleCase))); AMSCountPopupWindow::UpdateAMSCount(0, p->left_extruder); AMSCountPopupWindow::UpdateAMSCount(1, p->right_extruder); update_extruder_variant(*p->left_extruder, 0); update_extruder_variant(*p->right_extruder, 1); - // if (!p->is_switching_diameter) { - update_extruder_diameter(0, *p->left_extruder); - update_extruder_diameter(1, *p->right_extruder); + //if (!p->is_switching_diameter) { + update_extruder_diameter(0, *p->left_extruder); + update_extruder_diameter(1, *p->right_extruder); //} p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight())); } else { AMSCountPopupWindow::UpdateAMSCount(0, p->single_extruder); update_extruder_variant(*p->single_extruder, 0); - // if (!p->is_switching_diameter) - update_extruder_diameter(0, *p->single_extruder); + //if (!p->is_switching_diameter) + update_extruder_diameter(0, *p->single_extruder); // ORCA sync unified nozzle combo box p->combo_nozzle_dia->Clear(); for (size_t i = 0; i < diameters.size(); ++i) p->combo_nozzle_dia->Append(diameters[i], {}); p->combo_nozzle_dia->SetSelection((*p->single_extruder).combo_diameter->GetSelection()); - + // ORCA update nozzle type - const auto& full_config = wxGetApp().preset_bundle->full_config(); - wxString nozzle_type = "-"; + const auto& full_config = wxGetApp().preset_bundle->full_config(); + wxString nozzle_type = "-"; const ConfigOptionEnumsGenericNullable* cfg_nozzle_type = full_config.option("nozzle_type"); - if (cfg_nozzle_type != nullptr) { + if(cfg_nozzle_type != nullptr){ std::vector nozzle_types(cfg_nozzle_type->size()); for (size_t idx = 0; idx < cfg_nozzle_type->size(); ++idx) nozzle_types[idx] = NozzleType(cfg_nozzle_type->values[idx]); @@ -3784,8 +3733,8 @@ void Sidebar::update_presets(Preset::Type preset_type) nozzle_types[0] == ntHardenedSteel ? "Hardened Steel" : nozzle_types[0] == ntStainlessSteel ? "Stainless Steel" : nozzle_types[0] == ntTungstenCarbide ? "Tungsten Carbide" : - nozzle_types[0] == ntBrass ? "Brass" : - "-" // Undefined + nozzle_types[0] == ntBrass ? "Brass" + : "-" // Undefined ); } p->label_nozzle_type->SetLabel(nozzle_type); @@ -3811,17 +3760,19 @@ void Sidebar::update_presets(Preset::Type preset_type) BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": exit."); } -// BBS +//BBS void Sidebar::update_presets_from_to(Slic3r::Preset::Type preset_type, std::string from, std::string to) { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%, from %2% to %3%") % preset_type % from % to; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%, from %2% to %3%")%preset_type %from %to; switch (preset_type) { - case Preset::TYPE_FILAMENT: { + case Preset::TYPE_FILAMENT: + { const size_t filament_cnt = p->combos_filament.size(); - for (auto it = preset_bundle.filament_presets.begin(); it != preset_bundle.filament_presets.end(); it++) { + for (auto it = preset_bundle.filament_presets.begin(); it != preset_bundle.filament_presets.end(); it++) + { if ((*it).compare(from) == 0) { (*it) = to; } @@ -3840,8 +3791,7 @@ void Sidebar::update_presets_from_to(Slic3r::Preset::Type preset_type, std::stri BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": exit!"); } -BedType Sidebar::get_cur_select_bed_type() -{ +BedType Sidebar::get_cur_select_bed_type() { int selection = p->combo_printer_bed->GetSelection(); if (selection < 0 && selection >= m_cur_combox_bed_types.size()) { p->combo_printer_bed->SetSelection(0); @@ -3853,14 +3803,13 @@ BedType Sidebar::get_cur_select_bed_type() std::string Sidebar::get_cur_select_bed_image() { - auto select_bed_type = get_cur_select_bed_type(); - // auto series_suffix_str = m_cur_image_bed_type.empty() ? "" : ("_" + m_cur_image_bed_type); - auto image_path = bed_type_thumbnails[select_bed_type]; // + series_suffix_str; + auto select_bed_type = get_cur_select_bed_type(); + //auto series_suffix_str = m_cur_image_bed_type.empty() ? "" : ("_" + m_cur_image_bed_type); + auto image_path = bed_type_thumbnails[select_bed_type];// + series_suffix_str; return image_path; } -void Sidebar::set_bed_type_accord_combox(BedType bed_type) -{ +void Sidebar::set_bed_type_accord_combox(BedType bed_type) { for (size_t i = 0; i < m_cur_combox_bed_types.size(); i++) { if (m_cur_combox_bed_types[i] == bed_type) { p->combo_printer_bed->SelectAndNotify(i); @@ -3884,28 +3833,28 @@ bool Sidebar::reset_bed_type_combox_choices(bool is_sidebar_init) } if (m_last_combo_bedtype_count != 0 && pm) { auto cur_count = (int) BedType::btCount - 1 - pm->not_support_bed_types.size(); - if (cur_count == m_last_combo_bedtype_count) { // no change + if (cur_count == m_last_combo_bedtype_count) {//no change return false; } } - const ConfigOptionDef* bed_type_def = print_config_def.get("curr_bed_type"); + const ConfigOptionDef *bed_type_def = print_config_def.get("curr_bed_type"); p->combo_printer_bed->Clear(); m_cur_combox_bed_types.clear(); - if (pm && bed_type_def && bed_type_def->enum_keys_map) { + if (pm &&bed_type_def && bed_type_def->enum_keys_map) { int index = 0; for (auto item : bed_type_def->enum_labels) { index++; - bool find = std::find(pm->not_support_bed_types.begin(), pm->not_support_bed_types.end(), item) != - pm->not_support_bed_types.end(); + bool find = std::find(pm->not_support_bed_types.begin(), pm->not_support_bed_types.end(), item) != pm->not_support_bed_types.end(); if (find) { continue; } - m_cur_combox_bed_types.emplace_back(BedType(index)); // BedType //btPC =1 + m_cur_combox_bed_types.emplace_back(BedType(index));//BedType //btPC =1 p->combo_printer_bed->AppendString(_L(item)); } - } else { + } + else { m_cur_image_bed_type = ""; - int index = 0; + int index = 0; for (auto item : bed_type_def->enum_labels) { index++; m_cur_combox_bed_types.emplace_back(BedType(index)); // BedType //btPC =1 @@ -3930,6 +3879,7 @@ void Sidebar::change_top_border_for_mode_sizer(bool increase_border) #endif } + // ---- Mixed-color filament sidebar support ---- // The mixed rows get their own scroll area, capped by Orca's filaments_area_preferred_count // row budget rather than BBS's fixed 3-row / 12-filament limit. @@ -3939,11 +3889,11 @@ void Sidebar::recalc_filament_scroll_sizes() return; // Same preferred-row budget the physical list uses, so both lists cap consistently. - auto left_sizer = p->sizer_filaments->GetItem((size_t) 0)->GetSizer(); - auto combo_sizer = left_sizer->GetItem((size_t) 0)->GetSizer(); - const int row_h = combo_sizer ? combo_sizer->GetSize().GetHeight() : 0; + auto left_sizer = p->sizer_filaments->GetItem((size_t) 0)->GetSizer(); + auto combo_sizer = left_sizer->GetItem((size_t) 0)->GetSizer(); + const int row_h = combo_sizer ? combo_sizer->GetSize().GetHeight() : 0; int preferred_rows = std::ceil(0.5 * std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count"))); - const int max_h = (row_h > 0) ? preferred_rows * row_h : -1; + const int max_h = (row_h > 0) ? preferred_rows * row_h : -1; auto content_size = p->m_mixed_scroll_area->GetSizer()->GetMinSize(); if (max_h > 0 && content_size.y > max_h) { @@ -3954,9 +3904,9 @@ void Sidebar::recalc_filament_scroll_sizes() } p->m_mixed_scroll_area->SetMinSize({0, content_size.y}); } -static std::string blend_mixed_color(const std::vector& comp_ids, - const std::vector& ratios, - const std::vector& color_strs) +static std::string blend_mixed_color(const std::vector &comp_ids, + const std::vector &ratios, + const std::vector &color_strs) { std::vector hex_colors; hex_colors.reserve(comp_ids.size()); @@ -3968,8 +3918,7 @@ static std::string blend_mixed_color(const std::vector& comp_ids, void Sidebar::update_mixed_filament_list() { auto* plater = dynamic_cast(GetParent()); - if (!plater) - return; + if (!plater) return; wxWindowUpdateLocker noUpdates(this); @@ -3979,17 +3928,17 @@ void Sidebar::update_mixed_filament_list() const wxColour mc_dim = StateColor::darkModeColorFor(wxColour("#ACACAC")); auto& project_config = wxGetApp().preset_bundle->project_config; - auto mixed_indices = plater->mixed_filament_config_indices(); - size_t num_physical = p->combos_filament.size(); + auto mixed_indices = plater->mixed_filament_config_indices(); + size_t num_physical = p->combos_filament.size(); - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - auto* components_opt = project_config.option("filament_mixed_components"); - auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); - auto* colours_opt = project_config.option("filament_colour"); - auto* grad_opt = project_config.option("filament_mixed_gradient"); - auto* grad_range_opt = project_config.option("filament_mixed_gradient_range"); + auto* is_mixed_opt = project_config.option("filament_is_mixed"); + auto* components_opt = project_config.option("filament_mixed_components"); + auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); + auto* colours_opt = project_config.option("filament_colour"); + auto* grad_opt = project_config.option("filament_mixed_gradient"); + auto* grad_range_opt = project_config.option("filament_mixed_gradient_range"); - bool can_mix = (num_physical >= 2); + bool can_mix = (num_physical >= 2); bool has_mixed = can_mix && !mixed_indices.empty(); // Check integrity of mixed filament component references @@ -4011,11 +3960,11 @@ void Sidebar::update_mixed_filament_list() ft = preset->config.get_filament_type(display_type); } } - if (ft.empty()) - ft = "PLA"; + if (ft.empty()) ft = "PLA"; physical_types.push_back(ft); } - auto type_mismatch_slots = check_mixed_filament_type_consistency(is_mixed_opt->values, components_opt->values, physical_types); + auto type_mismatch_slots = check_mixed_filament_type_consistency( + is_mixed_opt->values, components_opt->values, physical_types); for (size_t s : type_mismatch_slots) broken_set.insert(s); broken_slots.insert(broken_slots.end(), type_mismatch_slots.begin(), type_mismatch_slots.end()); @@ -4035,8 +3984,8 @@ void Sidebar::update_mixed_filament_list() auto* notify = wxGetApp().plater()->get_notification_manager(); if (notify) notify->push_notification(NotificationType::BBLMixedFilamentBroken, - NotificationManager::NotificationLevel::ErrorNotificationLevel, - _u8L("Mixed filament has invalid or mismatched components. Please re-edit affected entries.")); + NotificationManager::NotificationLevel::ErrorNotificationLevel, + _u8L("Mixed filament has invalid or mismatched components. Please re-edit affected entries.")); } else { auto* notify = wxGetApp().plater()->get_notification_manager(); if (notify) @@ -4057,7 +4006,7 @@ void Sidebar::update_mixed_filament_list() auto make_swatch_panel = [this](wxWindow* parent, const wxColour& col, unsigned int num) -> wxPanel* { int swatch_sz = FromDIP(20); - auto* panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(swatch_sz, swatch_sz)); + auto* panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(swatch_sz, swatch_sz)); panel->SetMinSize(wxSize(swatch_sz, swatch_sz)); bool is_dark = wxGetApp().dark_mode(); panel->Bind(wxEVT_PAINT, [panel, col, num, is_dark](wxPaintEvent&) { @@ -4079,13 +4028,14 @@ void Sidebar::update_mixed_filament_list() dc.SetFont(::Label::Body_14); wxSize txt_sz = dc.GetTextExtent(txt); dc.SetTextForeground(col.GetLuminance() > 0.5 ? wxColour(50, 58, 61) : *wxWHITE); - dc.DrawText(txt, (sz.GetWidth() - txt_sz.GetWidth()) / 2, (sz.GetHeight() - txt_sz.GetHeight()) / 2); + dc.DrawText(txt, (sz.GetWidth() - txt_sz.GetWidth()) / 2, + (sz.GetHeight() - txt_sz.GetHeight()) / 2); }); return panel; }; for (size_t i = 0; i < mixed_indices.size(); ++i) { - size_t cfg_idx = mixed_indices[i]; + size_t cfg_idx = mixed_indices[i]; auto* combo_and_btn_sizer = new wxBoxSizer(wxHORIZONTAL); combo_and_btn_sizer->Add(FromDIP(10), 0, 0, 0, 0); @@ -4109,13 +4059,15 @@ void Sidebar::update_mixed_filament_list() while (std::getline(iss, tok, ',')) { float v = 0; if (std::sscanf(tok.c_str(), "%f", &v) == 1) - comp_ratios.push_back((int) (v * 100 + 0.5f)); + comp_ratios.push_back((int)(v * 100 + 0.5f)); } } if (!comp_ids.empty() && comp_ratios.size() != comp_ids.size()) { - BOOST_LOG_TRIVIAL(warning) << "Mixed filament slot " << cfg_idx << ": ratio count (" << comp_ratios.size() - << ") != component count (" << comp_ids.size() << "), resetting to even distribution"; - int n = (int) comp_ids.size(); + BOOST_LOG_TRIVIAL(warning) << "Mixed filament slot " << cfg_idx + << ": ratio count (" << comp_ratios.size() + << ") != component count (" << comp_ids.size() + << "), resetting to even distribution"; + int n = (int)comp_ids.size(); comp_ratios.assign(n, 100 / n); comp_ratios[0] += 100 - (100 / n) * n; } @@ -4136,8 +4088,8 @@ void Sidebar::update_mixed_filament_list() } } - bool is_gradient = false; - int gradient_direction = 0; + bool is_gradient = false; + int gradient_direction = 0; if (grad_opt && cfg_idx < grad_opt->values.size()) is_gradient = grad_opt->values[cfg_idx]; if (is_gradient && grad_range_opt && cfg_idx < grad_range_opt->values.size()) { @@ -4147,18 +4099,20 @@ void Sidebar::update_mixed_filament_list() gradient_direction = (v0 > v1) ? 0 : 1; } - std::string mix_color_str = (colours_opt && cfg_idx < colours_opt->values.size()) ? colours_opt->values[cfg_idx] : "#888888"; + std::string mix_color_str = (colours_opt && cfg_idx < colours_opt->values.size()) + ? colours_opt->values[cfg_idx] : "#888888"; wxColour mix_col(mix_color_str); - unsigned int mix_num = (unsigned int) (cfg_idx + 1); + unsigned int mix_num = (unsigned int)(cfg_idx + 1); // The swatch fades bottom to top over the model's height, sampled the same way // the slicer builds the sublayers, so it matches the editor's Effect Preview. The // ramp comes back empty for every slot that is not a two component gradient mix. - const int swatch_sz = FromDIP(20); + const int swatch_sz = FromDIP(20); const std::vector gradient_ramp = mixed_gradient_ramp(project_config, cfg_idx, swatch_sz); if (!gradient_ramp.empty()) { - auto* grad_panel = new wxPanel(p->m_panel_mixed_content, wxID_ANY, wxDefaultPosition, wxSize(swatch_sz, swatch_sz)); + auto* grad_panel = new wxPanel(p->m_panel_mixed_content, wxID_ANY, + wxDefaultPosition, wxSize(swatch_sz, swatch_sz)); grad_panel->SetMinSize(wxSize(swatch_sz, swatch_sz)); grad_panel->SetBackgroundStyle(wxBG_STYLE_PAINT); grad_panel->Bind(wxEVT_PAINT, [grad_panel, gradient_ramp, mix_num](wxPaintEvent&) { @@ -4171,12 +4125,13 @@ void Sidebar::update_mixed_filament_list() // The number sits at the swatch's middle, so take its contrast from the // colour printed at mid height rather than from either endpoint. dc.SetTextForeground(gradient_ramp[gradient_ramp.size() / 2].GetLuminance() > 0.5 ? wxColour(50, 58, 61) : *wxWHITE); - dc.DrawText(txt, (sz.GetWidth() - txt_sz.GetWidth()) / 2, (sz.GetHeight() - txt_sz.GetHeight()) / 2); + dc.DrawText(txt, (sz.GetWidth() - txt_sz.GetWidth()) / 2, + (sz.GetHeight() - txt_sz.GetHeight()) / 2); }); combo_and_btn_sizer->Add(grad_panel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); } else { - combo_and_btn_sizer->Add(make_swatch_panel(p->m_panel_mixed_content, mix_col, mix_num), 0, - wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); + combo_and_btn_sizer->Add(make_swatch_panel(p->m_panel_mixed_content, mix_col, mix_num), + 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(4)); } auto* content_panel = new wxPanel(p->m_panel_mixed_content, wxID_ANY); @@ -4194,11 +4149,11 @@ void Sidebar::update_mixed_filament_list() // Build per-component colour list for the lambda std::vector cp_colours; - std::vector cp_valid; + std::vector cp_valid; std::vector cp_ids = comp_ids; - std::vector cp_ratios = comp_ratios; - bool cp_is_gradient = is_gradient; - int cp_gradient_dir = gradient_direction; + std::vector cp_ratios = comp_ratios; + bool cp_is_gradient = is_gradient; + int cp_gradient_dir = gradient_direction; for (size_t ci = 0; ci < comp_ids.size(); ++ci) { bool valid = (comp_ids[ci] >= 1 && comp_ids[ci] <= physical_colors.size()); cp_valid.push_back(valid); @@ -4207,16 +4162,17 @@ void Sidebar::update_mixed_filament_list() // Reorder for gradient display: from -> to std::vector draw_ids; - std::vector draw_ratios; - std::vector draw_colours; - std::vector draw_valid; + std::vector draw_ratios; + std::vector draw_colours; + std::vector draw_valid; if (cp_is_gradient && cp_ids.size() == 2) { - int fi = (cp_gradient_dir == 0) ? 0 : 1; - int ti = 1 - fi; - draw_ids = {cp_ids[fi], cp_ids[ti]}; - draw_ratios = {cp_ratios.size() > (size_t) fi ? cp_ratios[fi] : 0, cp_ratios.size() > (size_t) ti ? cp_ratios[ti] : 0}; - draw_colours = {cp_colours[fi], cp_colours[ti]}; - draw_valid = {cp_valid[fi], cp_valid[ti]}; + int fi = (cp_gradient_dir == 0) ? 0 : 1; + int ti = 1 - fi; + draw_ids = { cp_ids[fi], cp_ids[ti] }; + draw_ratios = { cp_ratios.size() > (size_t)fi ? cp_ratios[fi] : 0, + cp_ratios.size() > (size_t)ti ? cp_ratios[ti] : 0 }; + draw_colours = { cp_colours[fi], cp_colours[ti] }; + draw_valid = { cp_valid[fi], cp_valid[ti] }; } else { draw_ids = cp_ids; draw_ratios = cp_ratios; @@ -4224,9 +4180,11 @@ void Sidebar::update_mixed_filament_list() draw_valid = cp_valid; } - content_panel->Bind(wxEVT_PAINT, [content_panel, mc_bg, mc_border, mc_text, mc_dim, cp_pad, cp_swatch_sz, cp_sep_margin, - cp_pct_left, cp_gap, cp_pct_gap, cp_is_dark, cp_is_gradient, draw_ids, draw_ratios, - draw_colours, draw_valid](wxPaintEvent&) { + content_panel->Bind(wxEVT_PAINT, [content_panel, mc_bg, mc_border, mc_text, mc_dim, + cp_pad, cp_swatch_sz, cp_sep_margin, cp_pct_left, + cp_gap, cp_pct_gap, cp_is_dark, + cp_is_gradient, + draw_ids, draw_ratios, draw_colours, draw_valid](wxPaintEvent&) { wxBufferedPaintDC dc(content_panel); wxSize sz = content_panel->GetClientSize(); @@ -4235,22 +4193,24 @@ void Sidebar::update_mixed_filament_list() dc.DrawRectangle(0, 0, sz.GetWidth(), sz.GetHeight()); dc.SetFont(::Label::Body_13); - int x = cp_pad; - int y_swatch = (sz.GetHeight() - cp_swatch_sz) / 2; - int text_h = dc.GetTextExtent(wxT("A")).GetHeight(); - int y_text = y_swatch + (cp_swatch_sz - text_h) / 2; - int avail = sz.GetWidth() - cp_pad; + int x = cp_pad; + int y_swatch = (sz.GetHeight() - cp_swatch_sz) / 2; + int text_h = dc.GetTextExtent(wxT("A")).GetHeight(); + int y_text = y_swatch + (cp_swatch_sz - text_h) / 2; + int avail = sz.GetWidth() - cp_pad; wxString ellipsis = wxT("..."); - int ellipsis_w = dc.GetTextExtent(ellipsis).GetWidth(); + int ellipsis_w = dc.GetTextExtent(ellipsis).GetWidth(); - auto fits = [&](int needed) -> bool { return (x + needed) <= (avail - ellipsis_w); }; + auto fits = [&](int needed) -> bool { + return (x + needed) <= (avail - ellipsis_w); + }; size_t n = draw_ids.size(); for (size_t ci = 0; ci < n; ++ci) { // Separator: "+" or arrow if (ci > 0) { wxString sep = cp_is_gradient ? wxT("\u2192") : wxT("+"); - int sep_w = dc.GetTextExtent(sep).GetWidth() + cp_sep_margin * 2; + int sep_w = dc.GetTextExtent(sep).GetWidth() + cp_sep_margin * 2; if (!fits(sep_w + cp_swatch_sz)) { dc.SetTextForeground(mc_text); dc.DrawText(ellipsis, x, y_text); @@ -4284,27 +4244,29 @@ void Sidebar::update_mixed_filament_list() dc.DrawRectangle(x, y_swatch, cp_swatch_sz, cp_swatch_sz); } dc.SetFont(::Label::Body_14); - wxString num = wxString::Format("%u", draw_ids[ci]); + wxString num = wxString::Format("%u", draw_ids[ci]); wxSize num_sz = dc.GetTextExtent(num); dc.SetTextForeground(col.GetLuminance() > 0.5 ? wxColour(50, 58, 61) : *wxWHITE); - dc.DrawText(num, x + (cp_swatch_sz - num_sz.GetWidth()) / 2, y_swatch + (cp_swatch_sz - num_sz.GetHeight()) / 2); + dc.DrawText(num, x + (cp_swatch_sz - num_sz.GetWidth()) / 2, + y_swatch + (cp_swatch_sz - num_sz.GetHeight()) / 2); dc.SetFont(::Label::Body_13); } else { dc.SetBrush(wxBrush(mc_bg)); dc.SetPen(wxPen(mc_dim, 1)); dc.DrawRectangle(x, y_swatch, cp_swatch_sz, cp_swatch_sz); - wxString dash = wxT("\u2014"); + wxString dash = wxT("\u2014"); wxSize dash_sz = dc.GetTextExtent(dash); dc.SetTextForeground(mc_dim); - dc.DrawText(dash, x + (cp_swatch_sz - dash_sz.GetWidth()) / 2, y_swatch + (cp_swatch_sz - dash_sz.GetHeight()) / 2); + dc.DrawText(dash, x + (cp_swatch_sz - dash_sz.GetWidth()) / 2, + y_swatch + (cp_swatch_sz - dash_sz.GetHeight()) / 2); } x += cp_swatch_sz + cp_gap; // Ratio text (skip for gradient) if (!cp_is_gradient) { - int r = (ci < draw_ratios.size()) ? draw_ratios[ci] : 0; + int r = (ci < draw_ratios.size()) ? draw_ratios[ci] : 0; wxString pct = wxString::Format("%d%%", r); - int pct_w = dc.GetTextExtent(pct).GetWidth(); + int pct_w = dc.GetTextExtent(pct).GetWidth(); if (!fits(pct_w)) { dc.SetTextForeground(mc_text); dc.DrawText(ellipsis, x, y_text); @@ -4321,8 +4283,7 @@ void Sidebar::update_mixed_filament_list() { wxString tip; for (size_t ci = 0; ci < draw_ids.size(); ++ci) { - if (ci > 0) - tip += cp_is_gradient ? wxT(" \u2192 ") : wxT(" + "); + if (ci > 0) tip += cp_is_gradient ? wxT(" \u2192 ") : wxT(" + "); int r = (ci < draw_ratios.size()) ? draw_ratios[ci] : 0; tip += wxString::Format("%u (%d%%)", draw_ids[ci], r); } @@ -4341,19 +4302,22 @@ void Sidebar::update_mixed_filament_list() combo_and_btn_sizer->Add(content_panel, 1, wxALL | wxEXPAND, FromDIP(2))->SetMinSize({-1, FromDIP(30)}); - auto* menu_btn = new ScalableButton(p->m_panel_mixed_content, wxID_ANY, is_broken ? "error" : "menu_filament"); + auto* menu_btn = new ScalableButton(p->m_panel_mixed_content, wxID_ANY, + is_broken ? "error" : "menu_filament"); menu_btn->SetToolTip(is_broken ? _L("Mixed filament has broken component references") : _L("Edit / Delete / Merge")); menu_btn->Bind(wxEVT_BUTTON, [this, panel_idx, cfg_idx](wxCommandEvent&) { wxMenu menu; auto* edit_item = menu.Append(wxID_ANY, _L("Edit")); - menu.Bind(wxEVT_MENU, [this, panel_idx](wxCommandEvent&) { edit_mixed_filament(panel_idx); }, edit_item->GetId()); + menu.Bind(wxEVT_MENU, [this, panel_idx](wxCommandEvent&) { + edit_mixed_filament(panel_idx); + }, edit_item->GetId()); - wxMenu* sub_menu = new wxMenu(); + wxMenu* sub_menu = new wxMenu(); std::vector icons = get_extruder_color_icons(true); - int filaments_cnt = icons.size(); + int filaments_cnt = icons.size(); for (int j = 0; j < filaments_cnt; ++j) { - if ((size_t) j == cfg_idx) + if ((size_t)j == cfg_idx) continue; wxString item_name; @@ -4361,8 +4325,10 @@ void Sidebar::update_mixed_filament_list() if (is_target_mixed) { item_name = wxString::Format(_L("Filament %d"), j + 1); } else { - auto preset = wxGetApp().preset_bundle->filaments.find_preset(wxGetApp().preset_bundle->filament_presets[j]); - item_name = preset ? from_u8(preset->label(false)) : wxString::Format(_L("Filament %d"), j + 1); + auto preset = wxGetApp().preset_bundle->filaments.find_preset( + wxGetApp().preset_bundle->filament_presets[j]); + item_name = preset ? from_u8(preset->label(false)) + : wxString::Format(_L("Filament %d"), j + 1); } auto* mi = new wxMenuItem(sub_menu, wxID_ANY, item_name); @@ -4370,7 +4336,9 @@ void Sidebar::update_mixed_filament_list() mi->SetBitmap(*icons[j]); #endif sub_menu->Append(mi); - sub_menu->Bind(wxEVT_MENU, [this, cfg_idx, j](wxCommandEvent&) { change_filament(cfg_idx, j); }, mi->GetId()); + sub_menu->Bind(wxEVT_MENU, [this, cfg_idx, j](wxCommandEvent&) { + change_filament(cfg_idx, j); + }, mi->GetId()); } if (filaments_cnt > 1) menu.AppendSubMenu(sub_menu, _L("Merge with")); @@ -4381,7 +4349,9 @@ void Sidebar::update_mixed_filament_list() // ORCA use delete item on end of menu to prevent accidental clicks. clicking to submenus(merge) already not allowed by OS auto* del_item = menu.Append(wxID_ANY, _L("Delete")); - menu.Bind(wxEVT_MENU, [this, panel_idx](wxCommandEvent&) { delete_mixed_filament_at(panel_idx); }, del_item->GetId()); + menu.Bind(wxEVT_MENU, [this, panel_idx](wxCommandEvent&) { + delete_mixed_filament_at(panel_idx); + }, del_item->GetId()); PopupMenu(&menu); }); @@ -4389,10 +4359,9 @@ void Sidebar::update_mixed_filament_list() combo_and_btn_sizer->Add(FromDIP(16), 0, 0, 0, 0); - int side = i % 2; + int side = i % 2; auto* col = (side == 0) ? left_col : right_col; - if (side == 1 && i > 1) - col->Remove(i / 2); + if (side == 1 && i > 1) col->Remove(i / 2); col->Add(combo_and_btn_sizer, 1, wxEXPAND); if (side == 0 && i > 0) { right_col->AddStretchSpacer(1); @@ -4421,8 +4390,7 @@ void Sidebar::update_mixed_filament_list() p->m_mixed_filament_broken = false; if (!broken_slots.empty()) { std::set broken_1based; - for (size_t s : broken_slots) - broken_1based.insert(s + 1); + for (size_t s : broken_slots) broken_1based.insert(s + 1); auto* curr_plate = plater->get_partplate_list().get_curr_plate(); if (curr_plate) { @@ -4431,7 +4399,7 @@ void Sidebar::update_mixed_filament_list() continue; // Check object-level extruder int obj_ext = obj->config.has("extruder") ? obj->config.extruder() : 1; - if (broken_1based.count((size_t) obj_ext)) { + if (broken_1based.count((size_t)obj_ext)) { p->m_mixed_filament_broken = true; break; } @@ -4439,40 +4407,26 @@ void Sidebar::update_mixed_filament_list() for (auto* vol : obj->volumes) { // Check volume-level extruder int vol_ext = vol->config.has("extruder") ? vol->config.extruder() : obj_ext; - if (broken_1based.count((size_t) vol_ext)) { - found = true; - break; - } + if (broken_1based.count((size_t)vol_ext)) { found = true; break; } // Check color painting data (mmu segmentation facets) if (vol->is_model_part() && !vol->mmu_segmentation_facets.empty()) { for (size_t broken_slot : broken_1based) { - if (vol->mmu_segmentation_facets.has_facets(*vol, EnforcerBlockerType(broken_slot))) { - found = true; - break; - } + if (vol->mmu_segmentation_facets.has_facets(*vol, EnforcerBlockerType(broken_slot))) + { found = true; break; } } - if (found) - break; + if (found) break; } } - if (found) { - p->m_mixed_filament_broken = true; - break; - } + if (found) { p->m_mixed_filament_broken = true; break; } // Check height range modifier extruder overrides for (auto& [range, cfg] : obj->layer_config_ranges) { if (cfg.has("extruder")) { int layer_ext = cfg.option("extruder")->getInt(); - if (layer_ext > 0 && broken_1based.count((size_t) layer_ext)) { - found = true; - break; - } + if (layer_ext > 0 && broken_1based.count((size_t)layer_ext)) + { found = true; break; } } } - if (found) { - p->m_mixed_filament_broken = true; - break; - } + if (found) { p->m_mixed_filament_broken = true; break; } } } } @@ -4488,34 +4442,31 @@ void Sidebar::update_mixed_filament_list() mf->update_slice_print_status(MainFrame::eEventObjectUpdate, false); } - if (auto* tab = dynamic_cast(wxGetApp().plate_tab)) + if (auto *tab = dynamic_cast(wxGetApp().plate_tab)) tab->update_mixed_filament_seq_state(); + } bool Sidebar::has_broken_mixed_filament() const { auto* plater = dynamic_cast(GetParent()); - if (!plater) - return false; + if (!plater) return false; return has_broken_mixed_filament(plater->get_partplate_list().get_curr_plate()); } bool Sidebar::has_broken_mixed_filament(const PartPlate* plate) const { - if (!plate) - return false; + if (!plate) return false; auto* plater = dynamic_cast(GetParent()); - if (!plater) - return false; + if (!plater) return false; auto& project_config = wxGetApp().preset_bundle->project_config; - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - auto* comp_strs_opt = project_config.option("filament_mixed_components"); - if (!is_mixed_opt || !comp_strs_opt) - return false; + auto* is_mixed_opt = project_config.option("filament_is_mixed"); + auto* comp_strs_opt = project_config.option("filament_mixed_components"); + if (!is_mixed_opt || !comp_strs_opt) return false; size_t num_physical = p->combos_filament.size(); - auto broken_slots = check_mixed_filament_integrity(is_mixed_opt->values, comp_strs_opt->values, num_physical); + auto broken_slots = check_mixed_filament_integrity(is_mixed_opt->values, comp_strs_opt->values, num_physical); // Type consistency check { @@ -4530,20 +4481,18 @@ bool Sidebar::has_broken_mixed_filament(const PartPlate* plate) const ft = preset->config.get_filament_type(display_type); } } - if (ft.empty()) - ft = "PLA"; + if (ft.empty()) ft = "PLA"; physical_types.push_back(ft); } - auto type_mismatch_slots = check_mixed_filament_type_consistency(is_mixed_opt->values, comp_strs_opt->values, physical_types); + auto type_mismatch_slots = check_mixed_filament_type_consistency( + is_mixed_opt->values, comp_strs_opt->values, physical_types); broken_slots.insert(broken_slots.end(), type_mismatch_slots.begin(), type_mismatch_slots.end()); } - if (broken_slots.empty()) - return false; + if (broken_slots.empty()) return false; std::set broken_1based; - for (size_t s : broken_slots) - broken_1based.insert(s + 1); + for (size_t s : broken_slots) broken_1based.insert(s + 1); // Scan model objects on the given plate for raw extruder assignments // (don't use get_extruders() which expands mixed slots) @@ -4552,12 +4501,12 @@ bool Sidebar::has_broken_mixed_filament(const PartPlate* plate) const continue; // Check object-level extruder int obj_ext = entry->config.has("extruder") ? entry->config.extruder() : 1; - if (broken_1based.count((size_t) obj_ext)) + if (broken_1based.count((size_t)obj_ext)) return true; for (auto* vol : entry->volumes) { // Check volume-level extruder int vol_ext = vol->config.has("extruder") ? vol->config.extruder() : obj_ext; - if (broken_1based.count((size_t) vol_ext)) + if (broken_1based.count((size_t)vol_ext)) return true; // Check color painting data (mmu segmentation facets) if (vol->is_model_part() && !vol->mmu_segmentation_facets.empty()) { @@ -4571,7 +4520,7 @@ bool Sidebar::has_broken_mixed_filament(const PartPlate* plate) const for (auto& [range, cfg] : entry->layer_config_ranges) { if (cfg.has("extruder")) { int layer_ext = cfg.option("extruder")->getInt(); - if (layer_ext > 0 && broken_1based.count((size_t) layer_ext)) + if (layer_ext > 0 && broken_1based.count((size_t)layer_ext)) return true; } } @@ -4581,9 +4530,9 @@ bool Sidebar::has_broken_mixed_filament(const PartPlate* plate) const } void Sidebar::collect_physical_filament_info(std::vector& color_strs, - std::vector& names, - std::vector& types, - std::vector* config_indices) + std::vector& names, + std::vector& types, + std::vector* config_indices) { color_strs.clear(); names.clear(); @@ -4591,9 +4540,9 @@ void Sidebar::collect_physical_filament_info(std::vector& color_str if (config_indices) config_indices->clear(); - size_t num_physical = p->combos_filament.size(); + size_t num_physical = p->combos_filament.size(); auto& project_config = wxGetApp().preset_bundle->project_config; - auto* is_mixed_opt = project_config.option("filament_is_mixed"); + auto* is_mixed_opt = project_config.option("filament_is_mixed"); std::vector physical_indices; const size_t total = wxGetApp().preset_bundle->filament_presets.size(); physical_indices.reserve(num_physical); @@ -4623,7 +4572,7 @@ void Sidebar::collect_physical_filament_info(std::vector& color_str auto& preset_bundle = *wxGetApp().preset_bundle; for (size_t i = 0; i < num_physical; ++i) { const size_t cfg_idx = physical_indices[i]; - Preset* preset = nullptr; + Preset* preset = nullptr; if (cfg_idx < preset_bundle.filament_presets.size()) preset = preset_bundle.filaments.find_preset(preset_bundle.filament_presets[cfg_idx]); std::string ft; @@ -4631,8 +4580,7 @@ void Sidebar::collect_physical_filament_info(std::vector& color_str std::string display_type; ft = preset->config.get_filament_type(display_type); } - if (ft.empty()) - ft = "PLA"; + if (ft.empty()) ft = "PLA"; types.push_back(ft); } } @@ -4648,19 +4596,22 @@ static std::string serialize_mixed_gradient_curve_if_custom(const MixedFilamentR if (!(result.components.size() == 2 && !result.gradient_curve.empty())) return {}; - const double y0 = (result.gradient_direction == 0) ? kGradientMaxRatio : kGradientMinRatio; - const double y1 = (result.gradient_direction == 0) ? kGradientMinRatio : kGradientMaxRatio; + const double y0 = (result.gradient_direction == 0) ? kGradientMaxRatio : kGradientMinRatio; + const double y1 = (result.gradient_direction == 0) ? kGradientMinRatio : kGradientMaxRatio; const double eps = 1e-4; if (result.gradient_curve.size() == 2) { const auto& a0 = result.gradient_curve[0]; const auto& a1 = result.gradient_curve[1]; // Default curve also requires no tangent overrides; any finite tangent // means the user bent the segment, so we must serialize it. - const bool is_default = std::abs(a0.x - 0.0) < eps && std::abs(a1.x - 1.0) < eps && std::abs(a0.y - y0) < eps && - std::abs(a1.y - y1) < eps && !std::isfinite(a0.m_in) && !std::isfinite(a0.m_out) && - !std::isfinite(a1.m_in) && !std::isfinite(a1.m_out); - if (is_default) - return {}; + const bool is_default = + std::abs(a0.x - 0.0) < eps + && std::abs(a1.x - 1.0) < eps + && std::abs(a0.y - y0) < eps + && std::abs(a1.y - y1) < eps + && !std::isfinite(a0.m_in) && !std::isfinite(a0.m_out) + && !std::isfinite(a1.m_in) && !std::isfinite(a1.m_out); + if (is_default) return {}; } Slic3r::GradientCurve gc; @@ -4668,9 +4619,10 @@ static std::string serialize_mixed_gradient_curve_if_custom(const MixedFilamentR return Slic3r::serialize_gradient_curve(gc); } -static bool create_mixed_filament_from_result(Sidebar* sidebar, - const MixedFilamentResult& result, - const std::vector& color_strs) +static bool create_mixed_filament_from_result( + Sidebar* sidebar, + const MixedFilamentResult& result, + const std::vector& color_strs) { if (!sidebar || result.components.size() < 2 || result.ratios.size() < 2) return false; @@ -4684,16 +4636,15 @@ static bool create_mixed_filament_from_result(Sidebar* sidebar, return false; auto& project_config = wxGetApp().preset_bundle->project_config; - size_t total = wxGetApp().preset_bundle->filament_presets.size(); - size_t new_idx = total; + size_t total = wxGetApp().preset_bundle->filament_presets.size(); + size_t new_idx = total; std::string mixed_color = blend_mixed_color(result.components, result.ratios, color_strs); wxGetApp().preset_bundle->set_num_filaments(total + 1, mixed_color); auto* multi_colour_opt = project_config.option("filament_multi_colour"); if (multi_colour_opt) { - while (multi_colour_opt->values.size() <= new_idx) - multi_colour_opt->values.push_back(""); + while (multi_colour_opt->values.size() <= new_idx) multi_colour_opt->values.push_back(""); multi_colour_opt->values[new_idx] = mixed_color; } @@ -4701,69 +4652,60 @@ static bool create_mixed_filament_from_result(Sidebar* sidebar, // size-guarded so a sizing bug degrades into a no-op rather than a heap overwrite. { auto* is_mixed_opt = project_config.option("filament_is_mixed"); - while (is_mixed_opt->values.size() <= new_idx) - is_mixed_opt->values.push_back(false); + while (is_mixed_opt->values.size() <= new_idx) is_mixed_opt->values.push_back(false); is_mixed_opt->values[new_idx] = true; } std::string comp_str; for (size_t i = 0; i < result.components.size(); ++i) { - if (i > 0) - comp_str += ","; + if (i > 0) comp_str += ","; comp_str += std::to_string(result.components[i]); } { auto* comp_opt = project_config.option("filament_mixed_components"); - while (comp_opt->values.size() <= new_idx) - comp_opt->values.push_back(std::string{}); + while (comp_opt->values.size() <= new_idx) comp_opt->values.push_back(std::string{}); comp_opt->values[new_idx] = comp_str; } int ratio_sum = 0; - for (int r : result.ratios) - ratio_sum += r; - if (ratio_sum <= 0) - ratio_sum = 100; + for (int r : result.ratios) ratio_sum += r; + if (ratio_sum <= 0) ratio_sum = 100; std::string ratio_str; { CNumericLocalesSetter c_locale_setter; for (size_t i = 0; i < result.ratios.size(); ++i) { - if (i > 0) - ratio_str += ","; + if (i > 0) ratio_str += ","; char buf[32]; - std::snprintf(buf, sizeof(buf), "%.4f", (float) result.ratios[i] / ratio_sum); + std::snprintf(buf, sizeof(buf), "%.4f", (float)result.ratios[i] / ratio_sum); ratio_str += buf; } } { auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); - while (ratios_opt->values.size() <= new_idx) - ratios_opt->values.push_back(std::string{}); + while (ratios_opt->values.size() <= new_idx) ratios_opt->values.push_back(std::string{}); ratios_opt->values[new_idx] = ratio_str; } if (!project_config.option("filament_mixed_gradient")) project_config.set_key_value("filament_mixed_gradient", new ConfigOptionBools({false})); if (!project_config.option("filament_mixed_gradient_range")) - project_config.set_key_value("filament_mixed_gradient_range", new ConfigOptionStrings({""})); + project_config.set_key_value("filament_mixed_gradient_range", new ConfigOptionStrings({""}) ); if (!project_config.option("filament_mixed_gradient_curve")) - project_config.set_key_value("filament_mixed_gradient_curve", new ConfigOptionStrings({""})); + project_config.set_key_value("filament_mixed_gradient_curve", new ConfigOptionStrings({""}) ); if (!project_config.option("filament_mixed_gradient_per_part")) project_config.set_key_value("filament_mixed_gradient_per_part", new ConfigOptionBools({false})); { auto* grad_opt = project_config.option("filament_mixed_gradient"); - while (grad_opt->values.size() <= new_idx) - grad_opt->values.push_back(false); + while (grad_opt->values.size() <= new_idx) grad_opt->values.push_back(false); grad_opt->values[new_idx] = result.gradient_enabled; } { auto* grad_range_opt = project_config.option("filament_mixed_gradient_range"); - while (grad_range_opt->values.size() <= new_idx) - grad_range_opt->values.push_back(""); + while (grad_range_opt->values.size() <= new_idx) grad_range_opt->values.push_back(""); if (result.gradient_enabled && result.components.size() == 2) { - const char* fmt = (result.gradient_direction == 0) ? "0.9000,0.1000" : "0.1000,0.9000"; + const char* fmt = (result.gradient_direction == 0) ? "0.9000,0.1000" : "0.1000,0.9000"; grad_range_opt->values[new_idx] = fmt; } else { grad_range_opt->values[new_idx] = ""; @@ -4771,14 +4713,12 @@ static bool create_mixed_filament_from_result(Sidebar* sidebar, } { auto* grad_curve_opt = project_config.option("filament_mixed_gradient_curve"); - while (grad_curve_opt->values.size() <= new_idx) - grad_curve_opt->values.push_back(""); + while (grad_curve_opt->values.size() <= new_idx) grad_curve_opt->values.push_back(""); grad_curve_opt->values[new_idx] = serialize_mixed_gradient_curve_if_custom(result); } { auto* per_part_opt = project_config.option("filament_mixed_gradient_per_part"); - while (per_part_opt->values.size() <= new_idx) - per_part_opt->values.push_back(false); + while (per_part_opt->values.size() <= new_idx) per_part_opt->values.push_back(false); per_part_opt->values[new_idx] = result.gradient_enabled && result.per_part_gradient; } @@ -4801,14 +4741,11 @@ static bool create_mixed_filament_from_result(Sidebar* sidebar, void Sidebar::add_mixed_filament() { auto* plater = dynamic_cast(GetParent()); - if (!plater) - return; + if (!plater) return; size_t num_physical = p->combos_filament.size(); - if (num_physical < 2) - return; - if (wxGetApp().preset_bundle->filament_presets.size() >= size_t(EnforcerBlockerType::ExtruderMax)) - return; + if (num_physical < 2) return; + if (wxGetApp().preset_bundle->filament_presets.size() >= size_t(EnforcerBlockerType::ExtruderMax)) return; std::vector color_strs, names, types; collect_physical_filament_info(color_strs, names, types); @@ -4823,12 +4760,10 @@ void Sidebar::add_mixed_filament() void Sidebar::edit_mixed_filament(size_t panel_idx) { auto* plater = dynamic_cast(GetParent()); - if (!plater) - return; + if (!plater) return; auto mixed_indices = plater->mixed_filament_config_indices(); - if (panel_idx >= mixed_indices.size()) - return; + if (panel_idx >= mixed_indices.size()) return; size_t cfg_idx = mixed_indices[panel_idx]; std::vector color_strs, names, types; @@ -4837,7 +4772,7 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) auto& project_config = wxGetApp().preset_bundle->project_config; MixedFilamentResult existing; auto* components_opt = project_config.option("filament_mixed_components"); - auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); + auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); // Parse existing components if (components_opt && cfg_idx < components_opt->values.size()) { @@ -4859,16 +4794,18 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) while (std::getline(iss, tok, ',')) { float v = 0; if (std::sscanf(tok.c_str(), "%f", &v) == 1) - existing.ratios.push_back((int) (v * 100 + 0.5f)); + existing.ratios.push_back((int)(v * 100 + 0.5f)); } } if (existing.components.size() < 2) { existing.components = {1, 2}; - existing.ratios = {50, 50}; + existing.ratios = {50, 50}; } else if (existing.ratios.size() != existing.components.size()) { - BOOST_LOG_TRIVIAL(warning) << "Mixed filament edit: ratio count (" << existing.ratios.size() << ") != component count (" - << existing.components.size() << "), resetting to even distribution"; - int n = (int) existing.components.size(); + BOOST_LOG_TRIVIAL(warning) << "Mixed filament edit: ratio count (" + << existing.ratios.size() << ") != component count (" + << existing.components.size() + << "), resetting to even distribution"; + int n = (int)existing.components.size(); existing.ratios.assign(n, 100 / n); existing.ratios[0] += 100 - (100 / n) * n; } @@ -4886,7 +4823,7 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) } auto* grad_curve_opt = project_config.option("filament_mixed_gradient_curve"); if (existing.gradient_enabled && grad_curve_opt && cfg_idx < grad_curve_opt->values.size()) { - auto curve = Slic3r::parse_gradient_curve(grad_curve_opt->values[cfg_idx]); + auto curve = Slic3r::parse_gradient_curve(grad_curve_opt->values[cfg_idx]); existing.gradient_curve = curve.points; } auto* per_part_opt = project_config.option("filament_mixed_gradient_per_part"); @@ -4896,33 +4833,28 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) MixedFilamentDialog dlg(this, existing, color_strs, names, types); if (dlg.ShowModal() == wxID_OK) { auto result = dlg.get_result(); - if (result.components.size() < 2 || result.ratios.size() < 2) - return; + if (result.components.size() < 2 || result.ratios.size() < 2) return; // Serialize components std::string comp_str; for (size_t i = 0; i < result.components.size(); ++i) { - if (i > 0) - comp_str += ","; + if (i > 0) comp_str += ","; comp_str += std::to_string(result.components[i]); } components_opt->values[cfg_idx] = comp_str; // Serialize ratios int ratio_sum = 0; - for (int r : result.ratios) - ratio_sum += r; - if (ratio_sum <= 0) - ratio_sum = 100; + for (int r : result.ratios) ratio_sum += r; + if (ratio_sum <= 0) ratio_sum = 100; std::string ratio_str; { CNumericLocalesSetter c_locale_setter; for (size_t i = 0; i < result.ratios.size(); ++i) { - if (i > 0) - ratio_str += ","; + if (i > 0) ratio_str += ","; char buf[32]; - std::snprintf(buf, sizeof(buf), "%.4f", (float) result.ratios[i] / ratio_sum); + std::snprintf(buf, sizeof(buf), "%.4f", (float)result.ratios[i] / ratio_sum); ratio_str += buf; } } @@ -4932,24 +4864,22 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) if (!project_config.option("filament_mixed_gradient")) project_config.set_key_value("filament_mixed_gradient", new ConfigOptionBools({false})); if (!project_config.option("filament_mixed_gradient_range")) - project_config.set_key_value("filament_mixed_gradient_range", new ConfigOptionStrings({""})); + project_config.set_key_value("filament_mixed_gradient_range", new ConfigOptionStrings({""}) ); if (!project_config.option("filament_mixed_gradient_curve")) - project_config.set_key_value("filament_mixed_gradient_curve", new ConfigOptionStrings({""})); + project_config.set_key_value("filament_mixed_gradient_curve", new ConfigOptionStrings({""}) ); if (!project_config.option("filament_mixed_gradient_per_part")) project_config.set_key_value("filament_mixed_gradient_per_part", new ConfigOptionBools({false})); { auto* grad_opt = project_config.option("filament_mixed_gradient"); - while (grad_opt->values.size() <= cfg_idx) - grad_opt->values.push_back(false); + while (grad_opt->values.size() <= cfg_idx) grad_opt->values.push_back(false); grad_opt->values[cfg_idx] = result.gradient_enabled; } { auto* grad_range_opt = project_config.option("filament_mixed_gradient_range"); - while (grad_range_opt->values.size() <= cfg_idx) - grad_range_opt->values.push_back(""); + while (grad_range_opt->values.size() <= cfg_idx) grad_range_opt->values.push_back(""); if (result.gradient_enabled && result.components.size() == 2) { - const char* fmt = (result.gradient_direction == 0) ? "0.9000,0.1000" : "0.1000,0.9000"; + const char* fmt = (result.gradient_direction == 0) ? "0.9000,0.1000" : "0.1000,0.9000"; grad_range_opt->values[cfg_idx] = fmt; } else { grad_range_opt->values[cfg_idx] = ""; @@ -4957,20 +4887,18 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) } { auto* grad_curve_opt = project_config.option("filament_mixed_gradient_curve"); - while (grad_curve_opt->values.size() <= cfg_idx) - grad_curve_opt->values.push_back(""); + while (grad_curve_opt->values.size() <= cfg_idx) grad_curve_opt->values.push_back(""); grad_curve_opt->values[cfg_idx] = serialize_mixed_gradient_curve_if_custom(result); } { auto* per_part_opt = project_config.option("filament_mixed_gradient_per_part"); - while (per_part_opt->values.size() <= cfg_idx) - per_part_opt->values.push_back(false); + while (per_part_opt->values.size() <= cfg_idx) per_part_opt->values.push_back(false); per_part_opt->values[cfg_idx] = result.gradient_enabled && result.per_part_gradient; } // Compute blended color std::string blended = blend_mixed_color(result.components, result.ratios, color_strs); - auto* colours_opt = project_config.option("filament_colour"); + auto* colours_opt = project_config.option("filament_colour"); if (colours_opt && cfg_idx < colours_opt->values.size()) colours_opt->values[cfg_idx] = blended; @@ -4990,12 +4918,10 @@ void Sidebar::edit_mixed_filament(size_t panel_idx) void Sidebar::delete_mixed_filament_at(size_t panel_idx) { auto* plater = dynamic_cast(GetParent()); - if (!plater) - return; + if (!plater) return; auto mixed_indices = plater->mixed_filament_config_indices(); - if (panel_idx >= mixed_indices.size()) - return; + if (panel_idx >= mixed_indices.size()) return; size_t cfg_idx = mixed_indices[panel_idx]; delete_filament(cfg_idx, -1); @@ -5009,7 +4935,7 @@ void Sidebar::decompose_filament_color(int filament_idx) return; auto& project_config = wxGetApp().preset_bundle->project_config; - auto* colours_opt = project_config.option("filament_colour"); + auto* colours_opt = project_config.option("filament_colour"); if (!colours_opt || static_cast(filament_idx) >= colours_opt->values.size()) return; @@ -5027,7 +4953,8 @@ void Sidebar::decompose_filament_color(int filament_idx) auto& pb = *wxGetApp().preset_bundle; for (size_t i = 0; i < physical_config_indices.size(); ++i) { const size_t ci = physical_config_indices[i]; - Preset* pr = (ci < pb.filament_presets.size()) ? pb.filaments.find_preset(pb.filament_presets[ci]) : nullptr; + Preset* pr = (ci < pb.filament_presets.size()) + ? pb.filaments.find_preset(pb.filament_presets[ci]) : nullptr; decompose_types.push_back(filament_type_for_color_decompose(pr)); } } @@ -5040,16 +4967,19 @@ void Sidebar::decompose_filament_color(int filament_idx) } } - ColorDecomposeDialog dlg(this, source_physical_idx == size_t(-1) ? -1 : static_cast(source_physical_idx), target_color, color_strs, - names, decompose_types, wxGetApp().preset_bundle->filament_presets.size(), - static_cast(EnforcerBlockerType::ExtruderMax), physical_config_indices); + ColorDecomposeDialog dlg(this, + source_physical_idx == size_t(-1) ? -1 : static_cast(source_physical_idx), + target_color, color_strs, names, decompose_types, + wxGetApp().preset_bundle->filament_presets.size(), + static_cast(EnforcerBlockerType::ExtruderMax), + physical_config_indices); int modal_res = dlg.ShowModal(); if (modal_res == wxID_OK) { ColorDecomposeResult dialog_result = dlg.get_result(); MixedFilamentResult mixed_result; std::vector missing_components; - if (!prepare_decompose_mixed_result(dialog_result, static_cast(filament_idx), source_physical_idx, color_strs, - decompose_types, physical_config_indices, mixed_result, missing_components)) + if (!prepare_decompose_mixed_result(dialog_result, static_cast(filament_idx), source_physical_idx, + color_strs, decompose_types, physical_config_indices, mixed_result, missing_components)) return; if (!confirm_create_decompose_missing_components(this, missing_components)) @@ -5080,7 +5010,7 @@ void Sidebar::update_filaments_area_height() // ORCA use a height with user preference auto left_sizer = p->sizer_filaments->GetItem((size_t) 0)->GetSizer(); auto combo_sizer = left_sizer->GetItem((size_t) 0)->GetSizer(); - int preferred_rows = std::ceil(0.5 * std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count"))); + int preferred_rows = std::ceil(0.5 * std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count"))); auto height_with_borders = combo_sizer->GetSize().GetHeight(); // gets height from sizer instead static numbers p->m_panel_filament_content->SetMaxSize(wxSize{-1, preferred_rows * height_with_borders}); @@ -5096,18 +5026,18 @@ void Sidebar::update_filaments_area_height() void Sidebar::update_filaments_counter(bool force_layout) // ORCA { - int current_count = p->combos_filament.size(); - int preferred_count = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - bool isShown = p->m_panel_filament_content->IsShown(); - auto counter = p->m_staticText_filament_count; + int current_count = p->combos_filament.size(); + int preferred_count = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); + bool isShown = p->m_panel_filament_content->IsShown(); + auto counter = p->m_staticText_filament_count; counter->SetLabel("(" + std::to_string(current_count) + ")"); // update counter on every change - if (current_count > preferred_count || !isShown) + if(current_count > preferred_count || !isShown) counter->Show(); else if (isShown) // hide when list is visible and short enough counter->Hide(); - if (force_layout) + if(force_layout) m_scrolled_sizer->Layout(); } @@ -5115,7 +5045,8 @@ void Sidebar::msw_rescale() { SetMinSize(wxSize(39 * wxGetApp().em_unit(), -1)); p->m_panel_printer_title->GetSizer()->SetMinSize(-1, 3 * wxGetApp().em_unit()); - p->m_panel_filament_title->GetSizer()->SetMinSize(-1, 3 * wxGetApp().em_unit()); + p->m_panel_filament_title->GetSizer() + ->SetMinSize(-1, 3 * wxGetApp().em_unit()); p->m_printer_icon->msw_rescale(); p->m_printer_connect->msw_rescale(); p->m_printer_bbl_sync->msw_rescale(); @@ -5137,15 +5068,14 @@ void Sidebar::msw_rescale() p->panel_printer_bed->SetMinSize(FromDIP(PRINTER_PANEL_SIZE)); p->panel_printer_bed->SetCornerRadius(FromDIP(PRINTER_PANEL_RADIUS)); p->combo_printer_bed->Rescale(); - p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18, -1))); // ORCA show only arrow - p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18, -1))); // ORCA show only arrow - bool isDual = static_cast(p->panel_printer_preset->GetSizer())->GetOrientation() == wxVERTICAL; + p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow + p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow + bool isDual = static_cast(p->panel_printer_preset->GetSizer())->GetOrientation() == wxVERTICAL; auto image_path = get_cur_select_bed_image(); p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight())); - if (p->big_bed_image_popup) { // ORCA force rebuild frame. current wxwidget version not supports wxBITMAP_SCALE_FILL flag on - // wxStaticBitmap also wxImage scaledImage = bit_map.ConvertToImage(); - // scaledImage.Rescale(FromDIP(m_image_px), FromDIP(m_image_px), wxIMAGE_QUALITY_HIGH); didnt worked as - // expected and it requires use on set_bitmap. so that will try to scale everytime + if (p->big_bed_image_popup){ // ORCA force rebuild frame. current wxwidget version not supports wxBITMAP_SCALE_FILL flag on wxStaticBitmap + // also wxImage scaledImage = bit_map.ConvertToImage(); scaledImage.Rescale(FromDIP(m_image_px), FromDIP(m_image_px), wxIMAGE_QUALITY_HIGH); + // didnt worked as expected and it requires use on set_bitmap. so that will try to scale everytime p->big_bed_image_popup->Destroy(); p->big_bed_image_popup = nullptr; } @@ -5159,25 +5089,25 @@ void Sidebar::msw_rescale() p->m_flushing_volume_btn->Rescale(); set_flushing_volume_warning(is_flush_config_modified()); // ORCA reapply appearance - // BBS + //BBS p->left_extruder->Rescale(); p->right_extruder->Rescale(); p->single_extruder->Rescale(); - // p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)}); - // p->btn_sync_printer->SetMinSize(BTN_SYNC_SIZE); - // p->btn_sync_printer->Rescale(); + //p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)}); + //p->btn_sync_printer->SetMinSize(BTN_SYNC_SIZE); + //p->btn_sync_printer->Rescale(); #if 0 if (p->mode_sizer) p->mode_sizer->msw_rescale(); #endif - // for (PlaterPresetComboBox* combo : std::vector { p->combo_print, - // //p->combo_sla_print, - // //p->combo_sla_material, - // //p->combo_printer - // } ) - // combo->msw_rescale(); + //for (PlaterPresetComboBox* combo : std::vector { p->combo_print, + // //p->combo_sla_print, + // //p->combo_sla_material, + // //p->combo_printer + // } ) + // combo->msw_rescale(); for (PlaterPresetComboBox* combo : p->combos_filament) combo->msw_rescale(); @@ -5186,11 +5116,11 @@ void Sidebar::msw_rescale() update_filaments_area_height(); // ORCA resize after combos scaled // BBS - // p->frequently_changed_parameters->msw_rescale(); - // obj_list()->msw_rescale(); + //p->frequently_changed_parameters->msw_rescale(); + //obj_list()->msw_rescale(); // BBS TODO: add msw_rescale for newly added windows // BBS - // p->object_manipulation->msw_rescale(); + //p->object_manipulation->msw_rescale(); p->object_settings->msw_rescale(); p->m_search_item->Rescale(); p->m_search_item->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(16))); @@ -5228,7 +5158,7 @@ void Sidebar::sys_color_changed() for (wxWindow* win : std::vector{ p->scrolled, p->presets_panel }) wxGetApp().UpdateAllStaticTextDarkUI(win); #endif - // p->btn_sync_printer->SetIcon("printer_sync"); + //p->btn_sync_printer->SetIcon("printer_sync"); p->m_printer_bbl_sync->msw_rescale(); p->m_printer_connect->msw_rescale(); // for (wxWindow* btn : std::vector{ p->btn_reslice, p->btn_export_gcode }) @@ -5253,7 +5183,7 @@ void Sidebar::sys_color_changed() #endif p->object_settings->sys_color_changed(); - // BBS: remove print related combos + //BBS: remove print related combos #if 0 for (PlaterPresetComboBox* combo : std::vector{ p->combo_print, p->combo_sla_print, @@ -5272,12 +5202,12 @@ void Sidebar::sys_color_changed() p->image_printer->SetSize(FromDIP(PRINTER_THUMBNAIL_SIZE)); p->image_printer_bed->SetSize(FromDIP(PRINTER_THUMBNAIL_SIZE)); - for (ExtruderGroup* ext : {p->left_extruder, p->right_extruder, p->single_extruder}) + for (ExtruderGroup *ext : {p->left_extruder, p->right_extruder, p->single_extruder}) if (ext) ext->sys_color_changed(); // call a kill focus event to ensure new colors applied - for (ComboBox* combo : std::vector{p->combo_printer, p->combo_nozzle_dia, p->combo_printer_bed}) { + for (ComboBox* combo : std::vector{p->combo_printer, p->combo_nozzle_dia, p->combo_printer_bed}){ wxFocusEvent fakeEvent(wxEVT_KILL_FOCUS); fakeEvent.SetEventObject(combo); combo->HandleWindowEvent(fakeEvent); @@ -5287,12 +5217,12 @@ void Sidebar::sys_color_changed() obj_list()->sys_color_changed(); obj_layers()->sys_color_changed(); // BBS - // p->object_manipulation->sys_color_changed(); + //p->object_manipulation->sys_color_changed(); // btn...->msw_rescale() updates icon on button, so use it - // p->btn_send_gcode->msw_rescale(); - // p->btn_eject_device->msw_rescale(); - // p->btn_export_gcode_removable->msw_rescale(); + //p->btn_send_gcode->msw_rescale(); +// p->btn_eject_device->msw_rescale(); + //p->btn_export_gcode_removable->msw_rescale(); p->scrolled->Layout(); @@ -5302,11 +5232,14 @@ void Sidebar::sys_color_changed() p->searcher.dlg_sys_color_changed(); } -void Sidebar::search() { p->searcher.search(); } +void Sidebar::search() +{ + p->searcher.search(); +} void Sidebar::jump_to_option(const std::string& opt_key, Preset::Type type, const std::wstring& category) { - // const Search::Option& opt = p->searcher.get_option(opt_key, type); + //const Search::Option& opt = p->searcher.get_option(opt_key, type); if (type == Preset::TYPE_PRINT) { auto tab = dynamic_cast(wxGetApp().params_panel()->get_current_tab()); if (tab && tab->has_key(opt_key)) { @@ -5324,7 +5257,7 @@ void Sidebar::jump_to_option(size_t selected) jump_to_option(opt.opt_key(), opt.type, opt.category); // Switch to the Settings NotePad - // wxGetApp().mainframe->select_tab(); +// wxGetApp().mainframe->select_tab(); } // BBS. Move logic from Plater::on_extruders_change() to Sidebar::on_filament_count_change(). @@ -5334,7 +5267,7 @@ void Sidebar::on_filament_count_change(size_t num_filaments) // their own (they are rendered by update_mixed_filament_list instead), so the physical // subset drives the combo list. auto& project_config = wxGetApp().preset_bundle->project_config; - auto* is_mixed_opt = project_config.option("filament_is_mixed"); + auto* is_mixed_opt = project_config.option("filament_is_mixed"); std::vector physical_indices; for (size_t i = 0; i < num_filaments; ++i) { @@ -5362,8 +5295,9 @@ void Sidebar::on_filament_count_change(size_t num_filaments) wxWindowUpdateLocker noUpdates_scrolled_panel(this); size_t i = choices.size(); - while (i < num_physical) { - PlaterPresetComboBox* choice /*{ nullptr }*/; + while (i < num_physical) + { + PlaterPresetComboBox* choice/*{ nullptr }*/; init_filament_combo(&choice, physical_indices[i]); int last_selection = choices.back()->GetSelection(); choices.push_back(choice); @@ -5379,7 +5313,7 @@ void Sidebar::on_filament_count_change(size_t num_filaments) show_SEMM_buttons(); // ORCA - update_filaments_area_height(); // ORCA + update_filaments_area_height(); // ORCA recalc_filament_scroll_sizes(); update_mixed_filament_list(); @@ -5391,7 +5325,7 @@ void Sidebar::on_filament_count_change(size_t num_filaments) void Sidebar::on_filaments_delete(size_t filament_id) { - auto& choices = combos_filament(); + auto &choices = combos_filament(); // A mixed (virtual) slot has no combo of its own, so there is no combo UI to remove — // but the shared refresh below must still run so the mixed filament panel drops its row. @@ -5403,8 +5337,8 @@ void Sidebar::on_filaments_delete(size_t filament_id) // delete UI item { - const int last = p->combos_filament.size() - 1; - auto sizer_filaments = this->p->sizer_filaments->GetItem(last % 2)->GetSizer(); + const int last = p->combos_filament.size() - 1; + auto sizer_filaments = this->p->sizer_filaments->GetItem(last % 2)->GetSizer(); sizer_filaments->Remove(last / 2); PlaterPresetComboBox* to_delete_combox = p->combos_filament[filament_id]; @@ -5428,7 +5362,7 @@ void Sidebar::on_filaments_delete(size_t filament_id) show_SEMM_buttons(); // ORCA - for (size_t idx = filament_id; idx < p->combos_filament.size(); ++idx) { + for (size_t idx = filament_id ; idx < p->combos_filament.size(); ++idx) { p->combos_filament[idx]->update(); } } @@ -5443,28 +5377,22 @@ void Sidebar::on_filaments_delete(size_t filament_id) update_dynamic_filament_list(); } -void Sidebar::add_filament() -{ - if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) - return; - wxColour new_col = Plater::get_next_color_for_filament(); +void Sidebar::add_filament() { + if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; + wxColour new_col = Plater::get_next_color_for_filament(); add_custom_filament(new_col); auto filament_list = p->m_panel_filament_content; - if (!filament_list->IsShown()) { + if(!filament_list->IsShown()){ filament_list->Show(); // ORCA show list if its folded m_scrolled_sizer->Layout(); } filament_list->Scroll(-1, INT_MAX); // ORCA scroll to end of list on changes to inform user about filament count } -void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) -{ - if (is_new_project_in_gcode3mf()) { - return; - } - if (p->combos_filament.size() <= 1) - return; +void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) { + if (is_new_project_in_gcode3mf()) { return; } + if (p->combos_filament.size() <= 1) return; size_t filament_count = p->combos_filament.size() - 1; if (filament_id == size_t(-2)) { @@ -5505,16 +5433,14 @@ void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) // new number of slots; recompute from the shrunk preset list for the downstream updates. size_t total_after_delete = wxGetApp().preset_bundle->filament_presets.size(); wxGetApp().plater()->get_partplate_list().on_filament_deleted(total_after_delete, filament_id); - wxGetApp().plater()->on_filaments_delete(total_after_delete, filament_id, - replace_filament_id > (int) filament_id ? (replace_filament_id - 1) : replace_filament_id, - is_mixed_snapshot); + wxGetApp().plater()->on_filaments_delete(total_after_delete, filament_id, replace_filament_id > (int)filament_id ? (replace_filament_id - 1) : replace_filament_id, is_mixed_snapshot); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); wxGetApp().plater()->update(); auto filament_list = p->m_panel_filament_content; - if (!filament_list->IsShown()) { + if(!filament_list->IsShown()){ filament_list->Show(); // ORCA show list if its folded m_scrolled_sizer->Layout(); } @@ -5526,16 +5452,16 @@ void Sidebar::change_filament(size_t from_id, size_t to_id) { // Merging a physical filament into a mixed one that lists it as a component would delete // the very filament the mix depends on, leaving it broken. Warn before doing so. - auto& pb = *wxGetApp().preset_bundle; + auto& pb = *wxGetApp().preset_bundle; bool from_is_physical = !pb.is_mixed_filament(from_id); - bool to_is_mixed = pb.is_mixed_filament(to_id); + bool to_is_mixed = pb.is_mixed_filament(to_id); if (from_is_physical && to_is_mixed) { auto* comp_opt = pb.project_config.option("filament_mixed_components"); if (comp_opt && to_id < comp_opt->values.size()) { - auto comps = Slic3r::parse_mixed_components(comp_opt->values[to_id]); - unsigned int from_1based = (unsigned int) from_id + 1; - bool target_uses_source = false; + auto comps = Slic3r::parse_mixed_components(comp_opt->values[to_id]); + unsigned int from_1based = (unsigned int)from_id + 1; + bool target_uses_source = false; for (unsigned int c : comps) { if (c == from_1based) { target_uses_source = true; @@ -5543,9 +5469,11 @@ void Sidebar::change_filament(size_t from_id, size_t to_id) } } if (target_uses_source) { - int ret = wxMessageBox(_L("The target mixed filament uses this physical filament as a component. " - "Merging will remove this physical filament and may invalidate the mixed filament. Continue?"), - _L("Warning"), wxOK | wxCANCEL | wxICON_WARNING); + int ret = wxMessageBox( + _L("The target mixed filament uses this physical filament as a component. " + "Merging will remove this physical filament and may invalidate the mixed filament. Continue?"), + _L("Warning"), + wxOK | wxCANCEL | wxICON_WARNING); if (ret != wxOK) return; } @@ -5558,31 +5486,26 @@ void Sidebar::change_filament(size_t from_id, size_t to_id) void Sidebar::edit_filament() { p->editing_filament = -1; - if (p->m_menu_filament_id >= 0 && p->m_menu_filament_id < p->combos_filament.size() && - p->combos_filament[p->m_menu_filament_id]->switch_to_tab()) + if (p->m_menu_filament_id >= 0 && p->m_menu_filament_id < p->combos_filament.size() + && p->combos_filament[p->m_menu_filament_id]->switch_to_tab()) p->editing_filament = p->m_menu_filament_id; // sync with TabPresetComboxBox's m_filament_idx } -void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_name, bool /*skip_preset_validation*/) -{ - if (is_new_project_in_gcode3mf()) { - return; - } - if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) - return; - if (wxGetApp().preset_bundle->filament_presets.size() >= MAXIMUM_EXTRUDER_NUMBER) - return; +void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_name, bool /*skip_preset_validation*/) { + if (is_new_project_in_gcode3mf()) { return; } + if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; + if (wxGetApp().preset_bundle->filament_presets.size() >= MAXIMUM_EXTRUDER_NUMBER) return; // Mixed-color slots are kept at the tail of the filament arrays, so a new physical // filament has to be inserted just after the last physical one rather than appended. // Count off filament_is_mixed, not filament_presets or the combos: the extruder-count spinner // reaches this before the sidebar has rebuilt, and update_multi_material_filament_presets() // can have grown filament_presets alone. - auto* bundle = wxGetApp().preset_bundle; - size_t insert_pos = bundle->num_physical_filaments(); - size_t total = insert_pos + bundle->num_mixed_filaments(); - int filament_count = (int) (total + 1); - std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); + auto *bundle = wxGetApp().preset_bundle; + size_t insert_pos = bundle->num_physical_filaments(); + size_t total = insert_pos + bundle->num_mixed_filaments(); + int filament_count = (int)(total + 1); + std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); bundle->set_num_filaments(filament_count, new_color); // Maintain physical-first ordering: rotate the new slot from end to insert_pos. @@ -5592,7 +5515,7 @@ void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_na std::rotate(presets.begin() + insert_pos, presets.begin() + total, presets.end()); auto& project_config = wxGetApp().preset_bundle->project_config; - auto& ams_mc = wxGetApp().preset_bundle->ams_multi_color_filment; + auto& ams_mc = wxGetApp().preset_bundle->ams_multi_color_filment; auto rotate_strings = [&](const char* key) { if (auto* opt = project_config.option(key)) @@ -5628,8 +5551,8 @@ void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_na std::rotate(ams_mc.begin() + insert_pos, ams_mc.begin() + total, ams_mc.end()); // Remap object/volume extruder IDs and paint data: anything >= insert_pos+1 (1-based) shifts up by 1 - int threshold_1based = (int) (insert_pos + 1); - auto ebt_threshold = EnforcerBlockerType(threshold_1based); + int threshold_1based = (int)(insert_pos + 1); + auto ebt_threshold = EnforcerBlockerType(threshold_1based); for (auto* obj : wxGetApp().plater()->model().objects) { if (obj->config.has("extruder")) { int ext = obj->config.extruder(); @@ -5647,7 +5570,8 @@ void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_na } } - if (!preset_name.empty() && wxGetApp().preset_bundle->filaments.find_preset(preset_name, false) && + if (!preset_name.empty() && + wxGetApp().preset_bundle->filaments.find_preset(preset_name, false) && insert_pos < wxGetApp().preset_bundle->filament_presets.size()) { wxGetApp().preset_bundle->filament_presets[insert_pos] = preset_name; } @@ -5662,9 +5586,10 @@ void Sidebar::add_custom_filament(wxColour new_col, const std::string& preset_na bool Sidebar::is_new_project_in_gcode3mf() { if (p->plater->using_exported_file()) { - auto filename = p->plater->get_preview_only_filename(); - auto text = wxString::Format(_L("After completing your operation, %s project will be closed and create a new project."), filename); - MessageDialog dlg(wxGetApp().plater(), text, _L("Warning"), wxOK | wxICON_WARNING); + auto filename = p->plater->get_preview_only_filename(); + auto text = wxString::Format(_L("After completing your operation, %s project will be closed and create a new project."), filename); + MessageDialog dlg(wxGetApp().plater(), text, _L("Warning"), + wxOK | wxICON_WARNING); dlg.ShowModal(); p->plater->new_project(); return true; @@ -5725,8 +5650,7 @@ void Sidebar::on_bed_type_change(BedType bed_type) std::map Sidebar::build_filament_ams_list(MachineObject* obj) { std::map filament_ams_list; - if (!obj) - return filament_ams_list; + if (!obj) return filament_ams_list; // For pull-mode agents (e.g., HTTP REST API), refresh DevFilaSystem first auto* agent = wxGetApp().getDeviceManager()->get_agent(); @@ -5736,18 +5660,17 @@ std::map Sidebar::build_filament_ams_list(MachineObject } } - auto build_tray_config = [](DevAmsTray const& tray, std::string const& name, std::string ams_id, std::string slot_id) { - BOOST_LOG_TRIVIAL(info) << boost::format("build_filament_ams_list: name %1% setting_id %2% type %3% color %4%") % name % - tray.setting_id % tray.m_fila_type % tray.color; + auto build_tray_config = [](DevAmsTray const &tray, std::string const &name, std::string ams_id, std::string slot_id) { + BOOST_LOG_TRIVIAL(info) << boost::format("build_filament_ams_list: name %1% setting_id %2% type %3% color %4%") + % name % tray.setting_id % tray.m_fila_type % tray.color; DynamicPrintConfig tray_config; tray_config.set_key_value("filament_id", new ConfigOptionStrings{tray.setting_id}); tray_config.set_key_value("tag_uid", new ConfigOptionStrings{tray.tag_uid}); tray_config.set_key_value("ams_id", new ConfigOptionStrings{ams_id}); tray_config.set_key_value("slot_id", new ConfigOptionStrings{slot_id}); tray_config.set_key_value("filament_type", new ConfigOptionStrings{tray.m_fila_type}); - tray_config.set_key_value("tray_name", new ConfigOptionStrings{name}); - tray_config.set_key_value("filament_colour", - new ConfigOptionStrings{into_u8(wxColour("#" + tray.color).GetAsString(wxC2S_HTML_SYNTAX))}); + tray_config.set_key_value("tray_name", new ConfigOptionStrings{ name }); + tray_config.set_key_value("filament_colour", new ConfigOptionStrings{into_u8(wxColour("#" + tray.color).GetAsString(wxC2S_HTML_SYNTAX))}); tray_config.set_key_value("filament_multi_colour", new ConfigOptionStrings{}); tray_config.set_key_value("filament_colour_type", new ConfigOptionStrings{std::to_string(tray.ctype)}); tray_config.set_key_value("filament_exist", new ConfigOptionBools{tray.is_exists}); @@ -5756,23 +5679,22 @@ std::map Sidebar::build_filament_ams_list(MachineObject if (wxGetApp().preset_bundle) { info = wxGetApp().preset_bundle->get_filament_by_filament_id(tray.setting_id); } - tray_config.set_key_value("filament_is_support", new ConfigOptionBools{info.has_value() ? info->is_support : false}); + tray_config.set_key_value("filament_is_support", new ConfigOptionBools{ info.has_value() ? info->is_support : false}); for (int i = 0; i < tray.cols.size(); ++i) { - tray_config.opt("filament_multi_colour") - ->values.push_back(into_u8(wxColour("#" + tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX))); + tray_config.opt("filament_multi_colour")->values.push_back(into_u8(wxColour("#" + tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX))); } return tray_config; }; if (obj->ams_support_virtual_tray) { int extruder = 0x10000; // Main (first) extruder at right - for (auto& vt_tray : obj->vt_slot) { - filament_ams_list.emplace(extruder + stoi(vt_tray.id), build_tray_config(vt_tray, "Ext", vt_tray.id, "0")); // 254 or 255 + for (auto & vt_tray : obj->vt_slot) { + filament_ams_list.emplace(extruder + stoi(vt_tray.id), build_tray_config(vt_tray, "Ext",vt_tray.id, "0"));//254 or 255 extruder = 0; } } - auto get_ams_name = [](int ams_id, int slot_id) -> std::string { + auto get_ams_name = [](int ams_id, int slot_id)->std::string { if (ams_id >= 0 && ams_id < 26) { char slot_name = slot_id + '1'; return std::string(1, 'A' + ams_id) + std::string(1, slot_name); @@ -5789,9 +5711,9 @@ std::map Sidebar::build_filament_ams_list(MachineObject int ams_id = std::stoi(ams.first); int extruder = ams.second->GetExtruderId() ? 0 : 0x10000; // Main (first) extruder at right for (auto tray : ams.second->GetTrays()) { - int slot_id = std::stoi(tray.first); - filament_ams_list.emplace(extruder + (ams_id * 4 + slot_id), build_tray_config(*tray.second, get_ams_name(ams_id, slot_id), - std::to_string(ams_id), std::to_string(slot_id))); + int slot_id = std::stoi(tray.first); + filament_ams_list.emplace(extruder + (ams_id * 4 + slot_id), + build_tray_config(*tray.second, get_ams_name(ams_id, slot_id), std::to_string(ams_id), std::to_string(slot_id))); } } return filament_ams_list; @@ -5803,18 +5725,24 @@ bool Sidebar::sync_extruder_list() return p->sync_extruder_list(only_external_material); } -bool Sidebar::is_fila_switch_ready() { return p->is_fila_switch_ready(); } - -void Sidebar::reset_fila_switch() { p->update_extruder_separator_icon(false, false); } - -bool Sidebar::need_auto_sync_extruder_list_after_connect_priner(const MachineObject* obj) +bool Sidebar::is_fila_switch_ready() { - if (!obj) + return p->is_fila_switch_ready(); +} + +void Sidebar::reset_fila_switch() +{ + p->update_extruder_separator_icon(false, false); +} + +bool Sidebar::need_auto_sync_extruder_list_after_connect_priner(const MachineObject *obj) +{ + if(!obj) return false; - std::string machine_print_name = obj->get_show_printer_type(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - std::string target_model_id = preset_bundle->printers.get_selected_preset().get_printer_type(preset_bundle); + std::string machine_print_name = obj->get_show_printer_type(); + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + std::string target_model_id = preset_bundle->printers.get_selected_preset().get_printer_type(preset_bundle); if (machine_print_name != target_model_id) { return false; } @@ -5825,12 +5753,17 @@ bool Sidebar::need_auto_sync_extruder_list_after_connect_priner(const MachineObj return true; } -void Sidebar::update_sync_status(const MachineObject* obj) { p->update_sync_status(obj); } - -int Sidebar::get_sidebar_pos_right_x() { return this->GetScreenPosition().x + this->GetSize().x; } - -void Sidebar::on_size(SimpleEvent& e) +void Sidebar::update_sync_status(const MachineObject *obj) { + p->update_sync_status(obj); +} + +int Sidebar::get_sidebar_pos_right_x() +{ + return this->GetScreenPosition().x + this->GetSize().x; +} + +void Sidebar::on_size(SimpleEvent &e) { if (m_sna_dialog && m_sna_dialog->IsShown()) { pop_sync_nozzle_and_ams_dialog(); } @@ -5839,24 +5772,18 @@ void Sidebar::on_size(SimpleEvent& e) } } -void Sidebar::on_full_screen(IntEvent& e) -{ - if (m_sna_dialog) { - m_sna_dialog->on_full_screen(e); - } - if (m_fna_dialog) { - m_fna_dialog->on_full_screen(e); - } +void Sidebar::on_full_screen(IntEvent &e) { + if (m_sna_dialog) { m_sna_dialog->on_full_screen(e); } + if (m_fna_dialog) { m_fna_dialog->on_full_screen(e); } } -void Sidebar::get_big_btn_sync_pos_size(wxPoint& pt, wxSize& size) +void Sidebar::get_big_btn_sync_pos_size(wxPoint &pt, wxSize &size) { size = p->m_printer_bbl_sync->GetSize(); - pt = p->m_printer_bbl_sync->GetScreenPosition(); + pt = p->m_printer_bbl_sync->GetScreenPosition(); } -void Sidebar::get_small_btn_sync_pos_size(wxPoint& pt, wxSize& size) -{ +void Sidebar::get_small_btn_sync_pos_size(wxPoint &pt, wxSize &size) { size = ams_btn->GetSize(); pt = ams_btn->GetScreenPosition(); } @@ -5872,22 +5799,23 @@ void Sidebar::load_ams_list(MachineObject* obj) filament_ams_list = build_filament_ams_list(obj); } - bool device_change = false; + bool device_change = false; const std::string& device = obj ? obj->get_dev_id() : ""; if (p->ams_list_device != device) { p->ams_list_device = device; device_change = true; } BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": %1% items") % filament_ams_list.size(); - if (wxGetApp().preset_bundle->filament_ams_list == filament_ams_list && !device_change) { + if (wxGetApp().preset_bundle->filament_ams_list == filament_ams_list && !device_change) + { return; } wxGetApp().preset_bundle->filament_ams_list = filament_ams_list; - for (auto c : p->combos_filament) { + for (auto c : p->combos_filament){ c->update(); if (device_change) { - c->ShowBadge(false); // change printer,then clear badge + c->ShowBadge(false);//change printer,then clear badge } } @@ -5903,15 +5831,14 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) return; GUI::wxGetApp().sidebar().load_ams_list(obj); - auto& list = wxGetApp().preset_bundle->filament_ams_list; + auto & list = wxGetApp().preset_bundle->filament_ams_list; if (list.empty()) { auto printer_name = p->plater->get_selected_printer_name_in_combox(); - p->plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, - _L("Sync printer information")); + p->plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information")); return; } - bool exist_at_list_one_filament = false; - for (auto& cur : list) { + bool exist_at_list_one_filament =false; + for (auto &cur : list) { auto temp_config = cur.second; auto filament_type = temp_config.opt_string("filament_type", 0u); auto filament_color = temp_config.opt_string("filament_colour", 0u); @@ -5936,9 +5863,9 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) if (!ams_filament_ids.empty()) { boost::algorithm::split(list2, ams_filament_ids, boost::algorithm::is_any_of(",")); } - wxGetApp().plater()->update_all_plate_thumbnails(true); // preview thumbnail for sync_dlg + wxGetApp().plater()->update_all_plate_thumbnails(true);//preview thumbnail for sync_dlg SyncAmsInfoDialog::SyncInfo temp_info; - temp_info.use_dialog_pos = false; + temp_info.use_dialog_pos = false; temp_info.cancel_text_to_later = is_from_big_sync_btn; if (m_sync_dlg == nullptr) { m_sync_dlg = new SyncAmsInfoDialog(this, temp_info); @@ -5956,7 +5883,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) m_sync_dlg->set_check_dirty_fialment(false); dlg_res = m_sync_dlg->ShowModal(); } else { - dlg_res = (int) wxID_YES; + dlg_res =(int) wxID_YES; } if (dlg_res == wxID_CANCEL) return; @@ -5968,7 +5895,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) list2.resize(list.size()); auto iter = list.begin(); for (int i = 0; i < list.size(); ++i, ++iter) { - auto& ams = iter->second; + auto & ams = iter->second; auto filament_id = ams.opt_string("filament_id", 0u); ams.set_key_value("filament_changed", new ConfigOptionBool{dlg_res == wxID_YES || list2[i] != filament_id}); list2[i] = filament_id; @@ -5976,49 +5903,47 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) // BBS:Record consumables information before synchronization std::vector color_before_sync; - std::vector is_support_before; + std::vector is_support_before; DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; - ConfigOptionStrings* color_opt = project_config.option("filament_colour"); + ConfigOptionStrings* color_opt = project_config.option("filament_colour"); for (int i = 0; i < p->combos_filament.size(); ++i) { is_support_before.push_back(is_support_filament(i)); color_before_sync.push_back(color_opt->values[i]); } MergeFilamentInfo merge_info; - std::vector> unknowns; - auto enable_append = wxGetApp().app_config->get_bool("enable_append_color_by_sync_ams"); + std::vector> unknowns; + auto enable_append = wxGetApp().app_config->get_bool("enable_append_color_by_sync_ams"); auto sync_color_only = wxGetApp().app_config->get("sync_ams_filament_mode") == "1"; - auto n = wxGetApp().preset_bundle->sync_ams_list(unknowns, !sync_result.direct_sync, sync_result.sync_maps, enable_append, merge_info, - sync_color_only); + auto n = wxGetApp().preset_bundle->sync_ams_list(unknowns, !sync_result.direct_sync, sync_result.sync_maps, enable_append, merge_info, sync_color_only); wxString detail; - for (auto& uk : unknowns) { + for (auto & uk : unknowns) { auto tray_name = uk.first->opt_string("tray_name", 0u); auto filament_type = uk.first->opt_string("filament_type", 0u); detail += from_u8("\n- " + tray_name + "(" + filament_type + ") ") + _L(uk.second); } if (n == 0) { - MessageDialog dlg(this, _L("There are no compatible filaments, and sync is not performed.") + detail, _L("Sync filaments with AMS"), - wxOK); + MessageDialog dlg(this, + _L("There are no compatible filaments, and sync is not performed.") + detail, + _L("Sync filaments with AMS"), wxOK); dlg.ShowModal(); return; } // Replace unknown filament IDs with the resolved preset's filament_id - auto& filaments = wxGetApp().preset_bundle->filaments; - auto& filament_presets = wxGetApp().preset_bundle->filament_presets; + auto &filaments = wxGetApp().preset_bundle->filaments; + auto &filament_presets = wxGetApp().preset_bundle->filament_presets; for (size_t i = 0; i < list2.size() && i < filament_presets.size(); ++i) { if (list2[i] == UNKNOWN_FILAMENT_ID) { - const Preset* resolved = filaments.find_preset(filament_presets[i]); + const Preset *resolved = filaments.find_preset(filament_presets[i]); if (resolved) list2[i] = resolved->filament_id; } } ams_filament_ids = boost::algorithm::join(list2, ","); - wxGetApp().app_config->set("ams_filament_ids", p->ams_list_device, ams_filament_ids); + wxGetApp().app_config ->set("ams_filament_ids", p->ams_list_device, ams_filament_ids); if (!unknowns.empty()) { MessageDialog dlg(this, - _L("There are some unknown or incompatible filaments mapped to generic preset.\nPlease update Orca Slicer or " - "restart Orca Slicer to check if there is an update to system presets.") + - detail, - _L("Sync filaments with AMS"), wxOK); + _L("There are some unknown or incompatible filaments mapped to generic preset.\nPlease update Orca Slicer or restart Orca Slicer to check if there is an update to system presets.") + detail, + _L("Sync filaments with AMS"), wxOK); dlg.ShowModal(); } if (!sync_color_only) { @@ -6036,9 +5961,11 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) for (int i = 0; i < p->combos_filament.size(); ++i) { if (i >= color_before_sync.size()) { auto_calc_flushing_volumes(i); - } else if (color_before_sync[i] != color_opt->values[i] && wxGetApp().app_config->get("auto_calculate_flush") != "disabled") { + } + else if(color_before_sync[i] != color_opt->values[i] && wxGetApp().app_config->get("auto_calculate_flush") != "disabled"){ auto_calc_flushing_volumes(i); - } else if (is_support_filament(i) != is_support_before[i] && wxGetApp().app_config->get("auto_calculate_flush") == "all") { + } + else if(is_support_filament(i) !=is_support_before[i] && wxGetApp().app_config->get("auto_calculate_flush") == "all"){ auto_calc_flushing_volumes(i); } } @@ -6052,16 +5979,15 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) update_dynamic_filament_list(); } else { wxGetApp().plater()->update_filament_colors_in_full_config(); - for (auto& c : p->combos_filament) + for (auto &c : p->combos_filament) c->update(); obj_list()->update_filament_colors(); update_dynamic_filament_list(); } - auto badge_combox_filament = [sync_color_only](PlaterPresetComboBox* c) { - auto tip = sync_color_only ? - _L("Only filament color information has been synchronized from printer.") : - _L("Filament type and color information have been synchronized, but slot information is not included."); + auto badge_combox_filament = [sync_color_only](PlaterPresetComboBox *c) { + auto tip = sync_color_only ? _L("Only filament color information has been synchronized from printer.") : + _L("Filament type and color information have been synchronized, but slot information is not included."); c->SetToolTip(tip); c->ShowBadge(true); }; @@ -6073,17 +5999,16 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) // empty trays are skipped), so every resulting combo is AMS-sourced and gets a badge. The // previous per-tray index walked the full filament_ams_list (including the skipped empties), // so an empty slot before a loaded one dropped the badge for the trailing filaments. - for (auto& c : p->combos_filament) { + for (auto &c : p->combos_filament) { badge_combox_filament(c); } } } BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "prepare enable_merge_color_by_sync_ams"; - if (!merge_info.is_empty() && - wxGetApp().app_config->get_bool("enable_merge_color_by_sync_ams")) { // merge same color and preset filament//use same ams - auto reduce_index = [](MergeFilamentInfo& merge_info, int value) { + if (!merge_info.is_empty() && wxGetApp().app_config->get_bool("enable_merge_color_by_sync_ams")) { // merge same color and preset filament//use same ams + auto reduce_index = [](MergeFilamentInfo &merge_info,int value) { for (size_t i = 0; i < merge_info.merges.size(); i++) { - auto& cur = merge_info.merges[i]; + auto &cur = merge_info.merges[i]; for (size_t j = 0; j < cur.size(); j++) { if (value < cur[j]) { cur[j] = cur[j] - 1; @@ -6102,7 +6027,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) for (size_t i = 0; i < merge_info.merges.size(); i++) { auto& cur = merge_info.merges[i]; - for (int j = cur.size() - 1; j >= 1; j--) { + for (int j = cur.size() -1; j >= 1 ; j--) { auto last_index = cur[j]; change_filament(last_index, cur[0]); cur.erase(cur.begin() + j); @@ -6113,7 +6038,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) for (size_t i = 0; i < sync_ams_badges.size(); i++) { if (sync_ams_badges[i] == true) { if (i < p->combos_filament.size()) { - auto& c = p->combos_filament[i]; + auto &c = p->combos_filament[i]; badge_combox_filament(c); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "check error: p->combos_filament array out of bound"; @@ -6127,7 +6052,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) } auto temp_index = iter.first; if (temp_index < p->combos_filament.size() && temp_index >= 0) { - auto& c = p->combos_filament[temp_index]; + auto &c = p->combos_filament[temp_index]; badge_combox_filament(c); } } @@ -6137,11 +6062,12 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "finish pop_finsish_sync_ams_dialog"; } + bool Sidebar::should_show_SEMM_buttons() { - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - bool is_bbl_vendor = preset_bundle.is_bbl_vendor(); - auto cfg = preset_bundle.printers.get_edited_preset().config; + PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + bool is_bbl_vendor = preset_bundle.is_bbl_vendor(); + auto cfg = preset_bundle.printers.get_edited_preset().config; return cfg.opt_bool("single_extruder_multi_material") || is_bbl_vendor; } @@ -6151,22 +6077,23 @@ void Sidebar::show_SEMM_buttons() // ORCA if (!p || p->combos_filament.empty() || !p->m_bpButton_add_filament || !p->m_bpButton_del_filament || !p->m_flushing_volume_btn) return; - + bool is_multi_material = p->combos_filament.size() > 1; bool single_or_bbl = should_show_SEMM_buttons(); - bool is_single = single_or_bbl && !is_multi_material; // SINGLE EXTRUDER / BBL WITH 1 MATERIAL - bool is_multi = single_or_bbl && is_multi_material; // MULTI MATERIAL WITH SINGLE EXTRUDER - bool is_fixed = !is_single && !is_multi; // MULTI EXTRUDER / TOOLCHANGER / IDEX WITH FIXED MATERIAL + bool is_single = single_or_bbl && !is_multi_material; // SINGLE EXTRUDER / BBL WITH 1 MATERIAL + bool is_multi = single_or_bbl && is_multi_material; // MULTI MATERIAL WITH SINGLE EXTRUDER + bool is_fixed = !is_single && !is_multi; // MULTI EXTRUDER / TOOLCHANGER / IDEX WITH FIXED MATERIAL p->m_bpButton_add_filament->Show(single_or_bbl); p->m_bpButton_del_filament->Show(is_multi); - p->m_flushing_volume_btn->Show(is_multi); + p->m_flushing_volume_btn->Show( is_multi); if (is_multi) { - for (auto& c : p->combos_filament) + for (auto &c : p->combos_filament) c->edit_btn->SetBitmap_("menu_filament"); - } else if (is_single || is_fixed) { - for (auto& c : p->combos_filament) + } + else if (is_single || is_fixed) { + for (auto &c : p->combos_filament) c->edit_btn->SetBitmap_("edit"); } @@ -6210,24 +6137,42 @@ void Sidebar::update_dynamic_filament_list() dynamic_physical_filament_list.update(); } -PlaterPresetComboBox* Sidebar::printer_combox() { return p->combo_printer; } +PlaterPresetComboBox* Sidebar::printer_combox() +{ + return p->combo_printer; +} ObjectList* Sidebar::obj_list() { // BBS - // return obj_list(); + //return obj_list(); return p->m_object_list; } -ObjectSettings* Sidebar::obj_settings() { return p->object_settings; } +ObjectSettings* Sidebar::obj_settings() +{ + return p->object_settings; +} -ObjectLayers* Sidebar::obj_layers() { return p->object_layers; } +ObjectLayers* Sidebar::obj_layers() +{ + return p->object_layers; +} -wxPanel* Sidebar::scrolled_panel() { return p->scrolled; } +wxPanel* Sidebar::scrolled_panel() +{ + return p->scrolled; +} -wxPanel* Sidebar::print_panel() { return p->m_panel_print_content; } +wxPanel* Sidebar::print_panel() +{ + return p->m_panel_print_content; +} -wxPanel* Sidebar::filament_panel() { return p->m_panel_filament_content; } +wxPanel* Sidebar::filament_panel() +{ + return p->m_panel_filament_content; +} ConfigOptionsGroup* Sidebar::og_freq_chng_params(const bool is_fff) { @@ -6248,10 +6193,11 @@ wxButton* Sidebar::get_wiping_dialog_button() void Sidebar::set_flushing_volume_warning(const bool flushing_volume_modify) { - if (flushing_volume_modify) { + if(flushing_volume_modify){ p->m_flushing_volume_btn->SetStyle(ButtonStyle::Regular, ButtonType::Compact); p->m_flushing_volume_btn->SetBorderColor(wxColour("#FF6F00")); - } else + } + else p->m_flushing_volume_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Compact); } @@ -6266,17 +6212,19 @@ void Sidebar::enable_buttons(bool enable) #endif } -bool Sidebar::show_reslice(bool show) const { return p->btn_reslice->Show(show); } -bool Sidebar::show_export(bool show) const { return p->btn_export_gcode->Show(show); } -bool Sidebar::show_send(bool show) const { return p->btn_send_gcode->Show(show); } +bool Sidebar::show_reslice(bool show) const { return p->btn_reslice->Show(show); } +bool Sidebar::show_export(bool show) const { return p->btn_export_gcode->Show(show); } +bool Sidebar::show_send(bool show) const { return p->btn_send_gcode->Show(show); } bool Sidebar::show_export_removable(bool show) const { return p->btn_export_gcode_removable->Show(show); } -// bool Sidebar::show_eject(bool show) const { return p->btn_eject_device->Show(show); } -// bool Sidebar::get_eject_shown() const { return p->btn_eject_device->IsShown(); } +//bool Sidebar::show_eject(bool show) const { return p->btn_eject_device->Show(show); } +//bool Sidebar::get_eject_shown() const { return p->btn_eject_device->IsShown(); } -bool Sidebar::is_multifilament() { return p->combos_filament.size() > 1; } - -void Sidebar::deal_btn_sync() +bool Sidebar::is_multifilament() { + return p->combos_filament.size() > 1; +} + +void Sidebar::deal_btn_sync() { m_begin_sync_printer_status = true; bool only_external_material; // Manual "sync machine" button: is_manual=true so an H2C pops the MultiNozzleSyncDialog to pick a nozzle option. @@ -6290,10 +6238,10 @@ void Sidebar::deal_btn_sync() template void setup_dialog_position(T& info) { - auto plater = wxGetApp().plater(); - auto& sidebar = plater->sidebar(); - auto docking = plater->get_sidebar_docking_state(); - bool on_right = true; + auto plater = wxGetApp().plater(); + auto& sidebar = plater->sidebar(); + auto docking = plater->get_sidebar_docking_state(); + bool on_right = true; if (docking == Sidebar::Left) { on_right = true; @@ -6318,27 +6266,23 @@ template void setup_dialog_position(T& info) } } -void Sidebar::pop_sync_nozzle_and_ams_dialog() -{ +void Sidebar::pop_sync_nozzle_and_ams_dialog() { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " begin pop_sync_nozzle_and_ams_dialog"; wxTheApp->CallAfter([this]() { SyncNozzleAndAmsDialog::InputInfo temp_na_info; - wxPoint big_btn_pt; - wxSize big_btn_size; + wxPoint big_btn_pt; + wxSize big_btn_size; wxGetApp().plater()->sidebar().get_big_btn_sync_pos_size(big_btn_pt, big_btn_size); - temp_na_info.dialog_pos = big_btn_pt + wxPoint(big_btn_size.x, big_btn_size.y) + - wxPoint(FromDIP(big_btn_size.x / 10.f - 5), FromDIP(big_btn_size.y / 10.f)); + temp_na_info.dialog_pos = big_btn_pt + wxPoint(big_btn_size.x, big_btn_size.y) + wxPoint(FromDIP(big_btn_size.x / 10.f - 5), FromDIP(big_btn_size.y / 10.f)); temp_na_info.dialog_pos.y += FromDIP(2); setup_dialog_position(temp_na_info); wxPoint small_btn_pt; - wxSize small_btn_size; + wxSize small_btn_size; get_small_btn_sync_pos_size(small_btn_pt, small_btn_size); temp_na_info.ams_btn_pos = small_btn_pt + wxPoint(small_btn_size.x / 2, small_btn_size.y / 2); - if (m_fna_dialog) { - m_fna_dialog->on_hide(); - } + if (m_fna_dialog) { m_fna_dialog->on_hide(); } if (m_sna_dialog) { m_sna_dialog->Destroy(); m_sna_dialog = nullptr; @@ -6352,16 +6296,14 @@ void Sidebar::pop_finsish_sync_ams_dialog() { wxTheApp->CallAfter([this]() { wxPoint small_btn_pt; - wxSize small_btn_size; + wxSize small_btn_size; get_small_btn_sync_pos_size(small_btn_pt, small_btn_size); FinishSyncAmsDialog::InputInfo temp_fsa_info; - temp_fsa_info.dialog_pos.y = small_btn_pt.y; + temp_fsa_info.dialog_pos.y = small_btn_pt.y; setup_dialog_position(temp_fsa_info); - temp_fsa_info.ams_btn_pos = small_btn_pt + wxPoint(small_btn_size.x / 2, small_btn_size.y / 2); - if (m_sna_dialog) { - m_sna_dialog->on_hide(); - } + temp_fsa_info.ams_btn_pos = small_btn_pt + wxPoint(small_btn_size.x / 2, small_btn_size.y / 2); + if (m_sna_dialog) { m_sna_dialog->on_hide(); } if (m_fna_dialog) { m_fna_dialog->Destroy(); m_fna_dialog = nullptr; @@ -6369,38 +6311,42 @@ void Sidebar::pop_finsish_sync_ams_dialog() m_fna_dialog = new FinishSyncAmsDialog(temp_fsa_info); m_fna_dialog->on_show(); }); + } static std::vector get_search_inputs(ConfigOptionMode mode) { - std::vector ret{}; + std::vector ret {}; auto& tabs_list = wxGetApp().tabs_list; auto print_tech = wxGetApp().preset_bundle->printers.get_selected_preset().printer_technology(); for (auto tab : tabs_list) if (tab->supports_printer_technology(print_tech)) - ret.emplace_back(Search::InputInfo{tab->get_config(), tab->type(), mode}); + ret.emplace_back(Search::InputInfo {tab->get_config(), tab->type(), mode}); return ret; } -void Sidebar::update_searcher() { p->searcher.init(get_search_inputs(m_mode)); } +void Sidebar::update_searcher() +{ + p->searcher.init(get_search_inputs(m_mode)); +} void Sidebar::update_mode() { m_mode = wxGetApp().get_mode(); - // BBS: remove print related combos + //BBS: remove print related combos update_searcher(); wxWindowUpdateLocker noUpdates(this); // BBS - // obj_list()->get_sizer()->Show(m_mode > comSimple); + //obj_list()->get_sizer()->Show(m_mode > comSimple); obj_list()->unselect_objects(); obj_list()->update_selections(); - // obj_list()->update_object_menu(); +// obj_list()->update_object_menu(); Layout(); } @@ -6412,14 +6358,14 @@ void Sidebar::collapse(bool collapse) { p->plater->collapse_sidebar(collapse); } #ifdef _MSW_DARK_MODE void Sidebar::show_mode_sizer(bool show) { - // p->mode_sizer->Show(show); + //p->mode_sizer->Show(show); } #endif void Sidebar::update_ui_from_settings() { // BBS - // p->object_manipulation->update_ui_from_settings(); + //p->object_manipulation->update_ui_from_settings(); // update Cut gizmo, if it's open p->plater->canvas3D()->update_gizmos_on_off_state(); p->plater->set_current_canvas_as_dirty(); @@ -6444,38 +6390,47 @@ bool Sidebar::show_object_list(bool show) const void Sidebar::finish_param_edit() { p->editing_filament = -1; } -std::vector& Sidebar::combos_filament() { return p->combos_filament; } +std::vector& Sidebar::combos_filament() +{ + return p->combos_filament; +} void Sidebar::clear_combos_filament_badge() { - auto& combos_filament = p->combos_filament; - for (auto& c : combos_filament) { // clear flag + auto &combos_filament = p->combos_filament; + for (auto &c : combos_filament) { // clear flag c->ShowBadge(false); } } -void Sidebar::udpate_combos_filament_badge() -{ - auto& combos_filament = p->combos_filament; - for (auto& c : combos_filament) { +void Sidebar::udpate_combos_filament_badge() { + auto &combos_filament = p->combos_filament; + for (auto &c : combos_filament) { auto selection = c->GetSelection(); auto select_flag = c->GetFlag(selection); auto ok = select_flag == (int) PresetComboBox::FilamentAMSType::FROM_AMS; c->ShowBadge(ok); } + } -Search::OptionsSearcher& Sidebar::get_searcher() { return p->searcher; } +Search::OptionsSearcher& Sidebar::get_searcher() +{ + return p->searcher; +} -std::string& Sidebar::get_search_line() { return p->searcher.search_string(); } +std::string& Sidebar::get_search_line() +{ + return p->searcher.search_string(); +} static std::map printer_thumbnails = {}; void Sidebar::update_printer_thumbnail() { - auto& preset_bundle = wxGetApp().preset_bundle; - Preset& selected_preset = preset_bundle->printers.get_edited_preset(); - std::string printer_type = selected_preset.get_current_printer_type(preset_bundle); + auto& preset_bundle = wxGetApp().preset_bundle; + Preset & selected_preset = preset_bundle->printers.get_edited_preset(); + std::string printer_type = selected_preset.get_current_printer_type(preset_bundle); if (printer_thumbnails.find(printer_type) != printer_thumbnails.end()) // Use known cache first p->image_printer->SetBitmap(create_scaled_bitmap(printer_thumbnails[printer_type], this, PRINTER_THUMBNAIL_SIZE.GetHeight())); else { @@ -6491,7 +6446,7 @@ void Sidebar::update_printer_thumbnail() */ // Orca: try to use the printer model cover as the thumbnail - const auto model_name = selected_preset.config.opt_string("printer_model"); + const auto model_name = selected_preset.config.opt_string("printer_model"); std::string cover_file = model_name + "_cover.png"; for (auto vendor_profile : preset_bundle->vendors) { for (auto vendor_model : vendor_profile.second.models) { @@ -6515,27 +6470,29 @@ void Sidebar::update_printer_thumbnail() } } -void Sidebar::auto_calc_flushing_volumes(const int filament_idx, const int extruder_id) -{ +void Sidebar::auto_calc_flushing_volumes(const int filament_idx, const int extruder_id) { + std::vector filament_indices; std::vector extruder_indices; auto& preset_bundle = wxGetApp().preset_bundle; - auto filament_ptr = preset_bundle->project_config.option("filament_colour"); - int filament_count = filament_ptr ? filament_ptr->size() : 0; - int extruder_count = preset_bundle->get_printer_extruder_count(); + auto filament_ptr = preset_bundle->project_config.option("filament_colour"); + int filament_count = filament_ptr ? filament_ptr->size() : 0; + int extruder_count = preset_bundle->get_printer_extruder_count(); if (filament_idx < 0) { filament_indices.resize(filament_count); std::iota(filament_indices.begin(), filament_indices.end(), 0); - } else { + } + else { filament_indices.emplace_back(filament_idx); } if (extruder_id < 0) { extruder_indices.resize(extruder_count); std::iota(extruder_indices.begin(), extruder_indices.end(), 0); - } else { + } + else { extruder_indices.emplace_back(extruder_id); } @@ -6553,28 +6510,28 @@ void Sidebar::auto_calc_flushing_volumes(const int filament_idx, const int extru p->plater->update(); } + void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int extruder_id) { auto& preset_bundle = wxGetApp().preset_bundle; // A mixed-colour slot is virtual and is never flushed to or from: leave its row and column // alone (the flushing dialog hides them and only compares physical slots). - if (modify_id >= 0 && preset_bundle->is_mixed_filament((size_t) modify_id)) + if (modify_id >= 0 && preset_bundle->is_mixed_filament((size_t)modify_id)) return; - auto& project_config = preset_bundle->project_config; - const auto& full_config = wxGetApp().preset_bundle->full_config(); - auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; - size_t extruder_nums = preset_bundle->get_printer_extruder_count(); - int nozzle_flush_dataset = full_config.option("nozzle_flush_dataset")->values[extruder_id]; - std::vector init_matrix = get_flush_volumes_matrix((project_config.option("flush_volumes_matrix"))->values, - extruder_id, extruder_nums); + auto& project_config = preset_bundle->project_config; + const auto& full_config = wxGetApp().preset_bundle->full_config(); + auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; + size_t extruder_nums = preset_bundle->get_printer_extruder_count(); + int nozzle_flush_dataset = full_config.option("nozzle_flush_dataset")->values[extruder_id]; + std::vector init_matrix = get_flush_volumes_matrix((project_config.option("flush_volumes_matrix"))->values, extruder_id, extruder_nums); const std::vector& min_flush_volumes = get_min_flush_volumes(full_config, extruder_id); - const auto* flush_multi_opt = project_config.option("flush_multiplier"); - float flush_multiplier = flush_multi_opt ? (float) flush_multi_opt->get_at(extruder_id) : 1.f; - std::vector matrix = init_matrix; - int m_max_flush_volume = Slic3r::g_max_flush_volume; - unsigned int m_number_of_extruders = (int) (sqrt(init_matrix.size()) + 0.001); + const auto* flush_multi_opt = project_config.option("flush_multiplier"); + float flush_multiplier = flush_multi_opt ? (float)flush_multi_opt->get_at(extruder_id) : 1.f; + std::vector matrix = init_matrix; + int m_max_flush_volume = Slic3r::g_max_flush_volume; + unsigned int m_number_of_extruders = (int)(sqrt(init_matrix.size()) + 0.001); const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); std::vector> multi_colours; @@ -6599,25 +6556,25 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int if (modify_id >= 0 && modify_id < multi_colours.size()) { for (int i = 0; i < multi_colours.size(); ++i) { - if (preset_bundle->is_mixed_filament((size_t) i)) + if (preset_bundle->is_mixed_filament((size_t)i)) continue; // from to modify int from_idx = i; if (from_idx != modify_id) { Slic3r::FlushVolCalculator calculator(min_flush_volumes[from_idx], m_max_flush_volume, nozzle_flush_dataset); - int flushing_volume = 0; + int flushing_volume = 0; bool is_from_support = is_support_filament(from_idx); - bool is_to_support = is_support_filament(modify_id); + bool is_to_support = is_support_filament(modify_id); if (is_to_support) { flushing_volume = Slic3r::g_flush_volume_to_support; - } else { + } + else { for (int j = 0; j < multi_colours[from_idx].size(); ++j) { const wxColour& from = multi_colours[from_idx][j]; for (int k = 0; k < multi_colours[modify_id].size(); ++k) { const wxColour& to = multi_colours[modify_id][k]; - int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), - to.Red(), to.Green(), to.Blue()); - flushing_volume = std::max(flushing_volume, volume); + int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); + flushing_volume = std::max(flushing_volume, volume); } } if (is_from_support) @@ -6631,18 +6588,18 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int if (to_idx != modify_id) { Slic3r::FlushVolCalculator calculator(min_flush_volumes[modify_id], m_max_flush_volume, nozzle_flush_dataset); bool is_from_support = is_support_filament(modify_id); - bool is_to_support = is_support_filament(to_idx); - int flushing_volume = 0; + bool is_to_support = is_support_filament(to_idx); + int flushing_volume = 0; if (is_to_support) { flushing_volume = Slic3r::g_flush_volume_to_support; - } else { + } + else { for (int j = 0; j < multi_colours[modify_id].size(); ++j) { const wxColour& from = multi_colours[modify_id][j]; for (int k = 0; k < multi_colours[to_idx].size(); ++k) { const wxColour& to = multi_colours[to_idx][k]; - int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), - to.Red(), to.Green(), to.Blue()); - flushing_volume = std::max(flushing_volume, volume); + int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); + flushing_volume = std::max(flushing_volume, volume); } } if (is_from_support) @@ -6653,21 +6610,27 @@ void Sidebar::auto_calc_flushing_volumes_internal(const int modify_id, const int } } } - set_flush_volumes_matrix((project_config.option("flush_volumes_matrix"))->values, matrix, extruder_id, - extruder_nums); + set_flush_volumes_matrix((project_config.option("flush_volumes_matrix"))->values, matrix, extruder_id, extruder_nums); } -void Sidebar::jump_to_object(ObjectDataViewModelNode* item) { p->jump_to_object(item); } +void Sidebar::jump_to_object(ObjectDataViewModelNode* item) +{ + p->jump_to_object(item); +} -void Sidebar::can_search() { p->can_search(); } +void Sidebar::can_search() +{ + p->can_search(); +} class PlaterDropTarget : public wxFileDropTarget { public: - PlaterDropTarget(MainFrame& mainframe, Plater& plater) : m_mainframe(mainframe), m_plater(plater) - { this->SetDefaultAction(wxDragCopy); } + PlaterDropTarget(MainFrame& mainframe, Plater& plater) : m_mainframe(mainframe), m_plater(plater) { + this->SetDefaultAction(wxDragCopy); + } - virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames); + virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames); private: MainFrame& m_mainframe; @@ -6675,16 +6638,16 @@ private: }; namespace { -bool emboss_svg(Plater& plater, const wxString& svg_file, const Vec2d& mouse_drop_position) +bool emboss_svg(Plater& plater, const wxString &svg_file, const Vec2d& mouse_drop_position) { std::string svg_file_str = into_u8(svg_file); - GLCanvas3D* canvas = plater.canvas3D(); + GLCanvas3D* canvas = plater.canvas3D(); if (canvas == nullptr) return false; auto base_svg = canvas->get_gizmos_manager().get_gizmo(GLGizmosManager::Svg); if (base_svg == nullptr) return false; - GLGizmoSVG* svg = dynamic_cast(base_svg); + GLGizmoSVG* svg = dynamic_cast(base_svg); if (svg == nullptr) return false; @@ -6695,42 +6658,51 @@ bool emboss_svg(Plater& plater, const wxString& svg_file, const Vec2d& mouse_dro return svg->create_volume(svg_file_str, mouse_drop_position, ModelVolumeType::MODEL_PART); } -} // namespace +} // State to manage showing after export notifications and device ejecting -enum ExportingStatus { NOT_EXPORTING, EXPORTING_TO_REMOVABLE, EXPORTING_TO_LOCAL }; +enum ExportingStatus{ + NOT_EXPORTING, + EXPORTING_TO_REMOVABLE, + EXPORTING_TO_LOCAL +}; + // TODO: listen on dark ui change class FloatFrame : public wxAuiFloatingFrame { public: FloatFrame(wxWindow* parent, wxAuiManager* ownerMgr, const wxAuiPaneInfo& pane) : wxAuiFloatingFrame(parent, ownerMgr, pane) - { wxGetApp().UpdateFrameDarkUI(this); } + { + wxGetApp().UpdateFrameDarkUI(this); + } }; class AuiMgr : public wxAuiManager { public: - AuiMgr() : wxAuiManager() {} + AuiMgr() : wxAuiManager(){} virtual wxAuiFloatingFrame* CreateFloatingFrame(wxWindow* parent, const wxAuiPaneInfo& p) override - { return new FloatFrame(parent, this, p); } + { + return new FloatFrame(parent, this, p); + } }; // Plater / private struct Plater::priv { // PIMPL back pointer ("Q-Pointer") - Plater* q; - Sidebar* sidebar; - MainFrame* main_frame; + Plater *q; + Sidebar * sidebar; + MainFrame *main_frame; MenuFactory menus; SelectMachineDialog* m_select_machine_dlg = nullptr; - SendMultiMachinePage* m_send_multi_dlg = nullptr; + SendMultiMachinePage* m_send_multi_dlg = nullptr; SendToPrinterDialog* m_send_to_sdcard_dlg = nullptr; - PublishDialog* m_publish_dlg = nullptr; + PublishDialog *m_publish_dlg = nullptr; // Session-level stash of the last published selection. Written on publish and on // loading a published 3MF; read when the Publish dialog is opened. @@ -6739,33 +6711,33 @@ struct Plater::priv std::vector m_pending_material_keys; // Data - Slic3r::DynamicPrintConfig* config; // FIXME: leak? - Slic3r::Print fff_print; - Slic3r::SLAPrint sla_print; - Slic3r::Model model; - PrinterTechnology printer_technology = ptFFF; + Slic3r::DynamicPrintConfig *config; // FIXME: leak? + Slic3r::Print fff_print; + Slic3r::SLAPrint sla_print; + Slic3r::Model model; + PrinterTechnology printer_technology = ptFFF; Slic3r::GCodeProcessorResult gcode_result; // GUI elements AuiMgr m_aui_mgr; wxString m_default_window_layout; - wxPanel* current_panel{nullptr}; + wxPanel* current_panel{ nullptr }; std::vector panels; struct SidebarLayout { - bool is_enabled{false}; - bool is_collapsed{false}; - bool show{false}; + bool is_enabled{false}; + bool is_collapsed{false}; + bool show{false}; } sidebar_layout; Bed3D bed; Camera camera; - // BBS: partplate related structure + //BBS: partplate related structure PartPlateList partplate_list; - // BBS: add a flag to ignore cancel event + //BBS: add a flag to ignore cancel event bool m_ignore_event{false}; bool m_slice_all{false}; - bool m_is_slicing{false}; + bool m_is_slicing {false}; // Missing-plugin set signatures (sorted full refs joined by '\n'), one per notification. They // gate plugin-load re-validation and avoid needlessly recreating the notification when the set // is unchanged. Whether missing plugins block slicing is derived directly from PluginResolver @@ -6774,17 +6746,17 @@ struct Plater::priv std::string m_cloud_missing_shown_sig; std::string m_inactive_shown_sig; std::string m_broken_shown_sig; - bool auto_reslice_pending{false}; - bool auto_reslice_after_cancel{false}; - bool m_is_publishing{false}; + bool auto_reslice_pending {false}; + bool auto_reslice_after_cancel {false}; + bool m_is_publishing {false}; int m_is_RightClickInLeftUI{-1}; int m_cur_slice_plate; - // BBS: m_slice_all in .gcode.3mf file case, set true when slice all - bool m_slice_all_only_has_gcode{false}; + //BBS: m_slice_all in .gcode.3mf file case, set true when slice all + bool m_slice_all_only_has_gcode{ false }; bool m_need_update{false}; - // BBS: add popup object table logic - // ObjectTableDialog* m_popup_table{ nullptr }; + //BBS: add popup object table logic + //ObjectTableDialog* m_popup_table{ nullptr }; #if ENABLE_ENVIRONMENT_MAP GLTexture environment_texture; @@ -6792,17 +6764,17 @@ struct Plater::priv Mouse3DController mouse3d_controller; View3D* view3D; // BBS - // GLToolbar view_toolbar; + //GLToolbar view_toolbar; GLToolbar collapse_toolbar; - Preview* preview; - AssembleView* assemble_view{nullptr}; - bool first_enter_assemble{true}; + Preview *preview; + AssembleView* assemble_view { nullptr }; + bool first_enter_assemble{ true }; std::unique_ptr notification_manager; ProjectDirtyStateManager dirty_state; - BackgroundSlicingProcess background_process; - bool suppressed_backround_processing_update{false}; + BackgroundSlicingProcess background_process; + bool suppressed_backround_processing_update { false }; // TODO: A mechanism would be useful for blocking the plater interactions: // objects would be frozen for the user. In case of arrange, an animation @@ -6812,22 +6784,22 @@ struct Plater::priv // UIThreadWorker can be used as a replacement for BoostThreadWorker if // no additional worker threads are desired (useful for debugging or profiling) PlaterWorker m_worker; - SLAImportDialog* m_sla_import_dlg; + SLAImportDialog * m_sla_import_dlg; - int m_job_prepare_state; + int m_job_prepare_state; - bool delayed_scene_refresh; - std::string delayed_error_message; + bool delayed_scene_refresh; + std::string delayed_error_message; - wxTimer background_process_timer; - wxTimer auto_reslice_timer; + wxTimer background_process_timer; + wxTimer auto_reslice_timer; - std::string label_btn_export; - std::string label_btn_send; + std::string label_btn_export; + std::string label_btn_send; - bool show_render_statistic_dialog{false}; - bool show_wireframe{false}; - bool wireframe_enabled{true}; + bool show_render_statistic_dialog{ false }; + bool show_wireframe{ false }; + bool wireframe_enabled{ true }; static const std::regex pattern_bundle; static const std::regex pattern_3mf; @@ -6837,9 +6809,10 @@ struct Plater::priv bool m_is_dark = false; - priv(Plater* q, MainFrame* main_frame); + priv(Plater *q, MainFrame *main_frame); ~priv(); + bool need_update() const { return m_need_update; } void set_need_update(bool need_update) { m_need_update = need_update; } @@ -6852,8 +6825,7 @@ struct Plater::priv Slic3r::put_other_changes(); dirty_state.update_from_presets(); } - int save_project_if_dirty(const wxString& reason) - { + int save_project_if_dirty(const wxString& reason) { int res = wxID_NO; if (dirty_state.is_dirty()) { MainFrame* mainframe = wxGetApp().mainframe; @@ -6861,13 +6833,11 @@ struct Plater::priv wxString suggested_project_name; wxString project_name = suggested_project_name = get_project_filename(".3mf"); if (suggested_project_name.IsEmpty()) { - fs::path output_file = get_export_file_path(FT_3MF); + fs::path output_file = get_export_file_path(FT_3MF); suggested_project_name = output_file.empty() ? _L("Untitled") : from_u8(output_file.stem().string()); } - res = MessageDialog(mainframe, - reason + "\n" + format_wxstr(_L("Do you want to save changes to \"%1%\"?"), suggested_project_name), - wxString(SLIC3R_APP_FULL_NAME), wxYES_NO | wxCANCEL) - .ShowModal(); + res = MessageDialog(mainframe, reason + "\n" + format_wxstr(_L("Do you want to save changes to \"%1%\"?"), suggested_project_name), + wxString(SLIC3R_APP_FULL_NAME), wxYES_NO | wxCANCEL).ShowModal(); if (res == wxID_YES) if (!mainframe->save_project_as(project_name)) res = wxID_CANCEL; @@ -6875,11 +6845,7 @@ struct Plater::priv } return res; } - void reset_project_dirty_after_save() - { - m_undo_redo_stack_main.mark_current_as_saved(); - dirty_state.reset_after_save(); - } + void reset_project_dirty_after_save() { m_undo_redo_stack_main.mark_current_as_saved(); dirty_state.reset_after_save(); } void reset_project_dirty_initial_presets() { dirty_state.reset_initial_presets(); } #if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW @@ -6893,7 +6859,7 @@ struct Plater::priv }; void update(unsigned int flags = 0); void select_view(const std::string& direction); - // BBS: add no_slice option + //BBS: add no_slice option void select_view_3D(const std::string& name, bool no_slice = true); void select_next_view_3D(); @@ -6905,7 +6871,7 @@ struct Plater::priv bool are_view3D_labels_shown() const { return (current_panel == view3D) && view3D->get_canvas3d()->are_labels_shown(); } void show_view3D_labels(bool show) { - if (current_panel == view3D) { + if (current_panel == view3D) { view3D->get_canvas3d()->show_labels(show); wxGetApp().app_config->set_bool("show_labels", show); } @@ -6914,7 +6880,7 @@ struct Plater::priv bool is_view3D_overhang_shown() const { return (current_panel == view3D) && view3D->get_canvas3d()->is_overhang_shown(); } void show_view3D_overhang(bool show) { - if (current_panel == view3D) { + if (current_panel == view3D) { view3D->get_canvas3d()->show_overhang(show); wxGetApp().app_config->set_bool("show_overhang", show); } @@ -6926,15 +6892,14 @@ struct Plater::priv void reset_window_layout(); Sidebar::DockingState get_sidebar_docking_state(); - bool is_view3D_layers_editing_enabled() const - { return (current_panel == view3D) && view3D->get_canvas3d()->is_layers_editing_enabled(); } + bool is_view3D_layers_editing_enabled() const { return (current_panel == view3D) && view3D->get_canvas3d()->is_layers_editing_enabled(); } void set_current_canvas_as_dirty(); GLCanvas3D* get_current_canvas3D(bool exclude_preview = false); void unbind_canvas_event_handlers(); void reset_canvas_volumes(); - bool check_ams_status_impl(bool is_slice_all); // Check whether the printer and ams status are consistent, for grouping algorithm - bool get_machine_sync_status(); // check whether the printer is linked and the printer type is same as selected profile + bool check_ams_status_impl(bool is_slice_all); // Check whether the printer and ams status are consistent, for grouping algorithm + bool get_machine_sync_status(); // check whether the printer is linked and the printer type is same as selected profile // BBS bool init_collapse_toolbar(); @@ -6963,7 +6928,7 @@ struct Plater::priv void update_ui_from_settings(); // BBS std::shared_ptr statusbar(); - std::string get_config(const std::string& key) const; + std::string get_config(const std::string &key) const; BoundingBoxf bed_shape_bb() const; BoundingBox scaled_bed_shape_bb() const; @@ -6973,37 +6938,31 @@ struct Plater::priv LoadStrategy strategy, bool ask_multi = false, bool* published_out = nullptr); - std::vector load_model_objects(const ModelObjectPtrs& model_objects, - bool allow_negative_z = false, - bool split_object = false, - bool auto_drop = true); + std::vector load_model_objects(const ModelObjectPtrs& model_objects, bool allow_negative_z = false, bool split_object = false, bool auto_drop = true); // Texture-to-color import: a mesh loaded with UVs + a texture map gets its faces clustered // into printable colours, which are then matched against (or added to) the filament list. - struct TextureImportResult - { - Slic3r::PaintedMesh painted; - std::vector matches; - std::vector> new_filament_colors; - std::vector new_filament_preset_names; + struct TextureImportResult { + Slic3r::PaintedMesh painted; + std::vector matches; + std::vector> new_filament_colors; + std::vector new_filament_preset_names; std::vector new_mixed_filaments; - std::vector filament_entries; - size_t existing_filament_count = 0; - bool skipped = false; - bool fallback_to_geometry_only = false; - wxString fallback_warning; + std::vector filament_entries; + size_t existing_filament_count = 0; + bool skipped = false; + bool fallback_to_geometry_only = false; + wxString fallback_warning; }; - bool run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, - TextureImportResult& result, - std::function cancel_callback = {}, + bool run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, TextureImportResult& result, + std::function cancel_callback = {}, std::function progress_callback = {}); - void apply_textured_mesh_import_result(Slic3r::Model& loaded_model, - const std::vector& obj_idxs, + void apply_textured_mesh_import_result(Slic3r::Model& loaded_model, const std::vector& obj_idxs, const TextureImportResult& result, - LoadProgressCallback progress_callback = {}, - bool update_scene = true); - void handle_textured_mesh_import(Slic3r::Model& model, const std::vector& obj_idxs, std::function cancel_callback = {}); + LoadProgressCallback progress_callback = {}, bool update_scene = true); + void handle_textured_mesh_import(Slic3r::Model& model, const std::vector& obj_idxs, + std::function cancel_callback = {}); fs::path get_export_file_path(GUI::FileType file_type); wxString get_export_file(GUI::FileType file_type, const wxString& title = {}, bool published = false); @@ -7028,7 +6987,7 @@ struct Plater::priv void deselect_all(); void exit_gizmo(); void remove(size_t obj_idx); - bool delete_object_from_model(size_t obj_idx, bool refresh_immediately = true); // BBS + bool delete_object_from_model(size_t obj_idx, bool refresh_immediately = true); //BBS void delete_all_objects_from_model(); void reset(bool apply_presets_change = false); void center_selection(); @@ -7040,11 +6999,7 @@ struct Plater::priv void scale_selection_to_fit_print_volume(); // Return the active Undo/Redo stack. It may be either the main stack or the Gimzo stack. - Slic3r::UndoRedo::Stack& undo_redo_stack() - { - assert(m_undo_redo_stack_active != nullptr); - return *m_undo_redo_stack_active; - } + Slic3r::UndoRedo::Stack& undo_redo_stack() { assert(m_undo_redo_stack_active != nullptr); return *m_undo_redo_stack_active; } Slic3r::UndoRedo::Stack& undo_redo_stack_main() { return m_undo_redo_stack_main; } void enter_gizmos_stack(); bool leave_gizmos_stack(); @@ -7052,7 +7007,7 @@ struct Plater::priv void take_snapshot(const std::string& snapshot_name, UndoRedo::SnapshotType snapshot_type = UndoRedo::SnapshotType::Action); /*void take_snapshot(const wxString& snapshot_name, UndoRedo::SnapshotType snapshot_type = UndoRedo::SnapshotType::Action) { this->take_snapshot(std::string(snapshot_name.ToUTF8().data()), snapshot_type); }*/ - int get_active_snapshot_index(); + int get_active_snapshot_index(); void undo(); void redo(); @@ -7061,25 +7016,22 @@ struct Plater::priv // BBS: backup bool up_to_date(bool saved, bool backup); - void suppress_snapshots() { m_prevent_snapshots++; } - void allow_snapshots() { m_prevent_snapshots--; } + void suppress_snapshots() { m_prevent_snapshots++; } + void allow_snapshots() { m_prevent_snapshots--; } // BBS: single snapshot - void single_snapshots_enter(SingleSnapshot* single) + void single_snapshots_enter(SingleSnapshot *single) { - if (m_single == nullptr) - m_single = single; + if (m_single == nullptr) m_single = single; } - void single_snapshots_leave(SingleSnapshot* single) + void single_snapshots_leave(SingleSnapshot *single) { - if (m_single == single) - m_single = nullptr; + if (m_single == single) m_single = nullptr; } - void process_validation_warning(StringObjectException const& warning) const; - void process_validation_warnings(const std::vector& warnings) const; + void process_validation_warning(StringObjectException const &warning) const; + void process_validation_warnings(const std::vector &warnings) const; - bool background_processing_enabled() const - { + bool background_processing_enabled() const { #ifdef SUPPORT_BACKGROUND_PROCESSING return this->get_config("background_processing") == "1"; #else @@ -7091,7 +7043,7 @@ struct Plater::priv void schedule_background_process(); void schedule_auto_reslice_if_needed(); void trigger_auto_reslice_now(); - int auto_slice_delay_seconds() const; + int auto_slice_delay_seconds() const; // Update background processing thread from the current config and Model. enum UpdateBackgroundProcessReturnState { // update_background_process() reports, that the Print / SLAPrint was updated in a way, @@ -7114,8 +7066,7 @@ struct Plater::priv bool restart_background_process(unsigned int state); // returns bit mask of UpdateBackgroundProcessReturnState unsigned int update_restart_background_process(bool force_scene_update, bool force_preview_update); - void show_delayed_error_message() - { + void show_delayed_error_message() { if (!this->delayed_error_message.empty()) { std::string msg = std::move(this->delayed_error_message); this->delayed_error_message.clear(); @@ -7131,7 +7082,7 @@ struct Plater::priv void replace_all_with_stl(); void reload_all_from_disk(); - // BBS: add no_slice option + //BBS: add no_slice option void set_current_panel(wxPanel* panel, bool no_slice = true); void on_combobox_select(wxCommandEvent&); @@ -7145,9 +7096,9 @@ struct Plater::priv void on_slicing_began(); void clear_warnings(); - void add_warning(const Slic3r::PrintStateBase::Warning& warning, size_t oid); + void add_warning(const Slic3r::PrintStateBase::Warning &warning, size_t oid); // Update notification manager with the current state of warnings produced by the background process (slicing). - void actualize_slicing_warnings(const PrintBase& print); + void actualize_slicing_warnings(const PrintBase &print); void actualize_object_warnings(const PrintBase& print); // Displays dialog window with list of warnings. // Returns true if user clicks OK. @@ -7160,32 +7111,32 @@ struct Plater::priv void on_action_split_objects(SimpleEvent&); void on_action_split_volumes(SimpleEvent&); void on_action_layersediting(SimpleEvent&); - void on_create_filament(SimpleEvent&); - void on_modify_filament(SimpleEvent&); - void on_add_filament(SimpleEvent&); - void on_delete_filament(SimpleEvent&); - void on_add_custom_filament(ColorEvent&); + void on_create_filament(SimpleEvent &); + void on_modify_filament(SimpleEvent &); + void on_add_filament(SimpleEvent &); + void on_delete_filament(SimpleEvent &); + void on_add_custom_filament(ColorEvent &); void on_object_select(SimpleEvent&); - void show_right_click_menu(Vec2d mouse_position, wxMenu* menu); + void show_right_click_menu(Vec2d mouse_position, wxMenu *menu); void on_right_click(RBtnEvent&); - // BBS: add model repair - void on_repair_model(wxCommandEvent& event); - void on_filament_color_changed(wxCommandEvent& event); - void show_install_plugin_hint(wxCommandEvent& event); - void install_network_plugin(wxCommandEvent& event); - void show_preview_only_hint(wxCommandEvent& event); - // BBS: add part plate related logic + //BBS: add model repair + void on_repair_model(wxCommandEvent &event); + void on_filament_color_changed(wxCommandEvent &event); + void show_install_plugin_hint(wxCommandEvent &event); + void install_network_plugin(wxCommandEvent &event); + void show_preview_only_hint(wxCommandEvent &event); + //BBS: add part plate related logic void on_plate_right_click(RBtnPlateEvent&); void on_plate_selected(SimpleEvent&); void on_action_request_model_id(wxCommandEvent& evt); void on_action_download_project(wxCommandEvent& evt); void on_slice_button_status(bool enable); - // BBS: GUI refactor: GLToolbar + //BBS: GUI refactor: GLToolbar void on_action_open_project(SimpleEvent&); void on_action_slice_plate(SimpleEvent&); void on_action_slice_all(SimpleEvent&); - void on_action_publish(wxCommandEvent& evt); + void on_action_publish(wxCommandEvent &evt); void on_action_print_plate(SimpleEvent&); void open_machine_select_dialog(int plate_idx, PrintFromType print_type = PrintFromType::FROM_NORMAL); void on_action_print_all(SimpleEvent&); @@ -7194,7 +7145,7 @@ struct Plater::priv void on_action_export_sliced_file(SimpleEvent&); void on_action_export_all_sliced_file(SimpleEvent&); void on_action_select_sliced_plate(wxCommandEvent& evt); - // BBS: change dark/light mode + //BBS: change dark/light mode void on_change_color_mode(SimpleEvent& evt); void on_apple_change_color_mode(wxSysColourChangedEvent& evt); void apply_color_mode(); @@ -7202,9 +7153,9 @@ struct Plater::priv void on_3dcanvas_mouse_dragging_started(SimpleEvent&); void on_3dcanvas_mouse_dragging_finished(SimpleEvent&); - // void show_action_buttons(const bool is_ready_to_slice) const; + //void show_action_buttons(const bool is_ready_to_slice) const; bool show_publish_dlg(bool show = true); - void update_publish_dialog_status(wxString& msg, int percent = -1); + void update_publish_dialog_status(wxString &msg, int percent = -1); void on_action_print_plate_from_sdcard(SimpleEvent&); void on_tab_selection_changing(wxBookCtrlEvent&); @@ -7213,16 +7164,16 @@ struct Plater::priv // triangulate the bed and store the triangles into m_bed.m_triangles, // fills the m_bed.m_grid_lines and sets m_bed.m_origin. // Sets m_bed.m_polygon to limit the object placement. - // BBS: add bed exclude area - void set_bed_shape(const Pointfs& shape, - const Pointfs& exclude_areas, - const Pointfs& wrapping_exclude_areas, - const double printable_height, + //BBS: add bed exclude area + void set_bed_shape(const Pointfs &shape, + const Pointfs &exclude_areas, + const Pointfs &wrapping_exclude_areas, + const double printable_height, std::vector extruder_areas, - std::vector extruder_heights, - const std::string& custom_texture, - const std::string& custom_model, - bool force_as_custom = false); + std::vector extruder_heights, + const std::string &custom_texture, + const std::string &custom_model, + bool force_as_custom = false); bool can_delete() const; bool can_delete_all() const; @@ -7240,7 +7191,7 @@ struct Plater::priv bool can_set_instance_to_object() const; bool can_mirror() const; bool can_reload_from_disk() const; - // BBS: + //BBS: bool can_fillcolor() const; bool has_assemble_view() const; bool can_replace_with_stl() const; @@ -7250,15 +7201,12 @@ struct Plater::priv bool can_scale_to_print_volume() const; #endif // ENABLE_ENHANCED_PRINT_VOLUME_FIT - // BBS: add plate_id for thumbnail - void generate_thumbnail(ThumbnailData& data, - unsigned int w, - unsigned int h, - const ThumbnailsParams& thumbnail_params, - Camera::EType camera_type, - Camera::ViewAngleType camera_view_angle_type = Camera::ViewAngleType::Iso, - bool for_picking = false, - bool ban_light = false); + //BBS: add plate_id for thumbnail + void generate_thumbnail(ThumbnailData& data, unsigned int w, unsigned int h, const ThumbnailsParams& thumbnail_params, + Camera::EType camera_type, + Camera::ViewAngleType camera_view_angle_type = Camera::ViewAngleType::Iso, + bool for_picking = false, + bool ban_light = false); ThumbnailsList generate_thumbnails(const ThumbnailsParams& params, Camera::EType camera_type); PlateBBoxData generate_first_layer_bbox(); @@ -7270,7 +7218,7 @@ struct Plater::priv wxString get_export_gcode_filename(const wxString& extension = wxEmptyString, bool only_filename = false, bool export_all = false) const; void set_project_filename(const wxString& filename); - // BBS store bbs project name + //BBS store bbs project name wxString get_project_name(); void set_project_name(const wxString& project_name); void update_title_dirty_status(); @@ -7280,34 +7228,27 @@ struct Plater::priv void update_objects_position_when_select_preset(const std::function& select_prest); - // Caching last value of show_action_buttons parameter for show_action_buttons(), so that a callback which does not know this state will - // not override it. - // mutable bool ready_to_slice = { false }; - // Flag indicating that the G-code export targets a removable device, therefore the show_action_buttons() needs to be called at any case - // when the background processing finishes. - ExportingStatus exporting_status{NOT_EXPORTING}; - std::string last_output_path; - std::string last_output_dir_path; - // BBS store machine_sn and 3mf_path for PrintJob - PrintPrepareData m_print_job_data; - bool inside_snapshot_capture() { return m_prevent_snapshots != 0; } - int process_completed_with_error{-1}; //-1 means no error + // Caching last value of show_action_buttons parameter for show_action_buttons(), so that a callback which does not know this state will not override it. + //mutable bool ready_to_slice = { false }; + // Flag indicating that the G-code export targets a removable device, therefore the show_action_buttons() needs to be called at any case when the background processing finishes. + ExportingStatus exporting_status { NOT_EXPORTING }; + std::string last_output_path; + std::string last_output_dir_path; + //BBS store machine_sn and 3mf_path for PrintJob + PrintPrepareData m_print_job_data; + bool inside_snapshot_capture() { return m_prevent_snapshots != 0; } + int process_completed_with_error { -1 }; //-1 means no error - // BBS: project - BBLProject project; + //BBS: project + BBLProject project; - // BBS: add print project related logic + //BBS: add print project related logic void update_fff_scene_only_shells(bool only_shells = true); - // BBS: add popup object table logic + //BBS: add popup object table logic bool PopupObjectTable(int object_id, int volume_id, const wxPoint& position); void on_action_send_to_printer(bool isall = false); void on_action_send_to_multi_machine(SimpleEvent&); - int update_print_required_data(Slic3r::DynamicPrintConfig config, - Slic3r::Model model, - Slic3r::PlateDataPtrs plate_data_list, - std::string file_name, - std::string file_path); - + int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path); private: bool layers_height_allowed() const; @@ -7320,30 +7261,30 @@ private: void on_action_export_to_sdcard_all(SimpleEvent&); void update_plugin_when_launch(wxCommandEvent& event); // path to project folder stored with no extension - boost::filesystem::path m_project_folder; + boost::filesystem::path m_project_folder; /* display project name */ - wxString m_project_name; + wxString m_project_name; - Slic3r::UndoRedo::Stack m_undo_redo_stack_main; - Slic3r::UndoRedo::Stack m_undo_redo_stack_gizmos; - Slic3r::UndoRedo::Stack* m_undo_redo_stack_active = &m_undo_redo_stack_main; - int m_prevent_snapshots = 0; /* Used for avoid of excess "snapshoting". - * Like for "delete selected" or "set numbers of copies" - * we should call tack_snapshot just ones - * instead of calls for each action separately - * */ + Slic3r::UndoRedo::Stack m_undo_redo_stack_main; + Slic3r::UndoRedo::Stack m_undo_redo_stack_gizmos; + Slic3r::UndoRedo::Stack *m_undo_redo_stack_active = &m_undo_redo_stack_main; + int m_prevent_snapshots = 0; /* Used for avoid of excess "snapshoting". + * Like for "delete selected" or "set numbers of copies" + * we should call tack_snapshot just ones + * instead of calls for each action separately + * */ // BBS: single snapshot - Plater::SingleSnapshot* m_single = nullptr; + Plater::SingleSnapshot *m_single = nullptr; // BBS: backup - size_t m_saved_timestamp = 0; + size_t m_saved_timestamp = 0; size_t m_backup_timestamp = 0; - std::string m_last_fff_printer_profile_name; - std::string m_last_sla_printer_profile_name; + std::string m_last_fff_printer_profile_name; + std::string m_last_sla_printer_profile_name; // vector of all warnings generated by last slicing std::vector> current_warnings; - bool show_warning_dialog{false}; + bool show_warning_dialog { false }; }; Plater::~Plater() = default; @@ -7354,7 +7295,7 @@ const std::regex Plater::priv::pattern_zip_amf(".*[.]zip[.]amf", std::regex::ica const std::regex Plater::priv::pattern_any_amf(".*[.](amf|amf[.]xml|zip[.]amf)", std::regex::icase); const std::regex Plater::priv::pattern_prusa(".*bbl", std::regex::icase); -bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames) +bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString &filenames) { #ifdef WIN32 // hides the system icon @@ -7368,14 +7309,14 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& fi // When only one .svg file is dropped on scene if (filenames.size() == 1) { - const wxString& filename = filenames.Last(); - const wxString file_extension = filename.substr(filename.length() - 4); + const wxString &filename = filenames.Last(); + const wxString file_extension = filename.substr(filename.length() - 4); if (file_extension.CmpNoCase(".svg") == 0) { // BBS: GUI refactor: move sidebar to the left - const wxPoint offset = m_plater.GetPosition() + m_plater.p->current_panel->GetPosition(); + const wxPoint offset = m_plater.GetPosition() + m_plater.p->current_panel->GetPosition(); Vec2d mouse_position(x - offset.x, y - offset.y); // Scale for retina displays - const GLCanvas3D* canvas = m_plater.canvas3D(); + const GLCanvas3D *canvas = m_plater.canvas3D(); canvas->apply_retina_scale(mouse_position); return emboss_svg(m_plater, filename, mouse_position); } @@ -7385,26 +7326,29 @@ bool PlaterDropTarget::OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& fi return res; } -Plater::priv::priv(Plater* q, MainFrame* main_frame) +Plater::priv::priv(Plater *q, MainFrame *main_frame) : q(q) , main_frame(main_frame) - // BBS: add bed_exclude_area - , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys( - {"printable_area", "bed_exclude_area", "wrapping_exclude_area", "extruder_printable_area", "bed_custom_texture", - "bed_custom_model", "print_sequence", "extruder_clearance_radius", "extruder_clearance_height_to_lid", - "extruder_clearance_height_to_rod", "nozzle_height", "skirt_type", "skirt_loops", "skirt_speed", "min_skirt_length", - "skirt_distance", "skirt_start_angle", "brim_width", "brim_object_gap", "brim_flow_ratio", "brim_use_efc_outline", - "combine_brims", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "preferred_orientation", "enable_prime_tower", - "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", - "prime_tower_enable_framework", "prime_tower_infill_gap", "prime_volume", "extruder_colour", "filament_colour", "filament_type", - "filament_is_support", "material_colour", "printable_height", "extruder_printable_height", "printer_model", "printer_technology", - // These values are necessary to construct SlicingParameters by the Canvas3D variable layer height editor. - "layer_height", "initial_layer_print_height", "min_layer_height", "max_layer_height", "wall_loops", "outer_wall_filament_id", - "inner_wall_filament_id", "sparse_infill_density", "sparse_infill_filament_id", "top_shell_layers", "enable_support", - "support_filament", "support_interface_filament", "support_top_z_distance", "support_bottom_z_distance", "raft_layers", - "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extra_flow", - "wipe_tower_max_purge_speed", "wipe_tower_wall_type", "wipe_tower_extra_rib_length", "wipe_tower_rib_width", - "wipe_tower_fillet_wall", "wipe_tower_filament", "best_object_pos", "master_extruder_id"})) + //BBS: add bed_exclude_area + , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({ + "printable_area", "bed_exclude_area", "wrapping_exclude_area", "extruder_printable_area", "bed_custom_texture", "bed_custom_model", "print_sequence", + "extruder_clearance_radius", + "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", + "nozzle_height", "skirt_type", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle", + "brim_width", "brim_object_gap", "brim_flow_ratio", "brim_use_efc_outline", "combine_brims", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "preferred_orientation", + "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_enable_framework", + "prime_tower_infill_gap", "prime_volume", + "extruder_colour", "filament_colour", "filament_type", "filament_is_support", "material_colour", "printable_height", "extruder_printable_height", "printer_model", "printer_technology", + // These values are necessary to construct SlicingParameters by the Canvas3D variable layer height editor. + "layer_height", "initial_layer_print_height", "min_layer_height", "max_layer_height", + "wall_loops", "outer_wall_filament_id", "inner_wall_filament_id", "sparse_infill_density", "sparse_infill_filament_id", "top_shell_layers", + "enable_support", "support_filament", "support_interface_filament", + "support_top_z_distance", "support_bottom_z_distance", "raft_layers", + "wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_extra_flow", "wipe_tower_max_purge_speed", + "wipe_tower_wall_type", "wipe_tower_extra_rib_length","wipe_tower_rib_width","wipe_tower_fillet_wall", + "wipe_tower_filament", + "best_object_pos", "master_extruder_id" + })) , sidebar(new Sidebar(q)) , notification_manager(std::make_unique(q)) , m_worker{q, std::make_unique(notification_manager.get()), "ui_worker"} @@ -7412,7 +7356,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) , m_job_prepare_state(Job::JobPrepareState::PREPARE_STATE_DEFAULT) , delayed_scene_refresh(false) , collapse_toolbar(GLToolbar::Normal, "Collapse") - // BBS :partplatelist construction + //BBS :partplatelist construction , partplate_list(this->q, &model) { m_is_dark = wxGetApp().app_config->get("dark_color_mode") == "1"; @@ -7427,21 +7371,21 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) if (disable_wayland_floating) m_aui_mgr.SetFlags(m_aui_mgr.GetFlags() & ~wxAUI_MGR_ALLOW_FLOATING); #endif - // m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE, 0); - // m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_SASH_SIZE, 2); + //m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE, 0); + //m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_SASH_SIZE, 2); m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_CAPTION_SIZE, 18); m_aui_mgr.GetArtProvider()->SetMetric(wxAUI_DOCKART_GRADIENT_TYPE, wxAUI_GRADIENT_NONE); this->q->SetFont(Slic3r::GUI::wxGetApp().normal_font()); - // BBS: use the first partplate's print for background process + //BBS: use the first partplate's print for background process partplate_list.update_slice_context_to_current_plate(background_process); /* background_process.set_fff_print(&fff_print); background_process.set_sla_print(&sla_print); background_process.set_gcode_result(&gcode_result); - background_process.set_thumbnail_cb([this](const ThumbnailsParams& params) { return this->generate_thumbnails(params, - Camera::EType::Ortho); }); background_process.set_slicing_completed_event(EVT_SLICING_COMPLETED); + background_process.set_thumbnail_cb([this](const ThumbnailsParams& params) { return this->generate_thumbnails(params, Camera::EType::Ortho); }); + background_process.set_slicing_completed_event(EVT_SLICING_COMPLETED); background_process.set_finished_event(EVT_PROCESS_COMPLETED); background_process.set_export_began_event(EVT_EXPORT_BEGAN); // Default printer technology for default config. @@ -7455,8 +7399,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) sla_print.set_status_callback(statuscb); */ // BBS: to be checked. Not follow patch. - background_process.set_thumbnail_cb( - [this](const ThumbnailsParams& params) { return this->generate_thumbnails(params, Camera::EType::Ortho); }); + background_process.set_thumbnail_cb([this](const ThumbnailsParams& params) { return this->generate_thumbnails(params, Camera::EType::Ortho); }); background_process.set_slicing_completed_event(EVT_SLICING_COMPLETED); background_process.set_finished_event(EVT_PROCESS_COMPLETED); background_process.set_export_began_event(EVT_EXPORT_BEGAN); @@ -7479,17 +7422,16 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) main_frame->m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGING, &priv::on_tab_selection_changing, this); auto* panel_3d = new wxPanel(q); - view3D = new View3D(panel_3d, bed, &model, config, &background_process); - // BBS: use partplater's gcode - preview = new Preview(panel_3d, bed, &model, config, &background_process, partplate_list.get_current_slice_result(), - [this]() { schedule_background_process(); }); + view3D = new View3D(panel_3d, bed, &model, config, &background_process); + //BBS: use partplater's gcode + preview = new Preview(panel_3d, bed, &model, config, &background_process, partplate_list.get_current_slice_result(), [this]() { schedule_background_process(); }); assemble_view = new AssembleView(panel_3d, bed, &model, config, &background_process); #ifdef __APPLE__ // BBS // set default view_toolbar icons size equal to GLGizmosManager::Default_Icons_Size - // view_toolbar.set_icons_size(GLGizmosManager::Default_Icons_Size); + //view_toolbar.set_icons_size(GLGizmosManager::Default_Icons_Size); #endif // __APPLE__ panels.push_back(view3D); @@ -7498,7 +7440,8 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) this->background_process_timer.SetOwner(this->q, 0); this->auto_reslice_timer.SetOwner(this->q, 0); - this->q->Bind(wxEVT_TIMER, [this](wxTimerEvent& evt) { + this->q->Bind(wxEVT_TIMER, [this](wxTimerEvent &evt) + { if (&evt.GetTimer() == &this->background_process_timer) { if (!this->suppressed_backround_processing_update) this->update_restart_background_process(false, false); @@ -7513,8 +7456,13 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) update(); // Orca: Make sidebar dockable - m_aui_mgr.AddPane(sidebar, wxAuiPaneInfo().Name("sidebar").Left().CloseButton(false).TopDockable(false).BottomDockable(false).BestSize( - wxSize(39 * wxGetApp().em_unit(), 90 * wxGetApp().em_unit()))); + m_aui_mgr.AddPane(sidebar, wxAuiPaneInfo() + .Name("sidebar") + .Left() + .CloseButton(false) + .TopDockable(false) + .BottomDockable(false) + .BestSize(wxSize(39 * wxGetApp().em_unit(), 90 * wxGetApp().em_unit()))); auto* panel_sizer = new wxBoxSizer(wxHORIZONTAL); panel_sizer->Add(view3D, 1, wxEXPAND | wxALL, 0); @@ -7529,8 +7477,8 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) auto& sidebar = m_aui_mgr.GetPane(this->sidebar); // Load previous window layout - const auto cfg = wxGetApp().app_config; - wxString layout = wxString::FromUTF8(cfg->get("window_layout")); + const auto cfg = wxGetApp().app_config; + wxString layout = wxString::FromUTF8(cfg->get("window_layout")); if (!layout.empty()) { bool removed_floating_state = false; #ifdef __WXGTK__ @@ -7564,6 +7512,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) menus.init(main_frame); + // Events: if (wxGetApp().is_editor()) { @@ -7575,14 +7524,15 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) // jump to found option from SearchDialog q->Bind(wxCUSTOMEVT_JUMP_TO_OPTION, [this](wxCommandEvent& evt) { sidebar->jump_to_option(evt.GetInt()); }); q->Bind(wxCUSTOMEVT_JUMP_TO_OBJECT, [this](wxCommandEvent& evt) { - auto client_data = evt.GetClientData(); + auto client_data = evt.GetClientData(); ObjectDataViewModelNode* data = static_cast(client_data); sidebar->jump_to_object(data); - }); + } + ); } wxGLCanvas* view3D_canvas = view3D->get_wxglcanvas(); - // BBS: GUI refactor + //BBS: GUI refactor wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); if (wxGetApp().is_editor()) { @@ -7590,34 +7540,30 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) view3D_canvas->Bind(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS, [this](SimpleEvent&) { delayed_error_message.clear(); this->background_process_timer.Start(500, wxTIMER_ONE_SHOT); - }); + }); view3D_canvas->Bind(EVT_GLCANVAS_OBJECT_SELECT, &priv::on_object_select, this); view3D_canvas->Bind(EVT_GLCANVAS_RIGHT_CLICK, &priv::on_right_click, this); - // BBS: add part plate related logic + //BBS: add part plate related logic view3D_canvas->Bind(EVT_GLCANVAS_PLATE_RIGHT_CLICK, &priv::on_plate_right_click, this); view3D_canvas->Bind(EVT_GLCANVAS_REMOVE_OBJECT, [q](SimpleEvent&) { q->remove_selected(); }); view3D_canvas->Bind(EVT_GLCANVAS_ARRANGE, [this](SimpleEvent& evt) { - // BBS arrange from EVT set default state. + //BBS arrange from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_DEFAULT); - this->q->arrange(); - }); + this->q->arrange(); }); view3D_canvas->Bind(EVT_GLCANVAS_ARRANGE_PARTPLATE, [this](SimpleEvent& evt) { - // BBS arrange from EVT set default state. + //BBS arrange from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_MENU); - this->q->arrange(); - }); + this->q->arrange(); }); view3D_canvas->Bind(EVT_GLCANVAS_ORIENT, [this](SimpleEvent& evt) { - // BBS orient from EVT set default state. + //BBS orient from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_DEFAULT); - this->q->orient(); - }); + this->q->orient(); }); view3D_canvas->Bind(EVT_GLCANVAS_ORIENT_PARTPLATE, [this](SimpleEvent& evt) { - // BBS orient from EVT set default state. + //BBS orient from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_MENU); - this->q->orient(); - }); - // BBS - view3D_canvas->Bind(EVT_GLCANVAS_SELECT_CURR_PLATE_ALL, [this](SimpleEvent&) { this->q->select_curr_plate_all(); }); + this->q->orient(); }); + //BBS + view3D_canvas->Bind(EVT_GLCANVAS_SELECT_CURR_PLATE_ALL, [this](SimpleEvent&) {this->q->select_curr_plate_all(); }); view3D_canvas->Bind(EVT_GLCANVAS_PRINTABLE, [this](SimpleEvent& evt) { this->sidebar->obj_list()->toggle_printable_state(); }); view3D_canvas->Bind(EVT_GLCANVAS_SELECT_ALL, [this](SimpleEvent&) { this->q->select_all(); }); @@ -7626,18 +7572,14 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) if (this->q->is_view3D_shown()) wxGetApp().open_speed_dial(); }); - view3D_canvas->Bind(EVT_GLCANVAS_INCREASE_INSTANCES, [this](Event& evt) { - if (evt.data == 1) - this->q->increase_instances(); - else if (this->can_decrease_instances()) - this->q->decrease_instances(); - }); + view3D_canvas->Bind(EVT_GLCANVAS_INCREASE_INSTANCES, [this](Event& evt) + { if (evt.data == 1) this->q->increase_instances(); else if (this->can_decrease_instances()) this->q->decrease_instances(); }); view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_MOVED, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_FORCE_UPDATE, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_ROTATED, [this](SimpleEvent&) { update(); }); view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_SCALED, [this](SimpleEvent&) { update(); }); // BBS - // view3D_canvas->Bind(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, [this](Event& evt) { this->sidebar->enable_buttons(evt.data); }); + //view3D_canvas->Bind(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, [this](Event& evt) { this->sidebar->enable_buttons(evt.data); }); view3D_canvas->Bind(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, [this](Event& evt) { on_slice_button_status(evt.data); }); view3D_canvas->Bind(EVT_GLCANVAS_UPDATE_GEOMETRY, &priv::on_update_geometry, this); view3D_canvas->Bind(EVT_GLCANVAS_MOUSE_DRAGGING_STARTED, &priv::on_3dcanvas_mouse_dragging_started, this); @@ -7646,89 +7588,83 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) view3D_canvas->Bind(EVT_GLCANVAS_RESETGIZMOS, [this](SimpleEvent&) { reset_all_gizmos(); }); view3D_canvas->Bind(EVT_GLCANVAS_UNDO, [this](SimpleEvent&) { this->undo(); }); view3D_canvas->Bind(EVT_GLCANVAS_REDO, [this](SimpleEvent&) { this->redo(); }); - view3D_canvas->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, - [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); }); - view3D_canvas->Bind(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE, - [this](SimpleEvent&) { this->view3D->get_canvas3d()->reset_layer_height_profile(); }); - view3D_canvas->Bind(EVT_GLCANVAS_ADAPTIVE_LAYER_HEIGHT_PROFILE, - [this](Event& evt) { this->view3D->get_canvas3d()->adaptive_layer_height_profile(evt.data); }); - view3D_canvas->Bind(EVT_GLCANVAS_SMOOTH_LAYER_HEIGHT_PROFILE, - [this](HeightProfileSmoothEvent& evt) { this->view3D->get_canvas3d()->smooth_layer_height_profile(evt.data); }); + view3D_canvas->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); }); + view3D_canvas->Bind(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE, [this](SimpleEvent&) { this->view3D->get_canvas3d()->reset_layer_height_profile(); }); + view3D_canvas->Bind(EVT_GLCANVAS_ADAPTIVE_LAYER_HEIGHT_PROFILE, [this](Event& evt) { this->view3D->get_canvas3d()->adaptive_layer_height_profile(evt.data); }); + view3D_canvas->Bind(EVT_GLCANVAS_SMOOTH_LAYER_HEIGHT_PROFILE, [this](HeightProfileSmoothEvent& evt) { this->view3D->get_canvas3d()->smooth_layer_height_profile(evt.data); }); view3D_canvas->Bind(EVT_GLCANVAS_RELOAD_FROM_DISK, [this](SimpleEvent&) { this->reload_all_from_disk(); }); // 3DScene/Toolbar: view3D_canvas->Bind(EVT_GLTOOLBAR_ADD, &priv::on_action_add, this); view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE, [q](SimpleEvent&) { q->remove_selected(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE_ALL, [this](SimpleEvent&) { delete_all_objects_from_model(); }); - // view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE_ALL, [q](SimpleEvent&) { q->reset_with_confirm(); }); +// view3D_canvas->Bind(EVT_GLTOOLBAR_DELETE_ALL, [q](SimpleEvent&) { q->reset_with_confirm(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_ADD_PLATE, &priv::on_action_add_plate, this); view3D_canvas->Bind(EVT_GLTOOLBAR_DEL_PLATE, &priv::on_action_del_plate, this); view3D_canvas->Bind(EVT_GLTOOLBAR_ORIENT, [this](SimpleEvent&) { - // BBS arrange from EVT set default state. + //BBS arrange from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_DEFAULT); - this->q->orient(); - }); + this->q->orient(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_ARRANGE, [this](SimpleEvent&) { - // BBS arrange from EVT set default state. + //BBS arrange from EVT set default state. this->q->set_prepare_state(Job::PREPARE_STATE_DEFAULT); this->q->arrange(); - }); + }); view3D_canvas->Bind(EVT_GLTOOLBAR_CUT, [q](SimpleEvent&) { q->cut_selection_to_clipboard(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_COPY, [q](SimpleEvent&) { q->copy_selection_to_clipboard(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_PASTE, [q](SimpleEvent&) { q->paste_from_clipboard(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_LAYERSEDITING, &priv::on_action_layersediting, this); - // BBS: add clone + //BBS: add clone view3D_canvas->Bind(EVT_GLTOOLBAR_CLONE, [q](SimpleEvent&) { q->clone_selection(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_MORE, [q](SimpleEvent&) { q->increase_instances(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_FEWER, [q](SimpleEvent&) { q->decrease_instances(); }); view3D_canvas->Bind(EVT_GLTOOLBAR_SPLIT_OBJECTS, &priv::on_action_split_objects, this); view3D_canvas->Bind(EVT_GLTOOLBAR_SPLIT_VOLUMES, &priv::on_action_split_volumes, this); - // BBS: GUI refactor: GLToolbar + //BBS: GUI refactor: GLToolbar view3D_canvas->Bind(EVT_GLTOOLBAR_OPEN_PROJECT, &priv::on_action_open_project, this); - // view3D_canvas->Bind(EVT_GLTOOLBAR_SLICE_PLATE, &priv::on_action_slice_plate, this); - // view3D_canvas->Bind(EVT_GLTOOLBAR_SLICE_ALL, &priv::on_action_slice_all, this); - // view3D_canvas->Bind(EVT_GLTOOLBAR_PRINT_PLATE, &priv::on_action_print_plate, this); - // view3D_canvas->Bind(EVT_GLTOOLBAR_PRINT_ALL, &priv::on_action_print_all, this); - // view3D_canvas->Bind(EVT_GLTOOLBAR_EXPORT_GCODE, &priv::on_action_export_gcode, this); + //view3D_canvas->Bind(EVT_GLTOOLBAR_SLICE_PLATE, &priv::on_action_slice_plate, this); + //view3D_canvas->Bind(EVT_GLTOOLBAR_SLICE_ALL, &priv::on_action_slice_all, this); + //view3D_canvas->Bind(EVT_GLTOOLBAR_PRINT_PLATE, &priv::on_action_print_plate, this); + //view3D_canvas->Bind(EVT_GLTOOLBAR_PRINT_ALL, &priv::on_action_print_all, this); + //view3D_canvas->Bind(EVT_GLTOOLBAR_EXPORT_GCODE, &priv::on_action_export_gcode, this); view3D_canvas->Bind(EVT_GLVIEWTOOLBAR_ASSEMBLE, [q](SimpleEvent&) { q->select_view_3D("Assemble"); }); - // preview also send these events - // preview_canvas->Bind(EVT_GLTOOLBAR_SLICE_PLATE, &priv::on_action_slice_plate, this); - // preview_canvas->Bind(EVT_GLTOOLBAR_PRINT_PLATE, &priv::on_action_print_plate, this); - // preview_canvas->Bind(EVT_GLTOOLBAR_PRINT_ALL, &priv::on_action_print_all, this); - // review_canvas->Bind(EVT_GLTOOLBAR_EXPORT_GCODE, &priv::on_action_export_gcode, this); + //preview also send these events + //preview_canvas->Bind(EVT_GLTOOLBAR_SLICE_PLATE, &priv::on_action_slice_plate, this); + //preview_canvas->Bind(EVT_GLTOOLBAR_PRINT_PLATE, &priv::on_action_print_plate, this); + //preview_canvas->Bind(EVT_GLTOOLBAR_PRINT_ALL, &priv::on_action_print_all, this); + //review_canvas->Bind(EVT_GLTOOLBAR_EXPORT_GCODE, &priv::on_action_export_gcode, this); view3D_canvas->Bind(EVT_GLCANVAS_SWITCH_TO_OBJECT, [main_frame](SimpleEvent&) { - if (main_frame->m_param_panel) { - main_frame->m_param_panel->switch_to_object(false); - } - }); + if (main_frame->m_param_panel) { + main_frame->m_param_panel->switch_to_object(false); + } + }); view3D_canvas->Bind(EVT_GLCANVAS_SWITCH_TO_GLOBAL, [main_frame](SimpleEvent&) { - if (main_frame->m_param_panel) { - main_frame->m_param_panel->switch_to_global(); - } - }); + if (main_frame->m_param_panel) { + main_frame->m_param_panel->switch_to_global(); + } + }); } view3D_canvas->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); // Preview events: preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_QUESTION_MARK, [](SimpleEvent&) { wxGetApp().keyboard_shortcuts(); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); - preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_UPDATE, [this](SimpleEvent&) { preview->get_canvas3d()->set_as_dirty(); }); + preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_UPDATE, [this](SimpleEvent &) { + preview->get_canvas3d()->set_as_dirty(); + }); if (wxGetApp().is_editor()) { preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_TAB, [this](SimpleEvent&) { select_next_view_3D(); }); - preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, - [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); }); + preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); }); preview->get_wxglcanvas()->Bind(EVT_CUSTOMEVT_TICKSCHANGED, [this](wxCommandEvent& event) { - Type tick_event_type = (Type) event.GetInt(); - Model& model = wxGetApp().plater()->model(); - // BBS: replace model custom gcode with current plate custom gcode - model.plates_custom_gcodes[model.curr_plate_index] = - preview->get_canvas3d()->get_gcode_viewer().get_layers_slider()->GetTicksValues(); + Type tick_event_type = (Type)event.GetInt(); + Model& model = wxGetApp().plater()->model(); + //BBS: replace model custom gcode with current plate custom gcode + model.plates_custom_gcodes[model.curr_plate_index] = preview->get_canvas3d()->get_gcode_viewer().get_layers_slider()->GetTicksValues(); // BBS set to invalid state only - if (tick_event_type == Type::ToolChange || tick_event_type == Type::Custom || tick_event_type == Type::Template || - tick_event_type == Type::PausePrint) { - PartPlate* plate = this->q->get_partplate_list().get_curr_plate(); + if (tick_event_type == Type::ToolChange || tick_event_type == Type::Custom || tick_event_type == Type::Template || tick_event_type == Type::PausePrint) { + PartPlate *plate = this->q->get_partplate_list().get_curr_plate(); if (plate) { plate->update_slice_result_valid_state(false); } @@ -7745,7 +7681,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) if (wxGetApp().is_gcode_viewer()) preview->Bind(EVT_GLCANVAS_RELOAD_FROM_DISK, [this](SimpleEvent&) { this->q->reload_gcode_from_disk(); }); - // BBS + //BBS wxGLCanvas* assemble_canvas = assemble_view->get_wxglcanvas(); if (wxGetApp().is_editor()) { assemble_canvas->Bind(EVT_GLTOOLBAR_FILLCOLOR, [q](IntEvent& evt) { q->fill_color(evt.get_data()); }); @@ -7763,7 +7699,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) q->Bind(EVT_EXPORT_BEGAN, &priv::on_export_began, this); q->Bind(EVT_EXPORT_FINISHED, &priv::on_export_finished, this); q->Bind(EVT_GLVIEWTOOLBAR_3D, [q](SimpleEvent&) { q->select_view_3D("3D"); }); - // BBS: set on_slice to false + //BBS: set on_slice to false q->Bind(EVT_GLVIEWTOOLBAR_PREVIEW, [q](SimpleEvent&) { q->select_view_3D("Preview", false); }); q->Bind(EVT_GLTOOLBAR_SLICE_PLATE, &priv::on_action_slice_plate, this); q->Bind(EVT_GLTOOLBAR_SLICE_ALL, &priv::on_action_slice_all, this); @@ -7784,14 +7720,14 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) q->Bind(EVT_PRINT_FINISHED, [q](wxCommandEvent& evt) { q->print_job_finished(evt); }); q->Bind(EVT_SEND_CALIBRATION_FINISHED, [q](wxCommandEvent& evt) { q->send_calibration_job_finished(evt); }); q->Bind(EVT_SEND_FINISHED, [q](wxCommandEvent& evt) { q->send_job_finished(evt); }); - q->Bind(EVT_PUBLISH_FINISHED, [q](wxCommandEvent& evt) { q->publish_job_finished(evt); }); - q->Bind(EVT_OPEN_PLATESETTINGSDIALOG, [q](wxCommandEvent& evt) { q->open_platesettings_dialog(evt); }); - q->Bind(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG, [q](wxCommandEvent& evt) { q->open_filament_map_setting_dialog(evt); }); - // q->Bind(EVT_GLVIEWTOOLBAR_ASSEMBLE, [q](SimpleEvent&) { q->select_view_3D("Assemble"); }); + q->Bind(EVT_PUBLISH_FINISHED, [q](wxCommandEvent& evt) { q->publish_job_finished(evt);}); + q->Bind(EVT_OPEN_PLATESETTINGSDIALOG, [q](wxCommandEvent& evt) { q->open_platesettings_dialog(evt);}); + q->Bind(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG, [q](wxCommandEvent &evt) { q->open_filament_map_setting_dialog(evt); }); + //q->Bind(EVT_GLVIEWTOOLBAR_ASSEMBLE, [q](SimpleEvent&) { q->select_view_3D("Assemble"); }); } // Drop target: - q->SetDropTarget(new PlaterDropTarget(*main_frame, *q)); // if my understanding is right, wxWindow takes the owenership + q->SetDropTarget(new PlaterDropTarget(*main_frame, *q)); // if my understanding is right, wxWindow takes the owenership q->Layout(); apply_color_mode(); @@ -7817,41 +7753,43 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) // Register an USB HID (Human Interface Device) attach event. evt contains Win32 path to the USB device containing VID, PID and other info. // This event wakes up the Mouse3DController's background thread to enumerate HID devices, if the VID of the callback event // is one of the 3D Mouse vendors (3DConnexion or Logitech). - this->q->Bind(EVT_HID_DEVICE_ATTACHED, [this](HIDDeviceAttachedEvent& evt) { mouse3d_controller.device_attached(evt.data); }); - this->q->Bind(EVT_HID_DEVICE_DETACHED, [this](HIDDeviceAttachedEvent& evt) { mouse3d_controller.device_detached(evt.data); }); + this->q->Bind(EVT_HID_DEVICE_ATTACHED, [this](HIDDeviceAttachedEvent &evt) { + mouse3d_controller.device_attached(evt.data); + }); + this->q->Bind(EVT_HID_DEVICE_DETACHED, [this](HIDDeviceAttachedEvent& evt) { + mouse3d_controller.device_detached(evt.data); + }); #endif /* _WIN32 */ - // notification_manager = new NotificationManager(this->q); + //notification_manager = new NotificationManager(this->q); if (wxGetApp().is_editor()) { this->q->Bind(EVT_EJECT_DRIVE_NOTIFICAION_CLICKED, [this](EjectDriveNotificationClickedEvent&) { this->q->eject_drive(); }); this->q->Bind(EVT_EXPORT_GCODE_NOTIFICAION_CLICKED, [this](ExportGcodeNotificationClickedEvent&) { this->q->export_gcode(true); }); - this->q->Bind(EVT_PRESET_UPDATE_AVAILABLE_CLICKED, - [](PresetUpdateAvailableClickedEvent&) { wxGetApp().get_preset_updater()->on_update_notification_confirm(); }); + this->q->Bind(EVT_PRESET_UPDATE_AVAILABLE_CLICKED, [](PresetUpdateAvailableClickedEvent&) { wxGetApp().get_preset_updater()->on_update_notification_confirm(); }); this->q->Bind(EVT_PRINTER_CONFIG_UPDATE_AVAILABLE_CLICKED, [](PrinterConfigUpdateAvailableClickedEvent&) { wxGetApp().get_preset_updater()->do_printer_config_update(); - wxGetApp().getDeviceManager()->reload_printer_settings(); - }); + wxGetApp().getDeviceManager()->reload_printer_settings(); }); /* BBS do not handle removeable driver event */ - this->q->Bind(EVT_REMOVABLE_DRIVE_EJECTED, [this](RemovableDriveEjectEvent& evt) { + this->q->Bind(EVT_REMOVABLE_DRIVE_EJECTED, [this](RemovableDriveEjectEvent &evt) { if (evt.data.second) { // BBS - // this->show_action_buttons(this->ready_to_slice); + //this->show_action_buttons(this->ready_to_slice); notification_manager->close_notification_of_type(NotificationType::ExportFinished); - notification_manager->push_notification( - NotificationType::CustomNotification, NotificationManager::NotificationLevel::RegularNotificationLevel, - format(_L("Successfully unmounted. The device %s (%s) can now be safely removed from the computer."), - evt.data.first.name, evt.data.first.path)); + notification_manager->push_notification(NotificationType::CustomNotification, + NotificationManager::NotificationLevel::RegularNotificationLevel, + format(_L("Successfully unmounted. The device %s (%s) can now be safely removed from the computer."), evt.data.first.name, evt.data.first.path) + ); } else { notification_manager->push_notification(NotificationType::CustomNotification, NotificationManager::NotificationLevel::ErrorNotificationLevel, - format(_L("Ejecting of device %s (%s) has failed."), evt.data.first.name, - evt.data.first.path)); + format(_L("Ejecting of device %s (%s) has failed."), evt.data.first.name, evt.data.first.path) + ); } }); - this->q->Bind(EVT_REMOVABLE_DRIVES_CHANGED, [this](RemovableDrivesChangedEvent&) { + this->q->Bind(EVT_REMOVABLE_DRIVES_CHANGED, [this](RemovableDrivesChangedEvent &) { // BBS - // this->show_action_buttons(this->ready_to_slice); + //this->show_action_buttons(this->ready_to_slice); // Close notification ExportingFinished but only if last export was to removable notification_manager->device_ejected(); }); @@ -7865,12 +7803,12 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) } // Initialize the Undo / Redo stack with a first snapshot. - // this->take_snapshot("New Project", UndoRedo::SnapshotType::ProjectSeparator); + //this->take_snapshot("New Project", UndoRedo::SnapshotType::ProjectSeparator); // Reset the "dirty project" flag. m_undo_redo_stack_main.mark_current_as_saved(); dirty_state.update_from_undo_redo_stack(false); - // this->take_snapshot("New Project"); - // BBS: save project confirm + //this->take_snapshot("New Project"); + // BBS: save project confirm up_to_date(true, false); up_to_date(true, true); model.set_need_backup(); @@ -7882,9 +7820,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) std::string last_backup = last; std::string originfile; if (Slic3r::has_restore_data(last_backup, originfile)) { - auto result = MessageDialog(this->q, _L("Previously unsaved items have been detected. Do you want to restore them\?"), - wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Restore"), wxYES_NO | wxYES_DEFAULT | wxCENTRE) - .ShowModal(); + auto result = MessageDialog(this->q, _L("Previously unsaved items have been detected. Do you want to restore them\?"), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Restore"), wxYES_NO | wxYES_DEFAULT | wxCENTRE).ShowModal(); if (result == wxID_YES) { this->q->load_project(from_path(last_backup), from_path(originfile)); Slic3r::backup_soon(); @@ -7898,13 +7834,13 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) } catch (...) {} - + if (this->q->get_project_filename().IsEmpty() && this->q->is_empty_project()) { int skip_confirm = e.GetInt(); this->q->new_project(skip_confirm, true); } }); - // wxPostEvent(this->q, wxCommandEvent{EVT_RESTORE_PROJECT}); + //wxPostEvent(this->q, wxCommandEvent{EVT_RESTORE_PROJECT}); } this->q->Bind(EVT_LOAD_MODEL_OTHER_INSTANCE, [this](LoadFromOtherInstanceEvent& evt) { @@ -7917,7 +7853,7 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) wxGetApp().mainframe->Raise(); this->q->load_files(input_files); }); - + this->q->Bind(EVT_START_DOWNLOAD_OTHER_INSTANCE, [](StartDownloadOtherInstanceEvent& evt) { BOOST_LOG_TRIVIAL(trace) << "Received url from other instance event."; wxGetApp().mainframe->Show(); @@ -7925,12 +7861,15 @@ Plater::priv::priv(Plater* q, MainFrame* main_frame) for (size_t i = 0; i < evt.data.size(); ++i) { wxGetApp().start_download(evt.data[i]); } + + }); + this->q->Bind(EVT_INSTANCE_GO_TO_FRONT, [this](InstanceGoToFrontEvent &) { + bring_instance_forward(); }); - this->q->Bind(EVT_INSTANCE_GO_TO_FRONT, [this](InstanceGoToFrontEvent&) { bring_instance_forward(); }); wxGetApp().other_instance_message_handler()->init(this->q); // collapse sidebar according to saved value - // if (wxGetApp().is_editor()) { + //if (wxGetApp().is_editor()) { // bool is_collapsed = wxGetApp().app_config->get("collapsed_sidebar") == "1"; // sidebar->collapse(is_collapsed); //} @@ -7955,18 +7894,16 @@ void Plater::priv::update(unsigned int flags) model.center_instances_around_point(this->bed.build_volume().bed_center()); #endif - unsigned int update_status = 0; - const bool force_background_processing_restart = this->printer_technology == ptSLA || - (flags & (unsigned int) UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE); + unsigned int update_status = 0; + const bool force_background_processing_restart = this->printer_technology == ptSLA || (flags & (unsigned int)UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE); if (force_background_processing_restart) // Update the SLAPrint from the current Model, so that the reload_scene() // pulls the correct data. - update_status = this->update_background_process(false, flags & (unsigned int) UpdateParams::POSTPONE_VALIDATION_ERROR_MESSAGE); - // BBS TODO reload_scene - this->view3D->reload_scene(false, flags & (unsigned int) UpdateParams::FORCE_FULL_SCREEN_REFRESH); - if (is_preview_shown()) - this->preview->reload_print(); - // BBS assemble view + update_status = this->update_background_process(false, flags & (unsigned int)UpdateParams::POSTPONE_VALIDATION_ERROR_MESSAGE); + //BBS TODO reload_scene + this->view3D->reload_scene(false, flags & (unsigned int)UpdateParams::FORCE_FULL_SCREEN_REFRESH); + if (is_preview_shown()) this->preview->reload_print(); + //BBS assemble view this->assemble_view->reload_scene(false, flags); // todo: better to mark thumbnail dirty here @@ -7992,23 +7929,25 @@ void Plater::priv::select_view(const std::string& direction) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "select view3D"; view3D->select_view(direction); wxGetApp().update_ui_from_settings(); - } else if (current_panel == preview) { + } + else if (current_panel == preview) { BOOST_LOG_TRIVIAL(info) << "select preview"; preview->select_view(direction); wxGetApp().update_ui_from_settings(); - } else if (current_panel == assemble_view) { + } + else if (current_panel == assemble_view) { BOOST_LOG_TRIVIAL(info) << "select assemble view"; assemble_view->select_view(direction); } } -const VendorProfile::PrinterModel* Plater::get_curr_printer_model() +const VendorProfile::PrinterModel *Plater::get_curr_printer_model() { auto bundle = wxGetApp().preset_bundle; if (bundle) { - const Preset* curr = &bundle->printers.get_selected_preset(); + const Preset *curr = &bundle->printers.get_selected_preset(); if (curr) { - const VendorProfile::PrinterModel* pm = PresetUtils::system_printer_model(*curr); + const VendorProfile::PrinterModel *pm = PresetUtils::system_printer_model(*curr); if (!pm) { auto curr_parent = bundle->printers.get_selected_preset_parent(); if (curr_parent) { @@ -8048,9 +7987,9 @@ std::map Plater::get_bed_texture_maps() bool Plater::get_enable_wrapping_detection() { - const DynamicPrintConfig& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - const ConfigOptionBool* wrapping_detection = print_config.option("enable_wrapping_detection"); - return (wrapping_detection != nullptr) && wrapping_detection->value; + const DynamicPrintConfig & print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const ConfigOptionBool * wrapping_detection = print_config.option("enable_wrapping_detection"); + return (wrapping_detection != nullptr) && wrapping_detection->value; } wxColour Plater::get_next_color_for_filament() @@ -8059,9 +7998,22 @@ wxColour Plater::get_next_color_for_filament() // refs to https://www.ebaomonthly.com/window/photo/lesson/colorList.htm wxColour colors[FILAMENT_SYSTEM_COLORS_NUM] = { // ORCA updated all color palette - wxColour("#00C1AE"), wxColour("#F4E2C1"), wxColour("#ED1C24"), wxColour("#00FF7F"), wxColour("#F26722"), wxColour("#FFEB31"), - wxColour("#7841CE"), wxColour("#115877"), wxColour("#ED1E79"), wxColour("#2EBDEF"), wxColour("#345B2F"), wxColour("#800080"), - wxColour("#FA8173"), wxColour("#800000"), wxColour("#F7B763"), wxColour("#A4C41E"), + wxColour("#00C1AE"), + wxColour("#F4E2C1"), + wxColour("#ED1C24"), + wxColour("#00FF7F"), + wxColour("#F26722"), + wxColour("#FFEB31"), + wxColour("#7841CE"), + wxColour("#115877"), + wxColour("#ED1E79"), + wxColour("#2EBDEF"), + wxColour("#345B2F"), + wxColour("#800080"), + wxColour("#FA8173"), + wxColour("#800000"), + wxColour("#F7B763"), + wxColour("#A4C41E"), }; return colors[curr_color_filamenet++ % FILAMENT_SYSTEM_COLORS_NUM]; } @@ -8069,25 +8021,22 @@ wxColour Plater::get_next_color_for_filament() wxString Plater::get_slice_warning_string(GCodeProcessorResult::SliceWarning& warning) { if (warning.msg == BED_TEMP_TOO_HIGH_THAN_FILAMENT) { - return _L("The current heatbed temperature is relatively high. The nozzle may clog when printing this filament in a closed " - "environment. Please open the front door and/or remove the upper glass."); + return _L("The current heatbed temperature is relatively high. The nozzle may clog when printing this filament in a closed environment. Please open the front door and/or remove the upper glass."); } else if (warning.msg == NOZZLE_HRC_CHECKER) { - return _L("The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace " - "the hardened nozzle or filament, otherwise, the nozzle will be worn down or damaged."); + return _L("The nozzle hardness required by the filament is higher than the default nozzle hardness of the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be worn down or damaged."); } else if (warning.msg == NOT_SUPPORT_TRADITIONAL_TIMELAPSE) { - return _L( - "Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode."); + return _L("Enabling traditional timelapse photography may cause surface imperfections. It is recommended to change to smooth mode."); } else if (warning.msg == NOT_GENERATE_TIMELAPSE) { return wxString(); } else if (warning.msg == SMOOTH_TIMELAPSE_WITHOUT_PRIME_TOWER) { - return _L("Smooth mode for timelapse is enabled, but the prime tower is off, which may cause print defects. Please enable the " - "prime tower, re-slice and print again."); - } else { + return _L("Smooth mode for timelapse is enabled, but the prime tower is off, which may cause print defects. Please enable the prime tower, re-slice and print again."); + } + else { return wxString(warning.msg); } } -void Plater::priv::apply_free_camera_correction(bool apply /* = true*/) +void Plater::priv::apply_free_camera_correction(bool apply/* = true*/) { bool use_perspective_camera = get_config("use_perspective_camera").compare("true") == 0; if (use_perspective_camera) @@ -8098,7 +8047,7 @@ void Plater::priv::apply_free_camera_correction(bool apply /* = true*/) camera.recover_from_free_camera(); } -// BBS: add no slice option +//BBS: add no slice option void Plater::priv::select_view_3D(const std::string& name, bool no_slice) { if (name == "3D") { @@ -8107,23 +8056,25 @@ void Plater::priv::select_view_3D(const std::string& name, bool no_slice) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("goto preview page when loading gcode/exported_3mf"); } set_current_panel(view3D, no_slice); - } else if (name == "Preview") { + } + else if (name == "Preview") { BOOST_LOG_TRIVIAL(info) << "select preview"; - // BBS update extruder params and speed table before slicing + //BBS update extruder params and speed table before slicing const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); - auto& print = q->get_partplate_list().get_current_fff_print(); - auto print_config = print.config(); - int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); Model::setExtruderParams(config, numExtruders); Model::setPrintSpeedTable(config, print_config); set_current_panel(preview, no_slice); - } else if (name == "Assemble") { + } + else if (name == "Assemble") { BOOST_LOG_TRIVIAL(info) << "select assemble view"; set_current_panel(assemble_view, no_slice); } - // BBS update selection + //BBS update selection wxGetApp().obj_list()->update_selections(); selection_changed(); @@ -8132,12 +8083,13 @@ void Plater::priv::select_view_3D(const std::string& name, bool no_slice) void Plater::priv::select_next_view_3D() { + if (current_panel == view3D) wxGetApp().mainframe->select_tab(TAB_ID_PREVIEW); else if (current_panel == preview) wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - // else if (current_panel == assemble_view) - // set_current_panel(view3D); +// else if (current_panel == assemble_view) +// set_current_panel(view3D); } void Plater::priv::enable_sidebar(bool enabled) @@ -8157,7 +8109,9 @@ void Plater::priv::collapse_sidebar(bool collapse) sidebar_layout.is_collapsed = collapse; // Now update the tooltip in the toolbar. - std::string new_tooltip = collapse ? _u8L("Expand sidebar") : _u8L("Collapse sidebar"); + std::string new_tooltip = collapse + ? _u8L("Expand sidebar") + : _u8L("Collapse sidebar"); new_tooltip += " [" + _u8L("Shift+") + _u8L("Tab") + "]"; int id = collapse_toolbar.get_item_id("collapse_sidebar"); collapse_toolbar.set_tooltip(id, new_tooltip); @@ -8165,13 +8119,12 @@ void Plater::priv::collapse_sidebar(bool collapse) update_sidebar(); } -void Plater::priv::update_sidebar(bool force_update) -{ +void Plater::priv::update_sidebar(bool force_update) { auto& sidebar = m_aui_mgr.GetPane(this->sidebar); if (!sidebar.IsOk() || this->current_panel == nullptr) { return; } - bool needs_update = force_update; + bool needs_update = force_update; if (!sidebar_layout.is_enabled) { if (sidebar.IsShown()) { @@ -8201,21 +8154,23 @@ void Plater::priv::reset_window_layout() update_sidebar(true); } -Sidebar::DockingState Plater::priv::get_sidebar_docking_state() -{ +Sidebar::DockingState Plater::priv::get_sidebar_docking_state() { if (!sidebar_layout.is_enabled) { return Sidebar::None; } const auto& sidebar = m_aui_mgr.GetPane(this->sidebar); - if (sidebar.IsFloating()) { + if(sidebar.IsFloating()) { return Sidebar::None; } return sidebar.dock_direction == wxAUI_DOCK_RIGHT ? Sidebar::Right : Sidebar::Left; } -void Plater::priv::reset_all_gizmos() { view3D->get_canvas3d()->reset_all_gizmos(); } +void Plater::priv::reset_all_gizmos() +{ + view3D->get_canvas3d()->reset_all_gizmos(); +} // Called after the Preferences dialog is closed and the program settings are saved. // Update the UI based on the current preferences. @@ -8230,9 +8185,15 @@ void Plater::priv::update_ui_from_settings() } // BBS -std::shared_ptr Plater::priv::statusbar() { return nullptr; } +std::shared_ptr Plater::priv::statusbar() +{ + return nullptr; +} -std::string Plater::priv::get_config(const std::string& key) const { return wxGetApp().app_config->get(key); } +std::string Plater::priv::get_config(const std::string &key) const +{ + return wxGetApp().app_config->get(key); +} BoundingBoxf Plater::priv::bed_shape_bb() const { @@ -8242,14 +8203,14 @@ BoundingBoxf Plater::priv::bed_shape_bb() const BoundingBox Plater::priv::scaled_bed_shape_bb() const { - const auto* bed_shape_opt = config->opt("printable_area"); + const auto *bed_shape_opt = config->opt("printable_area"); const auto printable_area = Slic3r::Polygon::new_scale(bed_shape_opt->values); return printable_area.bounding_box(); } -void read_binary_stl(const std::string& filename, std::string& model_id, std::string& code) -{ - std::ifstream file(encode_path(filename.c_str()), std::ios::binary); + +void read_binary_stl(const std::string& filename, std::string& model_id, std::string& code) { + std::ifstream file( encode_path(filename.c_str()), std::ios::binary); if (!file) { return; } @@ -8268,7 +8229,7 @@ void read_binary_stl(const std::string& filename, std::string& model_id, std::st return; } - char magic[2] = {data[0], data[1]}; + char magic[2] = { data[0], data[1] }; if (magic[0] != 'M' || magic[1] != 'W') { file.close(); return; @@ -8279,9 +8240,9 @@ void read_binary_stl(const std::string& filename, std::string& model_id, std::st return; } - char protocol_version[3] = {data[3], data[4], data[5]}; + char protocol_version[3] = { data[3], data[4], data[5] }; - // version + //version if (protocol_version[0] != '1' || protocol_version[1] != '.' || protocol_version[2] != '0') { file.close(); return; @@ -8296,16 +8257,18 @@ void read_binary_stl(const std::string& filename, std::string& model_id, std::st tokens.push_back(tokenPtr); } - // model id + //model id if (tokens.size() < 4) { file.close(); return; } model_id = tokens[2]; - code = tokens[3]; + code = tokens[3]; file.close(); - } catch (...) {} + } + catch (...) { + } return; } @@ -8316,25 +8279,26 @@ std::vector Plater::priv::load_files(const std::vector& input_ bool* published_out) { std::vector empty_result; - bool dlg_cont = true; + bool dlg_cont = true; bool is_user_cancel = false; - bool translate_old = false; + bool translate_old = false; int current_width = 0, current_depth = 0, current_height = 0, project_filament_count = 1; if (input_files.empty()) return std::vector(); if (!input_files.empty()) - q->m_3mf_path = input_files[0].string(); - + q->m_3mf_path = input_files[0].string(); + // SoftFever: ugly fix so we can exist pa calib mode background_process.fff_print()->calib_mode() = CalibMode::Calib_None; + // BBS int filaments_cnt = config->opt("filament_colour")->values.size(); - bool one_by_one = input_files.size() == 1 || printer_technology == ptSLA /* || filaments_cnt <= 1*/; - if (!one_by_one) { - for (const auto& path : input_files) { + bool one_by_one = input_files.size() == 1 || printer_technology == ptSLA/* || filaments_cnt <= 1*/; + if (! one_by_one) { + for (const auto &path : input_files) { if (std::regex_match(path.string(), pattern_bundle)) { one_by_one = true; break; @@ -8342,74 +8306,75 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - bool load_model = strategy & LoadStrategy::LoadModel; - bool load_config = strategy & LoadStrategy::LoadConfig; + bool load_model = strategy & LoadStrategy::LoadModel; + bool load_config = strategy & LoadStrategy::LoadConfig; bool imperial_units = strategy & LoadStrategy::ImperialUnits; - bool silence = strategy & LoadStrategy::Silence; + bool silence = strategy & LoadStrategy::Silence; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": load_model %1%, load_config %2%, input_files size %3%") % load_model % load_config % - input_files.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": load_model %1%, load_config %2%, input_files size %3%")%load_model %load_config %input_files.size(); const auto loading = _L("Loading") + dots; ProgressDialog dlg(loading, "", 100, find_toplevel_parent(q), wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_APP_MODAL); wxBusyCursor busy; - auto* new_model = (!load_model || one_by_one) ? nullptr : new Slic3r::Model(); + auto *new_model = (!load_model || one_by_one) ? nullptr : new Slic3r::Model(); std::vector obj_idxs; - std::string designer_model_id; - std::string designer_country_code; + std::string designer_model_id; + std::string designer_country_code; - int answer_convert_from_meters = wxOK_DEFAULT; - int answer_convert_from_imperial_units = wxOK_DEFAULT; - int tolal_model_count = 0; + int answer_convert_from_meters = wxOK_DEFAULT; + int answer_convert_from_imperial_units = wxOK_DEFAULT; + int tolal_model_count = 0; - int progress_percent = 0; - int total_files = input_files.size(); - const int stage_percent[IMPORT_STAGE_MAX + 1] = {5, // IMPORT_STAGE_RESTORE - 10, // IMPORT_STAGE_OPEN - 30, // IMPORT_STAGE_READ_FILES - 50, // IMPORT_STAGE_EXTRACT - 60, // IMPORT_STAGE_LOADING_OBJECTS - 70, // IMPORT_STAGE_LOADING_PLATES - 80, // IMPORT_STAGE_FINISH - 85, // IMPORT_STAGE_ADD_INSTANCE - 90, // IMPORT_STAGE_UPDATE_GCODE - 92, // IMPORT_STAGE_CHECK_MODE_GCODE - 95, // UPDATE_GCODE_RESULT - 98, // IMPORT_LOAD_CONFIG - 99, // IMPORT_LOAD_MODEL_OBJECTS - 100}; - const int step_percent[LOAD_STEP_STAGE_NUM + 1] = {5, // LOAD_STEP_STAGE_READ_FILE - 30, // LOAD_STEP_STAGE_GET_SOLID - 60, // LOAD_STEP_STAGE_GET_MESH - 100}; + int progress_percent = 0; + int total_files = input_files.size(); + const int stage_percent[IMPORT_STAGE_MAX+1] = { + 5, // IMPORT_STAGE_RESTORE + 10, // IMPORT_STAGE_OPEN + 30, // IMPORT_STAGE_READ_FILES + 50, // IMPORT_STAGE_EXTRACT + 60, // IMPORT_STAGE_LOADING_OBJECTS + 70, // IMPORT_STAGE_LOADING_PLATES + 80, // IMPORT_STAGE_FINISH + 85, // IMPORT_STAGE_ADD_INSTANCE + 90, // IMPORT_STAGE_UPDATE_GCODE + 92, // IMPORT_STAGE_CHECK_MODE_GCODE + 95, // UPDATE_GCODE_RESULT + 98, // IMPORT_LOAD_CONFIG + 99, // IMPORT_LOAD_MODEL_OBJECTS + 100 + }; + const int step_percent[LOAD_STEP_STAGE_NUM+1] = { + 5, // LOAD_STEP_STAGE_READ_FILE + 30, // LOAD_STEP_STAGE_GET_SOLID + 60, // LOAD_STEP_STAGE_GET_MESH + 100 + }; - const float INPUT_FILES_RATIO = 0.7; - const float INIT_MODEL_RATIO = 0.75; - const float CENTER_AROUND_ORIGIN_RATIO = 0.8; - const float LOAD_MODEL_RATIO = 0.9; + const float INPUT_FILES_RATIO = 0.7; + const float INIT_MODEL_RATIO = 0.75; + const float CENTER_AROUND_ORIGIN_RATIO = 0.8; + + const float LOAD_MODEL_RATIO = 0.9; for (size_t i = 0; i < input_files.size(); ++i) { #ifdef _WIN32 auto path = input_files[i]; - // On Windows, we swap slashes to back slashes, see GH #6803 as read_from_file() does not understand slashes on Windows thus it - // assignes full path to names of loaded objects. + // On Windows, we swap slashes to back slashes, see GH #6803 as read_from_file() does not understand slashes on Windows thus it assignes full path to names of loaded objects. path.make_preferred(); #else // _WIN32 // Don't make a copy on Posix. Slash is a path separator, back slashes are not accepted as a substitute. - const auto& path = input_files[i]; + const auto &path = input_files[i]; #endif // _WIN32 - const auto filename = path.filename(); - int progress_percent = static_cast(100.0f * static_cast(i) / static_cast(input_files.size())); - const auto real_filename = (strategy & LoadStrategy::Restore) ? input_files[++i].filename() : filename; - const auto dlg_info = _L("Loading file") + ": " + from_path(real_filename); + const auto filename = path.filename(); + int progress_percent = static_cast(100.0f * static_cast(i) / static_cast(input_files.size())); + const auto real_filename = (strategy & LoadStrategy::Restore) ? input_files[++i].filename() : filename; + const auto dlg_info = _L("Loading file") + ": " + from_path(real_filename); BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": load file %1%") % filename; dlg_cont = dlg.Update(progress_percent, dlg_info); - if (!dlg_cont) - return empty_result; + if (!dlg_cont) return empty_result; const bool type_3mf = std::regex_match(path.string(), pattern_3mf); // const bool type_zip_amf = !type_3mf && std::regex_match(path.string(), pattern_zip_amf); @@ -8423,15 +8388,14 @@ std::vector Plater::priv::load_files(const std::vector& input_ load_aux = true; strategy = strategy | LoadStrategy::LoadAuxiliary; } - if (load_config) - strategy = strategy | LoadStrategy::CheckVersion; + if (load_config) strategy = strategy | LoadStrategy::CheckVersion; bool is_project_file = false; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": is_project_file %1%, type_3mf %2%") % is_project_file % type_3mf; try { if (type_3mf) { DynamicPrintConfig config; - Semver file_version; - En3mfType en_3mf_file_type = En3mfType::From_BBS; + Semver file_version; + En3mfType en_3mf_file_type = En3mfType::From_BBS; // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; // on load keep the user's current presets and overlay only those keys. Declared // here (outside the config block below) so it stays alive for the embedded-preset @@ -8441,9 +8405,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ DynamicPrintConfig config_loaded; // BBS: add part plate related logic - PlateDataPtrs plate_data; + PlateDataPtrs plate_data; ConfigSubstitutionContext config_substitutions{ForwardCompatibilitySubstitutionRule::Enable}; - std::vector project_presets; + std::vector project_presets; // BBS: backup & restore q->skip_thumbnail_invalid = true; model = Slic3r::Model::read_from_archive(path.string(), &config_loaded, &config_substitutions, en_3mf_file_type, strategy, &plate_data, &project_presets, @@ -8460,12 +8424,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (cancel) is_user_cancel = cancel; }); - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << ":" << __LINE__ - << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_or_orca_3mf %3%, file_version %4% \n") % - plate_data.size() % project_presets.size() % - (en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) % - file_version.to_string(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ + << boost::format(", plate_data.size %1%, project_preset.size %2%, is_bbs_or_orca_3mf %3%, file_version %4% \n") % plate_data.size() % + project_presets.size() % (en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) % file_version.to_string(); // BBS: a "published" 3MF carries a flag plus the author-selected setting keys; // on load keep the user's current presets and overlay only those keys. Parsed @@ -8572,24 +8533,20 @@ std::vector Plater::priv::load_files(const std::vector& input_ // 2. add extruder for BBS or Other model if only import geometry if (en_3mf_file_type == En3mfType::From_Prusa || (load_model && !load_config)) { std::set extruderIds; - for (ModelObject* o : model.objects) { - if (o->config.option("extruder")) - extruderIds.insert(o->config.extruder()); + for (ModelObject *o : model.objects) { + if (o->config.option("extruder")) extruderIds.insert(o->config.extruder()); for (auto volume : o->volumes) { - if (volume->config.option("extruder")) - extruderIds.insert(volume->config.extruder()); - for (int extruder : volume->get_extruders()) { - extruderIds.insert(extruder); - } + if (volume->config.option("extruder")) extruderIds.insert(volume->config.extruder()); + for (int extruder : volume->get_extruders()) { extruderIds.insert(extruder); } } } int size = extruderIds.size() == 0 ? 0 : *(extruderIds.rbegin()); int filament_size = sidebar->combos_filament().size(); while (filament_size < MAXIMUM_EXTRUDER_NUMBER && filament_size < size) { - int filament_count = filament_size + 1; - wxColour new_col = Plater::get_next_color_for_filament(); - std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); + int filament_count = filament_size + 1; + wxColour new_col = Plater::get_next_color_for_filament(); + std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); wxGetApp().preset_bundle->set_num_filaments(filament_count, new_color); wxGetApp().plater()->on_filament_count_change(filament_count); ++filament_size; @@ -8602,22 +8559,21 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (import_project_action.empty()) load_type = LoadType::Unknown; else - load_type = static_cast(std::stoi(import_project_action)); + load_type = static_cast(std::stoi(import_project_action)); // BBS: version check - Semver app_version = *(Semver::parse(SoftFever_VERSION)); - const wxString load_3mf_title = _L("Load 3MF"); - const wxString newer_3mf_title = _L("Newer 3MF version"); - const wxString bambu_project_title = _L("BambuStudio Project"); - const wxString msg_unsupported_geometry = _L("The 3MF is not supported by OrcaSlicer, loading geometry data only."); - const wxString msg_old_orca_geometry = _L( - "The 3MF file was generated by an old OrcaSlicer version, loading geometry data only."); - const wxString msg_older_geometry = _L("The 3MF file was generated by an older version, loading geometry data only."); - const wxString msg_bambu_geometry = _L("The 3MF file was generated by BambuStudio, loading geometry data only."); - auto log_and_show_3mf_info = [&](const wxString& text, const wxString& title) { - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << ":" << __LINE__ << " " - << boost::format("3MF import message [%1%]: %2% | file: %3%") % into_u8(title) % into_u8(text) % path.string(); + Semver app_version = *(Semver::parse(SoftFever_VERSION)); + const wxString load_3mf_title = _L("Load 3MF"); + const wxString newer_3mf_title = _L("Newer 3MF version"); + const wxString bambu_project_title = _L("BambuStudio Project"); + const wxString msg_unsupported_geometry = _L("The 3MF is not supported by OrcaSlicer, loading geometry data only."); + const wxString msg_old_orca_geometry = _L("The 3MF file was generated by an old OrcaSlicer version, loading geometry data only."); + const wxString msg_older_geometry = _L("The 3MF file was generated by an older version, loading geometry data only."); + const wxString msg_bambu_geometry = _L("The 3MF file was generated by BambuStudio, loading geometry data only."); + auto log_and_show_3mf_info = [&](const wxString& text, const wxString& title) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ + << " " + << boost::format("3MF import message [%1%]: %2% | file: %3%") % into_u8(title) % into_u8(text) % path.string(); show_info(q, text, title); }; if (en_3mf_file_type == En3mfType::From_Prusa) { @@ -8625,7 +8581,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ load_config = false; if (load_type != LoadType::LoadGeometry) log_and_show_3mf_info(msg_unsupported_geometry, load_3mf_title); - } else if (en_3mf_file_type == En3mfType::From_Orca) { + } + else if (en_3mf_file_type == En3mfType::From_Orca) { // OrcaSlicer file (has OrcaSlicer tag) - compare file_version with SoftFever_VERSION // Migration fix for OrcaSlicer 2.3.1-alpha sparse infill rotation template if (load_config && (file_version < app_version) && file_version == Semver("2.3.1-alpha")) { @@ -8640,8 +8597,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ L("This project was created with an OrcaSlicer 2.3.1-alpha and uses " "infill rotation template settings that may not work properly with your current infill pattern. " "This could result in weak support or print quality issues.")); - msg_text += "\n\n" + _(L("Would you like OrcaSlicer to automatically fix this by clearing the rotation " - "template settings?")); + msg_text += "\n\n" + + _(L("Would you like OrcaSlicer to automatically fix this by clearing the rotation template settings?")); MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxYES | wxNO); dialog.SetButtonLabel(wxID_YES, _L("Yes")); dialog.SetButtonLabel(wxID_NO, _L("No")); @@ -8652,30 +8609,31 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } else if (load_config && (file_version > app_version)) { if (config_substitutions.unrecogized_keys.size() > 0) { - wxString text = wxString::Format( - _L("The 3MF file version %s is newer than %s's version %s, found the following unrecognized keys:"), - file_version.to_string_sf(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string_sf()); + wxString text = wxString::Format(_L("The 3MF file version %s is newer than %s's version %s, found the following unrecognized keys:"), + file_version.to_string_sf(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string_sf()); text += "\n"; wxString context = text; - wxString append = _L("You should update your software.\n"); + wxString append = _L("You should update your software.\n"); context += "\n\n"; context += append; log_and_show_3mf_info(context, newer_3mf_title); - } else { - // if the minor version is not matched + } + else { + //if the minor version is not matched if (file_version.min() != app_version.min()) { - wxString text = wxString::Format( - _L("The 3MF file version %s is newer than %s's version %s, we suggest to upgrade your software."), - file_version.to_string_sf(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string_sf()); + wxString text = wxString::Format(_L("The 3MF file version %s is newer than %s's version %s, we suggest to upgrade your software."), + file_version.to_string_sf(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string_sf()); text += "\n"; log_and_show_3mf_info(text, newer_3mf_title); } } - } else if (load_config && config_loaded.empty()) { + } + else if (load_config && config_loaded.empty()) { load_config = false; log_and_show_3mf_info(msg_old_orca_geometry, load_3mf_title); } - } else if (en_3mf_file_type == En3mfType::From_BBS) { + } + else if (en_3mf_file_type == En3mfType::From_BBS) { // No OrcaSlicer tag - check Bambu/Application version Semver orca_tag_start_version(2, 3, 2); if (file_version <= orca_tag_start_version) { @@ -8690,12 +8648,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ _sparse_infill_pattern == ipZigZag || _sparse_infill_pattern == ipCrossZag || _sparse_infill_pattern == ipLockedZag; if (!is_safe_to_rotate) { - wxString msg_text = _(L("This project was created with an OrcaSlicer 2.3.1-alpha and uses " - "infill rotation template settings that may not work properly with your " - "current infill pattern. " - "This could result in weak support or print quality issues.")); - msg_text += "\n\n" + _(L("Would you like OrcaSlicer to automatically fix this by clearing the " - "rotation template settings?")); + wxString msg_text = _( + L("This project was created with an OrcaSlicer 2.3.1-alpha and uses " + "infill rotation template settings that may not work properly with your current infill pattern. " + "This could result in weak support or print quality issues.")); + msg_text += "\n\n" + + _(L("Would you like OrcaSlicer to automatically fix this by clearing the rotation template settings?")); MessageDialog dialog(wxGetApp().plater(), msg_text, "", wxICON_WARNING | wxYES | wxNO); dialog.SetButtonLabel(wxID_YES, _L("Yes")); dialog.SetButtonLabel(wxID_NO, _L("No")); @@ -8704,7 +8662,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } } - } else if (load_config && config_loaded.empty()) { + } + else if (load_config && config_loaded.empty()) { load_config = false; log_and_show_3mf_info(msg_older_geometry, load_3mf_title); } @@ -8715,23 +8674,21 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (load_config && config_loaded.empty()) { load_config = false; log_and_show_3mf_info(msg_bambu_geometry, load_3mf_title); - } else if (load_config && (file_version > slic3r_version)) { + } + else if (load_config && (file_version > slic3r_version)) { // BambuStudio file version is newer than our compatible SLIC3R_VERSION if (config_substitutions.unrecogized_keys.size() > 0) { - wxString text = wxString::Format(_L("The 3MF was created by BambuStudio (version %s), which is newer " - "than the compatible version %s. Found unrecognized settings:"), + wxString text = wxString::Format(_L("The 3MF was created by BambuStudio (version %s), which is newer than the compatible version %s. Found unrecognized settings:"), file_version.to_string(), slic3r_version.to_string()); text += "\n"; wxString context = text; - wxString append = _L("You should update your software.\n"); + wxString append = _L("You should update your software.\n"); context += "\n\n"; context += append; log_and_show_3mf_info(context, bambu_project_title); } else { - wxString text = - wxString::Format(_L("The 3MF was created by BambuStudio (version %s), which is newer than the " - "compatible version %s. Some settings may not be fully compatible."), - file_version.to_string(), slic3r_version.to_string()); + wxString text = wxString::Format(_L("The 3MF was created by BambuStudio (version %s), which is newer than the compatible version %s. Some settings may not be fully compatible."), + file_version.to_string(), slic3r_version.to_string()); text += "\n"; log_and_show_3mf_info(text, bambu_project_title); } @@ -8741,46 +8698,41 @@ std::vector Plater::priv::load_files(const std::vector& input_ log_and_show_3mf_info(text, bambu_project_title); } } - } else if (en_3mf_file_type == En3mfType::From_Other) { + } + else if (en_3mf_file_type == En3mfType::From_Other) { // Generic CAD/other 3MF without slicer metadata: import geometry silently. if (load_config && config_loaded.empty()) { - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << ":" << __LINE__ << " " - << boost::format("3MF has no slicer metadata/project config, importing geometry only: %1%") % path.string(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ + << " " + << boost::format("3MF has no slicer metadata/project config, importing geometry only: %1%") % path.string(); load_config = false; } - } else if (load_config && config_loaded.empty()) { + } + else if (load_config && config_loaded.empty()) { load_config = false; log_and_show_3mf_info(msg_old_orca_geometry, load_3mf_title); - } else if (!load_config) { + } + else if (!load_config) { // reset config except color - for (ModelObject* model_object : model.objects) { + for (ModelObject *model_object : model.objects) { bool has_extruder = model_object->config.has("extruder"); - int extruder_id = -1; + int extruder_id = -1; // save the extruder information before reset - if (has_extruder) { - extruder_id = model_object->config.extruder(); - } + if (has_extruder) { extruder_id = model_object->config.extruder(); } model_object->config.reset(); // restore the extruder after reset - if (has_extruder) { - model_object->config.set("extruder", extruder_id); - } + if (has_extruder) { model_object->config.set("extruder", extruder_id); } // Is there any modifier or advanced config data? - for (ModelVolume* model_volume : model_object->volumes) { + for (ModelVolume *model_volume : model_object->volumes) { has_extruder = model_volume->config.has("extruder"); - if (has_extruder) { - extruder_id = model_volume->config.extruder(); - } + if (has_extruder) { extruder_id = model_volume->config.extruder(); } model_volume->config.reset(); - if (has_extruder) { - model_volume->config.set("extruder", extruder_id); - } + if (has_extruder) { model_volume->config.set("extruder", extruder_id); } } } } @@ -8800,17 +8752,15 @@ std::vector Plater::priv::load_files(const std::vector& input_ } Semver old_version(1, 5, 9); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && - (file_version < old_version) && load_model && load_config && !config_loaded.empty()) { + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && (file_version < old_version) && load_model && load_config && !config_loaded.empty()) { translate_old = true; partplate_list.get_plate_size(current_width, current_depth, current_height); } if (load_config) { if (translate_old) { - // set the size back - partplate_list.reset_size(current_width + Bed3D::Axes::DefaultTipRadius, - current_depth + Bed3D::Axes::DefaultTipRadius, current_height, false); + //set the size back + partplate_list.reset_size(current_width + Bed3D::Axes::DefaultTipRadius, current_depth + Bed3D::Axes::DefaultTipRadius, current_height, false); } project_filament_count = config_loaded.option("filament_colour")->size(); partplate_list.load_from_3mf_structure(plate_data, project_filament_count); @@ -8830,16 +8780,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ if ((project_presets.size() > 0) && load_config && !published_config.published) { // load project embedded presets PresetsConfigSubstitutions preset_substitutions; - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - preset_substitutions = preset_bundle.load_project_embedded_presets(project_presets, - ForwardCompatibilitySubstitutionRule::Enable); - if (!preset_substitutions.empty()) - show_substitutions_info(preset_substitutions); + PresetBundle & preset_bundle = *wxGetApp().preset_bundle; + preset_substitutions = preset_bundle.load_project_embedded_presets(project_presets, ForwardCompatibilitySubstitutionRule::Enable); + if (!preset_substitutions.empty()) show_substitutions_info(preset_substitutions); } if (project_presets.size() > 0) { - for (unsigned int i = 0; i < project_presets.size(); i++) { - delete project_presets[i]; - } + for (unsigned int i = 0; i < project_presets.size(); i++) { delete project_presets[i]; } project_presets.clear(); } @@ -8855,37 +8801,35 @@ std::vector Plater::priv::load_files(const std::vector& input_ // Based on the printer technology field found in the loaded config, select the base for the config, PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); - config.apply(static_cast(FullPrintConfig::defaults())); + config.apply(static_cast(FullPrintConfig::defaults())); // and place the loaded config over the base. config += std::move(config_loaded); std::map validity = config.validate(); if (!validity.empty()) { - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("Param values in 3mf error: "); - for (std::map::iterator it = validity.begin(); it != validity.end(); ++it) - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("%1%: %2%") % it->first % it->second; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("Param values in 3mf error: "); + for (std::map::iterator it=validity.begin(); it!=validity.end(); ++it) + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("%1%: %2%")%it->first %it->second; // - NotificationManager* notify_manager = q->get_notification_manager(); - std::string error_message = _u8L("Invalid values found in the 3MF:"); + NotificationManager *notify_manager = q->get_notification_manager(); + std::string error_message = _u8L("Invalid values found in the 3MF:"); error_message += "\n"; - for (std::map::iterator it = validity.begin(); it != validity.end(); ++it) + for (std::map::iterator it=validity.begin(); it!=validity.end(); ++it) error_message += "-" + it->first + ": " + it->second + "\n"; error_message += "\n"; error_message += _u8L("Please correct them in the Param tabs"); notify_manager->bbl_show_3mf_warn_notification(error_message); } } - if (!config_substitutions.empty()) - show_substitutions_info(config_substitutions.substitutions, filename.string()); + if (!config_substitutions.empty()) show_substitutions_info(config_substitutions.substitutions, filename.string()); // BBS if (load_model && !load_config) { ; - } else { + } + else { this->model.plates_custom_gcodes = model.plates_custom_gcodes; - this->model.design_info = model.design_info; - this->model.model_info = model.model_info; + this->model.design_info = model.design_info; + this->model.model_info = model.model_info; } } @@ -8905,60 +8849,52 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (load_config) { if (!config.empty()) { Preset::normalize(config); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; { // BBS: modify the prime tower params for old version file Semver old_version3(2, 0, 0); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && - file_version < old_version3) { + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && file_version < old_version3) { double old_filament_prime_volume = 0.; - int filament_count = 0; + int filament_count = 0; { - ConfigOptionFloats* filament_prime_volume_option = config.option( - "filament_prime_volume"); - ConfigOptionStrings* filament_colors_option = config.option("filament_colour", - true); - filament_count = filament_colors_option->values.size(); + ConfigOptionFloats *filament_prime_volume_option = config.option("filament_prime_volume"); + ConfigOptionStrings *filament_colors_option = config.option("filament_colour", true); + filament_count = filament_colors_option->values.size(); if (filament_prime_volume_option) { - std::vector& filament_prime_volume_values = filament_prime_volume_option->values; + std::vector &filament_prime_volume_values = filament_prime_volume_option->values; if (!filament_prime_volume_values.empty()) { old_filament_prime_volume = filament_prime_volume_values[0]; - if (filament_count > 1) - filament_prime_volume_values.resize(filament_count, old_filament_prime_volume); + if (filament_count > 1) filament_prime_volume_values.resize(filament_count, old_filament_prime_volume); } } } - ConfigOptionEnum* prime_tower_rib_wall_option = - config.option>("wipe_tower_wall_type", true); - prime_tower_rib_wall_option->value = WipeTowerWallType::wtwRectangle; + ConfigOptionEnum *prime_tower_rib_wall_option = config.option>("wipe_tower_wall_type", true); + prime_tower_rib_wall_option->value = WipeTowerWallType::wtwRectangle; - ConfigOptionPercent* prime_tower_infill_gap_option = - config.option("prime_tower_infill_gap", true); - prime_tower_infill_gap_option->value = 100; + ConfigOptionPercent *prime_tower_infill_gap_option = config.option("prime_tower_infill_gap", true); + prime_tower_infill_gap_option->value = 100; - ConfigOptionInts* filament_adhesiveness_category_option = - config.option("filament_adhesiveness_category", true); - std::vector& filament_adhesiveness_category_values = filament_adhesiveness_category_option->values; + ConfigOptionInts *filament_adhesiveness_category_option = config.option("filament_adhesiveness_category", true); + std::vector &filament_adhesiveness_category_values = filament_adhesiveness_category_option->values; filament_adhesiveness_category_values.resize(filament_count); for (int index = 0; index < filament_count; index++) filament_adhesiveness_category_values[index] = 100; - std::vector& diff_settings = - config.option("different_settings_to_system", true)->values; + std::vector &diff_settings = config.option("different_settings_to_system", true)->values; diff_settings.resize(filament_count + 2); std::vector diff_process_keys; - std::string diff_process_settings = diff_settings[0]; + std::string diff_process_settings = diff_settings[0]; Slic3r::unescape_strings_cstyle(diff_process_settings, diff_process_keys); diff_process_keys.emplace_back("wipe_tower_wall_type"); diff_process_keys.emplace_back("prime_tower_infill_gap"); diff_process_settings = Slic3r::escape_strings_cstyle(diff_process_keys); - diff_settings[0] = diff_process_settings; + diff_settings[0] = diff_process_settings; for (int index = 0; index < filament_count; index++) { std::vector diff_filament_keys; - std::string diff_filament_settings = diff_settings[index + 1]; + std::string diff_filament_settings = diff_settings[index + 1]; Slic3r::unescape_strings_cstyle(diff_filament_settings, diff_filament_keys); diff_filament_keys.emplace_back("filament_adhesiveness_category"); diff_filament_settings = Slic3r::escape_strings_cstyle(diff_filament_keys); @@ -8976,51 +8912,38 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (validated == VALIDATE_PRESETS_MODIFIED_GCODES) { std::string warning_message; warning_message += "\n"; - for (std::set::iterator it = modified_gcodes.begin(); it != modified_gcodes.end(); ++it) + for (std::set::iterator it=modified_gcodes.begin(); it!=modified_gcodes.end(); ++it) warning_message += "-" + *it + "\n"; warning_message += "\n"; - // show_info(q, _L("The 3MF has the following modified G-code in filament or printer presets:") + - // warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the - // machine!"), _L("Modified G-code")); - MessageDialog - dlg(q, - _L("The 3MF has the following modified G-code in filament or printer presets:") + warning_message + - _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), - _L("Modified G-code")); + //show_info(q, _L("The 3MF has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code")); + MessageDialog dlg(q, _L("The 3MF has the following modified G-code in filament or printer presets:") + warning_message + _L("Please confirm that all modified G-code is safe to prevent any damage to the machine!"), _L("Modified G-code")); dlg.show_dsa_button(); - auto res = dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); - } else if ((validated == VALIDATE_PRESETS_PRINTER_NOT_FOUND) || - (validated == VALIDATE_PRESETS_FILAMENTS_NOT_FOUND)) { + } + else if ((validated == VALIDATE_PRESETS_PRINTER_NOT_FOUND) || (validated == VALIDATE_PRESETS_FILAMENTS_NOT_FOUND)) { std::string warning_message; warning_message += "\n"; - for (std::set::iterator it = modified_gcodes.begin(); it != modified_gcodes.end(); ++it) + for (std::set::iterator it=modified_gcodes.begin(); it!=modified_gcodes.end(); ++it) warning_message += "-" + *it + "\n"; warning_message += "\n"; - // show_info(q, _L("The 3MF has the following customized filament or printer presets:") + warning_message + - // _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), - // _L("Customized Preset")); - MessageDialog dlg(q, - _L("The 3MF has the following customized filament or printer presets:") + - from_u8(warning_message) + - _L("Please confirm that the G-code within these presets is safe to prevent any " - "damage to the machine!"), - _L("Customized Preset")); + //show_info(q, _L("The 3MF has the following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset")); + MessageDialog dlg(q, _L("The 3MF has the following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-code within these presets is safe to prevent any damage to the machine!"), _L("Customized Preset")); dlg.show_dsa_button(); - auto res = dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } } - // always load config + //always load config { // BBS: save the wipe tower pos in file here, will be used later ConfigOptionFloats* wipe_tower_x_opt = config.opt("wipe_tower_x"); ConfigOptionFloats* wipe_tower_y_opt = config.opt("wipe_tower_y"); - std::optional file_wipe_tower_x; - std::optional file_wipe_tower_y; + std::optionalfile_wipe_tower_x; + std::optionalfile_wipe_tower_y; if (wipe_tower_x_opt) file_wipe_tower_x = *wipe_tower_x_opt; if (wipe_tower_y_opt) @@ -9073,7 +8996,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ ConfigOption* bed_type_opt = preset_bundle->project_config.option("curr_bed_type"); if (bed_type_opt != nullptr) { - BedType bed_type = (BedType) bed_type_opt->getInt(); + BedType bed_type = (BedType)bed_type_opt->getInt(); // update app config for bed type bool is_bbl_preset = preset_bundle->is_bbl_vendor(); if (is_bbl_preset) { @@ -9121,10 +9044,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ // // show notification about temporarily installed presets // if (!names.empty()) { - // std::string notif_text = into_u8(_L_PLURAL("The preset below was temporarily installed on the active - // instance of PrusaSlicer", - // "The presets below were temporarily installed on the active - // instance of PrusaSlicer", names.size())) + ":"; + // std::string notif_text = into_u8(_L_PLURAL("The preset below was temporarily installed on the active instance of PrusaSlicer", + // "The presets below were temporarily installed on the active instance of PrusaSlicer", + // names.size())) + ":"; // for (std::string& name : names) // notif_text += "\n - " + name; // notification_manager->push_notification(NotificationType::CustomNotification, @@ -9134,11 +9056,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ // BBS // if (printer_technology == ptFFF) - // CustomGCode::update_custom_gcode_per_print_z_from_config(model.custom_gcode_per_print_z, - // &preset_bundle->project_config); + // CustomGCode::update_custom_gcode_per_print_z_from_config(model.custom_gcode_per_print_z, &preset_bundle->project_config); - // For exporting from the amf/3mf we shouldn't check printer_presets for the containing information about "Print - // Host upload" BBS: add preset combo box re-active logic currently found only needs re-active here + // For exporting from the amf/3mf we shouldn't check printer_presets for the containing information about "Print Host upload" + // BBS: add preset combo box re-active logic + // currently found only needs re-active here wxGetApp().load_current_presets(false, false); // Update filament colors for the MM-printer profile in the full config // to avoid black (default) colors for Extruders in the ObjectList, @@ -9149,8 +9071,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ DynamicConfig& proj_cfg = preset_bundle->project_config; // do some post process after loading config { - // BBS: rewrite wipe tower pos stored in 3mf file , the code above should be seriously reconsidered - ConfigOptionFloats* wipe_tower_x = proj_cfg.opt("wipe_tower_x"); + //BBS: rewrite wipe tower pos stored in 3mf file , the code above should be seriously reconsidered + ConfigOptionFloats* wipe_tower_x = proj_cfg.opt("wipe_tower_x"); ConfigOptionFloats* wipe_tower_y = proj_cfg.opt("wipe_tower_y"); if (file_wipe_tower_x) *wipe_tower_x = *file_wipe_tower_x; @@ -9178,22 +9100,19 @@ std::vector Plater::priv::load_files(const std::vector& input_ } // Sync filament multi colour - ConfigOptionStrings* filament_multi_color = proj_cfg.opt("filament_multi_colour", - true); + ConfigOptionStrings* filament_multi_color = proj_cfg.opt("filament_multi_colour", true); if (filament_multi_color->size() != filament_count) { filament_multi_color->values.resize(filament_count); } // If there is no multi-color data or color is not match, use single color as default value for (size_t i = 0; i < filament_count; i++) { std::vector colors = Slic3r::split_string(filament_multi_color->values[i], ' '); - if (i >= filament_multi_color->values.size() || colors.empty() || - colors[0] != filament_color->values[i]) { + if (i >= filament_multi_color->values.size() || colors.empty() || colors[0] != filament_color->values[i] ) { filament_multi_color->values[i] = filament_color->values[i]; } } // Sync filament colour type - ConfigOptionStrings* filament_color_type = proj_cfg.opt("filament_colour_type", - true); + ConfigOptionStrings* filament_color_type = proj_cfg.opt("filament_colour_type", true); if (filament_color_type && filament_color_type->size() != filament_count) { filament_color_type->values.resize(filament_count); @@ -9223,33 +9142,29 @@ std::vector Plater::priv::load_files(const std::vector& input_ } // The loaded project supplies nozzle_volume_type; refresh the sidebar // nozzle-count badges against it. - if (auto* nozzle_volumes = wxGetApp().preset_bundle->project_config.option( - "nozzle_volume_type")) { + if (auto *nozzle_volumes = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")) { const int extruder_count = wxGetApp().preset_bundle->get_printer_extruder_count(); - for (int extruder_id = 0; extruder_id < extruder_count && extruder_id < (int) nozzle_volumes->values.size(); - ++extruder_id) - updateNozzleCountDisplay(wxGetApp().preset_bundle, extruder_id, - NozzleVolumeType(nozzle_volumes->values[extruder_id])); + for (int extruder_id = 0; extruder_id < extruder_count && extruder_id < (int) nozzle_volumes->values.size(); ++extruder_id) + updateNozzleCountDisplay(wxGetApp().preset_bundle, extruder_id, NozzleVolumeType(nozzle_volumes->values[extruder_id])); } } } - if (!silence) - wxGetApp().app_config->update_config_dir(path.parent_path().string()); + if (!silence) wxGetApp().app_config->update_config_dir(path.parent_path().string()); } } else { // BBS: add plate data related logic PlateDataPtrs plate_data; // BBS: project embedded settings - std::vector project_presets; - bool is_xxx; - Semver file_version; + std::vector project_presets; + bool is_xxx; + Semver file_version; //ObjImportColorFn obj_color_fun=nullptr; auto obj_color_fun = [&path](ObjDialogInOut &in_out) { if (!boost::iends_with(path.string(), ".obj")) { return; } const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); - ObjColorDialog color_dlg(nullptr, in_out, extruder_colours, Sidebar::should_show_SEMM_buttons()); + ObjColorDialog color_dlg(nullptr, in_out, extruder_colours, Sidebar::should_show_SEMM_buttons()); if (color_dlg.ShowModal() != wxID_OK) { in_out.filament_ids.clear(); } @@ -9295,10 +9210,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ is_split = mesh_dlg.get_split_compound_value(); return 1; } - } else { + }else { linear_value = linear; - angle_value = angle; - is_split = split_compound; + angle_value = angle; + is_split = split_compound; return 1; } is_user_cancel = true; @@ -9312,25 +9227,22 @@ std::vector Plater::priv::load_files(const std::vector& input_ designer_model_id = mode_id; designer_country_code = code; - bool cont = true; - float percent_float = (100.0f * (float) i / (float) total_files) + - INPUT_FILES_RATIO * 100.0f * ((float) current / (float) total) / (float) total_files; - BOOST_LOG_TRIVIAL(trace) - << "load_stl_file: percent(float)=" << percent_float << ", curr = " << current << ", total = " << total; - progress_percent = (int) percent_float; - wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); - cont = dlg.Update(progress_percent, msg); - cancel = !cont; - }, - nullptr, 0, obj_color_fun); + bool cont = true; + float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * 100.0f * ((float)current / (float)total) / (float)total_files; + BOOST_LOG_TRIVIAL(trace) << "load_stl_file: percent(float)=" << percent_float << ", curr = " << current << ", total = " << total; + progress_percent = (int)percent_float; + wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); + cont = dlg.Update(progress_percent, msg); + cancel = !cont; + }, + nullptr, 0, obj_color_fun); } if (designer_model_id.empty() && boost::algorithm::iends_with(path.string(), ".stl")) { read_binary_stl(path.string(), designer_model_id, designer_country_code); } - if (type_any_amf && is_xxx) - imperial_units = true; + if (type_any_amf && is_xxx) imperial_units = true; for (auto obj : model.objects) { if (obj->name.empty()) { @@ -9351,31 +9263,26 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (project_presets.size() > 0) { // load project embedded presets PresetsConfigSubstitutions preset_substitutions; - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - preset_substitutions = preset_bundle.load_project_embedded_presets(project_presets, - ForwardCompatibilitySubstitutionRule::Enable); - if (!preset_substitutions.empty()) - show_substitutions_info(preset_substitutions); + PresetBundle & preset_bundle = *wxGetApp().preset_bundle; + preset_substitutions = preset_bundle.load_project_embedded_presets(project_presets, ForwardCompatibilitySubstitutionRule::Enable); + if (!preset_substitutions.empty()) show_substitutions_info(preset_substitutions); - for (unsigned int i = 0; i < project_presets.size(); i++) { - delete project_presets[i]; - } + for (unsigned int i = 0; i < project_presets.size(); i++) { delete project_presets[i]; } project_presets.clear(); } } - } catch (const ConfigurationError& e) { - std::string message = GUI::format(_L("Failed loading file \"%1%\". An invalid configuration was found."), filename.string()) + - "\n\n" + e.what(); + } catch (const ConfigurationError &e) { + std::string message = GUI::format(_L("Failed loading file \"%1%\". An invalid configuration was found."), filename.string()) + "\n\n" + e.what(); GUI::show_error(q, message); continue; - } catch (const std::exception& e) { + } catch (const std::exception &e) { if (!is_user_cancel) GUI::show_error(q, e.what()); continue; } - progress_percent = 100.0f * (float) i / (float) total_files + INIT_MODEL_RATIO * 100.0f / (float) total_files; - dlg_cont = dlg.Update(progress_percent); + progress_percent = 100.0f * (float)i / (float)total_files + INIT_MODEL_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); if (!dlg_cont) { q->skip_thumbnail_invalid = false; return empty_result; @@ -9383,17 +9290,13 @@ std::vector Plater::priv::load_files(const std::vector& input_ if (load_model) { // The model should now be initialized - auto convert_from_imperial_units = [](Model& model, bool only_small_volumes) { - model.convert_from_imperial_units(only_small_volumes); - }; + auto convert_from_imperial_units = [](Model &model, bool only_small_volumes) { model.convert_from_imperial_units(only_small_volumes); }; // BBS: add load_old_project logic if ((!is_project_file) && (!load_old_project)) { // if (!is_project_file) { if (int deleted_objects = model.removed_objects_with_zero_volume(); deleted_objects > 0) { - MessageDialog(q, _L("Objects with zero volume removed"), _L("The volume of the object is zero"), - wxICON_INFORMATION | wxOK) - .ShowModal(); + MessageDialog(q, _L("Objects with zero volume removed"), _L("The volume of the object is zero"), wxICON_INFORMATION | wxOK).ShowModal(); } if (imperial_units) // Convert even if the object is big. @@ -9404,18 +9307,16 @@ std::vector Plater::priv::load_files(const std::vector& input_ format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\nDo you want to scale to millimeters\?"), from_path(filename)), _L("Object too small"), wxICON_QUESTION | wxYES_NO); - int answer = dlg.ShowModal(); - if (answer == wxID_YES) - model.convert_from_meters(true); + int answer = dlg.ShowModal(); + if (answer == wxID_YES) model.convert_from_meters(true); } else if (model.looks_like_imperial_units()) { // BBS do not handle look like in meters MessageDialog dlg(q, format_wxstr(_L("The object from file %s is too small, and may be in meters or inches.\nDo you want to scale to millimeters\?"), from_path(filename)), _L("Object too small"), wxICON_QUESTION | wxYES_NO); - int answer = dlg.ShowModal(); - if (answer == wxID_YES) - convert_from_imperial_units(model, true); + int answer = dlg.ShowModal(); + if (answer == wxID_YES) convert_from_imperial_units(model, true); } // else if (model.looks_like_imperial_units()) { // BBS do not handle look like in imperial @@ -9429,8 +9330,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ // "The dimensions of the object from file %s seem to be defined in inches.\n" // "The internal unit of PrusaSlicer is a millimeter. Do you want to recalculate the dimensions of the object?", // "The dimensions of some objects from file %s seem to be defined in inches.\n" - // "The internal unit of PrusaSlicer is a millimeter. Do you want to recalculate the dimensions of these objects?", - // model.objects.size()), from_path(filename)) + // "The internal unit of PrusaSlicer is a millimeter. Do you want to recalculate the dimensions of these objects?", model.objects.size()), from_path(filename)) // + "\n", _L("The object is too small"), wxICON_QUESTION | wxYES_NO); // dlg.ShowCheckBox(_L("Apply to all the remaining small objects being loaded.")); // int answer = dlg.ShowModal(); @@ -9442,12 +9342,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ // convert_model_if(model, answer_convert_from_imperial_units == wxID_YES); } - if (!is_project_file && model.looks_like_multipart_object()) { - MessageDialog msg_dlg(q, - _L("This file contains several objects positioned at multiple heights.\nInstead of considering them " - "as multiple objects, should \nthe file be loaded as a single object with multiple parts\?") + - "\n", - _L("Multi-part object detected"), wxICON_WARNING | wxYES | wxNO); + if (!is_project_file && model.looks_like_multipart_object()) { + MessageDialog msg_dlg(q, _L("This file contains several objects positioned at multiple heights.\nInstead of considering them as multiple objects, should \nthe file be loaded as a single object with multiple parts\?") + "\n", + _L("Multi-part object detected"), wxICON_WARNING | wxYES | wxNO); if (msg_dlg.ShowModal() == wxID_YES) { model.convert_multipart_object(filaments_cnt); } @@ -9464,15 +9361,15 @@ std::vector Plater::priv::load_files(const std::vector& input_ // return obj_idxs; //} - progress_percent = 100.0f * (float) i / (float) total_files + CENTER_AROUND_ORIGIN_RATIO * 100.0f / (float) total_files; - dlg_cont = dlg.Update(progress_percent); + progress_percent = 100.0f * (float)i / (float)total_files + CENTER_AROUND_ORIGIN_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); if (!dlg_cont) { q->skip_thumbnail_invalid = false; return empty_result; } int model_idx = 0; - for (ModelObject* model_object : model.objects) { + for (ModelObject *model_object : model.objects) { if (!type_3mf && !type_any_amf) model_object->center_around_origin(false); @@ -9492,8 +9389,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ tolal_model_count += model_idx; - progress_percent = 100.0f * (float) i / (float) total_files + LOAD_MODEL_RATIO * 100.0f / (float) total_files; - dlg_cont = dlg.Update(progress_percent); + progress_percent = 100.0f * (float)i / (float)total_files + LOAD_MODEL_RATIO * 100.0f / (float)total_files; + dlg_cont = dlg.Update(progress_percent); if (!dlg_cont) { q->skip_thumbnail_invalid = false; return empty_result; @@ -9518,7 +9415,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ auto cancel_cb = [&dlg, &dlg_cont]() { return !dlg_cont || dlg.WasCancelled(); }; auto progress_cb = [&dlg, &dlg_cont, &progress_percent](int percent) { progress_percent = std::clamp(percent, 0, 100); - dlg_cont = dlg.Update(progress_percent, _L("Matching textures to filaments")); + dlg_cont = dlg.Update(progress_percent, _L("Matching textures to filaments")); return dlg_cont; }; if (!run_textured_mesh_import_dialog(model, texture_import_result, cancel_cb, progress_cb)) { @@ -9526,7 +9423,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ return empty_result; } if (texture_import_result.fallback_to_geometry_only && !texture_import_result.fallback_warning.empty()) { - MessageDialog(q, texture_import_result.fallback_warning, _L("Texture Import Warning"), wxOK | wxICON_WARNING).ShowModal(); + MessageDialog(q, texture_import_result.fallback_warning, + _L("Texture Import Warning"), + wxOK | wxICON_WARNING).ShowModal(); } if (!texture_import_result.painted.face_colors.empty()) { std::vector texture_object_idxs(model.objects.size()); @@ -9535,12 +9434,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ dlg.Update(std::clamp(percent, 0, 100), msg); return true; }; - apply_textured_mesh_import_result(model, texture_object_idxs, texture_import_result, apply_progress_cb, false); + apply_textured_mesh_import_result(model, texture_object_idxs, texture_import_result, + apply_progress_cb, false); } } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ - << boost::format(", before load_model_objects, count %1%") % model.objects.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", before load_model_objects, count %1%")%model.objects.size(); auto loaded_idxs = load_model_objects(model.objects, is_project_file); obj_idxs.insert(obj_idxs.end(), loaded_idxs.begin(), loaded_idxs.end()); @@ -9553,10 +9452,10 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } else { // This must be an .stl or .obj file, which may contain a maximum of one volume. - for (const ModelObject* model_object : model.objects) { + for (const ModelObject *model_object : model.objects) { new_model->add_object(*model_object); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":" << __LINE__ << boost::format(", added object %1%") % model_object->name; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":" << __LINE__ << boost::format(", added object %1%")%model_object->name; wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); dlg_cont = dlg.Update(progress_percent, msg); if (!dlg_cont) { @@ -9568,18 +9467,18 @@ std::vector Plater::priv::load_files(const std::vector& input_ } if (new_model != nullptr && new_model->objects.size() > 1) { - // BBS do not popup this dialog + //BBS do not popup this dialog bool new_model_auto_drop = true; int single_object_answer = false; if (ask_multi) { RichMessageDialog dlg(q, _L("Load these files as a single object with multiple parts?\n"), - _L("An object with multiple parts was detected"), wxICON_QUESTION | wxYES_NO); + _L("An object with multiple parts was detected"), wxICON_QUESTION | wxYES_NO); dlg.ShowCheckBox(_L("Auto-Drop"), true); single_object_answer = dlg.ShowModal(); - if (dlg.IsCheckBoxChecked() == false) + if (dlg.IsCheckBoxChecked() == false) new_model_auto_drop = false; // convert to multipart and split after load_model_objects @@ -9591,9 +9490,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ // TODO // DONE always convert to multipart, split afterwards to retain relative position // DONE if !auto_drop move all objects over the z-position 0, so that none are clipped by the bed. - // DONE retain auto_drop (and printable) state when assembling or splitting objects. - // DONE when manually split to object ask users if looks_like_multipart and none have auto_drob disabled if they want to disable - // auto_drop for all resulting objects. + // DONE retain auto_drop (and printable) state when assembling or splitting objects. + // DONE when manually split to object ask users if looks_like_multipart and none have auto_drob disabled if they want to disable auto_drop for all resulting objects. // - add icon in object list, similar to fuzzy painting, etc. auto loaded_idxs = load_model_objects(new_model->objects, false, false, new_model_auto_drop); @@ -9605,48 +9503,41 @@ std::vector Plater::priv::load_files(const std::vector& input_ } if (load_config) { - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (dev) { - MachineObject* obj = dev->get_selected_machine(); + MachineObject *obj = dev->get_selected_machine(); if (obj && obj->is_info_ready()) { if (obj->GetExtderSystem()->GetTotalExtderCount() > 0) { - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - Preset& printer_preset = preset_bundle->printers.get_selected_preset(); + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + Preset &printer_preset = preset_bundle->printers.get_selected_preset(); - double preset_nozzle_diameter = 0.4; - const ConfigOption* opt = printer_preset.config.option("nozzle_diameter"); - if (opt) - preset_nozzle_diameter = static_cast(opt)->values[0]; + double preset_nozzle_diameter = 0.4; + const ConfigOption *opt = printer_preset.config.option("nozzle_diameter"); + if (opt) preset_nozzle_diameter = static_cast(opt)->values[0]; std::string machine_type = obj->printer_type; - if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit) - machine_type = "C12"; + if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit) machine_type = "C12"; bool nozzle_mismatch = !obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(0, (float) preset_nozzle_diameter); if (printer_preset.get_current_printer_type(preset_bundle) != machine_type || nozzle_mismatch) { - Preset* machine_preset = get_printer_preset(obj); + Preset *machine_preset = get_printer_preset(obj); if (machine_preset != nullptr) { std::string printer_model = machine_preset->config.option("printer_model")->value; - bool sync_printer_info = false; + bool sync_printer_info = false; if (!wxGetApp().app_config->has("sync_after_load_file_show_flag")) { - wxString tips = from_u8( - (boost::format(_u8L("Connected printer is %s. It must match the project preset for printing.\n")) % - printer_model) - .str()); + wxString tips = from_u8((boost::format(_u8L("Connected printer is %s. It must match the project preset for printing.\n")) % printer_model).str()); tips += _L("Do you want to sync the printer information and automatically switch the preset?"); TipsDialog dlg(wxGetApp().mainframe, _L("Tips"), tips, "sync_after_load_file_show_flag", wxYES_NO); - if (dlg.ShowModal() == wxID_YES) { - sync_printer_info = true; - } - } else { + if (dlg.ShowModal() == wxID_YES) { sync_printer_info = true; } + } + else { sync_printer_info = wxGetApp().app_config->get("sync_after_load_file_show_flag") == "true"; } if (sync_printer_info) { - Tab* printer_tab = GUI::wxGetApp().get_tab(Preset::Type::TYPE_PRINTER); + Tab *printer_tab = GUI::wxGetApp().get_tab(Preset::Type::TYPE_PRINTER); printer_tab->select_preset(machine_preset->name); - if (obj->is_multi_extruders()) - GUI::wxGetApp().sidebar().sync_extruder_list(); + if (obj->is_multi_extruders()) GUI::wxGetApp().sidebar().sync_extruder_list(); } } } @@ -9655,15 +9546,14 @@ std::vector Plater::priv::load_files(const std::vector& input_ } } - if (new_model) - delete new_model; + if (new_model) delete new_model; - // BBS: translate old 3mf to correct positions + //BBS: translate old 3mf to correct positions if (translate_old) { - // translate the objects + //translate the objects int plate_count = partplate_list.get_plate_count(); - for (int index = 1; index < plate_count; index++) { - PartPlate* cur_plate = (PartPlate*) partplate_list.get_plate(index); + for (int index = 1; index < plate_count; index ++) { + PartPlate* cur_plate = (PartPlate *)partplate_list.get_plate(index); Vec3d cur_origin = cur_plate->get_origin(); Vec3d new_origin = partplate_list.compute_origin_using_new_size(index, current_width, current_depth); @@ -9675,46 +9565,50 @@ std::vector Plater::priv::load_files(const std::vector& input_ partplate_list.register_raycasters_for_picking(*view3D->get_canvas3d()); } - // BBS: add gcode loading logic in the end - q->m_exported_file = false; + //BBS: add gcode loading logic in the end + q->m_exported_file = false; q->skip_thumbnail_invalid = false; if (load_model && load_config) { if (model.objects.empty()) { partplate_list.load_gcode_files(); - PartPlate *first_plate = nullptr, *cur_plate = nullptr; + PartPlate * first_plate = nullptr, *cur_plate = nullptr; int plate_cnt = partplate_list.get_plate_count(); int index = 0, first_plate_index = 0; q->m_valid_plates_count = 0; - for (index = 0; index < plate_cnt; index++) { + for (index = 0; index < plate_cnt; index ++) + { cur_plate = partplate_list.get_plate(index); if (!first_plate && cur_plate->is_slice_result_valid()) { - first_plate = cur_plate; + first_plate = cur_plate; first_plate_index = index; } if (cur_plate->is_slice_result_valid()) - q->m_valid_plates_count++; + q->m_valid_plates_count ++; } - if (first_plate && first_plate->is_slice_result_valid()) { + if (first_plate&&first_plate->is_slice_result_valid()) { q->m_exported_file = true; - // select plate 0 as default + //select plate 0 as default q->select_plate(first_plate_index); - // set to 3d tab + //set to 3d tab q->select_view_3D("Preview"); wxGetApp().mainframe->select_tab(TAB_ID_PREVIEW); - } else { - // set to 3d tab + } + else { + //set to 3d tab q->select_view_3D("3D"); - // select plate 0 as default + //select plate 0 as default q->select_plate(0); } - } else { - // set to 3d tab + } + else { + //set to 3d tab q->select_view_3D("3D"); - // select plate 0 as default + //select plate 0 as default q->select_plate(0); } - } else { - // always set to 3D after loading files + } + else { + //always set to 3D after loading files q->select_view_3D("3D"); wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); } @@ -9726,8 +9620,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ view3D->reload_scene(true); view3D->set_as_dirty(); } - if (!silence) - wxGetApp().app_config->update_skein_dir(input_files[input_files.size() - 1].parent_path().make_preferred().string()); + if (!silence) wxGetApp().app_config->update_skein_dir(input_files[input_files.size() - 1].parent_path().make_preferred().string()); // XXX: Plater.pm had @loaded_files, but didn't seem to fill them with the filenames... } @@ -9740,7 +9633,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ Selection& selection = view3D->get_canvas3d()->get_selection(); selection.clear(); for (size_t idx : obj_idxs) { - selection.add_object((unsigned int) idx, false); + selection.add_object((unsigned int)idx, false); } } // BBS: update object list selection @@ -9751,25 +9644,25 @@ std::vector Plater::priv::load_files(const std::vector& input_ view3D->get_canvas3d()->update_gizmos_on_off_state(); } - GLGizmoSimplify::add_simplify_suggestion_notification(obj_idxs, model.objects, *notification_manager); + GLGizmoSimplify::add_simplify_suggestion_notification( + obj_idxs, model.objects, *notification_manager); - // set designer_model_id - q->model().stl_design_id = designer_model_id; + //set designer_model_id + q->model().stl_design_id = designer_model_id; q->model().stl_design_country = designer_country_code; - // if (!designer_model_id.empty() && q->model().stl_design_id.empty() && !designer_country_code.empty()) { - // q->model().stl_design_id = designer_model_id; - // q->model().stl_design_country = designer_country_code; - // } - // else { - // q->model().stl_design_id = ""; - // q->model().stl_design_country = ""; - // } + //if (!designer_model_id.empty() && q->model().stl_design_id.empty() && !designer_country_code.empty()) { + // q->model().stl_design_id = designer_model_id; + // q->model().stl_design_country = designer_country_code; + //} + //else { + // q->model().stl_design_id = ""; + // q->model().stl_design_country = ""; + //} if (tolal_model_count <= 0 && !q->m_exported_file) { dlg.Hide(); if (!is_user_cancel) { - MessageDialog msg(wxGetApp().mainframe, _L("The file does not contain any geometry data."), _L("Warning"), - wxYES | wxICON_WARNING); + MessageDialog msg(wxGetApp().mainframe, _L("The file does not contain any geometry data."), _L("Warning"), wxYES | wxICON_WARNING); if (msg.ShowModal() == wxID_YES) {} } } @@ -9778,12 +9671,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ return obj_idxs; } -#define AUTOPLACEMENT_ON_LOAD + #define AUTOPLACEMENT_ON_LOAD -std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& model_objects, - bool allow_negative_z, - bool split_object, - bool auto_drop) +std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& model_objects, bool allow_negative_z, bool split_object, bool auto_drop) { const Vec3d bed_size = Slic3r::to_3d(this->bed.build_volume().bounding_volume2d().size(), 1.0) - 2.0 * Vec3d::Ones(); @@ -9797,8 +9687,8 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #ifdef AUTOPLACEMENT_ON_LOAD ModelInstancePtrs new_instances; #endif /* AUTOPLACEMENT_ON_LOAD */ - for (ModelObject* model_object : model_objects) { - auto* object = model.add_object(*model_object); + for (ModelObject *model_object : model_objects) { + auto *object = model.add_object(*model_object); object->sort_volumes(true); std::string object_name = object->name.empty() ? fs::path(object->input_file).filename().string() : object->name; obj_idxs.push_back(obj_count++); @@ -9807,30 +9697,29 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #ifdef AUTOPLACEMENT_ON_LOAD object->center_around_origin(); new_instances.emplace_back(object->add_instance()); -#else /* AUTOPLACEMENT_ON_LOAD */ +#else /* AUTOPLACEMENT_ON_LOAD */ // if object has no defined position(s) we need to rearrange everything after loading // need_arrange = true; - // add a default instance and center object around origin - object->center_around_origin(); // also aligns object to Z = 0 + // add a default instance and center object around origin + object->center_around_origin(); // also aligns object to Z = 0 ModelInstance* instance = object->add_instance(); - // BBS calc transformation + //BBS calc transformation Geometry::Transformation t = instance->get_transformation(); instance->set_offset(Slic3r::to_3d(this->bed.build_volume().bed_center(), -object->origin_translation(2))); #endif /* AUTOPLACEMENT_ON_LOAD */ } - - // BBS: when the object is too large, let the user choose whether to scale it down + + //BBS: when the object is too large, let the user choose whether to scale it down for (size_t i = 0; i < object->instances.size(); ++i) { ModelInstance* instance = object->instances[i]; - const Vec3d size = object->instance_bounding_box(i).size(); - const Vec3d ratio = size.cwiseQuotient(bed_size); - const double max_ratio = std::max(ratio(0), ratio(1)); + const Vec3d size = object->instance_bounding_box(i).size(); + const Vec3d ratio = size.cwiseQuotient(bed_size); + const double max_ratio = std::max(ratio(0), ratio(1)); if (max_ratio > 10000) { - MessageDialog - dlg(q, _L("Your object appears to be too large, do you want to scale it down to fit the print bed automatically?"), - _L("Object too large"), wxICON_QUESTION | wxYES); - int answer = dlg.ShowModal(); + MessageDialog dlg(q, _L("Your object appears to be too large, do you want to scale it down to fit the print bed automatically?"), _L("Object too large"), + wxICON_QUESTION | wxYES); + int answer = dlg.ShowModal(); // the size of the object is too big -> this could lead to overflow when moving to clipper coordinates, // so scale down the mesh object->scale_mesh_after_creation(1. / max_ratio); @@ -9838,11 +9727,11 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode object->center_around_origin(); scaled_down = true; break; - } else if (max_ratio > 10) { - MessageDialog - dlg(q, _L("Your object appears to be too large, do you want to scale it down to fit the print bed automatically?"), - _L("Object too large"), wxICON_QUESTION | wxYES_NO); - int answer = dlg.ShowModal(); + } + else if (max_ratio > 10) { + MessageDialog dlg(q, _L("Your object appears to be too large, do you want to scale it down to fit the print bed automatically?"), _L("Object too large"), + wxICON_QUESTION | wxYES_NO); + int answer = dlg.ShowModal(); if (answer == wxID_YES) { instance->set_scaling_factor(instance->get_scaling_factor() / max_ratio); scaled_down = true; @@ -9852,27 +9741,28 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode if (!auto_drop) { for (size_t i = 0; i < object->instances.size(); ++i) { - ModelInstance* instance = object->instances[i]; - instance->auto_drop = auto_drop; + ModelInstance* instance = object->instances[i]; + instance->auto_drop = auto_drop; } // if under the bed, move over the bed double dist_to_bed = std::min(object->min_z(), double(0)); object->translate_instances(Vec3d(0, 0, -dist_to_bed)); - } else { + } + else { object->ensure_on_bed(allow_negative_z); } if (!split_object) { - // BBS initial assemble transformation + //BBS initial assemble transformation for (ModelObject* model_object : model.objects) { - // BBS initialize assemble transformation + //BBS initialize assemble transformation for (int i = 0; i < model_object->instances.size(); i++) { if (!model_object->instances[i]->is_assemble_initialized()) { model_object->instances[i]->set_assemble_transformation(model_object->instances[i]->get_transformation()); } } - } + } } } @@ -9898,7 +9788,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #else // BBS: find an empty cell to put the copied object for (auto& instance : new_instances) { - auto offset = instance->get_offset(); + auto offset = instance->get_offset(); auto start_point = this->bed.build_volume().bounding_volume2d().center(); bool plate_empty = partplate_list.get_curr_plate()->empty(); Vec3d displacement; @@ -9914,22 +9804,23 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #endif /* AUTOPLACEMENT_ON_LOAD */ - // BBS: remove the auto scaled_down logic when load models - // if (scaled_down) { - // GUI::show_info(q, - // _L("Your object appears to be too large, so it was automatically scaled down to fit your print bed."), - // _L("Object too large?")); - // } + //BBS: remove the auto scaled_down logic when load models + //if (scaled_down) { + // GUI::show_info(q, + // _L("Your object appears to be too large, so it was automatically scaled down to fit your print bed."), + // _L("Object too large?")); + //} BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", finished auto placement, before add_objects_to_list"); notification_manager->close_notification_of_type(NotificationType::UpdatedItemsInfo); if (obj_idxs.size() > 1) { - std::vector obj_idxs_1(obj_idxs.begin(), obj_idxs.end() - 1); + std::vector obj_idxs_1 (obj_idxs.begin(), obj_idxs.end() - 1); wxGetApp().obj_list()->add_objects_to_list(obj_idxs_1, false); wxGetApp().obj_list()->add_object_to_list(obj_idxs[obj_idxs.size() - 1]); - } else + } + else wxGetApp().obj_list()->add_objects_to_list(obj_idxs); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << boost::format(", after add_objects_to_list"); @@ -9938,7 +9829,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode // which is updated after a view3D->reload_scene(false, flags & (unsigned int)UpdateParams::FORCE_FULL_SCREEN_REFRESH) call for (const size_t idx : obj_idxs) wxGetApp().obj_list()->update_info_items(idx); - + object_list_changed(); this->schedule_background_process(); @@ -9950,7 +9841,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode void Plater::priv::load_auxiliary_files() { std::string auxiliary_path = encode_path(q->model().get_auxiliary_file_temp_path().c_str()); - // wxGetApp().mainframe->m_project->Reload(auxiliary_path); + //wxGetApp().mainframe->m_project->Reload(auxiliary_path); } fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) @@ -9959,7 +9850,7 @@ fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) this->update_print_volume_state(); const Selection& selection = get_selection(); - int obj_idx = selection.get_object_idx(); + int obj_idx = selection.get_object_idx(); fs::path output_file; if (file_type == FT_3MF) @@ -9968,20 +9859,22 @@ fs::path Plater::priv::get_export_file_path(GUI::FileType file_type) else if (file_type == FT_STL) { if (obj_idx > 0 && obj_idx < this->model.objects.size() && selection.is_single_full_object()) { output_file = this->model.objects[obj_idx]->get_export_filename(); - } else { + } + else { output_file = into_path(get_project_name()); } } - // bbs name the project using the part name + //bbs name the project using the part name if (output_file.empty()) { if (get_project_name() != _L("Untitled")) { output_file = into_path(get_project_name() + ".3mf"); } } - if (output_file.empty()) { + if (output_file.empty()) + { // first try to get the file name from the current selection - if ((0 <= obj_idx) && (obj_idx < (int) this->model.objects.size())) + if ((0 <= obj_idx) && (obj_idx < (int)this->model.objects.size())) output_file = this->model.objects[obj_idx]->get_export_filename(); if (output_file.empty()) @@ -10003,56 +9896,65 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& { wxString wildcard; switch (file_type) { - case FT_STL: - case FT_DRC: - case FT_AMF: - case FT_3MF: - case FT_GCODE: - case FT_OBJ: wildcard = file_wildcards(file_type); break; - default: wildcard = file_wildcards(FT_MODEL); break; + case FT_STL: + case FT_DRC: + case FT_AMF: + case FT_3MF: + case FT_GCODE: + case FT_OBJ: + wildcard = file_wildcards(file_type); + break; + default: + wildcard = file_wildcards(FT_MODEL); + break; } fs::path output_file = get_export_file_path(file_type); wxString dlg_title; switch (file_type) { - case FT_STL: { - output_file.replace_extension("stl"); - dlg_title = _L("Export STL file:"); - break; - } - case FT_DRC: { - output_file.replace_extension("drc"); - dlg_title = _L("Export Draco file:"); - break; - } - case FT_AMF: { - // XXX: Problem on OS X with double extension? - output_file.replace_extension("zip.amf"); - dlg_title = _L("Export AMF file:"); - break; - } - case FT_3MF: { + case FT_STL: + { + output_file.replace_extension("stl"); + dlg_title = _L("Export STL file:"); + break; + } + case FT_DRC: + { + output_file.replace_extension("drc"); + dlg_title = _L("Export Draco file:"); + break; + } + case FT_AMF: + { + // XXX: Problem on OS X with double extension? + output_file.replace_extension("zip.amf"); + dlg_title = _L("Export AMF file:"); + break; + } + case FT_3MF: + { // A published export is suggested as ".published.3mf" so the role is visible in the // dialog and in the recent-files list. This is only a pre-filled suggestion; the user's // typed filename wins, keeping a plain ".3mf" output fully valid. output_file.replace_extension(published ? "published.3mf" : "3mf"); dlg_title = title.empty() ? _L("Save file as") : title; - break; - } - case FT_OBJ: { - output_file.replace_extension("obj"); - dlg_title = _L("Export OBJ file:"); - break; - } - default: break; + break; + } + case FT_OBJ: + { + output_file.replace_extension("obj"); + dlg_title = _L("Export OBJ file:"); + break; + } + default: break; } std::string out_dir = (boost::filesystem::path(output_file).parent_path()).string(); wxFileDialog dlg(q, dlg_title, - is_shapes_dir(out_dir) ? from_u8(wxGetApp().app_config->get_last_dir()) : from_path(output_file.parent_path()), - from_path(output_file.filename()), wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxPD_APP_MODAL); + is_shapes_dir(out_dir) ? from_u8(wxGetApp().app_config->get_last_dir()) : from_path(output_file.parent_path()), from_path(output_file.filename()), + wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxPD_APP_MODAL); int result = dlg.ShowModal(); if (result == wxID_CANCEL) @@ -10068,8 +9970,9 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& boost::system::error_code ec; if (boost::filesystem::exists(into_u8(out_path), ec)) { auto result = MessageBox(q->GetHandle(), - wxString::Format(_L("The file %s already exists.\nDo you want to replace it\?"), out_path), - _L("Confirm Save As"), MB_YESNO | MB_ICONWARNING); + wxString::Format(_L("The file %s already exists.\nDo you want to replace it\?"), out_path), + _L("Confirm Save As"), + MB_YESNO | MB_ICONWARNING); if (result != IDYES) return wxEmptyString; } @@ -10080,11 +9983,20 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type, const wxString& return out_path; } -const Selection& Plater::priv::get_selection() const { return view3D->get_canvas3d()->get_selection(); } +const Selection& Plater::priv::get_selection() const +{ + return view3D->get_canvas3d()->get_selection(); +} -Selection& Plater::priv::get_selection() { return view3D->get_canvas3d()->get_selection(); } +Selection& Plater::priv::get_selection() +{ + return view3D->get_canvas3d()->get_selection(); +} -Selection& Plater::priv::get_curr_selection() { return get_current_canvas3D()->get_selection(); } +Selection& Plater::priv::get_curr_selection() +{ + return get_current_canvas3D()->get_selection(); +} int Plater::priv::get_selected_object_idx() const { @@ -10095,9 +10007,9 @@ int Plater::priv::get_selected_object_idx() const int Plater::priv::get_selected_volume_idx() const { auto& selection = get_selection(); - int idx = selection.get_object_idx(); + int idx = selection.get_object_idx(); if ((0 > idx) || (idx > 1000)) - return -1; + return-1; const GLVolume* v = selection.get_first_volume(); if (model.objects[idx]->volumes.size() > 1) return v->volume_idx(); @@ -10124,22 +10036,21 @@ void Plater::priv::object_list_changed() { const bool export_in_progress = this->background_process.is_export_scheduled(); // || ! send_gcode_file.empty()); // XXX: is this right? - // const bool model_fits = view3D->get_canvas3d()->check_volumes_outside_state() == ModelInstancePVS_Inside; + //const bool model_fits = view3D->get_canvas3d()->check_volumes_outside_state() == ModelInstancePVS_Inside; ObjectFilamentResults object_results; bool model_fits = view3D->get_canvas3d()->check_volumes_outside_state(&object_results) != ModelInstancePVS_Partly_Outside; - model_fits = model_fits && object_results.filaments.empty(); + model_fits = model_fits && object_results.filaments.empty(); PartPlate* part_plate = partplate_list.get_curr_plate(); // BBS - // sidebar->enable_buttons(!model.objects.empty() && !export_in_progress && model_fits && part_plate->has_printable_instances()); + //sidebar->enable_buttons(!model.objects.empty() && !export_in_progress && model_fits && part_plate->has_printable_instances()); // A mixed filament with deleted or type-mismatched components cannot be resolved at slicing // time, so block the slice buttons the same way MainFrame::get_enable_slice_status() does. bool mixed_broken = sidebar->has_broken_mixed_filament(); - bool can_slice = !model.objects.empty() && !export_in_progress && model_fits && part_plate->has_printable_instances() && !mixed_broken; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": can_slice %1%, model_fits= %2%, export_in_progress %3%, has_printable_instances %4% ") % - can_slice % model_fits % export_in_progress % part_plate->has_printable_instances(); + bool can_slice = !model.objects.empty() && !export_in_progress && model_fits && part_plate->has_printable_instances() + && !mixed_broken; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": can_slice %1%, model_fits= %2%, export_in_progress %3%, has_printable_instances %4% ")%can_slice %model_fits %export_in_progress %part_plate->has_printable_instances(); main_frame->update_slice_print_status(MainFrame::eEventObjectUpdate, can_slice); wxGetApp().params_panel()->notify_object_config_changed(); @@ -10166,9 +10077,15 @@ void Plater::priv::select_all() this->sidebar->obj_list()->update_selections(); } -void Plater::priv::deselect_all() { view3D->deselect_all(); } +void Plater::priv::deselect_all() +{ + view3D->deselect_all(); +} -void Plater::priv::exit_gizmo() { view3D->exit_gizmo(); } +void Plater::priv::exit_gizmo() +{ + view3D->exit_gizmo(); +} void Plater::priv::remove(size_t obj_idx) { @@ -10177,7 +10094,7 @@ void Plater::priv::remove(size_t obj_idx) m_worker.cancel_all(); model.delete_object(obj_idx); - // BBS: notify partplate the instance removed + //BBS: notify partplate the instance removed partplate_list.notify_instance_removed(obj_idx, -1); update(); // Delete object from Sidebar list. Do it after update, so that the GLScene selection is updated with the modified model. @@ -10185,15 +10102,15 @@ void Plater::priv::remove(size_t obj_idx) object_list_changed(); } + bool Plater::priv::delete_object_from_model(size_t obj_idx, bool refresh_immediately) { // check if object isn't cut // show warning message that "cut consistancy" will not be supported any more - ModelObject* obj = model.objects[obj_idx]; + ModelObject *obj = model.objects[obj_idx]; if (obj->is_cut()) { InfoDialog dialog(q, _L("Delete object which is a part of cut object"), - _L("You are trying to delete an object which is a part of a cut object.\nThis action will break a cut " - "correspondence.\nAfter that, model consistency can\'t be guaranteed."), + _L("You are trying to delete an object which is a part of a cut object.\nThis action will break a cut correspondence.\nAfter that, model consistency can\'t be guaranteed."), false, wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxICON_WARNING); dialog.SetButtonLabel(wxID_YES, _L("Delete")); if (dialog.ShowModal() == wxID_CANCEL) @@ -10210,10 +10127,10 @@ bool Plater::priv::delete_object_from_model(size_t obj_idx, bool refresh_immedia sidebar->obj_list()->invalidate_cut_info_for_object(obj_idx); model.delete_object(obj_idx); - // BBS: notify partplate the instance removed + //BBS: notify partplate the instance removed partplate_list.notify_instance_removed(obj_idx, -1); - // BBS + //BBS if (refresh_immediately) { update(); object_list_changed(); @@ -10239,7 +10156,7 @@ void Plater::priv::delete_all_objects_from_model() // Stop and reset the Print content. background_process.reset(); - // BBS: update partplate + //BBS: update partplate partplate_list.clear(); model.clear_objects(); @@ -10248,7 +10165,7 @@ void Plater::priv::delete_all_objects_from_model() sidebar->obj_list()->delete_all_objects_from_list(); object_list_changed(); - // BBS + //BBS model.calib_pa_pattern.reset(); model.plates_custom_gcodes.clear(); } @@ -10272,16 +10189,16 @@ void Plater::priv::reset(bool apply_presets_change) view3D->get_canvas3d()->reset_all_gizmos(); reset_gcode_toolpaths(); - // BBS: update gcode to current partplate's - // GCodeProcessorResult* current_result = this->background_process.get_current_plate()->get_slice_result(); - // current_result->reset(); - // gcode_result.reset(); + //BBS: update gcode to current partplate's + //GCodeProcessorResult* current_result = this->background_process.get_current_plate()->get_slice_result(); + //current_result->reset(); + //gcode_result.reset(); view3D->get_canvas3d()->reset_sequential_print_clearance(); m_worker.cancel_all(); - // BBS: clear the partplate list's object before object cleared + //BBS: clear the partplate list's object before object cleared partplate_list.reinit(); partplate_list.update_slice_context_to_current_plate(background_process); preview->update_gcode_result(partplate_list.get_current_slice_result()); @@ -10292,7 +10209,7 @@ void Plater::priv::reset(bool apply_presets_change) assemble_view->get_canvas3d()->reset_explosion_ratio(); update(); - // BBS + //BBS if (wxGetApp().is_editor()) { // Delete object from Sidebar list. Do it after update, so that the GLScene selection is updated with the modified model. sidebar->obj_list()->delete_all_objects_from_list(); @@ -10302,14 +10219,14 @@ void Plater::priv::reset(bool apply_presets_change) project.reset(); wxGetApp().sidebar().printer_combox()->clear_selected_dev_id(); - // BBS: reset all project embedded presets + //BBS: reset all project embedded presets wxGetApp().preset_bundle->reset_project_embedded_presets(); if (apply_presets_change) wxGetApp().apply_keeped_preset_modifications(); else wxGetApp().load_current_presets(false, false); - // BBS + //BBS model.calib_pa_pattern.reset(); model.plates_custom_gcodes.clear(); @@ -10328,19 +10245,28 @@ void Plater::priv::reset(bool apply_presets_change) } } -void Plater::priv::center_selection() { view3D->center_selected(); } +void Plater::priv::center_selection() +{ + view3D->center_selected(); +} -void Plater::priv::drop_selection() { view3D->drop_selected(); } +void Plater::priv::drop_selection() +{ + view3D->drop_selected(); +} -void Plater::priv::mirror(Axis axis) { view3D->mirror_selection(axis); } +void Plater::priv::mirror(Axis axis) +{ + view3D->mirror_selection(axis); +} -void Plater::find_new_position(const ModelInstancePtrs& instances) +void Plater::find_new_position(const ModelInstancePtrs &instances) { arrangement::ArrangePolygons movable, fixed; arrangement::ArrangeParams arr_params = init_arrange_params(this); - for (const ModelObject* mo : p->model.objects) - for (ModelInstance* inst : mo->instances) { + for (const ModelObject *mo : p->model.objects) + for (ModelInstance *inst : mo->instances) { auto it = std::find(instances.begin(), instances.end(), inst); arrangement::ArrangePolygon arrpoly; inst->get_arrange_polygon(&arrpoly); @@ -10348,7 +10274,7 @@ void Plater::find_new_position(const ModelInstancePtrs& instances) if (it == instances.end()) fixed.emplace_back(std::move(arrpoly)); else { - arrpoly.setter = [it](const arrangement::ArrangePolygon& p) { + arrpoly.setter = [it](const arrangement::ArrangePolygon &p) { if (p.is_arranged() && p.bed_idx == 0) { Vec2d t = p.translation.cast(); (*it)->apply_arrange_result(t, p.rotation); @@ -10363,13 +10289,13 @@ void Plater::find_new_position(const ModelInstancePtrs& instances) arrangement::arrange(movable, fixed, this->build_volume().polygon(), arr_params); - for (auto& m : movable) + for (auto & m : movable) m.apply(); } // split selected object into multiple objects by its volumes void Plater::priv::split_object(bool auto_drop /* = true */) -{ +{ int obj_idx = get_selected_object_idx(); priv::split_object(obj_idx, auto_drop); } @@ -10382,7 +10308,7 @@ void Plater::priv::split_object(int obj_idx, bool auto_drop /* = true */) // we clone model object because split_object() adds the split volumes // into the same model object, thus causing duplicates when we call load_model_objects() - Model new_model = model; + Model new_model = model; ModelObject* current_model_object = new_model.objects[obj_idx]; wxBusyCursor wait; @@ -10391,10 +10317,11 @@ void Plater::priv::split_object(int obj_idx, bool auto_drop /* = true */) if (new_objects.size() == 1) // #ysFIXME use notification Slic3r::GUI::warning_catcher(q, _L("The selected object couldn't be split.")); - else { + else + { // BBS no solid parts removed // If we splited object which is contain some parts/modifiers then all non-solid parts (modifiers) were deleted - // if (current_model_object->volumes.size() > 1 && current_model_object->volumes.size() != new_objects.size()) + //if (current_model_object->volumes.size() > 1 && current_model_object->volumes.size() != new_objects.size()) // notification_manager->push_notification(NotificationType::CustomNotification, // NotificationManager::NotificationLevel::PrintInfoNotificationLevel, // _u8L("All non-solid parts (modifiers) were deleted")); @@ -10403,15 +10330,15 @@ void Plater::priv::split_object(int obj_idx, bool auto_drop /* = true */) auto is_atleast_one_floating = [new_objects]() { for (ModelObject* new_object : new_objects) { - if (new_object->get_instance_min_z(0) >= SINKING_MIN_Z_THRESHOLD) + if (new_object->get_instance_min_z(0) >= SINKING_MIN_Z_THRESHOLD) return true; } return false; }; bool split_auto_drop = auto_drop; if (current_model_object->instances[0]->auto_drop && is_atleast_one_floating()) { - MessageDialog dlg(q, _L("Disable Auto-Drop to preserve Z positioning?\n"), _L("Object with floating parts was detected"), - wxICON_QUESTION | wxYES_NO); + MessageDialog dlg(q, _L("Disable Auto-Drop to preserve Z positioning?\n"), + _L("Object with floating parts was detected"), wxICON_QUESTION | wxYES_NO); if (dlg.ShowModal() == wxID_YES) split_auto_drop = false; @@ -10421,19 +10348,23 @@ void Plater::priv::split_object(int obj_idx, bool auto_drop /* = true */) // load all model objects at once, otherwise the plate would be rearranged after each one // causing original positions not to be kept - // BBS: set split_object to true to avoid re-compute assemble matrix + //BBS: set split_object to true to avoid re-compute assemble matrix std::vector idxs = load_model_objects(new_objects, false, true, split_auto_drop); wxGetApp().plater()->get_view3D_canvas3D()->update_instance_printable_state_for_objects(idxs); // select newly added objects - for (size_t idx : idxs) { - get_selection().add_object((unsigned int) idx, false); + for (size_t idx : idxs) + { + get_selection().add_object((unsigned int)idx, false); } } } -void Plater::priv::split_volume() { wxGetApp().obj_list()->split(); } +void Plater::priv::split_volume() +{ + wxGetApp().obj_list()->split(); +} void Plater::priv::scale_selection_to_fit_print_volume() { @@ -10546,11 +10477,11 @@ int Plater::priv::auto_slice_delay_seconds() const std::vector> Plater::priv::get_extruder_filament_info() { std::vector> filament_infos; - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return filament_infos; - MachineObject* obj_ = dev->get_selected_machine(); + MachineObject *obj_ = dev->get_selected_machine(); if (obj_ == nullptr) return filament_infos; @@ -10563,97 +10494,90 @@ std::vector> Plater::priv::get_extruder_filament void Plater::priv::update_print_volume_state() { - // BBS: use the plate's bounding box instead of the bed's + //BBS: use the plate's bounding box instead of the bed's PartPlate* pp = partplate_list.get_curr_plate(); - BuildVolume build_volume(pp->get_shape(), this->bed.build_volume().printable_height(), this->bed.build_volume().extruder_areas(), - this->bed.build_volume().extruder_heights()); + BuildVolume build_volume(pp->get_shape(), this->bed.build_volume().printable_height(), this->bed.build_volume().extruder_areas(), this->bed.build_volume().extruder_heights()); this->model.update_print_volume_state(build_volume); } -void Plater::priv::process_validation_warning(StringObjectException const& warning) const +void Plater::priv::process_validation_warning(StringObjectException const &warning) const { if (warning.string.empty()) notification_manager->close_notification_of_type(NotificationType::ValidateWarning); else { std::string text = warning.string; - auto po = dynamic_cast(warning.object); - auto mo = po ? po->model_object() : dynamic_cast(warning.object); - // ORCA: Update process_validation_warning to handle ModelInstance selection and include fallback - auto mi = dynamic_cast(warning.object); + auto po = dynamic_cast(warning.object); + auto mo = po ? po->model_object() : dynamic_cast(warning.object); + //ORCA: Update process_validation_warning to handle ModelInstance selection and include fallback + auto mi = dynamic_cast(warning.object); - auto action_fn = (mo || mi || !warning.opt_key.empty()) ? - [id = mo ? mo->id() : (mi ? mi->id() : 0), parent_id = mi ? mi->get_object()->id() : 0, - is_inst = (mi != nullptr), opt = warning.opt_key](wxEvtHandler*) { - auto& objects = wxGetApp().model().objects; + auto action_fn = (mo || mi || !warning.opt_key.empty()) ? [id = mo ? mo->id() : (mi ? mi->id() : 0), + parent_id = mi ? mi->get_object()->id() : 0, + is_inst = (mi != nullptr), + opt = warning.opt_key](wxEvtHandler *) { + auto & objects = wxGetApp().model().objects; - if (is_inst) { - bool selected = false; - auto iter = std::find_if(objects.begin(), objects.end(), - [parent_id](auto o) { return o->id() == parent_id; }); - if (iter != objects.end()) { - ModelObject* obj = *iter; - int inst_idx = -1; - for (size_t i = 0; i < obj->instances.size(); ++i) { - if (obj->instances[i]->id() == id) { - inst_idx = i; - break; - } - } + if (is_inst) { + bool selected = false; + auto iter = std::find_if(objects.begin(), objects.end(), [parent_id](auto o) { return o->id() == parent_id; }); + if (iter != objects.end()) { + ModelObject* obj = *iter; + int inst_idx = -1; + for(size_t i=0; iinstances.size(); ++i) { + if (obj->instances[i]->id() == id) { + inst_idx = i; + break; + } + } - wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); + wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - if (inst_idx != -1) { - auto* model = wxGetApp().obj_list()->GetModel(); - wxDataViewItem item; - wxDataViewItem objItem = model->GetObjectItem(obj); - if (objItem.IsOk()) { - int vm_obj_idx = model->GetIdByItem(objItem); - if (vm_obj_idx != -1) { - item = model->GetItemByInstanceId(vm_obj_idx, inst_idx); - } - } - if (item.IsOk()) { - wxDataViewItemArray sel_items; - sel_items.Add(item); - wxGetApp().obj_list()->select_items(sel_items); - wxGetApp().obj_list()->update_selections_on_canvas(); - selected = true; - } - } + if (inst_idx != -1) { + auto* model = wxGetApp().obj_list()->GetModel(); + wxDataViewItem item; + wxDataViewItem objItem = model->GetObjectItem(obj); + if (objItem.IsOk()) { + int vm_obj_idx = model->GetIdByItem(objItem); + if (vm_obj_idx != -1) { + item = model->GetItemByInstanceId(vm_obj_idx, inst_idx); + } + } + if (item.IsOk()) { + wxDataViewItemArray sel_items; + sel_items.Add(item); + wxGetApp().obj_list()->select_items(sel_items); + wxGetApp().obj_list()->update_selections_on_canvas(); + selected = true; + } + } - if (!selected) { - wxGetApp().obj_list()->select_items({{obj, nullptr}}); - wxGetApp().obj_list()->update_selections_on_canvas(); - } - } - } else { - auto iter = id.id ? - std::find_if(objects.begin(), objects.end(), [id](auto o) { return o->id() == id; }) : - objects.end(); - if (iter != objects.end()) { - wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - wxGetApp().obj_list()->select_items({{*iter, nullptr}}); - wxGetApp().obj_list()->update_selections_on_canvas(); - } - } - if (!opt.empty()) { - if ((!is_inst && id.id) || (is_inst && parent_id.id)) - wxGetApp().params_panel()->switch_to_object(); - wxGetApp().sidebar().jump_to_option(opt, Preset::TYPE_PRINT, L""); - } - return false; - } : - std::function(); + if (!selected) { + wxGetApp().obj_list()->select_items({ {obj, nullptr} }); + wxGetApp().obj_list()->update_selections_on_canvas(); + } + } + } else { + auto iter = id.id ? std::find_if(objects.begin(), objects.end(), [id](auto o) { return o->id() == id; }) : objects.end(); + if (iter != objects.end()) { + wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); + wxGetApp().obj_list()->select_items({{*iter, nullptr}}); + wxGetApp().obj_list()->update_selections_on_canvas(); + } + } + if (!opt.empty()) { + if ((!is_inst && id.id) || (is_inst && parent_id.id)) + wxGetApp().params_panel()->switch_to_object(); + wxGetApp().sidebar().jump_to_option(opt, Preset::TYPE_PRINT, L""); + } + return false; + } : std::function(); auto hypertext = (mo || mi || !warning.opt_key.empty()) ? _u8L("Jump to") : ""; - if (mo) - hypertext += std::string(" [") + mo->name + "]"; - if (mi) - hypertext += std::string(" [") + mi->get_object()->name + "]"; - if (!warning.opt_key.empty()) - hypertext += std::string(" (") + warning.opt_key + ")"; + if (mo) hypertext += std::string(" [") + mo->name + "]"; + if (mi) hypertext += std::string(" [") + mi->get_object()->name + "]"; + if (!warning.opt_key.empty()) hypertext += std::string(" (") + warning.opt_key + ")"; // BBS disable support enforcer - // if (text == "_SUPPORTS_OFF") { + //if (text == "_SUPPORTS_OFF") { // text = _u8L("An object has custom support enforcers which will not be used " // "because supports are disabled.")+"\n"; // hypertext = _u8L("Enable supports for enforcers only"); @@ -10670,21 +10594,24 @@ void Plater::priv::process_validation_warning(StringObjectException const& warni // }; //} - notification_manager->push_notification(NotificationType::ValidateWarning, - NotificationManager::NotificationLevel::WarningNotificationLevel, - _u8L("WARNING:") + "\n" + text, hypertext, action_fn); + notification_manager->push_notification( + NotificationType::ValidateWarning, + NotificationManager::NotificationLevel::WarningNotificationLevel, + _u8L("WARNING:") + "\n" + text, hypertext, action_fn + ); } } -void Plater::priv::process_validation_warnings(const std::vector& warnings) const +void Plater::priv::process_validation_warnings(const std::vector &warnings) const { // ValidateWarning stacks by text (m_multiple_types), so clear the stale set before re-adding. notification_manager->close_notification_of_type(NotificationType::ValidateWarning); - for (const StringObjectException& warning : warnings) + for (const StringObjectException &warning : warnings) if (!warning.string.empty()) process_validation_warning(warning); } + // Update background processing thread from the current config and Model. // Returns a bitmask of UpdateBackgroundProcessReturnState. unsigned int Plater::priv::update_background_process(bool force_validation, bool postpone_error_messages, bool switch_print) @@ -10698,52 +10625,50 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool // Update the "out of print bed" state of ModelInstances. update_print_volume_state(); // Apply new config to the possibly running background task. - bool was_running = background_process.running(); - // BBS: add the switch print logic before Print::Apply - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format( - ": enter, force_validation=%1% postpone_error_messages=%2%, switch_print=%3%, was_running=%4%") % - force_validation % postpone_error_messages % switch_print % was_running; - if (switch_print) { - // BBS: update the current print to the current plate + bool was_running = background_process.running(); + //BBS: add the switch print logic before Print::Apply + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": enter, force_validation=%1% postpone_error_messages=%2%, switch_print=%3%, was_running=%4%")%force_validation %postpone_error_messages %switch_print %was_running; + if (switch_print) + { + //BBS: update the current print to the current plate this->partplate_list.update_slice_context_to_current_plate(background_process); this->preview->update_gcode_result(partplate_list.get_current_slice_result()); } - background_process.fff_print()->set_check_multi_filaments_compatibility( - wxGetApp().app_config->get("enable_high_low_temp_mixed_printing") == "false"); + background_process.fff_print()->set_check_multi_filaments_compatibility(wxGetApp().app_config->get("enable_high_low_temp_mixed_printing") == "false"); Print::ApplyStatus invalidated; const auto& preset_bundle = wxGetApp().preset_bundle; if (preset_bundle->get_printer_extruder_count() > 1) { - PartPlate* cur_plate = background_process.get_current_plate(); - std::vector f_maps = cur_plate->get_real_filament_maps(preset_bundle->project_config); + PartPlate* cur_plate = background_process.get_current_plate(); + std::vector f_maps = cur_plate->get_real_filament_maps(preset_bundle->project_config); std::vector f_volume_maps = cur_plate->get_filament_volume_maps(); if (f_volume_maps.empty()) { f_volume_maps = preset_bundle->get_default_nozzle_volume_types_for_filaments(f_maps); } invalidated = background_process.apply(this->model, preset_bundle->full_config(false, f_maps, f_volume_maps)); background_process.fff_print()->set_extruder_filament_info(get_extruder_filament_info()); - } else + } + else invalidated = background_process.apply(this->model, preset_bundle->full_config(false)); if ((invalidated == Print::APPLY_STATUS_CHANGED) || (invalidated == Print::APPLY_STATUS_INVALIDATED)) // BBS: add only gcode mode q->set_only_gcode(false); - // BBS: add slicing related logs - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": background process apply result=%1%") % invalidated; + //BBS: add slicing related logs + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": background process apply result=%1%")%invalidated; if (background_process.empty()) view3D->get_canvas3d()->reset_sequential_print_clearance(); if (invalidated == Print::APPLY_STATUS_INVALIDATED) { - // BBS: update current plater's slicer result to invalid + //BBS: update current plater's slicer result to invalid this->background_process.get_current_plate()->update_slice_result_valid_state(false); - // no need, should be done in background_process.apply - // this->background_process.get_current_gcode_result()->reset(); - // Reset preview canvases. If the print has been invalidated, the preview canvases will be cleared. - // Otherwise they will be just refreshed. + //no need, should be done in background_process.apply + //this->background_process.get_current_gcode_result()->reset(); + // Reset preview canvases. If the print has been invalidated, the preview canvases will be cleared. + // Otherwise they will be just refreshed. if (preview != nullptr) { // If the preview is not visible, the following line just invalidates the preview, // but the G-code paths or SLA preview are calculated first once the preview is made visible. @@ -10756,27 +10681,28 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool return_state |= UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE; notification_manager->set_slicing_progress_hidden(); - } else { + } + else { if (preview && preview->get_reload_paint_after_background_process_apply()) { preview->set_reload_paint_after_background_process_apply(false); preview->reload_print(); } } - if ((invalidated != Print::APPLY_STATUS_UNCHANGED || force_validation) && !background_process.empty()) { + if ((invalidated != Print::APPLY_STATUS_UNCHANGED || force_validation) && ! background_process.empty()) { // The delayed error message is no more valid. delayed_error_message.clear(); // The state of the Print changed, and it is non-zero. Let's validate it and give the user feedback on errors. - // BBS: add is_warning logic + //BBS: add is_warning logic std::vector warnings; - // BBS: refine seq-print logic + //BBS: refine seq-print logic Polygons polygons; std::vector> height_polygons; StringObjectException err = background_process.validate(&warnings, &polygons, &height_polygons); // update string by type q->post_process_string_object_exception(err); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": validate err=%1%, warnings=%2%") % err.string % warnings.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": validate err=%1%, warnings=%2%")%err.string%warnings.size(); if (err.string.empty()) { this->partplate_list.get_curr_plate()->update_apply_result_invalid(false); @@ -10793,88 +10719,92 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool view3D->get_canvas3d()->set_as_dirty(); view3D->get_canvas3d()->request_extra_frame(); } - } else { + } + else { this->partplate_list.get_curr_plate()->update_apply_result_invalid(true); // The print is not valid. // Show error as notification. notification_manager->push_validate_error_notification(err); - // also update the warnings + //also update the warnings process_validation_warnings(warnings); return_state |= UPDATE_BACKGROUND_PROCESS_INVALID; if (printer_technology == ptFFF) { const Print* print = background_process.fff_print(); - // Polygons polygons; - // if (print->config().print_sequence == PrintSequence::ByObject) - // Print::sequential_print_clearance_valid(*print, &polygons); + //Polygons polygons; + //if (print->config().print_sequence == PrintSequence::ByObject) + // Print::sequential_print_clearance_valid(*print, &polygons); view3D->get_canvas3d()->set_sequential_print_clearance_visible(true); view3D->get_canvas3d()->set_sequential_print_clearance_render_fill(true); view3D->get_canvas3d()->set_sequential_print_clearance_polygons(polygons, height_polygons); } } - } else if (!this->delayed_error_message.empty()) { + } + else if (! this->delayed_error_message.empty()) { // Reusing the old state. return_state |= UPDATE_BACKGROUND_PROCESS_INVALID; } - // actualizate warnings + //actualizate warnings if (invalidated != Print::APPLY_STATUS_UNCHANGED || background_process.empty()) { if (background_process.empty()) process_validation_warning({}); actualize_slicing_warnings(*this->background_process.current_print()); actualize_object_warnings(*this->background_process.current_print()); - show_warning_dialog = false; + show_warning_dialog = false; process_completed_with_error = -1; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format( - ", Line %1%: was_running = %2%, running %3%, invalidated=%4%, return_state=%5%, internal_cancel=%6%") % - __LINE__ % was_running % this->background_process.running() % invalidated % return_state % - this->background_process.is_internal_cancelled(); - if (was_running && !this->background_process.running() && (return_state & UPDATE_BACKGROUND_PROCESS_RESTART) == 0) { - if (invalidated != Print::APPLY_STATUS_UNCHANGED || this->background_process.is_internal_cancelled()) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: was_running = %2%, running %3%, invalidated=%4%, return_state=%5%, internal_cancel=%6%") + % __LINE__ % was_running % this->background_process.running() % invalidated % return_state % this->background_process.is_internal_cancelled(); + if (was_running && ! this->background_process.running() && (return_state & UPDATE_BACKGROUND_PROCESS_RESTART) == 0) { + if (invalidated != Print::APPLY_STATUS_UNCHANGED || this->background_process.is_internal_cancelled()) + { // The background processing was killed and it will not be restarted. // Post the "canceled" callback message, so that it will be processed after any possible pending status bar update messages. - SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, SlicingProcessCompletedEvent::Cancelled, nullptr); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" %1%, post an EVT_PROCESS_COMPLETED to main, status %2%") % __LINE__ % evt.status(); + SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, + SlicingProcessCompletedEvent::Cancelled, nullptr); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%, post an EVT_PROCESS_COMPLETED to main, status %2%")%__LINE__ %evt.status(); wxQueueEvent(q, evt.Clone()); } } - if ((return_state & UPDATE_BACKGROUND_PROCESS_INVALID) != 0) { + if ((return_state & UPDATE_BACKGROUND_PROCESS_INVALID) != 0) + { // Validation of the background data failed. - // BBS: add slice&&print status update logic + //BBS: add slice&&print status update logic this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, false); process_completed_with_error = partplate_list.get_curr_plate_index(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(", Line %1%: set to process_completed_with_error, return_state=%2%") % __LINE__ % - return_state; - } else { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: set to process_completed_with_error, return_state=%2%")%__LINE__%return_state; + } + else + { // Background data is valid. - if ((return_state & UPDATE_BACKGROUND_PROCESS_RESTART) != 0 || (return_state & UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) != 0) + if ((return_state & UPDATE_BACKGROUND_PROCESS_RESTART) != 0 || + (return_state & UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) != 0 ) notification_manager->set_slicing_progress_hidden(); - // BBS: add slice&&print status update logic - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(", Line %1%: background data valid, return_state=%2%") % __LINE__ % return_state; + //BBS: add slice&&print status update logic + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: background data valid, return_state=%2%")%__LINE__%return_state; PartPlate* cur_plate = background_process.get_current_plate(); - if (background_process.finished() && cur_plate && cur_plate->is_slice_result_valid()) { - // ready_to_slice = false; + if (background_process.finished() && cur_plate && cur_plate->is_slice_result_valid()) + { + //ready_to_slice = false; this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, false); - } else if (!background_process.empty() && - !background_process.running()) /* Do not update buttons if background process is running - * This condition is important for SLA mode especially, - * when this function is called several times during calculations - * */ + } + else if (!background_process.empty() && + !background_process.running()) /* Do not update buttons if background process is running + * This condition is important for SLA mode especially, + * when this function is called several times during calculations + * */ { if (cur_plate->can_slice()) { - // ready_to_slice = true; + //ready_to_slice = true; this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, true); process_completed_with_error = -1; - } else { - // ready_to_slice = false; + } + else { + //ready_to_slice = false; this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, false); process_completed_with_error = partplate_list.get_curr_plate_index(); } @@ -10898,7 +10828,7 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool #endif } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: exit, return_state=%2%") % __LINE__ % return_state; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: exit, return_state=%2%")%__LINE__%return_state; return return_state; } @@ -10907,33 +10837,36 @@ bool Plater::priv::restart_background_process(unsigned int state) { if (!m_worker.is_idle()) { // Avoid a race condition - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: ui jobs running, return false") % __LINE__; + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: ui jobs running, return false")%__LINE__; return false; } - if (!this->background_process.empty() && (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) == 0 && - (((state & UPDATE_BACKGROUND_PROCESS_FORCE_RESTART) != 0 && !this->background_process.finished()) || - (state & UPDATE_BACKGROUND_PROCESS_FORCE_EXPORT) != 0 || (state & UPDATE_BACKGROUND_PROCESS_RESTART) != 0)) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: print is valid, try to start it now") % __LINE__; + if ( ! this->background_process.empty() && + (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) == 0 && + ( ((state & UPDATE_BACKGROUND_PROCESS_FORCE_RESTART) != 0 && ! this->background_process.finished()) || + (state & UPDATE_BACKGROUND_PROCESS_FORCE_EXPORT) != 0 || + (state & UPDATE_BACKGROUND_PROCESS_RESTART) != 0 ) ) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: print is valid, try to start it now")%__LINE__; // The print is valid and it can be started. if (this->background_process.start()) { if (!show_warning_dialog) on_slicing_began(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: start successfully") % __LINE__; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: start successfully")%__LINE__; return true; } - } else if (this->background_process.empty()) { + } + else if (this->background_process.empty()) { PartPlate* cur_plate = background_process.get_current_plate(); if (cur_plate->is_slice_result_valid() && ((state & UPDATE_BACKGROUND_PROCESS_FORCE_RESTART) != 0)) { if (this->background_process.start()) { if (!show_warning_dialog) on_slicing_began(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: start successfully") % __LINE__; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: start successfully")%__LINE__; return true; } } } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: not started") % __LINE__; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: not started")%__LINE__; return false; } @@ -10941,7 +10874,7 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova { wxCHECK_RET(!(output_path.empty()), "export_gcode: output_path and upload_job empty"); - BOOST_LOG_TRIVIAL(trace) << boost::format("export_gcode: output_path %1%") % output_path.string(); + BOOST_LOG_TRIVIAL(trace) << boost::format("export_gcode: output_path %1%")%output_path.string(); if (model.objects.empty()) return; @@ -10959,9 +10892,9 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova return; show_warning_dialog = true; - if (!output_path.empty()) { + if (! output_path.empty()) { background_process.schedule_export(output_path.string(), output_path_on_removable_media); - notification_manager->push_delayed_notification(NotificationType::ExportOngoing, []() { return true; }, 1000, 0); + notification_manager->push_delayed_notification(NotificationType::ExportOngoing, []() {return true; }, 1000, 0); } else { BOOST_LOG_TRIVIAL(info) << "output_path is empty"; } @@ -10991,9 +10924,9 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova return; show_warning_dialog = true; - if (!output_path.empty()) { + if (! output_path.empty()) { background_process.schedule_export(output_path.string(), output_path_on_removable_media); - notification_manager->push_delayed_notification(NotificationType::ExportOngoing, []() { return true; }, 1000, 0); + notification_manager->push_delayed_notification(NotificationType::ExportOngoing, []() {return true; }, 1000, 0); } else { background_process.schedule_upload(std::move(upload_job)); } @@ -11005,9 +10938,10 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova unsigned int Plater::priv::update_restart_background_process(bool force_update_scene, bool force_update_preview) { bool switch_print = true; - // BBS: judge whether can switch print or not - if ((partplate_list.get_plate_count() > 1) && !this->background_process.can_switch_print()) { - // can not switch print currently + //BBS: judge whether can switch print or not + if ((partplate_list.get_plate_count() > 1) && !this->background_process.can_switch_print()) + { + //can not switch print currently BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": plate count %1%, can not switch") % partplate_list.get_plate_count(); switch_print = false; } @@ -11028,19 +10962,21 @@ void Plater::priv::update_fff_scene() this->preview->reload_print(); // In case this was MM print, wipe tower bounding box on 3D tab might need redrawing with exact depth: view3D->reload_scene(true); - // BBS: add assemble view related logic + //BBS: add assemble view related logic assemble_view->reload_scene(true); q->mark_plate_toolbar_image_dirty(); } -// BBS: add print project related logic +//BBS: add print project related logic void Plater::priv::update_fff_scene_only_shells(bool only_shells) { - if (this->preview != nullptr) { + if (this->preview != nullptr) + { const Print* current_print = this->background_process.fff_print(); - if (current_print) { - // this->preview->reset_shells(); + if (current_print) + { + //this->preview->reset_shells(); this->preview->load_shells(*current_print); } } @@ -11068,14 +11004,13 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const try { const bool is_step = boost::algorithm::iends_with(path, ".stp") || boost::algorithm::iends_with(path, ".step"); if (is_step) { - auto config = wxGetApp().app_config; - double linear = std::max(0.003, string_to_double_decimal_point(config->get("linear_deflection"))); - double angle = std::max(0.5, string_to_double_decimal_point(config->get("angle_deflection"))); + auto config = wxGetApp().app_config; + double linear = std::max(0.003, string_to_double_decimal_point(config->get("linear_deflection"))); + double angle = std::max(0.5, string_to_double_decimal_point(config->get("angle_deflection"))); bool split_compound = config->get_bool("is_split_compound"); bool is_user_cancel = false; - auto callback = [&is_user_cancel, linear, angle, split_compound](Slic3r::Step& file, double& linear_value, double& angle_value, - bool& is_split) -> int { + auto callback = [&is_user_cancel, linear, angle, split_compound](Slic3r::Step &file, double &linear_value, double &angle_value, bool &is_split) -> int { if (wxGetApp().app_config->get_bool("enable_step_mesh_setting")) { StepMeshDialog mesh_dlg(nullptr, file, linear, angle); if (mesh_dlg.ShowModal() == wxID_OK) { @@ -11094,10 +11029,8 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const return -1; }; - new_model = Model::read_from_step(path, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, nullptr, nullptr, callback, - linear, angle, split_compound); - if (is_user_cancel) - return false; + new_model = Model::read_from_step(path, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, nullptr, nullptr, callback, linear, angle, split_compound); + if (is_user_cancel) return false; } else { new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel); } @@ -11105,14 +11038,14 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const model_object->center_around_origin(); model_object->ensure_on_bed(); } - } catch (std::exception&) { + } + catch (std::exception&) { // error while loading return false; } if (new_model.objects.size() > 1 || new_model.objects.front()->volumes.size() > 1) { - MessageDialog dlg(q, _L("Unable to replace with more than one volume"), _L("Error during replacement"), - wxOK | wxOK_DEFAULT | wxICON_WARNING); + MessageDialog dlg(q, _L("Unable to replace with more than one volume"), _L("Error during replacement"), wxOK | wxOK_DEFAULT | wxICON_WARNING); dlg.ShowModal(); return false; } @@ -11123,7 +11056,7 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const q->take_snapshot(snapshot); ModelObject* old_model_object = model.objects[object_idx]; - ModelVolume* old_volume = old_model_object->volumes[volume_idx]; + ModelVolume* old_volume = old_model_object->volumes[volume_idx]; bool sinking = old_model_object->min_z() < SINKING_Z_THRESHOLD; @@ -11135,8 +11068,7 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const new_volume->set_type(old_volume->type()); new_volume->set_material_id(old_volume->material_id()); new_volume->set_transformation(old_volume->get_transformation()); - new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * - (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); + new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); assert(!old_volume->source.is_converted_from_inches || !old_volume->source.is_converted_from_meters); if (old_volume->source.is_converted_from_inches) new_volume->convert_from_imperial_units(); @@ -11176,7 +11108,7 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const void Plater::priv::replace_with_stl() { - if (!q->get_view3D_canvas3D()->get_gizmos_manager().check_gizmos_closed_except(GLGizmosManager::EType::Undefined)) + if (! q->get_view3D_canvas3D()->get_gizmos_manager().check_gizmos_closed_except(GLGizmosManager::EType::Undefined)) return; const Selection& selection = get_selection(); @@ -11185,8 +11117,8 @@ void Plater::priv::replace_with_stl() return; const GLVolume* v = selection.get_first_volume(); - int object_idx = v->object_idx(); - int volume_idx = v->volume_idx(); + int object_idx = v->object_idx(); + int volume_idx = v->volume_idx(); // collects paths of files to load @@ -11205,8 +11137,7 @@ void Plater::priv::replace_with_stl() fs::path out_path = dialog.GetPath().ToUTF8().data(); if (out_path.empty()) { - MessageDialog dlg(q, _L("File for the replacement wasn\'t selected"), _L("Error during replacement"), - wxOK | wxOK_DEFAULT | wxICON_WARNING); + MessageDialog dlg(q, _L("File for the replacement wasn\'t selected"), _L("Error during replacement"), wxOK | wxOK_DEFAULT | wxICON_WARNING); dlg.ShowModal(); return; } @@ -11225,7 +11156,7 @@ void Plater::priv::replace_with_stl() void Plater::priv::replace_all_with_stl() { - if (!q->get_view3D_canvas3D()->get_gizmos_manager().check_gizmos_closed_except(GLGizmosManager::EType::Undefined)) + if (! q->get_view3D_canvas3D()->get_gizmos_manager().check_gizmos_closed_except(GLGizmosManager::EType::Undefined)) return; const Selection& selection = get_selection(); @@ -11249,7 +11180,7 @@ void Plater::priv::replace_all_with_stl() Slic3r::GUI::ItemType item_type = wxGetApp().obj_list()->GetModel()->GetItemType(item); if (item_type & itPlate) { if (item.IsOk()) { - ObjectDataViewModelNode* node = static_cast(item.GetID()); + ObjectDataViewModelNode *node = static_cast(item.GetID()); selected_plate_idxs.push_back(node->GetPlateIdx()); } } @@ -11270,8 +11201,8 @@ void Plater::priv::replace_all_with_stl() for (unsigned int idx : volume_idxs) { const GLVolume* v = selection.get_volume(idx); - int object_idx = v->object_idx(); - int volume_idx = v->volume_idx(); + int object_idx = v->object_idx(); + int volume_idx = v->volume_idx(); const ModelObject* object = model.objects[object_idx]; const ModelVolume* volume = object->volumes[volume_idx]; @@ -11290,8 +11221,7 @@ void Plater::priv::replace_all_with_stl() fs::path out_path = dialog.GetPath().ToUTF8().data(); if (out_path.empty()) { - MessageDialog dlg(q, _L("Directory for the replace wasn't selected"), _L("Error during replacement"), - wxOK | wxOK_DEFAULT | wxICON_WARNING); + MessageDialog dlg(q, _L("Directory for the replace wasn't selected"), _L("Error during replacement"), wxOK | wxOK_DEFAULT | wxICON_WARNING); dlg.ShowModal(); return; } @@ -11300,8 +11230,8 @@ void Plater::priv::replace_all_with_stl() for (unsigned int idx : volume_idxs) { const GLVolume* v = selection.get_volume(idx); - int object_idx = v->object_idx(); - int volume_idx = v->volume_idx(); + int object_idx = v->object_idx(); + int volume_idx = v->volume_idx(); const ModelObject* object = model.objects[object_idx]; const ModelVolume* volume = object->volumes[volume_idx]; @@ -11351,20 +11281,19 @@ void Plater::priv::replace_all_with_stl() } #if ENABLE_RELOAD_FROM_DISK_REWORK -static std::vector> reloadable_volumes(const Model& model, const Selection& selection) +static std::vector> reloadable_volumes(const Model &model, const Selection &selection) { std::vector> ret; - const std::set& selected_volumes_idxs = selection.get_volume_idxs(); + const std::set & selected_volumes_idxs = selection.get_volume_idxs(); for (unsigned int idx : selected_volumes_idxs) { - const GLVolume& v = *selection.get_volume(idx); - const int o_idx = v.object_idx(); + const GLVolume &v = *selection.get_volume(idx); + const int o_idx = v.object_idx(); if (0 <= o_idx && o_idx < int(model.objects.size())) { - const ModelObject* obj = model.objects[o_idx]; - const int v_idx = v.volume_idx(); + const ModelObject *obj = model.objects[o_idx]; + const int v_idx = v.volume_idx(); if (0 <= v_idx && v_idx < int(obj->volumes.size())) { - const ModelVolume* vol = obj->volumes[v_idx]; - if (!vol->source.is_from_builtin_objects && !vol->source.input_file.empty() && - !fs::path(vol->source.input_file).extension().string().empty()) + const ModelVolume *vol = obj->volumes[v_idx]; + if (!vol->source.is_from_builtin_objects && !vol->source.input_file.empty() && !fs::path(vol->source.input_file).extension().string().empty()) ret.push_back({o_idx, v_idx}); } } @@ -11383,14 +11312,12 @@ void Plater::priv::reload_from_disk() if (selected_volumes.empty()) return; - std::sort(selected_volumes.begin(), selected_volumes.end(), [](const std::pair& v1, const std::pair& v2) { + std::sort(selected_volumes.begin(), selected_volumes.end(), [](const std::pair &v1, const std::pair &v2) { return (v1.first < v2.first) || (v1.first == v2.first && v1.second < v2.second); - }); - selected_volumes.erase(std::unique(selected_volumes.begin(), selected_volumes.end(), - [](const std::pair& v1, const std::pair& v2) { - return (v1.first == v2.first) && (v1.second == v2.second); - }), - selected_volumes.end()); + }); + selected_volumes.erase(std::unique(selected_volumes.begin(), selected_volumes.end(), [](const std::pair &v1, const std::pair &v2) { + return (v1.first == v2.first) && (v1.second == v2.second); + }), selected_volumes.end()); #else Plater::TakeSnapshot snapshot(q, _u8L("Reload from disk")); @@ -11406,9 +11333,8 @@ void Plater::priv::reload_from_disk() int volume_idx; // operators needed by std::algorithms - bool operator<(const SelectedVolume& other) const - { return object_idx < other.object_idx || (object_idx == other.object_idx && volume_idx < other.volume_idx); } - bool operator==(const SelectedVolume& other) const { return object_idx == other.object_idx && volume_idx == other.volume_idx; } + bool operator < (const SelectedVolume& other) const { return object_idx < other.object_idx || (object_idx == other.object_idx && volume_idx < other.volume_idx); } + bool operator == (const SelectedVolume& other) const { return object_idx == other.object_idx && volume_idx == other.volume_idx; } }; std::vector selected_volumes; @@ -11416,11 +11342,11 @@ void Plater::priv::reload_from_disk() const std::set& selected_volumes_idxs = selection.get_volume_idxs(); for (unsigned int idx : selected_volumes_idxs) { const GLVolume* v = selection.get_volume(idx); - int v_idx = v->volume_idx(); + int v_idx = v->volume_idx(); if (v_idx >= 0) { int o_idx = v->object_idx(); - if (0 <= o_idx && o_idx < (int) model.objects.size()) - selected_volumes.push_back({o_idx, v_idx}); + if (0 <= o_idx && o_idx < (int)model.objects.size()) + selected_volumes.push_back({ o_idx, v_idx }); } } std::sort(selected_volumes.begin(), selected_volumes.end()); @@ -11433,8 +11359,8 @@ void Plater::priv::reload_from_disk() #if ENABLE_RELOAD_FROM_DISK_REWORK std::vector> replace_paths; for (auto [obj_idx, vol_idx] : selected_volumes) { - const ModelObject* object = model.objects[obj_idx]; - const ModelVolume* volume = object->volumes[vol_idx]; + const ModelObject *object = model.objects[obj_idx]; + const ModelVolume *volume = object->volumes[vol_idx]; if (fs::exists(volume->source.input_file)) input_paths.push_back(volume->source.input_file); else { @@ -11480,8 +11406,8 @@ void Plater::priv::reload_from_disk() if (!found) missing_input_paths.push_back(volume->source.input_file); } - } else if (!object->input_file.empty() && volume->is_model_part() && !volume->name.empty() && - !volume->source.is_from_builtin_objects) + } + else if (!object->input_file.empty() && volume->is_model_part() && !volume->name.empty() && !volume->source.is_from_builtin_objects) missing_input_paths.push_back(volume->name); } #endif // ENABLE_RELOAD_FROM_DISK_REWORK @@ -11492,7 +11418,7 @@ void Plater::priv::reload_from_disk() while (!missing_input_paths.empty()) { // ask user to select the missing file fs::path search = missing_input_paths.back(); - wxString title = _L("Please select a file"); + wxString title = _L("Please select a file"); #if defined(__APPLE__) title += " (" + from_u8(search.filename().string()) + ")"; #endif // __APPLE__ @@ -11502,7 +11428,7 @@ void Plater::priv::reload_from_disk() return; std::string sel_filename_path = dialog.GetPath().ToUTF8().data(); - std::string sel_filename = fs::path(sel_filename_path).filename().string(); + std::string sel_filename = fs::path(sel_filename_path).filename().string(); if (boost::algorithm::iequals(search.filename().string(), sel_filename)) { input_paths.push_back(sel_filename_path); missing_input_paths.pop_back(); @@ -11517,11 +11443,13 @@ void Plater::priv::reload_from_disk() if (fs::exists(repathed_filename)) { input_paths.push_back(repathed_filename.string()); it = missing_input_paths.erase(it); - } else + } + else ++it; } - } else { - wxString message = _L("Do you want to replace it") + " ?"; + } + else { + wxString message = _L("Do you want to replace it") + " ?"; MessageDialog dlg(q, message, _L("Message"), wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION); if (dlg.ShowModal() == wxID_YES) #if ENABLE_RELOAD_FROM_DISK_REWORK @@ -11551,7 +11479,7 @@ void Plater::priv::reload_from_disk() auto obj_color_fun = [&path](ObjDialogInOut &in_out) { if (!boost::iends_with(path, ".obj")) { return; } const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); - ObjColorDialog color_dlg(nullptr, in_out, extruder_colours, Sidebar::should_show_SEMM_buttons()); + ObjColorDialog color_dlg(nullptr, in_out, extruder_colours, Sidebar::should_show_SEMM_buttons()); if (color_dlg.ShowModal() != wxID_OK) { in_out.filament_ids.clear(); } @@ -11560,68 +11488,72 @@ void Plater::priv::reload_from_disk() wxBusyInfo info(_L("Reload from:") + " " + from_u8(path), q->get_current_canvas3D()->get_wxglcanvas()); Model new_model; - try { - // BBS: add plate data related logic + try + { + //BBS: add plate data related logic PlateDataPtrs plate_data; - // BBS: project embedded settings + //BBS: project embedded settings std::vector project_presets; // BBS: backup - if (boost::iends_with(path, ".stp") || boost::iends_with(path, ".step")) { + if (boost::iends_with(path, ".stp") || + boost::iends_with(path, ".step")) { double linear = string_to_double_decimal_point(wxGetApp().app_config->get("linear_deflection")); - double angle = string_to_double_decimal_point(wxGetApp().app_config->get("angle_deflection")); - bool is_split = wxGetApp().app_config->get_bool("is_split_compound"); - new_model = Model::read_from_step(path, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, nullptr, nullptr, - nullptr, linear, angle, is_split); - } else { - new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, - &plate_data, &project_presets, nullptr, nullptr, nullptr, nullptr, nullptr, 0, - obj_color_fun); + double angle = string_to_double_decimal_point(wxGetApp().app_config->get("angle_deflection")); + bool is_split = wxGetApp().app_config->get_bool("is_split_compound"); + new_model = Model::read_from_step(path, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, nullptr, nullptr, nullptr, linear, angle, is_split); + }else { + new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, &plate_data, &project_presets, nullptr, nullptr, nullptr, nullptr, nullptr, 0, obj_color_fun); } - for (ModelObject* model_object : new_model.objects) { + + for (ModelObject* model_object : new_model.objects) + { model_object->center_around_origin(); model_object->ensure_on_bed(); } - if (plate_data.size() > 0) { - // partplate_list.load_from_3mf_structure(plate_data); + if (plate_data.size() > 0) + { + //partplate_list.load_from_3mf_structure(plate_data); partplate_list.update_slice_context_to_current_plate(background_process); this->preview->update_gcode_result(partplate_list.get_current_slice_result()); release_PlateData_list(plate_data); sidebar->obj_list()->reload_all_plates(); } - } catch (std::exception&) { + } + catch (std::exception&) + { // error while loading return; } #if ENABLE_RELOAD_FROM_DISK_REWORK for (auto [obj_idx, vol_idx] : selected_volumes) { - ModelObject* old_model_object = model.objects[obj_idx]; - ModelVolume* old_volume = old_model_object->volumes[vol_idx]; + ModelObject *old_model_object = model.objects[obj_idx]; + ModelVolume *old_volume = old_model_object->volumes[vol_idx]; bool sinking = old_model_object->min_z() < SINKING_Z_THRESHOLD; bool has_source = !old_volume->source.input_file.empty() && - boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), - fs::path(path).filename().string()); - bool has_name = !old_volume->name.empty() && boost::algorithm::iequals(old_volume->name, fs::path(path).filename().string()); + boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), fs::path(path).filename().string()); + bool has_name = !old_volume->name.empty() && boost::algorithm::iequals(old_volume->name, fs::path(path).filename().string()); if (has_source || has_name) { - int new_volume_idx = -1; - int new_object_idx = -1; - bool match_found = false; + int new_volume_idx = -1; + int new_object_idx = -1; + bool match_found = false; // take idxs from the matching volume if (has_source && old_volume->source.object_idx < int(new_model.objects.size())) { - const ModelObject* obj = new_model.objects[old_volume->source.object_idx]; + const ModelObject *obj = new_model.objects[old_volume->source.object_idx]; if (old_volume->source.volume_idx < int(obj->volumes.size())) { - const std::string& new_input_file = obj->volumes[old_volume->source.volume_idx]->source.input_file; - const std::string& old_input_file = old_volume->source.input_file; + const std::string &new_input_file = obj->volumes[old_volume->source.volume_idx]->source.input_file; + const std::string &old_input_file = old_volume->source.input_file; // Orca: match on the exact source path first, then fall back to filename-only so reload // still matches when the project stored a bare filename and the file was found next to // the project (same-folder fallback) or picked via the locate dialog (#12992). - if (new_input_file == old_input_file || boost::algorithm::iequals(fs::path(new_input_file).filename().string(), - fs::path(old_input_file).filename().string())) { + if (new_input_file == old_input_file || + boost::algorithm::iequals(fs::path(new_input_file).filename().string(), + fs::path(old_input_file).filename().string())) { new_volume_idx = old_volume->source.volume_idx; new_object_idx = old_volume->source.object_idx; match_found = true; @@ -11632,8 +11564,8 @@ void Plater::priv::reload_from_disk() if (!match_found && has_name) { // take idxs from the 1st matching volume for (size_t o = 0; o < new_model.objects.size(); ++o) { - ModelObject* obj = new_model.objects[o]; - bool found = false; + ModelObject *obj = new_model.objects[o]; + bool found = false; for (size_t v = 0; v < obj->volumes.size(); ++v) { if (obj->volumes[v]->name == old_volume->name) { new_volume_idx = (int) v; @@ -11642,8 +11574,7 @@ void Plater::priv::reload_from_disk() break; } } - if (found) - break; + if (found) break; // BBS: step model,object loaded as a volume. GUI_ObfectList.cpp load_modifier() if (obj->name == old_volume->name) { new_object_idx = (int) o; @@ -11656,24 +11587,24 @@ void Plater::priv::reload_from_disk() fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name)); continue; } - ModelObject* new_model_object = new_model.objects[new_object_idx]; + ModelObject *new_model_object = new_model.objects[new_object_idx]; if (int(new_model_object->volumes.size()) <= new_volume_idx) { fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name)); continue; } - ModelVolume* new_volume = nullptr; + ModelVolume *new_volume = nullptr; // BBS: step model if (new_volume_idx < 0 && new_object_idx >= 0) { - TriangleMesh mesh = new_model_object->mesh(); - new_volume = old_model_object->add_volume(std::move(mesh)); - new_volume->name = new_model_object->name; + TriangleMesh mesh = new_model_object->mesh(); + new_volume = old_model_object->add_volume(std::move(mesh)); + new_volume->name = new_model_object->name; new_volume->source.input_file = new_model_object->input_file; - } else { + }else { new_volume = old_model_object->add_volume(*new_model_object->volumes[new_volume_idx]); // new_volume = old_model_object->volumes.back(); } - + new_volume->set_new_unique_id(); new_volume->config.apply(old_volume->config); new_volume->set_type(old_volume->type()); @@ -11701,8 +11632,7 @@ void Plater::priv::reload_from_disk() std::swap(old_model_object->volumes[vol_idx], old_model_object->volumes.back()); old_model_object->delete_volume(old_model_object->volumes.size() - 1); - if (!sinking) - old_model_object->ensure_on_bed(); + if (!sinking) old_model_object->ensure_on_bed(); old_model_object->sort_volumes(wxGetApp().app_config->get("order_volumes") == "1"); sla::reproject_points_and_holes(old_model_object); @@ -11715,39 +11645,37 @@ void Plater::priv::reload_from_disk() // update the selected volumes whose source is the current file for (const SelectedVolume& sel_v : selected_volumes) { ModelObject* old_model_object = model.objects[sel_v.object_idx]; - ModelVolume* old_volume = old_model_object->volumes[sel_v.volume_idx]; + ModelVolume* old_volume = old_model_object->volumes[sel_v.volume_idx]; bool sinking = old_model_object->bounding_box().min.z() < SINKING_Z_THRESHOLD; - bool has_source = !old_volume->source.input_file.empty() && - boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), - fs::path(path).filename().string()); - bool has_name = !old_volume->name.empty() && boost::algorithm::iequals(old_volume->name, fs::path(path).filename().string()); + bool has_source = !old_volume->source.input_file.empty() && boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), fs::path(path).filename().string()); + bool has_name = !old_volume->name.empty() && boost::algorithm::iequals(old_volume->name, fs::path(path).filename().string()); if (has_source || has_name) { int new_volume_idx = -1; int new_object_idx = -1; - // if (has_source) { - // // take idxs from source - // new_volume_idx = old_volume->source.volume_idx; - // new_object_idx = old_volume->source.object_idx; - // } - // else { - // take idxs from the 1st matching volume - for (size_t o = 0; o < new_model.objects.size(); ++o) { - ModelObject* obj = new_model.objects[o]; - bool found = false; - for (size_t v = 0; v < obj->volumes.size(); ++v) { - if (obj->volumes[v]->name == old_volume->name) { - new_volume_idx = (int) v; - new_object_idx = (int) o; - found = true; - break; +// if (has_source) { +// // take idxs from source +// new_volume_idx = old_volume->source.volume_idx; +// new_object_idx = old_volume->source.object_idx; +// } +// else { + // take idxs from the 1st matching volume + for (size_t o = 0; o < new_model.objects.size(); ++o) { + ModelObject* obj = new_model.objects[o]; + bool found = false; + for (size_t v = 0; v < obj->volumes.size(); ++v) { + if (obj->volumes[v]->name == old_volume->name) { + new_volume_idx = (int)v; + new_object_idx = (int)o; + found = true; + break; + } } + if (found) + break; } - if (found) - break; - } - // } +// } if (new_object_idx < 0 || int(new_model.objects.size()) <= new_object_idx) { fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name)); @@ -11766,11 +11694,10 @@ void Plater::priv::reload_from_disk() new_volume->set_type(old_volume->type()); new_volume->set_material_id(old_volume->material_id()); new_volume->set_transformation(old_volume->get_transformation()); - new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * - (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); + new_volume->translate(new_volume->get_transformation().get_matrix_no_offset() * (new_volume->source.mesh_offset - old_volume->source.mesh_offset)); new_volume->source.object_idx = old_volume->source.object_idx; new_volume->source.volume_idx = old_volume->source.volume_idx; - assert(!old_volume->source.is_converted_from_inches || !old_volume->source.is_converted_from_meters); + assert(! old_volume->source.is_converted_from_inches || ! old_volume->source.is_converted_from_meters); if (old_volume->source.is_converted_from_inches) new_volume->convert_from_imperial_units(); else if (old_volume->source.is_converted_from_meters) @@ -11791,10 +11718,8 @@ void Plater::priv::reload_from_disk() for (auto [src, dest] : replace_paths) { for (auto [obj_idx, vol_idx] : selected_volumes) { if (boost::algorithm::iequals(model.objects[obj_idx]->volumes[vol_idx]->source.input_file, src.string())) - // When an error occurs, either the dest parsing error occurs, or the number of objects in the dest is greater than 1 and - // cannot be replaced, and cannot be replaced in this loop. - if (!replace_volume_with_stl(obj_idx, vol_idx, dest, "")) - break; + // When an error occurs, either the dest parsing error occurs, or the number of objects in the dest is greater than 1 and cannot be replaced, and cannot be replaced in this loop. + if (!replace_volume_with_stl(obj_idx, vol_idx, dest, "")) break; } } #else @@ -11802,10 +11727,8 @@ void Plater::priv::reload_from_disk() const auto& path = replace_paths[i].string(); for (const SelectedVolume& sel_v : selected_volumes) { ModelObject* old_model_object = model.objects[sel_v.object_idx]; - ModelVolume* old_volume = old_model_object->volumes[sel_v.volume_idx]; - bool has_source = !old_volume->source.input_file.empty() && - boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), - fs::path(path).filename().string()); + ModelVolume* old_volume = old_model_object->volumes[sel_v.volume_idx]; + bool has_source = !old_volume->source.input_file.empty() && boost::algorithm::iequals(fs::path(old_volume->source.input_file).filename().string(), fs::path(path).filename().string()); if (!replace_volume_with_stl(sel_v.object_idx, sel_v.volume_idx, path, "")) { fail_list.push_back(from_u8(has_source ? old_volume->source.input_file : old_volume->name)); } @@ -11841,7 +11764,7 @@ void Plater::priv::reload_all_from_disk() Plater::TakeSnapshot snapshot(q, _u8L("Reload all")); Plater::SuppressSnapshots suppress(q); - Selection& selection = get_selection(); + Selection& selection = get_selection(); Selection::IndicesList curr_idxs = selection.get_volume_idxs(); // reload from disk uses selection select_all(); @@ -11853,88 +11776,92 @@ void Plater::priv::reload_all_from_disk() } } -// BBS: add no_slice logic +//BBS: add no_slice logic void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) { if (std::find(panels.begin(), panels.end(), panel) == panels.end()) return; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": current_panel %1%, new_panel %2%") % current_panel % panel; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": current_panel %1%, new_panel %2%")%current_panel%panel; #ifdef __WXMAC__ bool force_render = (current_panel != nullptr); #endif // __WXMAC__ - // BBS: add slice logic when switch to preview page + //BBS: add slice logic when switch to preview page auto do_reslice = [this, no_slice]() { - // see: Plater::priv::object_list_changed() - // FIXME: it may be better to have a single function making this check and let it be called wherever needed - bool export_in_progress = this->background_process.is_export_scheduled(); - ObjectFilamentResults object_results; - bool model_fits = this->view3D->get_canvas3d()->check_volumes_outside_state(&object_results) != ModelInstancePVS_Partly_Outside; - model_fits = model_fits && object_results.filaments.empty(); - // BBS: add partplate logic - PartPlate* current_plate = this->partplate_list.get_curr_plate(); - bool only_has_gcode_need_preview = false; - bool current_has_print_instances = current_plate->has_printable_instances(); - if (current_plate->is_slice_result_valid() && this->model.objects.empty() && !current_has_print_instances) - only_has_gcode_need_preview = true; + // see: Plater::priv::object_list_changed() + // FIXME: it may be better to have a single function making this check and let it be called wherever needed + bool export_in_progress = this->background_process.is_export_scheduled(); + ObjectFilamentResults object_results; + bool model_fits = this->view3D->get_canvas3d()->check_volumes_outside_state(&object_results) != ModelInstancePVS_Partly_Outside; + model_fits = model_fits&&object_results.filaments.empty(); + //BBS: add partplate logic + PartPlate * current_plate = this->partplate_list.get_curr_plate(); + bool only_has_gcode_need_preview = false; + bool current_has_print_instances = current_plate->has_printable_instances(); + if (current_plate->is_slice_result_valid() && this->model.objects.empty() && !current_has_print_instances) + only_has_gcode_need_preview = true; - bool mixed_broken = sidebar->has_broken_mixed_filament(); + bool mixed_broken = sidebar->has_broken_mixed_filament(); - BOOST_LOG_TRIVIAL(info) - << __FUNCTION__ - << boost::format( - ": from set_current_panel, no_slice %1%, export_in_progress %2%, model_fits %3%, m_is_slicing %4%, mixed_broken %5%") % - no_slice % export_in_progress % model_fits % m_is_slicing % mixed_broken; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": from set_current_panel, no_slice %1%, export_in_progress %2%, model_fits %3%, m_is_slicing %4%, mixed_broken %5%")%no_slice%export_in_progress%model_fits%m_is_slicing%mixed_broken; - if (!no_slice && !this->model.objects.empty() && !export_in_progress && model_fits && current_has_print_instances && !mixed_broken) { - // if already running in background, not relice here - // BBS: add more judge for slicing - if (!this->background_process.running() && !this->m_is_slicing) { + if (!no_slice && !this->model.objects.empty() && !export_in_progress && model_fits && current_has_print_instances && !mixed_broken) + { + //if already running in background, not relice here + //BBS: add more judge for slicing + if (!this->background_process.running() && !this->m_is_slicing) + { + this->m_slice_all = false; + this->q->reslice(); + } + else { + //reset current plate to the slicing plate + int plate_index = this->background_process.get_current_plate()->get_index(); + this->partplate_list.select_plate(plate_index); + } + } + else if (only_has_gcode_need_preview) + { this->m_slice_all = false; this->q->reslice(); - } else { - // reset current plate to the slicing plate - int plate_index = this->background_process.get_current_plate()->get_index(); - this->partplate_list.select_plate(plate_index); } - } else if (only_has_gcode_need_preview) { - this->m_slice_all = false; - this->q->reslice(); - } - // BBS: process empty plate, reset previous toolpath - else { - // if (!this->m_slice_all) - if (!current_has_print_instances) - reset_gcode_toolpaths(); - // this->q->refresh_print(); - if (!preview->get_canvas3d()->is_initialized()) { - preview->get_canvas3d()->render(true); - } - } - // TODO: turn off this switch currently - /*auto canvas_w = float(preview->get_canvas3d()->get_canvas_size().get_width()); - auto canvas_h = float(preview->get_canvas3d()->get_canvas_size().get_height()); - Point screen_center(canvas_w/2, canvas_h/2); - auto center_point = preview->get_canvas3d()->_mouse_to_3d(screen_center); - center_point(2) = 0.f; - if (!current_plate->contains(center_point)) - this->partplate_list.select_plate_view();*/ - - // keeps current gcode preview, if any - if (this->m_slice_all) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": slicing all, just reload shells"); - this->update_fff_scene_only_shells(); - } else { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": single slice, reload print"); - if (model_fits) - this->preview->reload_print(); // TODO + //BBS: process empty plate, reset previous toolpath else - this->update_fff_scene_only_shells(); - } + { + //if (!this->m_slice_all) + if (!current_has_print_instances) + reset_gcode_toolpaths(); + //this->q->refresh_print(); + if (!preview->get_canvas3d()->is_initialized()) + { + preview->get_canvas3d()->render(true); + } + } + //TODO: turn off this switch currently + /*auto canvas_w = float(preview->get_canvas3d()->get_canvas_size().get_width()); + auto canvas_h = float(preview->get_canvas3d()->get_canvas_size().get_height()); + Point screen_center(canvas_w/2, canvas_h/2); + auto center_point = preview->get_canvas3d()->_mouse_to_3d(screen_center); + center_point(2) = 0.f; + if (!current_plate->contains(center_point)) + this->partplate_list.select_plate_view();*/ - preview->set_as_dirty(); - }; + // keeps current gcode preview, if any + if (this->m_slice_all) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": slicing all, just reload shells"); + this->update_fff_scene_only_shells(); + } + else { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": single slice, reload print"); + if (model_fits) + this->preview->reload_print(); // TODO + else + this->update_fff_scene_only_shells(); + } + + preview->set_as_dirty(); + }; // Add sidebar and toolbar collapse logic if (panel == view3D || panel == preview) { @@ -11950,7 +11877,8 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) } } - if (current_panel == panel) { + if (current_panel == panel) + { if (panel == view3D) { if (view3D->is_reload_delayed()) { // Delayed loading of the 3D scene when caller requests the already active tab. @@ -11965,8 +11893,8 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) if (notification_manager != nullptr) notification_manager->set_in_preview(false); } - // BBS: add slice logic when switch to preview page - // BBS: add only gcode mode + //BBS: add slice logic when switch to preview page + //BBS: add only gcode mode if (!q->only_gcode_mode() && (current_panel == preview) && (wxGetApp().is_editor())) { do_reslice(); } @@ -11974,17 +11902,17 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) return; } - // BBS: wish to reset all plates stats item selected state when back to View3D Tab + //BBS: wish to reset all plates stats item selected state when back to View3D Tab preview->get_canvas3d()->reset_select_plate_toolbar_selection(); wxPanel* old_panel = current_panel; - // #if BBL_HAS_FIRST_PAGE +//#if BBL_HAS_FIRST_PAGE if (!old_panel) { // Wayland may report the first canvas as not yet shown while the frame is still mapping. // Keep the panel switch anyway so handlers are bound and the first paint can initialize GL later. panel->Show(); } - // #endif +//#endif current_panel = panel; // to reduce flickering when changing view, first set as visible the new current panel @@ -12019,7 +11947,8 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) } if (current_panel == view3D || current_panel == preview) { cam.load_camera_view(view3D->get_canvas3d()->get_camera()); - } else if (current_panel == assemble_view) { + } + else if (current_panel == assemble_view) { cam.load_camera_view(assemble_view->get_canvas3d()->get_camera()); } } @@ -12030,12 +11959,12 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) else if (old_panel == assemble_view) { assemble_view->get_canvas3d()->unbind_event_handlers(); - GLCanvas3D* assemble_canvas = assemble_view->get_canvas3d(); + GLCanvas3D* assemble_canvas = assemble_view->get_canvas3d(); Selection::IndicesList select_idxs = assemble_canvas->get_selection().get_volume_idxs(); - Selection& view3d_selection = view3D->get_canvas3d()->get_selection(); + Selection& view3d_selection = view3D->get_canvas3d()->get_selection(); view3d_selection.clear(); for (unsigned int idx : select_idxs) { - auto v = assemble_canvas->get_selection().get_volume(idx); + auto v = assemble_canvas->get_selection().get_volume(idx); auto real_idx = view3d_selection.query_real_volume_idx_from_other_view(v->object_idx(), v->instance_idx(), v->volume_idx()); if (real_idx >= 0) { view3d_selection.add(real_idx, false); @@ -12060,10 +11989,11 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) // reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size view3D->get_canvas3d()->reset_old_size(); // BBS - // view_toolbar.select_item("3D"); + //view_toolbar.select_item("3D"); if (notification_manager != nullptr) notification_manager->set_in_preview(false); - } else if (current_panel == preview) { + } + else if (current_panel == preview) { q->invalid_all_plate_thumbnails(); if (old_panel == view3D) view3D->get_canvas3d()->unbind_event_handlers(); @@ -12106,27 +12036,28 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) // reset cached size to force a resize on next call to render() to keep imgui in synch with canvas size preview->get_canvas3d()->reset_old_size(); // BBS - // view_toolbar.select_item("Preview"); + //view_toolbar.select_item("Preview"); if (notification_manager != nullptr) notification_manager->set_in_preview(true); - } else if (current_panel == assemble_view) { + } + else if (current_panel == assemble_view) { if (old_panel == view3D) { view3D->get_canvas3d()->unbind_event_handlers(); - } else if (old_panel == preview) + } + else if (old_panel == preview) preview->get_canvas3d()->unbind_event_handlers(); assemble_view->get_canvas3d()->bind_event_handlers(); assemble_view->reload_scene(true); if (old_panel == view3D) { - GLCanvas3D* view3D_canvas = view3D->get_canvas3d(); + GLCanvas3D* view3D_canvas = view3D->get_canvas3d(); Selection::IndicesList select_idxs = view3D_canvas->get_selection().get_volume_idxs(); - Selection& assemble_selection = assemble_view->get_canvas3d()->get_selection(); + Selection& assemble_selection = assemble_view->get_canvas3d()->get_selection(); assemble_selection.clear(); for (unsigned int idx : select_idxs) { auto v = view3D_canvas->get_selection().get_volume(idx); - auto real_idx = assemble_selection.query_real_volume_idx_from_other_view(v->object_idx(), v->instance_idx(), - v->volume_idx()); + auto real_idx = assemble_selection.query_real_volume_idx_from_other_view(v->object_idx(), v->instance_idx(), v->volume_idx()); if (real_idx >= 0) { assemble_selection.add(real_idx, false); } @@ -12136,12 +12067,12 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) // BBS set default view and zoom if (first_enter_assemble) { wxGetApp().plater()->get_camera().requires_zoom_to_volumes = true; - first_enter_assemble = false; + first_enter_assemble = false; } assemble_view->set_as_dirty(); // BBS - // view_toolbar.select_item("Assemble"); + //view_toolbar.select_item("Assemble"); } current_panel->SetFocusFromKbd(); @@ -12150,32 +12081,33 @@ void Plater::priv::set_current_panel(wxPanel* panel, bool no_slice) } // BBS -void Plater::priv::on_combobox_select(wxCommandEvent& evt) +void Plater::priv::on_combobox_select(wxCommandEvent &evt) { PlaterPresetComboBox* preset_combo_box = dynamic_cast(evt.GetEventObject()); if (preset_combo_box) { this->on_select_preset(evt); sidebar->update_printer_thumbnail(); - } else { + } + else { this->on_select_bed_type(evt); } } -void Plater::priv::on_select_bed_type(wxCommandEvent& evt) +void Plater::priv::on_select_bed_type(wxCommandEvent &evt) { - ComboBox* combo = static_cast(evt.GetEventObject()); - auto select_bed_type = sidebar->get_cur_select_bed_type(); - std::string bed_type_name = print_config_def.get("curr_bed_type")->enum_values[(int) select_bed_type - 1]; + ComboBox* combo = static_cast(evt.GetEventObject()); + auto select_bed_type = sidebar->get_cur_select_bed_type(); + std::string bed_type_name = print_config_def.get("curr_bed_type")->enum_values[(int)select_bed_type - 1]; - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; - DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; + PresetBundle& preset_bundle = *wxGetApp().preset_bundle; + DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; if (keys_map) { BedType new_bed_type = btCount; for (auto item : *keys_map) { if (item.first == bed_type_name) { - new_bed_type = (BedType) item.second; + new_bed_type = (BedType)item.second; break; } } @@ -12193,10 +12125,10 @@ void Plater::priv::on_select_bed_type(wxCommandEvent& evt) // update app_config AppConfig* app_config = wxGetApp().app_config; app_config->set("curr_bed_type", std::to_string(int(new_bed_type))); - app_config->set_printer_setting(wxGetApp().preset_bundle->printers.get_selected_preset_name(), "curr_bed_type", - std::to_string(int(new_bed_type))); + app_config->set_printer_setting(wxGetApp().preset_bundle->printers.get_selected_preset_name(), + "curr_bed_type", std::to_string(int(new_bed_type))); - // update slice status + //update slice status auto plate_list = partplate_list.get_plate_list(); for (auto plate : plate_list) { if (plate->get_bed_type() == btDefault) { @@ -12212,7 +12144,7 @@ void Plater::priv::on_select_bed_type(wxCommandEvent& evt) } } -void Plater::priv::on_select_preset(wxCommandEvent& evt) +void Plater::priv::on_select_preset(wxCommandEvent &evt) { PlaterPresetComboBox* combo = static_cast(evt.GetEventObject()); Preset::Type preset_type = combo->get_type(); @@ -12232,11 +12164,11 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) // BBS:Save the plate parameters before switching PartPlateList& old_plate_list = this->partplate_list; - PartPlate* old_plate = old_plate_list.get_selected_plate(); - Vec3d old_plate_pos = old_plate->get_center_origin(); + PartPlate* old_plate = old_plate_list.get_selected_plate(); + Vec3d old_plate_pos = old_plate->get_center_origin(); // BBS: Save the model in the current platelist - std::vector> plate_object; + std::vector > plate_object; for (size_t i = 0; i < old_plate_list.get_plate_count(); ++i) { PartPlate* plate = old_plate_list.get_plate(i); std::vector obj_idxs; @@ -12264,8 +12196,8 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) preset_name = Preset::remove_suffix_modified(wx_stored_name.ToUTF8().data()); } else { wxString wx_name = combo->GetString(selection); - preset_name = wxGetApp().preset_bundle->get_preset_name_by_alias(preset_type, - Preset::remove_suffix_modified(wx_name.ToUTF8().data())); + preset_name = wxGetApp().preset_bundle->get_preset_name_by_alias(preset_type, + Preset::remove_suffix_modified(wx_name.ToUTF8().data())); } if (preset_type == Preset::TYPE_FILAMENT) { @@ -12278,7 +12210,7 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) sidebar->auto_calc_flushing_volumes(idx); } auto select_flag = combo->GetFlag(selection); - combo->ShowBadge(select_flag == (int) PresetComboBox::FilamentAMSType::FROM_AMS); + combo->ShowBadge(select_flag == (int)PresetComboBox::FilamentAMSType::FROM_AMS); q->on_filament_change(idx); } bool select_preset = !combo->selection_is_changed_according_to_physical_printers(); @@ -12286,10 +12218,11 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) if (preset_type == Preset::TYPE_FILAMENT && sidebar->is_multifilament()) { // Only update the plater UI for the 2nd and other filaments. combo->update(); - } else if (select_preset) { + } + else if (select_preset) { if (preset_type == Preset::TYPE_PRINTER) { PhysicalPrinterCollection& physical_printers = wxGetApp().preset_bundle->physical_printers; - if (combo->is_selected_physical_printer()) + if(combo->is_selected_physical_printer()) preset_name = physical_printers.get_selected_printer_preset_name(); else physical_printers.unselect_printer(); @@ -12301,7 +12234,7 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) dlg.ShowModal(); } preset->is_visible = true; // force visible - preset_name = preset->name; + preset_name = preset->name; } std::string old_preset_name = wxGetApp().preset_bundle->printers.get_edited_preset().name; @@ -12312,24 +12245,24 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) q->on_config_change(wxGetApp().preset_bundle->full_config()); }); + if (old_preset_name != preset_name && wxGetApp().app_config->get("auto_calculate_flush") == "all") { wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(-1); } // sync extruder info when select multi_extruder preset - if (Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager()) { - MachineObject* obj = dev->get_selected_machine(); + if (Slic3r::DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager()) { + MachineObject *obj = dev->get_selected_machine(); if (obj && obj->is_multi_extruders()) { - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - Preset& cur_preset = preset_bundle->printers.get_edited_preset(); + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + Preset& cur_preset = preset_bundle->printers.get_edited_preset(); if (cur_preset.get_printer_type(preset_bundle) == obj->get_show_printer_type()) { double preset_nozzle_diameter = cur_preset.config.option("nozzle_diameter")->values[0]; - bool same_nozzle_diameter = true; + bool same_nozzle_diameter = true; const auto& extruders = obj->GetExtderSystem()->GetExtruders(); - for (const DevExtder& extruder : extruders) { - if (!obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(extruder.GetExtId(), - float(preset_nozzle_diameter))) { + for (const DevExtder &extruder : extruders) { + if (!obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(extruder.GetExtId(), float(preset_nozzle_diameter))) { same_nozzle_diameter = false; } } @@ -12359,17 +12292,17 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) // update plater with new config q->on_config_change(wxGetApp().preset_bundle->full_config()); if (preset_type == Preset::TYPE_PRINTER) { - /* Settings list can be changed after printer preset changing, so - * update all settings items for all item had it. - * Furthermore, Layers editing is implemented only for FFF printers - * and for SLA presets they should be deleted - */ + /* Settings list can be changed after printer preset changing, so + * update all settings items for all item had it. + * Furthermore, Layers editing is implemented only for FFF printers + * and for SLA presets they should be deleted + */ wxGetApp().obj_list()->update_object_list_by_printer_technology(); // BBS:Model reset by plate center PartPlateList& cur_plate_list = this->partplate_list; - PartPlate* cur_plate = cur_plate_list.get_curr_plate(); - Vec3d cur_plate_pos = cur_plate->get_center_origin(); + PartPlate* cur_plate = cur_plate_list.get_curr_plate(); + Vec3d cur_plate_pos = cur_plate->get_center_origin(); if (old_plate_pos.x() != cur_plate_pos.x() || old_plate_pos.y() != cur_plate_pos.y()) { for (int i = 0; i < plate_object.size(); ++i) { @@ -12380,15 +12313,16 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) view3D->deselect_all(); } -#if 0 // do not toggle auto calc when change printer - // update flush matrix +#if 0 // do not toggle auto calc when change printer + // update flush matrix size_t filament_size = wxGetApp().plater()->get_extruder_colors_from_plater_config().size(); for (size_t idx = 0; idx < filament_size; ++idx) wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(idx); #endif // Show shared profiles notification for the newly selected printer - if (wxGetApp().app_config->get_bool("show_shared_profiles_notification")) { + if (wxGetApp().app_config->get_bool("show_shared_profiles_notification")) + { std::string printer_name = wxGetApp().preset_bundle->printers.get_selected_preset_base().name; std::string encoded_name = Http::url_encode(printer_name); @@ -12423,29 +12357,27 @@ void Plater::priv::on_select_preset(wxCommandEvent& evt) // update slice state and set bedtype default for 3rd-party printer auto plate_list = partplate_list.get_plate_list(); for (auto plate : plate_list) { - plate->update_slice_result_valid_state(false); + plate->update_slice_result_valid_state(false); } } -void Plater::priv::on_slicing_update(SlicingStatusEvent& evt) +void Plater::priv::on_slicing_update(SlicingStatusEvent &evt) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format(": event_type %1%, percent %2%, text %3%") % evt.GetEventType() % evt.status.percent % - evt.status.text; - // BBS: add slice project logic + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": event_type %1%, percent %2%, text %3%") % evt.GetEventType() % evt.status.percent % evt.status.text; + //BBS: add slice project logic std::string title_text = _u8L("Slicing"); - evt.status.text = title_text + evt.status.text; + evt.status.text = title_text + evt.status.text; if (evt.status.percent >= 0) { - if (!m_worker.is_idle()) { + if (!m_worker.is_idle()) { // Avoid a race condition return; } - notification_manager->set_slicing_progress_percentage(evt.status.text, (float) evt.status.percent / 100.0f); + notification_manager->set_slicing_progress_percentage(evt.status.text, (float)evt.status.percent / 100.0f); // update slicing percent PartPlateList& plate_list = wxGetApp().plater()->get_partplate_list(); - // slicing parallel, only update if percent is greater than before + //slicing parallel, only update if percent is greater than before if (evt.status.percent > plate_list.get_curr_plate()->get_slicing_percent()) plate_list.get_curr_plate()->update_slicing_percent(evt.status.percent); } @@ -12453,9 +12385,9 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent& evt) if (evt.status.flags & (PrintBase::SlicingStatus::RELOAD_SCENE | PrintBase::SlicingStatus::RELOAD_SLA_SUPPORT_POINTS)) { switch (this->printer_technology) { case ptFFF: - // BBS: add slice project logic, only display shells at the beginning + //BBS: add slice project logic, only display shells at the beginning if (!m_slice_all || (m_cur_slice_plate == (partplate_list.get_plate_count() - 1))) - // this->update_fff_scene(); + //this->update_fff_scene(); this->update_fff_scene_only_shells(); break; case ptSLA: @@ -12472,29 +12404,28 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent& evt) this->preview->reload_print(); } - if (evt.status.flags & - (PrintBase::SlicingStatus::UPDATE_PRINT_STEP_WARNINGS | PrintBase::SlicingStatus::UPDATE_PRINT_OBJECT_STEP_WARNINGS)) { + if (evt.status.flags & (PrintBase::SlicingStatus::UPDATE_PRINT_STEP_WARNINGS | PrintBase::SlicingStatus::UPDATE_PRINT_OBJECT_STEP_WARNINGS)) { // Update notification center with warnings of object_id and its warning_step. ObjectID object_id = evt.status.warning_object_id; - int warning_step = evt.status.warning_step; + int warning_step = evt.status.warning_step; PrintStateBase::StateWithWarnings state; - ModelObject const* model_object = nullptr; + ModelObject const * model_object = nullptr; - // BBS: add partplate related logic, use the print in background process + //BBS: add partplate related logic, use the print in background process if (evt.status.flags & PrintBase::SlicingStatus::UPDATE_PRINT_STEP_WARNINGS) { state = this->printer_technology == ptFFF ? - this->background_process.m_fff_print->step_state_with_warnings(static_cast(warning_step)) : - this->background_process.m_sla_print->step_state_with_warnings(static_cast(warning_step)); + this->background_process.m_fff_print->step_state_with_warnings(static_cast(warning_step)) : + this->background_process.m_sla_print->step_state_with_warnings(static_cast(warning_step)); } else if (this->printer_technology == ptFFF) { - const PrintObject* print_object = this->background_process.m_fff_print->get_object(object_id); + const PrintObject *print_object = this->background_process.m_fff_print->get_object(object_id); if (print_object) { - state = print_object->step_state_with_warnings(static_cast(warning_step)); + state = print_object->step_state_with_warnings(static_cast(warning_step)); model_object = print_object->model_object(); } } else { - const SLAPrintObject* print_object = this->background_process.m_sla_print->get_object(object_id); + const SLAPrintObject *print_object = this->background_process.m_sla_print->get_object(object_id); if (print_object) { - state = print_object->step_state_with_warnings(static_cast(warning_step)); + state = print_object->step_state_with_warnings(static_cast(warning_step)); model_object = print_object->model_object(); } } @@ -12502,12 +12433,10 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent& evt) for (auto const& warning : state.warnings) { if (warning.current) { NotificationManager::NotificationLevel notif_level = NotificationManager::NotificationLevel::WarningNotificationLevel; - if (evt.status.message_type == PrintStateBase::SlicingNotificationType::SlicingReplaceInitEmptyLayers || - evt.status.message_type == PrintStateBase::SlicingNotificationType::SlicingEmptyGcodeLayers) { + if (evt.status.message_type == PrintStateBase::SlicingNotificationType::SlicingReplaceInitEmptyLayers || evt.status.message_type == PrintStateBase::SlicingNotificationType::SlicingEmptyGcodeLayers) { notif_level = NotificationManager::NotificationLevel::SeriousWarningNotificationLevel; } - notification_manager->push_slicing_warning_notification(warning.message, false, model_object, object_id, warning_step, - warning.message_id, notif_level); + notification_manager->push_slicing_warning_notification(warning.message, false, model_object, object_id, warning_step, warning.message_id, notif_level); add_warning(warning, object_id.id); } } @@ -12515,13 +12444,12 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent& evt) BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format("exit."); } -void Plater::priv::on_slicing_completed(wxCommandEvent& evt) +void Plater::priv::on_slicing_completed(wxCommandEvent & evt) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": event_type %1%, string %2%") % evt.GetEventType() % evt.GetString(); - // BBS: add slice project logic + //BBS: add slice project logic if (m_slice_all && (m_cur_slice_plate < (partplate_list.get_plate_count() - 1))) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ - << boost::format("slicing all, finished plate %1%, will continue next.") % m_cur_slice_plate; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format("slicing all, finished plate %1%, will continue next.")%m_cur_slice_plate; return; } @@ -12529,10 +12457,11 @@ void Plater::priv::on_slicing_completed(wxCommandEvent& evt) delayed_scene_refresh = true; else { if (this->printer_technology == ptFFF) { - // BBS: only reload shells + //BBS: only reload shells this->update_fff_scene_only_shells(false); - // this->update_fff_scene(); - } else + //this->update_fff_scene(); + } + else this->update_sla_scene(); } BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format("exit."); @@ -12562,8 +12491,8 @@ void Plater::priv::on_slicing_began() clear_warnings(); notification_manager->close_notification_of_type(NotificationType::SignDetected); notification_manager->close_notification_of_type(NotificationType::ExportFinished); - bool is_first_plate = m_cur_slice_plate == 0; - bool slice_all = q->m_only_gcode ? m_slice_all_only_has_gcode : m_slice_all; + bool is_first_plate = m_cur_slice_plate == 0; + bool slice_all = q->m_only_gcode ? m_slice_all_only_has_gcode : m_slice_all; bool need_change_dailytips = !(slice_all && !is_first_plate); notification_manager->set_slicing_progress_began(); notification_manager->update_slicing_notif_dailytips(need_change_dailytips); @@ -12572,7 +12501,8 @@ void Plater::priv::add_warning(const Slic3r::PrintStateBase::Warning& warning, s { for (auto& it : current_warnings) { if (warning.message_id == it.first.message_id) { - if (warning.message_id != 0 || (warning.message_id == 0 && warning.message == it.first.message)) { + if (warning.message_id != 0 || (warning.message_id == 0 && warning.message == it.first.message)) + { if (warning.message_id != 0) it.first.message = warning.message; return; @@ -12581,7 +12511,7 @@ void Plater::priv::add_warning(const Slic3r::PrintStateBase::Warning& warning, s } current_warnings.emplace_back(std::pair(warning, oid)); } -void Plater::priv::actualize_slicing_warnings(const PrintBase& print) +void Plater::priv::actualize_slicing_warnings(const PrintBase &print) { std::vector ids = print.print_object_ids(); if (ids.empty()) { @@ -12596,7 +12526,8 @@ void Plater::priv::actualize_slicing_warnings(const PrintBase& print) void Plater::priv::actualize_object_warnings(const PrintBase& print) { std::vector ids; - for (const ModelObject* object : print.model().objects) { + for (const ModelObject* object : print.model().objects ) + { ids.push_back(object->id()); } std::sort(ids.begin(), ids.end()); @@ -12620,29 +12551,31 @@ bool Plater::priv::warnings_dialog() else text += it.first.message; } - // text += "\n\nDo you still wish to export?"; + //text += "\n\nDo you still wish to export?"; MessageDialog msg_window(this->q, from_u8(text), _L("warnings"), wxOK); - const auto res = msg_window.ShowModal(); + const auto res = msg_window.ShowModal(); return res == wxID_OK; + } -// BBS: add project slice logic -void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) +//BBS: add project slice logic +void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, m_ignore_event %1%, status %2%") % m_ignore_event % evt.status(); - // BBS:ignore cancel event for some special case - if (m_ignore_event) { + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, m_ignore_event %1%, status %2%")%m_ignore_event %evt.status(); + //BBS:ignore cancel event for some special case + if (m_ignore_event) + { m_ignore_event = false; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": ignore this event %1%") % evt.status(); return; } - // BBS: add project slice logic + //BBS: add project slice logic bool is_finished = !m_slice_all || (m_cur_slice_plate == (partplate_list.get_plate_count() - 1)); - // BBS: slice .gcode.3mf file related logic, assign is_finished again + //BBS: slice .gcode.3mf file related logic, assign is_finished again bool only_has_gcode_need_preview = false; - auto plate_list = this->partplate_list.get_plate_list(); - bool has_print_instances = false; + auto plate_list = this->partplate_list.get_plate_list(); + bool has_print_instances = false; for (auto plate : plate_list) has_print_instances = has_print_instances || plate->has_printable_instances(); if (this->model.objects.empty() && !has_print_instances) @@ -12675,26 +12608,25 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) notification_manager->set_slicing_progress_hidden(); } } else { - std::vector ptrs; - for (auto oid : message.second) { - const PrintObject* print_object = this->background_process.m_fff_print->get_object(ObjectID(oid)); - if (print_object) { - ptrs.push_back(print_object->model_object()); - } + std::vector ptrs; + for (auto oid : message.second) + { + const PrintObject *print_object = this->background_process.m_fff_print->get_object(ObjectID(oid)); + if (print_object) { ptrs.push_back(print_object->model_object()); } } notification_manager->push_slicing_error_notification(message.first, ptrs); } - if (evt.invalidate_plater()) { + if (evt.invalidate_plater()) + { // BBS #if 0 const wxString invalid_str = _L("Invalid data"); for (auto btn : { ActionButtonType::abReslice, ActionButtonType::abSendGCode, ActionButtonType::abExport }) sidebar->set_btn_label(btn, invalid_str); #endif - process_completed_with_error = partplate_list.get_curr_plate_index(); - ; + process_completed_with_error = partplate_list.get_curr_plate_index();; } - has_error = true; + has_error = true; is_finished = true; } if (evt.cancelled()) { @@ -12703,11 +12635,11 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) is_finished = true; } - // BBS: set the current plater's slice result to valid + //BBS: set the current plater's slice result to valid if (!this->background_process.empty()) this->background_process.get_current_plate()->update_slice_result_valid_state(evt.success()); - // BBS: update the action button according to the current plate's status + //BBS: update the action button according to the current plate's status bool ready_to_slice = !this->partplate_list.get_curr_plate()->is_slice_result_valid(); // BBS @@ -12718,8 +12650,8 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) // This updates the "Slice now", "Export G-code", "Arrange" buttons status. // Namely, it refreshes the "Out of print bed" property of all the ModelObjects, and it enables // the "Slice now" and "Export G-code" buttons based on their "out of bed" status. - // BBS: remove this update here, will be updated in update_fff_scene later - // this->object_list_changed(); + //BBS: remove this update here, will be updated in update_fff_scene later + //this->object_list_changed(); // refresh preview if (view3D->is_dragging()) // updating scene now would interfere with the gizmo dragging @@ -12728,27 +12660,28 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) if (this->printer_technology == ptFFF) { if (is_finished) this->update_fff_scene(); - } else + } + else this->update_sla_scene(); } - // BBS: add slice&&print status update logic + //BBS: add slice&&print status update logic if (evt.cancelled()) { /*if (wxGetApp().get_mode() == comSimple) sidebar->set_btn_label(ActionButtonType::abReslice, "Slice now"); show_action_buttons(true);*/ ready_to_slice = true; - // this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, true, true); + //this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, true, true); - // BBS + //BBS if (m_is_publishing) { m_publish_dlg->cancel(); } } else { - if ((ready_to_slice) || (wxGetApp().get_mode() == comSimple)) { - // this means the current plate is not the slicing plate - // show_action_buttons(ready_to_slice); - // this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, ready_to_slice, true); + if((ready_to_slice) || (wxGetApp().get_mode() == comSimple)) { + //this means the current plate is not the slicing plate + //show_action_buttons(ready_to_slice); + //this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, ready_to_slice, true); } if (exporting_status != ExportingStatus::NOT_EXPORTING && !has_error) { notification_manager->stop_delayed_notifications_of_type(NotificationType::ExportOngoing); @@ -12756,14 +12689,14 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) } // If writing to removable drive was scheduled, show notification with eject button if (exporting_status == ExportingStatus::EXPORTING_TO_REMOVABLE && !has_error) { - // show_action_buttons(ready_to_slice); + //show_action_buttons(ready_to_slice); this->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, ready_to_slice, true); - notification_manager - ->push_exporting_finished_notification(last_output_path, last_output_dir_path, - // Don't offer the "Eject" button on ChromeOS, the Linux side has no control over it. - platform_flavor() != PlatformFlavor::LinuxOnChromium); + notification_manager->push_exporting_finished_notification(last_output_path, last_output_dir_path, + // Don't offer the "Eject" button on ChromeOS, the Linux side has no control over it. + platform_flavor() != PlatformFlavor::LinuxOnChromium); wxGetApp().removable_drive_manager()->set_exporting_finished(true); - } else if (exporting_status == ExportingStatus::EXPORTING_TO_LOCAL && !has_error) + }else + if (exporting_status == ExportingStatus::EXPORTING_TO_LOCAL && !has_error) notification_manager->push_exporting_finished_notification(last_output_path, last_output_dir_path, false); // BBS, Generate calibration thumbnail for current plate @@ -12773,19 +12706,20 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) preview->reload_print(); ThumbnailData* calibration_data = &partplate_list.get_curr_plate()->cali_thumbnail_data; const ThumbnailsParams calibration_params = { {}, false, true, true, true, partplate_list.get_curr_plate_index() }; - generate_calibration_thumbnail(*calibration_data, PartPlate::cali_thumbnail_width, PartPlate::cali_thumbnail_height, - calibration_params); preview->get_canvas3d()->reset_gcode_toolpaths();*/ + generate_calibration_thumbnail(*calibration_data, PartPlate::cali_thumbnail_width, PartPlate::cali_thumbnail_height, calibration_params); + preview->get_canvas3d()->reset_gcode_toolpaths();*/ // generate bbox data PlateBBoxData* plate_bbox_data = &partplate_list.get_curr_plate()->cali_bboxes_data; - *plate_bbox_data = generate_first_layer_bbox(); + *plate_bbox_data = generate_first_layer_bbox(); } } exporting_status = ExportingStatus::NOT_EXPORTING; + // BBS stop publishing if error occur - // if (m_is_publishing) { + //if (m_is_publishing) { // GCodeProcessorResult *gcode_result = background_process.get_current_gcode_result(); // m_publish_dlg->UpdateStatus(_L("Error occurred during slicing"), -1, false); // // if toolpath is outside @@ -12794,7 +12728,9 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) // } //} - if (is_finished) { + + if (is_finished) + { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(":finished, reload print soon"); m_is_slicing = false; this->preview->reload_print(false); @@ -12810,9 +12746,10 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) } } q->SetDropTarget(new PlaterDropTarget(*main_frame, *q)); - } else { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(":slicing all, plate %1% finished, start next slice...") % m_cur_slice_plate; + } + else + { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(":slicing all, plate %1% finished, start next slice...")%m_cur_slice_plate; m_cur_slice_plate++; q->Freeze(); @@ -12820,11 +12757,10 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) partplate_list.select_plate_view(); int ret = q->start_next_slice(); if (ret) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(":slicing all, plate %1% can not be sliced, will stop") % m_cur_slice_plate; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(":slicing all, plate %1% can not be sliced, will stop")%m_cur_slice_plate; m_is_slicing = false; } - // not the last plate + //not the last plate update_fff_scene_only_shells(); q->Thaw(); if (m_is_publishing) { @@ -12846,13 +12782,13 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent& evt) void Plater::priv::on_action_add(SimpleEvent&) { if (q != nullptr) { - // q->add_model(); - // BBS open file in toolbar add + //q->add_model(); + //BBS open file in toolbar add q->add_file(); } } -// BBS: add plate from toolbar +//BBS: add plate from toolbar void Plater::priv::on_action_add_plate(SimpleEvent&) { if (q != nullptr) { @@ -12863,22 +12799,22 @@ void Plater::priv::on_action_add_plate(SimpleEvent&) update(); // BBS set default view - // q->get_camera().select_view("topfront"); + //q->get_camera().select_view("topfront"); q->get_camera().requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; } } -// BBS: remove plate from toolbar +//BBS: remove plate from toolbar void Plater::priv::on_action_del_plate(SimpleEvent&) { if (q != nullptr) { q->delete_plate(); - // q->get_camera().select_view("topfront"); - // q->get_camera().requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; + //q->get_camera().select_view("topfront"); + //q->get_camera().requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; } } -// BBS: GUI refactor: GLToolbar +//BBS: GUI refactor: GLToolbar void Plater::priv::on_action_open_project(SimpleEvent&) { if (q != nullptr) { @@ -12886,16 +12822,16 @@ void Plater::priv::on_action_open_project(SimpleEvent&) } } -// BBS: GUI refactor: slice plate +//BBS: GUI refactor: slice plate void Plater::priv::on_action_slice_plate(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice plate event\n"; - // BBS update extruder params and speed table before slicing + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice plate event\n" ; + //BBS update extruder params and speed table before slicing const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); - auto& print = q->get_partplate_list().get_current_fff_print(); - auto print_config = print.config(); - int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); Model::setExtruderParams(config, numExtruders); Model::setPrintSpeedTable(config, print_config); @@ -12905,33 +12841,33 @@ void Plater::priv::on_action_slice_plate(SimpleEvent&) } } -// BBS: GUI refactor: slice all +//BBS: GUI refactor: slice all void Plater::priv::on_action_slice_all(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice project event\n"; - // BBS update extruder params and speed table before slicing + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received slice project event\n" ; + //BBS update extruder params and speed table before slicing const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->full_config(); - auto& print = q->get_partplate_list().get_current_fff_print(); - auto print_config = print.config(); - int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); + auto& print = q->get_partplate_list().get_current_fff_print(); + auto print_config = print.config(); + int numExtruders = wxGetApp().preset_bundle->filament_presets.size(); Model::setExtruderParams(config, numExtruders); Model::setPrintSpeedTable(config, print_config); - m_slice_all = true; + m_slice_all = true; m_slice_all_only_has_gcode = true; - m_cur_slice_plate = 0; - // select plate + m_cur_slice_plate = 0; + //select plate q->select_plate(m_cur_slice_plate); q->reslice(); if (!m_is_publishing) q->select_view_3D("Preview"); - // BBS: wish to select all plates stats item + //BBS: wish to select all plates stats item preview->get_canvas3d()->_update_select_plate_toolbar_stats_item(true); } } -void Plater::priv::on_action_publish(wxCommandEvent& event) +void Plater::priv::on_action_publish(wxCommandEvent &event) { if (q != nullptr) { if (event.GetInt() == EVT_PUBLISHING_START) { @@ -12961,7 +12897,7 @@ void Plater::priv::on_action_publish(wxCommandEvent& event) void Plater::priv::on_action_print_plate(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received print plate event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received print plate event\n" ; } PresetBundle& preset_bundle = *wxGetApp().preset_bundle; @@ -12996,7 +12932,7 @@ void Plater::priv::on_action_print_plate_from_sdcard(SimpleEvent&) BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received print plate event\n"; } - // BBS + //BBS open_machine_select_dialog(0, PrintFromType::FROM_SDCARD_VIEW); } @@ -13015,11 +12951,12 @@ void Plater::priv::on_tab_selection_changing(wxBookCtrlEvent& e) return; } const wxString new_name = main_frame->m_tabpanel->GetPageName(new_sel); - sidebar_layout.show = new_name == TAB_ID_PREPARE || new_name == TAB_ID_PREVIEW; + sidebar_layout.show = new_name == TAB_ID_PREPARE || new_name == TAB_ID_PREVIEW; update_sidebar(); - int old_sel = e.GetOldSelection(); - const bool use_printer_agents = wxGetApp().app_config->get_bool("use_printer_agents"); - const bool use_native_device_tab = wxGetApp().preset_bundle && (wxGetApp().preset_bundle->use_bbl_device_tab() || use_printer_agents); + int old_sel = e.GetOldSelection(); + const bool use_printer_agents = wxGetApp().app_config->get_bool("use_printer_agents"); + const bool use_native_device_tab = wxGetApp().preset_bundle && + (wxGetApp().preset_bundle->use_bbl_device_tab() || use_printer_agents); if (use_native_device_tab && new_name == TAB_ID_MONITOR) { // BBL network module is only required for BBL-vendor printers. // Non-BBL Python plugins (e.g. moonraker) drive the Device tab without it. @@ -13036,12 +12973,12 @@ void Plater::priv::on_tab_selection_changing(wxBookCtrlEvent& e) // while the native Device tab holds TAB_ID_MONITOR, and in legacy-web mode it holds // TAB_ID_MONITOR itself. const bool selecting_web_device_tab = main_frame->m_printer_view && - main_frame->m_tabpanel->GetPage(new_sel) == main_frame->m_printer_view; + main_frame->m_tabpanel->GetPage(new_sel) == main_frame->m_printer_view; if (selecting_web_device_tab) { // Use the selected discovered machine when the preset has no host. main_frame->load_printer_url(); } else if (new_name == TAB_ID_MONITOR && wxGetApp().preset_bundle != nullptr) { - auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config; wxString url = from_u8(PrintHost::get_print_host_webui(&cfg)); if (main_frame->m_printer_view && url.empty()) { // It's missing_connection page, reload so that we can replay the gif image @@ -13051,34 +12988,30 @@ void Plater::priv::on_tab_selection_changing(wxBookCtrlEvent& e) } } -int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, - Slic3r::Model model, - Slic3r::PlateDataPtrs plate_data_list, - std::string file_name, - std::string file_path) +int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path) { - if (!m_select_machine_dlg) - m_select_machine_dlg = new SelectMachineDialog(q); + if (!m_select_machine_dlg) m_select_machine_dlg = new SelectMachineDialog(q); return m_select_machine_dlg->update_print_required_data(config, model, plate_data_list, file_name, file_path); } void Plater::priv::on_action_send_to_printer(bool isall) { - if (!m_send_to_sdcard_dlg) - m_send_to_sdcard_dlg = new SendToPrinterDialog(q); + if (!m_send_to_sdcard_dlg) m_send_to_sdcard_dlg = new SendToPrinterDialog(q); if (isall) { m_send_to_sdcard_dlg->prepare(PLATE_ALL_IDX); - } else { + } + else { m_send_to_sdcard_dlg->prepare(partplate_list.get_curr_plate_index()); } - m_send_to_sdcard_dlg->ShowModal(); + m_send_to_sdcard_dlg->ShowModal(); } -void Plater::priv::on_action_select_sliced_plate(wxCommandEvent& evt) + +void Plater::priv::on_action_select_sliced_plate(wxCommandEvent &evt) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received select sliced plate event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received select sliced plate event\n" ; } bool skip_zoom = evt.GetExtraLong() == 1; q->select_sliced_plate(evt.GetInt(), skip_zoom); @@ -13087,7 +13020,7 @@ void Plater::priv::on_action_select_sliced_plate(wxCommandEvent& evt) void Plater::priv::on_action_print_all(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received print all event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received print all event\n" ; } PresetBundle& preset_bundle = *wxGetApp().preset_bundle; @@ -13101,7 +13034,7 @@ void Plater::priv::on_action_print_all(SimpleEvent&) void Plater::priv::on_action_export_gcode(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export gcode event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export gcode event\n" ; q->export_gcode(false); } } @@ -13109,7 +13042,7 @@ void Plater::priv::on_action_export_gcode(SimpleEvent&) void Plater::priv::on_action_send_gcode(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export gcode event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export gcode event\n" ; q->send_gcode_legacy(); } } @@ -13117,12 +13050,12 @@ void Plater::priv::on_action_send_gcode(SimpleEvent&) void Plater::priv::on_action_export_sliced_file(SimpleEvent&) { if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export sliced file event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export sliced file event\n" ; q->export_gcode_3mf(); } } -void Plater::priv::on_action_export_all_sliced_file(SimpleEvent&) +void Plater::priv::on_action_export_all_sliced_file(SimpleEvent &) { if (q != nullptr) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export all sliced file event\n"; @@ -13132,10 +13065,10 @@ void Plater::priv::on_action_export_all_sliced_file(SimpleEvent&) void Plater::priv::on_action_export_to_sdcard(SimpleEvent&) { - if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export sliced file event\n"; - q->send_to_printer(); - } + if (q != nullptr) { + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received export sliced file event\n"; + q->send_to_printer(); + } } void Plater::priv::on_action_export_to_sdcard_all(SimpleEvent&) @@ -13146,16 +13079,16 @@ void Plater::priv::on_action_export_to_sdcard_all(SimpleEvent&) } } -// BBS: add plate select logic +//BBS: add plate select logic void Plater::priv::on_plate_selected(SimpleEvent&) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received plate selected event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received plate selected event\n" ; sidebar->obj_list()->on_plate_selected(partplate_list.get_curr_plate_index()); } void Plater::priv::on_action_request_model_id(wxCommandEvent& evt) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received import model id event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received import model id event\n" ; if (q != nullptr) { q->import_model_id(evt.GetString()); } @@ -13163,23 +13096,29 @@ void Plater::priv::on_action_request_model_id(wxCommandEvent& evt) void Plater::priv::on_action_download_project(wxCommandEvent& evt) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received download project event\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":received download project event\n" ; if (q != nullptr) { q->download_project(evt.GetString()); } } -// BBS: add slice button status update logic +//BBS: add slice button status update logic void Plater::priv::on_slice_button_status(bool enable) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": enable = " << enable << "\n"; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": enable = "<update_slice_print_status(MainFrame::eEventObjectUpdate, enable); } -void Plater::priv::on_action_split_objects(SimpleEvent&) { split_object(); } +void Plater::priv::on_action_split_objects(SimpleEvent&) +{ + split_object(); +} -void Plater::priv::on_action_split_volumes(SimpleEvent&) { split_volume(); } +void Plater::priv::on_action_split_volumes(SimpleEvent&) +{ + split_volume(); +} void Plater::priv::on_object_select(SimpleEvent& evt) { @@ -13190,13 +13129,16 @@ void Plater::priv::on_object_select(SimpleEvent& evt) selection_changed(); } -// BBS: repair model through cgal -void Plater::priv::on_repair_model(wxCommandEvent& event) { wxGetApp().obj_list()->fix_through_cgal(); } - -void Plater::priv::on_filament_color_changed(wxCommandEvent& event) +//BBS: repair model through cgal +void Plater::priv::on_repair_model(wxCommandEvent &event) { - // q->update_all_plate_thumbnails(true); - // q->get_preview_canvas3D()->update_plate_thumbnails(); + wxGetApp().obj_list()->fix_through_cgal(); +} + +void Plater::priv::on_filament_color_changed(wxCommandEvent &event) +{ + //q->update_all_plate_thumbnails(true); + //q->get_preview_canvas3D()->update_plate_thumbnails(); int modify_id = event.GetInt(); auto& ams_multi_color_filment = wxGetApp().preset_bundle->ams_multi_color_filment; @@ -13211,17 +13153,17 @@ void Plater::priv::on_filament_color_changed(wxCommandEvent& event) sidebar->update_mixed_filament_list(); } -void Plater::priv::install_network_plugin(wxCommandEvent& event) +void Plater::priv::install_network_plugin(wxCommandEvent &event) { wxGetApp().ShowDownNetPluginDlg(); return; } -void Plater::priv::update_plugin_when_launch(wxCommandEvent& event) +void Plater::priv::update_plugin_when_launch(wxCommandEvent &event) { std::string data_dir_str = data_dir(); boost::filesystem::path data_dir_path(data_dir_str); - auto cache_folder = data_dir_path / "ota"; + auto cache_folder = data_dir_path / "ota"; std::string changelog_file = cache_folder.string() + "/plugins/network_plugins.json"; UpdatePluginDialog dlg(wxGetApp().mainframe); @@ -13229,8 +13171,7 @@ void Plater::priv::update_plugin_when_launch(wxCommandEvent& event) auto result = dlg.ShowModal(); auto app_config = wxGetApp().app_config; - if (!app_config) - return; + if (!app_config) return; if (result == wxID_OK) { // Apply the downloaded update right away and hot-reload the plug-in, the same @@ -13241,36 +13182,32 @@ void Plater::priv::update_plugin_when_launch(wxCommandEvent& event) notification_manager->close_notification_of_type(NotificationType::BBLPluginUpdateAvailable); app_config->set("update_network_plugin", "false"); if (wxGetApp().hot_reload_network_plugin()) { - MessageDialog dlg_ok(wxGetApp().mainframe, _L("Network plug-in switched successfully."), _L("Success"), - wxOK | wxICON_INFORMATION); + MessageDialog dlg_ok(wxGetApp().mainframe, _L("Network plug-in switched successfully."), _L("Success"), wxOK | wxICON_INFORMATION); dlg_ok.ShowModal(); } else { - MessageDialog dlg_fail(wxGetApp().mainframe, _L("Failed to load network plug-in. Please restart the application."), - _L("Restart Required"), wxOK | wxICON_WARNING); + MessageDialog dlg_fail(wxGetApp().mainframe, _L("Failed to load network plug-in. Please restart the application."), _L("Restart Required"), wxOK | wxICON_WARNING); dlg_fail.ShowModal(); } } else { app_config->set("update_network_plugin", had_cache ? "true" : "false"); } - } else if (result == wxID_NO) { + } + else if (result == wxID_NO) { app_config->set("update_network_plugin", "false"); } } -void Plater::priv::show_install_plugin_hint(wxCommandEvent& event) +void Plater::priv::show_install_plugin_hint(wxCommandEvent &event) { - notification_manager->bbl_show_plugin_install_notification( - into_u8(_L("The network plug-in was not detected. Network related features are unavailable."))); + notification_manager->bbl_show_plugin_install_notification(into_u8(_L("The network plug-in was not detected. Network related features are unavailable."))); } -void Plater::priv::show_preview_only_hint(wxCommandEvent& event) +void Plater::priv::show_preview_only_hint(wxCommandEvent &event) { - notification_manager->bbl_show_preview_only_notification( - into_u8(_L("Preview only mode:\nThe loaded file contains G-code only, cannot enter the Prepare page."))); + notification_manager->bbl_show_preview_only_notification(into_u8(_L("Preview only mode:\nThe loaded file contains G-code only, cannot enter the Prepare page."))); } -void Plater::priv::on_apple_change_color_mode(wxSysColourChangedEvent& evt) -{ +void Plater::priv::on_apple_change_color_mode(wxSysColourChangedEvent& evt) { m_is_dark = wxSystemSettings::GetAppearance().IsDark(); if (view3D->get_canvas3d() && view3D->get_canvas3d()->is_initialized()) { view3D->get_canvas3d()->on_change_color_mode(m_is_dark); @@ -13281,25 +13218,22 @@ void Plater::priv::on_apple_change_color_mode(wxSysColourChangedEvent& evt) apply_color_mode(); } -void Plater::priv::on_change_color_mode(SimpleEvent& evt) -{ +void Plater::priv::on_change_color_mode(SimpleEvent& evt) { m_is_dark = wxGetApp().app_config->get("dark_color_mode") == "1"; sidebar->on_change_color_mode(m_is_dark); view3D->get_canvas3d()->on_change_color_mode(m_is_dark); preview->get_canvas3d()->on_change_color_mode(m_is_dark); assemble_view->get_canvas3d()->on_change_color_mode(m_is_dark); - if (m_send_to_sdcard_dlg) - m_send_to_sdcard_dlg->on_change_color_mode(); + if (m_send_to_sdcard_dlg) m_send_to_sdcard_dlg->on_change_color_mode(); apply_color_mode(); } void Plater::priv::apply_color_mode() { - const bool is_dark = wxGetApp().dark_mode(); - wxColour orca_color = wxColour(59, 68, - 70); // wxColour(ColorRGBA::ORCA().r_uchar(), ColorRGBA::ORCA().g_uchar(), ColorRGBA::ORCA().b_uchar()); - orca_color = is_dark ? StateColor::darkModeColorFor(orca_color) : StateColor::lightModeColorFor(orca_color); + const bool is_dark = wxGetApp().dark_mode(); + wxColour orca_color = wxColour(59, 68, 70);//wxColour(ColorRGBA::ORCA().r_uchar(), ColorRGBA::ORCA().g_uchar(), ColorRGBA::ORCA().b_uchar()); + orca_color = is_dark ? StateColor::darkModeColorFor(orca_color) : StateColor::lightModeColorFor(orca_color); wxColour sash_color = is_dark ? wxColour(38, 46, 48) : wxColour(206, 206, 206); m_aui_mgr.GetArtProvider()->SetColour(wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR, sash_color); m_aui_mgr.GetArtProvider()->SetColour(wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR, *wxWHITE); @@ -13307,8 +13241,7 @@ void Plater::priv::apply_color_mode() m_aui_mgr.GetArtProvider()->SetColour(wxAUI_DOCKART_BORDER_COLOUR, is_dark ? *wxBLACK : wxColour(165, 165, 165)); } -static void get_position(wxWindowBase* child, wxWindowBase* until_parent, int& x, int& y) -{ +static void get_position(wxWindowBase* child, wxWindowBase* until_parent, int& x, int& y) { int res_x = 0, res_y = 0; while (child != until_parent && child != nullptr) { @@ -13324,7 +13257,7 @@ static void get_position(wxWindowBase* child, wxWindowBase* until_parent, int& x y = res_y; } -void Plater::priv::show_right_click_menu(Vec2d mouse_position, wxMenu* menu) +void Plater::priv::show_right_click_menu(Vec2d mouse_position, wxMenu *menu) { // BBS: GUI refactor: move sidebar to the left int x, y; @@ -13335,7 +13268,7 @@ void Plater::priv::show_right_click_menu(Vec2d mouse_position, wxMenu* menu) // specified (even though the position is sane). position = wxDefaultPosition; #endif - GLCanvas3D& canvas = *q->canvas3D(); + GLCanvas3D &canvas = *q->canvas3D(); canvas.apply_retina_scale(mouse_position); canvas.set_popup_menu_position(mouse_position); q->PopupMenu(menu, position); @@ -13348,19 +13281,22 @@ void Plater::priv::on_right_click(RBtnEvent& evt) wxMenu* menu = nullptr; - if (obj_idx == -1) { // no one or several object are selected - if (evt.data.second) { // right button was clicked on empty space + if (obj_idx == -1) { // no one or several object are selected + if (evt.data.second) { // right button was clicked on empty space if (!get_selection().is_empty()) // several objects are selected in 3DScene return; menu = menus.default_menu(); - } else { + } + else { if (current_panel == assemble_view) { menu = menus.assemble_multi_selection_menu(); - } else { + } + else { menu = menus.multi_selection_menu(); } } - } else { + } + else { // If in 3DScene is(are) selected volume(s), but right button was clicked on empty space if (evt.data.second) return; @@ -13374,24 +13310,24 @@ void Plater::priv::on_right_click(RBtnEvent& evt) else { const Selection& selection = get_selection(); // show "Object menu" for each one or several FullInstance instead of FullObject - const bool is_some_full_instances = selection.is_single_full_instance() || selection.is_single_full_object() || + const bool is_some_full_instances = selection.is_single_full_instance() || + selection.is_single_full_object() || selection.is_multiple_full_instance(); - const bool is_part = selection.is_single_volume() || selection.is_single_modifier(); + const bool is_part = selection.is_single_volume() || selection.is_single_modifier(); - // BBS get assemble view menu + //BBS get assemble view menu if (current_panel == assemble_view) { - menu = is_some_full_instances ? menus.assemble_object_menu() : - is_part ? menus.assemble_part_menu() : - menus.assemble_multi_selection_menu(); + menu = is_some_full_instances ? menus.assemble_object_menu() : + is_part ? menus.assemble_part_menu() : menus.assemble_multi_selection_menu(); } else { if (is_some_full_instances) menu = printer_technology == ptSLA ? menus.sla_object_menu() : menus.object_menu(); else if (is_part) { - const GLVolume* gl_volume = selection.get_first_volume(); - const ModelVolume* model_volume = get_model_volume(*gl_volume, selection.get_model()->objects); - menu = (model_volume != nullptr && model_volume->is_text()) ? menus.text_part_menu() : - (model_volume != nullptr && model_volume->is_svg()) ? menus.svg_part_menu() : - menus.part_menu(); + const GLVolume* gl_volume = selection.get_first_volume(); + const ModelVolume *model_volume = get_model_volume(*gl_volume, selection.get_model()->objects); + menu = (model_volume != nullptr && model_volume->is_text()) ? menus.text_part_menu() : + (model_volume != nullptr && model_volume->is_svg()) ? menus.svg_part_menu() : + menus.part_menu(); } else menu = menus.multi_selection_menu(); } @@ -13403,10 +13339,10 @@ void Plater::priv::on_right_click(RBtnEvent& evt) } } -// BBS: add part plate related logic +//BBS: add part plate related logic void Plater::priv::on_plate_right_click(RBtnPlateEvent& evt) { - wxMenu* menu = menus.plate_menu(); + wxMenu *menu = menus.plate_menu(); show_right_click_menu(evt.data.first, menu); } @@ -13415,7 +13351,10 @@ void Plater::priv::on_update_geometry(Vec3dsEvent<2>&) // TODO } -void Plater::priv::on_3dcanvas_mouse_dragging_started(SimpleEvent&) { view3D->get_canvas3d()->reset_sequential_print_clearance(); } +void Plater::priv::on_3dcanvas_mouse_dragging_started(SimpleEvent&) +{ + view3D->get_canvas3d()->reset_sequential_print_clearance(); +} // Update the scene from the background processing, // if the update message was received during mouse manipulation. @@ -13426,21 +13365,23 @@ void Plater::priv::on_3dcanvas_mouse_dragging_finished(SimpleEvent&) update_sla_scene(); } - // partplate_list.reload_all_objects(); + //partplate_list.reload_all_objects(); } -// BBS: add plate id for thumbnail generate param -void Plater::priv::generate_thumbnail(ThumbnailData& data, - unsigned int w, - unsigned int h, - const ThumbnailsParams& thumbnail_params, - Camera::EType camera_type, - Camera::ViewAngleType camera_view_angle_type, - bool for_picking, - bool ban_light) -{ view3D->get_canvas3d()->render_thumbnail(data, w, h, thumbnail_params, camera_type, camera_view_angle_type, for_picking, ban_light); } +//BBS: add plate id for thumbnail generate param +void Plater::priv::generate_thumbnail(ThumbnailData & data, + unsigned int w, + unsigned int h, + const ThumbnailsParams &thumbnail_params, + Camera::EType camera_type, + Camera::ViewAngleType camera_view_angle_type, + bool for_picking, + bool ban_light) +{ + view3D->get_canvas3d()->render_thumbnail(data, w, h, thumbnail_params, camera_type, camera_view_angle_type, for_picking, ban_light); +} -// BBS: add plate id for thumbnail generate param +//BBS: add plate id for thumbnail generate param ThumbnailsList Plater::priv::generate_thumbnails(const ThumbnailsParams& params, Camera::EType camera_type) { ThumbnailsList thumbnails; @@ -13459,48 +13400,49 @@ PlateBBoxData Plater::priv::generate_first_layer_bbox() PlateBBoxData bboxdata; std::vector& id_bboxes = bboxdata.bbox_objs; BoundingBoxf bbox_all; - auto print = this->background_process.m_fff_print; - auto curr_plate = this->partplate_list.get_curr_plate(); - auto curr_plate_seq = curr_plate->get_real_print_seq(); - bboxdata.is_seq_print = (curr_plate_seq == PrintSequence::ByObject); - bboxdata.first_extruder = print->get_tool_ordering().first_extruder(); - bboxdata.bed_type = bed_type_to_gcode_string(print->config().curr_bed_type.value); + auto print = this->background_process.m_fff_print; + auto curr_plate = this->partplate_list.get_curr_plate(); + auto curr_plate_seq = curr_plate->get_real_print_seq(); + bboxdata.is_seq_print = (curr_plate_seq == PrintSequence::ByObject); + bboxdata.first_extruder = print->get_tool_ordering().first_extruder(); + bboxdata.bed_type = bed_type_to_gcode_string(print->config().curr_bed_type.value); bboxdata.first_layer_time = partplate_list.get_curr_plate()->get_slice_result()->initial_layer_time; // get nozzle diameter auto opt_nozzle_diameters = print->config().option("nozzle_diameter"); if (opt_nozzle_diameters != nullptr) bboxdata.nozzle_diameter = float(opt_nozzle_diameters->get_at(bboxdata.first_extruder)); - // PrintObjectPtrs objects; - // if (this->printer_technology == ptFFF) { - // objects = this->background_process.m_fff_print->objects().vector(); - // } - // else { - // objects = this->background_process.m_sla_print->objects(); - // } + //PrintObjectPtrs objects; + //if (this->printer_technology == ptFFF) { + // objects = this->background_process.m_fff_print->objects().vector(); + //} + //else { + // objects = this->background_process.m_sla_print->objects(); + //} auto objects = print->objects(); - auto orig = this->partplate_list.get_curr_plate()->get_origin(); - Vec2d orig2d = {orig[0], orig[1]}; + auto orig = this->partplate_list.get_curr_plate()->get_origin(); + Vec2d orig2d = { orig[0], orig[1] }; BBoxData data; - for (auto obj : objects) { + for (auto obj : objects) + { auto bb_scaled = obj->get_first_layer_bbox(data.area, data.layer_height, data.name); - auto bb = unscaled(bb_scaled); + auto bb = unscaled(bb_scaled); bb.min -= orig2d; bb.max -= orig2d; bbox_all.merge(bb); data.area *= (SCALING_FACTOR * SCALING_FACTOR); // unscale area - data.id = obj->id().id; - data.bbox = {bb.min.x(), bb.min.y(), bb.max.x(), bb.max.y()}; + data.id = obj->id().id; + data.bbox = { bb.min.x(),bb.min.y(),bb.max.x(),bb.max.y() }; id_bboxes.emplace_back(data); } // add wipe tower bounding box if (print->has_wipe_tower()) { - auto wt_corners = print->first_layer_wipe_tower_corners(); + auto wt_corners = print->first_layer_wipe_tower_corners(); // when loading gcode.3mf, wipe tower info may not be correct if (!wt_corners.empty()) { BoundingBox bb_scaled = {wt_corners[0], wt_corners[2]}; - auto bb = unscaled(bb_scaled); + auto bb = unscaled(bb_scaled); bb.min -= orig2d; bb.max -= orig2d; bbox_all.merge(bb); @@ -13511,7 +13453,7 @@ PlateBBoxData Plater::priv::generate_first_layer_bbox() } } - bboxdata.bbox_all = {bbox_all.min.x(), bbox_all.min.y(), bbox_all.max.x(), bbox_all.max.y()}; + bboxdata.bbox_all = { bbox_all.min.x(),bbox_all.min.y(),bbox_all.max.x(),bbox_all.max.y() }; return bboxdata; } @@ -13540,8 +13482,7 @@ wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool auto full_filename = m_project_folder / std::string((m_project_name + extension).mb_str(wxConvUTF8)); return from_path(full_filename); } else { - auto full_filename = m_project_folder / - std::string((m_project_name + from_u8(plate_index_str) + extension).mb_str(wxConvUTF8)); + auto full_filename = m_project_folder / std::string((m_project_name + from_u8(plate_index_str) + extension).mb_str(wxConvUTF8)); return from_path(full_filename); } } else { @@ -13552,26 +13493,30 @@ wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool } } else { if (only_filename) { - if (!model.objects.empty() && m_project_name == _L("Untitled")) + if(!model.objects.empty() && m_project_name == _L("Untitled")) return wxString(fs::path(model.objects.front()->name).replace_extension().c_str()) + from_u8(plate_index_str) + extension; if (export_all) return m_project_name + extension; else return m_project_name + from_u8(plate_index_str) + extension; - } else + } + else return ""; } } -wxString Plater::priv::get_project_name() { return m_project_name; } +wxString Plater::priv::get_project_name() +{ + return m_project_name; +} -// BBS +//BBS void Plater::priv::set_project_name(const wxString& project_name) { BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " project is:" << project_name; m_project_name = project_name; - // update topbar title + //update topbar title #ifdef __APPLE__ wxGetApp().mainframe->SetTitle(m_project_name); if (!m_project_name.IsEmpty()) @@ -13599,30 +13544,30 @@ void Plater::priv::update_title_dirty_status() #else wxGetApp().mainframe->SetTitle(title + " - OrcaSlicer"); wxGetApp().mainframe->topbar()->SetTitle(title); -#endif +#endif } void Plater::priv::set_project_filename(const wxString& filename) { boost::filesystem::path full_path = into_path(filename); - boost::filesystem::path ext = full_path.extension(); - // if (boost::iequals(ext.string(), ".amf")) { - // // Remove the first extension. - // full_path.replace_extension(""); - // // It may be ".zip.amf". - // if (boost::iequals(full_path.extension().string(), ".zip")) - // // Remove the 2nd extension. - // full_path.replace_extension(""); - // } else { - // // Remove just one extension. - // full_path.replace_extension(""); - // } + boost::filesystem::path ext = full_path.extension(); + //if (boost::iequals(ext.string(), ".amf")) { + // // Remove the first extension. + // full_path.replace_extension(""); + // // It may be ".zip.amf". + // if (boost::iequals(full_path.extension().string(), ".zip")) + // // Remove the 2nd extension. + // full_path.replace_extension(""); + //} else { + // // Remove just one extension. + // full_path.replace_extension(""); + //} full_path.replace_extension(""); m_project_folder = full_path.parent_path(); BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " project folder is:" << m_project_folder.string(); - // BBS + //BBS wxString project_name = from_u8(full_path.filename().string()); set_project_name(project_name); // record filename for hint when open exported file/.gcode @@ -13654,14 +13599,14 @@ void Plater::priv::init_notification_manager() notification_manager->init_progress_indicator(); } -void Plater::priv::update_objects_position_when_select_preset(const std::function& select_prest) +void Plater::priv::update_objects_position_when_select_preset(const std::function &select_prest) { select_prest(); wxGetApp().obj_list()->update_object_list_by_printer_technology(); // Re-clamp wipe tower positions to new bed boundaries after preset change - PartPlateList& cur_plate_list = this->partplate_list; + PartPlateList &cur_plate_list = this->partplate_list; for (size_t plate_id = 0; plate_id < cur_plate_list.get_plate_list().size(); ++plate_id) { cur_plate_list.set_default_wipe_tower_pos_for_plate(plate_id); } @@ -13671,23 +13616,29 @@ void Plater::priv::update_objects_position_when_select_preset(const std::functio void Plater::orient() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle()) { p->take_snapshot(_u8L("Orient")); replace_job(w, std::make_unique()); } } -// BBS: add job state related functions -void Plater::set_prepare_state(int state) { p->m_job_prepare_state = state; } +//BBS: add job state related functions +void Plater::set_prepare_state(int state) +{ + p->m_job_prepare_state = state; +} -int Plater::get_prepare_state() { return p->m_job_prepare_state; } +int Plater::get_prepare_state() +{ + return p->m_job_prepare_state; +} void Plater::get_print_job_data(PrintPrepareData* data) { if (data) { - data->plate_idx = p->m_print_job_data.plate_idx; - data->_3mf_path = p->m_print_job_data._3mf_path; + data->plate_idx = p->m_print_job_data.plate_idx; + data->_3mf_path = p->m_print_job_data._3mf_path; data->_3mf_config_path = p->m_print_job_data._3mf_config_path; } } @@ -13696,18 +13647,32 @@ void Plater::set_print_job_plate_idx(int plate_idx) { if (plate_idx == PLATE_CURRENT_IDX) { p->m_print_job_data.plate_idx = get_partplate_list().get_curr_plate_index(); - } else { + } + else { p->m_print_job_data.plate_idx = plate_idx; } } -int Plater::get_send_calibration_finished_event() { return EVT_SEND_CALIBRATION_FINISHED; } -int Plater::get_print_finished_event() { return EVT_PRINT_FINISHED; } +int Plater::get_send_calibration_finished_event() +{ + return EVT_SEND_CALIBRATION_FINISHED; +} -int Plater::get_send_finished_event() { return EVT_SEND_FINISHED; } +int Plater::get_print_finished_event() +{ + return EVT_PRINT_FINISHED; +} -int Plater::get_publish_finished_event() { return EVT_PUBLISH_FINISHED; } +int Plater::get_send_finished_event() +{ + return EVT_SEND_FINISHED; +} + +int Plater::get_publish_finished_event() +{ + return EVT_PUBLISH_FINISHED; +} void Plater::priv::set_current_canvas_as_dirty() { @@ -13727,10 +13692,10 @@ GLCanvas3D* Plater::priv::get_current_canvas3D(bool exclude_preview) return preview->get_canvas3d(); else if (current_panel == assemble_view) return assemble_view->get_canvas3d(); - else // BBS default set to view3D + else //BBS default set to view3D return view3D->get_canvas3d(); - // return (current_panel == view3D) ? view3D->get_canvas3d() : ((current_panel == preview) ? preview->get_canvas3d() : nullptr); + //return (current_panel == view3D) ? view3D->get_canvas3d() : ((current_panel == preview) ? preview->get_canvas3d() : nullptr); } void Plater::priv::unbind_canvas_event_handlers() @@ -13756,7 +13721,7 @@ void Plater::priv::reset_canvas_volumes() bool Plater::priv::check_ams_status_impl(bool is_slice_all) { - Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + Slic3r::DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return true; @@ -13766,9 +13731,9 @@ bool Plater::priv::check_ams_status_impl(bool is_slice_all) if (q->is_gcode_3mf() || q->only_gcode_mode() || q->get_partplate_list().get_curr_plate()->get_objects().empty()) { return true; } - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; if (preset_bundle && preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == obj->get_show_printer_type()) { - bool is_same_as_printer = true; + bool is_same_as_printer = true; auto nozzle_volumes_values = preset_bundle->project_config.option("nozzle_volume_type")->values; assert(obj->GetExtderSystem()->GetTotalExtderCount() == 2 && nozzle_volumes_values.size() == 2); if (obj->GetExtderSystem()->GetTotalExtderCount() == 2 && nozzle_volumes_values.size() == 2) { @@ -13778,14 +13743,13 @@ bool Plater::priv::check_ams_status_impl(bool is_slice_all) // After device sync, extruder_nozzle_stats matches printer → dialog suppressed. // Reference to BBS: BambuStudio/src/slic3r/GUI/Plater.cpp is_extruder_stat_synced() using namespace MultiNozzleUtils; - auto nozzle_diameter_values = - preset_bundle->printers.get_edited_preset().config.option("nozzle_diameter")->values; + auto nozzle_diameter_values = preset_bundle->printers.get_edited_preset().config.option("nozzle_diameter")->values; // Build preset nozzle groups from extruder_nozzle_stats config std::vector> preset_nozzle_infos(nozzle_diameter_values.size()); for (size_t extruder_id = 0; extruder_id < nozzle_diameter_values.size(); ++extruder_id) { NozzleVolumeType preset_volume_type = NozzleVolumeType(nozzle_volumes_values[extruder_id]); - std::string preset_diameter = format_diameter_to_str(nozzle_diameter_values[extruder_id]); + std::string preset_diameter = format_diameter_to_str(nozzle_diameter_values[extruder_id]); if (preset_volume_type == nvtHybrid) { // Hybrid: expand into separate groups for each nozzle type from stats @@ -13808,9 +13772,9 @@ bool Plater::priv::check_ams_status_impl(bool is_slice_all) for (const auto& preset_group : preset_groups) { if (preset_group.nozzle_count == 0) { // Never synced: if printer has nozzles of this type → needs sync - if (std::find_if(printer_groups.begin(), printer_groups.end(), [&preset_group](const NozzleGroupInfo& elem) { - return preset_group.is_same_type(elem); - }) != printer_groups.end()) { + if (std::find_if(printer_groups.begin(), printer_groups.end(), + [&preset_group](const NozzleGroupInfo& elem) { return preset_group.is_same_type(elem); }) + != printer_groups.end()) { is_same_as_printer = false; break; } @@ -13852,22 +13816,21 @@ bool Plater::priv::check_ams_status_impl(bool is_slice_all) } if (!preset_bundle->extruder_ams_counts.empty() && !preset_bundle->extruder_ams_counts.front().empty()) { - is_same_as_printer &= preset_bundle->extruder_ams_counts[0][4] == left_4 && - preset_bundle->extruder_ams_counts[0][1] == left_1 && - preset_bundle->extruder_ams_counts[1][4] == right_4 && - preset_bundle->extruder_ams_counts[1][1] == right_1; + is_same_as_printer &= preset_bundle->extruder_ams_counts[0][4] == left_4 + && preset_bundle->extruder_ams_counts[0][1] == left_1 + && preset_bundle->extruder_ams_counts[1][4] == right_4 + && preset_bundle->extruder_ams_counts[1][1] == right_1; } if (!is_same_as_printer) { struct SyncInfoDialog : MessageDialog { - SyncInfoDialog(wxWindow* parent) + SyncInfoDialog(wxWindow *parent) : MessageDialog(parent, _L("The nozzle type and AMS quantity information has not been synced from the connected printer.\n" "After syncing, software can optimize printing time and filament usage when slicing.\n" "Would you like to sync now?"), - _L("Warning"), - 0) + _L("Warning"), 0) { add_button(wxID_YES, true, _L("Sync now")); add_button(wxID_NO, true, _L("Later")); @@ -13892,7 +13855,7 @@ bool Plater::priv::check_ams_status_impl(bool is_slice_all) bool Plater::priv::get_machine_sync_status() { - Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + Slic3r::DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return false; @@ -13900,7 +13863,7 @@ bool Plater::priv::get_machine_sync_status() if (!obj) return false; - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; return preset_bundle && preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == obj->get_show_printer_type(); } @@ -13915,10 +13878,10 @@ bool Plater::priv::init_collapse_toolbar() BackgroundTexture::Metadata background_data; background_data.filename = m_is_dark ? "toolbar_background_dark.png" : "toolbar_background.png"; - background_data.left = 16; - background_data.top = 16; - background_data.right = 16; - background_data.bottom = 16; + background_data.left = 16; + background_data.top = 16; + background_data.right = 16; + background_data.bottom = 16; if (!collapse_toolbar.init(background_data)) return false; @@ -13936,9 +13899,11 @@ bool Plater::priv::init_collapse_toolbar() item.name = "collapse_sidebar"; // set collapse svg name - item.icon_filename = "collapse.svg"; - item.sprite_id = 0; - item.left.action_callback = []() { wxGetApp().plater()->collapse_sidebar(!wxGetApp().plater()->is_sidebar_collapsed()); }; + item.icon_filename = "collapse.svg"; + item.sprite_id = 0; + item.left.action_callback = []() { + wxGetApp().plater()->collapse_sidebar(!wxGetApp().plater()->is_sidebar_collapsed()); + }; if (!collapse_toolbar.add_item(item)) return false; @@ -13949,7 +13914,10 @@ bool Plater::priv::init_collapse_toolbar() return true; } -void Plater::priv::update_preview_bottom_toolbar() { ; } +void Plater::priv::update_preview_bottom_toolbar() +{ + ; +} #if 0 void Plater::update_partplate() @@ -13958,25 +13926,32 @@ void Plater::update_partplate() } #endif -void Plater::priv::reset_gcode_toolpaths() { preview->get_canvas3d()->reset_gcode_toolpaths(); } +void Plater::priv::reset_gcode_toolpaths() +{ + preview->get_canvas3d()->reset_gcode_toolpaths(); +} bool Plater::priv::can_set_instance_to_object() const { const int obj_idx = get_selected_object_idx(); - return 0 <= obj_idx && obj_idx < (int) model.objects.size() && model.objects[obj_idx]->instances.size() > 1; + return 0 <= obj_idx && obj_idx < (int)model.objects.size() && model.objects[obj_idx]->instances.size() > 1; } -bool Plater::priv::can_split(bool to_objects) const { return sidebar->obj_list()->is_splittable(to_objects); } +bool Plater::priv::can_split(bool to_objects) const +{ + return sidebar->obj_list()->is_splittable(to_objects); +} bool Plater::priv::can_fillcolor() const { - // BBS TODO + //BBS TODO return true; } bool Plater::priv::has_assemble_view() const { - for (auto object : model.objects) { + for (auto object: model.objects) + { for (auto instance : object->instances) if (instance->is_assemble_initialized()) return true; @@ -13997,19 +13972,29 @@ bool Plater::priv::has_assemble_view() const bool Plater::priv::can_scale_to_print_volume() const { const BuildVolume_Type type = this->bed.build_volume().type(); - return !sidebar->obj_list()->has_selected_cut_object() && !view3D->get_canvas3d()->get_selection().is_empty() && - (type == BuildVolume_Type::Rectangle || type == BuildVolume_Type::Circle); + return !sidebar->obj_list()->has_selected_cut_object() + && !view3D->get_canvas3d()->get_selection().is_empty() + && (type == BuildVolume_Type::Rectangle || type == BuildVolume_Type::Circle); } #endif // ENABLE_ENHANCED_PRINT_VOLUME_FIT bool Plater::priv::can_mirror() const -{ return !sidebar->obj_list()->has_selected_cut_object() && get_selection().is_from_single_instance(); } +{ + return !sidebar->obj_list()->has_selected_cut_object() + && get_selection().is_from_single_instance(); +} bool Plater::priv::can_replace_with_stl() const -{ return !sidebar->obj_list()->has_selected_cut_object() && get_selection().get_volume_idxs().size() == 1; } +{ + return !sidebar->obj_list()->has_selected_cut_object() + && get_selection().get_volume_idxs().size() == 1; +} bool Plater::priv::can_replace_all_with_stl() const -{ return !sidebar->obj_list()->has_selected_cut_object() && get_selection().get_volume_idxs().size() != 1; } +{ + return !sidebar->obj_list()->has_selected_cut_object() + && get_selection().get_volume_idxs().size() != 1; +} bool Plater::priv::can_reload_from_disk() const { @@ -14030,9 +14015,8 @@ bool Plater::priv::can_reload_from_disk() const int volume_idx; // operators needed by std::algorithms - bool operator<(const SelectedVolume& other) const - { return (object_idx < other.object_idx) || ((object_idx == other.object_idx) && (volume_idx < other.volume_idx)); } - bool operator==(const SelectedVolume& other) const { return (object_idx == other.object_idx) && (volume_idx == other.volume_idx); } + bool operator < (const SelectedVolume& other) const { return (object_idx < other.object_idx) || ((object_idx == other.object_idx) && (volume_idx < other.volume_idx)); } + bool operator == (const SelectedVolume& other) const { return (object_idx == other.object_idx) && (volume_idx == other.volume_idx); } }; std::vector selected_volumes; @@ -14042,24 +14026,22 @@ bool Plater::priv::can_reload_from_disk() const const std::set& selected_volumes_idxs = selection.get_volume_idxs(); for (unsigned int idx : selected_volumes_idxs) { const GLVolume* v = selection.get_volume(idx); - int v_idx = v->volume_idx(); + int v_idx = v->volume_idx(); if (v_idx >= 0) { int o_idx = v->object_idx(); - if (0 <= o_idx && o_idx < (int) model.objects.size()) - selected_volumes.push_back({o_idx, v_idx}); + if (0 <= o_idx && o_idx < (int)model.objects.size()) + selected_volumes.push_back({ o_idx, v_idx }); } } #endif // ENABLE_RELOAD_FROM_DISK_REWORK #if ENABLE_RELOAD_FROM_DISK_REWORK - std::sort(selected_volumes.begin(), selected_volumes.end(), [](const std::pair& v1, const std::pair& v2) { + std::sort(selected_volumes.begin(), selected_volumes.end(), [](const std::pair &v1, const std::pair &v2) { return (v1.first < v2.first) || (v1.first == v2.first && v1.second < v2.second); - }); - selected_volumes.erase(std::unique(selected_volumes.begin(), selected_volumes.end(), - [](const std::pair& v1, const std::pair& v2) { - return (v1.first == v2.first) && (v1.second == v2.second); - }), - selected_volumes.end()); + }); + selected_volumes.erase(std::unique(selected_volumes.begin(), selected_volumes.end(), [](const std::pair &v1, const std::pair &v2) { + return (v1.first == v2.first) && (v1.second == v2.second); + }), selected_volumes.end()); // collects paths of files to load std::vector paths; @@ -14087,7 +14069,7 @@ bool Plater::priv::can_reload_from_disk() const return !paths.empty(); } -void Plater::priv::update_publish_dialog_status(wxString& msg, int percent) +void Plater::priv::update_publish_dialog_status(wxString &msg, int percent) { if (m_publish_dlg) m_publish_dlg->UpdateStatus(msg, percent); @@ -14095,45 +14077,42 @@ void Plater::priv::update_publish_dialog_status(wxString& msg, int percent) bool Plater::priv::show_publish_dlg(bool show) { - if (q != nullptr) { - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":recevied publish event\n"; - } + if (q != nullptr) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ":recevied publish event\n"; } - if (!m_publish_dlg) - m_publish_dlg = new PublishDialog(q); + if (!m_publish_dlg) m_publish_dlg = new PublishDialog(q); if (show) { m_publish_dlg->reset(); m_publish_dlg->start_slicing(); - // m_publish_dlg->Show(); + //m_publish_dlg->Show(); m_publish_dlg->ShowModal(); } else { m_publish_dlg->EndModal(wxID_OK); - // cancel the slicing + //cancel the slicing if (this->background_process.running()) this->background_process.stop(); } return true; } -// BBS: add bed exclude area -void Plater::priv::set_bed_shape(const Pointfs& shape, - const Pointfs& exclude_areas, - const Pointfs& wrapping_exclude_areas, - const double printable_height, +//BBS: add bed exclude area +void Plater::priv::set_bed_shape(const Pointfs &shape, + const Pointfs &exclude_areas, + const Pointfs &wrapping_exclude_areas, + const double printable_height, std::vector extruder_areas, - std::vector extruder_heights, - const std::string& custom_texture, - const std::string& custom_model, - bool force_as_custom) + std::vector extruder_heights, + const std::string &custom_texture, + const std::string &custom_model, + bool force_as_custom) { - // Orca: reduce resolution for large bed printer + //Orca: reduce resolution for large bed printer BoundingBoxf bed_size = get_extents(shape); if (bed_size.size().maxCoeff() <= LARGE_BED_THRESHOLD) SCALING_FACTOR = SCALING_FACTOR_INTERNAL; else SCALING_FACTOR = SCALING_FACTOR_INTERNAL_LARGE_PRINTER; - // BBS: add shape position + //BBS: add shape position Vec2d shape_position = partplate_list.get_current_shape_position(); bool new_shape = bed.set_shape(shape, printable_height, extruder_areas, extruder_heights, custom_model, force_as_custom, shape_position); @@ -14142,28 +14121,25 @@ void Plater::priv::set_bed_shape(const Pointfs& shape, double height_to_lid = config->opt_float("extruder_clearance_height_to_lid"); double height_to_rod = config->opt_float("extruder_clearance_height_to_rod"); - Pointfs prev_exclude_areas = partplate_list.get_exclude_area(); + Pointfs prev_exclude_areas = partplate_list.get_exclude_area(); Pointfs prev_wrapping_exclude_areas = partplate_list.get_wrapping_exclude_area(); - new_shape |= (height_to_lid != prev_height_lid) || (height_to_rod != prev_height_rod) || (prev_exclude_areas != exclude_areas) || - (prev_wrapping_exclude_areas != wrapping_exclude_areas); + new_shape |= (height_to_lid != prev_height_lid) || (height_to_rod != prev_height_rod) || (prev_exclude_areas != exclude_areas) + || (prev_wrapping_exclude_areas != wrapping_exclude_areas); if (!new_shape && partplate_list.get_logo_texture_filename() != custom_texture) { partplate_list.update_logo_texture_filename(custom_texture); } if (new_shape) { - if (view3D) - view3D->bed_shape_changed(); - if (preview) - preview->bed_shape_changed(); + if (view3D) view3D->bed_shape_changed(); + if (preview) preview->bed_shape_changed(); - // BBS: update part plate's size - // BBS: to be checked + //BBS: update part plate's size + // BBS: to be checked Vec3d max = bed.printable_bounding_box().max; Vec3d min = bed.printable_bounding_box().min; - double z = config->opt_float("printable_height"); + double z = config->opt_float("printable_height"); partplate_list.reset_size(max.x() - min.x() - Bed3D::Axes::DefaultTipRadius, max.y() - min.y() - Bed3D::Axes::DefaultTipRadius, z); - partplate_list.set_shapes(shape, exclude_areas, wrapping_exclude_areas, extruder_areas, extruder_heights, custom_texture, - height_to_lid, height_to_rod); + partplate_list.set_shapes(shape, exclude_areas, wrapping_exclude_areas, extruder_areas, extruder_heights, custom_texture, height_to_lid, height_to_rod); Vec2d new_shape_position = partplate_list.get_current_shape_position(); if (shape_position != new_shape_position) @@ -14171,13 +14147,25 @@ void Plater::priv::set_bed_shape(const Pointfs& shape, } } -bool Plater::priv::can_delete() const { return !get_selection().is_empty() && !get_selection().is_wipe_tower(); } +bool Plater::priv::can_delete() const +{ + return !get_selection().is_empty() && !get_selection().is_wipe_tower(); +} -bool Plater::priv::can_delete_all() const { return !model.objects.empty(); } +bool Plater::priv::can_delete_all() const +{ + return !model.objects.empty(); +} -bool Plater::priv::can_add_plate() const { return q->get_partplate_list().get_plate_count() < PartPlateList::MAX_PLATES_COUNT; } +bool Plater::priv::can_add_plate() const +{ + return q->get_partplate_list().get_plate_count() < PartPlateList::MAX_PLATES_COUNT; +} -bool Plater::priv::can_delete_plate() const { return q->get_partplate_list().get_plate_count() > 1; } +bool Plater::priv::can_delete_plate() const +{ + return q->get_partplate_list().get_plate_count() > 1; +} bool Plater::priv::can_fix_through_cgal() const { @@ -14186,8 +14174,8 @@ bool Plater::priv::can_fix_through_cgal() const #if FIX_THROUGH_CGAL_ALWAYS // Fixing always. - return !obj_idxs.empty() || !vol_idxs.empty(); -#else // FIX_THROUGH_CGAL_ALWAYS + return ! obj_idxs.empty() || ! vol_idxs.empty(); +#else // FIX_THROUGH_CGAL_ALWAYS // Fixing only if the model is not manifold. if (vol_idxs.empty()) { for (auto obj_idx : obj_idxs) @@ -14207,10 +14195,10 @@ bool Plater::priv::can_fix_through_cgal() const bool Plater::priv::can_simplify() const { // is object for simplification selected - if (get_selected_object_idx() < 0) - return false; + if (get_selected_object_idx() < 0) return false; // is already opened? - if (q->get_view3D_canvas3D()->get_gizmos_manager().get_current_type() == GLGizmosManager::EType::Simplify) + if (q->get_view3D_canvas3D()->get_gizmos_manager().get_current_type() == + GLGizmosManager::EType::Simplify) return false; return true; } @@ -14235,30 +14223,41 @@ bool Plater::priv::can_smooth_mesh() const bool Plater::priv::can_increase_instances() const { - if (!m_worker.is_idle() || q->get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode()) - return false; + if (!m_worker.is_idle() + || q->get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode()) + return false; int obj_idx = get_selected_object_idx(); - return (0 <= obj_idx) && (obj_idx < (int) model.objects.size()) && !sidebar->obj_list()->has_selected_cut_object() && - std::all_of(model.objects[obj_idx]->instances.begin(), model.objects[obj_idx]->instances.end(), - [](auto& inst) { return inst->printable; }); + return (0 <= obj_idx) && (obj_idx < (int)model.objects.size()) + && !sidebar->obj_list()->has_selected_cut_object() + && std::all_of(model.objects[obj_idx]->instances.begin(), model.objects[obj_idx]->instances.end(), [](auto& inst) {return inst->printable; }); } bool Plater::priv::can_decrease_instances() const { - if (!m_worker.is_idle() || q->get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode()) - return false; + if (!m_worker.is_idle() + || q->get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode()) + return false; int obj_idx = get_selected_object_idx(); - return (0 <= obj_idx) && (obj_idx < (int) model.objects.size()) && (model.objects[obj_idx]->instances.size() > 1) && - !sidebar->obj_list()->has_selected_cut_object(); + return (0 <= obj_idx) && (obj_idx < (int)model.objects.size()) && (model.objects[obj_idx]->instances.size() > 1) + && !sidebar->obj_list()->has_selected_cut_object(); } -bool Plater::priv::can_split_to_objects() const { return q->can_split(true); } +bool Plater::priv::can_split_to_objects() const +{ + return q->can_split(true); +} -bool Plater::priv::can_split_to_volumes() const { return (printer_technology != ptSLA) && q->can_split(false); } +bool Plater::priv::can_split_to_volumes() const +{ + return (printer_technology != ptSLA) && q->can_split(false); +} -bool Plater::priv::can_arrange() const { return !model.objects.empty() && m_worker.is_idle(); } +bool Plater::priv::can_arrange() const +{ + return !model.objects.empty() && m_worker.is_idle(); +} bool Plater::priv::layers_height_allowed() const { @@ -14266,11 +14265,13 @@ bool Plater::priv::layers_height_allowed() const return false; int obj_idx = get_selected_object_idx(); - return 0 <= obj_idx && obj_idx < (int) model.objects.size() && model.objects[obj_idx]->max_z() > SINKING_Z_THRESHOLD && - view3D->is_layers_editing_allowed(); + return 0 <= obj_idx && obj_idx < (int)model.objects.size() && model.objects[obj_idx]->max_z() > SINKING_Z_THRESHOLD && view3D->is_layers_editing_allowed(); } -bool Plater::priv::can_layers_editing() const { return layers_height_allowed(); } +bool Plater::priv::can_layers_editing() const +{ + return layers_height_allowed(); +} void Plater::priv::on_action_layersediting(SimpleEvent&) { @@ -14281,9 +14282,9 @@ void Plater::priv::on_action_layersediting(SimpleEvent&) const auto& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; if (print_config.opt_bool("enable_mixed_color_sublayer")) { if (wxGetApp().app_config->get("no_warn_mixed_sublayer_variable_layer") != "1") { - MessageDialog - dlg(q, _L("Using variable layer height together with mixed color sublayer may result in poor color mixing quality."), - _L("Warning"), wxICON_WARNING | wxOK); + MessageDialog dlg(q, + _L("Using variable layer height together with mixed color sublayer may result in poor color mixing quality."), + _L("Warning"), wxICON_WARNING | wxOK); dlg.show_dsa_button(); dlg.ShowModal(); if (dlg.get_checkbox_state()) @@ -14295,7 +14296,7 @@ void Plater::priv::on_action_layersediting(SimpleEvent&) notification_manager->set_move_from_overlay(view3D->is_layers_editing_enabled()); } -void Plater::priv::on_create_filament(SimpleEvent&) +void Plater::priv::on_create_filament(SimpleEvent &) { CreateFilamentPresetDialog dlg(wxGetApp().mainframe); int res = dlg.ShowModal(); @@ -14304,48 +14305,51 @@ void Plater::priv::on_create_filament(SimpleEvent&) update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); CreatePresetSuccessfulDialog success_dlg(wxGetApp().mainframe, SuccessType::FILAMENT); - int res = success_dlg.ShowModal(); + int res = success_dlg.ShowModal(); } } -void Plater::priv::on_modify_filament(SimpleEvent& evt) +void Plater::priv::on_modify_filament(SimpleEvent &evt) { - Filamentinformation* filament_info = static_cast(evt.GetEventObject()); - int res; + Filamentinformation *filament_info = static_cast(evt.GetEventObject()); + int res; std::shared_ptr need_edit_preset; { EditFilamentPresetDialog dlg(wxGetApp().mainframe, filament_info); - res = dlg.ShowModal(); + res = dlg.ShowModal(); need_edit_preset = dlg.get_need_edit_preset(); } wxGetApp().mainframe->update_side_preset_ui(); update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); if (wxID_EDIT == res) { - Tab* tab = wxGetApp().get_tab(Preset::Type::TYPE_FILAMENT); - // tab->restore_last_select_item(); - if (tab == nullptr) { - return; - } + Tab *tab = wxGetApp().get_tab(Preset::Type::TYPE_FILAMENT); + //tab->restore_last_select_item(); + if (tab == nullptr) { return; } // Popup needs to be called before "restore_last_select_item", otherwise the page may not be updated wxGetApp().params_dialog()->Popup(); tab->restore_last_select_item(); - // Opening Studio and directly accessing the Filament settings interface through the edit preset button will not take effect and - // requires manual settings. + // Opening Studio and directly accessing the Filament settings interface through the edit preset button will not take effect and requires manual settings. tab->set_just_edit(true); tab->select_preset(need_edit_preset->name); - // when some preset have modified, if the printer is not need_edit_preset_name compatible printer, the preset will jump to other - // preset, need select again - if (!need_edit_preset->is_compatible) - tab->select_preset(need_edit_preset->name); + // when some preset have modified, if the printer is not need_edit_preset_name compatible printer, the preset will jump to other preset, need select again + if (!need_edit_preset->is_compatible) tab->select_preset(need_edit_preset->name); } + } -void Plater::priv::on_add_filament(SimpleEvent& evt) { sidebar->add_filament(); } +void Plater::priv::on_add_filament(SimpleEvent &evt) { + sidebar->add_filament(); +} -void Plater::priv::on_delete_filament(SimpleEvent& evt) { sidebar->delete_filament(); } +void Plater::priv::on_delete_filament(SimpleEvent &evt) { + sidebar->delete_filament(); +} -void Plater::priv::on_add_custom_filament(ColorEvent& evt) { sidebar->add_custom_filament(evt.data); } +void Plater::priv::on_add_custom_filament(ColorEvent &evt) +{ + sidebar->add_custom_filament(evt.data); +} void Plater::priv::enter_gizmos_stack() { @@ -14364,7 +14368,7 @@ bool Plater::priv::leave_gizmos_stack() bool changed = false; assert(m_undo_redo_stack_active == &m_undo_redo_stack_gizmos); if (m_undo_redo_stack_active == &m_undo_redo_stack_gizmos) { - assert(!m_undo_redo_stack_active->empty()); + assert(! m_undo_redo_stack_active->empty()); changed = m_undo_redo_stack_gizmos.has_undo_snapshot(); m_undo_redo_stack_active->clear(); m_undo_redo_stack_active = &m_undo_redo_stack_main; @@ -14374,7 +14378,7 @@ bool Plater::priv::leave_gizmos_stack() int Plater::priv::get_active_snapshot_index() { - const size_t active_snapshot_time = this->undo_redo_stack().active_snapshot_time(); + const size_t active_snapshot_time = this->undo_redo_stack().active_snapshot_time(); const std::vector& ss_stack = this->undo_redo_stack().snapshots(); const auto it = std::lower_bound(ss_stack.begin(), ss_stack.end(), UndoRedo::Snapshot(active_snapshot_time)); return it - ss_stack.begin(); @@ -14396,10 +14400,12 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed if (this->sidebar->obj_list()->is_selected(itSettings)) { snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_SETTINGS_ON_SIDEBAR; snapshot_data.layer_range_idx = this->sidebar->obj_list()->get_selected_layers_range_idx(); - } else if (this->sidebar->obj_list()->is_selected(itLayer)) { + } + else if (this->sidebar->obj_list()->is_selected(itLayer)) { snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_LAYER_ON_SIDEBAR; snapshot_data.layer_range_idx = this->sidebar->obj_list()->get_selected_layers_range_idx(); - } else if (this->sidebar->obj_list()->is_selected(itLayerRoot)) + } + else if (this->sidebar->obj_list()->is_selected(itLayerRoot)) snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_LAYERROOT_ON_SIDEBAR; // If SLA gizmo is active, ask it if it wants to trigger support generation @@ -14407,12 +14413,12 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed if (view3D->get_canvas3d()->get_gizmos_manager().wants_reslice_supports_on_undo()) snapshot_data.flags |= UndoRedo::SnapshotData::RECALCULATE_SLA_SUPPORTS; - // FIXME updating the Wipe tower config values at the ModelWipeTower from the Print config. - // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print - // config. BBS: add partplate logic + //FIXME updating the Wipe tower config values at the ModelWipeTower from the Print config. + // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. + // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); assert(tower_x_opt->values.size() == tower_y_opt->values.size()); @@ -14422,24 +14428,18 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed ModelWipeTower& tower = model.wipe_tower; tower.positions[plate_idx] = Vec2d(tower_x_opt->get_at(plate_idx), tower_y_opt->get_at(plate_idx)); - tower.rotation = config.opt_float("wipe_tower_rotation_angle"); + tower.rotation = config.opt_float("wipe_tower_rotation_angle"); } } - const GLGizmosManager& gizmos = get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d()->get_gizmos_manager() : - view3D->get_canvas3d()->get_gizmos_manager(); + const GLGizmosManager& gizmos = get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_gizmos_manager() : view3D->get_canvas3d()->get_gizmos_manager(); if (snapshot_type == UndoRedo::SnapshotType::ProjectSeparator) this->undo_redo_stack().clear(); - this->undo_redo_stack().take_snapshot(snapshot_name, model, - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d()->get_selection() : - view3D->get_canvas3d()->get_selection(), - gizmos, partplate_list, snapshot_data); + this->undo_redo_stack().take_snapshot(snapshot_name, model, get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_selection() : view3D->get_canvas3d()->get_selection(), gizmos, partplate_list, snapshot_data); if (snapshot_type == UndoRedo::SnapshotType::LeavingGizmoWithAction) { - // Filter all but the last UndoRedo::SnapshotType::GizmoAction in a row between the last UndoRedo::SnapshotType::EnteringGizmo and - // UndoRedo::SnapshotType::LeavingGizmoWithAction. The remaining snapshot will be renamed to a more generic name, depending on what - // gizmo is being left. + // Filter all but the last UndoRedo::SnapshotType::GizmoAction in a row between the last UndoRedo::SnapshotType::EnteringGizmo and UndoRedo::SnapshotType::LeavingGizmoWithAction. + // The remaining snapshot will be renamed to a more generic name, + // depending on what gizmo is being left. if (gizmos.get_current() != nullptr) { std::string new_name = gizmos.get_current()->get_action_snapshot_name(); this->undo_redo_stack().reduce_noisy_snapshots(new_name); @@ -14448,29 +14448,23 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed // Reset the "dirty project" flag. m_undo_redo_stack_main.mark_current_as_saved(); } - // BBS: add PartPlateList as the paremeter for take_snapshot + //BBS: add PartPlateList as the paremeter for take_snapshot this->undo_redo_stack().release_least_recently_used(); dirty_state.update_from_undo_redo_stack(m_undo_redo_stack_main.project_modified()); // Save the last active preset name of a particular printer technology. - ((this->printer_technology == ptFFF) ? m_last_fff_printer_profile_name : - m_last_sla_printer_profile_name) = wxGetApp().preset_bundle->printers.get_selected_preset_name(); - BOOST_LOG_TRIVIAL(info) << "Undo / Redo snapshot taken: " << snapshot_name - << ", Undo / Redo stack memory: " << Slic3r::format_memsize_MB(this->undo_redo_stack().memsize()) - << log_memory_info(); + ((this->printer_technology == ptFFF) ? m_last_fff_printer_profile_name : m_last_sla_printer_profile_name) = wxGetApp().preset_bundle->printers.get_selected_preset_name(); + BOOST_LOG_TRIVIAL(info) << "Undo / Redo snapshot taken: " << snapshot_name << ", Undo / Redo stack memory: " << Slic3r::format_memsize_MB(this->undo_redo_stack().memsize()) << log_memory_info(); } void Plater::priv::undo() { - const std::vector& snapshots = this->undo_redo_stack().snapshots(); - auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), - UndoRedo::Snapshot(this->undo_redo_stack().active_snapshot_time())); + const std::vector &snapshots = this->undo_redo_stack().snapshots(); + auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), UndoRedo::Snapshot(this->undo_redo_stack().active_snapshot_time())); // BBS: undo-redo until modify record - while (--it_current != snapshots.begin() && !snapshot_modifies_project(*it_current)) - ; - if (it_current == snapshots.begin()) - return; + while (--it_current != snapshots.begin() && !snapshot_modifies_project(*it_current)); + if (it_current == snapshots.begin()) return; if (get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView) { if (it_current->snapshot_data.snapshot_type != UndoRedo::SnapshotType::GizmoAction && it_current->snapshot_data.snapshot_type != UndoRedo::SnapshotType::EnteringGizmo && @@ -14483,22 +14477,19 @@ void Plater::priv::undo() void Plater::priv::redo() { - const std::vector& snapshots = this->undo_redo_stack().snapshots(); - auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), - UndoRedo::Snapshot(this->undo_redo_stack().active_snapshot_time())); + const std::vector &snapshots = this->undo_redo_stack().snapshots(); + auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), UndoRedo::Snapshot(this->undo_redo_stack().active_snapshot_time())); // BBS: undo-redo until modify record - while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)) - ; + while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)); if (it_current != snapshots.end()) { - while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)) - ; + while (it_current != snapshots.end() && !snapshot_modifies_project(*it_current++)); this->undo_redo_to(--it_current); } } void Plater::priv::undo_redo_to(size_t time_to_load) { - const std::vector& snapshots = this->undo_redo_stack().snapshots(); + const std::vector &snapshots = this->undo_redo_stack().snapshots(); auto it_current = std::lower_bound(snapshots.begin(), snapshots.end(), UndoRedo::Snapshot(time_to_load)); assert(it_current != snapshots.end()); this->undo_redo_to(it_current); @@ -14513,7 +14504,8 @@ bool Plater::priv::up_to_date(bool saved, bool backup) if (!backup) undo_redo_stack_main().mark_current_as_saved(); return true; - } else { + } + else { return !undo_redo_stack_main().has_real_change_from(last_time); } } @@ -14523,21 +14515,20 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // Make sure that no updating function calls take_snapshot until we are done. SuppressSnapshots snapshot_supressor(q); - bool temp_snapshot_was_taken = this->undo_redo_stack().temp_snapshot_active(); - PrinterTechnology new_printer_technology = it_snapshot->snapshot_data.printer_technology; - bool printer_technology_changed = this->printer_technology != new_printer_technology; + bool temp_snapshot_was_taken = this->undo_redo_stack().temp_snapshot_active(); + PrinterTechnology new_printer_technology = it_snapshot->snapshot_data.printer_technology; + bool printer_technology_changed = this->printer_technology != new_printer_technology; if (printer_technology_changed) { - // BBS do not support SLA + //BBS do not support SLA } // Save the last active preset name of a particular printer technology. - ((this->printer_technology == ptFFF) ? m_last_fff_printer_profile_name : - m_last_sla_printer_profile_name) = wxGetApp().preset_bundle->printers.get_selected_preset_name(); - // FIXME updating the Wipe tower config values at the ModelWipeTower from the Print config. - // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print - // config. BBS: add partplate logic + ((this->printer_technology == ptFFF) ? m_last_fff_printer_profile_name : m_last_sla_printer_profile_name) = wxGetApp().preset_bundle->printers.get_selected_preset_name(); + //FIXME updating the Wipe tower config values at the ModelWipeTower from the Print config. + // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. + // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); assert(tower_x_opt->values.size() == tower_y_opt->values.size()); @@ -14547,7 +14538,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator ModelWipeTower& tower = model.wipe_tower; tower.positions[plate_idx] = Vec2d(tower_x_opt->get_at(plate_idx), tower_y_opt->get_at(plate_idx)); - tower.rotation = config.opt_float("wipe_tower_rotation_angle"); + tower.rotation = config.opt_float("wipe_tower_rotation_angle"); } } const int layer_range_idx = it_snapshot->snapshot_data.layer_range_idx; @@ -14560,15 +14551,17 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator if (this->sidebar->obj_list()->is_selected(itSettings)) { top_snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_SETTINGS_ON_SIDEBAR; top_snapshot_data.layer_range_idx = this->sidebar->obj_list()->get_selected_layers_range_idx(); - } else if (this->sidebar->obj_list()->is_selected(itLayer)) { + } + else if (this->sidebar->obj_list()->is_selected(itLayer)) { top_snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_LAYER_ON_SIDEBAR; top_snapshot_data.layer_range_idx = this->sidebar->obj_list()->get_selected_layers_range_idx(); - } else if (this->sidebar->obj_list()->is_selected(itLayerRoot)) + } + else if (this->sidebar->obj_list()->is_selected(itLayerRoot)) top_snapshot_data.flags |= UndoRedo::SnapshotData::SELECTED_LAYERROOT_ON_SIDEBAR; - bool new_variable_layer_editing_active = (new_flags & UndoRedo::SnapshotData::VARIABLE_LAYER_EDITING_ACTIVE) != 0; - bool new_selected_settings_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_SETTINGS_ON_SIDEBAR) != 0; - bool new_selected_layer_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_LAYER_ON_SIDEBAR) != 0; - bool new_selected_layerroot_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_LAYERROOT_ON_SIDEBAR) != 0; + bool new_variable_layer_editing_active = (new_flags & UndoRedo::SnapshotData::VARIABLE_LAYER_EDITING_ACTIVE) != 0; + bool new_selected_settings_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_SETTINGS_ON_SIDEBAR) != 0; + bool new_selected_layer_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_LAYER_ON_SIDEBAR) != 0; + bool new_selected_layerroot_on_sidebar = (new_flags & UndoRedo::SnapshotData::SELECTED_LAYERROOT_ON_SIDEBAR) != 0; if (this->view3D->get_canvas3d()->get_gizmos_manager().wants_reslice_supports_on_undo()) top_snapshot_data.flags |= UndoRedo::SnapshotData::RECALCULATE_SLA_SUPPORTS; @@ -14581,45 +14574,32 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator const UndoRedo::Snapshot snapshot_copy = *it_snapshot; // Do the jump in time. if (it_snapshot->timestamp < this->undo_redo_stack().active_snapshot_time() ? - this->undo_redo_stack().undo(model, - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d()->get_selection() : - this->view3D->get_canvas3d()->get_selection(), - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d()->get_gizmos_manager() : - this->view3D->get_canvas3d()->get_gizmos_manager(), - this->partplate_list, top_snapshot_data, it_snapshot->timestamp) : - this->undo_redo_stack().redo(model, - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d()->get_gizmos_manager() : - this->view3D->get_canvas3d()->get_gizmos_manager(), - this->partplate_list, it_snapshot->timestamp)) { + this->undo_redo_stack().undo(model, get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_selection() : this->view3D->get_canvas3d()->get_selection(), get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_gizmos_manager() : this->view3D->get_canvas3d()->get_gizmos_manager(), this->partplate_list, top_snapshot_data, it_snapshot->timestamp) : + this->undo_redo_stack().redo(model, get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_gizmos_manager() : this->view3D->get_canvas3d()->get_gizmos_manager(), this->partplate_list, it_snapshot->timestamp)) { if (printer_technology_changed) { // Switch to the other printer technology. Switch to the last printer active for that particular technology. - AppConfig* app_config = wxGetApp().app_config; - app_config->set("presets", PRESET_PRINTER_NAME, - (new_printer_technology == ptFFF) ? m_last_fff_printer_profile_name : m_last_sla_printer_profile_name); - // FIXME Why are we reloading the whole preset bundle here? Please document. This is fishy and it is unnecessarily expensive. - // Anyways, don't report any config value substitutions, they have been already reported to the user at application start up. + AppConfig *app_config = wxGetApp().app_config; + app_config->set("presets", PRESET_PRINTER_NAME, (new_printer_technology == ptFFF) ? m_last_fff_printer_profile_name : m_last_sla_printer_profile_name); + //FIXME Why are we reloading the whole preset bundle here? Please document. This is fishy and it is unnecessarily expensive. + // Anyways, don't report any config value substitutions, they have been already reported to the user at application start up. wxGetApp().preset_bundle->load_presets(*app_config, ForwardCompatibilitySubstitutionRule::EnableSilent); - // load_current_presets() calls Tab::load_current_preset() -> TabPrint::update() -> - // Object_list::update_and_show_object_settings_item(), but the Object list still keeps pointer to the old Model. Avoid a crash - // by removing selection first. + // load_current_presets() calls Tab::load_current_preset() -> TabPrint::update() -> Object_list::update_and_show_object_settings_item(), + // but the Object list still keeps pointer to the old Model. Avoid a crash by removing selection first. this->sidebar->obj_list()->unselect_objects(); // Load the currently selected preset into the GUI, update the preset selection box. // This also switches the printer technology based on the printer technology of the active printer profile. wxGetApp().load_current_presets(); } - // FIXME updating the Print config from the Wipe tower config values at the ModelWipeTower. - // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print - // config. BBS: add partplate logic + //FIXME updating the Print config from the Wipe tower config values at the ModelWipeTower. + // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. + // BBS: add partplate logic if (this->printer_technology == ptFFF) { - const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; - ConfigOptionFloats* tower_x_opt = const_cast(proj_cfg.option("wipe_tower_x")); - ConfigOptionFloats* tower_y_opt = const_cast(proj_cfg.option("wipe_tower_y")); + ConfigOptionFloats* tower_x_opt = const_cast(proj_cfg.option("wipe_tower_x")); + ConfigOptionFloats* tower_y_opt = const_cast(proj_cfg.option("wipe_tower_y")); // BBS: don't support wipe tower rotation - // double current_rotation = proj_cfg.opt_float("wipe_tower_rotation_angle"); + //double current_rotation = proj_cfg.opt_float("wipe_tower_rotation_angle"); bool need_update = false; if (tower_x_opt->values.size() != model.wipe_tower.positions.size()) { tower_x_opt->clear(); @@ -14673,28 +14653,18 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator void Plater::priv::update_after_undo_redo(const UndoRedo::Snapshot& snapshot, bool /* temp_snapshot_was_taken */) { - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_selection().clear() : - this->view3D->get_canvas3d()->get_selection().clear(); + get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_selection().clear() : this->view3D->get_canvas3d()->get_selection().clear(); // Update volumes from the deserializd model, always stop / update the background processing (for both the SLA and FFF technologies). - this->update((unsigned int) UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE | - (unsigned int) UpdateParams::POSTPONE_VALIDATION_ERROR_MESSAGE); - // Release old snapshots if the memory allocated is excessive. This may remove the top most snapshot if jumping to the very first - // snapshot. - // if (temp_snapshot_was_taken) - // Release the old snapshots always, as it may have happened, that some of the triangle meshes got deserialized from the snapshot, while - // some triangle meshes may have gotten released from the scene or the background processing, therefore now being calculated into the - // Undo / Redo stack size. - this->undo_redo_stack().release_least_recently_used(); - // YS_FIXME update obj_list from the deserialized model (maybe store ObjectIDs into the tree?) (no selections at this point of time) - get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? - assemble_view->get_canvas3d() - ->get_selection() - .set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), - this->undo_redo_stack().selection_deserialized().volumes_and_instances) : - this->view3D->get_canvas3d() - ->get_selection() - .set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), - this->undo_redo_stack().selection_deserialized().volumes_and_instances); + this->update((unsigned int)UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE | (unsigned int)UpdateParams::POSTPONE_VALIDATION_ERROR_MESSAGE); + // Release old snapshots if the memory allocated is excessive. This may remove the top most snapshot if jumping to the very first snapshot. + //if (temp_snapshot_was_taken) + // Release the old snapshots always, as it may have happened, that some of the triangle meshes got deserialized from the snapshot, while some + // triangle meshes may have gotten released from the scene or the background processing, therefore now being calculated into the Undo / Redo stack size. + this->undo_redo_stack().release_least_recently_used(); + //YS_FIXME update obj_list from the deserialized model (maybe store ObjectIDs into the tree?) (no selections at this point of time) + get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + assemble_view->get_canvas3d()->get_selection().set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), this->undo_redo_stack().selection_deserialized().volumes_and_instances) : + this->view3D->get_canvas3d()->get_selection().set_deserialized(GUI::Selection::EMode(this->undo_redo_stack().selection_deserialized().mode), this->undo_redo_stack().selection_deserialized().volumes_and_instances); get_current_canvas3D()->get_canvas_type() == GLCanvas3D::CanvasAssembleView ? assemble_view->get_canvas3d()->get_gizmos_manager().update_after_undo_redo(snapshot) : this->view3D->get_canvas3d()->get_gizmos_manager().update_after_undo_redo(snapshot); @@ -14703,23 +14673,20 @@ void Plater::priv::update_after_undo_redo(const UndoRedo::Snapshot& snapshot, bo if (wxGetApp().get_mode() == comSimple && model_has_advanced_features(this->model)) { // If the user jumped to a snapshot that require user interface with advanced features, switch to the advanced mode without asking. - // There is a little risk of surprising the user, as he already must have had the advanced or advanced mode active for such a - // snapshot to be taken. + // There is a little risk of surprising the user, as he already must have had the advanced or advanced mode active for such a snapshot to be taken. Slic3r::GUI::wxGetApp().save_mode(comAdvanced); view3D->set_as_dirty(); } - // this->update() above was called with POSTPONE_VALIDATION_ERROR_MESSAGE, so that if an error message was generated when updating the - // back end, it would not open immediately, but it would be saved to be show later. Let's do it now. We do not want to display the - // message box earlier, because on Windows & OSX the message box takes over the message queue pump, which in turn executes the rendering - // function before a full update after the Undo / Redo jump. + // this->update() above was called with POSTPONE_VALIDATION_ERROR_MESSAGE, so that if an error message was generated when updating the back end, it would not open immediately, + // but it would be saved to be show later. Let's do it now. We do not want to display the message box earlier, because on Windows & OSX the message box takes over the message + // queue pump, which in turn executes the rendering function before a full update after the Undo / Redo jump. this->show_delayed_error_message(); - // FIXME what about the state of the manipulators? - // FIXME what about the focus? Cursor in the side panel? + //FIXME what about the state of the manipulators? + //FIXME what about the focus? Cursor in the side panel? - BOOST_LOG_TRIVIAL(info) << "Undo / Redo snapshot reloaded. Undo / Redo stack memory: " - << Slic3r::format_memsize_MB(this->undo_redo_stack().memsize()) << log_memory_info(); + BOOST_LOG_TRIVIAL(info) << "Undo / Redo snapshot reloaded. Undo / Redo stack memory: " << Slic3r::format_memsize_MB(this->undo_redo_stack().memsize()) << log_memory_info(); } void Plater::priv::bring_instance_forward() const @@ -14733,7 +14700,7 @@ void Plater::priv::bring_instance_forward() const return; } BOOST_LOG_TRIVIAL(debug) << "Orca Slicer window going forward"; - // this code maximize app window on Fedora + //this code maximize app window on Fedora { main_frame->Iconize(false); if (main_frame->IsMaximized()) @@ -14741,25 +14708,25 @@ void Plater::priv::bring_instance_forward() const else main_frame->Maximize(false); } - // this code maximize window on Ubuntu + //this code maximize window on Ubuntu { main_frame->Restore(); - wxGetApp().GetTopWindow()->SetFocus(); // focus on my window + wxGetApp().GetTopWindow()->SetFocus(); // focus on my window wxGetApp().GetTopWindow()->Show(true); // show the window - wxGetApp().GetTopWindow()->Raise(); // bring window to front + wxGetApp().GetTopWindow()->Raise(); // bring window to front } } -// BBS: popup object table +//BBS: popup object table bool Plater::priv::PopupObjectTable(int object_id, int volume_id, const wxPoint& position) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, create ObjectTableDialog"); int max_width{1920}, max_height{1080}; - max_width = q->GetMaxWidth(); + max_width = q->GetMaxWidth(); max_height = q->GetMaxHeight(); ObjectTableDialog table_dialog(q, q, &model, wxSize(max_width, max_height)); - // m_popup_table = new ObjectTableDialog(q, q, &model); + //m_popup_table = new ObjectTableDialog(q, q, &model); wxRect rect = sidebar->GetRect(); wxPoint pos = sidebar->ClientToScreen(wxPoint(rect.x, rect.y)); @@ -14773,17 +14740,19 @@ bool Plater::priv::PopupObjectTable(int object_id, int volume_id, const wxPoint& void Sidebar::set_btn_label(const ActionButtonType btn_type, const wxString& label) const { - switch (btn_type) { - case ActionButtonType::abReslice: p->btn_reslice->SetLabelText(label); break; - case ActionButtonType::abExport: p->btn_export_gcode->SetLabelText(label); break; - case ActionButtonType::abSendGCode: /*p->btn_send_gcode->SetLabelText(label);*/ break; + switch (btn_type) + { + case ActionButtonType::abReslice: p->btn_reslice->SetLabelText(label); break; + case ActionButtonType::abExport: p->btn_export_gcode->SetLabelText(label); break; + case ActionButtonType::abSendGCode: /*p->btn_send_gcode->SetLabelText(label);*/ break; } } // Plater / Public -Plater::Plater(wxWindow* parent, MainFrame* main_frame) - : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxGetApp().get_min_size()), p(new priv(this, main_frame)) +Plater::Plater(wxWindow *parent, MainFrame *main_frame) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxGetApp().get_min_size()) + , p(new priv(this, main_frame)) { // Initialization performed in the private c-tor enable_wireframe(true); @@ -14801,7 +14770,7 @@ bool Plater::is_project_dirty() const { return p->is_project_dirty(); } bool Plater::is_presets_dirty() const { return p->is_presets_dirty(); } void Plater::set_plater_dirty(bool is_dirty) { p->set_plater_dirty(is_dirty); } void Plater::update_project_dirty_from_presets() { p->update_project_dirty_from_presets(); } -int Plater::save_project_if_dirty(const wxString& reason) { return p->save_project_if_dirty(reason); } +int Plater::save_project_if_dirty(const wxString& reason) { return p->save_project_if_dirty(reason); } void Plater::reset_project_dirty_after_save() { p->reset_project_dirty_after_save(); } void Plater::reset_project_dirty_initial_presets() { p->reset_project_dirty_initial_presets(); } #if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW @@ -14812,12 +14781,10 @@ std::vector Plater::mixed_filament_config_indices() const { std::vector indices; auto& config = wxGetApp().preset_bundle->project_config; - auto* opt = config.option("filament_is_mixed"); - if (!opt) - return indices; + auto* opt = config.option("filament_is_mixed"); + if (!opt) return indices; for (size_t i = 0; i < opt->values.size(); ++i) - if (opt->values[i]) - indices.push_back(i); + if (opt->values[i]) indices.push_back(i); return indices; } @@ -14825,7 +14792,7 @@ std::vector Plater::physical_filament_config_indices() const { std::vector indices; auto& config = wxGetApp().preset_bundle->project_config; - auto* opt = config.option("filament_is_mixed"); + auto* opt = config.option("filament_is_mixed"); size_t total = wxGetApp().preset_bundle->filament_presets.size(); for (size_t i = 0; i < total; ++i) { if (!opt || i >= opt->values.size() || !opt->values[i]) @@ -14834,13 +14801,11 @@ std::vector Plater::physical_filament_config_indices() const return indices; } -bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, - TextureImportResult& result, +bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, TextureImportResult& result, std::function cancel_callback, std::function progress_callback) { - if (!loaded_model.texture_mesh || !has_importable_texture(*loaded_model.texture_mesh)) - return false; + if (!loaded_model.texture_mesh || !has_importable_texture(*loaded_model.texture_mesh)) return false; // Defense in depth: if all geometry got dropped earlier (e.g. by a future // regression of the zero-volume cleanup) but the textured mesh is still @@ -14854,31 +14819,29 @@ bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, return true; } - const wxString fallback_warning = _L("Texture import failed. The model appears to contain texture data, but the texture import process " - "could not be completed. The model will be imported as geometry only."); + const wxString fallback_warning = _L("Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."); BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: opening texture import dialog"; std::vector filament_entries; { - auto& preset_bundle = *wxGetApp().preset_bundle; + auto& preset_bundle = *wxGetApp().preset_bundle; auto& project_config = preset_bundle.project_config; - auto* colours_opt = project_config.option("filament_colour"); - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - auto* type_opt = project_config.option("filament_type"); + auto* colours_opt = project_config.option("filament_colour"); + auto* is_mixed_opt = project_config.option("filament_is_mixed"); + auto* type_opt = project_config.option("filament_type"); auto* components_opt = project_config.option("filament_mixed_components"); - auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); - const size_t total = preset_bundle.filament_presets.size(); + auto* ratios_opt = project_config.option("filament_mixed_sublayer_ratios"); + const size_t total = preset_bundle.filament_presets.size(); filament_entries.reserve(total); for (size_t i = 0; i < total; ++i) { TextureFilamentEntry entry; - entry.kind = (is_mixed_opt && i < is_mixed_opt->values.size() && is_mixed_opt->values[i]) ? - TextureFilamentKind::ExistingMixed : - TextureFilamentKind::ExistingPhysical; - entry.dialog_index = (int) filament_entries.size(); + entry.kind = (is_mixed_opt && i < is_mixed_opt->values.size() && is_mixed_opt->values[i]) ? + TextureFilamentKind::ExistingMixed : TextureFilamentKind::ExistingPhysical; + entry.dialog_index = (int)filament_entries.size(); entry.project_config_index = i; - entry.color_hex = (colours_opt && i < colours_opt->values.size()) ? colours_opt->values[i] : "#808080"; - entry.type = (type_opt && i < type_opt->values.size()) ? type_opt->values[i] : ""; + entry.color_hex = (colours_opt && i < colours_opt->values.size()) ? colours_opt->values[i] : "#808080"; + entry.type = (type_opt && i < type_opt->values.size()) ? type_opt->values[i] : ""; std::string name; if (i < preset_bundle.filament_presets.size()) { @@ -14893,19 +14856,19 @@ bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, if (entry.kind == TextureFilamentKind::ExistingMixed) { if (components_opt && i < components_opt->values.size()) entry.mixed_components = Slic3r::parse_mixed_components(components_opt->values[i]); - std::vector ratios = Slic3r::parse_mixed_ratios(ratios_opt && i < ratios_opt->values.size() ? - ratios_opt->values[i] : - "", - entry.mixed_components.size()); + std::vector ratios = Slic3r::parse_mixed_ratios( + ratios_opt && i < ratios_opt->values.size() ? ratios_opt->values[i] : "", + entry.mixed_components.size()); entry.mixed_ratios.reserve(ratios.size()); for (double ratio : ratios) - entry.mixed_ratios.push_back((int) std::lround(ratio * 100.0)); + entry.mixed_ratios.push_back((int)std::lround(ratio * 100.0)); } filament_entries.push_back(std::move(entry)); } } - TextureImportDialog dlg(q, *loaded_model.texture_mesh, filament_entries, std::move(cancel_callback), std::move(progress_callback)); + TextureImportDialog dlg(q, *loaded_model.texture_mesh, filament_entries, + std::move(cancel_callback), std::move(progress_callback)); if (dlg.ShowModal() != wxID_OK) { if (dlg.was_skipped()) { BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: user skipped texture matching"; @@ -14916,7 +14879,7 @@ bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, if (dlg.fallback_to_geometry_only()) { BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: texture import failed, falling back to geometry-only import"; result.fallback_to_geometry_only = true; - result.fallback_warning = fallback_warning; + result.fallback_warning = fallback_warning; loaded_model.texture_mesh.reset(); return true; } @@ -14925,13 +14888,13 @@ bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, return false; } - auto painted = dlg.get_painted_mesh(); + auto painted = dlg.get_painted_mesh(); auto final_matches = dlg.get_matches(); if (painted.face_colors.empty() || final_matches.empty()) { BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: no painting result"; result.fallback_to_geometry_only = true; - result.fallback_warning = fallback_warning; + result.fallback_warning = fallback_warning; loaded_model.texture_mesh.reset(); return true; } @@ -14939,28 +14902,26 @@ bool Plater::priv::run_textured_mesh_import_dialog(Slic3r::Model& loaded_model, BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: got " << painted.cluster_colors.size() << " clusters, skipped=" << dlg.was_skipped(); - result.painted = std::move(painted); - result.matches = std::move(final_matches); - result.new_filament_colors = dlg.get_new_filament_colors(); + result.painted = std::move(painted); + result.matches = std::move(final_matches); + result.new_filament_colors = dlg.get_new_filament_colors(); result.new_filament_preset_names = dlg.get_new_filament_preset_names(); - result.new_mixed_filaments = dlg.get_new_mixed_filaments(); - result.filament_entries = dlg.get_filament_entries(); - result.existing_filament_count = dlg.get_existing_filament_count(); - result.skipped = dlg.was_skipped(); + result.new_mixed_filaments = dlg.get_new_mixed_filaments(); + result.filament_entries = dlg.get_filament_entries(); + result.existing_filament_count = dlg.get_existing_filament_count(); + result.skipped = dlg.was_skipped(); return true; } -void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model, - const std::vector& obj_idxs, +void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model, const std::vector& obj_idxs, const TextureImportResult& result, - LoadProgressCallback progress_callback, - bool update_scene) + LoadProgressCallback progress_callback, bool update_scene) { auto update_apply_progress = [&progress_callback](int percent, const wxString& message) { return !progress_callback || progress_callback(std::clamp(percent, 0, 100), message); }; - const auto& painted = result.painted; + const auto& painted = result.painted; const auto& final_matches = result.matches; if (painted.face_colors.empty() || final_matches.empty()) { @@ -14977,9 +14938,9 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model auto collect_physical_color_strs = []() { std::vector colors; auto& project_config = wxGetApp().preset_bundle->project_config; - auto* colours_opt = project_config.option("filament_colour"); - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - const size_t total = wxGetApp().preset_bundle->filament_presets.size(); + auto* colours_opt = project_config.option("filament_colour"); + auto* is_mixed_opt = project_config.option("filament_is_mixed"); + const size_t total = wxGetApp().preset_bundle->filament_presets.size(); for (size_t i = 0; i < total; ++i) { const bool is_mixed = is_mixed_opt && i < is_mixed_opt->values.size() && is_mixed_opt->values[i]; if (!is_mixed) @@ -14991,7 +14952,7 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model const auto& entries = result.filament_entries; std::vector filament_index_remap(entries.size(), -1); size_t existing_physical_count = 0; - size_t new_physical_count = 0; + size_t new_physical_count = 0; for (const auto& entry : entries) { if (entry.kind == TextureFilamentKind::ExistingPhysical) ++existing_physical_count; @@ -15000,12 +14961,12 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model } for (const auto& entry : entries) { - if (entry.dialog_index < 0 || entry.dialog_index >= (int) filament_index_remap.size()) + if (entry.dialog_index < 0 || entry.dialog_index >= (int)filament_index_remap.size()) continue; if (entry.kind == TextureFilamentKind::ExistingPhysical) { - filament_index_remap[entry.dialog_index] = (int) entry.project_config_index; + filament_index_remap[entry.dialog_index] = (int)entry.project_config_index; } else if (entry.kind == TextureFilamentKind::ExistingMixed) { - filament_index_remap[entry.dialog_index] = (int) (entry.project_config_index + new_physical_count); + filament_index_remap[entry.dialog_index] = (int)(entry.project_config_index + new_physical_count); } } @@ -15016,10 +14977,12 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model wxColour new_col(entry.color_hex); const size_t final_idx = existing_physical_count + new_physical_order; sidebar->add_custom_filament(new_col, entry.preset_name); - if (entry.dialog_index >= 0 && entry.dialog_index < (int) filament_index_remap.size()) - filament_index_remap[entry.dialog_index] = (int) final_idx; - BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: created pending physical filament dialog=" << entry.dialog_index - << " final=" << final_idx << " color=" << entry.color_hex << " preset=" << entry.preset_name; + if (entry.dialog_index >= 0 && entry.dialog_index < (int)filament_index_remap.size()) + filament_index_remap[entry.dialog_index] = (int)final_idx; + BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: created pending physical filament dialog=" + << entry.dialog_index << " final=" << final_idx + << " color=" << entry.color_hex + << " preset=" << entry.preset_name; ++new_physical_order; } @@ -15030,25 +14993,27 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model mixed_result.components.reserve(mixed.component_dialog_indices.size()); bool valid_components = true; for (int component_dialog_idx : mixed.component_dialog_indices) { - if (component_dialog_idx < 0 || component_dialog_idx >= (int) filament_index_remap.size() || + if (component_dialog_idx < 0 || component_dialog_idx >= (int)filament_index_remap.size() || filament_index_remap[component_dialog_idx] < 0) { valid_components = false; break; } - mixed_result.components.push_back((unsigned int) (filament_index_remap[component_dialog_idx] + 1)); + mixed_result.components.push_back((unsigned int)(filament_index_remap[component_dialog_idx] + 1)); } - if (!valid_components || mixed_result.components.size() < 2 || mixed_result.components.size() != mixed_result.ratios.size()) { - BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: invalid pending mixed filament dialog=" << mixed.dialog_index; + if (!valid_components || mixed_result.components.size() < 2 || + mixed_result.components.size() != mixed_result.ratios.size()) { + BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: invalid pending mixed filament dialog=" + << mixed.dialog_index; continue; } - const int final_idx = (int) wxGetApp().preset_bundle->filament_presets.size(); + const int final_idx = (int)wxGetApp().preset_bundle->filament_presets.size(); if (create_mixed_filament_from_result(sidebar, mixed_result, physical_colors_for_mixing)) { - if (mixed.dialog_index >= 0 && mixed.dialog_index < (int) filament_index_remap.size()) + if (mixed.dialog_index >= 0 && mixed.dialog_index < (int)filament_index_remap.size()) filament_index_remap[mixed.dialog_index] = final_idx; physical_colors_for_mixing = collect_physical_color_strs(); - BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: created pending mixed filament dialog=" << mixed.dialog_index - << " final=" << final_idx; + BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: created pending mixed filament dialog=" + << mixed.dialog_index << " final=" << final_idx; } } @@ -15056,11 +15021,11 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model for (auto& m : remapped_matches) { if (m.filament_index < 0) continue; - if (m.filament_index < (int) filament_index_remap.size() && filament_index_remap[m.filament_index] >= 0) { + if (m.filament_index < (int)filament_index_remap.size() && filament_index_remap[m.filament_index] >= 0) { m.filament_index = filament_index_remap[m.filament_index]; } else { - BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: invalid filament index " << m.filament_index - << " in texture mapping"; + BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: invalid filament index " + << m.filament_index << " in texture mapping"; m.filament_index = -1; } } @@ -15069,7 +15034,7 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model { std::map, int> color_to_filament; for (const auto& m : remapped_matches) { - if (m.cluster_index >= 0 && m.cluster_index < (int) painted.cluster_colors.size() && m.filament_index >= 0) + if (m.cluster_index >= 0 && m.cluster_index < (int)painted.cluster_colors.size() && m.filament_index >= 0) color_to_filament[painted.cluster_colors[m.cluster_index]] = m.filament_index + 1; } for (const auto& face_color : painted.face_colors) { @@ -15088,11 +15053,9 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model for (size_t obj_order = 0; obj_order < obj_idxs.size(); ++obj_order) { size_t idx = obj_idxs[obj_order]; - if (idx >= loaded_model.objects.size()) - continue; + if (idx >= loaded_model.objects.size()) continue; ModelObject* obj = loaded_model.objects[idx]; - if (!obj) - continue; + if (!obj) continue; // painted is derived from the whole textured mesh and is meaningful // only against a single MODEL_PART volume. Applying it to every @@ -15100,37 +15063,38 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model // volume with the same painted geometry. Restrict to the first // model_part and warn when the object holds more than one. ModelVolume* target = nullptr; - int part_count = 0; + int part_count = 0; for (ModelVolume* vol : obj->volumes) { if (vol && vol->is_model_part()) { ++part_count; - if (!target) - target = vol; + if (!target) target = vol; } } - if (!target) - continue; + if (!target) continue; if (part_count > 1) { - BOOST_LOG_TRIVIAL(warning) << "handle_textured_mesh_import: object has " << part_count - << " model parts; painting only applied to the first part."; + BOOST_LOG_TRIVIAL(warning) + << "handle_textured_mesh_import: object has " << part_count + << " model parts; painting only applied to the first part."; } - if (Slic3r::apply_painted_mesh_to_volume(painted, remapped_matches, *target) && min_used_filament_1based > 0) { + if (Slic3r::apply_painted_mesh_to_volume(painted, remapped_matches, *target) + && min_used_filament_1based > 0) { target->config.set("extruder", min_used_filament_1based); obj->config.set("extruder", min_used_filament_1based); if (update_scene) { if (auto* obj_list = wxGetApp().obj_list()) { - obj_list->update_objects_list_filament_column( - std::max(wxGetApp().filaments_cnt(), (size_t) min_used_filament_1based)); + obj_list->update_objects_list_filament_column(std::max( + wxGetApp().filaments_cnt(), (size_t)min_used_filament_1based)); obj_list->update_info_items(idx); } } - BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: set base filament to " << min_used_filament_1based - << " for object index " << idx << ", object extruder=" << obj->config.extruder() + BOOST_LOG_TRIVIAL(info) << "handle_textured_mesh_import: set base filament to " + << min_used_filament_1based << " for object index " << idx + << ", object extruder=" << obj->config.extruder() << ", volume extruder=" << target->config.extruder(); } // bbox invalidation is performed inside apply_painted_mesh_to_volume. obj->ensure_on_bed(); - const int object_percent = 25 + (int) (60 * (obj_order + 1) / std::max(obj_idxs.size(), 1)); + const int object_percent = 25 + (int)(60 * (obj_order + 1) / std::max(obj_idxs.size(), 1)); if (!update_apply_progress(object_percent, _L("Applying texture colors..."))) return; } @@ -15145,8 +15109,7 @@ void Plater::priv::apply_textured_mesh_import_result(Slic3r::Model& loaded_model update_apply_progress(100, _L("Texture colors applied.")); } -void Plater::priv::handle_textured_mesh_import(Slic3r::Model& loaded_model, - const std::vector& obj_idxs, +void Plater::priv::handle_textured_mesh_import(Slic3r::Model& loaded_model, const std::vector& obj_idxs, std::function cancel_callback) { TextureImportResult result; @@ -15156,13 +15119,13 @@ void Plater::priv::handle_textured_mesh_import(Slic3r::Model& loaded_model, apply_textured_mesh_import_result(loaded_model, obj_idxs, result); } -Sidebar& Plater::sidebar() { return *p->sidebar; } -const Model& Plater::model() const { return p->model; } -Model& Plater::model() { return p->model; } -const Print& Plater::fff_print() const { return p->fff_print; } -Print& Plater::fff_print() { return p->fff_print; } -const SLAPrint& Plater::sla_print() const { return p->sla_print; } -SLAPrint& Plater::sla_print() { return p->sla_print; } +Sidebar& Plater::sidebar() { return *p->sidebar; } +const Model& Plater::model() const { return p->model; } +Model& Plater::model() { return p->model; } +const Print& Plater::fff_print() const { return p->fff_print; } +Print& Plater::fff_print() { return p->fff_print; } +const SLAPrint& Plater::sla_print() const { return p->sla_print; } +SLAPrint& Plater::sla_print() { return p->sla_print; } int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_name) { @@ -15171,20 +15134,18 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_ bool transfer_preset_changes = false; // BBS: save confirm - auto check = [this, &transfer_preset_changes](bool yes_or_no) { + auto check = [this,&transfer_preset_changes](bool yes_or_no) { m_new_project_and_check_state = true; wxString header = _L("Some presets are modified.") + "\n" + - (yes_or_no ? - _L("You can keep the modified presets for the new project or discard them") : - _L("You can keep the modified presets for the new project, discard, or save changes as new presets.")); + (yes_or_no ? _L("You can keep the modified presets for the new project or discard them") : + _L("You can keep the modified presets for the new project, discard, or save changes as new presets.")); int act_buttons = ActionButtons::KEEP | ActionButtons::REMEMBER_CHOISE; if (!yes_or_no) act_buttons |= ActionButtons::SAVE; if (m_exported_file) { //.gcode.3mf ignore presets modify m_exported_file = false; } - bool result = wxGetApp().check_and_keep_current_preset_changes(_L("Creating a new project"), header, act_buttons, - &transfer_preset_changes); + bool result = wxGetApp().check_and_keep_current_preset_changes(_L("Creating a new project"), header, act_buttons, &transfer_preset_changes); m_new_project_and_check_state = false; return result; }; @@ -15192,26 +15153,26 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_ if (!skip_confirm && (result = close_with_confirm(check)) == wxID_CANCEL) return wxID_CANCEL; - m_only_gcode = false; - m_exported_file = false; + m_only_gcode = false; + m_exported_file = false; m_loading_project = false; get_notification_manager()->clear_all(); if (!silent) wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - // get_partplate_list().reinit(); - // get_partplate_list().update_slice_context_to_current_plate(p->background_process); - // p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); + //get_partplate_list().reinit(); + //get_partplate_list().update_slice_context_to_current_plate(p->background_process); + //p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); reset(transfer_preset_changes); reset_project_dirty_after_save(); reset_project_dirty_initial_presets(); wxGetApp().update_saved_preset_from_current_preset(); update_project_dirty_from_presets(); - // reset project + //reset project p->project.reset(); - // set project name + //set project name if (project_name.empty()) p->set_project_name(_L("Untitled")); else @@ -15222,7 +15183,7 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_ Model m; model().load_from(m); // new id avoid same path name - // select first plate + //select first plate get_partplate_list().select_plate(0); SimpleEvent event(EVT_GLCANVAS_PLATE_SELECT); p->on_plate_selected(event); @@ -15244,7 +15205,8 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_ LoadType determine_load_type(std::string filename, std::string override_setting = ""); // BBS: FIXME, missing resotre logic -void Plater::load_project(wxString const& filename2, wxString const& originfile) +void Plater::load_project(wxString const& filename2, + wxString const& originfile) { model().calib_pa_pattern.reset(nullptr); model().plates_custom_gcodes.clear(); @@ -15252,8 +15214,9 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "filename is: " << filename2 << "and originfile is: " << originfile; BOOST_LOG_TRIVIAL(info) << __FUNCTION__; auto filename = filename2; - auto check = [&filename, this](bool yes_or_no) { - if (!yes_or_no && !wxGetApp().check_and_save_current_preset_changes(_L("Load project"), _L("Some presets are modified."))) + auto check = [&filename, this] (bool yes_or_no) { + if (!yes_or_no && !wxGetApp().check_and_save_current_preset_changes(_L("Load project"), + _L("Some presets are modified."))) return false; if (filename.empty()) { // Ask user for a project file name. @@ -15270,8 +15233,8 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) // BBS if (m_loading_project) { - // some error cases happens - // return directly + //some error cases happens + //return directly BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": current loading other project, return directly"); return; } @@ -15279,7 +15242,7 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) m_loading_project = true; ScopeGuard loading_project_sc([this]() { m_loading_project = false; }); // Make sure state restored on any early return - m_only_gcode = false; + m_only_gcode = false; m_exported_file = false; get_notification_manager()->bbl_close_plateinfo_notification(); get_notification_manager()->bbl_close_preview_only_notification(); @@ -15290,7 +15253,7 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) get_notification_manager()->close_notification_of_type(NotificationType::SlicingSeriousWarning); get_notification_manager()->close_notification_of_type(NotificationType::SlicingWarning); - auto path = into_path(filename); + auto path = into_path(filename); auto strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig; if (originfile == "") { @@ -15301,9 +15264,9 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) strategy = strategy | LoadStrategy::Restore; } else { switch (determine_load_type(filename.ToStdString())) { - case LoadType::OpenProject: break; // Do nothing - case LoadType::LoadGeometry:; strategy = LoadStrategy::LoadModel; break; - default: return; // User cancelled + case LoadType::OpenProject: break; // Do nothing + case LoadType::LoadGeometry:; strategy = LoadStrategy::LoadModel; break; + default: return; // User cancelled } } bool load_restore = strategy & LoadStrategy::Restore; @@ -15330,7 +15293,7 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { - p->set_project_name(_L("Untitled")); + p->set_project_name(_L("Untitled")); } } else { @@ -15346,15 +15309,17 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) if (!filename.IsEmpty()) wxGetApp().mainframe->add_to_recent_projects(filename); } + } // BBS set default 3D view and direction after loading project - // p->select_view_3D("3D"); + //p->select_view_3D("3D"); if (!m_exported_file) { p->select_view("topfront"); p->camera.requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - } else { + } + else { p->partplate_list.select_plate_view(); } @@ -15374,7 +15339,7 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) wxGetApp().params_panel()->switch_to_object_if_has_object_configs(); - auto has_modify = is_flush_config_modified(); + auto has_modify = is_flush_config_modified(); sidebar().set_flushing_volume_warning(has_modify); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " load project done"; @@ -15383,8 +15348,8 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) // BBS: save logic int Plater::save_project(bool saveAs) { - // if (up_to_date(false, false)) // should we always save - // return; + //if (up_to_date(false, false)) // should we always save + // return; auto filename = get_project_filename(".3mf"); if (!saveAs && filename.IsEmpty()) saveAs = true; @@ -15395,18 +15360,15 @@ int Plater::save_project(bool saveAs) if (filename == "") return wxID_CANCEL; - // BBS export 3mf without gcode - auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh; + //BBS export 3mf without gcode + auto save_strategy = SaveStrategy::SplitModel | SaveStrategy::ShareMesh; bool full_pathnames = wxGetApp().app_config->get_bool("export_sources_full_pathnames"); if (full_pathnames) { save_strategy = save_strategy | SaveStrategy::FullPathSources; } if (export_3mf(into_path(filename), save_strategy) < 0) { - MessageDialog(this, - _L("Failed to save the project.\nPlease check whether the folder exists online or if other programs have the project " - "file open."), - _L("Save project"), wxOK | wxICON_WARNING) - .ShowModal(); + MessageDialog(this, _L("Failed to save the project.\nPlease check whether the folder exists online or if other programs have the project file open."), + _L("Save project"), wxOK | wxICON_WARNING).ShowModal(); return wxID_CANCEL; } @@ -15423,17 +15385,18 @@ int Plater::save_project(bool saveAs) try { json j; boost::uintmax_t size = boost::filesystem::file_size(into_path(filename)); - j["file_size"] = size; - j["file_name"] = std::string(filename.mb_str()); + j["file_size"] = size; + j["file_name"] = std::string(filename.mb_str()); NetworkAgent* agent = wxGetApp().getAgent(); - } catch (...) {} + } + catch (...) {} update_title_dirty_status(); return wxID_YES; } -// BBS import model by model id +//BBS import model by model id void Plater::import_model_id(wxString download_info) { BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " download info: " << download_info; @@ -15443,135 +15406,155 @@ void Plater::import_model_id(wxString download_info) wxString filename; wxString separator = "&name="; - try { + try + { size_t namePos = download_info.Find(separator); if (namePos != wxString::npos) { download_url = download_info.Mid(0, namePos); - filename = download_info.Mid(namePos + separator.Length()); + filename = download_info.Mid(namePos + separator.Length()); - } else { + } + else { fs::path download_path = fs::path(download_origin_url.wx_str()); - download_url = download_origin_url; - filename = download_path.filename().string(); + download_url = download_origin_url; + filename = download_path.filename().string(); } - } catch (const std::exception&) { - // wxString sError = error.what(); + } + catch (const std::exception&) + { + //wxString sError = error.what(); } - bool download_ok = false; - int retry_count = 0; + bool download_ok = false; + int retry_count = 0; const int max_retries = 3; /* jump to 3D eidtor */ wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); /* prepare progress dialog */ - bool cont = true; + bool cont = true; bool cont_dlg = true; - bool cancel = false; + bool cancel = false; wxString msg; wxString dlg_title = _L("Importing Model"); int percent = 0; - ProgressDialog dlg(dlg_title, wxString(' ', 100) + "\n\n\n\n", - 100, // range - this, // parent - wxPD_CAN_ABORT | wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH); + ProgressDialog dlg(dlg_title, + wxString(' ', 100) + "\n\n\n\n", + 100, // range + this, // parent + wxPD_CAN_ABORT | + wxPD_APP_MODAL | + wxPD_AUTO_HIDE | + wxPD_SMOOTH); boost::filesystem::path target_path; - // reset params + //reset params p->project.reset(); /* prepare project and profile */ boost::thread import_thread = Slic3r::create_thread([&percent, &cont, &retry_count, &msg, &target_path, &download_ok, download_url, &filename] { - int res = 0; - std::string http_body; + // Orca: NetworkAgent is not needed and only prevents this from running +// NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); +// if (!m_agent) return; - msg = _L("Preparing 3MF file..."); + int res = 0; + std::string http_body; - // gets the number of files with the same name - std::vector vecFiles; - bool is_already_exist = false; + msg = _L("Preparing 3MF file..."); - target_path = fs::path(wxGetApp().app_config->get("download_path")); + //gets the number of files with the same name + std::vector vecFiles; + bool is_already_exist = false; - try { - vecFiles.clear(); - wxString extension = fs::path(filename.wx_str()).extension().c_str(); - // check file suffix - if (!extension.Contains(".3mf")) { - msg = _L("Download failed; unknown file format."); - return; + target_path = fs::path(wxGetApp().app_config->get("download_path")); + + try + { + vecFiles.clear(); + wxString extension = fs::path(filename.wx_str()).extension().c_str(); + + + //check file suffix + if (!extension.Contains(".3mf")) { + msg = _L("Download failed; unknown file format."); + return; + } + + auto name = filename.substr(0, filename.length() - extension.length() - 1); + + for (const auto& iter : boost::filesystem::directory_iterator(target_path)) + { + if (boost::filesystem::is_directory(iter.path())) + continue; + + wxString sFile = iter.path().filename().string().c_str(); + if (strstr(sFile.c_str(), name.c_str()) != NULL) { + vecFiles.push_back(sFile); } - auto name = filename.substr(0, filename.length() - extension.length() - 1); - - for (const auto& iter : boost::filesystem::directory_iterator(target_path)) { - if (boost::filesystem::is_directory(iter.path())) - continue; - - wxString sFile = iter.path().filename().string().c_str(); - if (strstr(sFile.c_str(), name.c_str()) != NULL) { - vecFiles.push_back(sFile); - } - - if (sFile == filename) - is_already_exist = true; - } - } catch (const std::exception&) { - // wxString sError = error.what(); + if (sFile == filename) is_already_exist = true; } + } + catch (const std::exception&) + { + //wxString sError = error.what(); + } - // update filename - if (is_already_exist && vecFiles.size() >= 1) { - wxString extension = fs::path(filename.wx_str()).extension().c_str(); - wxString name = filename.substr(0, filename.length() - extension.length()); - filename = wxString::Format("%s(%d)%s", name, vecFiles.size() + 1, extension).ToStdString(); - } + //update filename + if (is_already_exist && vecFiles.size() >= 1) { + wxString extension = fs::path(filename.wx_str()).extension().c_str(); + wxString name = filename.substr(0, filename.length() - extension.length()); + filename = wxString::Format("%s(%d)%s", name, vecFiles.size() + 1, extension).ToStdString(); + } - msg = _L("Downloading project..."); - // target_path = wxStandardPaths::Get().GetTempDir().utf8_str().data(); + msg = _L("Downloading project..."); - // target_path = wxGetApp().get_local_models_path().c_str(); - boost::uuids::uuid uuid = boost::uuids::random_generator()(); - std::string unique = to_string(uuid).substr(0, 6); + //target_path = wxStandardPaths::Get().GetTempDir().utf8_str().data(); - if (filename.empty()) { - filename = "untitled.3mf"; - } - // target_path /= (boost::format("%1%_%2%.3mf") % filename % unique).str(); - target_path /= fs::path(filename.wc_str()); + //target_path = wxGetApp().get_local_models_path().c_str(); + boost::uuids::uuid uuid = boost::uuids::random_generator()(); + std::string unique = to_string(uuid).substr(0, 6); - fs::path tmp_path = target_path; - tmp_path += format(".%1%", ".download"); + if (filename.empty()) { + filename = "untitled.3mf"; + } - auto filesize = 0; - bool size_limit = false; - auto http = Http::get(download_url.ToStdString()); + //target_path /= (boost::format("%1%_%2%.3mf") % filename % unique).str(); + target_path /= fs::path(filename.wc_str()); - while (cont && retry_count < max_retries) { - retry_count++; - http.on_progress([&percent, &cont, &msg, &filesize, &size_limit](Http::Progress progress, bool& cancel) { - if (!cont) - cancel = true; - if (progress.dltotal != 0) { - if (filesize == 0) { - filesize = progress.dltotal; - double megabytes = static_cast(progress.dltotal) / (1024 * 1024); - // The maximum size of a 3mf file is 500mb - if (megabytes > 500) { - cont = false; - size_limit = true; - } + fs::path tmp_path = target_path; + tmp_path += format(".%1%", ".download"); + + auto filesize = 0; + bool size_limit = false; + auto http = Http::get(download_url.ToStdString()); + + while (cont && retry_count < max_retries) { + retry_count++; + http.on_progress([&percent, &cont, &msg, &filesize, &size_limit](Http::Progress progress, bool& cancel) { + + if (!cont) cancel = true; + if (progress.dltotal != 0) { + + if (filesize == 0) { + filesize = progress.dltotal; + double megabytes = static_cast(progress.dltotal) / (1024 * 1024); + //The maximum size of a 3mf file is 500mb + if (megabytes > 500) { + cont = false; + size_limit = true; } - percent = progress.dlnow * 100 / progress.dltotal; } + percent = progress.dlnow * 100 / progress.dltotal; + } if (size_limit) { msg = _L("Download failed; File size exception."); @@ -15587,31 +15570,31 @@ void Plater::import_model_id(wxString download_info) http_status, error); - if (retry_count == max_retries) { - msg = _L("Importing to Orca Slicer failed. Please download the file and manually import it."); - cont = false; - } - }) - .on_complete([&cont, &download_ok, tmp_path, target_path](std::string body, unsigned /* http_status */) { + if (retry_count == max_retries) { + msg = _L("Importing to Orca Slicer failed. Please download the file and manually import it."); + cont = false; + } + }) + .on_complete([&cont, &download_ok, tmp_path, target_path](std::string body, unsigned /* http_status */) { fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); file.write(body.c_str(), body.size()); file.close(); fs::rename(tmp_path, target_path); - cont = false; + cont = false; download_ok = true; - }) - .perform_sync(); + }).perform_sync(); // for break while - // cont = false; - } - }); + //cont = false; + } + + }); while (cont && cont_dlg) { wxMilliSleep(50); cont_dlg = dlg.Update(percent, msg); if (!cont_dlg) { - cont = cont_dlg; + cont = cont_dlg; cancel = true; } @@ -15632,15 +15615,13 @@ void Plater::import_model_id(wxString download_info) BOOST_LOG_TRIVIAL(trace) << "import_model_id: target_path = " << target_path.string(); /* load project */ // Orca: If download is a zip file, treat it as if file has been drag and dropped on the plater - if (target_path.extension() == ".zip") { - wxArrayString arr; - arr.Add(from_path(target_path)); - this->load_files(arr); - } else + if (target_path.extension() == ".zip") + { wxArrayString arr; arr.Add(from_path(target_path)); this->load_files(arr); } + else this->load_project(from_path(target_path)); /*BBS set project info after load project, project info is reset in load project */ - // p->project.project_model_id = model_id; - // p->project.project_design_id = design_id; + //p->project.project_model_id = model_id; + //p->project.project_design_id = design_id; AppConfig* config = wxGetApp().app_config; if (config) { p->project.project_country_code = config->get_country_code(); @@ -15649,7 +15630,8 @@ void Plater::import_model_id(wxString download_info) // show save new project p->set_project_filename(target_path.wstring()); p->notification_manager->push_import_finished_notification(target_path.string(), target_path.parent_path().string(), false); - } else { + } + else { if (!msg.empty()) { MessageDialog msg_wingow(nullptr, msg, wxEmptyString, wxICON_WARNING | wxOK); msg_wingow.SetSize(wxSize(FromDIP(480), -1)); @@ -15658,8 +15640,11 @@ void Plater::import_model_id(wxString download_info) return; } } -// BBS download project by project id -void Plater::download_project(const wxString& project_id) { return; } +//BBS download project by project id +void Plater::download_project(const wxString& project_id) +{ + return; +} void Plater::request_model_download(wxString url) { @@ -15682,7 +15667,8 @@ bool Plater::up_to_date(bool saved, bool backup) Slic3r::clear_other_changes(backup); return p->up_to_date(saved, backup); } - return p->model.objects.empty() || (p->up_to_date(saved, backup) && !Slic3r::has_other_changes(backup)); + return p->model.objects.empty() || (p->up_to_date(saved, backup) && + !Slic3r::has_other_changes(backup)); } bool Plater::add_model(bool imperial_units, std::string fname) @@ -15697,12 +15683,13 @@ bool Plater::add_model(bool imperial_units, std::string fname) for (const auto& file : input_files) paths.emplace_back(into_path(file)); - } else { + } + else { paths.emplace_back(fname); } std::string snapshot_label; - assert(!paths.empty()); + assert(! paths.empty()); if (paths.size() == 1) { snapshot_label = "Import Object"; snapshot_label += ": "; @@ -15711,7 +15698,7 @@ bool Plater::add_model(bool imperial_units, std::string fname) snapshot_label = "Import Objects"; snapshot_label += ": "; snapshot_label += paths.front().filename().string().c_str(); - for (size_t i = 1; i < paths.size(); ++i) { + for (size_t i = 1; i < paths.size(); ++ i) { snapshot_label += ", "; snapshot_label += encode_path(paths[i].filename().string().c_str()); } @@ -15723,21 +15710,11 @@ bool Plater::add_model(bool imperial_units, std::string fname) auto loadfiles_type = LoadFilesType::NoFile; auto amf_files_count = get_3mf_file_count(paths); - if (paths.size() > 1 && amf_files_count < paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MFOther; - } - if (paths.size() > 1 && amf_files_count == paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MF; - } - if (paths.size() > 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::MultipleOther; - } - if (paths.size() == 1 && amf_files_count == 1) { - loadfiles_type = LoadFilesType::Single3MF; - }; - if (paths.size() == 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::SingleOther; - }; + if (paths.size() > 1 && amf_files_count < paths.size()) { loadfiles_type = LoadFilesType::Multiple3MFOther; } + if (paths.size() > 1 && amf_files_count == paths.size()) { loadfiles_type = LoadFilesType::Multiple3MF; } + if (paths.size() > 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::MultipleOther; } + if (paths.size() == 1 && amf_files_count == 1) { loadfiles_type = LoadFilesType::Single3MF; }; + if (paths.size() == 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::SingleOther; }; bool ask_multi = false; @@ -15745,10 +15722,10 @@ bool Plater::add_model(bool imperial_units, std::string fname) ask_multi = true; auto strategy = LoadStrategy::LoadModel; - if (imperial_units) - strategy = strategy | LoadStrategy::ImperialUnits; + if (imperial_units) strategy = strategy | LoadStrategy::ImperialUnits; const bool loaded = !load_files(paths, strategy, ask_multi).empty(); if (loaded) { + if (get_project_name() == _L("Untitled") && paths.size() > 0) { boost::filesystem::path full_path(paths[0].string()); p->set_project_name(from_u8(full_path.stem().string())); @@ -15764,16 +15741,22 @@ void Plater::calib_pa(const Calib_Params& params) const auto calib_pa_name = wxString::Format(L"Pressure Advance Test"); new_project(false, false, calib_pa_name); wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; print_config->set_key_value("overhang_reverse", new ConfigOptionBool(false)); print_config->set_key_value("precise_z_height", new ConfigOptionBool(false)); printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); switch (params.mode) { - case CalibMode::Calib_PA_Line: add_model(false, Slic3r::resources_dir() + "/calib/pressure_advance/pressure_advance_test.drc"); break; - case CalibMode::Calib_PA_Pattern: _calib_pa_pattern(params); break; - case CalibMode::Calib_PA_Tower: _calib_pa_tower(params); break; - default: break; + case CalibMode::Calib_PA_Line: + add_model(false, Slic3r::resources_dir() + "/calib/pressure_advance/pressure_advance_test.drc"); + break; + case CalibMode::Calib_PA_Pattern: + _calib_pa_pattern(params); + break; + case CalibMode::Calib_PA_Tower: + _calib_pa_tower(params); + break; + default: break; } p->background_process.fff_print()->set_calib_params(params); } @@ -15784,17 +15767,17 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) std::vector accels{params.accelerations}; std::vector object_idxs{}; /* Set common parameters */ - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; DynamicPrintConfig& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - double nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; + double nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); set_config_values(filament_config, "filament_retract_when_changing_layer", false); set_config_values(filament_config, "filament_wipe", false); set_config_values(printer_config, "wipe", false); set_config_values(printer_config, "retract_when_changing_layer", false); printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool(false)); - // Orca: find acceleration to use in the test + //Orca: find acceleration to use in the test auto accel = print_config.get_abs_value_at("outer_wall_acceleration", params.extruder_id); // get the outer wall acceleration if (accel == 0) // if outer wall accel isnt defined, fall back to inner wall accel accel = print_config.get_abs_value_at("inner_wall_acceleration", params.extruder_id); @@ -15804,27 +15787,26 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) // is set to the travel accel before printing the pattern. if (accels.empty()) { accels.assign({accel}); - const auto msg{_L("INFO:") + "\n" + _L("No accelerations provided for calibration. Use default acceleration value ") + - std::to_string(long(accel)) + _L(u8"mm/s²")}; + const auto msg{_L("INFO:") + "\n" + + _L("No accelerations provided for calibration. Use default acceleration value ") + std::to_string(long(accel)) + _L(u8"mm/s²")}; get_notification_manager()->push_notification(msg.utf8_string()); } else { // set max acceleration in case of batch mode to get correct test pattern size accel = *std::max_element(accels.begin(), accels.end()); } set_config_values(&print_config, "outer_wall_acceleration", accel); - print_config.set_key_value("print_sequence", new ConfigOptionEnum(PrintSequence::ByLayer)); - - // Orca: find jerk value to use in the test - if (!has_junction_deviation(printer_config) && - print_config.get_abs_value_at("default_jerk", params.extruder_id) > 0) { // we have set a jerk value + print_config.set_key_value( "print_sequence", new ConfigOptionEnum(PrintSequence::ByLayer)); + + //Orca: find jerk value to use in the test + if(!has_junction_deviation(printer_config) && print_config.get_abs_value_at("default_jerk", params.extruder_id) > 0){ // we have set a jerk value auto jerk = print_config.get_abs_value_at("outer_wall_jerk", params.extruder_id); // get outer wall jerk if (jerk == 0) // if outer wall jerk is not defined, get inner wall jerk jerk = print_config.get_abs_value_at("inner_wall_jerk", params.extruder_id); if (jerk == 0) // if inner wall jerk is not defined, get the default jerk jerk = print_config.get_abs_value_at("default_jerk", params.extruder_id); - - // Orca: Set jerk values. Again first layer jerk should not matter as it is reset to the travel jerk before the - // first PA pattern is printed. + + //Orca: Set jerk values. Again first layer jerk should not matter as it is reset to the travel jerk before the + // first PA pattern is printed. set_config_values(&print_config, "default_jerk", jerk); set_config_values(&print_config, "outer_wall_jerk", jerk); set_config_values(&print_config, "inner_wall_jerk", jerk); @@ -15833,38 +15815,45 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) set_config_values(&print_config, "travel_jerk", jerk); } - if (has_junction_deviation(printer_config)) { + if (has_junction_deviation(printer_config)){ set_config_values(&print_config, "default_junction_deviation", 0); } - + for (const auto& opt : SuggestedConfigCalibPAPattern().floats_pairs) { set_config_values(&print_config, opt.first, opt.second[0]); } for (const auto& opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { - print_config.set_key_value(opt.first, new ConfigOptionFloatOrPercent(nozzle_diameter * opt.second / 100, false)); + print_config.set_key_value( + opt.first, + new ConfigOptionFloatOrPercent(nozzle_diameter * opt.second / 100, false) + ); } for (const auto& opt : SuggestedConfigCalibPAPattern().int_pairs) { - print_config.set_key_value(opt.first, new ConfigOptionInt(opt.second)); + print_config.set_key_value( + opt.first, + new ConfigOptionInt(opt.second) + ); } print_config.set_key_value(SuggestedConfigCalibPAPattern().brim_pair.first, - new ConfigOptionEnum(SuggestedConfigCalibPAPattern().brim_pair.second)); + new ConfigOptionEnum(SuggestedConfigCalibPAPattern().brim_pair.second)); print_config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); // Orca: Set the outer wall speed to the optimal speed for the test, cap it with max volumetric speed if (speeds.empty()) { // TODO: per-variant cap - double speed = CalibPressureAdvance::find_optimal_PA_speed(wxGetApp().preset_bundle->full_config(), - print_config.get_abs_value("line_width", nozzle_diameter), - print_config.get_abs_value("layer_height"), 0, 0); + double speed = CalibPressureAdvance::find_optimal_PA_speed( + wxGetApp().preset_bundle->full_config(), + print_config.get_abs_value("line_width", nozzle_diameter), + print_config.get_abs_value("layer_height"), 0, 0); set_config_values(&print_config, "outer_wall_speed", speed); speeds.assign({speed}); - const auto msg{_L("INFO:") + "\n" + _L("No speeds provided for calibration. Use default optimal speed ") + - std::to_string(long(speed)) + _L("mm/s")}; + const auto msg{_L("INFO:") + "\n" + + _L("No speeds provided for calibration. Use default optimal speed ") + std::to_string(long(speed)) + _L("mm/s")}; get_notification_manager()->push_notification(msg.utf8_string()); } else if (speeds.size() == 1) { // If we have single value provided, set speed using global configuration. @@ -15880,15 +15869,21 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); const DynamicPrintConfig full_config = wxGetApp().preset_bundle->full_config(); - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - const bool is_bbl_machine = preset_bundle->is_bbl_vendor(); - auto cur_plate = get_partplate_list().get_plate(0); + PresetBundle* preset_bundle = wxGetApp().preset_bundle; + const bool is_bbl_machine = preset_bundle->is_bbl_vendor(); + auto cur_plate = get_partplate_list().get_plate(0); // add "handle" cube sidebar().obj_list()->load_generic_subobject("Cube", ModelVolumeType::INVALID); - auto* cube = model().objects[0]; + auto *cube = model().objects[0]; - CalibPressureAdvancePattern pa_pattern(params, full_config, is_bbl_machine, *cube, cur_plate->get_origin()); + CalibPressureAdvancePattern pa_pattern( + params, + full_config, + is_bbl_machine, + *cube, + cur_plate->get_origin() + ); /* Having PA pattern configured, we could make a set of polygons resembling N test patterns. * We'll arrange this set of polygons, so we would know position of each test pattern and @@ -15898,7 +15893,8 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) * as a reference for objects arrangement. Polygon is slightly oversized to add spaces between patterns. * That arrangement will be used to place 'handle cubes' for each test. */ auto cube_bb = cube->raw_bounding_box(); - cube->scale((pa_pattern.print_size_x() + 4) / cube_bb.size().x(), (pa_pattern.print_size_y() + 4) / cube_bb.size().y(), + cube->scale((pa_pattern.print_size_x() + 4) / cube_bb.size().x(), + (pa_pattern.print_size_y() + 4) / cube_bb.size().y(), pa_pattern.max_layer_z() / cube_bb.size().z()); arrangement::ArrangePolygons arranged_items; @@ -15906,7 +15902,7 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) arrangement::ArrangeParams ap; Points bedpts = arrangement::get_shrink_bedpts(&full_config, ap); - for (size_t i = 0; i < speeds.size() * accels.size(); i++) { + for(size_t i = 0; i < speeds.size() * accels.size(); i++) { arrangement::ArrangePolygon p; cube->instances[0]->get_arrange_polygon(&p); p.bed_idx = 0; @@ -15918,23 +15914,24 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) /* scale cube back to the size of test pattern 'handle' */ cube_bb = cube->raw_bounding_box(); - cube->scale(pa_pattern.handle_xy_size() / cube_bb.size().x(), pa_pattern.handle_xy_size() / cube_bb.size().y(), + cube->scale(pa_pattern.handle_xy_size() / cube_bb.size().x(), + pa_pattern.handle_xy_size() / cube_bb.size().y(), pa_pattern.max_layer_z() / cube_bb.size().z()); /* Set speed and acceleration on per-object basis and arrange anchor object on the plates. * Test gcode will be genecated during plate slicing */ - for (size_t test_idx = 0; test_idx < arranged_items.size(); test_idx++) { - const auto& ai = arranged_items[test_idx]; + for(size_t test_idx = 0; test_idx < arranged_items.size(); test_idx++) { + const auto &ai = arranged_items[test_idx]; size_t plate_idx = arranged_items[test_idx].bed_idx; - auto tspd = speeds[test_idx % speeds.size()]; - auto tacc = accels[test_idx / speeds.size()]; + auto tspd = speeds[test_idx % speeds.size()]; + auto tacc = accels[test_idx / speeds.size()]; /* make an own copy of anchor cube for each test */ - auto obj = test_idx == 0 ? cube : model().add_object(*cube); + auto obj = test_idx == 0 ? cube : model().add_object(*cube); auto obj_idx = std::distance(model().objects.begin(), std::find(model().objects.begin(), model().objects.end(), obj)); obj->name.assign(std::string("pa_pattern_") + std::to_string(int(tspd)) + std::string("_") + std::to_string(int(tacc))); - auto& obj_config = obj->config; + auto &obj_config = obj->config; if (speeds.size() > 1) obj_config.set_key_value("outer_wall_speed", new ConfigOptionFloatsNullable(1, tspd)); if (accels.size() > 1) @@ -15948,7 +15945,9 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) object_idxs.emplace_back(obj_idx); get_partplate_list().add_to_plate(obj_idx, 0, plate_idx); - const Vec3d obj_offset{unscale(ai.translation(X)), unscale(ai.translation(Y)), 0}; + const Vec3d obj_offset{unscale(ai.translation(X)), + unscale(ai.translation(Y)), + 0}; obj->instances[0]->set_offset(cur_plate->get_origin() + obj_offset + pa_pattern.handle_pos_offset()); obj->ensure_on_bed(); @@ -15975,23 +15974,27 @@ void Plater::_calib_pa_pattern_gen_gcode() * We'll store gcode for all tests on a single plate here. Once the plate handling is done, * all the g-codes will be merged into a single one on per-layer basis */ std::vector mgc; - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; /* iterate over all cubes on current plate and generate gcode for them */ for (auto obj : cur_plate->get_objects_on_this_plate()) { - auto gcode = model().calib_pa_pattern->generate_custom_gcodes(preset_bundle->full_config(), preset_bundle->is_bbl_vendor(), *obj, - cur_plate->get_origin()); + auto gcode = model().calib_pa_pattern->generate_custom_gcodes( + preset_bundle->full_config(), + preset_bundle->is_bbl_vendor(), + *obj, + cur_plate->get_origin() + ); mgc.emplace_back(gcode); } // move first item into model custom gcode - auto& pcgc = model().plates_custom_gcodes[get_partplate_list().get_curr_plate_index()]; - pcgc = std::move(mgc[0]); + auto &pcgc = model().plates_custom_gcodes[get_partplate_list().get_curr_plate_index()]; + pcgc = std::move(mgc[0]); mgc.erase(mgc.begin()); // concat layer gcodes for each test for (size_t i = 0; i < pcgc.gcodes.size(); i++) { - for (auto& gc : mgc) { + for (auto &gc : mgc) { pcgc.gcodes[i].extra += gc.gcodes[i].extra; } } @@ -16000,35 +16003,35 @@ void Plater::_calib_pa_pattern_gen_gcode() void Plater::cut_horizontal(size_t obj_idx, size_t instance_idx, double z, ModelObjectCutAttributes attributes) { wxCHECK_RET(obj_idx < p->model.objects.size(), "obj_idx out of bounds"); - auto* object = p->model.objects[obj_idx]; + auto *object = p->model.objects[obj_idx]; wxCHECK_RET(instance_idx < object->instances.size(), "instance_idx out of bounds"); - if (!attributes.has(ModelObjectCutAttribute::KeepUpper) && !attributes.has(ModelObjectCutAttribute::KeepLower)) + if (! attributes.has(ModelObjectCutAttribute::KeepUpper) && ! attributes.has(ModelObjectCutAttribute::KeepLower)) return; wxBusyCursor wait; const Vec3d instance_offset = object->instances[instance_idx]->get_offset(); - Cut cut(object, instance_idx, Geometry::translation_transform(z * Vec3d::UnitZ() - instance_offset), attributes); - const auto new_objects = cut.perform_with_plane(); + Cut cut(object, instance_idx, Geometry::translation_transform(z * Vec3d::UnitZ() - instance_offset), attributes); + const auto new_objects = cut.perform_with_plane(); apply_cut_object_to_model(obj_idx, new_objects); } -void Plater::_calib_pa_tower(const Calib_Params& params) -{ +void Plater::_calib_pa_tower(const Calib_Params& params) { if (!add_model(false, Slic3r::resources_dir() + "/calib/pressure_advance/tower_with_seam.drc")) return; - auto& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; const double nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); print_config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); - filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{1.0f}); + filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{ 1.0f }); + auto& obj_cfg = model().objects[0]->config; @@ -16048,7 +16051,7 @@ void Plater::_calib_pa_tower(const Calib_Params& params) obj_cfg.set_key_value("seam_slope_type", new ConfigOptionEnum(SeamScarfType::None)); print_config.set_key_value("max_volumetric_extrusion_rate_slope", new ConfigOptionFloat(0)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINTER)->update_dirty(); @@ -16057,7 +16060,7 @@ void Plater::_calib_pa_tower(const Calib_Params& params) wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); auto new_height = std::ceil((params.end - params.start) / params.step) + 1; - auto obj_bb = model().objects[0]->bounding_box_exact(); + auto obj_bb = model().objects[0]->bounding_box_exact(); if (new_height < obj_bb.size().z()) { cut_horizontal(0, 0, new_height, ModelObjectCutAttribute::KeepLower); } @@ -16065,8 +16068,7 @@ void Plater::_calib_pa_tower(const Calib_Params& params) _calib_pa_select_added_objects(); } -void Plater::_calib_pa_select_added_objects() -{ +void Plater::_calib_pa_select_added_objects() { // update printable state for new volumes on canvas3D wxGetApp().plater()->canvas3D()->update_instance_printable_state_for_objects({0}); @@ -16088,28 +16090,27 @@ void Plater::_calib_pa_select_added_objects() // ORCA: Add pattern parameter void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, int pass, InfillPattern pattern) { - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; /// --- scale --- // model is created for a 0.4 nozzle, scale z with nozzle size. const ConfigOptionFloats* nozzle_diameter_config = printer_config->option("nozzle_diameter"); - std::vector extruder_types = printer_config->option("extruder_type")->values; - std::vector nozzle_volume_types = - wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")->values; + std::vector extruder_types = printer_config->option("extruder_type")->values; + std::vector nozzle_volume_types = wxGetApp().preset_bundle->project_config.option("nozzle_volume_type")->values; assert(nozzle_diameter_config->values.size() > 0); float nozzle_diameter = nozzle_diameter_config->values[0]; - float xyScale = nozzle_diameter / 0.6; - // scale z to have 10 layers - // 2 bottom, 5 top, 3 sparse infill + float xyScale = nozzle_diameter / 0.6; + //scale z to have 10 layers + // 2 bottom, 5 top, 3 sparse infill double first_layer_height = print_config->option("initial_layer_print_height")->value; - double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle - first_layer_height = std::max(first_layer_height, layer_height); + double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle + first_layer_height = std::max(first_layer_height, layer_height); - const auto canvas = wxGetApp().plater()->canvas3D(); - auto& selection = canvas->get_selection(); + const auto canvas = wxGetApp().plater()->canvas3D(); + auto& selection = canvas->get_selection(); selection.setup_cache(); TransformationType transformation_type; transformation_type.set_relative(); @@ -16124,7 +16125,7 @@ void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, i auto cur_flowrate = filament_config->option("filament_flow_ratio")->get_at(0); // TODO: per-filament param std::vector internal_solid_speeds = generate_max_speed_parameter_value("internal_solid_infill_speed", linear, pass); - std::vector top_surface_speeds = generate_max_speed_parameter_value("top_surface_speed", linear, pass); + std::vector top_surface_speeds = generate_max_speed_parameter_value("top_surface_speed", linear, pass); // adjust parameters for (auto _obj : objects) { @@ -16135,7 +16136,7 @@ void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, i _obj->config.set_key_value("enable_extra_bridge_layer", new ConfigOptionEnum(eblDisabled)); _obj->config.set_key_value("internal_bridge_density", new ConfigOptionPercent(100)); _obj->config.set_key_value("sparse_infill_density", new ConfigOptionPercent(35)); - _obj->config.set_key_value("min_width_top_surface", new ConfigOptionFloatOrPercent(100, true)); + _obj->config.set_key_value("min_width_top_surface", new ConfigOptionFloatOrPercent(100,true)); _obj->config.set_key_value("bottom_shell_layers", new ConfigOptionInt(2)); _obj->config.set_key_value("top_shell_layers", new ConfigOptionInt(5)); _obj->config.set_key_value("top_shell_thickness", new ConfigOptionFloat(0)); @@ -16150,8 +16151,7 @@ void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, i _obj->config.set_key_value("top_solid_infill_flow_ratio", new ConfigOptionFloat(1.0f)); _obj->config.set_key_value("infill_direction", new ConfigOptionFloat(45)); _obj->config.set_key_value("solid_infill_direction", new ConfigOptionFloat(135)); - _obj->config.set_key_value("center_of_surface_pattern", - new ConfigOptionEnum(CenterOfSurfacePattern::Each_Surface)); + _obj->config.set_key_value("center_of_surface_pattern", new ConfigOptionEnum(CenterOfSurfacePattern::Each_Surface)); _obj->config.set_key_value("separated_infills", new ConfigOptionBool(false)); _obj->config.set_key_value("align_infill_direction_to_model", new ConfigOptionBool(true)); _obj->config.set_key_value("ironing_type", new ConfigOptionEnum(IroningType::NoIroning)); @@ -16176,18 +16176,20 @@ void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, i obj_name[0] = '-'; // Orca: force set locale to C to avoid parsing error const std::string _loc = std::setlocale(LC_NUMERIC, nullptr); - std::setlocale(LC_NUMERIC, "C"); - auto modifier = 1.0f; + std::setlocale(LC_NUMERIC,"C"); + auto modifier = 1.0f; try { modifier = stof(obj_name); - } catch (...) {} + } catch (...) { + } // restore locale std::setlocale(LC_NUMERIC, _loc.c_str()); - if (linear) - _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat((cur_flowrate + modifier) / cur_flowrate)); + if(linear) + _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat((cur_flowrate + modifier)/cur_flowrate)); else - _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat(1.0f + modifier / 100.f)); + _obj->config.set_key_value("print_flow_ratio", new ConfigOptionFloat(1.0f + modifier/100.f)); + } print_config->set_key_value("layer_height", new ConfigOptionFloat(layer_height)); @@ -16205,8 +16207,7 @@ void adjust_settings_for_flowrate_calib(ModelObjectPtrs& objects, bool linear, i } // ORCA: Add pattern parameter -void Plater::calib_flowrate(bool is_linear, int pass, InfillPattern pattern) -{ +void Plater::calib_flowrate(bool is_linear, int pass, InfillPattern pattern) { if (pass != 1 && pass != 2) return; wxString calib_name; @@ -16249,28 +16250,27 @@ void Plater::calib_flowrate(bool is_linear, int pass, InfillPattern pattern) changed_objects(object_idx); } -void Plater::calib_temp(const Calib_Params& params) -{ + +void Plater::calib_temp(const Calib_Params& params) { constexpr double base_temp_tower_nozzle_diameter = 0.4; - constexpr double base_temp_tower_block_height = 10.0; - constexpr int base_temp_tower_temp_step = 5; + constexpr double base_temp_tower_block_height = 10.0; + constexpr int base_temp_tower_temp_step = 5; const auto calib_temp_name = wxString::Format(L"Nozzle temperature test"); new_project(false, false, calib_temp_name); wxGetApp().mainframe->select_tab(TAB_ID_PREPARE); - if (params.mode != CalibMode::Calib_Temp_Tower) - return; - + if (params.mode != CalibMode::Calib_Temp_Tower) return; + if (!add_model(false, Slic3r::resources_dir() + "/calib/temperature_tower/temperature_tower.drc")) return; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; - auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - auto start_temp = lround(params.start); + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; + auto start_temp = lround(params.start); const ConfigOptionFloats* nozzle_diameter_config = printer_config->option("nozzle_diameter"); - size_t nozzle_id = static_cast(std::max(params.extruder_id, 0)); - double nozzle_diameter = base_temp_tower_nozzle_diameter; + size_t nozzle_id = static_cast(std::max(params.extruder_id, 0)); + double nozzle_diameter = base_temp_tower_nozzle_diameter; if (nozzle_diameter_config && !nozzle_diameter_config->values.empty()) { - nozzle_id = std::min(nozzle_id, nozzle_diameter_config->values.size() - 1); + nozzle_id = std::min(nozzle_id, nozzle_diameter_config->values.size() - 1); nozzle_diameter = nozzle_diameter_config->values[nozzle_id]; } if (nozzle_diameter <= 0.0) @@ -16280,7 +16280,7 @@ void Plater::calib_temp(const Calib_Params& params) const double block_height = base_temp_tower_block_height; // cut upper - auto obj_bb = model().objects[0]->bounding_box_exact(); + auto obj_bb = model().objects[0]->bounding_box_exact(); auto block_count = lround((500 - params.end) / base_temp_tower_temp_step + 1); if (block_count > 0) { // subtract EPSILON offset to avoid cutting at the exact location where the flat surface is @@ -16291,7 +16291,7 @@ void Plater::calib_temp(const Calib_Params& params) } // cut bottom - obj_bb = model().objects[0]->bounding_box_exact(); + obj_bb = model().objects[0]->bounding_box_exact(); block_count = lround((500 - params.start) / base_temp_tower_temp_step); if (block_count > 0) { auto new_height = block_count * block_height + EPSILON; @@ -16310,7 +16310,7 @@ void Plater::calib_temp(const Calib_Params& params) set_config_values(filament_config, "nozzle_temperature", (int) start_temp); // When resizing is disabled the 0.4 mm / 0.2 mm reference model is printed as-is (preset layer height kept). if (params.nozzle_based_resize) - model().objects[0]->config.set_key_value("layer_height", new ConfigOptionFloat(nozzle_diameter / 2)); + model().objects[0]->config.set_key_value("layer_height", new ConfigOptionFloat(nozzle_diameter/2)); model().objects[0]->config.set_key_value("brim_type", new ConfigOptionEnum(btOuterOnly)); model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(5.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); @@ -16322,9 +16322,10 @@ void Plater::calib_temp(const Calib_Params& params) auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; print_config->set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); if (params.nozzle_based_resize) - print_config->set_key_value("initial_layer_print_height", new ConfigOptionFloat(nozzle_diameter / 2)); + print_config->set_key_value("initial_layer_print_height", new ConfigOptionFloat(nozzle_diameter/2)); - changed_objects({0}); + + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINT)->reload_config(); @@ -16343,23 +16344,23 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) if (!add_model(false, Slic3r::resources_dir() + "/calib/volumetric_speed/SpeedTestStructure.drc")) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; - auto obj = model().objects[0]; - auto& obj_cfg = obj->config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto obj = model().objects[0]; + auto& obj_cfg = obj->config; - auto bed_shape = printer_config->option("printable_area")->values; + auto bed_shape = printer_config->option("printable_area")->values; BoundingBoxf bed_ext = get_extents(bed_shape); - auto scale_obj = (bed_ext.size().x() - 10) / obj->bounding_box_exact().size().x(); + auto scale_obj = (bed_ext.size().x() - 10) / obj->bounding_box_exact().size().x(); if (scale_obj < 1.0) obj->scale(scale_obj, 1, 1); const ConfigOptionFloats* nozzle_diameter_config = printer_config->option("nozzle_diameter"); assert(nozzle_diameter_config->values.size() > 0); double nozzle_diameter = nozzle_diameter_config->values[0]; - double line_width = nozzle_diameter * 1.75; - double layer_height = nozzle_diameter * 0.8; + double line_width = nozzle_diameter * 1.75; + double layer_height = nozzle_diameter * 0.8; auto max_lh = printer_config->option("max_layer_height"); for (size_t i = 0; i < max_lh->values.size(); ++i) { @@ -16368,8 +16369,7 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) } const double filament_max_volumetric_speed = filament_config->option("filament_max_volumetric_speed")->get_at(0); - set_config_values(filament_config, "filament_max_volumetric_speed", - std::max(filament_max_volumetric_speed, 200.0)); + set_config_values(filament_config, "filament_max_volumetric_speed", std::max(filament_max_volumetric_speed, 200.0)); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); obj_cfg.set_key_value("enable_overhang_speed", new ConfigOptionBoolsNullable(1, false)); @@ -16389,7 +16389,7 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) print_config->set_key_value("max_volumetric_extrusion_rate_slope", new ConfigOptionFloat(0)); print_config->set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINTER)->update_dirty(); @@ -16405,8 +16405,7 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) } auto new_params = params; - auto mm3_per_mm = Flow(line_width, layer_height, nozzle_diameter).mm3_per_mm() * - filament_config->option("filament_flow_ratio")->get_at(0); + auto mm3_per_mm = Flow(line_width, layer_height, nozzle_diameter).mm3_per_mm() * filament_config->option("filament_flow_ratio")->get_at(0); new_params.end = params.end / mm3_per_mm; new_params.start = params.start / mm3_per_mm; new_params.step = params.step / mm3_per_mm; @@ -16425,10 +16424,10 @@ void Plater::calib_retraction(const Calib_Params& params) if (!add_model(false, Slic3r::resources_dir() + "/calib/retraction/retraction_tower.drc")) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; - auto obj = model().objects[0]; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto obj = model().objects[0]; print_config->set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); @@ -16444,8 +16443,7 @@ void Plater::calib_retraction(const Calib_Params& params) auto max_lh = printer_config->option("max_layer_height"); for (size_t i = 0; i < max_lh->values.size(); ++i) { - if (max_lh->values[i] < layer_height) - max_lh->values[i] = layer_height; + if (max_lh->values[i] < layer_height) max_lh->values[i] = layer_height; } printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); @@ -16462,7 +16460,8 @@ void Plater::calib_retraction(const Calib_Params& params) obj->config.set_key_value("overhang_reverse", new ConfigOptionBool(false)); obj->config.set_key_value("precise_z_height", new ConfigOptionBool(false)); - changed_objects({0}); + + changed_objects({ 0 }); // cut upper auto obj_bb = obj->bounding_box_exact(); @@ -16484,15 +16483,15 @@ void Plater::calib_VFA(const Calib_Params& params) if (!add_model(false, Slic3r::resources_dir() + "/calib/vfa/vfa.drc")) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; const ConfigOptionFloats* nozzle_diameter_config = printer_config->option("nozzle_diameter"); - size_t nozzle_id = static_cast(std::max(params.extruder_id, 0)); - double nozzle_diameter = vfa_base_nozzle_diameter; + size_t nozzle_id = static_cast(std::max(params.extruder_id, 0)); + double nozzle_diameter = vfa_base_nozzle_diameter; if (nozzle_diameter_config && !nozzle_diameter_config->values.empty()) { - nozzle_id = std::min(nozzle_id, nozzle_diameter_config->values.size() - 1); + nozzle_id = std::min(nozzle_id, nozzle_diameter_config->values.size() - 1); nozzle_diameter = nozzle_diameter_config->values[nozzle_id]; } if (nozzle_diameter <= 0.0) @@ -16524,7 +16523,7 @@ void Plater::calib_VFA(const Calib_Params& params) model().objects[0]->ensure_on_bed(); printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); - filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); + filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); set_config_values(print_config, "enable_overhang_speed", false); print_config->set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); print_config->set_key_value("wall_loops", new ConfigOptionInt(1)); @@ -16544,7 +16543,7 @@ void Plater::calib_VFA(const Calib_Params& params) model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(3.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_ui_from_settings(); @@ -16552,7 +16551,7 @@ void Plater::calib_VFA(const Calib_Params& params) // Pass the resolved layer height on (only meaningful when resized). GCode's VFA stepping is layer-based, so // it does not require it, but keep it consistent with the geometry. - Calib_Params calib_params = params; + Calib_Params calib_params = params; calib_params.vfa_layer_height = params.nozzle_based_resize ? layer_height : 0.0; p->background_process.fff_print()->set_calib_params(calib_params); } @@ -16565,31 +16564,20 @@ void Plater::calib_input_shaping_freq(const Calib_Params& params) if (params.mode != CalibMode::Calib_Input_shaping_freq) return; - if (!add_model(false, Slic3r::resources_dir() + (params.test_model < 1 ? "/calib/input_shaping/ringing_tower.drc" : - "/calib/input_shaping/fast_tower_test.drc"))) + if (!add_model(false, Slic3r::resources_dir() + (params.test_model < 1 ? "/calib/input_shaping/ringing_tower.drc" : "/calib/input_shaping/fast_tower_test.drc"))) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; const auto gcode_flavor_option = printer_config->option>("gcode_flavor"); if (has_junction_deviation(printer_config)) { - printer_config - ->set_key_value("machine_max_junction_deviation", - new ConfigOptionFloats{ - (std::max(printer_config->option("machine_max_junction_deviation")->values.front(), - 0.25))}); + printer_config->set_key_value("machine_max_junction_deviation", new ConfigOptionFloats {(std::max(printer_config->option("machine_max_junction_deviation")->values.front(), 0.25))}); set_config_values(print_config, "default_junction_deviation", 0); } else { const double jerk_value = (gcode_flavor_option && gcode_flavor_option->value == GCodeFlavor::gcfKlipper) ? 5.0 : 10.0; - printer_config->set_key_value("machine_max_jerk_x", - new ConfigOptionFloats{ - std::max(printer_config->option("machine_max_jerk_x")->values.front(), - jerk_value)}); - printer_config->set_key_value("machine_max_jerk_y", - new ConfigOptionFloats{ - std::max(printer_config->option("machine_max_jerk_y")->values.front(), - jerk_value)}); + printer_config->set_key_value("machine_max_jerk_x", new ConfigOptionFloats{std::max(printer_config->option("machine_max_jerk_x")->values.front(), jerk_value)}); + printer_config->set_key_value("machine_max_jerk_y", new ConfigOptionFloats{std::max(printer_config->option("machine_max_jerk_y")->values.front(), jerk_value)}); set_config_values(print_config, "default_jerk", 0); } @@ -16601,8 +16589,8 @@ void Plater::calib_input_shaping_freq(const Calib_Params& params) printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); printer_config->set_key_value("input_shaping_emit", new ConfigOptionBool{false}); - filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); - filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats{0.0}); + filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); + filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false}); print_config->set_key_value("layer_height", new ConfigOptionFloat(0.2)); set_config_values(print_config, "enable_overhang_speed", false); @@ -16615,8 +16603,7 @@ void Plater::calib_input_shaping_freq(const Calib_Params& params) print_config->set_key_value("spiral_mode", new ConfigOptionBool(true)); print_config->set_key_value("spiral_mode_smooth", new ConfigOptionBool(false)); print_config->set_key_value("bottom_surface_pattern", new ConfigOptionEnum(ipRectilinear)); - const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), - printer_config->option("machine_max_speed_y")->get_at(0)); + const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), printer_config->option("machine_max_speed_y")->get_at(0)); const double machine_max_acceleration = printer_config->option("machine_max_acceleration_extruding")->get_at(0); set_config_values(print_config, "outer_wall_speed", machine_max_speed); set_config_values(print_config, "default_acceleration", machine_max_acceleration); @@ -16626,7 +16613,7 @@ void Plater::calib_input_shaping_freq(const Calib_Params& params) model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(3.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_ui_from_settings(); @@ -16643,31 +16630,20 @@ void Plater::calib_input_shaping_damp(const Calib_Params& params) if (params.mode != CalibMode::Calib_Input_shaping_damp) return; - if (!add_model(false, Slic3r::resources_dir() + (params.test_model < 1 ? "/calib/input_shaping/ringing_tower.drc" : - "/calib/input_shaping/fast_tower_test.drc"))) + if (!add_model(false, Slic3r::resources_dir() + (params.test_model < 1 ? "/calib/input_shaping/ringing_tower.drc" : "/calib/input_shaping/fast_tower_test.drc"))) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; const auto gcode_flavor_option = printer_config->option>("gcode_flavor"); if (has_junction_deviation(printer_config)) { - printer_config - ->set_key_value("machine_max_junction_deviation", - new ConfigOptionFloats{ - (std::max(printer_config->option("machine_max_junction_deviation")->values.front(), - 0.25))}); + printer_config->set_key_value("machine_max_junction_deviation", new ConfigOptionFloats {(std::max(printer_config->option("machine_max_junction_deviation")->values.front(), 0.25))}); set_config_values(print_config, "default_junction_deviation", 0); } else { const double jerk_value = (gcode_flavor_option && gcode_flavor_option->value == GCodeFlavor::gcfKlipper) ? 5.0 : 10.0; - printer_config->set_key_value("machine_max_jerk_x", - new ConfigOptionFloats{ - std::max(printer_config->option("machine_max_jerk_x")->values.front(), - jerk_value)}); - printer_config->set_key_value("machine_max_jerk_y", - new ConfigOptionFloats{ - std::max(printer_config->option("machine_max_jerk_y")->values.front(), - jerk_value)}); + printer_config->set_key_value("machine_max_jerk_x", new ConfigOptionFloats{std::max(printer_config->option("machine_max_jerk_x")->values.front(), jerk_value)}); + printer_config->set_key_value("machine_max_jerk_y", new ConfigOptionFloats{std::max(printer_config->option("machine_max_jerk_y")->values.front(), jerk_value)}); set_config_values(print_config, "default_jerk", 0); } @@ -16679,8 +16655,8 @@ void Plater::calib_input_shaping_damp(const Calib_Params& params) printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); printer_config->set_key_value("input_shaping_emit", new ConfigOptionBool{false}); - filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); - filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats{0.0}); + filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); + filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false}); set_config_values(print_config, "enable_overhang_speed", false); print_config->set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); @@ -16692,8 +16668,7 @@ void Plater::calib_input_shaping_damp(const Calib_Params& params) print_config->set_key_value("spiral_mode", new ConfigOptionBool(true)); print_config->set_key_value("spiral_mode_smooth", new ConfigOptionBool(false)); print_config->set_key_value("bottom_surface_pattern", new ConfigOptionEnum(ipRectilinear)); - const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), - printer_config->option("machine_max_speed_y")->get_at(0)); + const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), printer_config->option("machine_max_speed_y")->get_at(0)); const double machine_max_acceleration = printer_config->option("machine_max_acceleration_extruding")->get_at(0); set_config_values(print_config, "outer_wall_speed", machine_max_speed); set_config_values(print_config, "default_acceleration", machine_max_acceleration); @@ -16703,7 +16678,7 @@ void Plater::calib_input_shaping_damp(const Calib_Params& params) model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(3.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_ui_from_settings(); @@ -16720,12 +16695,12 @@ void Plater::Calib_Cornering(const Calib_Params& params) if (params.mode != CalibMode::Calib_Cornering) return; - const std::string cornering_model_path = params.test_model == 0 ? "/calib/input_shaping/ringing_tower.drc" : - (params.test_model == 1 ? "/calib/input_shaping/fast_tower_test.drc" : - "/calib/cornering/SCV-V2.drc"); + const std::string cornering_model_path = params.test_model == 0 + ? "/calib/input_shaping/ringing_tower.drc" + : (params.test_model == 1 ? "/calib/input_shaping/fast_tower_test.drc" : "/calib/cornering/SCV-V2.drc"); if (!add_model(false, Slic3r::resources_dir() + cornering_model_path)) return; - auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; @@ -16747,8 +16722,8 @@ void Plater::Calib_Cornering(const Calib_Params& params) printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); printer_config->set_key_value("input_shaping_emit", new ConfigOptionBool{true}); printer_config->set_key_value("input_shaping_type", new ConfigOptionEnum(InputShaperType::Disable)); - filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); - filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats{0.0}); + filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); + filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false}); const double filament_max_volumetric_speed = filament_config->option("filament_max_volumetric_speed")->get_at(0); filament_config->set_key_value("filament_max_volumetric_speed", new ConfigOptionFloats{std::max(filament_max_volumetric_speed, 200.0)}); @@ -16762,8 +16737,7 @@ void Plater::Calib_Cornering(const Calib_Params& params) print_config->set_key_value("spiral_mode", new ConfigOptionBool(true)); print_config->set_key_value("spiral_mode_smooth", new ConfigOptionBool(false)); print_config->set_key_value("bottom_surface_pattern", new ConfigOptionEnum(ipRectilinear)); - const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), - printer_config->option("machine_max_speed_y")->get_at(0)); + const double machine_max_speed = std::min(printer_config->option("machine_max_speed_x")->get_at(0), printer_config->option("machine_max_speed_y")->get_at(0)); const double machine_max_acceleration = printer_config->option("machine_max_acceleration_extruding")->get_at(0); set_config_values(print_config, "outer_wall_speed", machine_max_speed); set_config_values(print_config, "default_acceleration", machine_max_acceleration); @@ -16773,7 +16747,7 @@ void Plater::Calib_Cornering(const Calib_Params& params) model().objects[0]->config.set_key_value("brim_width", new ConfigOptionFloat(3.0)); model().objects[0]->config.set_key_value("brim_object_gap", new ConfigOptionFloat(0.0)); - changed_objects({0}); + changed_objects({ 0 }); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->update_dirty(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update_ui_from_settings(); @@ -16798,7 +16772,7 @@ void Plater::import_zip_archive() void Plater::import_sl1_archive() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle() && p->m_sla_import_dlg->ShowModal() == wxID_OK) { p->take_snapshot(_u8L("Import SLA archive")); replace_job(w, std::make_unique(p->m_sla_import_dlg)); @@ -16810,8 +16784,8 @@ void Plater::extract_config_from_project() wxString input_file; wxGetApp().load_project(this, input_file); - if (!input_file.empty()) - load_files({into_path(input_file)}, LoadStrategy::LoadConfig); + if (! input_file.empty()) + load_files({ into_path(input_file) }, LoadStrategy::LoadConfig); } void Plater::load_gcode() @@ -16823,12 +16797,14 @@ void Plater::load_gcode() load_gcode(input_file); } -// BBS: remove GCodeViewer as seperate APP logic +//BBS: remove GCodeViewer as seperate APP logic void Plater::load_gcode(const wxString& filename) { BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " entry and filename: " << filename; BOOST_LOG_TRIVIAL(info) << __FUNCTION__; - if (!is_gcode_file(into_u8(filename)) || (m_last_loaded_gcode == filename && m_only_gcode)) + if (! is_gcode_file(into_u8(filename)) + || (m_last_loaded_gcode == filename && m_only_gcode) + ) return; m_last_loaded_gcode = filename; @@ -16840,37 +16816,40 @@ void Plater::load_gcode(const wxString& filename) m_only_gcode = true; // cleanup view before to start loading/processing - // BBS: update gcode to current partplate's + //BBS: update gcode to current partplate's GCodeProcessorResult* current_result = p->partplate_list.get_current_slice_result(); - Print& current_print = p->partplate_list.get_current_fff_print(); - // BBS:already reset in new_project - // current_result->reset(); - // p->gcode_result.reset(); - // reset_gcode_toolpaths(); + Print& current_print = p->partplate_list.get_current_fff_print(); + //BBS:already reset in new_project + //current_result->reset(); + //p->gcode_result.reset(); + //reset_gcode_toolpaths(); p->preview->reload_print(m_only_gcode); wxGetApp().mainframe->select_tab(TAB_ID_PREVIEW); p->set_current_panel(p->preview, true); p->get_current_canvas3D()->render(); - // p->notification_manager->bbl_show_plateinfo_notification(into_u8(_L("Preview only mode for gcode file."))); + //p->notification_manager->bbl_show_plateinfo_notification(into_u8(_L("Preview only mode for gcode file."))); wxBusyCursor wait; // process gcode GCodeProcessor processor; processor.init_filament_maps_and_nozzle_type_when_import_only_gcode(); - try { + try + { GCodeProcessor::s_IsBBLPrinter = wxGetApp().preset_bundle->is_bbl_vendor(); processor.process_file(filename.ToUTF8().data()); - } catch (const std::exception& ex) { + } + catch (const std::exception& ex) + { show_error(this, ex.what()); return; } *current_result = std::move(processor.extract_result()); - // current_result->filename = filename; + //current_result->filename = filename; BedType bed_type = current_result->bed_type; if (bed_type != BedType::btCount) { - DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; + DynamicPrintConfig &proj_config = wxGetApp().preset_bundle->project_config; proj_config.set_key_value("curr_bed_type", new ConfigOptionEnum(bed_type)); on_bed_type_change(bed_type); } @@ -16879,14 +16858,14 @@ void Plater::load_gcode(const wxString& filename) current_print.apply_config_for_render(processor.export_config_for_render()); - // BBS: add cost info when drag in gcode - auto& ps = current_result->print_statistics; + //BBS: add cost info when drag in gcode + auto& ps = current_result->print_statistics; double total_cost = 0.0; for (auto volume : ps.total_volumes_per_extruder) { size_t extruder_id = volume.first; - double density = current_result->filament_densities.at(extruder_id); - double cost = current_result->filament_costs.at(extruder_id); - double weight = volume.second * density * 0.001; + double density = current_result->filament_densities.at(extruder_id); + double cost = current_result->filament_costs.at(extruder_id); + double weight = volume.second * density * 0.001; total_cost += weight * cost * 0.001; } current_print.print_statistics().total_cost = total_cost; @@ -16895,15 +16874,13 @@ void Plater::load_gcode(const wxString& filename) // show results p->preview->reload_print(m_only_gcode); - // BBS: zoom to bed 0 for gcode preview - // p->preview->get_canvas3d()->zoom_to_gcode(); + //BBS: zoom to bed 0 for gcode preview + //p->preview->get_canvas3d()->zoom_to_gcode(); p->preview->get_canvas3d()->zoom_to_plate(0); if (p->preview->get_canvas3d()->get_gcode_layers_zs().empty()) { MessageDialog(this, _L("The selected file") + ":\n" + filename + "\n" + _L("Does not contain valid G-code."), - wxString(GCODEVIEWER_APP_NAME) + " - " + _L("An Error has occurred while loading the G-code file."), - wxCLOSE | wxICON_WARNING | wxCENTRE) - .ShowModal(); + wxString(GCODEVIEWER_APP_NAME) + " - " + _L("An Error has occurred while loading the G-code file."), wxCLOSE | wxICON_WARNING | wxCENTRE).ShowModal(); set_project_filename(DEFAULT_PROJECT_NAME); } else { set_project_filename(filename); @@ -16914,7 +16891,7 @@ void Plater::load_gcode(const wxString& filename) p->view3D->get_canvas3d()->remove_raycasters_for_picking(SceneRaycaster::EType::Bed); } - p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false, false); // 20250416 ban gcode to send print + p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false, false); //20250416 ban gcode to send print } void Plater::reload_gcode_from_disk() @@ -16924,43 +16901,45 @@ void Plater::reload_gcode_from_disk() load_gcode(filename); } -void Plater::reload_print() { p->preview->reload_print(); } +void Plater::reload_print() +{ + p->preview->reload_print(); +} // BBS -wxString Plater::get_project_name() { return p->get_project_name(); } +wxString Plater::get_project_name() +{ + return p->get_project_name(); +} void Plater::update_all_plate_thumbnails(bool force_update) { for (int i = 0; i < get_partplate_list().get_plate_count(); i++) { - PartPlate* plate = get_partplate_list().get_plate(i); - ThumbnailsParams thumbnail_params = {{}, false, true, true, true, i}; + PartPlate* plate = get_partplate_list().get_plate(i); + ThumbnailsParams thumbnail_params = { {}, false, true, true, true, i}; if (force_update || !plate->thumbnail_data.is_valid()) { - get_view3D_canvas3D()->render_thumbnail(plate->thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, - thumbnail_params, Camera::EType::Ortho); + get_view3D_canvas3D()->render_thumbnail(plate->thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, Camera::EType::Ortho); } if (force_update || !plate->no_light_thumbnail_data.is_valid()) { - get_view3D_canvas3D()->render_thumbnail(plate->no_light_thumbnail_data, plate->plate_thumbnail_width, - plate->plate_thumbnail_height, thumbnail_params, Camera::EType::Ortho, - Camera::ViewAngleType::Iso, false, true); + get_view3D_canvas3D()->render_thumbnail(plate->no_light_thumbnail_data, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, + Camera::EType::Ortho, Camera::ViewAngleType::Iso, false, true); } } } -void Plater::update_obj_preview_thumbnail( - ModelObject* mo, int obj_idx, int vol_idx, std::vector colors, int camera_view_angle_type) +void Plater::update_obj_preview_thumbnail(ModelObject *mo, int obj_idx, int vol_idx, std::vector colors, int camera_view_angle_type) { - PartPlate* plate = get_partplate_list().get_plate(0); + PartPlate * plate = get_partplate_list().get_plate(0); ThumbnailsParams thumbnail_params = {{}, false, true, true, true, 0, false}; GLVolumeCollection cur_volumes; cur_volumes.load_object_volume(mo, obj_idx, vol_idx, 0, "volume", true, false, false, false); ModelObjectPtrs model_objects; model_objects.emplace_back(mo); - get_view3D_canvas3D()->render_thumbnail(plate->obj_preview_thumbnail_data, colors, plate->plate_thumbnail_width, - plate->plate_thumbnail_height, thumbnail_params, model_objects, cur_volumes, - Camera::EType::Ortho, (Camera::ViewAngleType) camera_view_angle_type, false, false); + get_view3D_canvas3D()->render_thumbnail(plate->obj_preview_thumbnail_data, colors, plate->plate_thumbnail_width, plate->plate_thumbnail_height, thumbnail_params, + model_objects, cur_volumes, Camera::EType::Ortho, (Camera::ViewAngleType) camera_view_angle_type, false, false); } -// invalid all plate's thumbnails +//invalid all plate's thumbnails void Plater::invalid_all_plate_thumbnails() { if (using_exported_file() || skip_thumbnail_invalid) @@ -16977,28 +16956,29 @@ void Plater::invalid_all_plate_thumbnails() void Plater::force_update_all_plate_thumbnails() { if (using_exported_file() || skip_thumbnail_invalid) { - } else { + } + else { invalid_all_plate_thumbnails(); update_all_plate_thumbnails(true); } } // BBS: backup -std::vector Plater::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi, bool* published_out) -{ - // BBS: wish to reset state when load a new file +std::vector Plater::load_files(const std::vector& input_files, LoadStrategy strategy, bool ask_multi, bool* published_out) { + //BBS: wish to reset state when load a new file p->m_slice_all_only_has_gcode = false; - // BBS: wish to reset all plates stats item selected state when load a new file + //BBS: wish to reset all plates stats item selected state when load a new file p->preview->get_canvas3d()->reset_select_plate_toolbar_selection(); return p->load_files(input_files, strategy, ask_multi, published_out); } bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) { - // std::vector unzipped_paths; + //std::vector unzipped_paths; std::vector non_project_paths; std::vector project_paths; - try { + try + { mz_zip_archive archive; mz_zip_zero_struct(&archive); @@ -17012,14 +16992,15 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) // selected_paths contains paths and its uncompressed size. The size is used to distinguish between files with same path. std::vector> selected_paths; FileArchiveDialog dlg(static_cast(wxGetApp().mainframe), &archive, selected_paths); - if (dlg.ShowModal() == wxID_OK) { + if (dlg.ShowModal() == wxID_OK) + { std::string archive_path_string = archive_path.string(); - archive_path_string = archive_path_string.substr(0, archive_path_string.size() - 4); + archive_path_string = archive_path_string.substr(0, archive_path_string.size() - 4); fs::path archive_dir(wxStandardPaths::Get().GetTempDir().utf8_str().data()); for (auto& path_w_size : selected_paths) { const fs::path& path = path_w_size.first; - size_t size = path_w_size.second; + size_t size = path_w_size.second; // find path in zip archive for (mz_uint i = 0; i < num_entries; ++i) { if (mz_zip_reader_file_stat(&archive, i, &stat)) { @@ -17033,29 +17014,29 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) if (path != archive_path) continue; // decompressing - try { + try + { std::replace(name.begin(), name.end(), '\\', '/'); // rename if file exists - std::string filename = path.filename().string(); - std::string extension = path.extension().string(); - std::string just_filename = filename.substr(0, filename.size() - extension.size()); + std::string filename = path.filename().string(); + std::string extension = path.extension().string(); + std::string just_filename = filename.substr(0, filename.size() - extension.size()); std::string final_filename = just_filename; size_t version = 0; - while (fs::exists(archive_dir / (final_filename + extension))) { + while (fs::exists(archive_dir / (final_filename + extension))) + { ++version; final_filename = just_filename + "(" + std::to_string(version) + ")"; } - filename = final_filename + extension; + filename = final_filename + extension; fs::path final_path = archive_dir / filename; - std::string buffer((size_t) stat.m_uncomp_size, 0); + std::string buffer((size_t)stat.m_uncomp_size, 0); // Decompress action. We already has correct file index in stat structure. - mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void*) buffer.data(), - (size_t) stat.m_uncomp_size, 0); + mz_bool res = mz_zip_reader_extract_to_mem(&archive, stat.m_file_index, (void*)buffer.data(), (size_t)stat.m_uncomp_size, 0); if (res == 0) { // TRN: First argument = path to file, second argument = error description - wxString error_log = GUI::format_wxstr(_L("Failed to unzip file to %1%: %2%"), final_path.string(), - mz_zip_get_error_string(mz_zip_get_last_error(&archive))); + wxString error_log = GUI::format_wxstr(_L("Failed to unzip file to %1%: %2%"), final_path.string(), mz_zip_get_error_string(mz_zip_get_last_error(&archive))); BOOST_LOG_TRIVIAL(error) << error_log; show_error(nullptr, error_log); break; @@ -17065,9 +17046,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) file.write(buffer.c_str(), buffer.size()); file.close(); if (!fs::exists(final_path)) { - wxString error_log = - GUI::format_wxstr(_L("Failed to find unzipped file at %1%. Unzipping of file has failed."), - final_path.string()); + wxString error_log = GUI::format_wxstr(_L("Failed to find unzipped file at %1%. Unzipping of file has failed."), final_path.string()); BOOST_LOG_TRIVIAL(error) << error_log; show_error(nullptr, error_log); break; @@ -17086,7 +17065,9 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) project_paths.emplace_back(final_path); break; - } catch (const std::exception& e) { + } + catch (const std::exception& e) + { // ensure the zip archive is closed and rethrow the exception close_zip_reader(&archive); throw Slic3r::FileIOError(e.what()); @@ -17096,25 +17077,30 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) } close_zip_reader(&archive); if (non_project_paths.size() + project_paths.size() != selected_paths.size()) - BOOST_LOG_TRIVIAL(error) << "Decompresing of archive did not retrieve all files. Expected files: " << selected_paths.size() - << " Decopressed files: " << non_project_paths.size() + project_paths.size(); + BOOST_LOG_TRIVIAL(error) << "Decompresing of archive did not retrieve all files. Expected files: " + << selected_paths.size() + << " Decopressed files: " + << non_project_paths.size() + project_paths.size(); } else { close_zip_reader(&archive); return false; } - } catch (const Slic3r::FileIOError& e) { + } + catch (const Slic3r::FileIOError& e) { // zip reader should be already closed or not even opened GUI::show_error(this, e.what()); return false; } // none selected - if (project_paths.empty() && non_project_paths.empty()) { + if (project_paths.empty() && non_project_paths.empty()) + { return false; } // 1 project file and some models - behave like drag n drop of 3mf and then load models - if (project_paths.size() == 1) { + if (project_paths.size() == 1) + { wxArrayString aux; aux.Add(from_u8(project_paths.front().string())); bool loaded3mf = load_files(aux); @@ -17139,6 +17125,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) load_files(project_paths, LoadStrategy::LoadModel); load_files(non_project_paths, LoadStrategy::LoadModel); + for (const fs::path& path : project_paths) { // Delete file from temp file (path variable), it will stay only in app memory. boost::system::error_code ec; @@ -17162,32 +17149,32 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) class ProjectDropDialog : public DPIDialog { private: - wxColour m_def_color = wxColour(255, 255, 255); - int m_action{1}; - bool m_remember_choice{false}; + wxColour m_def_color = wxColour(255, 255, 255); + int m_action{1}; + bool m_remember_choice{false}; public: - ProjectDropDialog(const std::string& filename); + ProjectDropDialog(const std::string &filename); - wxPanel* m_top_line; - wxStaticText* m_fname_title; - wxStaticText* m_fname_f; - StaticBox* m_panel_select; + wxPanel * m_top_line; + wxStaticText *m_fname_title; + wxStaticText *m_fname_f; + StaticBox * m_panel_select; - void on_select_ok(wxCommandEvent& event); - void on_select_cancel(wxCommandEvent& event); + void on_select_ok(wxCommandEvent &event); + void on_select_cancel(wxCommandEvent &event); - int get_action() const { return m_action; } - void set_action(int index) { m_action = index; } + int get_action() const { return m_action; } + void set_action(int index) { m_action = index; } - wxBoxSizer* create_remember_checkbox(wxString title, wxWindow* parent, wxString tooltip); + wxBoxSizer *create_remember_checkbox(wxString title, wxWindow* parent, wxString tooltip); protected: - void on_dpi_changed(const wxRect& suggested_rect) override; + void on_dpi_changed(const wxRect &suggested_rect) override; }; -ProjectDropDialog::ProjectDropDialog(const std::string& filename) - : DPIDialog(static_cast(wxGetApp().mainframe), +ProjectDropDialog::ProjectDropDialog(const std::string &filename) + : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, from_u8((boost::format(_utf8(L("Drop project file")))).str()), wxDefaultPosition, @@ -17198,7 +17185,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string& filename) // def setting SetBackgroundColour(m_def_color); - wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL); + wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL); m_top_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); m_top_line->SetBackgroundColour(wxColour(166, 169, 170)); @@ -17214,25 +17201,24 @@ ProjectDropDialog::ProjectDropDialog(const std::string& filename) m_fname_f = new wxStaticText(this, wxID_ANY, filename); m_fname_f->SetFont(::Label::Head_14); - m_fname_f->SetMaxSize(wxSize(FromDIP(300), -1)); + m_fname_f->SetMaxSize(wxSize(FromDIP(300),-1)); m_fname_f->Wrap(FromDIP(300)); m_fname_f->SetForegroundColour(wxColour("#363636")); m_sizer_main->Add(m_fname_title, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); m_sizer_main->AddSpacer(FromDIP(10)); - m_sizer_main->Add(m_fname_f, 1, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); + m_sizer_main->Add(m_fname_f , 1, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); m_sizer_main->AddSpacer(FromDIP(10)); - auto radio_group = new RadioGroup(this, - { - _L("Open as project"), // 0 - _L("Import geometry only") // 1 - }, - wxVERTICAL); - radio_group->SetMinSize(wxSize(FromDIP(300), -1)); + auto radio_group = new RadioGroup(this, { + _L("Open as project"), // 0 + _L("Import geometry only") // 1 + }, wxVERTICAL); + radio_group->SetMinSize(wxSize(FromDIP(300),-1)); radio_group->SetSelection(get_action() - 1); - radio_group->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, - [this, radio_group](wxCommandEvent& e) { set_action(radio_group->GetSelection() + 1); }); + radio_group->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, [this, radio_group](wxCommandEvent &e) { + set_action(radio_group->GetSelection() + 1); + }); m_sizer_main->Add(radio_group, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); @@ -17242,8 +17228,8 @@ ProjectDropDialog::ProjectDropDialog(const std::string& filename) // Orca: hide the "Don't show again" checkbox, people keeps accidentally checked this then forgot // wxBoxSizer *m_sizer_left = new wxBoxSizer(wxHORIZONTAL); // - // auto dont_show_again = create_remember_checkbox(_L("Remember my choice."), this, _L("This option can be changed later in preferences, - // under 'Load Behaviour'.")); m_sizer_left->Add(dont_show_again, 0, wxALL, 5); + // auto dont_show_again = create_remember_checkbox(_L("Remember my choice."), this, _L("This option can be changed later in preferences, under 'Load Behaviour'.")); + // m_sizer_left->Add(dont_show_again, 0, wxALL, 5); // // m_sizer_bottom->Add(m_sizer_left, 0, wxEXPAND, 5); @@ -17263,9 +17249,9 @@ ProjectDropDialog::ProjectDropDialog(const std::string& filename) wxGetApp().UpdateDlgDarkUI(this); } -wxBoxSizer* ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow* parent, wxString tooltip) +wxBoxSizer *ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow *parent, wxString tooltip) { - wxBoxSizer* m_sizer_checkbox = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *m_sizer_checkbox = new wxBoxSizer(wxHORIZONTAL); m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 5); auto checkbox = new ::CheckBox(parent); @@ -17275,13 +17261,13 @@ wxBoxSizer* ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8); auto checkbox_title = new wxStaticText(parent, wxID_ANY, title, wxDefaultPosition, wxSize(-1, -1), 0); - checkbox_title->SetForegroundColour(wxColour(144, 144, 144)); + checkbox_title->SetForegroundColour(wxColour(144,144,144)); checkbox_title->SetFont(::Label::Body_13); checkbox_title->Wrap(-1); checkbox_title->SetToolTip(tooltip); m_sizer_checkbox->Add(checkbox_title, 0, wxALIGN_CENTER | wxALL, 3); - checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, checkbox](wxCommandEvent& e) { + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, checkbox](wxCommandEvent &e) { m_remember_choice = checkbox->GetValue(); e.Skip(); }); @@ -17289,24 +17275,28 @@ wxBoxSizer* ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow return m_sizer_checkbox; } -void ProjectDropDialog::on_select_ok(wxCommandEvent& event) +void ProjectDropDialog::on_select_ok(wxCommandEvent &event) { if (m_remember_choice) { LoadType load_type = static_cast(get_action()); - switch (load_type) { - case LoadType::OpenProject: - wxGetApp().app_config->set(SETTING_PROJECT_LOAD_BEHAVIOUR, OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_ALL); - break; - case LoadType::LoadGeometry: - wxGetApp().app_config->set(SETTING_PROJECT_LOAD_BEHAVIOUR, OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_GEOMETRY); - break; + switch (load_type) + { + case LoadType::OpenProject: + wxGetApp().app_config->set(SETTING_PROJECT_LOAD_BEHAVIOUR, OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_ALL); + break; + case LoadType::LoadGeometry: + wxGetApp().app_config->set(SETTING_PROJECT_LOAD_BEHAVIOUR, OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_GEOMETRY); + break; } } EndModal(wxID_OK); } -void ProjectDropDialog::on_select_cancel(wxCommandEvent& event) { EndModal(wxID_CANCEL); } +void ProjectDropDialog::on_select_cancel(wxCommandEvent &event) +{ + EndModal(wxID_CANCEL); +} void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) { @@ -17314,7 +17304,7 @@ void ProjectDropDialog::on_dpi_changed(const wxRect& suggested_rect) Refresh(); } -// BBS: remove GCodeViewer as seperate APP logic +//BBS: remove GCodeViewer as seperate APP logic bool Plater::load_files(const wxArrayString& filenames) { const std::regex pattern_drop(".*[.](stp|step|stl|oltp|obj|amf|3mf|svg|zip|drc)", std::regex::icase); @@ -17333,14 +17323,14 @@ bool Plater::load_files(const wxArrayString& filenames) continue; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": normal_paths %1%, gcode_paths %2%") % normal_paths.size() % gcode_paths.size(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": normal_paths %1%, gcode_paths %2%")%normal_paths.size() %gcode_paths.size(); if (normal_paths.empty() && gcode_paths.empty()) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(": can not find valid path, return directly"); // Likely no supported files return false; - } else if (normal_paths.empty()) { - // only gcode files + } + else if (normal_paths.empty()){ + //only gcode files if (gcode_paths.size() > 1) { show_info(this, _L("Only one G-code file can be opened at a time."), _L("G-code loading")); return false; @@ -17355,12 +17345,12 @@ bool Plater::load_files(const wxArrayString& filenames) } //// searches for project files - // for (std::vector::const_reverse_iterator it = normal_paths.rbegin(); it != normal_paths.rend(); ++it) { - // std::string filename = (*it).filename().string(); - // ////BBS: only 3mf will be treated as project file - // if (open_3mf_file((*it))) - // return true; - // } + //for (std::vector::const_reverse_iterator it = normal_paths.rbegin(); it != normal_paths.rend(); ++it) { + // std::string filename = (*it).filename().string(); + // ////BBS: only 3mf will be treated as project file + // if (open_3mf_file((*it))) + // return true; + //} //// other files std::string snapshot_label; @@ -17379,31 +17369,20 @@ bool Plater::load_files(const wxArrayString& filenames) } } - // Plater::TakeSnapshot snapshot(this, snapshot_label); - // load_files(normal_paths, LoadStrategy::LoadModel); + //Plater::TakeSnapshot snapshot(this, snapshot_label); + //load_files(normal_paths, LoadStrategy::LoadModel); // BBS: check file types - std::sort(normal_paths.begin(), normal_paths.end(), - [](fs::path obj1, fs::path obj2) { return obj1.filename().string() < obj2.filename().string(); }); + std::sort(normal_paths.begin(), normal_paths.end(), [](fs::path obj1, fs::path obj2) { return obj1.filename().string() < obj2.filename().string(); }); auto loadfiles_type = LoadFilesType::NoFile; auto amf_files_count = get_3mf_file_count(normal_paths); - if (normal_paths.size() > 1 && amf_files_count < normal_paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MFOther; - } - if (normal_paths.size() > 1 && amf_files_count == normal_paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MF; - } - if (normal_paths.size() > 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::MultipleOther; - } - if (normal_paths.size() == 1 && amf_files_count == 1) { - loadfiles_type = LoadFilesType::Single3MF; - }; - if (normal_paths.size() == 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::SingleOther; - }; + if (normal_paths.size() > 1 && amf_files_count < normal_paths.size()) { loadfiles_type = LoadFilesType::Multiple3MFOther; } + if (normal_paths.size() > 1 && amf_files_count == normal_paths.size()) { loadfiles_type = LoadFilesType::Multiple3MF; } + if (normal_paths.size() > 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::MultipleOther; } + if (normal_paths.size() == 1 && amf_files_count == 1) { loadfiles_type = LoadFilesType::Single3MF; }; + if (normal_paths.size() == 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::SingleOther; }; auto first_file = std::vector{}; auto tmf_file = std::vector{}; @@ -17411,7 +17390,8 @@ bool Plater::load_files(const wxArrayString& filenames) auto res = true; if (this->m_only_gcode || this->m_exported_file) { - if ((loadfiles_type == LoadFilesType::SingleOther) || (loadfiles_type == LoadFilesType::MultipleOther)) { + if ((loadfiles_type == LoadFilesType::SingleOther) + || (loadfiles_type == LoadFilesType::MultipleOther)) { show_info(this, _L("Unable to add models in preview mode"), _L("Add Models")); return false; } @@ -17433,46 +17413,38 @@ bool Plater::load_files(const wxArrayString& filenames) }; switch (loadfiles_type) { - case LoadFilesType::Single3MF: open_3mf_file(normal_paths[0]); break; + case LoadFilesType::Single3MF: + open_3mf_file(normal_paths[0]); + break; case LoadFilesType::SingleOther: { Plater::TakeSnapshot snapshot(this, snapshot_label); - if (handle_zips(normal_paths)) - return true; - if (load_files(normal_paths, LoadStrategy::LoadModel, false).empty()) { - res = false; - } + if (handle_zips(normal_paths)) return true; + if (load_files(normal_paths, LoadStrategy::LoadModel, false).empty()) { res = false; } break; } case LoadFilesType::Multiple3MF: first_file = std::vector{normal_paths[0]}; for (auto i = 0; i < normal_paths.size(); i++) { - if (i > 0) { - other_file.push_back(normal_paths[i]); - } + if (i > 0) { other_file.push_back(normal_paths[i]); } }; open_3mf_file(first_file[0]); - if (load_files(other_file, LoadStrategy::LoadModel).empty()) { - res = false; - } + if (load_files(other_file, LoadStrategy::LoadModel).empty()) { res = false; } break; case LoadFilesType::MultipleOther: { Plater::TakeSnapshot snapshot(this, snapshot_label); if (handle_zips(normal_paths)) { - if (normal_paths.empty()) - return true; - } - if (load_files(normal_paths, LoadStrategy::LoadModel, true).empty()) { - res = false; + if (normal_paths.empty()) return true; } + if (load_files(normal_paths, LoadStrategy::LoadModel, true).empty()) { res = false; } break; } case LoadFilesType::Multiple3MFOther: - for (const auto& path : normal_paths) { - if (boost::iends_with(path.filename().string(), ".3mf")) { + for (const auto &path : normal_paths) { + if (boost::iends_with(path.filename().string(), ".3mf")){ if (first_file.size() <= 0) first_file.push_back(path); else @@ -17483,16 +17455,11 @@ bool Plater::load_files(const wxArrayString& filenames) } open_3mf_file(first_file[0]); - if (load_files(tmf_file, LoadStrategy::LoadModel).empty()) { - res = false; - } + if (load_files(tmf_file, LoadStrategy::LoadModel).empty()) { res = false; } if (res && handle_zips(other_file)) { - if (normal_paths.empty()) - return true; - } - if (load_files(other_file, LoadStrategy::LoadModel, false).empty()) { - res = false; + if (normal_paths.empty()) return true; } + if (load_files(other_file, LoadStrategy::LoadModel, false).empty()) { res = false; } break; default: break; } @@ -17515,7 +17482,7 @@ LoadType determine_load_type(std::string filename, std::string override_setting) } else if (setting == OPTION_PROJECT_LOAD_BEHAVIOUR_ALWAYS_ASK) { ProjectDropDialog dlg(filename); if (dlg.ShowModal() == wxID_OK) { - int choice = dlg.get_action(); + int choice = dlg.get_action(); LoadType load_type = static_cast(choice); wxGetApp().app_config->set("import_project_action", std::to_string(choice)); @@ -17530,42 +17497,38 @@ LoadType determine_load_type(std::string filename, std::string override_setting) } } -bool Plater::open_3mf_file(const fs::path& file_path) +bool Plater::open_3mf_file(const fs::path &file_path) { std::string filename = encode_path(file_path.filename().string().c_str()); if (!boost::algorithm::iends_with(filename, ".3mf")) { return false; } - bool not_empty_plate = !model().objects.empty(); - bool load_setting_ask_when_relevant = wxGetApp().app_config->get(SETTING_PROJECT_LOAD_BEHAVIOUR) == - OPTION_PROJECT_LOAD_BEHAVIOUR_ASK_WHEN_RELEVANT; - LoadType load_type = determine_load_type(filename, (not_empty_plate && load_setting_ask_when_relevant) ? - OPTION_PROJECT_LOAD_BEHAVIOUR_ALWAYS_ASK : - ""); + bool not_empty_plate = !model().objects.empty(); + bool load_setting_ask_when_relevant = wxGetApp().app_config->get(SETTING_PROJECT_LOAD_BEHAVIOUR) == OPTION_PROJECT_LOAD_BEHAVIOUR_ASK_WHEN_RELEVANT; + LoadType load_type = determine_load_type(filename, (not_empty_plate && load_setting_ask_when_relevant) ? OPTION_PROJECT_LOAD_BEHAVIOUR_ALWAYS_ASK : ""); - if (load_type == LoadType::Unknown) - return false; + if (load_type == LoadType::Unknown) return false; switch (load_type) { - case LoadType::OpenProject: { - if (wxGetApp().can_load_project()) - load_project(from_path(file_path), ""); - break; - } - case LoadType::LoadGeometry: { - Plater::TakeSnapshot snapshot(this, "Import Object"); - load_files({file_path}, LoadStrategy::LoadModel); - break; - } - case LoadType::LoadConfig: { - load_files({file_path}, LoadStrategy::LoadConfig); - break; - } - case LoadType::Unknown: { - assert(false); - break; - } + case LoadType::OpenProject: { + if (wxGetApp().can_load_project()) + load_project(from_path(file_path), ""); + break; + } + case LoadType::LoadGeometry: { + Plater::TakeSnapshot snapshot(this, "Import Object"); + load_files({file_path}, LoadStrategy::LoadModel); + break; + } + case LoadType::LoadConfig: { + load_files({file_path}, LoadStrategy::LoadConfig); + break; + } + case LoadType::Unknown: { + assert(false); + break; + } } return true; @@ -17574,7 +17537,7 @@ bool Plater::open_3mf_file(const fs::path& file_path) int Plater::get_3mf_file_count(std::vector paths) { auto count = 0; - for (const auto& path : paths) { + for (const auto &path : paths) { if (boost::iends_with(path.filename().string(), ".3mf")) { count++; } @@ -17587,12 +17550,10 @@ void Plater::add_file() BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " entry"; wxArrayString input_files; wxGetApp().import_model(this, input_files); - if (input_files.empty()) - return; + if (input_files.empty()) return; std::vector paths; - for (const auto& file : input_files) - paths.emplace_back(into_path(file)); + for (const auto &file : input_files) paths.emplace_back(into_path(file)); std::string snapshot_label; assert(!paths.empty()); @@ -17609,28 +17570,21 @@ void Plater::add_file() auto loadfiles_type = LoadFilesType::NoFile; auto amf_files_count = get_3mf_file_count(paths); - if (paths.size() > 1 && amf_files_count < paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MFOther; - } - if (paths.size() > 1 && amf_files_count == paths.size()) { - loadfiles_type = LoadFilesType::Multiple3MF; - } - if (paths.size() > 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::MultipleOther; - } - if (paths.size() == 1 && amf_files_count == 1) { - loadfiles_type = LoadFilesType::Single3MF; - }; - if (paths.size() == 1 && amf_files_count == 0) { - loadfiles_type = LoadFilesType::SingleOther; - }; + if (paths.size() > 1 && amf_files_count < paths.size()) { loadfiles_type = LoadFilesType::Multiple3MFOther; } + if (paths.size() > 1 && amf_files_count == paths.size()) { loadfiles_type = LoadFilesType::Multiple3MF; } + if (paths.size() > 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::MultipleOther; } + if (paths.size() == 1 && amf_files_count == 1) { loadfiles_type = LoadFilesType::Single3MF; }; + if (paths.size() == 1 && amf_files_count == 0) { loadfiles_type = LoadFilesType::SingleOther; }; auto first_file = std::vector{}; auto tmf_file = std::vector{}; auto other_file = std::vector{}; - switch (loadfiles_type) { - case LoadFilesType::Single3MF: open_3mf_file(paths[0]); break; + switch (loadfiles_type) + { + case LoadFilesType::Single3MF: + open_3mf_file(paths[0]); + break; case LoadFilesType::SingleOther: { Plater::TakeSnapshot snapshot(this, snapshot_label); @@ -17648,15 +17602,11 @@ void Plater::add_file() case LoadFilesType::Multiple3MF: first_file = std::vector{paths[0]}; for (auto i = 0; i < paths.size(); i++) { - if (i > 0) { - other_file.push_back(paths[i]); - } + if (i > 0) { other_file.push_back(paths[i]); } }; open_3mf_file(first_file[0]); - if (!load_files(other_file, LoadStrategy::LoadModel).empty()) { - wxGetApp().mainframe->update_title(); - } + if (!load_files(other_file, LoadStrategy::LoadModel).empty()) { wxGetApp().mainframe->update_title(); } break; case LoadFilesType::MultipleOther: { @@ -17668,13 +17618,13 @@ void Plater::add_file() } wxGetApp().mainframe->update_title(); if (wxGetApp().app_config->get("recent_models") == "true") - for (auto& path : paths) + for (auto &path : paths) wxGetApp().mainframe->add_to_recent_projects(path.wstring()); } break; } case LoadFilesType::Multiple3MFOther: - for (const auto& path : paths) { + for (const auto &path : paths) { if (boost::iends_with(path.filename().string(), ".3mf")) { if (first_file.size() <= 0) first_file.push_back(path); @@ -17690,11 +17640,11 @@ void Plater::add_file() if (!load_files(other_file, LoadStrategy::LoadModel, false).empty()) { wxGetApp().mainframe->update_title(); if (wxGetApp().app_config->get("recent_models") == "true") - for (auto& file : other_file) + for (auto &file : other_file) wxGetApp().mainframe->add_to_recent_projects(file.wstring()); } break; - default: break; + default:break; } } @@ -17703,31 +17653,33 @@ void Plater::update(bool conside_update_flag, bool force_background_processing_u if (is_new_project_and_check_state()) { return; } - unsigned int flag = force_background_processing_update ? (unsigned int) Plater::priv::UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE : - 0; + unsigned int flag = force_background_processing_update ? (unsigned int)Plater::priv::UpdateParams::FORCE_BACKGROUND_PROCESSING_UPDATE : 0; if (conside_update_flag) { if (need_update()) { p->update(flag); p->set_need_update(false); } - } else + } + else p->update(flag); } void Plater::object_list_changed() { p->object_list_changed(); } -Worker& Plater::get_ui_job_worker() { return p->m_worker; } +Worker &Plater::get_ui_job_worker() { return p->m_worker; } -const Worker& Plater::get_ui_job_worker() const { return p->m_worker; } +const Worker &Plater::get_ui_job_worker() const { return p->m_worker; } void Plater::update_ui_from_settings() { p->update_ui_from_settings(); } void Plater::select_view(const std::string& direction) { p->select_view(direction); } -// BBS: add no_slice logic +//BBS: add no_slice logic void Plater::select_view_3D(const std::string& name, bool no_slice) { p->select_view_3D(name, no_slice); } -void Plater::reload_paint_after_background_process_apply() { p->preview->set_reload_paint_after_background_process_apply(true); } +void Plater::reload_paint_after_background_process_apply() { + p->preview->set_reload_paint_after_background_process_apply(true); +} bool Plater::is_preview_shown() const { return p->is_preview_shown(); } bool Plater::is_preview_loaded() const { return p->is_preview_loaded(); } @@ -17737,7 +17689,7 @@ bool Plater::are_view3D_labels_shown() const { return p->are_view3D_labels_shown void Plater::show_view3D_labels(bool show) { p->show_view3D_labels(show); } bool Plater::is_view3D_overhang_shown() const { return p->is_view3D_overhang_shown(); } -void Plater::show_view3D_overhang(bool show) { p->show_view3D_overhang(show); } +void Plater::show_view3D_overhang(bool show) { p->show_view3D_overhang(show); } bool Plater::is_sidebar_enabled() const { return p->sidebar_layout.is_enabled; } void Plater::enable_sidebar(bool enabled) { p->enable_sidebar(enabled); } @@ -17747,7 +17699,7 @@ Sidebar::DockingState Plater::get_sidebar_docking_state() const { return p->get_ void Plater::reset_window_layout() { p->reset_window_layout(); } -// BBS +//BBS void Plater::select_curr_plate_all() { p->select_curr_plate_all(); } void Plater::remove_curr_plate_all() { p->remove_curr_plate_all(); } @@ -17759,10 +17711,9 @@ void Plater::remove(size_t obj_idx) { p->remove(obj_idx); } void Plater::reset(bool apply_presets_change) { p->reset(apply_presets_change); } void Plater::reset_with_confirm() { - if (p->model.objects.empty() || - MessageDialog(static_cast(this), _L("All objects will be removed, continue?"), - wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Delete All"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE) - .ShowModal() == wxID_YES) { + if (p->model.objects.empty() || MessageDialog(static_cast(this), _L("All objects will be removed, continue?"), + wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Delete All"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE) + .ShowModal() == wxID_YES) { reset(); // BBS: jump to plater panel wxGetApp().mainframe->select_tab(TAB_ID_HOME); @@ -17773,15 +17724,13 @@ void Plater::reset_with_confirm() int GUI::Plater::close_with_confirm(std::function second_check) { if (up_to_date(false, false)) { - if (second_check && !second_check(false)) - return wxID_CANCEL; + if (second_check && !second_check(false)) return wxID_CANCEL; model().set_backup_path(""); return wxID_NO; } - MessageDialog dlg(static_cast(this), - _L("The current project has unsaved changes. Would you like to save before continuing\?"), - wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Save"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE); + MessageDialog dlg(static_cast(this), _L("The current project has unsaved changes. Would you like to save before continuing\?"), + wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Save"), wxYES_NO | wxCANCEL | wxYES_DEFAULT | wxCENTRE); dlg.show_dsa_button(_L("Remember my choice.")); auto choise = wxGetApp().app_config->get("save_project_choise"); auto result = choise.empty() ? dlg.ShowModal() : choise == "yes" ? wxID_YES : wxID_NO; @@ -17801,8 +17750,7 @@ int GUI::Plater::close_with_confirm(std::function second_check) } } - if (second_check && !second_check(result == wxID_YES)) - return wxID_CANCEL; + if (second_check && !second_check(result == wxID_YES)) return wxID_CANCEL; model().set_backup_path(""); up_to_date(true, false); @@ -17811,21 +17759,23 @@ int GUI::Plater::close_with_confirm(std::function second_check) return result; } -// BBS: trigger a restore project event +//BBS: trigger a restore project event void Plater::trigger_restore_project(int skip_confirm) { auto evt = new wxCommandEvent(EVT_RESTORE_PROJECT, this->GetId()); evt->SetInt(skip_confirm); wxQueueEvent(this, evt); - // wxPostEvent(this, *evt); + //wxPostEvent(this, *evt); } -// BBS -bool Plater::delete_object_from_model(size_t obj_idx, bool refresh_immediately) -{ return p->delete_object_from_model(obj_idx, refresh_immediately); } +//BBS +bool Plater::delete_object_from_model(size_t obj_idx, bool refresh_immediately) { return p->delete_object_from_model(obj_idx, refresh_immediately); } -// BBS: delete all from model -void Plater::delete_all_objects_from_model() { p->delete_all_objects_from_model(); } +//BBS: delete all from model +void Plater::delete_all_objects_from_model() +{ + p->delete_all_objects_from_model(); +} void Plater::set_selected_visible(bool visible) { @@ -17838,6 +17788,7 @@ void Plater::set_selected_visible(bool visible) p->get_current_canvas3D()->set_selected_visible(visible); } + void Plater::remove_selected() { /*if (p->get_selection().is_empty()) @@ -17852,33 +17803,30 @@ void Plater::remove_selected() Plater::TakeSnapshot snapshot(this, "Delete Selected Objects"); get_ui_job_worker().cancel_all(); - // BBS delete current selected - // p->view3D->delete_selected(); + //BBS delete current selected + // p->view3D->delete_selected(); p->get_current_canvas3D()->delete_selected(); } void Plater::increase_instances(size_t num) { - if (!can_increase_instances()) { - return; - } + if (! can_increase_instances()) { return; } Plater::TakeSnapshot snapshot(this, "Increase Instances"); int obj_idx = p->get_selected_object_idx(); - ModelObject* model_object = p->model.objects[obj_idx]; + ModelObject* model_object = p->model.objects[obj_idx]; ModelInstance* model_instance = model_object->instances.back(); - bool was_one_instance = model_object->instances.size() == 1; + bool was_one_instance = model_object->instances.size()==1; double offset_base = canvas3D()->get_size_proportional_to_max_bed_size(0.05); - double offset = offset_base; + double offset = offset_base; for (size_t i = 0; i < num; i++, offset += offset_base) { Vec3d offset_vec = model_instance->get_offset() + Vec3d(offset, offset, 0.0); - model_object->add_instance(offset_vec, model_instance->get_scaling_factor(), model_instance->get_rotation(), - model_instance->get_mirror()); - // p->print.get_object(obj_idx)->add_copy(Slic3r::to_2d(offset_vec)); + model_object->add_instance(offset_vec, model_instance->get_scaling_factor(), model_instance->get_rotation(), model_instance->get_mirror()); +// p->print.get_object(obj_idx)->add_copy(Slic3r::to_2d(offset_vec)); } #ifdef SUPPORT_AUTO_CENTER @@ -17888,23 +17836,21 @@ void Plater::increase_instances(size_t num) p->update(); - p->get_selection().add_instance(obj_idx, (int) model_object->instances.size() - 1); + p->get_selection().add_instance(obj_idx, (int)model_object->instances.size() - 1); sidebar().obj_list()->increase_object_instances(obj_idx, was_one_instance ? num + 1 : num); p->selection_changed(); this->p->schedule_background_process(); - // if (wxGetApp().app_config->get("auto_arrange") == "true") { - // this->set_prepare_state(Job::PREPARE_STATE_MENU); - // this->arrange(); - // } + //if (wxGetApp().app_config->get("auto_arrange") == "true") { + // this->set_prepare_state(Job::PREPARE_STATE_MENU); + // this->arrange(); + //} } void Plater::decrease_instances(size_t num) { - if (!can_decrease_instances()) { - return; - } + if (! can_decrease_instances()) { return; } Plater::TakeSnapshot snapshot(this, "Decrease Instances"); @@ -17912,28 +17858,34 @@ void Plater::decrease_instances(size_t num) ModelObject* model_object = p->model.objects[obj_idx]; if (model_object->instances.size() > num) { - for (size_t i = 0; i < num; ++i) + for (size_t i = 0; i < num; ++ i) model_object->delete_last_instance(); p->update(); // Delete object from Sidebar list. Do it after update, so that the GLScene selection is updated with the modified model. sidebar().obj_list()->decrease_object_instances(obj_idx, num); - } else { + } + else { remove(obj_idx); } if (!model_object->instances.empty()) - p->get_selection().add_instance(obj_idx, (int) model_object->instances.size() - 1); + p->get_selection().add_instance(obj_idx, (int)model_object->instances.size() - 1); p->selection_changed(); this->p->schedule_background_process(); - // if (wxGetApp().app_config->get("auto_arrange") == "true") { - // this->set_prepare_state(Job::PREPARE_STATE_MENU); - // this->arrange(); - // } + //if (wxGetApp().app_config->get("auto_arrange") == "true") { + // this->set_prepare_state(Job::PREPARE_STATE_MENU); + // this->arrange(); + //} } -static long GetNumberFromUser( - const wxString& msg, const wxString& prompt, const wxString& title, long value, long min, long max, wxWindow* parent) +static long GetNumberFromUser( const wxString& msg, + const wxString& prompt, + const wxString& title, + long value, + long min, + long max, + wxWindow* parent) { #ifdef _WIN32 wxNumberEntryDialog dialog(parent, msg, prompt, title, value, min, max, wxDefaultPosition); @@ -17955,14 +17907,14 @@ void Plater::set_number_of_copies(/*size_t num*/) ModelObject* model_object = p->model.objects[obj_idx]; - const int num = GetNumberFromUser(" ", _L("Number of copies:"), _L("Copies of the selected object"), model_object->instances.size(), 0, - 1000, this); + const int num = GetNumberFromUser( " ", _L("Number of copies:"), + _L("Copies of the selected object"), model_object->instances.size(), 0, 1000, this ); if (num < 0) return; - Plater::TakeSnapshot snapshot(this, (boost::format("Set numbers of copies to %1%") % num).str()); + Plater::TakeSnapshot snapshot(this, (boost::format("Set numbers of copies to %1%")%num).str()); - int diff = num - (int) model_object->instances.size(); + int diff = num - (int)model_object->instances.size(); if (diff > 0) increase_instances(diff); else if (diff < 0) @@ -17971,7 +17923,7 @@ void Plater::set_number_of_copies(/*size_t num*/) void Plater::fill_bed_with_copies() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle()) { p->take_snapshot(_u8L("Arrange")); replace_job(w, std::make_unique()); @@ -17980,16 +17932,22 @@ void Plater::fill_bed_with_copies() void Plater::fill_bed_with_instances() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle()) { p->take_snapshot(_u8L("Arrange")); replace_job(w, std::make_unique(true)); } } -bool Plater::is_selection_empty() const { return p->get_selection().is_empty() || p->get_selection().is_wipe_tower(); } +bool Plater::is_selection_empty() const +{ + return p->get_selection().is_empty() || p->get_selection().is_wipe_tower(); +} -void Plater::scale_selection_to_fit_print_volume() { p->scale_selection_to_fit_print_volume(); } +void Plater::scale_selection_to_fit_print_volume() +{ + p->scale_selection_to_fit_print_volume(); +} void Plater::convert_unit(ConversionType conv_type) { @@ -18000,14 +17958,13 @@ void Plater::convert_unit(ConversionType conv_type) TakeSnapshot snapshot(this, conv_type == ConversionType::CONV_FROM_INCH ? "Convert from imperial units" : conv_type == ConversionType::CONV_TO_INCH ? "Revert conversion from imperial units" : - conv_type == ConversionType::CONV_FROM_METER ? "Convert from meters" : - "Revert conversion from meters"); + conv_type == ConversionType::CONV_FROM_METER ? "Convert from meters" : "Revert conversion from meters"); wxBusyCursor wait; ModelObjectPtrs objects; std::reverse(obj_idxs.begin(), obj_idxs.end()); for (int obj_idx : obj_idxs) { - ModelObject* object = p->model.objects[obj_idx]; + ModelObject *object = p->model.objects[obj_idx]; object->convert_units(objects, conv_type, volume_idxs); remove(obj_idx); } @@ -18015,12 +17972,13 @@ void Plater::convert_unit(ConversionType conv_type) p->load_model_objects(objects); Selection& selection = p->view3D->get_canvas3d()->get_selection(); - size_t last_obj_idx = p->model.objects.size() - 1; + size_t last_obj_idx = p->model.objects.size() - 1; if (volume_idxs.empty()) { for (size_t i = 0; i < objects.size(); ++i) - selection.add_object((unsigned int) (last_obj_idx - i), i == 0); - } else { + selection.add_object((unsigned int)(last_obj_idx - i), i == 0); + } + else { for (int vol_idx : volume_idxs) selection.add_volume(last_obj_idx, vol_idx, 0, false); } @@ -18042,9 +18000,9 @@ void Plater::apply_cut_object_to_model(size_t obj_idx, const ModelObjectPtrs& ne wxGetApp().obj_list()->update_info_items(idx); Selection& selection = p->get_selection(); - size_t last_id = p->model.objects.size() - 1; + size_t last_id = p->model.objects.size() - 1; for (size_t i = 0; i < new_objects.size(); ++i) - selection.add_object((unsigned int) (last_id - i), i == 0); + selection.add_object((unsigned int)(last_id - i), i == 0); // UIThreadWorker w; // arrange(w, true); @@ -18056,8 +18014,8 @@ void Plater::export_gcode(bool prefer_removable) if (p->model.objects.empty()) return; - // if (get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode(true)) - // return; + //if (get_view3D_canvas3D()->get_gizmos_manager().is_in_editing_mode(true)) + // return; if (p->process_completed_with_error == p->partplate_list.get_curr_plate_index()) return; @@ -18071,20 +18029,21 @@ void Plater::export_gcode(bool prefer_removable) unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(into_path(this->p->get_project_filename(".3mf"))); - } catch (const Slic3r::PlaceholderParserError& ex) { + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); + } catch (const Slic3r::PlaceholderParserError &ex) { // Show the error with monospaced font. show_error(this, ex.what(), true); return; - } catch (const std::exception& ex) { + } catch (const std::exception &ex) { show_error(this, ex.what(), false); return; } - default_output_file = fs::path(Slic3r::fold_utf8_to_ascii(default_output_file.string())); - AppConfig& appconfig = *wxGetApp().app_config; - RemovableDriveManager& removable_drive_manager = *wxGetApp().removable_drive_manager(); + default_output_file = fs::path(Slic3r::fold_utf8_to_ascii(default_output_file.string())); + AppConfig &appconfig = *wxGetApp().app_config; + RemovableDriveManager &removable_drive_manager = *wxGetApp().removable_drive_manager(); // Get a last save path, either to removable media or to an internal media. - std::string start_dir = appconfig.get_last_output_dir(default_output_file.parent_path().string(), prefer_removable); + std::string start_dir = appconfig.get_last_output_dir(default_output_file.parent_path().string(), prefer_removable); if (prefer_removable) { // Returns a path to a removable media if it exists, prefering start_dir. Update the internal removable drives database. start_dir = removable_drive_manager.get_removable_drive_path(start_dir); @@ -18096,14 +18055,17 @@ void Plater::export_gcode(bool prefer_removable) fs::path output_path; { std::string ext = default_output_file.extension().string(); - wxFileDialog dlg(this, (printer_technology() == ptFFF) ? _L("Save G-code file as:") : _L("Save SLA file as:"), start_dir, - from_path(default_output_file.filename()), - GUI::file_wildcards((printer_technology() == ptFFF) ? FT_GCODE : FT_SL1, ext), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + wxFileDialog dlg(this, (printer_technology() == ptFFF) ? _L("Save G-code file as:") : _L("Save SLA file as:"), + start_dir, + from_path(default_output_file.filename()), + GUI::file_wildcards((printer_technology() == ptFFF) ? FT_GCODE : FT_SL1, ext), + wxFD_SAVE | wxFD_OVERWRITE_PROMPT + ); if (dlg.ShowModal() == wxID_OK) { output_path = into_path(dlg.GetPath()); while (has_illegal_filename_characters(output_path.filename().string())) { show_error(this, _L("The provided file name is not valid.") + "\n" + - _L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\""); + _L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\""); dlg.SetFilename(from_path(output_path.filename())); if (dlg.ShowModal() == wxID_OK) output_path = into_path(dlg.GetPath()); @@ -18115,17 +18077,17 @@ void Plater::export_gcode(bool prefer_removable) } } - if (!output_path.empty()) { + if (! output_path.empty()) { bool path_on_removable_media = removable_drive_manager.set_and_verify_last_save_path(output_path.string()); - // bool path_on_removable_media = false; + //bool path_on_removable_media = false; p->notification_manager->new_export_began(path_on_removable_media); - p->exporting_status = path_on_removable_media ? ExportingStatus::EXPORTING_TO_REMOVABLE : ExportingStatus::EXPORTING_TO_LOCAL; - p->last_output_path = output_path.string(); + p->exporting_status = path_on_removable_media ? ExportingStatus::EXPORTING_TO_REMOVABLE : ExportingStatus::EXPORTING_TO_LOCAL; + p->last_output_path = output_path.string(); p->last_output_dir_path = output_path.parent_path().string(); p->export_gcode(output_path, path_on_removable_media); // Storing a path to AppConfig either as path to removable media or a path to internal media. - // is_path_on_removable_drive() is called with the "true" parameter to update its internal database as the user may have shuffled - // the external drives while the dialog was open. + // is_path_on_removable_drive() is called with the "true" parameter to update its internal database as the user may have shuffled the external drives + // while the dialog was open. appconfig.update_last_output_dir(output_path.parent_path().string(), path_on_removable_media); try { @@ -18137,18 +18099,22 @@ void Plater::export_gcode(bool prefer_removable) j["printer_preset"] = printer_config.config.opt_string("inherits"); } - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; if (preset_bundle) { j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } - NetworkAgent* agent = wxGetApp().getAgent(); + NetworkAgent *agent = wxGetApp().getAgent(); } catch (...) {} + } } -void Plater::send_to_printer(bool isall) { p->on_action_send_to_printer(isall); } +void Plater::send_to_printer(bool isall) +{ + p->on_action_send_to_printer(isall); +} -// BBS export gcode 3mf to file +//BBS export gcode 3mf to file void Plater::export_gcode_3mf(bool export_all) { if (p->model.objects.empty()) @@ -18157,7 +18123,7 @@ void Plater::export_gcode_3mf(bool export_all) if (p->process_completed_with_error == p->partplate_list.get_curr_plate_index()) return; - // calc default_output_file, get default output file from background process + //calc default_output_file, get default output file from background process fs::path default_output_file; AppConfig& appconfig = *wxGetApp().app_config; std::string start_dir; @@ -18167,52 +18133,60 @@ void Plater::export_gcode_3mf(bool export_all) unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(into_path(this->p->get_project_filename(".3mf"))); - } catch (const Slic3r::PlaceholderParserError& ex) { + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); + } + catch (const Slic3r::PlaceholderParserError& ex) { // Show the error with monospaced font. show_error(this, ex.what(), true); return; - } catch (const std::exception& ex) { + } + catch (const std::exception& ex) { show_error(this, ex.what(), false); return; } default_output_file.replace_extension(".gcode.3mf"); default_output_file = fs::path(Slic3r::fold_utf8_to_ascii(default_output_file.string())); - // Get a last save path + //Get a last save path start_dir = appconfig.get_last_output_dir(default_output_file.parent_path().string(), false); fs::path output_path; { std::string ext = default_output_file.extension().string(); - wxFileDialog dlg(this, _L("Save Sliced file as:"), start_dir, from_path(default_output_file.filename()), - GUI::file_wildcards(FT_GCODE_3MF, ""), wxFD_SAVE | wxFD_OVERWRITE_PROMPT); + wxFileDialog dlg(this, _L("Save Sliced file as:"), + start_dir, + from_path(default_output_file.filename()), + GUI::file_wildcards(FT_GCODE_3MF, ""), + wxFD_SAVE | wxFD_OVERWRITE_PROMPT + ); if (dlg.ShowModal() == wxID_OK) { output_path = into_path(dlg.GetPath()); - ext = output_path.extension().string(); + ext = output_path.extension().string(); if (ext != ".3mf") output_path = output_path.string() + ".3mf"; } } if (!output_path.empty()) { - // BBS do not set to removable media path + //BBS do not set to removable media path bool path_on_removable_media = false; p->notification_manager->new_export_began(path_on_removable_media); p->exporting_status = path_on_removable_media ? ExportingStatus::EXPORTING_TO_REMOVABLE : ExportingStatus::EXPORTING_TO_LOCAL; - // BBS do not save last output path - p->last_output_path = output_path.string(); + //BBS do not save last output path + p->last_output_path = output_path.string(); p->last_output_dir_path = output_path.parent_path().string(); - int plate_idx = get_partplate_list().get_curr_plate_index(); + int plate_idx = get_partplate_list().get_curr_plate_index(); if (export_all) plate_idx = PLATE_ALL_IDX; - export_3mf(output_path, SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithGcode | SaveStrategy::SkipModel, - plate_idx); // BBS: silence + export_3mf(output_path, SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithGcode | SaveStrategy::SkipModel, plate_idx); // BBS: silence RemovableDriveManager& removable_drive_manager = *wxGetApp().removable_drive_manager(); + bool on_removable = removable_drive_manager.is_path_on_removable_drive(p->last_output_dir_path); + // update last output dir appconfig.update_last_output_dir(output_path.parent_path().string(), false); p->notification_manager->push_exporting_finished_notification(output_path.string(), p->last_output_dir_path, on_removable); @@ -18224,13 +18198,10 @@ void Plater::send_gcode_finish(wxString name) auto out_str = GUI::format(_L("The file %s has been sent to the printer's storage space and can be viewed on the printer."), name); p->notification_manager->push_exporting_finished_notification(out_str, "", false); } - void Plater::export_core_3mf() { wxString path = p->get_export_file(FT_3MF); - if (path.empty()) { - return; - } + if (path.empty()) { return; } const std::string path_u8 = into_u8(path); export_3mf(path_u8, SaveStrategy::Silence); } @@ -18401,28 +18372,26 @@ void Plater::set_pending_published(const std::vector& published_key p->m_pending_material_keys = material_keys; } -Preset* get_printer_preset(const MachineObject* obj) +Preset *get_printer_preset(const MachineObject *obj) { if (!obj) return nullptr; - Preset* printer_preset = nullptr; + Preset *printer_preset = nullptr; - PresetBundle* preset_bundle = wxGetApp().preset_bundle; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) { // only use system printer preset if (!printer_it->is_system) continue; - ConfigOption* printer_nozzle_opt = printer_it->config.option("nozzle_diameter"); - ConfigOptionFloats* printer_nozzle_vals = nullptr; - if (printer_nozzle_opt) - printer_nozzle_vals = dynamic_cast(printer_nozzle_opt); + ConfigOption *printer_nozzle_opt = printer_it->config.option("nozzle_diameter"); + ConfigOptionFloats *printer_nozzle_vals = nullptr; + if (printer_nozzle_opt) printer_nozzle_vals = dynamic_cast(printer_nozzle_opt); std::string model_id = printer_it->get_current_printer_type(preset_bundle); - std::string printer_type = obj->get_show_printer_type(); - bool nozzle_diameter_matches_or_unknown = printer_nozzle_vals && - obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(0, printer_nozzle_vals->get_at(0)); + std::string printer_type = obj->get_show_printer_type(); + bool nozzle_diameter_matches_or_unknown = printer_nozzle_vals && obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(0, printer_nozzle_vals->get_at(0)); if (model_id.compare(printer_type) == 0 && nozzle_diameter_matches_or_unknown) { printer_preset = &(*printer_it); } @@ -18430,7 +18399,7 @@ Preset* get_printer_preset(const MachineObject* obj) return printer_preset; } -bool Plater::check_printer_initialized(MachineObject* obj, bool only_warning, bool popup_warning) +bool Plater::check_printer_initialized(MachineObject *obj, bool only_warning, bool popup_warning) { if (!obj) return false; @@ -18439,6 +18408,7 @@ bool Plater::check_printer_initialized(MachineObject* obj, bool only_warning, bo const auto& extruders = obj->GetExtderSystem()->GetExtruders(); for (const DevExtder& extruder : extruders) { + // Skip check if nozzle type is unknown if (extruder.GetNozzleType() == NozzleType::ntUndefine) { continue; @@ -18454,16 +18424,14 @@ bool Plater::check_printer_initialized(MachineObject* obj, bool only_warning, bo if (popup_warning) { if (!only_warning) { if (DevPrinterConfigUtil::get_printer_can_set_nozzle(obj->get_show_printer_type())) { - MessageDialog dlg(wxGetApp().plater(), _L("The nozzle type is not set. Please set the nozzle and try again."), - _L("Warning"), wxOK | wxICON_WARNING); + MessageDialog dlg(wxGetApp().plater(), _L("The nozzle type is not set. Please set the nozzle and try again."), _L("Warning"), wxOK | wxICON_WARNING); dlg.ShowModal(); } else { - MessageDialog dlg(wxGetApp().plater(), _L("The nozzle type is not set. Please check."), _L("Warning"), - wxOK | wxICON_WARNING); + MessageDialog dlg(wxGetApp().plater(), _L("The nozzle type is not set. Please check."), _L("Warning"), wxOK | wxICON_WARNING); dlg.ShowModal(); } - PrinterPartsDialog* print_parts_dlg = new PrinterPartsDialog(nullptr); + PrinterPartsDialog *print_parts_dlg = new PrinterPartsDialog(nullptr); print_parts_dlg->update_machine_obj(obj); print_parts_dlg->ShowModal(); } else { @@ -18484,25 +18452,26 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); bool has_splitable_volume = csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), - csg::mpartsPositive | csg::mpartsNegative); - + csg::mpartsPositive | csg::mpartsNegative); + std::string fail_msg = _u8L("Unable to perform boolean operation on model meshes. " - "Only positive parts will be kept. You may fix the meshes and try again."); - if (auto fail_reason_name = csg::check_csgmesh_booleans(Range{std::begin(csgmesh), std::end(csgmesh)}); - std::get<0>(fail_reason_name) != csg::BooleanFailReason::OK) { + "Only positive parts will be kept. You may fix the meshes and try again."); + if (auto fail_reason_name = csg::check_csgmesh_booleans(Range{ std::begin(csgmesh), std::end(csgmesh) }); std::get<0>(fail_reason_name) != csg::BooleanFailReason::OK) { std::string name = std::get<1>(fail_reason_name); - std::map fail_reasons = - {{csg::BooleanFailReason::OK, "OK"}, - {csg::BooleanFailReason::MeshEmpty, Slic3r::format(_u8L("Reason: part \"%1%\" is empty."), name)}, - {csg::BooleanFailReason::NotBoundAVolume, Slic3r::format(_u8L("Reason: part \"%1%\" does not bound a volume."), name)}, - {csg::BooleanFailReason::SelfIntersect, Slic3r::format(_u8L("Reason: part \"%1%\" has self intersection."), name)}, - {csg::BooleanFailReason::NoIntersection, Slic3r::format(_u8L("Reason: \"%1%\" and another part have no intersection."), name)}}; + std::map fail_reasons = { + {csg::BooleanFailReason::OK, "OK"}, + {csg::BooleanFailReason::MeshEmpty, Slic3r::format( _u8L("Reason: part \"%1%\" is empty."), name)}, + {csg::BooleanFailReason::NotBoundAVolume, Slic3r::format(_u8L("Reason: part \"%1%\" does not bound a volume."), name)}, + {csg::BooleanFailReason::SelfIntersect, Slic3r::format(_u8L("Reason: part \"%1%\" has self intersection."), name)}, + {csg::BooleanFailReason::NoIntersection, Slic3r::format(_u8L("Reason: \"%1%\" and another part have no intersection."), name)} }; fail_msg += " " + fail_reasons[std::get<0>(fail_reason_name)]; - } else { + } + else { try { - MeshBoolean::mcut::McutMeshPtr meshPtr = csg::perform_csgmesh_booleans_mcut(Range{std::begin(csgmesh), std::end(csgmesh)}); - mesh = MeshBoolean::mcut::mcut_to_triangle_mesh(*meshPtr); - } catch (...) {} + MeshBoolean::mcut::McutMeshPtr meshPtr = csg::perform_csgmesh_booleans_mcut(Range{ std::begin(csgmesh), std::end(csgmesh) }); + mesh = MeshBoolean::mcut::mcut_to_triangle_mesh(*meshPtr); + } + catch (...) {} #if 0 // if mcut fails, try again with CGAL if (mesh.empty()) { @@ -18535,7 +18504,8 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st m.transform(i->get_matrix(), true); mesh.merge(m); } - } else if (0 <= instance_id && instance_id < int(mo.instances.size())) + } + else if (0 <= instance_id && instance_id < int(mo.instances.size())) mesh.transform(mo.instances[instance_id]->get_matrix(), true); return mesh; } @@ -18544,9 +18514,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st #define EXPORT_WITH_BOOLEAN 0 void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, FileType file_type) { - if (p->model.objects.empty()) { - return; - } + if (p->model.objects.empty()) { return; } int quality = 0; @@ -18570,35 +18538,31 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil } else { path = p->get_export_file(file_type); } - if (path.empty()) { - return; - } + if (path.empty()) { return; } const std::string path_u8 = into_u8(path); wxBusyCursor wait; const auto& selection = p->get_selection(); - const auto obj_idx = selection.get_object_idx(); + const auto obj_idx = selection.get_object_idx(); #if EXPORT_WITH_BOOLEAN if (selection_only && (obj_idx == -1 || selection.is_wipe_tower())) return; #else // BBS support selecting multiple objects - if (selection_only && selection.is_wipe_tower()) - return; + if (selection_only && selection.is_wipe_tower()) return; // BBS if (selection_only) { // only support selection single full object and mulitiple full object - if (!selection.is_single_full_object() && !selection.is_multiple_full_object()) - return; + if (!selection.is_single_full_object() && !selection.is_multiple_full_object()) return; } // Following lambda generates a combined mesh for export with normals pointing outwards. - auto mesh_to_export_fff_no_boolean = [this](const ModelObject& mo, int instance_id) { + auto mesh_to_export_fff_no_boolean = [this](const ModelObject &mo, int instance_id) { TriangleMesh mesh; - // Prusa export negative parts + //Prusa export negative parts std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), @@ -18610,13 +18574,14 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil } else if (std::get<2>(csg::check_csgmesh_booleans(csgrange)) == csgrange.end()) { try { auto cgalm = csg::perform_csgmesh_booleans(csgrange); - mesh = MeshBoolean::cgal::cgal_to_triangle_mesh(*cgalm); + mesh = MeshBoolean::cgal::cgal_to_triangle_mesh(*cgalm); } catch (...) {} } if (mesh.empty()) { - get_notification_manager()->push_plater_error_notification(_u8L("Unable to perform boolean operation on model meshes. " - "Only positive parts will be exported.")); + get_notification_manager()->push_plater_error_notification( + _u8L("Unable to perform boolean operation on model meshes. " + "Only positive parts will be exported.")); for (const ModelVolume* v : mo.volumes) if (v->is_model_part()) { @@ -18628,7 +18593,7 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil if (instance_id == -1) { TriangleMesh vols_mesh(mesh); mesh = TriangleMesh(); - for (const ModelInstance* i : mo.instances) { + for (const ModelInstance *i : mo.instances) { TriangleMesh m = vols_mesh; m.transform(i->get_matrix(), true); mesh.merge(m); @@ -18641,17 +18606,15 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil auto mesh_to_export_sla = [&, this](const ModelObject& mo, int instance_id) { TriangleMesh mesh; - const SLAPrintObject* object = this->p->sla_print.get_print_object_by_model_object_id(mo.id()); + const SLAPrintObject *object = this->p->sla_print.get_print_object_by_model_object_id(mo.id()); if (auto m = object->get_mesh_to_print(); m.empty()) - mesh = combine_mesh_fff(mo, instance_id, [this](const std::string& msg) { - return get_notification_manager()->push_general_error_notification(msg); - }); + mesh = combine_mesh_fff(mo, instance_id, [this](const std::string& msg) {return get_notification_manager()->push_general_error_notification(msg); }); else { const Transform3d mesh_trafo_inv = object->trafo().inverse(); - const bool is_left_handed = object->is_left_handed(); + const bool is_left_handed = object->is_left_handed(); - auto pad_mesh = extended ? object->pad_mesh() : TriangleMesh{}; + auto pad_mesh = extended? object->pad_mesh() : TriangleMesh{}; pad_mesh.transform(mesh_trafo_inv); auto supports_mesh = extended ? object->support_mesh() : TriangleMesh{}; @@ -18660,16 +18623,16 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil const std::vector& obj_instances = object->instances(); for (const SLAPrintObject::Instance& obj_instance : obj_instances) { auto it = std::find_if(object->model_object()->instances.begin(), object->model_object()->instances.end(), - [&obj_instance](const ModelInstance* mi) { return mi->id() == obj_instance.instance_id; }); + [&obj_instance](const ModelInstance *mi) { return mi->id() == obj_instance.instance_id; }); assert(it != object->model_object()->instances.end()); if (it != object->model_object()->instances.end()) { - const bool one_inst_only = selection_only && !selection.is_single_full_object(); + const bool one_inst_only = selection_only && ! selection.is_single_full_object(); const int instance_idx = it - object->model_object()->instances.begin(); - const Transform3d& inst_transform = - one_inst_only ? Transform3d::Identity() : - object->model_object()->instances[instance_idx]->get_transformation().get_matrix(); + const Transform3d& inst_transform = one_inst_only + ? Transform3d::Identity() + : object->model_object()->instances[instance_idx]->get_transformation().get_matrix(); TriangleMesh inst_mesh; @@ -18692,10 +18655,10 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil inst_mesh.merge(inst_object_mesh); - // ensure that the instance lays on the bed + // ensure that the instance lays on the bed inst_mesh.translate(0.0f, 0.0f, -inst_mesh.bounding_box().min.z()); - // merge instance with global mesh + // merge instance with global mesh mesh.merge(inst_mesh); if (one_inst_only) @@ -18707,22 +18670,20 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil return mesh; }; - std::function mesh_to_export; + std::function + mesh_to_export; if (p->printer_technology == ptFFF) #if EXPORT_WITH_BOOLEAN - mesh_to_export = [this](const ModelObject& mo, int instance_id) { - return Plater::combine_mesh_fff(mo, instance_id, [this](const std::string& msg) { - return get_notification_manager()->push_general_error_notification(msg); - }); - }; + mesh_to_export = [this](const ModelObject& mo, int instance_id) {return Plater::combine_mesh_fff(mo, instance_id, + [this](const std::string& msg) {return get_notification_manager()->push_general_error_notification(msg); }); }; #else mesh_to_export = mesh_to_export_fff_no_boolean; #endif else mesh_to_export = mesh_to_export_sla; - auto get_save_file = [file_type](std::string const& dir, std::string const& name) { + auto get_save_file = [file_type](std::string const & dir, std::string const & name) { std::string ext = ""; switch (file_type) { case FT_STL: ext = ".stl"; break; @@ -18730,38 +18691,39 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil } auto path = dir + name + ext; - int n = 1; + int n = 1; while (boost::filesystem::exists(path)) - path = dir + name + "(" + std::to_string(n++) + ")" + ext; + path = dir + name + "(" + std::to_string(n++) + ")"+ext; return path; }; TriangleMesh mesh; if (selection_only) { if (selection.is_single_full_object()) { - const auto obj_idx = selection.get_object_idx(); + const auto obj_idx = selection.get_object_idx(); const ModelObject* model_object = p->model.objects[obj_idx]; if (selection.get_mode() == Selection::Instance) mesh = mesh_to_export(*model_object, (model_object->instances.size() > 1) ? -1 : selection.get_instance_idx()); else { const GLVolume* volume = selection.get_first_volume(); - mesh = model_object->volumes[volume->volume_idx()]->mesh(); + mesh = model_object->volumes[volume->volume_idx()]->mesh(); mesh.transform(volume->get_volume_transformation().get_matrix(), true); } - if (model_object->instances.size() == 1) - mesh.translate(-model_object->origin_translation.cast()); - } else if (selection.is_multiple_full_object() && !multi_stls) { + if (model_object->instances.size() == 1) mesh.translate(-model_object->origin_translation.cast()); + } + else if (selection.is_multiple_full_object() && !multi_stls) { const std::set>& instances_idxs = p->get_selection().get_selected_object_instances(); for (const std::pair& i : instances_idxs) { ModelObject* object = p->model.objects[i.first]; mesh.merge(mesh_to_export(*object, i.second)); } - } else if (selection.is_multiple_full_object() && multi_stls) { - const std::set>& instances_idxs = p->get_selection().get_selected_object_instances(); - for (const std::pair& i : instances_idxs) { - ModelObject* object = p->model.objects[i.first]; - auto mesh = mesh_to_export(*object, i.second); + } + else if (selection.is_multiple_full_object() && multi_stls) { + const std::set> &instances_idxs = p->get_selection().get_selected_object_instances(); + for (const std::pair &i : instances_idxs) { + ModelObject *object = p->model.objects[i.first]; + auto mesh = mesh_to_export(*object, i.second); mesh.translate(-object->origin_translation.cast()); switch (file_type) { @@ -18771,7 +18733,8 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil } return; } - } else if (!multi_stls) { + } + else if (!multi_stls) { for (const ModelObject* o : p->model.objects) { mesh.merge(mesh_to_export(*o, -1)); } @@ -18794,7 +18757,7 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil } } -// BBS: remove amf export +//BBS: remove amf export /*void Plater::export_amf() { if (p->model.objects.empty()) { return; } @@ -18815,7 +18778,7 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls, Fil }*/ namespace { -std::string get_file_name(const std::string& file_path) +std::string get_file_name(const std::string &file_path) { size_t pos_last_delimiter = file_path.find_last_of("/\\"); size_t pos_point = file_path.find_last_of('.'); @@ -18823,33 +18786,33 @@ std::string get_file_name(const std::string& file_path) size_t count = pos_point - pos_last_delimiter - 1; return file_path.substr(offset, count); } -using SvgFile = EmbossShape::SvgFile; +using SvgFile = EmbossShape::SvgFile; using SvgFiles = std::vector; -std::string create_unique_3mf_filepath(const std::string& file, const SvgFiles svgs) +std::string create_unique_3mf_filepath(const std::string &file, const SvgFiles svgs) { // const std::string MODEL_FOLDER = "3D/"; // copy from file 3mf.cpp std::string path_in_3mf = "3D/" + file + ".svg"; - size_t suffix_number = 0; - bool is_unique = false; - do { - is_unique = true; - path_in_3mf = "3D/" + file + ((suffix_number++) ? ("_" + std::to_string(suffix_number)) : "") + ".svg"; - for (SvgFile* svgfile : svgs) { + size_t suffix_number = 0; + bool is_unique = false; + do{ + is_unique = true; + path_in_3mf = "3D/" + file + ((suffix_number++)? ("_" + std::to_string(suffix_number)) : "") + ".svg"; + for (SvgFile *svgfile : svgs) { if (svgfile->path_in_3mf.empty()) continue; if (svgfile->path_in_3mf.compare(path_in_3mf) == 0) { is_unique = false; break; } - } + } } while (!is_unique); return path_in_3mf; } -bool set_by_local_path(SvgFile& svg, const SvgFiles& svgs) +bool set_by_local_path(SvgFile &svg, const SvgFiles& svgs) { // Try to find already used svg file - for (SvgFile* svg_ : svgs) { + for (SvgFile *svg_ : svgs) { if (svg_->path_in_3mf.empty()) continue; if (svg.path.compare(svg_->path) == 0) { @@ -18864,13 +18827,13 @@ bool set_by_local_path(SvgFile& svg, const SvgFiles& svgs) /// Function to secure private data before store to 3mf /// /// Data(also private) to clean before publishing -void publish(Model& model, SaveStrategy strategy) -{ +void publish(Model &model, SaveStrategy strategy) { + // SVG file publishing bool exist_new = false; SvgFiles svgfiles; - for (ModelObject* object : model.objects) { - for (ModelVolume* volume : object->volumes) { + for (ModelObject *object: model.objects){ + for (ModelVolume *volume : object->volumes) { if (!volume->emboss_shape.has_value()) continue; if (volume->text_configuration.has_value()) @@ -18887,7 +18850,7 @@ void publish(Model& model, SaveStrategy strategy) } } - for (SvgFile* svgfile : svgfiles) { + for (SvgFile *svgfile : svgfiles) { if (!svgfile->path_in_3mf.empty()) continue; // already suggested path (previous save) @@ -18899,26 +18862,26 @@ void publish(Model& model, SaveStrategy strategy) // check whether original filename is already in: filename = get_file_name(svgfile->path); } - svgfile->path_in_3mf = create_unique_3mf_filepath(filename, svgfiles); + svgfile->path_in_3mf = create_unique_3mf_filepath(filename, svgfiles); } } -} // namespace +} // BBS: backup int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy strategy, int export_plate_idx, Export3mfProgressFn proFn) { int ret = 0; - // if (p->model.objects.empty()) { - // MessageDialog dialog(nullptr, _L("No objects to export."), _L("Save project"), wxYES); - // if (dialog.ShowModal() == wxYES) - // return -1; - // } + //if (p->model.objects.empty()) { + // MessageDialog dialog(nullptr, _L("No objects to export."), _L("Save project"), wxYES); + // if (dialog.ShowModal() == wxYES) + // return -1; + //} if (output_path.empty()) return -1; bool export_config = true; - wxString path = from_path(output_path); + wxString path = from_path(output_path); if (!path.Lower().EndsWith(".3mf")) return -1; @@ -18927,19 +18890,17 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy // modify model publish(p->model, strategy); - DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config_secure(); + DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config_secure(); const std::string path_u8 = into_u8(path); wxBusyCursor wait; - BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ - << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") % output_path.string() % - (strategy & SaveStrategy::Backup) % export_plate_idx % (unsigned int) strategy; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") + %output_path.string()%(strategy & SaveStrategy::Backup)%export_plate_idx %(unsigned int)strategy; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") % std::string("") % - (strategy & SaveStrategy::Backup) % export_plate_idx % (unsigned int) strategy; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") + % std::string("") % (strategy & SaveStrategy::Backup) % export_plate_idx % (unsigned int)strategy; - // BBS: add plate logic for thumbnail generate + //BBS: add plate logic for thumbnail generate std::vector thumbnails; std::vector no_light_thumbnails; std::vector calibration_thumbnails; @@ -18950,113 +18911,106 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy if (!(strategy & SaveStrategy::Backup)) { for (int i = 0; i < p->partplate_list.get_plate_count(); i++) { ThumbnailData* thumbnail_data = &p->partplate_list.get_plate(i)->thumbnail_data; - if (p->partplate_list.get_plate(i)->thumbnail_data.is_valid() && using_exported_file()) { - // no need to generate thumbnail - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": non need to re-generate thumbnail for gcode/exported mode of plate %1%") % i; - } else { + if (p->partplate_list.get_plate(i)->thumbnail_data.is_valid() && using_exported_file()) { + //no need to generate thumbnail + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": non need to re-generate thumbnail for gcode/exported mode of plate %1%")%i; + } + else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": re-generate thumbnail for plate %1%") % i; - const ThumbnailsParams thumbnail_params = {{}, false, true, true, true, i}; + const ThumbnailsParams thumbnail_params = { {}, false, true, true, true, i }; p->generate_thumbnail(p->partplate_list.get_plate(i)->thumbnail_data, THUMBNAIL_SIZE_3MF.first, THUMBNAIL_SIZE_3MF.second, - thumbnail_params, Camera::EType::Ortho); + thumbnail_params, Camera::EType::Ortho); } thumbnails.push_back(thumbnail_data); - ThumbnailData* no_light_thumbnail_data = &p->partplate_list.get_plate(i)->no_light_thumbnail_data; + ThumbnailData *no_light_thumbnail_data = &p->partplate_list.get_plate(i)->no_light_thumbnail_data; if (p->partplate_list.get_plate(i)->no_light_thumbnail_data.is_valid() && using_exported_file()) { // no need to generate thumbnail - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": non need to re-generate thumbnail for gcode/exported mode of plate %1%") % i; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": non need to re-generate thumbnail for gcode/exported mode of plate %1%") % i; } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": re-generate thumbnail for plate %1%") % i; const ThumbnailsParams thumbnail_params = {{}, false, true, true, true, i}; - p->generate_thumbnail(p->partplate_list.get_plate(i)->no_light_thumbnail_data, THUMBNAIL_SIZE_3MF.first, - THUMBNAIL_SIZE_3MF.second, thumbnail_params, Camera::EType::Ortho, Camera::ViewAngleType::Iso, false, - true); + p->generate_thumbnail(p->partplate_list.get_plate(i)->no_light_thumbnail_data, THUMBNAIL_SIZE_3MF.first, THUMBNAIL_SIZE_3MF.second, thumbnail_params, + Camera::EType::Ortho, Camera::ViewAngleType::Iso, false, true); } no_light_thumbnails.push_back(no_light_thumbnail_data); - // ThumbnailData* calibration_data = &p->partplate_list.get_plate(i)->cali_thumbnail_data; - // calibration_thumbnails.push_back(calibration_data); + //ThumbnailData* calibration_data = &p->partplate_list.get_plate(i)->cali_thumbnail_data; + //calibration_thumbnails.push_back(calibration_data); PlateBBoxData* plate_bbox_data = &p->partplate_list.get_plate(i)->cali_bboxes_data; plate_bboxes.push_back(plate_bbox_data); - // generate top and picking thumbnails + //generate top and picking thumbnails ThumbnailData* top_thumbnail = &p->partplate_list.get_plate(i)->top_thumbnail_data; - if (top_thumbnail->is_valid() && using_exported_file()) { - // no need to generate thumbnail - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": non need to re-generate top_thumbnail for gcode/exported mode of plate %1%") % - i; - } else { + if (top_thumbnail->is_valid() && using_exported_file()) { + //no need to generate thumbnail + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": non need to re-generate top_thumbnail for gcode/exported mode of plate %1%")%i; + } + else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": re-generate top_thumbnail for plate %1%") % i; - const ThumbnailsParams thumbnail_params = {{}, false, true, false, true, i}; - p->generate_thumbnail(p->partplate_list.get_plate(i)->top_thumbnail_data, THUMBNAIL_SIZE_3MF.first, - THUMBNAIL_SIZE_3MF.second, thumbnail_params, Camera::EType::Ortho, Camera::ViewAngleType::Top_Plate, - false); + const ThumbnailsParams thumbnail_params = { {}, false, true, false, true, i }; + p->generate_thumbnail(p->partplate_list.get_plate(i)->top_thumbnail_data, THUMBNAIL_SIZE_3MF.first, THUMBNAIL_SIZE_3MF.second, thumbnail_params, + Camera::EType::Ortho, Camera::ViewAngleType::Top_Plate, false); } top_thumbnails.push_back(top_thumbnail); ThumbnailData* picking_thumbnail = &p->partplate_list.get_plate(i)->pick_thumbnail_data; - if (picking_thumbnail->is_valid() && using_exported_file()) { - // no need to generate thumbnail - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": non need to re-generate pick_thumbnail for gcode/exported mode of plate %1%") % - i; - } else { + if (picking_thumbnail->is_valid() && using_exported_file()) { + //no need to generate thumbnail + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": non need to re-generate pick_thumbnail for gcode/exported mode of plate %1%")%i; + } + else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": re-generate pick_thumbnail for plate %1%") % i; - const ThumbnailsParams thumbnail_params = {{}, false, true, false, true, i}; - p->generate_thumbnail(p->partplate_list.get_plate(i)->pick_thumbnail_data, THUMBNAIL_SIZE_3MF.first, - THUMBNAIL_SIZE_3MF.second, thumbnail_params, Camera::EType::Ortho, Camera::ViewAngleType::Top_Plate, - true, true); + const ThumbnailsParams thumbnail_params = { {}, false, true, false, true, i }; + p->generate_thumbnail(p->partplate_list.get_plate(i)->pick_thumbnail_data, THUMBNAIL_SIZE_3MF.first, THUMBNAIL_SIZE_3MF.second, thumbnail_params, + Camera::EType::Ortho, Camera::ViewAngleType::Top_Plate, true,true); } picking_thumbnails.push_back(picking_thumbnail); } if (p->partplate_list.get_curr_plate()->is_slice_result_valid()) { - // BBS generate BBS calibration thumbnails + //BBS generate BBS calibration thumbnails int index = p->partplate_list.get_curr_plate_index(); - // ThumbnailData* calibration_data = calibration_thumbnails[index]; - // const ThumbnailsParams calibration_params = { {}, false, true, true, true, p->partplate_list.get_curr_plate_index() }; - // p->generate_calibration_thumbnail(*calibration_data, PartPlate::cali_thumbnail_width, PartPlate::cali_thumbnail_height, - // calibration_params); + //ThumbnailData* calibration_data = calibration_thumbnails[index]; + //const ThumbnailsParams calibration_params = { {}, false, true, true, true, p->partplate_list.get_curr_plate_index() }; + //p->generate_calibration_thumbnail(*calibration_data, PartPlate::cali_thumbnail_width, PartPlate::cali_thumbnail_height, calibration_params); if (using_exported_file()) { - // do nothing - } else + //do nothing + } + else *plate_bboxes[index] = p->generate_first_layer_bbox(); } } - // BBS: add bbs 3mf logic + //BBS: add bbs 3mf logic PlateDataPtrs plate_data_list; - p->partplate_list.store_to_3mf_structure(plate_data_list, - (strategy & SaveStrategy::WithGcode || strategy & SaveStrategy::WithSliceInfo), - export_plate_idx); + p->partplate_list.store_to_3mf_structure(plate_data_list, (strategy & SaveStrategy::WithGcode || strategy & SaveStrategy::WithSliceInfo), export_plate_idx); // BBS: backup - PresetBundle& preset_bundle = *wxGetApp().preset_bundle; + PresetBundle& preset_bundle = *wxGetApp().preset_bundle; std::vector project_presets = preset_bundle.get_current_project_embedded_presets(); StoreParams store_params; - store_params.path = path_u8; - store_params.model = &p->model; - store_params.plate_data_list = plate_data_list; - store_params.export_plate_idx = export_plate_idx; - store_params.project_presets = project_presets; - store_params.config = export_config ? &cfg : nullptr; - store_params.thumbnail_data = thumbnails; - store_params.no_light_thumbnail_data = no_light_thumbnails; - store_params.top_thumbnail_data = top_thumbnails; - store_params.pick_thumbnail_data = picking_thumbnails; + store_params.path = path_u8; + store_params.model = &p->model; + store_params.plate_data_list = plate_data_list; + store_params.export_plate_idx = export_plate_idx; + store_params.project_presets = project_presets; + store_params.config = export_config ? &cfg : nullptr; + store_params.thumbnail_data = thumbnails; + store_params.no_light_thumbnail_data = no_light_thumbnails; + store_params.top_thumbnail_data = top_thumbnails; + store_params.pick_thumbnail_data = picking_thumbnails; store_params.calibration_thumbnail_data = calibration_thumbnails; - store_params.proFn = proFn; - store_params.id_bboxes = plate_bboxes; // BBS - store_params.project = &p->project; - store_params.strategy = strategy | SaveStrategy::Zip64; + store_params.proFn = proFn; + store_params.id_bboxes = plate_bboxes;//BBS + store_params.project = &p->project; + store_params.strategy = strategy | SaveStrategy::Zip64; + // get type and color for platedata - auto* filament_color = dynamic_cast(cfg.option("filament_colour")); + auto* filament_color = dynamic_cast(cfg.option("filament_colour")); auto* nozzle_diameter_option = dynamic_cast(cfg.option("nozzle_diameter")); - auto* filament_id_opt = dynamic_cast(cfg.option("filament_ids")); + auto* filament_id_opt = dynamic_cast(cfg.option("filament_ids")); std::string nozzle_diameter_str; if (nozzle_diameter_option) nozzle_diameter_str = nozzle_diameter_option->serialize(); @@ -19064,14 +19018,14 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy std::string printer_model_id = preset_bundle.printers.get_edited_preset().get_printer_type(&preset_bundle); for (int i = 0; i < plate_data_list.size(); i++) { - PlateData* plate_data = plate_data_list[i]; + PlateData *plate_data = plate_data_list[i]; plate_data->printer_model_id = printer_model_id; plate_data->nozzle_diameters = nozzle_diameter_str; for (auto it = plate_data->slice_filaments_info.begin(); it != plate_data->slice_filaments_info.end(); it++) { std::string display_filament_type; - it->type = cfg.get_filament_type(display_filament_type, it->id); + it->type = cfg.get_filament_type(display_filament_type, it->id); it->filament_id = filament_id_opt ? filament_id_opt->get_at(it->id) : ""; - it->color = filament_color ? filament_color->get_at(it->id) : "#FFFFFF"; + it->color = filament_color ? filament_color->get_at(it->id) : "#FFFFFF"; // save filament info used in curr plate int index = p->partplate_list.get_curr_plate_index(); if (store_params.id_bboxes.size() > index) { @@ -19095,11 +19049,11 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy if (p->model.design_info == nullptr) { // set designInfo before export and reset after export if (wxGetApp().is_user_login()) { - p->model.design_info = std::make_shared(); - // p->model.design_info->Designer = wxGetApp().getAgent()->get_user_nickname(); + p->model.design_info = std::make_shared(); + //p->model.design_info->Designer = wxGetApp().getAgent()->get_user_nickname(); p->model.design_info->Designer = ""; p->model.design_info->DesignerUserId = wxGetApp().getAgent()->get_user_id(); - BOOST_LOG_TRIVIAL(trace) << "design_info prepare, designer = " << ""; + BOOST_LOG_TRIVIAL(trace) << "design_info prepare, designer = "<< ""; BOOST_LOG_TRIVIAL(trace) << "design_info prepare, designer_user_id = " << p->model.design_info->DesignerUserId; } } @@ -19116,12 +19070,15 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy p->set_project_filename(path); BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << path; } - } else { + } + else { ret = -1; } - if (project_presets.size() > 0) { - for (unsigned int i = 0; i < project_presets.size(); i++) { + if (project_presets.size() > 0) + { + for (unsigned int i = 0; i < project_presets.size(); i++) + { delete project_presets[i]; } project_presets.clear(); @@ -19129,40 +19086,61 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy release_PlateData_list(plate_data_list); - for (unsigned int i = 0; i < calibration_thumbnails.size(); i++) { - // release the data here, as it will always be generated when export + for (unsigned int i = 0; i < calibration_thumbnails.size(); i++) + { + //release the data here, as it will always be generated when export calibration_thumbnails[i]->reset(); } for (unsigned int i = 0; i < no_light_thumbnails.size(); i++) { // release the data here, as it will always be generated when export no_light_thumbnails[i]->reset(); } - for (unsigned int i = 0; i < top_thumbnails.size(); i++) { - // release the data here, as it will always be generated when export + for (unsigned int i = 0; i < top_thumbnails.size(); i++) + { + //release the data here, as it will always be generated when export top_thumbnails[i]->reset(); } top_thumbnails.clear(); - for (unsigned int i = 0; i < picking_thumbnails.size(); i++) { - // release the data here, as it will always be generated when export - picking_thumbnails[i]->reset(); - ; + for (unsigned int i = 0; i < picking_thumbnails.size(); i++) + { + //release the data here, as it will always be generated when export + picking_thumbnails[i]->reset();; } picking_thumbnails.clear(); return ret; } -void Plater::publish_project() { return; } +void Plater::publish_project() +{ + return; +} -void Plater::reload_from_disk() { p->reload_from_disk(); } -void Plater::replace_with_stl() { p->replace_with_stl(); } +void Plater::reload_from_disk() +{ + p->reload_from_disk(); +} -void Plater::replace_all_with_stl() { p->replace_all_with_stl(); } +void Plater::replace_with_stl() +{ + p->replace_with_stl(); +} -void Plater::reload_all_from_disk() { p->reload_all_from_disk(); } +void Plater::replace_all_with_stl() +{ + p->replace_all_with_stl(); +} -bool Plater::has_toolpaths_to_export() const { return p->preview->get_canvas3d()->has_toolpaths_to_export(); } +void Plater::reload_all_from_disk() +{ + p->reload_all_from_disk(); +} + +bool Plater::has_toolpaths_to_export() const +{ + return p->preview->get_canvas3d()->has_toolpaths_to_export(); +} void Plater::export_toolpaths_to_obj() const { @@ -19177,11 +19155,13 @@ void Plater::export_toolpaths_to_obj() const p->preview->get_canvas3d()->export_toolpaths_to_obj(into_u8(path).c_str()); } -bool Plater::is_empty_project() { return model().objects.empty(); } +bool Plater::is_empty_project() { + return model().objects.empty(); +} bool Plater::is_multi_extruder_ams_empty() { - std::vector extruder_ams_count_str = p->config->option("extruder_ams_count", true)->values; - std::vector> extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str); + std::vector extruder_ams_count_str = p->config->option("extruder_ams_count", true)->values; + std::vector> extruder_ams_counts = get_extruder_ams_count(extruder_ams_count_str); for (auto extruder_ams_count : extruder_ams_counts) { for (auto iter = extruder_ams_count.begin(); iter != extruder_ams_count.end(); ++iter) { if (iter->second != 0) @@ -19191,14 +19171,13 @@ bool Plater::is_multi_extruder_ams_empty() return true; } -// BBS: add multiple plate reslice logic +//BBS: add multiple plate reslice logic void Plater::reslice() { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(", Line %1%: enter, process_completed_with_error=%2%") % __LINE__ % - p->process_completed_with_error; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: enter, process_completed_with_error=%2%")%__LINE__ %p->process_completed_with_error; // There is "invalid data" button instead "slice now" - if (p->process_completed_with_error == p->partplate_list.get_curr_plate_index()) { + if (p->process_completed_with_error == p->partplate_list.get_curr_plate_index()) + { BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": process_completed_with_error, return directly"); reset_gcode_toolpaths(); return; @@ -19234,7 +19213,8 @@ void Plater::reslice() // get stopped. unsigned timeout_ms = 10000; if (!stop_queue(this->get_ui_job_worker(), timeout_ms)) { - BOOST_LOG_TRIVIAL(error) << "Could not stop UI job within " << timeout_ms << " milliseconds timeout!"; + BOOST_LOG_TRIVIAL(error) << "Could not stop UI job within " + << timeout_ms << " milliseconds timeout!"; return; } @@ -19249,33 +19229,32 @@ void Plater::reslice() object->sla_points_status = sla::PointsStatus::Generating; } - // FIXME Don't reslice if export of G-code or sending to OctoPrint is running. - // bitmask of UpdateBackgroundProcessReturnState + //FIXME Don't reslice if export of G-code or sending to OctoPrint is running. + // bitmask of UpdateBackgroundProcessReturnState unsigned int state = this->p->update_background_process(true); if (state & priv::UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) this->p->view3D->reload_scene(false); // If the SLA processing of just a single object's supports is running, restart slicing for the whole object. this->p->background_process.set_task(PrintBase::TaskParams()); // Only restarts if the state is valid. - // BBS: jusdge the result + //BBS: jusdge the result bool result = this->p->restart_background_process(state | priv::UPDATE_BACKGROUND_PROCESS_FORCE_RESTART); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(", Line %1%: restart background,state=%2%, result=%3%") % __LINE__ % state % result; - if ((state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) != 0) { - // BBS: add logs - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(": state %1% is UPDATE_BACKGROUND_PROCESS_INVALID, can not slice") % state; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: restart background,state=%2%, result=%3%")%__LINE__%state %result; + if ((state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) != 0) + { + //BBS: add logs + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": state %1% is UPDATE_BACKGROUND_PROCESS_INVALID, can not slice") % state; p->update_fff_scene_only_shells(); return; } - if ((!result) && p->m_slice_all && (p->m_cur_slice_plate < (p->partplate_list.get_plate_count() - 1))) { - // slice next - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ - << boost::format(": in slicing all, current plate %1% already sliced, skip to next") % - p->m_cur_slice_plate; - SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, SlicingProcessCompletedEvent::Finished, nullptr); + if ((!result) && p->m_slice_all && (p->m_cur_slice_plate < (p->partplate_list.get_plate_count() - 1))) + { + //slice next + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": in slicing all, current plate %1% already sliced, skip to next") % p->m_cur_slice_plate ; + SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, + SlicingProcessCompletedEvent::Finished, nullptr); // Post the "complete" callback message, so that it will slice the next plate soon wxQueueEvent(this, evt.Clone()); p->m_is_slicing = true; @@ -19290,31 +19269,32 @@ void Plater::reslice() bool clean_gcode_toolpaths = true; // BBS - if (p->background_process.running()) { - // p->ready_to_slice = false; + if (p->background_process.running()) + { + //p->ready_to_slice = false; p->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, false); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": background process is running, m_is_slicing is true"); - } else if (!p->background_process.empty() && !p->background_process.idle()) { - // p->show_action_buttons(true); - // p->ready_to_slice = true; + } + else if (!p->background_process.empty() && !p->background_process.idle()) { + //p->show_action_buttons(true); + //p->ready_to_slice = true; p->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, true); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": background process changes to not_idle, set ready_to_slice back to true"); - } else { - // BBS: add reset logic for empty plate - PartPlate* current_plate = p->background_process.get_current_plate(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": background process changes to not_idle, set ready_to_slice back to true"); + } + else { + //BBS: add reset logic for empty plate + PartPlate * current_plate = p->background_process.get_current_plate(); if (!current_plate->has_printable_instances()) { clean_gcode_toolpaths = true; current_plate->update_slice_result_valid_state(false); - } else { + } + else { clean_gcode_toolpaths = false; current_plate->update_slice_result_valid_state(true); } p->main_frame->update_slice_print_status(MainFrame::eEventSliceUpdate, false); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": background process in idle state, use previous result, clean_gcode_toolpaths=%1%") % - clean_gcode_toolpaths; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": background process in idle state, use previous result, clean_gcode_toolpaths=%1%")%clean_gcode_toolpaths; } if (clean_gcode_toolpaths) @@ -19322,8 +19302,7 @@ void Plater::reslice() p->preview->reload_print(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": finished, started slicing for plate %1%") % p->partplate_list.get_curr_plate_index(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": finished, started slicing for plate %1%") % p->partplate_list.get_curr_plate_index(); record_slice_preset("slicing"); } @@ -19331,12 +19310,14 @@ void Plater::reslice() void Plater::record_slice_preset(std::string action) { // record slice preset - try { + try + { json j; auto printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset_with_vendor_profile().preset; if (printer_preset.is_system) { j["printer_preset_name"] = printer_preset.name; - } else { + } + else { j["printer_preset_name"] = printer_preset.config.opt_string("inherits"); } const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; @@ -19353,7 +19334,8 @@ void Plater::record_slice_preset(std::string action) auto filament_preset = wxGetApp().preset_bundle->filaments.find_preset(filament_presets[i]); if (filament_preset->is_system) { j["filament_preset_" + std::to_string(i)] = filament_preset->name; - } else { + } + else { j["filament_preset_" + std::to_string(i)] = filament_preset->config.opt_string("inherits"); } } @@ -19361,12 +19343,12 @@ void Plater::record_slice_preset(std::string action) Preset& print_preset = wxGetApp().preset_bundle->prints.get_edited_preset(); if (print_preset.is_system) { j["process_preset"] = print_preset.name; - } else { + } + else { j["process_preset"] = print_preset.config.opt_string("inherits"); } j["support_type"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("support_type")); - j["sparse_infill_pattern"] = ConfigOptionEnum::get_enum_names().at( - print_preset.config.opt_enum("sparse_infill_pattern")); + j["sparse_infill_pattern"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("sparse_infill_pattern")); j["sparse_infill_density"] = print_preset.config.opt("sparse_infill_density")->value; j["brim_type"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("brim_type")); @@ -19374,7 +19356,7 @@ void Plater::record_slice_preset(std::string action) if (p->background_process.fff_print()) { const DynamicPrintConfig& full_config = p->background_process.fff_print()->full_print_config(); - json values = json::array(); + json values = json::array(); if (full_config.has("different_settings_to_system")) { std::vector different_values = full_config.option("different_settings_to_system")->values; for (auto& item : different_values) { @@ -19384,26 +19366,28 @@ void Plater::record_slice_preset(std::string action) j["different_settings_to_system"] = values; } - j["record_event"] = action; + j["record_event"] = action; NetworkAgent* agent = wxGetApp().getAgent(); - } catch (...) { + } + catch (...) + { return; } } -// BBS: add project slicing related logic +//BBS: add project slicing related logic int Plater::start_next_slice() { // Stop arrange and (or) optimize rotation tasks. - // this->stop_jobs(); + //this->stop_jobs(); - // FIXME Don't reslice if export of G-code or sending to OctoPrint is running. - // bitmask of UpdateBackgroundProcessReturnState + //FIXME Don't reslice if export of G-code or sending to OctoPrint is running. + // bitmask of UpdateBackgroundProcessReturnState unsigned int state = this->p->update_background_process(true, false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) this->p->view3D->reload_scene(false); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": update_background_process returns %1%") % state; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": update_background_process returns %1%")%state; if (!p->partplate_list.get_curr_plate()->can_slice()) { p->process_completed_with_error = p->partplate_list.get_curr_plate_index(); BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": found invalidated apply in update_background_process."); @@ -19412,27 +19396,34 @@ int Plater::start_next_slice() // Only restarts if the state is valid. bool result = this->p->restart_background_process(state | priv::UPDATE_BACKGROUND_PROCESS_FORCE_RESTART); - if (!result) { - // slice next - SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, SlicingProcessCompletedEvent::Finished, nullptr); + if (!result) + { + //slice next + SlicingProcessCompletedEvent evt(EVT_PROCESS_COMPLETED, 0, + SlicingProcessCompletedEvent::Finished, nullptr); // Post the "complete" callback message, so that it will slice the next plate soon wxQueueEvent(this, evt.Clone()); } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": restart_background_process returns %1%") % result; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": restart_background_process returns %1%")%result; return 0; } -void Plater::reslice_SLA_supports(const ModelObject& object, bool postpone_error_messages) -{ reslice_SLA_until_step(slaposPad, object, postpone_error_messages); } -void Plater::reslice_SLA_hollowing(const ModelObject& object, bool postpone_error_messages) -{ reslice_SLA_until_step(slaposDrillHoles, object, postpone_error_messages); } - -void Plater::reslice_SLA_until_step(SLAPrintObjectStep step, const ModelObject& object, bool postpone_error_messages) +void Plater::reslice_SLA_supports(const ModelObject &object, bool postpone_error_messages) { - // FIXME Don't reslice if export of G-code or sending to OctoPrint is running. - // bitmask of UpdateBackgroundProcessReturnState + reslice_SLA_until_step(slaposPad, object, postpone_error_messages); +} + +void Plater::reslice_SLA_hollowing(const ModelObject &object, bool postpone_error_messages) +{ + reslice_SLA_until_step(slaposDrillHoles, object, postpone_error_messages); +} + +void Plater::reslice_SLA_until_step(SLAPrintObjectStep step, const ModelObject &object, bool postpone_error_messages) +{ + //FIXME Don't reslice if export of G-code or sending to OctoPrint is running. + // bitmask of UpdateBackgroundProcessReturnState unsigned int state = this->p->update_background_process(true, postpone_error_messages); if (state & priv::UPDATE_BACKGROUND_PROCESS_REFRESH_SCENE) this->p->view3D->reload_scene(false); @@ -19448,7 +19439,7 @@ void Plater::reslice_SLA_until_step(SLAPrintObjectStep step, const ModelObject& // Otherwise calculate everything, but start with the provided object. if (!this->p->background_processing_enabled()) { task.single_model_instance_only = true; - task.to_object_step = step; + task.to_object_step = step; } this->p->background_process.set_task(task); // and let the background processing start. @@ -19459,7 +19450,7 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) // if physical_printer is selected, send gcode for this printer // DynamicPrintConfig* physical_printer_config = wxGetApp().preset_bundle->physical_printers.get_selected_printer_config(); DynamicPrintConfig* physical_printer_config = &Slic3r::GUI::wxGetApp().preset_bundle->printers.get_edited_preset().config; - if (!physical_printer_config || p->model.objects.empty()) + if (! physical_printer_config || p->model.objects.empty()) return; PrintHostJob upload_job(physical_printer_config); @@ -19468,7 +19459,7 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) // Orca: the use_3mf printer option makes us send a .gcode.3mf to the printer const auto* use_3mf_opt = physical_printer_config->option("use_3mf"); - const bool use_3mf = use_3mf_opt != nullptr && use_3mf_opt->value; + const bool use_3mf = use_3mf_opt != nullptr && use_3mf_opt->value; upload_job.upload_data.use_3mf = use_3mf; // Orca: the concrete plate to export/send (PLATE_CURRENT_IDX resolves to the current plate). @@ -19482,7 +19473,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(into_path(this->p->get_project_filename(".3mf"))); + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); } catch (const Slic3r::PlaceholderParserError& ex) { // Show the error with monospaced font. show_error(this, ex.what(), true); @@ -19518,8 +19510,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) } { - auto preset_bundle = wxGetApp().preset_bundle; - auto config = get_app_config(); + auto preset_bundle = wxGetApp().preset_bundle; + auto config = get_app_config(); const auto host_type_opt = physical_printer_config->option>("host_type"); const auto host_type = host_type_opt != nullptr ? host_type_opt->value : htElegooLink; @@ -19534,8 +19526,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); } else if (host_type == htCrealityPrint) { - pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), - groups, storage_paths, storage_names, + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, config->get_bool("open_device_tab_post_upload"), upload_job.printhost.get()); } else if (flashforge_local_api) { @@ -19546,10 +19538,10 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) } std::vector slots; - bool supports_material_station = false; + bool supports_material_station = false; { wxBusyCursor wait; - wxString msg; + wxString msg; if (!flashforge_host->fetch_material_slots(slots, &supports_material_station, msg)) { show_error(this, msg.empty() ? _L("Unable to log in to the Flashforge printer.") : msg, false); return; @@ -19557,10 +19549,10 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) } std::vector project_filaments; - PlateDataPtrs plate_data_list; - DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config(); - const auto* filament_color = dynamic_cast(cfg.option("filament_colour")); - const auto* filament_id_opt = dynamic_cast(cfg.option("filament_ids")); + PlateDataPtrs plate_data_list; + DynamicPrintConfig cfg = wxGetApp().preset_bundle->full_config(); + const auto* filament_color = dynamic_cast(cfg.option("filament_colour")); + const auto* filament_id_opt = dynamic_cast(cfg.option("filament_ids")); auto enrich_project_filaments = [&](std::vector& filaments) { for (auto& filament : filaments) { if (filament.id < 0) @@ -19569,7 +19561,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) std::string display_filament_type; try { filament.type = cfg.get_filament_type(display_filament_type, filament.id); - } catch (...) {} + } catch (...) { + } if (filament.type.empty()) filament.type = display_filament_type; @@ -19584,9 +19577,7 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) }; p->partplate_list.store_to_3mf_structure(plate_data_list, true, plate_idx); - PlateData* selected_plate_data = (resolved_plate_idx >= 0 && resolved_plate_idx < static_cast(plate_data_list.size())) ? - plate_data_list[resolved_plate_idx] : - nullptr; + PlateData* selected_plate_data = (resolved_plate_idx >= 0 && resolved_plate_idx < static_cast(plate_data_list.size())) ? plate_data_list[resolved_plate_idx] : nullptr; if (selected_plate_data == nullptr && !plate_data_list.empty()) selected_plate_data = plate_data_list.front(); @@ -19602,10 +19593,13 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) enrich_project_filaments(project_filaments); release_PlateData_list(plate_data_list); - pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), - groups, storage_paths, storage_names, - config->get_bool("open_device_tab_post_upload"), flashforge_host, - supports_material_station, std::move(slots), project_filaments); + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, + config->get_bool("open_device_tab_post_upload"), + flashforge_host, + supports_material_station, + std::move(slots), + project_filaments); } else { pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); @@ -19618,11 +19612,11 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) config->set_bool("open_device_tab_post_upload", pDlg->switch_to_device_tab()); // PrintHostUpload upload_data; - upload_job.switch_to_device_tab = pDlg->switch_to_device_tab(); - upload_job.upload_data.upload_path = pDlg->filename(); - upload_job.upload_data.post_action = pDlg->post_action(); - upload_job.upload_data.group = pDlg->group(); - upload_job.upload_data.storage = pDlg->storage(); + upload_job.switch_to_device_tab = pDlg->switch_to_device_tab(); + upload_job.upload_data.upload_path = pDlg->filename(); + upload_job.upload_data.post_action = pDlg->post_action(); + upload_job.upload_data.group = pDlg->group(); + upload_job.upload_data.storage = pDlg->storage(); upload_job.upload_data.extended_info = pDlg->extendedInfo(); // Orca: gcode inside a .gcode.3mf is index-coded (Metadata/plate_.gcode) and a bundle may // carry several of them, so the upload must name which plate to print via a 1-based plateindex. @@ -19636,10 +19630,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) } // Show "Is printer clean" dialog for PrusaConnect - Upload and print. - if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && - upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { - GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), - wxOK | wxCANCEL); + if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); if (dlg.ShowModal() != wxID_OK) return; } @@ -19669,14 +19661,15 @@ int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) try { p->m_print_job_data._3mf_path = fs::path(plate->get_tmp_gcode_path()); p->m_print_job_data._3mf_path.replace_extension("3mf"); - } catch (std::exception&) { + } + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } SaveStrategy strategy = SaveStrategy::Silence | SaveStrategy::SkipModel | SaveStrategy::WithGcode | SaveStrategy::SkipAuxiliary; #if !BBL_RELEASE_TO_PUBLIC - // only save model in QA environment + //only save model in QA environment std::string sel = get_app_config()->get("iot_environment"); if (sel == ENV_PRE_HOST) strategy = SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithGcode; @@ -19696,19 +19689,20 @@ int Plater::export_config_3mf(int plate_idx, Export3mfProgressFn proFn) PartPlate* plate = get_partplate_list().get_curr_plate(); try { p->m_print_job_data._3mf_config_path = fs::path(plate->get_temp_config_3mf_path()); - } catch (std::exception&) { + } + catch (std::exception&) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } SaveStrategy strategy = SaveStrategy::Silence | SaveStrategy::SkipModel | SaveStrategy::WithSliceInfo | SaveStrategy::SkipAuxiliary; - result = export_3mf(p->m_print_job_data._3mf_config_path, strategy, plate_idx, proFn); + result = export_3mf(p->m_print_job_data._3mf_config_path, strategy, plate_idx, proFn); return result; } -// BBS -void Plater::send_calibration_job_finished(wxCommandEvent& evt) +//BBS +void Plater::send_calibration_job_finished(wxCommandEvent & evt) { p->main_frame->request_select_tab(TAB_ID_CALIBRATION); auto calibration_panel = p->main_frame->m_calibration; @@ -19722,9 +19716,9 @@ void Plater::send_calibration_job_finished(wxCommandEvent& evt) evt.Skip(); } -void Plater::print_job_finished(wxCommandEvent& evt) +void Plater::print_job_finished(wxCommandEvent &evt) { - // start print failed + //start print failed if (p) { #ifdef __APPLE__ p->hide_select_machine_dlg(); @@ -19737,60 +19731,63 @@ void Plater::print_job_finished(wxCommandEvent& evt) #endif // __APPLE__ } + Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) - return; + if (!dev) return; dev->set_selected_machine(evt.GetString().ToStdString()); p->main_frame->request_select_tab(TAB_ID_MONITOR); - // jump to monitor and select device status panel + //jump to monitor and select device status panel MonitorPanel* curr_monitor = p->main_frame->m_monitor; - if (curr_monitor) - curr_monitor->get_tabpanel()->ChangeSelection(MonitorPanel::PrinterTab::PT_STATUS); + if(curr_monitor) + curr_monitor->get_tabpanel()->ChangeSelection(MonitorPanel::PrinterTab::PT_STATUS); } void Plater::send_job_finished(wxCommandEvent& evt) { Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) - return; - // dev->set_selected_machine(evt.GetString().ToStdString()); + if (!dev) return; + //dev->set_selected_machine(evt.GetString().ToStdString()); send_gcode_finish(evt.GetString()); p->hide_send_to_printer_dlg(); - // p->main_frame->request_select_tab(TAB_ID_MONITOR); + //p->main_frame->request_select_tab(TAB_ID_MONITOR); ////jump to monitor and select device status panel - // MonitorPanel* curr_monitor = p->main_frame->m_monitor; - // if (curr_monitor) - // curr_monitor->get_tabpanel()->ChangeSelection(MonitorPanel::PrinterTab::PT_STATUS); + //MonitorPanel* curr_monitor = p->main_frame->m_monitor; + //if (curr_monitor) + // curr_monitor->get_tabpanel()->ChangeSelection(MonitorPanel::PrinterTab::PT_STATUS); } -void Plater::publish_job_finished(wxCommandEvent& evt) +void Plater::publish_job_finished(wxCommandEvent &evt) { p->m_publish_dlg->EndModal(wxID_OK); - // GUI::wxGetApp().load_url(evt.GetString()); - // GUI::wxGetApp().open_publish_page_dialog(evt.GetString()); + // GUI::wxGetApp().load_url(evt.GetString()); + //GUI::wxGetApp().open_publish_page_dialog(evt.GetString()); } // Called when the Eject button is pressed. void Plater::eject_drive() { - wxBusyCursor wait; + wxBusyCursor wait; wxGetApp().removable_drive_manager()->set_and_verify_last_save_path(p->last_output_dir_path); - wxGetApp().removable_drive_manager()->eject_drive(); + wxGetApp().removable_drive_manager()->eject_drive(); } -void Plater::take_snapshot(const std::string& snapshot_name) { p->take_snapshot(snapshot_name); } -// void Plater::take_snapshot(const wxString &snapshot_name) { p->take_snapshot(snapshot_name); } -void Plater::take_snapshot(const std::string& snapshot_name, UndoRedo::SnapshotType snapshot_type) -{ p->take_snapshot(snapshot_name, snapshot_type); } -// void Plater::take_snapshot(const wxString &snapshot_name, UndoRedo::SnapshotType snapshot_type) { p->take_snapshot(snapshot_name, -// snapshot_type); } +void Plater::take_snapshot(const std::string &snapshot_name) { p->take_snapshot(snapshot_name); } +//void Plater::take_snapshot(const wxString &snapshot_name) { p->take_snapshot(snapshot_name); } +void Plater::take_snapshot(const std::string &snapshot_name, UndoRedo::SnapshotType snapshot_type) { p->take_snapshot(snapshot_name, snapshot_type); } +//void Plater::take_snapshot(const wxString &snapshot_name, UndoRedo::SnapshotType snapshot_type) { p->take_snapshot(snapshot_name, snapshot_type); } void Plater::suppress_snapshots() { p->suppress_snapshots(); } void Plater::allow_snapshots() { p->allow_snapshots(); } // BBS: single snapshot -void Plater::single_snapshots_enter(SingleSnapshot* single) { p->single_snapshots_enter(single); } -void Plater::single_snapshots_leave(SingleSnapshot* single) { p->single_snapshots_leave(single); } +void Plater::single_snapshots_enter(SingleSnapshot *single) +{ + p->single_snapshots_enter(single); +} +void Plater::single_snapshots_leave(SingleSnapshot *single) +{ + p->single_snapshots_leave(single); +} void Plater::undo() { p->undo(); } void Plater::redo() { p->redo(); } void Plater::undo_to(int selection) @@ -19816,9 +19813,9 @@ void Plater::redo_to(int selection) bool Plater::undo_redo_string_getter(const bool is_undo, int idx, const char** out_text) { const std::vector& ss_stack = p->undo_redo_stack().snapshots(); - const int idx_in_ss_stack = p->get_active_snapshot_index() + (is_undo ? -(++idx) : idx); + const int idx_in_ss_stack = p->get_active_snapshot_index() + (is_undo ? -(++idx) : idx); - if (0 < idx_in_ss_stack && (size_t) idx_in_ss_stack < ss_stack.size() - 1) { + if (0 < idx_in_ss_stack && (size_t)idx_in_ss_stack < ss_stack.size() - 1) { *out_text = ss_stack[idx_in_ss_stack].name.c_str(); return true; } @@ -19826,19 +19823,18 @@ bool Plater::undo_redo_string_getter(const bool is_undo, int idx, const char** o return false; } -int Plater::update_print_required_data(Slic3r::DynamicPrintConfig config, - Slic3r::Model model, - Slic3r::PlateDataPtrs plate_data_list, - std::string file_name, - std::string file_path) -{ return p->update_print_required_data(config, model, plate_data_list, file_name, file_path); } +int Plater::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path) +{ + return p->update_print_required_data(config, model, plate_data_list, file_name, file_path); +} + void Plater::undo_redo_topmost_string_getter(const bool is_undo, std::string& out_text) { const std::vector& ss_stack = p->undo_redo_stack().snapshots(); - const int idx_in_ss_stack = p->get_active_snapshot_index() + (is_undo ? -1 : 0); + const int idx_in_ss_stack = p->get_active_snapshot_index() + (is_undo ? -1 : 0); - if (0 < idx_in_ss_stack && (size_t) idx_in_ss_stack < ss_stack.size() - 1) { + if (0 < idx_in_ss_stack && (size_t)idx_in_ss_stack < ss_stack.size() - 1) { out_text = ss_stack[idx_in_ss_stack].name; return; } @@ -19850,7 +19846,7 @@ bool Plater::search_string_getter(int idx, const char** label, const char** tool { const Search::OptionsSearcher& search_list = p->sidebar->get_searcher(); - if (0 <= idx && (size_t) idx < search_list.size()) { + if (0 <= idx && (size_t)idx < search_list.size()) { search_list[idx].get_marked_label_and_tooltip(label, tooltip); return true; } @@ -19877,7 +19873,7 @@ void Plater::on_filament_count_change(size_t num_filaments) sidebar().on_filament_count_change(num_filaments); sidebar().obj_list()->update_objects_list_filament_column(num_filaments); - Slic3r::GUI::PartPlateList& plate_list = get_partplate_list(); + Slic3r::GUI::PartPlateList &plate_list = get_partplate_list(); plate_list.set_filament_count(num_filaments); for (int i = 0; i < plate_list.get_plate_count(); ++i) { PartPlate* part_plate = plate_list.get_plate(i); @@ -19891,16 +19887,13 @@ void Plater::on_filament_count_change(size_t num_filaments) } } -void Plater::on_filaments_delete(size_t num_filaments, - size_t filament_id, - int replace_filament_id, - const std::vector& is_mixed_before_delete) +void Plater::on_filaments_delete(size_t num_filaments, size_t filament_id, int replace_filament_id, const std::vector& is_mixed_before_delete) { // only update elements in plater update_filament_colors_in_full_config(); // update fisrt print sequence and other layer sequence - // move to partplate->on_filament_deleted + //move to partplate->on_filament_deleted /*Slic3r::GUI::PartPlateList &plate_list = get_partplate_list(); for (int i = 0; i < plate_list.get_plate_count(); ++i) { PartPlate *part_plate = plate_list.get_plate(i); @@ -19911,13 +19904,12 @@ void Plater::on_filaments_delete(size_t num_filaments, // A volume assigned to a mixed slot legitimately sits past the physical filament count, so // the paint cleanup must know which slots were mixed. Callers that already shrank the arrays // pass the pre-delete flags; otherwise read the current ones. - const auto& is_mixed = is_mixed_before_delete.empty() ? - wxGetApp().preset_bundle->project_config.option("filament_is_mixed")->values : - is_mixed_before_delete; - for (ModelObject* mo : wxGetApp().model().objects) { - for (ModelVolume* mv : mo->volumes) { - mv->update_extruder_count_when_delete_filament(num_filaments, filament_id + 1, replace_filament_id + 1, - is_mixed); // this function is 1 base + const auto &is_mixed = is_mixed_before_delete.empty() + ? wxGetApp().preset_bundle->project_config.option("filament_is_mixed")->values + : is_mixed_before_delete; + for (ModelObject *mo : wxGetApp().model().objects) { + for (ModelVolume *mv : mo->volumes) { + mv->update_extruder_count_when_delete_filament(num_filaments, filament_id + 1, replace_filament_id + 1, is_mixed); // this function is 1 base } } @@ -19927,10 +19919,10 @@ void Plater::on_filaments_delete(size_t num_filaments, sidebar().obj_list()->update_objects_list_filament_column_when_delete_filament(filament_id, num_filaments, replace_filament_id); // update global support filament - static const char* keys[] = {"support_filament", "support_interface_filament"}; + static const char *keys[] = {"support_filament", "support_interface_filament"}; for (auto key : keys) if (p->config->has(key)) { - if (p->config->opt_int(key) == filament_id + 1) + if(p->config->opt_int(key) == filament_id + 1) (*(p->config)).erase(key); else { int new_value = p->config->opt_int(key) > filament_id ? p->config->opt_int(key) - 1 : p->config->opt_int(key); @@ -19948,7 +19940,7 @@ void Plater::on_filaments_delete(size_t num_filaments, }); if (replace_filament_id == -1) item->second.gcodes.erase(iter, item->second.gcodes.end()); - else if (iter != item->second.gcodes.end()) { + else if(iter != item->second.gcodes.end()) { iter->extruder = replace_filament_id + 1; } @@ -19961,10 +19953,10 @@ void Plater::on_filaments_delete(size_t num_filaments, std::vector Plater::get_extruders_colors() { - unsigned char rgba_color[4] = {}; - std::vector colors = get_extruder_colors_from_plater_config(); + unsigned char rgba_color[4] = {}; + std::vector colors = get_extruder_colors_from_plater_config(); std::vector colors_out(colors.size()); - for (const std::string& color : colors) { + for (const std::string &color : colors) { Slic3r::GUI::BitmapCache::parse_color4(color, rgba_color); size_t color_idx = &color - &colors.front(); colors_out[color_idx] = { @@ -19977,21 +19969,24 @@ std::vector Plater::get_extruders_colors() return colors_out; } -void Plater::on_bed_type_change(BedType bed_type) { sidebar().on_bed_type_change(bed_type); } +void Plater::on_bed_type_change(BedType bed_type) +{ + sidebar().on_bed_type_change(bed_type); +} bool Plater::update_filament_colors_in_full_config() { - DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; - const auto& full_config = wxGetApp().preset_bundle->full_config(); - ConfigOptionStrings* color_opt = project_config.option("filament_colour"); + DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; + const auto& full_config = wxGetApp().preset_bundle->full_config(); + ConfigOptionStrings* color_opt = project_config.option("filament_colour"); const ConfigOptionStrings* type_opt = full_config.option("filament_type"); p->config->option("filament_colour")->values = color_opt->values; - p->config->option("filament_type")->values = type_opt->values; + p->config->option("filament_type")->values = type_opt->values; return true; } -void Plater::config_change_notification(const DynamicPrintConfig& config, const std::string& key) +void Plater::config_change_notification(const DynamicPrintConfig &config, const std::string& key) { GLCanvas3D* view3d_canvas = get_view3D_canvas3D(); if (key == std::string("print_sequence")) { @@ -20001,23 +19996,24 @@ void Plater::config_change_notification(const DynamicPrintConfig& config, const if (seq_print->value == PrintSequence::ByObject) { std::string info_text = _u8L("Print By Object: \nWe suggest using auto-arrange to avoid collisions when printing."); notify_manager->bbl_show_seqprintinfo_notification(info_text); - } else + } + else notify_manager->bbl_close_seqprintinfo_notification(); } } // notification for more options } -void Plater::on_config_change(const DynamicPrintConfig& config) +void Plater::on_config_change(const DynamicPrintConfig &config) { - bool update_scheduled = false; + bool update_scheduled = false; bool bed_shape_changed = false; - // bool print_sequence_changed = false; + //bool print_sequence_changed = false; t_config_option_keys diff_keys = p->config->diff(config); size_t old_nozzle_size = 1, new_nozzle_size = 1; - auto* opt_old = p->config->option("nozzle_diameter"); - auto* opt_new = config.option("nozzle_diameter"); + auto * opt_old = p->config->option("nozzle_diameter"); + auto * opt_new = config.option("nozzle_diameter"); if (opt_old && opt_new) { old_nozzle_size = opt_old->values.size(); new_nozzle_size = opt_new->values.size(); @@ -20059,34 +20055,43 @@ void Plater::on_config_change(const DynamicPrintConfig& config) p->reset_gcode_toolpaths(); p->view3D->get_canvas3d()->reset_sequential_print_clearance(); p->preview->get_canvas3d()->reset_volumes(); - // BBS: invalid all the slice results + //BBS: invalid all the slice results p->partplate_list.invalid_all_slice_result(); } - // BBS: add bed_exclude_area - else if (opt_key == "printable_area" || opt_key == "bed_exclude_area" || opt_key == "bed_custom_texture" || - opt_key == "bed_custom_model" || opt_key == "extruder_clearance_height_to_lid" || - opt_key == "extruder_clearance_height_to_rod") { + //BBS: add bed_exclude_area + else if (opt_key == "printable_area" || opt_key == "bed_exclude_area" + || opt_key == "bed_custom_texture" || opt_key == "bed_custom_model" + || opt_key == "extruder_clearance_height_to_lid" + || opt_key == "extruder_clearance_height_to_rod") { bed_shape_changed = true; - update_scheduled = true; - } else if (opt_key == "bed_shape" || opt_key == "bed_custom_texture" || opt_key == "bed_custom_model") { + update_scheduled = true; + } + else if (opt_key == "bed_shape" || opt_key == "bed_custom_texture" || opt_key == "bed_custom_model") { bed_shape_changed = true; - update_scheduled = true; - } else if (boost::starts_with(opt_key, "enable_prime_tower") || boost::starts_with(opt_key, "prime_tower") || - boost::starts_with(opt_key, "wipe_tower") || opt_key == "filament_minimal_purge_on_wipe_tower" || - opt_key == "single_extruder_multi_material" || - // BBS - opt_key == "prime_volume") { update_scheduled = true; - } else if (opt_key == "extruder_colour") { + } + else if (boost::starts_with(opt_key, "enable_prime_tower") || + boost::starts_with(opt_key, "prime_tower") || + boost::starts_with(opt_key, "wipe_tower") || + opt_key == "filament_minimal_purge_on_wipe_tower" || + opt_key == "single_extruder_multi_material" || + // BBS + opt_key == "prime_volume") { update_scheduled = true; - // p->sidebar->obj_list()->update_extruder_colors(); - } else if (opt_key == "printable_height") { + } + else if(opt_key == "extruder_colour") { + update_scheduled = true; + //p->sidebar->obj_list()->update_extruder_colors(); + } + else if (opt_key == "printable_height") { bed_shape_changed = true; - update_scheduled = true; - } else if (opt_key == "print_sequence") { update_scheduled = true; - // print_sequence_changed = true; - } else if (opt_key == "printer_model") { + } + else if (opt_key == "print_sequence") { + update_scheduled = true; + //print_sequence_changed = true; + } + else if (opt_key == "printer_model") { p->reset_gcode_toolpaths(); if (old_nozzle_size != new_nozzle_size) { update_flush_volume_matrix(old_nozzle_size, new_nozzle_size); @@ -20094,11 +20099,12 @@ void Plater::on_config_change(const DynamicPrintConfig& config) // update to force bed selection(for texturing) bed_shape_changed = true; - update_scheduled = true; + update_scheduled = true; } // Orca: update when *_filament changed - else if (opt_key == "support_interface_filament" || opt_key == "support_filament" || opt_key == "outer_wall_filament_id" || - opt_key == "inner_wall_filament_id" || opt_key == "sparse_infill_filament_id" || opt_key == "internal_solid_filament_id" || + else if (opt_key == "support_interface_filament" || opt_key == "support_filament" || + opt_key == "outer_wall_filament_id" || opt_key == "inner_wall_filament_id" || + opt_key == "sparse_infill_filament_id" || opt_key == "internal_solid_filament_id" || opt_key == "top_surface_filament_id" || opt_key == "bottom_surface_filament_id") { update_scheduled = true; } @@ -20121,45 +20127,42 @@ void Plater::on_config_change(const DynamicPrintConfig& config) void Plater::update_flush_volume_matrix(size_t old_nozzle_size, size_t new_nozzle_size) { - size_t nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - Slic3r::DynamicPrintConfig* project_config = &wxGetApp().preset_bundle->project_config; + size_t nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); + Slic3r::DynamicPrintConfig *project_config = &wxGetApp().preset_bundle->project_config; // Verify whether it is the first time start Studio - size_t filament_nums = project_config->option("filament_colour")->values.size(); + size_t filament_nums = project_config->option("filament_colour")->values.size(); size_t flush_volume_size = project_config->option("flush_volumes_matrix")->values.size(); assert(nozzle_nums == new_nozzle_size); if (old_nozzle_size < new_nozzle_size) { - std::vector first_flush_volume_mtx = - get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, -1, old_nozzle_size); + + std::vector first_flush_volume_mtx = get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, -1, old_nozzle_size); if (first_flush_volume_mtx.size() == filament_nums * filament_nums * new_nozzle_size) { // load file - set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, first_flush_volume_mtx, -1, - new_nozzle_size); + set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, first_flush_volume_mtx, -1, new_nozzle_size); } else { first_flush_volume_mtx.resize(filament_nums * filament_nums, 0); std::vector flush_volume_mtx; for (size_t i = 0; i < new_nozzle_size; ++i) { flush_volume_mtx.insert(flush_volume_mtx.end(), first_flush_volume_mtx.begin(), first_flush_volume_mtx.end()); } - set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, flush_volume_mtx, -1, - new_nozzle_size); + set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, flush_volume_mtx, -1, new_nozzle_size); } std::vector flush_multipliers = project_config->option("flush_multiplier")->values; flush_multipliers.resize(nozzle_nums, 1.f); project_config->option("flush_multiplier")->values = flush_multipliers; - } else if (old_nozzle_size > new_nozzle_size) { + } + else if (old_nozzle_size > new_nozzle_size) { std::vector new_flush_volume_mtx; for (size_t i = 0; i < new_nozzle_size; ++i) { - std::vector flush_volume_mtx = - get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, -1, old_nozzle_size); + std::vector flush_volume_mtx = get_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, -1, old_nozzle_size); flush_volume_mtx.resize(filament_nums * filament_nums, 0); new_flush_volume_mtx.insert(new_flush_volume_mtx.end(), flush_volume_mtx.begin(), flush_volume_mtx.end()); } std::vector flush_multipliers = project_config->option("flush_multiplier")->values; flush_multipliers.resize(nozzle_nums, 1.f); - set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, new_flush_volume_mtx, -1, - new_nozzle_size); + set_flush_volumes_matrix(project_config->option("flush_volumes_matrix")->values, new_flush_volume_mtx, -1, new_nozzle_size); project_config->option("flush_multiplier")->values = flush_multipliers; } } @@ -20173,43 +20176,32 @@ void Plater::set_bed_shape() const if (curr->is_system) texture_filename = PresetUtils::system_printer_bed_texture(*curr); else { - auto* printer_model = curr->config.opt("printer_model"); - if (printer_model != nullptr && !printer_model->value.empty()) { + auto *printer_model = curr->config.opt("printer_model"); + if (printer_model != nullptr && ! printer_model->value.empty()) { texture_filename = bundle->get_texture_for_printer_model(printer_model->value); } } } set_bed_shape(p->config->option("printable_area")->values, - // BBS: add bed exclude areas - p->config->option("bed_exclude_area")->values, - p->config->option("wrapping_exclude_area")->values, - p->config->option("printable_height")->value, - p->config->option("extruder_printable_area")->values, - p->config->option("extruder_printable_height")->values, - p->config->option("bed_custom_texture")->value.empty() ? - texture_filename : - p->config->option("bed_custom_texture")->value, - p->config->option("bed_custom_model")->value); + //BBS: add bed exclude areas + p->config->option("bed_exclude_area")->values, + p->config->option("wrapping_exclude_area")->values, + p->config->option("printable_height")->value, + p->config->option("extruder_printable_area")->values, + p->config->option("extruder_printable_height")->values, + p->config->option("bed_custom_texture")->value.empty() ? texture_filename : p->config->option("bed_custom_texture")->value, + p->config->option("bed_custom_model")->value); } -// BBS: add bed exclude area -void Plater::set_bed_shape(const Pointfs& shape, - const Pointfs& exclude_area, - const Pointfs& wrapping_exclude_area, - const double printable_height, - std::vector extruder_areas, - std::vector extruder_heights, - const std::string& custom_texture, - const std::string& custom_model, - bool force_as_custom) const +//BBS: add bed exclude area +void Plater::set_bed_shape(const Pointfs& shape, const Pointfs& exclude_area, const Pointfs& wrapping_exclude_area, const double printable_height, std::vector extruder_areas, std::vector extruder_heights, const std::string& custom_texture, const std::string& custom_model, bool force_as_custom) const { - p->set_bed_shape(make_counter_clockwise(shape), exclude_area, wrapping_exclude_area, printable_height, extruder_areas, extruder_heights, - custom_texture, custom_model, force_as_custom); + p->set_bed_shape(make_counter_clockwise(shape), exclude_area, wrapping_exclude_area, printable_height, extruder_areas, extruder_heights, custom_texture, custom_model, force_as_custom); } void Plater::force_filament_colors_update() { -// BBS: filament_color logic has been moved out of filament setting +//BBS: filament_color logic has been moved out of filament setting #if 0 bool update_scheduled = false; DynamicPrintConfig* config = p->config; @@ -20242,12 +20234,15 @@ void Plater::force_filament_colors_update() void Plater::force_print_bed_update() { - // Fill in the printer model key with something which cannot possibly be valid, so that Plater::on_config_change() will update the print - // bed once a new Printer profile config is loaded. + // Fill in the printer model key with something which cannot possibly be valid, so that Plater::on_config_change() will update the print bed + // once a new Printer profile config is loaded. p->config->opt_string("printer_model", true) = "bbl_empty"; } -void Plater::on_activate() { this->p->show_delayed_error_message(); } +void Plater::on_activate() +{ + this->p->show_delayed_error_message(); +} // Get vector of extruder colors considering filament color, if extruder color is undefined. std::vector Plater::get_extruder_colors_from_plater_config(const GCodeProcessorResult* const result) const @@ -20270,9 +20265,8 @@ namespace { // A gradient mixed filament fades between its two components over Z, so the UI shows it as a // two-tone swatch rather than one blended colour. Resolve each slot to its from/to endpoint // colours; non-gradient slots are left untouched. -struct MixedGradientSlot -{ - bool is_gradient = false; +struct MixedGradientSlot { + bool is_gradient = false; std::string color_from; std::string color_to; }; @@ -20285,16 +20279,12 @@ std::vector parse_mixed_gradient_slots(const Slic3r::DynamicP const auto* mixed_comp = config.option("filament_mixed_components"); const auto* grad_range = config.option("filament_mixed_gradient_range"); const auto* fil_colour = config.option("filament_colour"); - if (!is_mixed || !mixed_grad || !mixed_comp || !fil_colour) - return result; + if (!is_mixed || !mixed_grad || !mixed_comp || !fil_colour) return result; for (size_t i = 0; i < slot_count && i < is_mixed->values.size(); ++i) { - if (!is_mixed->values[i]) - continue; - if (i >= mixed_grad->values.size() || !mixed_grad->values[i]) - continue; - if (i >= mixed_comp->values.size()) - continue; + if (!is_mixed->values[i]) continue; + if (i >= mixed_grad->values.size() || !mixed_grad->values[i]) continue; + if (i >= mixed_comp->values.size()) continue; std::vector comp_ids; std::istringstream iss(mixed_comp->values[i]); @@ -20304,8 +20294,7 @@ std::vector parse_mixed_gradient_slots(const Slic3r::DynamicP if (std::sscanf(tok.c_str(), "%u", &v) == 1) comp_ids.push_back(v); } - if (comp_ids.size() != 2) - continue; + if (comp_ids.size() != 2) continue; int direction = 0; if (grad_range && i < grad_range->values.size()) { @@ -20315,11 +20304,13 @@ std::vector parse_mixed_gradient_slots(const Slic3r::DynamicP direction = (v0 > v1) ? 0 : 1; } - unsigned int from_id = (direction == 0) ? comp_ids[0] : comp_ids[1]; - unsigned int to_id = (direction == 0) ? comp_ids[1] : comp_ids[0]; + unsigned int from_id = (direction == 0) ? comp_ids[0] : comp_ids[1]; + unsigned int to_id = (direction == 0) ? comp_ids[1] : comp_ids[0]; result[i].is_gradient = true; - result[i].color_from = (from_id >= 1 && from_id <= fil_colour->values.size()) ? fil_colour->values[from_id - 1] : "#D9D9D9"; - result[i].color_to = (to_id >= 1 && to_id <= fil_colour->values.size()) ? fil_colour->values[to_id - 1] : "#D9D9D9"; + result[i].color_from = (from_id >= 1 && from_id <= fil_colour->values.size()) + ? fil_colour->values[from_id - 1] : "#D9D9D9"; + result[i].color_to = (to_id >= 1 && to_id <= fil_colour->values.size()) + ? fil_colour->values[to_id - 1] : "#D9D9D9"; } return result; } @@ -20330,8 +20321,7 @@ std::vector Plater::get_filament_colors_render_info() const { const Slic3r::DynamicPrintConfig* config = &wxGetApp().preset_bundle->project_config; std::vector color_packs; - if (!config->has("filament_multi_colour")) - return color_packs; + if (!config->has("filament_multi_colour")) return color_packs; color_packs = (config->option("filament_multi_colour"))->values; @@ -20346,16 +20336,14 @@ std::vector Plater::get_filament_colors_render_info() const std::vector Plater::get_filament_color_render_type() const { - const Slic3r::DynamicPrintConfig* config = &wxGetApp().preset_bundle->project_config; - std::vector ctype; - if (!config->has("filament_colour_type")) - return ctype; + const Slic3r::DynamicPrintConfig *config = &wxGetApp().preset_bundle->project_config; + std::vector ctype; + if (!config->has("filament_colour_type")) return ctype; ctype = (config->option("filament_colour_type"))->values; auto slots = parse_mixed_gradient_slots(*config, ctype.size()); - while (ctype.size() < slots.size()) - ctype.push_back("1"); + while (ctype.size() < slots.size()) ctype.push_back("1"); for (size_t i = 0; i < ctype.size() && i < slots.size(); ++i) { if (slots[i].is_gradient) ctype[i] = "0"; @@ -20371,11 +20359,12 @@ const std::vector>& Plater::get_filament_gradient_ramps() // are built from. The cache is static rather than a Plater member because the extruder icons // ask for the ramps from MenuFactory::init(), which runs while this Plater is still inside its // own constructor, so wxGetApp().plater_ is not assigned yet. - static std::string s_ramps_key; + static std::string s_ramps_key; static std::vector> s_ramps; - static const char* ramp_keys[] = {"filament_is_mixed", "filament_mixed_gradient", "filament_mixed_components", - "filament_colour", "filament_mixed_gradient_range", "filament_mixed_gradient_curve"}; + static const char* ramp_keys[] = {"filament_is_mixed", "filament_mixed_gradient", + "filament_mixed_components", "filament_colour", + "filament_mixed_gradient_range", "filament_mixed_gradient_curve"}; const Slic3r::DynamicPrintConfig& config = wxGetApp().preset_bundle->project_config; std::string key; @@ -20387,8 +20376,8 @@ const std::vector>& Plater::get_filament_gradient_ramps() // 64 bands outresolve every swatch drawn from this, all of which resample it down to their // own height, so one cached resolution serves the icons and both ImGui filament bars. - const auto* colour_opt = config.option("filament_colour"); - const size_t n = colour_opt ? colour_opt->values.size() : 0; + const auto* colour_opt = config.option("filament_colour"); + const size_t n = colour_opt ? colour_opt->values.size() : 0; s_ramps.assign(n, {}); for (size_t i = 0; i < n; ++i) s_ramps[i] = mixed_gradient_ramp(config, i, 64); @@ -20409,8 +20398,9 @@ std::vector Plater::get_colors_for_color_print(const GCodeProcessor if (code.type == CustomGCode::ColorChange) colors.emplace_back(code.color); } - } else { - // BBS + } + else { + //BBS colors.reserve(colors.size() + p->model.get_curr_plate_custom_gcodes().gcodes.size()); for (const CustomGCode::Item& code : p->model.get_curr_plate_custom_gcodes().gcodes) { if (code.type == CustomGCode::ColorChange) @@ -20423,23 +20413,23 @@ std::vector Plater::get_colors_for_color_print(const GCodeProcessor void Plater::set_global_filament_map_mode(FilamentMapMode mode) { - auto& project_config = wxGetApp().preset_bundle->project_config; - auto mode_ptr = project_config.option>("filament_map_mode"); + auto& project_config = wxGetApp().preset_bundle->project_config; + auto mode_ptr = project_config.option>("filament_map_mode"); FilamentMapMode old_mode = mode_ptr->value; - if (mode != old_mode) + if(mode != old_mode) on_filament_map_mode_change(); mode_ptr->value = mode; } void Plater::set_global_filament_map(const std::vector& filament_map) { - auto& project_config = wxGetApp().preset_bundle->project_config; + auto& project_config = wxGetApp().preset_bundle->project_config; project_config.option("filament_map")->values = filament_map; } void Plater::set_global_filament_volume_map(const std::vector& filament_volume_map) { - auto& project_config = wxGetApp().preset_bundle->project_config; + auto& project_config = wxGetApp().preset_bundle->project_config; project_config.option("filament_volume_map")->values = filament_volume_map; } @@ -20455,6 +20445,7 @@ std::vector Plater::get_global_filament_volume_map() const return project_config.option("filament_volume_map")->values; } + FilamentMapMode Plater::get_global_filament_map_mode() const { auto& project_config = wxGetApp().preset_bundle->project_config; @@ -20464,16 +20455,19 @@ FilamentMapMode Plater::get_global_filament_map_mode() const void Plater::on_filament_map_mode_change() { auto& plate_list = this->get_partplate_list(); - int plate_count = plate_list.get_plate_count(); + int plate_count = plate_list.get_plate_count(); for (int idx = 0; idx < plate_count; ++idx) { - auto plate = plate_list.get_plate(idx); + auto plate=plate_list.get_plate(idx); auto plate_map_mode = plate->get_filament_map_mode(); if (plate_map_mode == fmmDefault) plate->clear_filament_map(); } } -wxWindow* Plater::get_select_machine_dialog() { return p->m_select_machine_dlg; } +wxWindow* Plater::get_select_machine_dialog() +{ + return p->m_select_machine_dlg; +} void Plater::update_print_error_info(int code, std::string msg, std::string extra) { @@ -20488,20 +20482,40 @@ void Plater::update_print_error_info(int code, std::string msg, std::string extr p->main_frame->m_calibration->update_print_error_info(code, msg, extra); } -wxString Plater::get_project_filename(const wxString& extension) const { return p->get_project_filename(extension); } +wxString Plater::get_project_filename(const wxString& extension) const +{ + return p->get_project_filename(extension); +} -wxString Plater::get_export_gcode_filename(const wxString& extension, bool only_filename, bool export_all) const -{ return p->get_export_gcode_filename(extension, only_filename, export_all); } +wxString Plater::get_export_gcode_filename(const wxString & extension, bool only_filename, bool export_all) const +{ + return p->get_export_gcode_filename(extension, only_filename, export_all); +} -void Plater::set_project_filename(const wxString& filename) { p->set_project_filename(filename); } +void Plater::set_project_filename(const wxString& filename) +{ + p->set_project_filename(filename); +} -bool Plater::is_export_gcode_scheduled() const { return p->background_process.is_export_scheduled(); } +bool Plater::is_export_gcode_scheduled() const +{ + return p->background_process.is_export_scheduled(); +} -const Selection& Plater::get_selection() const { return p->get_selection(); } +const Selection &Plater::get_selection() const +{ + return p->get_selection(); +} -int Plater::get_selected_object_idx() { return p->get_selected_object_idx(); } +int Plater::get_selected_object_idx() +{ + return p->get_selected_object_idx(); +} -bool Plater::is_single_full_object_selection() const { return p->get_selection().is_single_full_object(); } +bool Plater::is_single_full_object_selection() const +{ + return p->get_selection().is_single_full_object(); +} GLCanvas3D* Plater::canvas3D() { @@ -20515,9 +20529,15 @@ const GLCanvas3D* Plater::canvas3D() const return p->get_current_canvas3D(); } -GLCanvas3D* Plater::get_view3D_canvas3D() { return p ? p->view3D->get_canvas3d() : nullptr; } +GLCanvas3D* Plater::get_view3D_canvas3D() +{ + return p ? p->view3D->get_canvas3d() : nullptr; +} -GLCanvas3D* Plater::get_preview_canvas3D() { return p->preview->get_canvas3d(); } +GLCanvas3D* Plater::get_preview_canvas3D() +{ + return p->preview->get_canvas3d(); +} GLCanvas3D* Plater::get_assmeble_canvas3D() { @@ -20526,36 +20546,51 @@ GLCanvas3D* Plater::get_assmeble_canvas3D() return nullptr; } -GLCanvas3D* Plater::get_current_canvas3D(bool exclude_preview) { return p->get_current_canvas3D(exclude_preview); } +GLCanvas3D* Plater::get_current_canvas3D(bool exclude_preview) +{ + return p->get_current_canvas3D(exclude_preview); +} void Plater::arrange() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle()) { p->take_snapshot(_u8L("Arrange")); replace_job(w, std::make_unique()); } } -void Plater::set_current_canvas_as_dirty() { p->set_current_canvas_as_dirty(); } +void Plater::set_current_canvas_as_dirty() +{ + p->set_current_canvas_as_dirty(); +} -void Plater::unbind_canvas_event_handlers() { p->unbind_canvas_event_handlers(); } +void Plater::unbind_canvas_event_handlers() +{ + p->unbind_canvas_event_handlers(); +} -void Plater::reset_canvas_volumes() { p->reset_canvas_volumes(); } +void Plater::reset_canvas_volumes() +{ + p->reset_canvas_volumes(); +} -PrinterTechnology Plater::printer_technology() const { return p->printer_technology; } +PrinterTechnology Plater::printer_technology() const +{ + return p->printer_technology; +} -const DynamicPrintConfig* Plater::config() const { return p->config; } +const DynamicPrintConfig * Plater::config() const { return p->config; } bool Plater::set_printer_technology(PrinterTechnology printer_technology) { p->printer_technology = printer_technology; - bool ret = p->background_process.select_technology(printer_technology); + bool ret = p->background_process.select_technology(printer_technology); if (ret) { // Update the active presets. } - // FIXME for SLA synchronize - // p->background_process.apply(Model)! + //FIXME for SLA synchronize + //p->background_process.apply(Model)! if (printer_technology == ptSLA) { for (ModelObject* model_object : p->model.objects) { @@ -20564,7 +20599,7 @@ bool Plater::set_printer_technology(PrinterTechnology printer_technology) } p->label_btn_export = printer_technology == ptFFF ? L("Export G-code") : L("Export"); - p->label_btn_send = printer_technology == ptFFF ? L("Send G-code") : L("Send to printer"); + p->label_btn_send = printer_technology == ptFFF ? L("Send G-code") : L("Send to printer"); if (wxGetApp().mainframe != nullptr) wxGetApp().mainframe->update_menubar(); @@ -20585,8 +20620,7 @@ void Plater::clear_before_change_mesh(int obj_idx) // may be different and they would make no sense. bool paint_removed = false; for (ModelVolume* mv : mo->volumes) { - paint_removed |= !mv->supported_facets.empty() || !mv->seam_facets.empty() || !mv->mmu_segmentation_facets.empty() || - !mv->fuzzy_skin_facets.empty(); + paint_removed |= ! mv->supported_facets.empty() || ! mv->seam_facets.empty() || ! mv->mmu_segmentation_facets.empty() || !mv->fuzzy_skin_facets.empty(); mv->supported_facets.reset(); mv->seam_facets.reset(); mv->mmu_segmentation_facets.reset(); @@ -20594,9 +20628,10 @@ void Plater::clear_before_change_mesh(int obj_idx) } if (paint_removed) { // snapshot_time is captured by copy so the lambda knows where to undo/redo to. - get_notification_manager()->push_notification(NotificationType::CustomSupportsAndSeamRemovedAfterRepair, - NotificationManager::NotificationLevel::PrintInfoNotificationLevel, - _u8L("Custom supports and color painting were removed before repairing.")); + get_notification_manager()->push_notification( + NotificationType::CustomSupportsAndSeamRemovedAfterRepair, + NotificationManager::NotificationLevel::PrintInfoNotificationLevel, + _u8L("Custom supports and color painting were removed before repairing.")); } } @@ -20609,8 +20644,7 @@ void Plater::changed_mesh(int obj_idx) p->schedule_background_process(); } -void Plater::changed_object(ModelObject& object) -{ +void Plater::changed_object(ModelObject &object){ assert(object.get_model() == &p->model); // is object from same model? object.invalidate_bounding_box(); @@ -20626,7 +20660,7 @@ void Plater::changed_object(ModelObject& object) // update print p->schedule_background_process(); - + // Check outside bed get_current_canvas3D()->requires_check_outside_state(); } @@ -20635,7 +20669,7 @@ void Plater::changed_object(int obj_idx) { if (obj_idx < 0) return; - ModelObject* object = p->model.objects[obj_idx]; + ModelObject *object = p->model.objects[obj_idx]; if (object == nullptr) return; changed_object(*object); @@ -20657,7 +20691,8 @@ void Plater::changed_objects(const std::vector& object_idxs) // Update the SLAPrint from the current Model, so that the reload_scene() // pulls the correct data, update the 3D scene. this->p->update_restart_background_process(true, false); - } else { + } + else { p->view3D->reload_scene(false); p->view3D->get_canvas3d()->update_instance_printable_state_for_objects(object_idxs); } @@ -20666,7 +20701,7 @@ void Plater::changed_objects(const std::vector& object_idxs) this->p->schedule_background_process(); } -void Plater::schedule_background_process(bool schedule /* = true*/) +void Plater::schedule_background_process(bool schedule/* = true*/) { if (schedule) this->p->schedule_background_process(); @@ -20674,7 +20709,10 @@ void Plater::schedule_background_process(bool schedule /* = true*/) this->p->suppressed_backround_processing_update = false; } -bool Plater::is_background_process_update_scheduled() const { return this->p->background_process_timer.IsRunning(); } +bool Plater::is_background_process_update_scheduled() const +{ + return this->p->background_process_timer.IsRunning(); +} void Plater::suppress_background_process(const bool stop_background_process) { @@ -20687,29 +20725,28 @@ void Plater::suppress_background_process(const bool stop_background_process) // Expose the slicing process to the device GUI. BackgroundSlicingProcess& Plater::background_process() { return p->background_process; } -void Plater::center_selection() { p->center_selection(); } -void Plater::drop_selection() { p->drop_selection(); } -void Plater::mirror(Axis axis) { p->mirror(axis); } -void Plater::split_object(bool auto_drop) { p->split_object(auto_drop); } -void Plater::split_volume() { p->split_volume(); } +void Plater::center_selection() { p->center_selection(); } +void Plater::drop_selection() { p->drop_selection(); } +void Plater::mirror(Axis axis) { p->mirror(axis); } +void Plater::split_object(bool auto_drop) { p->split_object(auto_drop); } +void Plater::split_volume() { p->split_volume(); } void Plater::optimize_rotation() { - auto& w = get_ui_job_worker(); + auto &w = get_ui_job_worker(); if (w.is_idle()) { p->take_snapshot(_u8L("Optimize Rotation")); replace_job(w, std::make_unique()); } } -void Plater::update_menus() { p->menus.update(); } +void Plater::update_menus() { p->menus.update(); } -wxString Plater::get_selected_printer_name_in_combox() -{ - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - std::string printer_model = preset_bundle->printers.get_selected_preset().config.option("printer_model")->value; +wxString Plater::get_selected_printer_name_in_combox() { + PresetBundle * preset_bundle = wxGetApp().preset_bundle; + std::string printer_model = preset_bundle->printers.get_selected_preset().config.option("printer_model")->value; return printer_model; } -void Plater::pop_warning_and_go_to_device_page(wxString printer_name, PrinterWarningType type, const wxString& title) +void Plater::pop_warning_and_go_to_device_page(wxString printer_name, PrinterWarningType type, const wxString &title) { printer_name.Replace("Bambu Lab", "", false); wxString content; @@ -20723,16 +20760,14 @@ void Plater::pop_warning_and_go_to_device_page(wxString printer_name, PrinterWar _L("OrcaSlicer can't connect to %s. Please check if the printer is powered on and connected to the network."), printer_name); } } else if (type == PrinterWarningType::INCONSISTENT) { - content = wxString::Format(_L("The currently connected printer on the device page is not %s. Please switch to %s before syncing."), - printer_name, printer_name); + content = wxString::Format(_L("The currently connected printer on the device page is not %s. Please switch to %s before syncing."), printer_name, printer_name); } else if (type == PrinterWarningType::UNINSTALL_FILAMENT) { content = _L("There are no filaments on the printer. Please load the filaments on the printer first."); } else if (type == PrinterWarningType::EMPTY_FILAMENT) { - content = _L("The filaments on the printer are all unknown types. Please go to the printer screen or software device page to set " - "the filament type."); + content = _L("The filaments on the printer are all unknown types. Please go to the printer screen or software device page to set the filament type."); } MessageDialog dlg(this, content, title, wxOK | wxFORWARD | wxICON_WARNING, _L("Device Page")); - auto result = dlg.ShowModal(); + auto result = dlg.ShowModal(); if (result == wxFORWARD) { wxGetApp().mainframe->select_tab(TAB_ID_MONITOR); } @@ -20743,13 +20778,13 @@ bool Plater::is_same_printer_for_connected_and_selected(bool popup_warning) if (!wxGetApp().getDeviceManager()) { return false; } - MachineObject* obj = wxGetApp().getDeviceManager()->get_selected_machine(); + MachineObject *obj = wxGetApp().getDeviceManager()->get_selected_machine(); if (obj == nullptr) { return false; } if (!check_printer_initialized(obj, true, popup_warning)) return false; - Preset* machine_preset = get_printer_preset(obj); + Preset * machine_preset = get_printer_preset(obj); if (!machine_preset) return false; @@ -20763,7 +20798,7 @@ bool Plater::is_same_printer_for_connected_and_selected(bool popup_warning) return true; } // BBS -// void Plater::show_action_buttons(const bool ready_to_slice) const { p->show_action_buttons(ready_to_slice); } +//void Plater::show_action_buttons(const bool ready_to_slice) const { p->show_action_buttons(ready_to_slice); } void Plater::fill_color(int extruder_id) { @@ -20772,7 +20807,7 @@ void Plater::fill_color(int extruder_id) } } -// BBS +//BBS void Plater::cut_selection_to_clipboard() { Plater::TakeSnapshot snapshot(this, "Cut Selected Objects"); @@ -20804,7 +20839,7 @@ void Plater::paste_from_clipboard() p->view3D->get_canvas3d()->get_selection().paste_from_clipboard(); } -// BBS: add clone +//BBS: add clone void Plater::clone_selection() { if (is_selection_empty()) @@ -20815,13 +20850,13 @@ void Plater::clone_selection() std::vector Plater::get_empty_cells(const Vec2f step) { - PartPlate* plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); + PartPlate* plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); BoundingBoxf3 build_volume = plate->get_build_volume(true); Vec2d vmin(build_volume.min.x(), build_volume.min.y()), vmax(build_volume.max.x(), build_volume.max.y()); BoundingBoxf bbox(vmin, vmax); std::vector cells; - auto min_x = step(0) / 2; // start_point.x() - step(0) * int((start_point.x() - bbox.min.x()) / step(0)); - auto min_y = step(1) / 2; // start_point.y() - step(1) * int((start_point.y() - bbox.min.y()) / step(1)); + auto min_x = step(0)/2;// start_point.x() - step(0) * int((start_point.x() - bbox.min.x()) / step(0)); + auto min_y = step(1)/2;// start_point.y() - step(1) * int((start_point.y() - bbox.min.y()) / step(1)); auto& exclude_box3s = plate->get_exclude_areas(); std::vector exclude_boxs; for (auto& box : exclude_box3s) { @@ -20838,14 +20873,14 @@ std::vector Plater::get_empty_cells(const Vec2f step) break; } } - if (in_exclude) + if(in_exclude) continue; cells.emplace_back(x, y); } return cells; } -void Plater::search(bool plater_is_active, Preset::Type type, wxWindow* tag, TextInput* etag, wxWindow* stag) +void Plater::search(bool plater_is_active, Preset::Type type, wxWindow *tag, TextInput *etag, wxWindow *stag) { if (plater_is_active) { if (is_preview_shown()) @@ -20856,12 +20891,13 @@ void Plater::search(bool plater_is_active, Preset::Type type, wxWindow* tag, Tex wxKeyEvent evt; #ifdef __APPLE__ evt.m_keyCode = 'f'; -#else /* __APPLE__ */ +#else /* __APPLE__ */ evt.m_keyCode = WXK_CONTROL_F; #endif /* __APPLE__ */ evt.SetControlDown(true); canvas3D()->on_char(evt); - } else + } + else p->sidebar->get_searcher().show_dialog(type, tag, etag, stag); } @@ -20884,8 +20920,7 @@ void Plater::sys_color_changed() p->preview->sys_color_changed(); p->sidebar->sys_color_changed(); p->menus.sys_color_changed(); - if (p->m_select_machine_dlg) - p->m_select_machine_dlg->sys_color_changed(); + if (p->m_select_machine_dlg) p->m_select_machine_dlg->sys_color_changed(); Layout(); GetParent()->Layout(); @@ -20904,48 +20939,60 @@ void Plater::enable_view_toolbar(bool enable) } #endif -bool Plater::init_collapse_toolbar() { return p->init_collapse_toolbar(); } +bool Plater::init_collapse_toolbar() +{ + return p->init_collapse_toolbar(); +} -const Camera& Plater::get_camera() const { return p->camera; } +const Camera& Plater::get_camera() const +{ + return p->camera; +} -Camera& Plater::get_camera() { return p->camera; } +Camera& Plater::get_camera() +{ + return p->camera; +} -// BBS: partplate list related functions -PartPlateList& Plater::get_partplate_list() { return p->partplate_list; } +//BBS: partplate list related functions +PartPlateList& Plater::get_partplate_list() +{ + return p->partplate_list; +} void Plater::apply_background_progress() { - PartPlate* part_plate = p->partplate_list.get_curr_plate(); - int plate_index = p->partplate_list.get_curr_plate_index(); - bool result_valid = part_plate->is_slice_result_valid(); + PartPlate* part_plate = p->partplate_list.get_curr_plate(); + int plate_index = p->partplate_list.get_curr_plate_index(); + bool result_valid = part_plate->is_slice_result_valid(); const auto& preset_bundle = wxGetApp().preset_bundle; - // always apply the current plate's print + //always apply the current plate's print Print::ApplyStatus invalidated; if (preset_bundle->get_printer_extruder_count() > 1) { - std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); + std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); std::vector f_volume_maps = part_plate->get_filament_volume_maps(); if (f_volume_maps.empty()) { f_volume_maps = preset_bundle->get_default_nozzle_volume_types_for_filaments(f_maps); } invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false, f_maps, f_volume_maps)); - } else + } + else invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false)); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" %1%: plate %2%, after apply, invalidated= %3%, previous result_valid %4% ") % __LINE__ % - plate_index % invalidated % result_valid; - if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, after apply, invalidated= %3%, previous result_valid %4% ") % __LINE__ % plate_index % invalidated % result_valid; + if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) + { part_plate->update_slice_result_valid_state(false); - // p->ready_to_slice = true; + //p->ready_to_slice = true; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, true); } } -// BBS: select Plate +//BBS: select Plate int Plater::select_plate(int plate_index, bool need_slice) { int ret; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, need_slice %3% ") % __LINE__ % plate_index % need_slice; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, need_slice %3% ")%__LINE__ %plate_index %need_slice; take_snapshot("select partplate!"); ret = p->partplate_list.select_plate(plate_index); if (!ret) { @@ -20954,106 +21001,124 @@ int Plater::select_plate(int plate_index, bool need_slice) } const auto& preset_bundle = wxGetApp().preset_bundle; - if ((!ret) && (p->background_process.can_switch_print())) { - // select successfully + if ((!ret) && (p->background_process.can_switch_print())) + { + //select successfully p->partplate_list.update_slice_context_to_current_plate(p->background_process); p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); p->update_print_volume_state(); - PartPlate* part_plate = p->partplate_list.get_curr_plate(); - bool result_valid = part_plate->is_slice_result_valid(); - PrintBase* print = nullptr; + PartPlate* part_plate = p->partplate_list.get_curr_plate(); + bool result_valid = part_plate->is_slice_result_valid(); + PrintBase* print = nullptr; GCodeResult* gcode_result = nullptr; Print::ApplyStatus invalidated; part_plate->get_print(&print, &gcode_result, NULL); - // always apply the current plate's print + //always apply the current plate's print if (preset_bundle->get_printer_extruder_count() > 1) { - std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); + std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); std::vector f_volume_maps = part_plate->get_filament_volume_maps(); if (f_volume_maps.empty()) { f_volume_maps = preset_bundle->get_default_nozzle_volume_types_for_filaments(f_maps); } invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false, f_maps, f_volume_maps)); - } else + } + else invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false)); bool model_fits, validate_err; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" %1%: plate %2%, after apply, invalidated= %3%, previous result_valid %4% ") % __LINE__ % - plate_index % invalidated % result_valid; - if (result_valid) { - if (is_preview_shown()) { - if (need_slice) { // from preview's thumbnail - if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) || (gcode_result->moves.empty())) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, after apply, invalidated= %3%, previous result_valid %4% ")%__LINE__ %plate_index %invalidated %result_valid; + if (result_valid) + { + if (is_preview_shown()) + { + if (need_slice) { //from preview's thumbnail + if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) || (gcode_result->moves.empty())){ if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) part_plate->update_slice_result_valid_state(false); p->process_completed_with_error = -1; - p->m_slice_all = false; + p->m_slice_all = false; reset_gcode_toolpaths(); reslice(); - } else { + } + else { validate_current_plate(model_fits, validate_err); - // just refresh_print + //just refresh_print reload_print(); p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false, true); } - } else { // from multiple slice's next - // do nothing } - } else { + else {// from multiple slice's next + //do nothing + } + } + else + { validate_current_plate(model_fits, validate_err); - if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) { + if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) + { part_plate->update_slice_result_valid_state(false); // BBS - // p->show_action_buttons(true); - // p->ready_to_slice = true; + //p->show_action_buttons(true); + //p->ready_to_slice = true; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, true); - } else { + } + else + { // BBS - // p->show_action_buttons(false); - // p->ready_to_slice = false; + //p->show_action_buttons(false); + //p->ready_to_slice = false; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); reload_print(); } } - } else { - // check inside status - // model_fits = p->view3D->get_canvas3d()->check_volumes_outside_state() != ModelInstancePVS_Partly_Outside; - // bool validate_err = false; + } + else + { + //check inside status + //model_fits = p->view3D->get_canvas3d()->check_volumes_outside_state() != ModelInstancePVS_Partly_Outside; + //bool validate_err = false; validate_current_plate(model_fits, validate_err); if (model_fits && !validate_err) { p->process_completed_with_error = -1; - } else { + } + else { p->process_completed_with_error = p->partplate_list.get_curr_plate_index(); } - if (is_preview_shown()) { - if (need_slice) { - // p->process_completed_with_error = -1; + if (is_preview_shown()) + { + if (need_slice) + { + //p->process_completed_with_error = -1; p->m_slice_all = false; reset_gcode_toolpaths(); if (model_fits && !validate_err) { - if (!check_ams_status(false)) { + if (!check_ams_status(false)){ return ret; } reslice(); - } else { + } + else { p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); - // sometimes the previous print's sliced result is still valid, but the newly added object is laid over the boundary - // then the print toolpath will be shown, so we should not refresh print here, only onload shell - // refresh_print(); + //sometimes the previous print's sliced result is still valid, but the newly added object is laid over the boundary + //then the print toolpath will be shown, so we should not refresh print here, only onload shell + //refresh_print(); p->update_fff_scene_only_shells(); } - } else { - // p->ready_to_slice = false; + } + else { + //p->ready_to_slice = false; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); reload_print(); } - } else { - // validate_current_plate(model_fits, validate_err); - // check inside status + } + else + { + //validate_current_plate(model_fits, validate_err); + //check inside status /*if (model_fits && !validate_err){ p->process_completed_with_error = -1; } @@ -21062,13 +21127,16 @@ int Plater::select_plate(int plate_index, bool need_slice) }*/ // BBS: don't show action buttons - // p->show_action_buttons(true); - // p->ready_to_slice = true; - if (model_fits && part_plate->has_printable_instances()) { - // p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, true)); + //p->show_action_buttons(true); + //p->ready_to_slice = true; + if (model_fits && part_plate->has_printable_instances()) + { + //p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, true)); p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, true); - } else { - // p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, false)); + } + else + { + //p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, false)); p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); } } @@ -21078,7 +21146,7 @@ int Plater::select_plate(int plate_index, bool need_slice) SimpleEvent event(EVT_GLCANVAS_PLATE_SELECT); p->on_plate_selected(event); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, return %3%") % __LINE__ % plate_index % ret; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: plate %2%, return %3%")%__LINE__ %plate_index %ret; return ret; } @@ -21089,12 +21157,13 @@ int Plater::select_sliced_plate(int plate_index, bool skip_zoom) Freeze(); ret = select_plate(plate_index, true); - if (ret) { + if (ret) + { BOOST_LOG_TRIVIAL(error) << "select_plate error for plate_idx=" << plate_index; Thaw(); return -1; } - if (skip_zoom) + if(skip_zoom) p->partplate_list.select_plate_view(); Thaw(); @@ -21110,13 +21179,11 @@ void Plater::validate_current_plate(bool& model_fits, bool& validate_error) { ObjectFilamentResults object_results; ModelInstanceEPrintVolumeState state = p->view3D->get_canvas3d()->check_volumes_outside_state(&object_results); - model_fits = (state != ModelInstancePVS_Partly_Outside); + model_fits = (state != ModelInstancePVS_Partly_Outside); - PartPlate* cur_plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); - if (model_fits) { // TPU check - bool tpu_valid = cur_plate->check_tpu_printable_status(wxGetApp().preset_bundle->full_config(), - wxGetApp().preset_bundle->get_used_tpu_filaments( - cur_plate->get_extruders(true))); + PartPlate *cur_plate = wxGetApp().plater()->get_partplate_list().get_curr_plate(); + if (model_fits) { // TPU check + bool tpu_valid = cur_plate->check_tpu_printable_status(wxGetApp().preset_bundle->full_config(), wxGetApp().preset_bundle->get_used_tpu_filaments(cur_plate->get_extruders(true))); model_fits &= tpu_valid; } @@ -21126,23 +21193,19 @@ void Plater::validate_current_plate(bool& model_fits, bool& validate_error) model_fits &= filament_printable; } - model_fits = model_fits && object_results.filaments.empty(); + model_fits = model_fits && object_results.filaments.empty(); validate_error = false; if (p->printer_technology == ptFFF) { - // std::string plater_text = _u8L("An object is laid over the boundary of plate or exceeds the height limit.\n" - // "Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the - // build volume.");; + //std::string plater_text = _u8L("An object is laid over the boundary of plate or exceeds the height limit.\n" + // "Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume.");; std::vector warnings; Polygons polygons; std::vector> height_polygons; - p->background_process.fff_print()->set_check_multi_filaments_compatibility( - wxGetApp().app_config->get("enable_high_low_temp_mixed_printing") == "false"); + p->background_process.fff_print()->set_check_multi_filaments_compatibility(wxGetApp().app_config->get("enable_high_low_temp_mixed_printing") == "false"); StringObjectException err = p->background_process.validate(&warnings, &polygons, &height_polygons); // update string by type post_process_string_object_exception(err); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": validate err=%1%, warnings=%2%, model_fits %3%") % err.string % warnings.size() % - model_fits; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": validate err=%1%, warnings=%2%, model_fits %3%")%err.string%warnings.size() %model_fits; if (err.string.empty()) { p->partplate_list.get_curr_plate()->update_apply_result_invalid(false); @@ -21154,13 +21217,14 @@ void Plater::validate_current_plate(bool& model_fits, bool& validate_error) p->view3D->get_canvas3d()->reset_sequential_print_clearance(); p->view3D->get_canvas3d()->set_as_dirty(); p->view3D->get_canvas3d()->request_extra_frame(); - } else { + } + else { // The print is not valid. p->partplate_list.get_curr_plate()->update_apply_result_invalid(true); // Show error as notification. p->notification_manager->push_validate_error_notification(err); p->process_validation_warnings(warnings); - // model_fits = false; + //model_fits = false; validate_error = true; p->view3D->get_canvas3d()->set_sequential_print_clearance_visible(true); p->view3D->get_canvas3d()->set_sequential_print_clearance_render_fill(true); @@ -21170,25 +21234,25 @@ void Plater::validate_current_plate(bool& model_fits, bool& validate_error) std::string clashed_text = get_object_clashed_text(); if (state == ModelInstancePVS_Partly_Outside) { p->notification_manager->push_plater_error_notification(clashed_text); - } else { + } + else { p->notification_manager->close_plater_error_notification(clashed_text); } - std::string left_unprintable_text = get_left_extruder_unprintable_text(), - right_unprintable_text = get_right_extruder_unprintable_text(); - if (!left_unprintable_text.empty()) { - p->notification_manager->bbl_show_filament_map_invalid_notification_before_slice(NotificationType::LeftExtruderUnprintableError, - left_unprintable_text); - } else { - p->notification_manager->bbl_close_filament_map_invalid_notification_before_slice( - NotificationType::LeftExtruderUnprintableError); + std::string left_unprintable_text = get_left_extruder_unprintable_text(), right_unprintable_text = get_right_extruder_unprintable_text(); + if (!left_unprintable_text.empty()) + { + p->notification_manager->bbl_show_filament_map_invalid_notification_before_slice(NotificationType::LeftExtruderUnprintableError, left_unprintable_text); + } + else { + p->notification_manager->bbl_close_filament_map_invalid_notification_before_slice(NotificationType::LeftExtruderUnprintableError); } - if (!right_unprintable_text.empty()) { - p->notification_manager->bbl_show_filament_map_invalid_notification_before_slice(NotificationType::RightExtruderUnprintableError, - right_unprintable_text); - } else { - p->notification_manager->bbl_close_filament_map_invalid_notification_before_slice( - NotificationType::RightExtruderUnprintableError); + if (!right_unprintable_text.empty()) + { + p->notification_manager->bbl_show_filament_map_invalid_notification_before_slice(NotificationType::RightExtruderUnprintableError,right_unprintable_text); + } + else { + p->notification_manager->bbl_close_filament_map_invalid_notification_before_slice(NotificationType::RightExtruderUnprintableError); } /*if (state == ModelInstancePVS_Limited) { @@ -21246,18 +21310,16 @@ bool Plater::refresh_missing_plugin_block(bool* block_toggled) std::vector refs = missing_refs(missing); std::sort(refs.begin(), refs.end()); std::string sig; - for (const std::string& r : refs) { - sig += r; - sig += '\n'; - } + for (const std::string& r : refs) { sig += r; sig += '\n'; } return sig; }; // Show/refresh the non-closable notification for one missing set. Only (re)create it when the // set changes; pushing every validate would close+recreate it (flicker, reset hover) since // validate runs on many triggers. shown_sig also gates plugin-load re-validation. - const auto update = [&](NotificationType type, const std::vector& missing, std::string* shown_sig, - const std::string& header, const std::string& resolve_label, + const auto update = [&](NotificationType type, const std::vector& missing, + std::string* shown_sig, const std::string& header, + const std::string& resolve_label, std::function resolve_action) { if (missing.empty()) { if (!shown_sig->empty()) { @@ -21272,49 +21334,46 @@ bool Plater::refresh_missing_plugin_block(bool* block_toggled) for (const auto& m : missing) body.emplace_back(JumpTo{m.ref.capability_name, m.opt, m.opt_type}); - p->notification_manager->push_plugin_missing_notification(type, header, resolve_label, std::move(body), - std::move(resolve_action)); + p->notification_manager->push_plugin_missing_notification( + type, header, resolve_label, std::move(body), std::move(resolve_action)); *shown_sig = sig; } }; - const std::vector missing_cloud = get_missing_cloud_plugins(); - const std::vector missing_local = get_missing_local_plugins(); + const std::vector missing_cloud = get_missing_cloud_plugins(); + const std::vector missing_local = get_missing_local_plugins(); const std::vector missing_cloud_refs = missing_refs(missing_cloud); const std::vector missing_local_refs = missing_refs(missing_local); - update(NotificationType::OrcaCloudPluginMissingError, missing_cloud, &p->m_cloud_missing_shown_sig, - _u8L("OrcaCloud plugins required by the current preset are not installed:"), _u8L("Install Plugins"), - [this, missing_cloud_refs](wxEvtHandler*) { - install_missing_cloud_plugins(missing_cloud_refs); - return false; - }); + update(NotificationType::OrcaCloudPluginMissingError, missing_cloud, + &p->m_cloud_missing_shown_sig, + _u8L("OrcaCloud plugins required by the current preset are not installed:"), + _u8L("Install Plugins"), + [this, missing_cloud_refs](wxEvtHandler*) { install_missing_cloud_plugins(missing_cloud_refs); return false; }); // "Find on OrcaCloud" is only a suggestion: it opens the browser but cannot resolve the missing // plugin in-session, so it never closes the notification or unblocks slicing. The user resolves a // local plugin by installing it or by changing the setting that needs it. - update(NotificationType::OrcaLocalPluginMissingError, missing_local, &p->m_local_missing_shown_sig, - _u8L("Local plugins required by the current preset are missing:"), _u8L("Find on OrcaCloud"), - [missing_local_refs](wxEvtHandler*) { - open_missing_plugins_on_cloud(missing_local_refs); - return false; - }); + update(NotificationType::OrcaLocalPluginMissingError, missing_local, + &p->m_local_missing_shown_sig, + _u8L("Local plugins required by the current preset are missing:"), + _u8L("Find on OrcaCloud"), + [missing_local_refs](wxEvtHandler*) { open_missing_plugins_on_cloud(missing_local_refs); return false; }); - const std::vector inactive = get_inactive_plugins(); - const std::vector broken = get_broken_plugins(); - const std::vector inactive_refs = missing_refs(inactive); - const std::vector broken_refs = missing_refs(broken); + const std::vector inactive = get_inactive_plugins(); + const std::vector broken = get_broken_plugins(); + const std::vector inactive_refs = missing_refs(inactive); + const std::vector broken_refs = missing_refs(broken); - update(NotificationType::OrcaPluginInactiveError, inactive, &p->m_inactive_shown_sig, - _u8L("Plugins required by the current preset are not activated:"), _u8L("Activate Now"), [this, inactive_refs](wxEvtHandler*) { - enable_inactive_plugins(inactive_refs); - return false; - }); - update(NotificationType::OrcaPluginCapabilityUnavailableError, broken, &p->m_broken_shown_sig, - _u8L("The installed plugin does not provide the required capability — it may be outdated:"), _u8L("Find on OrcaCloud"), - [broken_refs](wxEvtHandler*) { - open_missing_plugins_on_cloud(broken_refs); - return false; - }); + update(NotificationType::OrcaPluginInactiveError, inactive, + &p->m_inactive_shown_sig, + _u8L("Plugins required by the current preset are not activated:"), + _u8L("Activate Now"), + [this, inactive_refs](wxEvtHandler*) { enable_inactive_plugins(inactive_refs); return false; }); + update(NotificationType::OrcaPluginCapabilityUnavailableError, broken, + &p->m_broken_shown_sig, + _u8L("The installed plugin does not provide the required capability — it may be outdated:"), + _u8L("Find on OrcaCloud"), + [broken_refs](wxEvtHandler*) { open_missing_plugins_on_cloud(broken_refs); return false; }); const bool blocked = has_missing_plugins() || has_inactive_plugins() || has_broken_plugins(); if (block_toggled) @@ -21326,8 +21385,8 @@ void Plater::revalidate_current_plate_if_plugins_missing() { // Only do work while a missing-plugin notification is up, so the plugin-load hook does not // trigger a full validation for every plugin that loads during normal startup/use. - if (p->m_local_missing_shown_sig.empty() && p->m_cloud_missing_shown_sig.empty() && p->m_inactive_shown_sig.empty() && - p->m_broken_shown_sig.empty()) + if (p->m_local_missing_shown_sig.empty() && p->m_cloud_missing_shown_sig.empty() && + p->m_inactive_shown_sig.empty() && p->m_broken_shown_sig.empty()) return; bool model_fits = true, validate_error = false; validate_current_plate(model_fits, validate_error); @@ -21344,14 +21403,15 @@ void Plater::install_missing_cloud_plugins(const std::vector& cloud std::atomic cancel{false}; std::atomic finished{false}; std::atomic torn_down{false}; - std::mutex mtx; - std::string message; + std::mutex mtx; + std::string message; }; auto state = std::make_shared(); state->message = _u8L("Preparing to install plugins..."); wxWindow* parent = wxGetApp().mainframe; - auto* dialog = new wxProgressDialog(_L("Installing plugins"), from_u8(state->message), 100, parent, wxPD_APP_MODAL | wxPD_CAN_ABORT); + auto* dialog = new wxProgressDialog(_L("Installing plugins"), from_u8(state->message), 100, + parent, wxPD_APP_MODAL | wxPD_CAN_ABORT); dialog->Pulse(); // UI-thread timer: animate the pulse, observe the Cancel button, and tear down when the worker @@ -21409,8 +21469,7 @@ bool Plater::plugins_block_slicing() const return has_missing_plugins() || has_inactive_plugins() || has_broken_plugins(); } -void Plater::open_platesettings_dialog(wxCommandEvent& evt) -{ +void Plater::open_platesettings_dialog(wxCommandEvent& evt) { int plate_index = evt.GetInt(); PlateSettingsDialog dlg(this, _L("Plate Settings"), evt.GetString() == "only_layer_sequence"); PartPlate* curr_plate = p->partplate_list.get_curr_plate(); @@ -21419,7 +21478,8 @@ void Plater::open_platesettings_dialog(wxCommandEvent& evt) auto curr_print_seq = curr_plate->get_print_seq(); if (curr_print_seq != PrintSequence::ByDefault) { dlg.sync_print_seq(int(curr_print_seq) + 1); - } else + } + else dlg.sync_print_seq(0); auto first_layer_print_seq = curr_plate->get_first_layer_print_sequence(); @@ -21439,8 +21499,8 @@ void Plater::open_platesettings_dialog(wxCommandEvent& evt) dlg.Bind(EVT_SET_BED_TYPE_CONFIRM, [this, plate_index, &dlg](wxCommandEvent& e) { PartPlate* curr_plate = p->partplate_list.get_curr_plate(); - BedType old_bed_type = curr_plate->get_bed_type(); - auto bt_sel = dlg.get_bed_type_choice(); + BedType old_bed_type = curr_plate->get_bed_type(); + auto bt_sel = dlg.get_bed_type_choice(); if (old_bed_type != bt_sel) { curr_plate->set_bed_type(bt_sel); update_project_dirty_from_presets(); @@ -21467,54 +21527,63 @@ void Plater::open_platesettings_dialog(wxCommandEvent& evt) int spiral_sel = dlg.get_spiral_mode_choice(); if (spiral_sel == 1) { curr_plate->set_spiral_vase_mode(true, false); - } else if (spiral_sel == 2) { + } + else if (spiral_sel == 2) { curr_plate->set_spiral_vase_mode(false, false); - } else { + } + else { curr_plate->set_spiral_vase_mode(false, true); } update_project_dirty_from_presets(); set_plater_dirty(true); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format("select print sequence %1% for plate %2% at plate side") % ps_sel % plate_index; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("select print sequence %1% for plate %2% at plate side") % ps_sel % plate_index; auto plate_config = *(curr_plate->config()); wxGetApp().plater()->config_change_notification(plate_config, std::string("print_sequence")); update(); wxGetApp().obj_list()->update_selections(); - }); + }); dlg.set_plate_name(from_u8(curr_plate->get_plate_name())); dlg.ShowModal(); curr_plate->set_plate_name(dlg.get_plate_name().ToUTF8().data()); } -void Plater::open_filament_map_setting_dialog(wxCommandEvent& evt) +void Plater::open_filament_map_setting_dialog(wxCommandEvent &evt) { PartPlate* curr_plate = p->partplate_list.get_curr_plate(); - int value = evt.GetInt(); // 1 means from gcode view - bool need_slice = value == 1; // If from gcode view, should slice + int value = evt.GetInt(); //1 means from gcode view + bool need_slice = value ==1; // If from gcode view, should slice const auto& project_config = wxGetApp().preset_bundle->project_config; - auto filament_colors = config()->option("filament_colour")->values; - auto filament_types = config()->option("filament_type")->values; + auto filament_colors = config()->option("filament_colour")->values; + auto filament_types = config()->option("filament_type")->values; - auto plate_filament_maps = curr_plate->get_real_filament_maps(project_config); - auto plate_filament_map_mode = curr_plate->get_filament_map_mode(); + auto plate_filament_maps = curr_plate->get_real_filament_maps(project_config); + auto plate_filament_map_mode = curr_plate->get_filament_map_mode(); auto plate_filament_volume_maps = curr_plate->get_real_filament_volume_maps(project_config); - if (plate_filament_maps.size() != filament_colors.size()) // refine it later, save filament map to app config + if (plate_filament_maps.size() != filament_colors.size()) // refine it later, save filament map to app config plate_filament_maps.resize(filament_colors.size(), 1); if (plate_filament_volume_maps.size() != filament_colors.size()) plate_filament_volume_maps.resize(filament_colors.size(), 0); - FilamentMapDialog filament_dlg(this, filament_colors, filament_types, plate_filament_maps, plate_filament_volume_maps, - curr_plate->get_extruders(true), plate_filament_map_mode, this->get_machine_sync_status(), false); + FilamentMapDialog filament_dlg(this, + filament_colors, + filament_types, + plate_filament_maps, + plate_filament_volume_maps, + curr_plate->get_extruders(true), + plate_filament_map_mode, + this->get_machine_sync_status(), + false + ); if (filament_dlg.ShowModal() == wxID_OK) { std::vector new_filament_maps = filament_dlg.get_filament_maps(); std::vector old_filament_maps = curr_plate->get_real_filament_maps(project_config); - FilamentMapMode old_map_mode = curr_plate->get_filament_map_mode(); - FilamentMapMode new_map_mode = filament_dlg.get_mode(); + FilamentMapMode old_map_mode = curr_plate->get_filament_map_mode(); + FilamentMapMode new_map_mode = filament_dlg.get_mode(); std::vector new_filament_volume_maps = filament_dlg.get_filament_volume_maps(); std::vector old_filament_volume_maps = curr_plate->get_real_filament_volume_maps(project_config); @@ -21523,18 +21592,20 @@ void Plater::open_filament_map_setting_dialog(wxCommandEvent& evt) curr_plate->set_filament_map_mode(new_map_mode); } - if (new_map_mode == fmmManual) { + if (new_map_mode == fmmManual){ curr_plate->set_filament_maps(new_filament_maps); curr_plate->set_filament_volume_maps(new_filament_volume_maps); } - bool need_invalidate = (old_map_mode != new_map_mode || old_filament_maps != new_filament_maps || + bool need_invalidate = (old_map_mode != new_map_mode || + old_filament_maps != new_filament_maps || old_filament_volume_maps != new_filament_volume_maps); if (need_invalidate) { if (need_slice) { wxPostEvent(this, SimpleEvent(EVT_GLTOOLBAR_SLICE_PLATE)); - } else { + } + else { curr_plate->update_slice_result_valid_state(false); set_plater_dirty(true); update(); @@ -21544,7 +21615,8 @@ void Plater::open_filament_map_setting_dialog(wxCommandEvent& evt) return; } -// BBS: select Plate by hover_id + +//BBS: select Plate by hover_id int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModidyPlateName) { int ret; @@ -21553,121 +21625,145 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi plate_index = hover_id / PartPlate::GRABBER_COUNT; action = isModidyPlateName ? PartPlate::PLATE_NAME_HOVER_ID : hover_id % PartPlate::GRABBER_COUNT; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": enter, hover_id %1%, plate_index %2%, action %3%") % hover_id % plate_index % action; - if (action == 0) { - // select plate + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": enter, hover_id %1%, plate_index %2%, action %3%")%hover_id % plate_index %action; + if (action == 0) + { + //select plate ret = p->partplate_list.select_plate(plate_index); if (!ret) { SimpleEvent event(EVT_GLCANVAS_PLATE_SELECT); p->on_plate_selected(event); } - if ((!ret) && (p->background_process.can_switch_print())) { - // select successfully + if ((!ret)&&(p->background_process.can_switch_print())) + { + //select successfully p->partplate_list.update_slice_context_to_current_plate(p->background_process); p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); p->update_print_volume_state(); - PartPlate* part_plate = p->partplate_list.get_curr_plate(); - bool result_valid = part_plate->is_slice_result_valid(); - PrintBase* print = nullptr; + PartPlate* part_plate = p->partplate_list.get_curr_plate(); + bool result_valid = part_plate->is_slice_result_valid(); + PrintBase* print = nullptr; GCodeResult* gcode_result = nullptr; Print::ApplyStatus invalidated; const auto& preset_bundle = wxGetApp().preset_bundle; part_plate->get_print(&print, &gcode_result, NULL); - // always apply the current plate's print + //always apply the current plate's print if (preset_bundle->get_printer_extruder_count() > 1) { - std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); + std::vector f_maps = part_plate->get_real_filament_maps(preset_bundle->project_config); std::vector f_volume_maps = part_plate->get_filament_volume_maps(); if (f_volume_maps.empty()) { f_volume_maps = preset_bundle->get_default_nozzle_volume_types_for_filaments(f_maps); } invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false, f_maps, f_volume_maps)); - } else + } + else invalidated = p->background_process.apply(this->model(), preset_bundle->full_config(false)); bool model_fits, validate_err; validate_current_plate(model_fits, validate_err); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(" %1%: after apply, invalidated= %2%, previous result_valid %3% ") % __LINE__ % - invalidated % result_valid; - if (result_valid) { - if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) { - // bool model_fits, validate_err; - // validate_current_plate(model_fits, validate_err); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: after apply, invalidated= %2%, previous result_valid %3% ")%__LINE__ % invalidated %result_valid; + if (result_valid) + { + if (invalidated & PrintBase::APPLY_STATUS_INVALIDATED) + { + //bool model_fits, validate_err; + //validate_current_plate(model_fits, validate_err); part_plate->update_slice_result_valid_state(false); // BBS - // p->show_action_buttons(true); - // p->ready_to_slice = true; + //p->show_action_buttons(true); + //p->ready_to_slice = true; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, true); - } else { + } + else + { // BBS - // p->show_action_buttons(false); - // validate_current_plate(model_fits, validate_err); - // p->ready_to_slice = false; + //p->show_action_buttons(false); + //validate_current_plate(model_fits, validate_err); + //p->ready_to_slice = false; p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); reload_print(); } - } else { - // check inside status - if (model_fits && !validate_err) { + } + else + { + //check inside status + if (model_fits && !validate_err){ p->process_completed_with_error = -1; - } else { + } + else { p->process_completed_with_error = p->partplate_list.get_curr_plate_index(); } // BBS: don't show action buttons - // p->show_action_buttons(true); - // p->ready_to_slice = true; - if (model_fits && part_plate->has_printable_instances()) { - // p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, true)); + //p->show_action_buttons(true); + //p->ready_to_slice = true; + if (model_fits && part_plate->has_printable_instances()) + { + //p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, true)); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": will set can_slice to true"); p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, true); - } else { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ - << boost::format(": will set can_slice to false, has_printable_instances %1%") % - part_plate->has_printable_instances(); - // p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, false)); + } + else + { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": will set can_slice to false, has_printable_instances %1%")%part_plate->has_printable_instances(); + //p->view3D->get_canvas3d()->post_event(Event(EVT_GLCANVAS_ENABLE_ACTION_BUTTONS, false)); p->main_frame->update_slice_print_status(MainFrame::eEventPlateUpdate, false); } } } - } else if ((action == 1) && (!right_click)) { - // delete plate + } + else if ((action == 1)&&(!right_click)) + { + //delete plate ret = delete_plate(plate_index); - } else if ((action == 2) && (!right_click)) { - // arrange the plate - // take_snapshot("select_orient partplate"); + } + else if ((action == 2)&&(!right_click)) + { + //arrange the plate + //take_snapshot("select_orient partplate"); ret = select_plate(plate_index); - if (!ret) { + if (!ret) + { set_prepare_state(Job::PREPARE_STATE_MENU); orient(); - } else { + } + else + { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "can not select plate %1%" << plate_index; ret = -1; } - } else if ((action == 3) && (!right_click)) { - // arrange the plate - // take_snapshot("select_arrange partplate"); + } + else if ((action == 3)&&(!right_click)) + { + //arrange the plate + //take_snapshot("select_arrange partplate"); ret = select_plate(plate_index); - if (!ret) { + if (!ret) + { if (last_arrange_job_is_finished()) { set_prepare_state(Job::PREPARE_STATE_MENU); arrange(); } - } else { + } + else + { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "can not select plate %1%" << plate_index; ret = -1; } - } else if ((action == 4) && (!right_click)) { - // lock the plate + } + else if ((action == 4)&&(!right_click)) + { + //lock the plate take_snapshot("lock partplate"); ret = p->partplate_list.lock_plate(plate_index, !p->partplate_list.is_locked(plate_index)); - } else if ((action == 5) && (!right_click)) { + } + else if ((action == 5)&&(!right_click)) + { // set the plate type ret = select_plate(plate_index); if (!ret) { @@ -21681,10 +21777,11 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "can not select plate %1%" << plate_index; ret = -1; } - } else if ((action == PartPlate::PLATE_FILAMENT_MAP_ID) && (!right_click)) { + } + else if ((action == PartPlate::PLATE_FILAMENT_MAP_ID) && (!right_click)) { ret = select_plate(plate_index); if (!ret) { - PartPlate* curr_plate = p->partplate_list.get_curr_plate(); + PartPlate * curr_plate = p->partplate_list.get_curr_plate(); wxCommandEvent evt(EVT_OPEN_FILAMENT_MAP_SETTINGS_DIALOG); evt.SetInt(0); // 0 means not from gcodeviewer evt.SetEventObject(this); @@ -21693,17 +21790,18 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "can not select plate %1%" << plate_index; ret = -1; } - } else if ((action == 6) && (!right_click)) { + } + else if ((action == 6) && (!right_click)) { // set the plate type ret = select_plate(plate_index); if (!ret) { PlateNameEditDialog dlg(this, wxID_ANY, _L("Edit Plate Name")); - PartPlate* curr_plate = p->partplate_list.get_curr_plate(); + PartPlate * curr_plate = p->partplate_list.get_curr_plate(); wxString curr_plate_name = from_u8(curr_plate->get_plate_name()); dlg.set_plate_name(curr_plate_name); - int result = dlg.ShowModal(); + int result=dlg.ShowModal(); if (result == wxID_YES) { wxString dlg_plate_name = dlg.get_plate_name(); curr_plate->set_plate_name(dlg_plate_name.ToUTF8().data()); @@ -21715,7 +21813,7 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi } else if ((action == 7) && (!right_click)) { // move plate to the front take_snapshot("move plate to the front"); - ret = p->partplate_list.move_plate_to_index(plate_index, 0); + ret = p->partplate_list.move_plate_to_index(plate_index,0); p->partplate_list.update_slice_context_to_current_plate(p->background_process); p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); p->sidebar->obj_list()->reload_all_plates(); @@ -21724,12 +21822,13 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click, bool isModi p->partplate_list.select_plate(0); } - else { + else + { BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "invalid action %1%, with right_click=%2%" << action << right_click; ret = -1; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: return %2%") % __LINE__ % ret; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" %1%: return %2%")%__LINE__ % ret; return ret; } @@ -21741,12 +21840,12 @@ int Plater::duplicate_plate(int plate_index) ret = p->partplate_list.duplicate_plate(index); - // need to call update + //need to call update update(); return ret; } -// BBS: delete the plate, index= -1 means the current plate +//BBS: delete the plate, index= -1 means the current plate int Plater::delete_plate(int plate_index) { int index = plate_index, ret; @@ -21757,41 +21856,47 @@ int Plater::delete_plate(int plate_index) take_snapshot("delete partplate"); ret = p->partplate_list.delete_plate(index); - // BBS: update the current print to the current plate + //BBS: update the current print to the current plate p->partplate_list.update_slice_context_to_current_plate(p->background_process); p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); p->sidebar->obj_list()->reload_all_plates(); // BBS update default view - // get_camera().select_view("topfront"); - // get_camera().requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; + //get_camera().select_view("topfront"); + //get_camera().requires_zoom_to_plate = REQUIRES_ZOOM_TO_ALL_PLATE; - // need to call update + //need to call update update(); return ret; } -// BBS: set bed positions -void Plater::set_bed_position(Vec2d& pos) { p->bed.set_position(pos); } +//BBS: set bed positions +void Plater::set_bed_position(Vec2d& pos) +{ + p->bed.set_position(pos); +} -// BBS: is the background process slicing currently -bool Plater::is_background_process_slicing() const { return p->m_is_slicing; } +//BBS: is the background process slicing currently +bool Plater::is_background_process_slicing() const +{ + return p->m_is_slicing; +} -// BBS: update slicing context +//BBS: update slicing context void Plater::update_slicing_context_to_current_partplate() { p->partplate_list.update_slice_context_to_current_plate(p->background_process); p->preview->update_gcode_result(p->partplate_list.get_current_slice_result()); } -// BBS: show object info +//BBS: show object info void Plater::show_object_info() { - NotificationManager* notify_manager = get_notification_manager(); - const Selection& selection = get_selection(); - int selCount = selection.get_volume_idxs().size(); - ModelObjectPtrs objects = model().objects; - int obj_idx = selection.get_object_idx(); + NotificationManager *notify_manager = get_notification_manager(); + const Selection& selection = get_selection(); + int selCount = selection.get_volume_idxs().size(); + ModelObjectPtrs objects = model().objects; + int obj_idx = selection.get_object_idx(); std::string info_text; if (selCount > 1 && !selection.is_single_full_object()) { @@ -21804,22 +21909,25 @@ void Plater::show_object_info() } notify_manager->bbl_show_objectsinfo_notification(info_text, false, !(p->current_panel == p->view3D)); return; - } else if (objects.empty() || (obj_idx < 0) || (obj_idx >= objects.size()) || - objects[obj_idx]->volumes.empty() || // hack to avoid crash when deleting the last object on the bed - (selection.is_single_full_object() && objects[obj_idx]->instances.size() > 1) || - !(selection.is_single_full_instance() || selection.is_single_volume())) { + } + else if (objects.empty() || (obj_idx < 0) || (obj_idx >= objects.size()) || + objects[obj_idx]->volumes.empty() ||// hack to avoid crash when deleting the last object on the bed + (selection.is_single_full_object() && objects[obj_idx]->instances.size()> 1) || + !(selection.is_single_full_instance() || selection.is_single_volume())) + { notify_manager->bbl_close_objectsinfo_notification(); return; } const ModelObject* model_object = objects[obj_idx]; - int inst_idx = selection.get_instance_idx(); - if ((inst_idx < 0) || (inst_idx >= model_object->instances.size())) { + int inst_idx = selection.get_instance_idx(); + if ((inst_idx < 0) || (inst_idx >= model_object->instances.size())) + { notify_manager->bbl_close_objectsinfo_notification(); return; } bool imperial_units = wxGetApp().app_config->get("use_inches") == "1"; - double koef = imperial_units ? GizmoObjectManipulation::mm_to_in : 1.0f; + double koef = imperial_units ? GizmoObjectManipulation::mm_to_in : 1.0f; ModelVolume* vol = nullptr; Transform3d t; @@ -21828,60 +21936,65 @@ void Plater::show_object_info() if (selection.is_single_volume()) { std::vector obj_idxs, vol_idxs; wxGetApp().obj_list()->get_selection_indexes(obj_idxs, vol_idxs); - if (vol_idxs.size() != 1) { - // corner case when merge/split/remove + if (vol_idxs.size() != 1) + { + //corner case when merge/split/remove return; } vol = model_object->volumes[vol_idxs[0]]; - t = model_object->instances[inst_idx]->get_matrix() * vol->get_matrix(); + t = model_object->instances[inst_idx]->get_matrix() * vol->get_matrix(); info_text += (boost::format(_utf8(L("Part name: %1%\n"))) % vol->name).str(); face_count = static_cast(vol->mesh().facets_count()); - size = vol->get_convex_hull().transformed_bounding_box(t).size(); - } else { - // int obj_idx, vol_idx; - // wxGetApp().obj_list()->get_selected_item_indexes(obj_idx, vol_idx); - // if (obj_idx < 0) { - // //corner case when merge/split/remove - // return; - // } + size = vol->get_convex_hull().transformed_bounding_box(t).size(); + } + else { + //int obj_idx, vol_idx; + //wxGetApp().obj_list()->get_selected_item_indexes(obj_idx, vol_idx); + //if (obj_idx < 0) { + // //corner case when merge/split/remove + // return; + //} info_text += (boost::format(_utf8(L("Object name: %1%\n"))) % model_object->name).str(); face_count = static_cast(model_object->facets_count()); - size = model_object->instance_convex_hull_bounding_box(inst_idx).size(); + size = model_object->instance_convex_hull_bounding_box(inst_idx).size(); } - // Vec3d size = vol ? vol->mesh().transformed_bounding_box(t).size() : model_object->instance_bounding_box(inst_idx).size(); + //Vec3d size = vol ? vol->mesh().transformed_bounding_box(t).size() : model_object->instance_bounding_box(inst_idx).size(); if (imperial_units) - info_text += (boost::format(_utf8(L("Size: %1% x %2% x %3% in\n"))) % (size(0) * koef) % (size(1) * koef) % (size(2) * koef)).str(); + info_text += (boost::format(_utf8(L("Size: %1% x %2% x %3% in\n"))) %(size(0)*koef) %(size(1)*koef) %(size(2)*koef)).str(); else - info_text += (boost::format(_utf8(L("Size: %1% x %2% x %3% mm\n"))) % size(0) % size(1) % size(2)).str(); + info_text += (boost::format(_utf8(L("Size: %1% x %2% x %3% mm\n"))) %size(0) %size(1) %size(2)).str(); const TriangleMeshStats& stats = vol ? vol->mesh().stats() : model_object->get_object_stl_stats(); - double volume_val = stats.volume; + double volume_val = stats.volume; if (vol) volume_val *= std::fabs(t.matrix().block(0, 0, 3, 3).determinant()); - volume_val = volume_val * pow(koef, 3); + volume_val = volume_val * pow(koef,3); if (imperial_units) - info_text += (boost::format(_utf8(L("Volume: %1% in³\n"))) % volume_val).str(); + info_text += (boost::format(_utf8(L("Volume: %1% in³\n"))) %volume_val).str(); else - info_text += (boost::format(_utf8(L("Volume: %1% mm³\n"))) % volume_val).str(); - info_text += (boost::format(_utf8(L("Triangles: %1%\n"))) % face_count).str(); + info_text += (boost::format(_utf8(L("Volume: %1% mm³\n"))) %volume_val).str(); + info_text += (boost::format(_utf8(L("Triangles: %1%\n"))) %face_count).str(); wxString info_manifold; int non_manifold_edges = 0; - auto mesh_errors = p->sidebar->obj_list()->get_mesh_errors_info(&info_manifold, &non_manifold_edges); + auto mesh_errors = p->sidebar->obj_list()->get_mesh_errors_info(&info_manifold, &non_manifold_edges); - if (non_manifold_edges > 0) { - info_manifold += "\n" + _L("Tips:") + "\n" + _L("Use \"Fix Model\" to repair the mesh."); - } + if (non_manifold_edges > 0) { + info_manifold += "\n" + _L("Tips:") + "\n" + _L("Use \"Fix Model\" to repair the mesh."); + } info_manifold = "" + info_manifold + ""; info_text += into_u8(info_manifold); notify_manager->bbl_show_objectsinfo_notification(info_text, non_manifold_edges > 0, !(p->current_panel == p->view3D)); } -bool Plater::show_publish_dialog(bool show) { return p->show_publish_dlg(show); } +bool Plater::show_publish_dialog(bool show) +{ + return p->show_publish_dlg(show); +} -void Plater::post_process_string_object_exception(StringObjectException& err) +void Plater::post_process_string_object_exception(StringObjectException &err) { PresetBundle* preset_bundle = wxGetApp().preset_bundle; if (err.type == StringExceptionType::STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE) { @@ -21904,9 +22017,8 @@ void Plater::post_process_string_object_exception(StringObjectException& err) break; } } - err.string = format(_L("Plate %d: %s is not suggested for use printing filament %s (%s). If you still want to do this " - "print job, please set this filament\'s bed temperature to a number that is not zero."), - err.params[0], err.params[1], err.params[2], filament_name); + err.string = format(_L("Plate %d: %s is not suggested for use printing filament %s (%s). If you still want to do this print job, please set this filament\'s bed temperature to a number that is not zero."), + err.params[0], err.params[1], err.params[2], filament_name); err.string += "\n"; } } catch (...) { @@ -21917,8 +22029,10 @@ void Plater::post_process_string_object_exception(StringObjectException& err) return; } -void Plater::update_objects_position_when_select_preset(const std::function& select_prest) -{ p->update_objects_position_when_select_preset(select_prest); } +void Plater::update_objects_position_when_select_preset(const std::function &select_prest) +{ + p->update_objects_position_when_select_preset(select_prest); +} bool Plater::check_ams_status(bool is_slice_all) { @@ -21926,7 +22040,8 @@ bool Plater::check_ams_status(bool is_slice_all) if (!p->check_ams_status_impl(is_slice_all)) { m_check_status = 0; return false; - } else { + } + else { m_check_status = 1; } } @@ -21936,33 +22051,32 @@ bool Plater::check_ams_status(bool is_slice_all) void Plater::update_machine_sync_status() { - DeviceManager* dev_maneger = wxGetApp().getDeviceManager(); + DeviceManager *dev_maneger = wxGetApp().getDeviceManager(); if (!dev_maneger) { GUI::wxGetApp().sidebar().update_sync_status(nullptr); return; } - MachineObject* obj = wxGetApp().getDeviceManager()->get_selected_machine(); + MachineObject *obj = wxGetApp().getDeviceManager()->get_selected_machine(); GUI::wxGetApp().sidebar().update_sync_status(obj); } -bool Plater::get_machine_sync_status() { return p->get_machine_sync_status(); } +bool Plater::get_machine_sync_status() +{ + return p->get_machine_sync_status(); +} void Plater::update_filament_volume_map(int extruder_id, int volume_type) { // Hybrid is a per-extruder mix, not a per-filament volume; reset the affected filaments // to Standard so the manual grouping dialog starts from a concrete assignment. - int selected_volume_type = volume_type == static_cast(NozzleVolumeType::nvtHybrid) ? - static_cast(NozzleVolumeType::nvtStandard) : - volume_type; - auto& partplate_list = get_partplate_list(); + int selected_volume_type = volume_type == static_cast(NozzleVolumeType::nvtHybrid) ? static_cast(NozzleVolumeType::nvtStandard) : volume_type; + auto& partplate_list = get_partplate_list(); for (int idx = 0; idx < partplate_list.get_plate_count(); ++idx) { auto plate = partplate_list.get_plate(idx); - if (!plate) - continue; + if (!plate) continue; auto filament_map = plate->get_filament_maps(); auto filament_volume_map = plate->get_filament_volume_maps(); - if (filament_map.empty() || filament_volume_map.empty()) - continue; + if (filament_map.empty() || filament_volume_map.empty()) continue; if (filament_volume_map.size() < filament_map.size()) { filament_volume_map.resize(filament_map.size(), static_cast(NozzleVolumeType::nvtStandard)); } @@ -21982,10 +22096,16 @@ void Plater::init_environment_texture() p->environment_texture.load_from_file(resources_dir() + "/images/Pmetal_001.png", false, GLTexture::SingleThreaded, false); } -unsigned int Plater::get_environment_texture_id() const { return p->environment_texture.get_id(); } +unsigned int Plater::get_environment_texture_id() const +{ + return p->environment_texture.get_id(); +} #endif // ENABLE_ENVIRONMENT_MAP -const BuildVolume& Plater::build_volume() const { return p->bed.build_volume(); } +const BuildVolume& Plater::build_volume() const +{ + return p->bed.build_volume(); +} // BBS #if 0 @@ -22000,24 +22120,42 @@ GLToolbar& Plater::get_view_toolbar() } #endif -const GLToolbar& Plater::get_collapse_toolbar() const { return p->collapse_toolbar; } +const GLToolbar& Plater::get_collapse_toolbar() const +{ + return p->collapse_toolbar; +} -GLToolbar& Plater::get_collapse_toolbar() { return p->collapse_toolbar; } +GLToolbar& Plater::get_collapse_toolbar() +{ + return p->collapse_toolbar; +} -void Plater::update_preview_bottom_toolbar() { p->update_preview_bottom_toolbar(); } +void Plater::update_preview_bottom_toolbar() +{ + p->update_preview_bottom_toolbar(); +} void Plater::reset_gcode_toolpaths() { - // BBS: add some logs + //BBS: add some logs BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": reset the gcode viewer's toolpaths"); p->reset_gcode_toolpaths(); } -const Mouse3DController& Plater::get_mouse3d_controller() const { return p->mouse3d_controller; } +const Mouse3DController& Plater::get_mouse3d_controller() const +{ + return p->mouse3d_controller; +} -Mouse3DController& Plater::get_mouse3d_controller() { return p->mouse3d_controller; } +Mouse3DController& Plater::get_mouse3d_controller() +{ + return p->mouse3d_controller; +} -NotificationManager* Plater::get_notification_manager() { return p->notification_manager.get(); } +NotificationManager * Plater::get_notification_manager() +{ + return p->notification_manager.get(); +} DailyTipsWindow* Plater::get_dailytips() const { @@ -22025,11 +22163,20 @@ DailyTipsWindow* Plater::get_dailytips() const return dailytips_win; } -const NotificationManager* Plater::get_notification_manager() const { return p->notification_manager.get(); } +const NotificationManager * Plater::get_notification_manager() const +{ + return p->notification_manager.get(); +} -void Plater::init_notification_manager() { p->init_notification_manager(); } +void Plater::init_notification_manager() +{ + p->init_notification_manager(); +} -void Plater::show_status_message(std::string s) { BOOST_LOG_TRIVIAL(trace) << "show_status_message:" << s; } +void Plater::show_status_message(std::string s) +{ + BOOST_LOG_TRIVIAL(trace) << "show_status_message:" << s; +} bool Plater::can_delete() const { return p->can_delete(); } bool Plater::can_delete_all() const { return p->can_delete_all(); } @@ -22048,10 +22195,9 @@ bool Plater::can_arrange() const { return p->can_arrange(); } bool Plater::can_layers_editing() const { return p->can_layers_editing(); } bool Plater::can_paste_from_clipboard() const { - if (!IsShown() || !p->is_view3D_shown()) - return false; + if (!IsShown() || !p->is_view3D_shown()) return false; - const Selection& selection = p->view3D->get_canvas3d()->get_selection(); + const Selection& selection = p->view3D->get_canvas3d()->get_selection(); const Selection::Clipboard& clipboard = selection.get_clipboard(); if (clipboard.is_empty() && p->sidebar->obj_list()->clipboard_is_empty()) @@ -22070,7 +22216,7 @@ bool Plater::can_paste_from_clipboard() const return true; } -// BBS support cut +//BBS support cut bool Plater::can_cut_to_clipboard() const { if (is_selection_empty()) @@ -22096,7 +22242,7 @@ bool Plater::can_copy_to_clipboard() const bool Plater::can_undo() const { return IsShown() && p->is_view3D_shown() && p->undo_redo_stack().has_undo_snapshot(); } bool Plater::can_redo() const { return IsShown() && p->is_view3D_shown() && p->undo_redo_stack().has_redo_snapshot(); } bool Plater::can_reload_from_disk() const { return p->can_reload_from_disk(); } -// BBS +//BBS bool Plater::can_fillcolor() const { return p->can_fillcolor(); } bool Plater::has_assmeble_view() const { return p->has_assemble_view(); } bool Plater::can_replace_with_stl() const { return p->can_replace_with_stl(); } @@ -22113,33 +22259,53 @@ void Plater::enter_gizmos_stack() { p->enter_gizmos_stack(); } bool Plater::leave_gizmos_stack() { return p->leave_gizmos_stack(); } // BBS: return false if not changed bool Plater::inside_snapshot_capture() { return p->inside_snapshot_capture(); } -void Plater::toggle_render_statistic_dialog() { p->show_render_statistic_dialog = !p->show_render_statistic_dialog; } +void Plater::toggle_render_statistic_dialog() +{ + p->show_render_statistic_dialog = !p->show_render_statistic_dialog; +} -bool Plater::is_render_statistic_dialog_visible() const { return p->show_render_statistic_dialog; } +bool Plater::is_render_statistic_dialog_visible() const +{ + return p->show_render_statistic_dialog; +} -void Plater::toggle_show_wireframe() { p->show_wireframe = !p->show_wireframe; } +void Plater::toggle_show_wireframe() +{ + p->show_wireframe = !p->show_wireframe; +} -bool Plater::is_show_wireframe() const { return p->show_wireframe; } +bool Plater::is_show_wireframe() const +{ + return p->show_wireframe; +} -void Plater::enable_wireframe(bool status) { p->wireframe_enabled = status; } +void Plater::enable_wireframe(bool status) +{ + p->wireframe_enabled = status; +} + +bool Plater::is_wireframe_enabled() const +{ + return p->wireframe_enabled; +} -bool Plater::is_wireframe_enabled() const { return p->wireframe_enabled; } /*Plater::TakeSnapshot::TakeSnapshot(Plater *plater, const std::string &snapshot_name) : TakeSnapshot(plater, from_u8(snapshot_name)) {} Plater::TakeSnapshot::TakeSnapshot(Plater* plater, const std::string& snapshot_name, UndoRedo::SnapshotType snapshot_type) : TakeSnapshot(plater, from_u8(snapshot_name), snapshot_type) {}*/ + // Wrapper around wxWindow::PopupMenu to suppress error messages popping out while tracking the popup menu. -bool Plater::PopupMenu(wxMenu* menu, const wxPoint& pos) +bool Plater::PopupMenu(wxMenu *menu, const wxPoint& pos) { // Don't want to wake up and trigger reslicing while tracking the pop-up menu. SuppressBackgroundProcessingUpdate sbpu; // When tracking a pop-up menu, postpone error messages from the slicing result. m_tracking_popup_menu = true; - bool out = wxGetApp().mainframe->PopupMenu(menu, pos); + bool out = wxGetApp().mainframe->PopupMenu(menu, pos); m_tracking_popup_menu = false; - if (!m_tracking_popup_menu_error_message.empty()) { + if (! m_tracking_popup_menu_error_message.empty()) { // Don't know whether the CallAfter is necessary, but it should not hurt. // The menus likely sends out some commands, so we may be safer if the dialog is shown after the menu command is processed. wxString message = std::move(m_tracking_popup_menu_error_message); @@ -22148,19 +22314,27 @@ bool Plater::PopupMenu(wxMenu* menu, const wxPoint& pos) } return out; } -void Plater::bring_instance_forward() { p->bring_instance_forward(); } +void Plater::bring_instance_forward() +{ + p->bring_instance_forward(); +} -bool Plater::need_update() const { return p->need_update(); } +bool Plater::need_update() const +{ + return p->need_update(); +} -void Plater::set_need_update(bool need_update) { p->set_need_update(need_update); } +void Plater::set_need_update(bool need_update) +{ + p->set_need_update(need_update); +} // BBS -// BBS: add popup logic for table object +//BBS: add popup logic for table object bool Plater::PopupObjectTable(int object_id, int volume_id, const wxPoint& position) { - if (dynamic_cast(wxGetApp().get_tab(Preset::TYPE_PRINTER))->m_extruders_count > 1) { - MessageDialog dlg(this, _L("Currently, the object configuration form cannot be used with a multiple-extruder printer."), - _L("Not available"), wxOK | wxICON_WARNING); + if (dynamic_cast(wxGetApp().get_tab(Preset::TYPE_PRINTER))->m_extruders_count > 1) { + MessageDialog dlg(this, _L("Currently, the object configuration form cannot be used with a multiple-extruder printer."), _L("Not available"), wxOK | wxICON_WARNING); dlg.ShowModal(); return false; } @@ -22171,34 +22345,41 @@ bool Plater::PopupObjectTableBySelection() { wxDataViewItem item; int obj_idx, vol_idx; - const wxPoint pos = wxPoint(0, 0); // Fake position + const wxPoint pos = wxPoint(0, 0); //Fake position wxGetApp().obj_list()->get_selected_item_indexes(obj_idx, vol_idx, item); return p->PopupObjectTable(obj_idx, vol_idx, pos); } -void Plater::update_title_dirty_status() { p->update_title_dirty_status(); } +void Plater::update_title_dirty_status() +{ + p->update_title_dirty_status(); +} -wxMenu* Plater::plate_menu() { return p->menus.plate_menu(); } -wxMenu* Plater::object_menu() { return p->menus.object_menu(); } -wxMenu* Plater::part_menu() { return p->menus.part_menu(); } -wxMenu* Plater::text_part_menu() { return p->menus.text_part_menu(); } -wxMenu* Plater::svg_part_menu() { return p->menus.svg_part_menu(); } -wxMenu* Plater::sla_object_menu() { return p->menus.sla_object_menu(); } -wxMenu* Plater::default_menu() { return p->menus.default_menu(); } -wxMenu* Plater::instance_menu() { return p->menus.instance_menu(); } -wxMenu* Plater::layer_menu() { return p->menus.layer_menu(); } -wxMenu* Plater::multi_selection_menu() { return p->menus.multi_selection_menu(); } -wxMenu* Plater::filament_action_menu(int active_filament_menu_id) { return p->menus.filament_action_menu(active_filament_menu_id); } -int Plater::GetPlateIndexByRightMenuInLeftUI() { return p->m_is_RightClickInLeftUI; } -void Plater::SetPlateIndexByRightMenuInLeftUI(int index) { p->m_is_RightClickInLeftUI = index; } -SuppressBackgroundProcessingUpdate::SuppressBackgroundProcessingUpdate() - : m_was_scheduled(wxGetApp().plater()->is_background_process_update_scheduled()) -{ wxGetApp().plater()->suppress_background_process(m_was_scheduled); } + +wxMenu* Plater::plate_menu() { return p->menus.plate_menu(); } +wxMenu* Plater::object_menu() { return p->menus.object_menu(); } +wxMenu* Plater::part_menu() { return p->menus.part_menu(); } +wxMenu* Plater::text_part_menu() { return p->menus.text_part_menu(); } +wxMenu* Plater::svg_part_menu() { return p->menus.svg_part_menu(); } +wxMenu* Plater::sla_object_menu() { return p->menus.sla_object_menu(); } +wxMenu* Plater::default_menu() { return p->menus.default_menu(); } +wxMenu* Plater::instance_menu() { return p->menus.instance_menu(); } +wxMenu* Plater::layer_menu() { return p->menus.layer_menu(); } +wxMenu* Plater::multi_selection_menu() { return p->menus.multi_selection_menu(); } +wxMenu *Plater::filament_action_menu(int active_filament_menu_id) { return p->menus.filament_action_menu(active_filament_menu_id); } +int Plater::GetPlateIndexByRightMenuInLeftUI() { return p->m_is_RightClickInLeftUI; } +void Plater::SetPlateIndexByRightMenuInLeftUI(int index) { p->m_is_RightClickInLeftUI = index; } +SuppressBackgroundProcessingUpdate::SuppressBackgroundProcessingUpdate() : + m_was_scheduled(wxGetApp().plater()->is_background_process_update_scheduled()) +{ + wxGetApp().plater()->suppress_background_process(m_was_scheduled); +} SuppressBackgroundProcessingUpdate::~SuppressBackgroundProcessingUpdate() -{ wxGetApp().plater()->schedule_background_process(m_was_scheduled); } -wxString get_view_type_string(Camera::ViewAngleType type) { + wxGetApp().plater()->schedule_background_process(m_was_scheduled); +} +wxString get_view_type_string(Camera::ViewAngleType type) { switch (type) { case Slic3r::GUI::Camera::ViewAngleType::Iso: return _L("isometric"); case Slic3r::GUI::Camera::ViewAngleType::Top_Front: return _L("top_front"); @@ -22211,12 +22392,11 @@ wxString get_view_type_string(Camera::ViewAngleType type) default: return ""; } } -wxArrayString get_all_camera_view_type() -{ +wxArrayString get_all_camera_view_type() { wxArrayString all_types; - for (size_t i = 0; i < (int) Camera::ViewAngleType::Count_ViewAngleType; i++) { + for (size_t i = 0; i < (int)Camera::ViewAngleType::Count_ViewAngleType; i++) { all_types.Add(get_view_type_string((Camera::ViewAngleType) i)); } return all_types; } -}} // namespace Slic3r::GUI +}} // namespace Slic3r::GUI diff --git a/tests/libslic3r/test_3mf.cpp b/tests/libslic3r/test_3mf.cpp index d30b40004d..5c38859a12 100644 --- a/tests/libslic3r/test_3mf.cpp +++ b/tests/libslic3r/test_3mf.cpp @@ -866,6 +866,65 @@ SCENARIO("Minimal published 3MF omits project config, preset dumps and slicer ta } } +// A minimal published 3MF must not leak the slicer tags of the source project. The exporter seeds +// metadata_item_map from the input file's metadata_items, so re-publishing a project opened from a +// regular Orca/BBS 3MF (the typical remix flow) must strip the Application / OrcaSlicer tags it +// came with, otherwise old receivers route onto the baked-in "old version" popup. +SCENARIO("MinimalPublished strips slicer tags carried by the source project", "[3mf]") { + GIVEN("a model loaded from a regular Orca/BBS 3MF whose metadata carries the slicer tags") { + Model model; + std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; + REQUIRE(load_stl(src_file.c_str(), &model)); + model.add_default_instances(); + + model.model_info = std::make_shared(); + model.model_info->metadata_items[ORCA_PUBLISHED_TAG] = "1"; + model.model_info->metadata_items["Application"] = "BambuStudio-2.0.0"; + model.model_info->metadata_items["OrcaSlicer"] = "2.1.0"; + + ScopedTemporaryDir backup_dir("orca_strip_tags"); + model.set_backup_path(backup_dir.string()); + + WHEN("stored using SaveStrategy::MinimalPublished and reloaded") { + ScopedTemporaryFile temp(".3mf"); + const std::string test_file = temp.string(); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + StoreParams store_params; + store_params.path = test_file.c_str(); + store_params.model = &model; + store_params.config = &config; + store_params.strategy = SaveStrategy::Zip64 | SaveStrategy::Silence | SaveStrategy::MinimalPublished; + REQUIRE(store_bbs_3mf(store_params)); + + Model dst_model; + DynamicPrintConfig dst_config; + ConfigSubstitutionContext ctxt{ ForwardCompatibilitySubstitutionRule::Enable }; + PlateDataPtrs dst_plates; + std::vector loaded_presets; + bool is_bbl_3mf = false, is_orca_3mf = false; + Semver file_version; + bool loaded = load_bbs_3mf(test_file.c_str(), &dst_config, &ctxt, &dst_model, &dst_plates, + &loaded_presets, &is_bbl_3mf, &is_orca_3mf, &file_version, nullptr, + LoadStrategy::LoadModel | LoadStrategy::LoadConfig); + THEN("the source slicer tags are stripped, not carried through") { + REQUIRE(loaded); + REQUIRE(dst_model.model_info != nullptr); + REQUIRE(dst_model.model_info->metadata_items.count("Application") == 0); + REQUIRE(dst_model.model_info->metadata_items.count("OrcaSlicer") == 0); + // The published marker itself must survive. + REQUIRE(dst_model.model_info->metadata_items[ORCA_PUBLISHED_TAG] == "1"); + } + THEN("the file classifies as a generic 3MF without a version popup") { + REQUIRE_FALSE(is_bbl_3mf); + REQUIRE_FALSE(is_orca_3mf); + REQUIRE_FALSE(file_version.valid()); + } + release_PlateData_list(dst_plates); + } + } +} + // An entry masks the non-published slots to their defaults so publishing slot 1 never leaks slot // 0's value into the file. Both a full entry (the whole-slot key list) and a partial entry (a // per-slot key) go through the same masking path in filter_published_config (keys and full_keys @@ -938,6 +997,40 @@ SCENARIO("Unmaskable keys are dropped from the published payload instead of leak } } +// A per-extruder printer key carrying a "#N" variant (e.g. retraction_length#1) must not serialize +// every extruder's value: the base is masked to the author's extruder and the other slots are +// restored to their option default, matching the material-side slot-masking invariant. A bare +// printer base key (no variant) keeps whole-vector serialization. +SCENARIO("Published per-extruder printer keys mask the other extruders to their defaults", "[3mf]") { + GIVEN("a full print configuration with three extruders carrying per-extruder retraction values") { + DynamicPrintConfig full_cfg = DynamicPrintConfig::full_print_config(); + // Non-default values on the un-selected slots, so a leak is distinguishable from the mask + // restoring the option default (retraction_length defaults to {0.8}). + full_cfg.opt("retraction_length")->values = { 3.0, 1.2, 4.0 }; + + WHEN("filtering with only extruder 1's retraction_length checked") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, { "retraction_length#1" }, {}); + + THEN("the author's extruder value survives") { + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[1], Catch::Matchers::WithinAbs(1.2, 1e-6)); + } + THEN("the other extruders are masked to their default") { + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[0], Catch::Matchers::WithinAbs(0.8, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[2], Catch::Matchers::WithinAbs(0.8, 1e-6)); + } + } + WHEN("filtering the bare base key without a '#N' variant") { + DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, { "retraction_length" }, {}); + + THEN("the whole vector is serialized unmasked") { + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[0], Catch::Matchers::WithinAbs(3.0, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[1], Catch::Matchers::WithinAbs(1.2, 1e-6)); + REQUIRE_THAT(filtered_cfg.opt("retraction_length")->values[2], Catch::Matchers::WithinAbs(4.0, 1e-6)); + } + } + } +} + // The extended per-entry fields (full dump list, published type and colour) travel inside the // published_material_keys metadata and round-trip unchanged. SCENARIO("Published 3MF round-trips the extended material metadata", "[3mf]") { From bcff39661cb4c58104ee82c558b2e62484c0db19 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Thu, 3 Sep 2026 13:40:58 +0800 Subject: [PATCH 054/162] Comments and dead code cleanup --- src/libslic3r/PresetBundle.cpp | 75 ++++++++-------------------- src/libslic3r/PublishSettings.hpp | 55 ++++++++------------ src/slic3r/GUI/KBShortcutsDialog.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 19 +++++-- 4 files changed, 57 insertions(+), 94 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index e4bafd0071..4c4114345e 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -5220,29 +5220,18 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // Material pass: positional per-slot entries. The author published, per slot, either the // entire filament (full) or specific keys plus optionally a curated type and/or colour. - // - full: the slot always lands on a freshly created standalone detached copy - // ("Detach from parent", project-embedded, universally compatible, within-load - // deduped) - handled up front in the entry loop below; no library preset is ever - // reused or mutated; - // - partial: a type requirement gates the application - on type match (or no - // requirement) the keys are applied onto the slot's effective preset; on mismatch - // the slot is replaced with the best visible candidate, scored by the published - // identity (exact preset name resolved through the collection's name machinery, - // then exact setting_id, exact filament_id, then vendor+type, then type only); a - // preset no other slot references wins on equal scores; with no replacement - // available the receiver's material is kept and the keys are reported as skipped; - // - colour: applied to the slot regardless of the type gate. - // - capacity: on a non-SEMM receiver whose printer has fewer nozzles than the - // authored slot needs, the entry becomes an empty mixed-filament placeholder - // appended at the tail (the GUI flags it; the user assigns components from their - // own filaments); on a single-physical-slot receiver it is dropped and reported - // instead, since an empty mix could never be edited there. + // - full: lands on a freshly created standalone detached copy (no library preset used + // or mutated); + // - partial: a type requirement gates application; on mismatch the slot is replaced + // with the best visible candidate by published identity (exact name, setting_id, + // filament_id, vendor+type, type); with no replacement the receiver's material is + // kept and the keys are reported as skipped; + // - colour: applied regardless of the type gate. + // - capacity: past the printer's physical nozzles the entry becomes an empty + // mixed-filament placeholder; on a single-physical-slot receiver it is dropped. // Applied partial values land on the collection's edited layer when the slot references - // it and that layer survives the load (visible as a modification, revertible, the user's - // unsaved edits preserved), otherwise on the stored preset in place. - // To keep slot-to-slot aliasing (several slots referencing one preset) from leaking one - // slot's values into another, published slots sharing a preset with another slot are - // re-pointed at distinct presets before the values are applied. + // it and that layer survives the load, otherwise on the stored preset in place. Slots + // aliasing a shared preset are re-pointed at distinct presets before the values apply. { // Grow the receiver's slots only as far as the highest published slot (never // shrink, never pull filler materials for unpublished slots). @@ -5281,26 +5270,13 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool grow_target = std::max(grow_target, size_t(entry.slot) + 1); } // Mixed-filament definitions live in project-level virtual slots, so applying one - // positionally onto a receiver slot that holds a real, physical filament would - // silently convert hardware-backed state into a virtual mix. Compute each mixed - // entry's destination before anything consumes entry.slot (growth, seeding, - // de-aliasing, the overlay below): - // - a definition landing on a receiver slot that already carries a mixed - // definition keeps its place (a like-for-like override of a virtual slot); - // - everything else goes through one monotone append counter preserving author - // order: dest = max(authored, next_free). With a receiver shorter than the - // publish this keeps the authored positions intact; past them (or around a - // collision with a real filament) the mixes pack onto consecutive fresh slots - // AFTER every positional (real-filament) territory. The definition's cells are - // shifted inside the file-side per-slot mixed arrays so they stay readable - // from the new index. No existing slot changes meaning. - // - destinations are also capped: appends past the extruder limit are dropped - // and reported instead of being forced onto a physical filament. - // Physical entries past the printer's capacity join the same append counter - // (dest = next_free, packed consecutively at the tail - never max(authored, - // next_free), which would grow filler physical slots past the capacity) and are - // flagged mixed_placeholder: they become empty mixed-filament placeholders the - // GUI flags for the user to assign components to. + // positionally onto a receiver slot holding a real filament would convert hardware + // state into a virtual mix. Compute each entry's destination before anything + // consumes entry.slot: a definition on a slot that already holds a mixed definition + // keeps its place (like-for-like); everything else follows one monotone append + // counter preserving author order (dest = max(authored, next_free)). Appends past + // the extruder limit are dropped and reported. Physical entries past capacity join + // the same counter as mixed_placeholder empties the GUI flags for assignment. size_t next_free_slot = this->filament_presets.size(); bool any_mixed_relocated = false; // All authored-slot -> destination moves decided by this pass, applied to the @@ -5441,20 +5417,12 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool const auto it = exact_name_by_slot.find(slot); return it == exact_name_by_slot.end() ? std::string() : it->second; }; - std::set used_preset_names(this->filament_presets.begin(), this->filament_presets.end()); // Mirror first_visible_idx()'s start index so suppressed default presets are // never picked as a slot material. const size_t first_candidate = this->filaments.is_default_suppressed() ? this->filaments.num_default_presets() : 0; - // Candidate preference for a published entry: exact preset name (the raw author - // name and the collection-resolved name - renames, removed vendor-generic - // library fallback - both identify the exact preset, unambiguous even when ids - // are shared between variants or missing from older files), then the trimmed - // bare form / alias ("Generic PLA" from "Generic PLA @System"): a same-family - // match that must never outrank the exact preset, then exact setting_id - // (variant-level, since "Generic PLA" and "Generic PLA Matte" share - // filament_id), then exact filament_id, then vendor+type, then type only (a - // type-only pick may surface an unrelated preset, e.g. a different vendor's - // PLA). + // Candidate preference for a published entry: exact preset name (raw author and + // collection-resolved), then trimmed bare form / alias, then exact setting_id + // (variant-level), then exact filament_id, then vendor+type, then type only. auto candidate_score = [](const Preset& candidate, const PublishedMaterialEntry& entry, const std::string& resolved_name) -> int { // Exact preset name: raw and collection-resolved forms both outrank the @@ -5512,7 +5480,6 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool initial_preset = this->filament_presets.empty() ? this->filaments.first_visible().name : this->filament_presets.back(); this->filament_presets.emplace_back(initial_preset); - used_preset_names.insert(initial_preset); } // Published slots that alias another slot (multi-extruder with one filament) // get re-pointed at distinct presets: the overlay writes onto the slot's diff --git a/src/libslic3r/PublishSettings.hpp b/src/libslic3r/PublishSettings.hpp index d7f2c13c5f..60ea9a8354 100644 --- a/src/libslic3r/PublishSettings.hpp +++ b/src/libslic3r/PublishSettings.hpp @@ -10,20 +10,16 @@ class PresetBundle; std::string publish_base_key(const std::string &key); // Structural keys that are never applied onto the receiver's presets when loading a published -// 3MF (single source of truth for the denylist): applying them would rewrite the user's preset -// inheritance/structure. filament_ids is nevertheless exported via the identity list in -// filter_published_config because 3MF validation needs it - exported, never applied. +// 3MF (single source of truth for the denylist); applying them would rewrite the user's preset +// inheritance/structure. filament_ids is still exported via the identity list (3MF validation +// needs it) - exported, never applied. const std::set& publish_structural_keys(); // The mixed-color filament project keys (parallel per-slot arrays, see PresetBundle's -// s_project_options): a mixed slot's full definition - which slots it blends, the sublayer -// ratios and the optional Z-gradient description. A published mixed slot always serializes -// these keys; on import they are applied into the receiver's project_config (not a filament -// preset), so the mix survives the round-trip. +// s_project_options). Import applies them into project_config, not a filament preset. const std::set& publish_mixed_keys(); -// One row of the printer tab's "Retraction" / "Z-Hop" optgroups (key + tab icon id), kept -// together so the tab can later be migrated onto these lists. +// One row of the printer tab's "Retraction" / "Z-Hop" optgroups (config key + tab icon id). struct PublishablePrinterOption { const char *key; // config key, e.g. "retraction_length" const char *icon; // tab icon id, e.g. "printer_extruder_retraction#length" @@ -33,8 +29,8 @@ struct PublishablePrinterOption { const std::vector& publishable_printer_retraction_options(); const std::vector& publishable_printer_z_hop_options(); -// Union of the two optgroup option lists; the published-3MF overlay applies printer keys only -// when their base key is in this allowlist (anything else is contract-excluded). +// Union of the two optgroup option lists; printer keys apply on import only if their base +// key is in this allowlist. const std::set& publishable_printer_keys(); // Union of setting keys differing from the base/system preset across the current print, @@ -60,32 +56,25 @@ struct PublishedMaterialEntry { // 0-based author filament slot; -1 (hand-crafted files) is skipped. int slot{-1}; std::vector keys; - // "Full Publish": the whole filament preset (full_keys) is published. On the receiver - // Full Publish always creates a standalone parentless copy (libslic3r's "Detach from - // parent"): a new project-embedded preset ("Preset Inside Project") with the full - // resolved config, universally compatible (compatible_printers/condition cleared). - // It lives inside the loaded project only - never written to the user's library, - // no existing preset is ever selected-by-reference or mutated. Identical Full - // entries inside one load share one created instance (within-load dedup). + // "Full Publish": the whole filament preset (full_keys) is published. On the receiver Full + // Publish always creates a standalone parentless copy (libslic3r's "Detach from parent"), + // universally compatible and project-embedded only - never written to the user's library. + // Identical Full entries within one load share one created instance (within-load dedup). bool full{false}; // All non-structural filament keys of the author's slot preset; values travel in the file // config, masked to the author's slot index. std::vector full_keys; // Vendor-agnostic (MaterialType) filament type the author requires for this slot; on a - // partial entry's mismatch the slot is replaced with a same-type filament from the - // receiver's library. Full entries consult no gate: they detach unconditionally, and the - // copy carries whatever values the payload bakes. + // partial entry's mismatch the slot is replaced with a same-type filament. Full entries + // consult no gate. bool publish_type{false}; std::string publish_type_value; // Required filament colour, applied on load regardless of the type match. bool publish_color{false}; std::string color; - // Import-side only, never serialized: the entry's authored slot sits past the receiver - // printer's physical filament capacity, so instead of growing a physical slot the entry - // is appended as an empty mixed-filament placeholder (virtual tail slot; the GUI flags - // it and the user assigns components from their own filaments). The flag also keeps the - // entry out of the payload mixed-definition validation and the value-apply passes, - // which only make sense for a slot that carries a real material. + // Import-side only, never serialized: the authored slot sits past the receiver's physical + // capacity, so the entry is appended as an empty mixed-filament placeholder (virtual tail + // slot; the GUI flags it for the user to assign components). bool mixed_placeholder{false}; }; @@ -93,16 +82,12 @@ struct PublishedMaterialEntry { std::string normalize_filament_type(const std::string& type); class DynamicPrintConfig; -// Clear the compatibility lists/conditions on a filament config so it is compatible -// with every printer and every print profile. A detached published material is -// universally compatible by construction: the baseline clone may carry machine-specific -// restrictions. Empty lists + empty conditions => compatible with everything -// (see is_compatible_with_printer, Preset.cpp:840). +// Clear the compatibility lists/conditions on a filament config so it is universally +// compatible once detached (empty lists + empty conditions = compatible with everything). void make_publish_universal(DynamicPrintConfig &config); -// Naming base for a detached published-material copy: "Generic PLA @System" -> -// "Generic PLA" (truncate at the first '@' variant tail, right-trimmed). Unchanged -// when the name carries no '@'. Empty result means "fall back to identity fields". +// Naming base for a detached published-material copy: "Generic PLA @System" -> "Generic PLA" +// (truncate/right-trim at the first '@' tail). Empty result means "fall back to identity". std::string publish_material_base_name(const std::string &preset_name); // Minimal DynamicPrintConfig for a published 3MF export: only the selected published keys, diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index df69fa5434..2f882e35aa 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -174,7 +174,7 @@ void KBShortcutsDialog::fill_shortcuts() { ctrl + "O", L("Open Project") }, { ctrl + "S", L("Save Project") }, { ctrl + shift + "S", L("Save Project as")}, - { ctrl + shift + "E", L("Publish") }, + { ctrl + shift + "E", L("Publish 3MF") }, // File>Import { ctrl + "I", L("Import geometry data from STL/STEP/3MF/OBJ/AMF files") }, // File>Export diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0d2c5ac4c9..a1915a1200 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -15300,11 +15300,12 @@ void Plater::load_project(wxString const& filename2, if (using_exported_file()) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " using ecported set project filename: " << filename; p->set_project_filename(filename); - } else if (loaded_published) { + } else if (loaded_published && !res.empty()) { // A "published" 3MF loads as a new project: its path must not become the project // filename (Save/Ctrl-S prompts for a destination instead of overwriting it); // reset() already cleared the project name, so restore the default title and keep - // the file in recents. + // the file in recents. Only on a successful load (res not empty): a failed or + // cancelled load must not pollute "Recently opened". p->set_project_name(_L("Untitled")); if (!filename.IsEmpty()) wxGetApp().mainframe->add_to_recent_projects(filename); @@ -18316,8 +18317,18 @@ int Plater::export_published_3mf(const std::vector& published_keys, DynamicPrintConfig full_cfg = wxGetApp().preset_bundle->full_config_secure(); DynamicPrintConfig filtered_cfg = filter_published_config(full_cfg, published_keys, material_keys); std::string payload; - for (const std::string& key : filtered_cfg.keys()) - payload += key + " = " + filtered_cfg.opt_serialize(key) + "\n"; + for (const std::string& key : filtered_cfg.keys()) { + // A value containing a newline would break the INI written below (read_ini throws), + // so load_from_ini_string discards the whole settings block on import. Skip such + // keys instead of silently dropping every setting. + std::string value = filtered_cfg.opt_serialize(key); + if (value.find('\n') != std::string::npos) { + BOOST_LOG_TRIVIAL(warning) << "publish: dropping key \"" << key + << "\" from the published payload (value contains a newline)"; + continue; + } + payload += key + " = " + value + "\n"; + } model.model_info->metadata_items[ORCA_PUBLISHED_CONFIG_TAG] = std::move(payload); // Same file layout as save_project(), plus Silence (so export_3mf does not set the project From 904796cf24eb64a336bdae22263260822b2be818 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Thu, 3 Sep 2026 14:12:51 +0800 Subject: [PATCH 055/162] Correctness fixes. Remove hard-coded appends for printer settings --- src/libslic3r/Format/bbs_3mf.cpp | 119 +++++++++++++++++++++++++------ src/slic3r/GUI/Plater.cpp | 6 +- src/slic3r/GUI/Tab.cpp | 31 +++----- 3 files changed, 111 insertions(+), 45 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 4b9c666ce0..20e63e9d5e 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -6999,16 +6999,24 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // as From_Other and import the geometry silently. if (m_minimal_published) { // metadata_item_map is seeded from the input file's metadata_items above, so a - // project opened from a regular Orca/BBS 3MF still carries the Application / - // OrcaSlicer tags it came with. Erase them: skipping the overwrite is not enough, - // and an empty value would still emit a "present-looking" tag to old receivers. + // project opened from a regular Orca/BBS 3MF still carries the slicer-identifying + // tags it came with. Erase every one of them - not just the two most common - + // so a published 3MF is fully tag-less: old receivers classify it as From_Other + // and import the geometry silently instead of showing a baked-in "old version" + // popup, and no version marker survives to seed a later re-save. metadata_item_map.erase(BBL_APPLICATION_TAG); metadata_item_map.erase(ORCASLICER_TAG); + metadata_item_map.erase(BBS_3MF_VERSION); + metadata_item_map.erase(BBS_3MF_VERSION1); } else { metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str(); } } - metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); + // The Bambu 3MF version marker is part of the slicer identity: omit it for a minimal + // published file along with the tags erased above (skipping the overwrite alone would + // leave the value the source file seeded into metadata_item_map). + if (!m_minimal_published) + metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); if (!model.mk_name.empty()) { metadata_item_map[BBL_MAKERLAB_TAG] = xml_escape(model.mk_name); @@ -7031,10 +7039,11 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) BOOST_LOG_TRIVIAL(info) << "bbs_3mf: save key= " << item.first << ", value = " << item.second; stream << " <" << METADATA_TAG << " name=\"" << item.first << "\">" << xml_escape(item.second) << "\n"; - if (item.first == BBL_APPLICATION_TAG) { + if (item.first == BBL_APPLICATION_TAG && !m_minimal_published) { // The OrcaSlicer tag is only written for files that carry the Application // tag, which a minimal published 3MF erases (see the map assignment above): - // the branch below is unreachable in minimal mode. + // the explicit !m_minimal_published guard keeps the tag-less guarantee from + // depending on that erase happening to run first. stream << " <" << METADATA_TAG << " name=\"" << ORCASLICER_TAG << "\">" << xml_escape(SoftFever_VERSION) << "\n"; } @@ -9213,6 +9222,68 @@ std::string bbs_3mf_get_thumbnail(const char *path) return data; } +namespace { + +// Parses just the model-file elements, mirroring the importer's +// _handle_start_metadata/_handle_end_metadata (attribute-order independent, entity-unescaped, +// whitespace tolerant). Stops the parser as soon as the published flag node is read so the +// geometry/resources that follow are skipped, which keeps the per-file cost small. +struct PublishedXmlProbe +{ + XML_Parser parser{nullptr}; + bool in_metadata{false}; + bool found{false}; + bool published{false}; + std::string curr_name; + std::string curr_value; + + static std::string attribute(const char** attrs, const char* key) + { + if (attrs == nullptr) + return std::string(); + // expat hands the attrs as a NULL-terminated {name, value, ...} array. + for (unsigned int a = 0; attrs[a] != nullptr; a += 2) + if (::strcmp(attrs[a], key) == 0 && attrs[a + 1] != nullptr) + return attrs[a + 1]; + return std::string(); + } + + static void XMLCALL start(void* user_data, const char* name, const char** attrs) + { + auto* self = static_cast(user_data); + if (::strcmp(name, METADATA_TAG) == 0) { + self->in_metadata = true; + self->curr_name = attribute(attrs, NAME_ATTR); + self->curr_value.clear(); + } else { + self->in_metadata = false; + } + } + + static void XMLCALL characters(void* user_data, const XML_Char* s, int len) + { + auto* self = static_cast(user_data); + if (self->in_metadata) + self->curr_value.append(s, len); + } + + static void XMLCALL end(void* user_data, const char* name) + { + auto* self = static_cast(user_data); + if (!self->in_metadata || ::strcmp(name, METADATA_TAG) != 0) + return; + self->in_metadata = false; + if (self->curr_name == ORCA_PUBLISHED_TAG) { + self->published = is_published_3mf_flag(xml_unescape(self->curr_value)); + self->found = true; + if (self->parser != nullptr) + XML_StopParser(self->parser, false); + } + } +}; + +} // namespace + bool bbs_3mf_is_published(const std::string &path) { mz_zip_archive archive; @@ -9234,7 +9305,8 @@ bool bbs_3mf_is_published(const std::string &path) if (!open_zip_reader(&archive, path)) return false; - // Read just the model XML and locate the published metadata node; no geometry parsing. + // Read just the model XML (the metadata node sits before the resources, so the probe below + // stops early) rather than by a raw substring match; no geometry parsing. int index = mz_zip_reader_locate_file(&archive, MODEL_FILE.c_str(), nullptr, 0); if (index < 0) return false; @@ -9245,22 +9317,29 @@ bool bbs_3mf_is_published(const std::string &path) if (!mz_zip_reader_extract_to_mem(&archive, index, xml.data(), xml.size(), 0)) return false; - const std::string needle = std::string(""; - size_t pos = xml.find(needle); - if (pos == std::string::npos) - return false; - pos += needle.size(); - size_t end = xml.find("", pos); - if (end == std::string::npos) + XML_Parser parser = XML_ParserCreate(nullptr); + if (parser == nullptr) return false; - size_t value_begin = pos, value_end = end; - while (value_begin < value_end && (xml[value_begin] == ' ' || xml[value_begin] == '\t' || xml[value_begin] == '\n' || xml[value_begin] == '\r')) - ++value_begin; - while (value_end > value_begin && (xml[value_end - 1] == ' ' || xml[value_end - 1] == '\t' || xml[value_end - 1] == '\n' || xml[value_end - 1] == '\r')) - --value_end; + PublishedXmlProbe probe; + probe.parser = parser; + XML_SetUserData(parser, &probe); + XML_SetElementHandler(parser, PublishedXmlProbe::start, PublishedXmlProbe::end); + XML_SetCharacterDataHandler(parser, PublishedXmlProbe::characters); + // Never resolve external entities from a file we are only probing. + XML_SetExternalEntityRefHandler(parser, nullptr); + XML_SetEntityDeclHandler(parser, nullptr); - return is_published_3mf_flag(xml.substr(value_begin, value_end - value_begin)); + const XML_Status status = XML_Parse(parser, xml.data(), static_cast(xml.size()), 1); + // XML_StopParser(parser, false) from the end handler makes XML_Parse return + // XML_STATUS_ERROR with XML_ERROR_ABORTED - treat that as success (we stopped on the flag). + const bool parse_ok = (status == XML_STATUS_OK) || + (XML_GetErrorCode(parser) == XML_ERROR_ABORTED && probe.found); + XML_ParserFree(parser); + + if (!parse_ok) + return false; + return probe.published; } bool load_gcode_3mf_from_stream(std::istream &data, DynamicPrintConfig *config, Model *model, PlateDataPtrs *plate_data_list, Semver *file_version) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index a1915a1200..86815bb7ab 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -8752,7 +8752,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ } Semver old_version(1, 5, 9); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && (file_version < old_version) && load_model && load_config && !config_loaded.empty()) { + // A published 3MF has no project config to migrate: skip the old-version + // translations even if a slicer tag slipped through classification. + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && (file_version < old_version) && !published_config.published && load_model && load_config && !config_loaded.empty()) { translate_old = true; partplate_list.get_plate_size(current_width, current_depth, current_height); } @@ -8854,7 +8856,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ { // BBS: modify the prime tower params for old version file Semver old_version3(2, 0, 0); - if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && file_version < old_version3) { + if ((en_3mf_file_type == En3mfType::From_BBS || en_3mf_file_type == En3mfType::From_Orca) && !published_config.published && file_version < old_version3) { double old_filament_prime_volume = 0.; int filament_count = 0; { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 96382855ad..962d59d9ca 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -7,6 +7,7 @@ #include "libslic3r/FilamentMixer.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/Model.hpp" +#include "libslic3r/PublishSettings.hpp" #include "libslic3r/GCode/GCodeProcessor.hpp" #include "Search.hpp" @@ -5699,32 +5700,16 @@ if (is_marlin_flavor) optgroup->append_single_option_line("extruder_offset", "printer_extruder_basic_information#extruder-offset-position", extruder_idx); //BBS: don't show retract related config menu in machine page - // Keep this optgroup's options in sync with publishable_printer_retraction_options() - // in libslic3r/PublishSettings.hpp: the published-3MF printer allowlist is its union - // with the Z-Hop optgroup below. + // These optgroups are built from publishable_printer_retraction/z_hop_options() so the + // published-3MF printer allowlist (their union in libslic3r/PublishSettings.hpp) can + // never drift from what the machine page actually shows. optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); - optgroup->append_single_option_line("retraction_length", "printer_extruder_retraction#length", extruder_idx); - optgroup->append_single_option_line("retract_restart_extra", "printer_extruder_retraction#extra-length-on-restart", extruder_idx); - optgroup->append_single_option_line("retraction_speed", "printer_extruder_retraction#retraction-speed", extruder_idx); - optgroup->append_single_option_line("deretraction_speed", "printer_extruder_retraction#deretraction-speed", extruder_idx); - optgroup->append_single_option_line("retraction_minimum_travel", "printer_extruder_retraction#travel-distance-threshold", extruder_idx); - optgroup->append_single_option_line("retract_when_changing_layer", "printer_extruder_retraction#retract-on-layer-change", extruder_idx); - optgroup->append_single_option_line("wipe", "printer_extruder_retraction#wipe-while-retracting", extruder_idx); - optgroup->append_single_option_line("wipe_distance", "printer_extruder_retraction#wipe-distance", extruder_idx); - optgroup->append_single_option_line("retract_before_wipe", "printer_extruder_retraction#retract-amount-before-wipe", extruder_idx); - // Orca - optgroup->append_single_option_line("retract_after_wipe", "printer_extruder_retraction#retract-amount-after-wipe", extruder_idx); + for (const PublishablePrinterOption& opt : publishable_printer_retraction_options()) + optgroup->append_single_option_line(opt.key, opt.icon, extruder_idx); - // Keep this optgroup's options in sync with publishable_printer_z_hop_options() - // in libslic3r/PublishSettings.hpp: the published-3MF printer allowlist is its union - // with the Retraction optgroup above. optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement"); - optgroup->append_single_option_line("retract_lift_enforce", "printer_extruder_z_hop#on-surfaces", extruder_idx); - optgroup->append_single_option_line("z_hop_types", "printer_extruder_z_hop#z-hop-type", extruder_idx); - optgroup->append_single_option_line("z_hop", "printer_extruder_z_hop#z-hop-height", extruder_idx); - optgroup->append_single_option_line("travel_slope", "printer_extruder_z_hop#traveling-angle", extruder_idx); - optgroup->append_single_option_line("retract_lift_above", "printer_extruder_z_hop#only-lift-z-above", extruder_idx); - optgroup->append_single_option_line("retract_lift_below", "printer_extruder_z_hop#only-lift-z-below", extruder_idx); + for (const PublishablePrinterOption& opt : publishable_printer_z_hop_options()) + optgroup->append_single_option_line(opt.key, opt.icon, extruder_idx); optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change"); optgroup->append_single_option_line("retract_length_toolchange", "printer_extruder_retraction#retraction-when-switching-materials", extruder_idx); From 07dafaf299492203e0a30bf444f64142632f6833 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Thu, 3 Sep 2026 17:13:09 +0800 Subject: [PATCH 056/162] fix: default enable-ota flag and fixing startup missing vendor --- src/libslic3r/AppConfig.cpp | 5 +++++ src/slic3r/Utils/PresetUpdater.cpp | 3 --- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 020fc0662d..39fffd57a5 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -638,6 +638,11 @@ void AppConfig::set_defaults() set_bool("use_printer_agents", false); } + if (get("enable_ota").empty()) + { + set_bool("enable_ota", false); + } + // Remove legacy window positions/sizes erase("app", "main_frame_maximized"); erase("app", "main_frame_pos"); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 42bd346222..d05c7b9586 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1090,9 +1090,6 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const AppConfig *app_config = GUI::wxGetApp().app_config; - if (!app_config->get_bool("enable_ota")) - return; - const auto enabled_vendors = app_config->vendors(); std::set bundles; From c6ab725584362cc951c3fde3acf9905b34b86f9b Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Fri, 4 Sep 2026 14:41:20 +0800 Subject: [PATCH 057/162] Fixes issue with mixed filament being loaded into a real slot --- src/libslic3r/PresetBundle.cpp | 149 ++++++++++++- .../libslic3r/test_preset_bundle_loading.cpp | 209 ++++++++++++++++++ 2 files changed, 354 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index da5696840b..dab0dd4de3 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4759,6 +4759,98 @@ static void apply_mixed_config_relocations(DynamicPrintConfig& } } +// Relocate the per-slot cells of the receiver's OWN mixed-filament definitions (the ones that +// pre-existed in project_config) onto fresh tail slots, clearing each vacated source cell so an +// incoming published real filament can claim it. Unlike apply_mixed_config_relocations - which +// moves the incoming file's config and leaves sources alone - a displaced receiver mix must not +// keep its mixed flag in the physical region: the source slot becomes a physical slot, so its +// mixed flag and definition are reset, while its swatch colour and mapping travel with the +// definition to the tail slot. Reads come from a frozen snapshot so an earlier move's +// destination never overwrites a later move's still-unread source (sources sit in the physical +// region and destinations past it, so they cannot overlap, but the snapshot keeps the helper +// safe for any future reordering). +static void apply_receiver_mix_relocations(DynamicPrintConfig& config, + std::vector>& ams_multi_color_filment, + const std::vector>& moves) +{ + if (moves.empty()) + return; + + auto move_bools = [&](const char* key, bool clear_source) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast(opt); + std::unique_ptr snapshot(opt->clone()); + const auto* frozen = static_cast(snapshot.get()); + for (const auto [from, to] : moves) { + const bool cell = from < frozen->values.size() ? frozen->values[from] : false; + if (live->values.size() <= to) + live->values.resize(to + 1, false); + live->values[to] = cell; + if (clear_source && from < live->values.size()) + live->values[from] = false; + } + }; + auto move_strings = [&](const char* key, bool clear_source) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast(opt); + std::unique_ptr snapshot(opt->clone()); + const auto* frozen = static_cast(snapshot.get()); + for (const auto [from, to] : moves) { + const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); + if (live->values.size() <= to) + live->values.resize(to + 1, std::string{}); + live->values[to] = cell; + if (clear_source && from < live->values.size()) + live->values[from] = std::string{}; + } + }; + auto move_ints = [&](const char* key) { + ConfigOption* opt = config.optptr(key); + if (opt == nullptr) + return; + auto* live = static_cast(opt); + std::unique_ptr snapshot(opt->clone()); + const auto* frozen = static_cast(snapshot.get()); + for (const auto [from, to] : moves) { + const int cell = from < frozen->values.size() ? frozen->values[from] : 0; + if (live->values.size() <= to) + live->values.resize(to + 1, 0); + live->values[to] = cell; + } + }; + + // Mixed-definition cells: move to the tail and clear the source - the vacated physical slot + // no longer holds a mix. + move_bools("filament_is_mixed", true); + move_strings("filament_mixed_components", true); + move_strings("filament_mixed_sublayer_ratios", true); + move_bools("filament_mixed_gradient", true); + move_strings("filament_mixed_gradient_range", true); + move_strings("filament_mixed_gradient_curve", true); + move_bools("filament_mixed_gradient_per_part", true); + // Swatch colour and mapping travel with the definition; the source colour is left for the + // incoming real's publish_color (or the slot's resolved preset) to fill in. + move_strings("filament_colour", false); + move_strings("filament_multi_colour", false); + move_strings("filament_colour_type", false); + move_ints("filament_map"); + move_ints("filament_nozzle_map"); + move_ints("filament_volume_map"); + { + const std::vector> frozen = ams_multi_color_filment; + for (const auto [from, to] : moves) { + const std::vector cell = from < frozen.size() ? frozen[from] : std::vector(); + if (ams_multi_color_filment.size() <= to) + ams_multi_color_filment.resize(to + 1, std::vector{}); + ams_multi_color_filment[to] = cell; + } + } +} + //convert the old filament preset to new one after split static void convert_filament_preset_name(std::string& machine_name, std::string& filament_name) @@ -5287,7 +5379,24 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // counter preserving author order (dest = max(authored, next_free)). Appends past // the extruder limit are dropped and reported. Physical entries past capacity join // the same counter as mixed_placeholder empties the GUI flags for assignment. - size_t next_free_slot = this->filament_presets.size(); + // + // The finished project keeps the physical-first invariant (see the sidebar's + // add_custom_filament: mixed slots always sit at the tail, physical slots packed + // first). That invariant must survive an import, so every receiver mixed slot that + // would end up inside (or ahead of) the incoming physical region is displaced to a + // fresh tail slot, and the tail allocator starts at the physical boundary rather + // than the receiver's slot count - otherwise a relocated mix can collide with a + // keep-placed new real slot. + size_t physical_boundary = this->num_physical_filaments(); + for (const PublishedMaterialEntry& entry : published_config->material_keys) + // Mirror the payload-real keep-place decision below: a real keeps its authored + // slot when that slot already exists on the receiver, or lies within the + // printer's physical capacity. Both end up as physical slots at index + // entry.slot, so they bound the physical region even past the capacity. + if (entry.slot >= 0 && !is_mixed_definition(entry) && + (size_t(entry.slot) < this->filament_presets.size() || size_t(entry.slot) < physical_capacity)) + physical_boundary = std::max(physical_boundary, size_t(entry.slot) + 1); + size_t next_free_slot = std::max(physical_boundary, this->filament_presets.size()); bool any_mixed_relocated = false; // All authored-slot -> destination moves decided by this pass, applied to the // incoming config in one batched snapshot step below (an earlier move's @@ -5295,6 +5404,33 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // onto consecutive slots, so incremental in-place shifts would overwrite a // definition that has not been moved yet). std::vector> mixed_moves; + // Receiver-mix relocations land in project_config, not the incoming config, so they + // get their own move list, applied below after the arrays grow. The swept set lets + // the payload loop below treat a displaced receiver mix as the physical slot it will + // become (a payload mix like-for-like overriding such a slot must itself relocate). + std::vector> receiver_mix_moves; + std::set swept_mix_slots; + for (size_t slot = 0; slot < this->filament_presets.size(); ++slot) { + if (!this->is_mixed_filament(slot)) + continue; + // Slot 0 is the receiver's base filament and is never a virtual mix; the + // sidebar's physical-first layout guarantees it, so never displace it. + if (slot == 0) + continue; + if (slot >= physical_boundary) + continue; // already lives in the tail region + const size_t dest = next_free_slot++; + swept_mix_slots.insert(slot); + receiver_mix_moves.emplace_back(slot, dest); + any_mixed_relocated = true; + // A payload mix authored at the same slot (a mix inside the physical region) is + // processed after this sweep and overrides its own destination below. + published_config->mixed_slot_relocations.insert_or_assign(int(slot), int(dest)); + published_config->material_replacements.emplace_back("slot " + std::to_string(slot) + " -> slot " + + std::to_string(dest) + ": mixed filament"); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated receiver mixed filament slot " << slot + << " -> " << dest << " (physical-first rebalance)"; + } for (auto entry_it = published_config->material_keys.begin(); entry_it != published_config->material_keys.end();) { PublishedMaterialEntry& entry = *entry_it; if (entry.slot < 0) { @@ -5310,7 +5446,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // above the printer's capacity (pre-existing state is never shrunk). bool keep_place = false; if (is_payload_mix) - keep_place = this->is_mixed_filament(size_t(entry.slot)); + keep_place = this->is_mixed_filament(size_t(entry.slot)) && swept_mix_slots.count(size_t(entry.slot)) == 0; else keep_place = size_t(entry.slot) < this->filament_presets.size() || size_t(entry.slot) < physical_capacity; @@ -5357,7 +5493,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool entry.slot = dest_slot; any_mixed_relocated = true; mixed_moves.emplace_back(size_t(authored_slot), size_t(entry.slot)); - published_config->mixed_slot_relocations.emplace(authored_slot, entry.slot); + published_config->mixed_slot_relocations.insert_or_assign(authored_slot, entry.slot); published_config->material_replacements.emplace_back("slot " + std::to_string(authored_slot) + " -> slot " + std::to_string(entry.slot) + ": mixed filament"); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": published 3MF relocated mixed filament slot " << authored_slot @@ -5374,7 +5510,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool if (dest_slot != authored_slot) { entry.slot = dest_slot; mixed_moves.emplace_back(size_t(authored_slot), size_t(dest_slot)); - published_config->mixed_slot_relocations.emplace(authored_slot, dest_slot); + published_config->mixed_slot_relocations.insert_or_assign(authored_slot, dest_slot); } published_config->material_replacements.emplace_back( (dest_slot != authored_slot ? @@ -5725,6 +5861,11 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool // slots wrote to it; that compound case is not chased.) const bool edited_survives_load = this->filament_presets.empty() || this->filament_presets.front() == this->filaments.get_edited_preset().name; + // Displaced receiver mixes (see the physical-first rebalance above): move their + // per-slot cells onto the grown tail slots and reset the vacated physical slots, + // so the incoming real filaments can claim them. Runs before mixed_final_slots is + // built, so the rebalanced layout is what the mix validation sees. + apply_receiver_mix_relocations(this->project_config, this->ams_multi_color_filment, receiver_mix_moves); // Final layout for mix-definition validation: every slot that will hold a // mixed definition once this load completes - the receiver's own virtual // slots, each published mixed entry's final (possibly relocated) slot, and diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 9526a64b02..f7971cd1d2 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -2980,6 +2980,215 @@ TEST_CASE("Published 3MF relocates a mixed filament instead of overwriting a phy } } +// A receiver that already owns a MIXED filament must keep the physical-first invariant after a +// published-3MF import: when incoming physical filaments would land on (or ahead of) the +// receiver's mixed slot, that mix is displaced to a fresh tail slot instead of being left +// interleaved with them (the R,M,R bug). +TEST_CASE("Published 3MF relocates the receiver's mixed filament past the incoming physical slots", "[Preset][Bundle][Published]") +{ + // Build the receiver's tool-changer with three slots, the third being the receiver's own + // mixed filament. A SEMM (single_extruder_multi_material) receiver sizes its slot list by + // hand, so a lower slot count than the printer's nozzle count is preserved on load - a + // non-SEMM tool-changer would top the preset list up to the nozzle count and shift the + // expected sizes (the rebalance logic under test is the same either way). + auto make_receiver = [](PresetBundle &bundle, const std::string &components, const std::string &ratios) { + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3, "#123456"); + bundle.printers.get_edited_preset().config.opt("single_extruder_multi_material", true)->value = true; + bundle.project_config.opt("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt("filament_mixed_components")->values[2] = components; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2] = ratios; + bundle.project_config.opt("filament_colour")->values[2] = "#800080"; + bundle.project_config.opt("filament_multi_colour")->values[2] = "#800080"; + }; + auto make_real_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + // A four-physical author project with no mixed slots (colour publish only), as in the + // reported Ferrari reference file. + auto make_config_4_real = [] { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#000000", "#FFFFFF", "#FFFF00" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + return config; + }; + + // [R, R, M] + four colour-only physical slots at authored 0..3 -> [R, R, R, R, M]. + { + PresetBundle bundle; + make_receiver(bundle, "1,2", "0.5,0.5"); + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#000000"), + make_real_entry(2, "#FFFFFF"), make_real_entry(3, "#FFFF00") }; + DynamicPrintConfig config = make_config_4_real(); + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + // The receiver grows by one extra virtual slot; the mix lands at the tail. + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 4; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[4]); + // The definition travelled with its swatch colour; the vacated slot 2 became physical. + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[4] == "1,2"); + CHECK(components[2].empty()); + const auto &colour = bundle.project_config.opt("filament_colour")->values; + REQUIRE(colour.size() == 5); + CHECK(colour[4] == "#800080"); + CHECK(colour[2] == "#FFFFFF"); + CHECK(pub.mixed_slot_relocations.at(2) == 4); + bool relocated_reported = false; + for (const std::string &message : pub.material_replacements) + if (message.find("slot 2 -> slot 4") != std::string::npos && + message.find("mixed filament") != std::string::npos) + relocated_reported = true; + CHECK(relocated_reported); + CHECK(pub.skipped_keys.empty()); + } + + // [R, R, M] plus a payload mix authored at slot 3: the receiver mix (displaced to slot 3) sits + // ahead of the appended payload mix (slot 4), preserving physical-first tail ordering. + { + PresetBundle bundle; + make_receiver(bundle, "1,2", "0.5,0.5"); + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3, 4 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#000000", "#0000FF", "#800080" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99", "GFL99" }; + // Authored slot 3 is a payload mixed definition blending slots 1 and 3. + config.opt("filament_is_mixed")->values = { 0, 0, 0, 1 }; + config.opt("filament_mixed_components")->values = { "", "", "", "1,3" }; + config.opt("filament_mixed_sublayer_ratios")->values = { "", "", "", "0.6,0.4" }; + config.opt("filament_mixed_gradient")->values = { 0, 0, 0, 1 }; + config.opt("filament_mixed_gradient_range")->values = { "", "", "", "0.9,0.1" }; + config.opt("filament_mixed_gradient_curve")->values = { "", "", "", "0,0.1|1,0.9" }; + config.opt("filament_mixed_gradient_per_part")->values = { 0, 0, 0, 1 }; + + PublishedMaterialEntry mix; + mix.slot = 3; + mix.filament_type = "PLA"; + mix.publish_color = true; + mix.color = "#800080"; + mix.keys = { "filament_is_mixed", "filament_mixed_components", "filament_mixed_sublayer_ratios", + "filament_mixed_gradient", "filament_mixed_gradient_range", "filament_mixed_gradient_curve", + "filament_mixed_gradient_per_part" }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#000000"), + make_real_entry(2, "#0000FF"), mix }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + CHECK_FALSE(is_mixed[0]); + CHECK_FALSE(is_mixed[1]); + CHECK_FALSE(is_mixed[2]); + CHECK(is_mixed[3]); // receiver's mix, displaced to slot 3 first + CHECK(is_mixed[4]); // payload's mix, appended after + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[3] == "1,2"); + CHECK(components[4] == "1,3"); + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(2) == 3); + CHECK(pub.mixed_slot_relocations.at(3) == 4); + CHECK(pub.skipped_keys.empty()); + } +} + +// Multiple receiver mixed slots interleaved with multiple incoming physical slots all rebalance +// onto consecutive tail slots in index order (no cascade/overlap). +TEST_CASE("Published 3MF rebalances several receiver mixed slots past the physical region", "[Preset][Bundle][Published]") +{ + PresetBundle bundle; + Preset &pla = add_inmemory_preset(bundle.filaments, "My PLA"); + pla.config.opt_string("filament_type", 0u) = "PLA"; + bundle.filament_presets = { "My PLA", "My PLA", "My PLA" }; + bundle.set_num_filaments(3, "#123456"); + bundle.printers.get_edited_preset().config.opt("single_extruder_multi_material", true)->value = true; + // Receiver: slot 1 and slot 2 are mixed. + bundle.project_config.opt("filament_is_mixed")->values[1] = 1; + bundle.project_config.opt("filament_is_mixed")->values[2] = 1; + bundle.project_config.opt("filament_mixed_components")->values[1] = "1,2"; + bundle.project_config.opt("filament_mixed_components")->values[2] = "1,3"; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[1] = "0.5,0.5"; + bundle.project_config.opt("filament_mixed_sublayer_ratios")->values[2] = "0.4,0.6"; + + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.opt("filament_diameter")->values = { 1.75, 1.75, 1.75 }; + config.opt("filament_self_index")->values = { 1, 2, 3 }; + config.opt("filament_extruder_variant")->values = { + "Direct Drive Standard", "Direct Drive Standard", "Direct Drive Standard" + }; + config.opt("filament_colour")->values = { "#FF0000", "#00AA00", "#0000FF" }; + config.opt("filament_type")->values = { "PLA", "PLA", "PLA" }; + config.opt("filament_vendor")->values = { "Generic", "Generic", "Generic" }; + config.opt("filament_ids")->values = { "GFL99", "GFL99", "GFL99" }; + + auto make_real_entry = [](int slot, const char *color) { + PublishedMaterialEntry entry; + entry.slot = slot; + entry.filament_type = "PLA"; + entry.filament_vendor = "Generic"; + entry.publish_color = true; + entry.color = color; + return entry; + }; + + PublishedConfig pub; + pub.published = true; + pub.material_keys = { make_real_entry(0, "#FF0000"), make_real_entry(1, "#00AA00"), make_real_entry(2, "#0000FF") }; + Preset::normalize(config); + bundle.load_config_model("test.3mf", std::move(config), Semver(), &pub); + + REQUIRE(bundle.filament_presets.size() == 5); + const auto &is_mixed = bundle.project_config.opt("filament_is_mixed")->values; + REQUIRE(is_mixed.size() == 5); + for (size_t i = 0; i < 3; ++i) + CHECK_FALSE(is_mixed[i]); + CHECK(is_mixed[3]); + CHECK(is_mixed[4]); + const auto &components = bundle.project_config.opt("filament_mixed_components")->values; + REQUIRE(components.size() == 5); + CHECK(components[3] == "1,2"); + CHECK(components[4] == "1,3"); + REQUIRE(pub.mixed_slot_relocations.size() == 2); + CHECK(pub.mixed_slot_relocations.at(1) == 3); + CHECK(pub.mixed_slot_relocations.at(2) == 4); + CHECK(pub.skipped_keys.empty()); +} + // The receiver's printer gates how many PHYSICAL filament slots a published 3MF may add: a // non-SEMM tool-changer feeds filament N from nozzle N, so a published slot past the nozzle // count cannot become a physical filament. It becomes an empty mixed-filament placeholder From 9df23cab625d483f8746658d376d4607b10d2f11 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Fri, 4 Sep 2026 14:59:53 +0800 Subject: [PATCH 058/162] fix: opc updates being discarded --- src/slic3r/Utils/PresetUpdater.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index d05c7b9586..017deb0fc9 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -780,11 +780,15 @@ void PresetUpdater::priv::sync_vendor_config(const std::string& vendor_id) const fs::path cached_vendor_json = cache_profile_path / (vendor_id + ".json"); const fs::path cached_vendor_folder = cache_profile_path / vendor_id; - if (!fs::is_regular_file(cached_vendor_json) || !fs::is_directory(cached_vendor_folder) || - fs::is_empty(cached_vendor_folder)) { + + const fs::path cached_vendor_opc = cache_profile_path / (vendor_id + ".opc"); + + bool is_json_update = fs::is_regular_file(cached_vendor_json) && fs::is_directory(cached_vendor_folder) && !fs::is_empty(cached_vendor_folder); + bool is_opc_update = fs::is_regular_file(cached_vendor_opc); + if (!is_json_update && !is_opc_update) { BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] rejected update for " << vendor_id << ": expected " << vendor_id << ".json and a non-empty " - << vendor_id << " directory"; + << vendor_id << " directory, or OPC update format."; fs::remove_all(cached_vendor_folder, ec); fs::remove(cached_vendor_json, ec); return; From 8740696e751ab615bb404be86b817f6446666686 Mon Sep 17 00:00:00 2001 From: yw4z Date: Mon, 7 Sep 2026 13:16:31 +0300 Subject: [PATCH 059/162] init --- resources/images/param_add.svg | 12 +-- src/slic3r/GUI/Field.cpp | 108 ++++++-------------------- src/slic3r/GUI/Field.hpp | 7 +- src/slic3r/GUI/OptionsGroup.cpp | 21 +++-- src/slic3r/GUI/PluginPickerDialog.cpp | 81 +++++++++++++------ src/slic3r/GUI/PluginPickerDialog.hpp | 9 ++- 6 files changed, 111 insertions(+), 127 deletions(-) diff --git a/resources/images/param_add.svg b/resources/images/param_add.svg index 71ea5092af..b00140b68a 100644 --- a/resources/images/param_add.svg +++ b/resources/images/param_add.svg @@ -1,8 +1,4 @@ - - - - Layer 1 - - - - + + + + \ No newline at end of file diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 142cf70522..d25106397e 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -2154,6 +2154,7 @@ void PrinterAgentChoice::msw_rescale() void PluginField::BUILD() { auto* panel = new wxPanel(m_parent, wxID_ANY); + panel->SetBackgroundColour(*wxWHITE); wxGetApp().UpdateDarkUI(panel); window = panel; @@ -2196,9 +2197,8 @@ void PluginField::rebuild_ui() m_rows.clear(); m_standalone_add_btn = nullptr; - if (m_values.empty()) { - add_empty_state_row(); - } else { + add_empty_state_row(); + if (!m_values.empty()) { for (size_t i = 0; i < m_values.size(); ++i) add_plugin_row(display_name_for_value(m_values[i]), i == m_values.size() - 1); } @@ -2215,94 +2215,43 @@ void PluginField::rebuild_ui() void PluginField::add_empty_state_row() { - const auto button_size = wxSize(def_width_thinner() * m_em_unit, -1); - auto row_sizer = new wxBoxSizer(wxHORIZONTAL); - - wxTextCtrl* display = new wxTextCtrl(window, wxID_ANY, _L("No plugin selected"), - wxDefaultPosition, wxSize(def_width_wider() * m_em_unit, wxDefaultCoord), - wxTE_READONLY); - display->SetEditable(false); - wxGetApp().UpdateDarkUI(display); - display->SetToolTip(_L("No plugin selected")); - - auto add_btn = new ScalableButton(window, wxID_ANY, "param_add", wxEmptyString, - button_size, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 16); - wxGetApp().UpdateDarkUI(add_btn); - add_btn->SetToolTip(_L("Add plugin")); + auto add_btn = new Button(window, _L("Add plugin"), "param_add", 0, 16); + add_btn->SetStyle(ButtonStyle::Regular, ButtonType::Parameter); add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { on_add_clicked(); }); - row_sizer->Add(display, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 4); - row_sizer->Add(add_btn, 0, wxALIGN_CENTER_VERTICAL); - m_main_sizer->Add(row_sizer, 0, wxEXPAND); - - PluginRow row; - row.display = display; - row.add_btn = add_btn; - row.sizer = row_sizer; - m_rows.push_back(row); + m_main_sizer->Add(add_btn, 0, wxEXPAND | wxBOTTOM, window->FromDIP(SidebarProps::ContentMarginV())); m_standalone_add_btn = add_btn; } void PluginField::add_plugin_row(const wxString& value, bool is_last) { - const auto button_size = wxSize(def_width_thinner() * m_em_unit, -1); auto row_sizer = new wxBoxSizer(wxHORIZONTAL); - ScalableButton* select_btn = new ScalableButton(window, wxID_ANY, "search", wxEmptyString, - button_size, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 16); - wxGetApp().UpdateDarkUI(select_btn); - select_btn->SetToolTip(_L("Select plugin")); - - wxTextCtrl* display = new wxTextCtrl(window, wxID_ANY, value, - wxDefaultPosition, wxSize(def_width_wider() * m_em_unit, wxDefaultCoord), - wxTE_READONLY); - display->SetEditable(false); - wxGetApp().UpdateDarkUI(display); + ComboBox* display = new ComboBox(window, wxID_ANY, value, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY | CB_NO_DROP_ICON); + display->SetIcon("edit"); display->SetToolTip(get_tooltip_text(value)); - ScalableButton* remove_btn = nullptr; - if (!m_opt.readonly) { - remove_btn = new ScalableButton(window, wxID_ANY, "cross", wxEmptyString, - button_size, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 16); - wxGetApp().UpdateDarkUI(remove_btn); - remove_btn->SetToolTip(_L("Remove plugin")); - } + ScalableButton* remove_btn = new ScalableButton(window, wxID_ANY, "cross", wxEmptyString, + wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 16); + remove_btn->SetToolTip(_L("Remove plugin")); - ScalableButton* add_btn = nullptr; - if (is_last && !m_opt.readonly) { - add_btn = new ScalableButton(window, wxID_ANY, "param_add", wxEmptyString, - button_size, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 16); - wxGetApp().UpdateDarkUI(add_btn); - add_btn->SetToolTip(_L("Add plugin")); - add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { on_add_clicked(); }); - } + if (m_opt.readonly) + remove_btn->Disable(); const size_t row_index = m_rows.size(); - select_btn->Bind(wxEVT_BUTTON, [this, row_index](wxCommandEvent&) { on_select_clicked(row_index); }); - if (remove_btn) - remove_btn->Bind(wxEVT_BUTTON, [this, row_index](wxCommandEvent&) { on_remove_clicked(row_index); }); + display->Bind(wxEVT_LEFT_DOWN, [this, row_index](wxMouseEvent& ) { on_select_clicked(row_index); }); + remove_btn->Bind(wxEVT_BUTTON, [this, row_index](wxCommandEvent&) { on_remove_clicked(row_index); }); - row_sizer->Add(select_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 4); - row_sizer->Add(display, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 4); - if (remove_btn) - row_sizer->Add(remove_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 4); - if (add_btn) - row_sizer->Add(add_btn, 0, wxALIGN_CENTER_VERTICAL); - else if (!m_opt.readonly) { - // Reserve space equal to the add button so all rows align. - row_sizer->Add(button_size.GetWidth(), button_size.GetHeight(), 0, wxALIGN_CENTER_VERTICAL); - } + row_sizer->Add(display , 1, wxALIGN_CENTER_VERTICAL); + row_sizer->Add(remove_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, window->FromDIP(SidebarProps::ElementSpacing())); - const int bottom_gap = is_last ? 0 : 4; - m_main_sizer->Add(row_sizer, 0, wxEXPAND | (bottom_gap > 0 ? wxBOTTOM : 0), bottom_gap); + m_main_sizer->Add(row_sizer, 0, wxEXPAND | wxBOTTOM, window->FromDIP(is_last ? SidebarProps::ContentMarginV() : 4)); PluginRow row; - row.select_btn = select_btn; row.display = display; row.remove_btn = remove_btn; - row.add_btn = add_btn; row.sizer = row_sizer; m_rows.push_back(row); } @@ -2354,9 +2303,9 @@ void PluginField::on_add_clicked() m_values.push_back(selected); m_value = m_values; - rebuild_ui(); - - on_change_field(); + // Defer: don't destroy the clicked button from inside its own handler. + if(window) + window->CallAfter([this]() {rebuild_ui(); on_change_field();}); } void PluginField::on_remove_clicked(size_t index) @@ -2367,8 +2316,9 @@ void PluginField::on_remove_clicked(size_t index) m_values.erase(m_values.begin() + index); m_value = m_values; - rebuild_ui(); - on_change_field(); + // Defer: don't destroy the clicked button from inside its own handler. + if(window) + window->CallAfter([this]() {rebuild_ui(); on_change_field();}); } wxString PluginField::get_row_value(size_t index) const @@ -2382,7 +2332,7 @@ void PluginField::set_row_value(size_t index, const wxString& value) { if (index >= m_rows.size() || !m_rows[index].display) return; - m_rows[index].display->ChangeValue(value); + m_rows[index].display->SetValue(value); m_rows[index].display->SetToolTip(get_tooltip_text(value)); } @@ -2425,14 +2375,10 @@ boost::any& PluginField::get_value() void PluginField::enable() { for (auto& row : m_rows) { - if (row.select_btn) - row.select_btn->Enable(); if (row.display) row.display->Enable(); if (row.remove_btn) row.remove_btn->Enable(); - if (row.add_btn) - row.add_btn->Enable(); } if (m_standalone_add_btn) m_standalone_add_btn->Enable(); @@ -2441,14 +2387,10 @@ void PluginField::enable() void PluginField::disable() { for (auto& row : m_rows) { - if (row.select_btn) - row.select_btn->Disable(); if (row.display) row.display->Disable(); if (row.remove_btn) row.remove_btn->Disable(); - if (row.add_btn) - row.add_btn->Disable(); } if (m_standalone_add_btn) m_standalone_add_btn->Disable(); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 5d5d549427..6773d7a3f4 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -25,6 +25,7 @@ #include "wxExtensions.hpp" #include "Widgets/SpinInput.hpp" #include "Widgets/TextInput.hpp" +#include "Widgets/ComboBox.hpp" #ifdef __WXMSW__ #define wxMSW true @@ -532,10 +533,8 @@ public: private: struct PluginRow { - ScalableButton* select_btn { nullptr }; - wxTextCtrl* display { nullptr }; + ComboBox* display { nullptr }; ScalableButton* remove_btn { nullptr }; - ScalableButton* add_btn { nullptr }; wxBoxSizer* sizer { nullptr }; }; @@ -553,7 +552,7 @@ private: wxBoxSizer* m_main_sizer { nullptr }; std::vector m_rows; std::vector m_values; - ScalableButton* m_standalone_add_btn { nullptr }; + Button* m_standalone_add_btn { nullptr }; std::function m_selector; }; diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 25c13c4b8d..7d63556eff 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -698,10 +698,15 @@ std::string OptionsGroup::pick_plugin(const ConfigOptionDef& opt) Slic3r::PluginManager& manager = Slic3r::PluginManager::instance(); const Slic3r::PluginCapabilityType plugin_type = Slic3r::plugin_capability_type_from_string(opt.plugin_type); if (plugin_type == Slic3r::PluginCapabilityType::Unknown) { - const std::string message = opt.plugin_type.empty() - ? "This setting does not specify a plugin capability type." - : "This setting specifies an unrecognized plugin capability type: '" + opt.plugin_type + "'."; - wxMessageBox(from_u8(message), _L("Plugin Selection"), wxOK | wxICON_WARNING, m_parent); + MessageDialog dlg(m_parent, + opt.plugin_type.empty() ? _L("This setting does not specify a plugin capability type.") + : _L("This setting specifies an unrecognized plugin capability type: ") + "'" + opt.plugin_type + "'.", + _L("Plugin Selection"), + wxOK | wxICON_WARNING + ); + dlg.CenterOnParent(); + dlg.ShowModal(); + return {}; } @@ -714,7 +719,13 @@ std::string OptionsGroup::pick_plugin(const ConfigOptionDef& opt) }); if (caps.empty()) { - wxMessageBox(_L("No plugins capabilities available for this type.\nEnable or install some to use."), _L("Plugin Selection"), wxOK | wxICON_INFORMATION, m_parent); + MessageDialog dlg(m_parent, + _L("No plugins capabilities available for this type.\nEnable or install some to use."), + _L("Plugin Selection"), + wxOK | wxICON_INFORMATION + ); + dlg.CenterOnParent(); + dlg.ShowModal(); return {}; } diff --git a/src/slic3r/GUI/PluginPickerDialog.cpp b/src/slic3r/GUI/PluginPickerDialog.cpp index d0c387b0c0..6710b00d16 100644 --- a/src/slic3r/GUI/PluginPickerDialog.cpp +++ b/src/slic3r/GUI/PluginPickerDialog.cpp @@ -9,12 +9,16 @@ #include "GUI.hpp" #include "I18N.hpp" +#include "GUI_App.hpp" + +#include "Widgets/DialogButtons.hpp" + namespace Slic3r { namespace GUI { PluginPickerDialog::PluginPickerDialog(wxWindow* parent, const wxString& plugin_type_label, const std::vector& plugins) - : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) + : DPIDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_plugins(plugins) , m_capability_mode(false) { @@ -25,7 +29,7 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, PluginPickerDialog::PluginPickerDialog(wxWindow* parent, const wxString& plugin_type_label, std::vector capabilities) - : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) + : DPIDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_capabilities(std::move(capabilities)) , m_capability_mode(true) { @@ -35,12 +39,18 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, void PluginPickerDialog::build_ui(const wxString& plugin_type_label) { + SetBackgroundColour(*wxWHITE); + const bool has_plugins = !m_plugins.empty(); auto* top_sizer = new wxBoxSizer(wxVERTICAL); auto* info_text = new wxStaticText(this, wxID_ANY, wxString::Format(_L("Choose a %s plugin from the list below."), plugin_type_label)); - top_sizer->Add(info_text, 0, wxALL | wxEXPAND, 10); + info_text->SetFont(Label::Body_14); + info_text->SetForegroundColour(wxColour("#363636")); + top_sizer->Add(info_text, 0, wxALL | wxEXPAND, FromDIP(10)); + + top_sizer->AddSpacer(FromDIP(5)); wxArrayString choices; choices.reserve(m_plugins.size()); @@ -51,54 +61,69 @@ void PluginPickerDialog::build_ui(const wxString& plugin_type_label) choices.Add(label); } - m_choice = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices); + m_choice = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY); + for (const wxString &opt : choices) { m_choice->Append(opt); } + if (has_plugins) { m_choice->SetSelection(0); - m_choice->Bind(wxEVT_CHOICE, [this](wxCommandEvent& evt) { + m_choice->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { update_description(evt.GetSelection()); }); } else { m_choice->Enable(false); } - top_sizer->Add(m_choice, 0, wxLEFT | wxRIGHT | wxEXPAND, 10); + top_sizer->Add(m_choice, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(10)); m_description = new wxStaticText(this, wxID_ANY, wxEmptyString); + m_description->SetFont(Label::Body_14); + m_description->SetForegroundColour(wxColour("#363636")); m_description->Wrap(400); - top_sizer->Add(m_description, 0, wxALL | wxEXPAND, 10); + top_sizer->Add(m_description, 0, wxALL | wxEXPAND, FromDIP(10)); if (has_plugins) update_description(0); else m_description->SetLabel(_L("No plugins found for this type.")); - auto* button_sizer = new wxStdDialogButtonSizer(); - auto* ok_button = new wxButton(this, wxID_OK); - ok_button->Enable(has_plugins); - button_sizer->AddButton(ok_button); - button_sizer->AddButton(new wxButton(this, wxID_CANCEL)); - button_sizer->Realize(); + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); - top_sizer->Add(button_sizer, 0, wxALL | wxALIGN_RIGHT, 10); + dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { EndModal(wxID_OK); }); + dlg_btns->GetOK()->Enable(has_plugins); + + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { EndModal(wxID_CANCEL); }); + + top_sizer->Add(dlg_btns, 0, wxEXPAND); SetSizerAndFit(top_sizer); + + wxGetApp().UpdateDlgDarkUI(this); } void PluginPickerDialog::build_capability_ui(const wxString& plugin_type_label) { + SetBackgroundColour(*wxWHITE); + const bool has_capabilities = !m_capabilities.empty(); auto* top_sizer = new wxBoxSizer(wxVERTICAL); auto* info_text = new wxStaticText(this, wxID_ANY, wxString::Format(_L("Choose a %s plugin from the list below."), plugin_type_label)); - top_sizer->Add(info_text, 0, wxALL | wxEXPAND, 10); + info_text->SetFont(Label::Body_14); + info_text->SetForegroundColour(wxColour("#363636")); + + top_sizer->Add(info_text, 0, wxALL | wxEXPAND, FromDIP(10)); + + top_sizer->AddSpacer(FromDIP(5)); wxArrayString choices; choices.reserve(m_capabilities.size()); for (const auto& cap : m_capabilities) choices.Add(cap.label); - m_choice = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices); + m_choice = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY); + for (const wxString &opt : choices) { m_choice->Append(opt); } + if (has_capabilities) { m_choice->SetSelection(0); m_choice->Bind(wxEVT_CHOICE, [this](wxCommandEvent& evt) { @@ -108,27 +133,31 @@ void PluginPickerDialog::build_capability_ui(const wxString& plugin_type_label) m_choice->Enable(false); } - top_sizer->Add(m_choice, 0, wxLEFT | wxRIGHT | wxEXPAND, 10); + top_sizer->Add(m_choice, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(10)); m_description = new wxStaticText(this, wxID_ANY, wxEmptyString); + m_description->SetFont(Label::Body_14); + m_description->SetForegroundColour(wxColour("#363636")); m_description->Wrap(400); - top_sizer->Add(m_description, 0, wxALL | wxEXPAND, 10); + top_sizer->Add(m_description, 0, wxALL | wxEXPAND, FromDIP(10)); if (has_capabilities) update_capability_description(0); else m_description->SetLabel(_L("No plugins found for this type.")); - auto* button_sizer = new wxStdDialogButtonSizer(); - auto* ok_button = new wxButton(this, wxID_OK); - ok_button->Enable(has_capabilities); - button_sizer->AddButton(ok_button); - button_sizer->AddButton(new wxButton(this, wxID_CANCEL)); - button_sizer->Realize(); + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); - top_sizer->Add(button_sizer, 0, wxALL | wxALIGN_RIGHT, 10); + dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { EndModal(wxID_OK); }); + dlg_btns->GetOK()->Enable(has_capabilities); + + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { EndModal(wxID_CANCEL); }); + + top_sizer->Add(dlg_btns, 0, wxEXPAND); SetSizerAndFit(top_sizer); + + wxGetApp().UpdateDlgDarkUI(this); } PluginPickerDialog::CapabilityEntry PluginPickerDialog::selected_capability() const @@ -187,4 +216,6 @@ void PluginPickerDialog::update_description(int selection) Layout(); } +void PluginPickerDialog::on_dpi_changed(const wxRect &suggested_rect) {} + }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/PluginPickerDialog.hpp b/src/slic3r/GUI/PluginPickerDialog.hpp index 0d676eb04d..ee0f64b818 100644 --- a/src/slic3r/GUI/PluginPickerDialog.hpp +++ b/src/slic3r/GUI/PluginPickerDialog.hpp @@ -11,9 +11,12 @@ #include "slic3r/plugin/PluginManager.hpp" +#include "GUI_Utils.hpp" +#include "Widgets/ComboBox.hpp" + namespace Slic3r { namespace GUI { -class PluginPickerDialog : public wxDialog +class PluginPickerDialog : public DPIDialog { public: // Entry for capability-level selection (plugin_type non-empty path). @@ -40,13 +43,15 @@ public: // Returns the {plugin_key, name} of the selected capability (capability path). CapabilityEntry selected_capability() const; + void on_dpi_changed(const wxRect &suggested_rect) override; + private: void build_ui(const wxString& plugin_type_label); void build_capability_ui(const wxString& plugin_type_label); void update_description(int selection); void update_capability_description(int selection); - wxChoice* m_choice { nullptr }; + ComboBox* m_choice { nullptr }; wxStaticText* m_description { nullptr }; std::vector m_plugins; std::vector m_capabilities; From 0f5891f25d76646a8689da5c65ff5b2c3a81a310 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Tue, 8 Sep 2026 16:36:48 -0500 Subject: [PATCH 060/162] build: clear 107 warnings - dead private fields (#15574) --- src/libslic3r/FlushVolCalc.cpp | 4 ++-- src/libslic3r/FlushVolCalc.hpp | 3 +-- src/libslic3r/GCode/FanMover.hpp | 3 ++- src/libslic3r/Support/SupportMaterial.cpp | 3 +-- src/libslic3r/Support/SupportMaterial.hpp | 1 - src/libslic3r/Support/TreeSupport.hpp | 1 - src/slic3r/GUI/AMSDryControl.hpp | 6 ------ src/slic3r/GUI/AmsMappingPopup.hpp | 1 - src/slic3r/GUI/BBLTopbar.hpp | 1 - src/slic3r/GUI/BindDialog.hpp | 9 --------- src/slic3r/GUI/CalibrationPanel.hpp | 4 ---- src/slic3r/GUI/CameraPopup.hpp | 2 ++ src/slic3r/GUI/CreatePresetsDialog.hpp | 1 - src/slic3r/GUI/DailyTips.cpp | 1 - src/slic3r/GUI/DailyTips.hpp | 1 - src/slic3r/GUI/DeviceCore/DevConfig.h | 2 +- src/slic3r/GUI/DeviceCore/DevExtensionTool.h | 2 +- src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h | 2 +- src/slic3r/GUI/DeviceCore/DevHMS.h | 2 +- src/slic3r/GUI/DeviceCore/DevInfo.h | 2 +- src/slic3r/GUI/DeviceCore/DevStatus.h | 2 +- src/slic3r/GUI/DeviceCore/DevStorage.h | 2 +- src/slic3r/GUI/GUI_ObjectTable.hpp | 7 ------- src/slic3r/GUI/Gizmos/GLGizmoCut.hpp | 1 - src/slic3r/GUI/HMSPanel.hpp | 1 - src/slic3r/GUI/IMSlider.hpp | 1 - src/slic3r/GUI/Jobs/BindJob.hpp | 1 - src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp | 1 - src/slic3r/GUI/MainFrame.cpp | 3 +-- src/slic3r/GUI/MainFrame.hpp | 1 - src/slic3r/GUI/MixedFilamentDialog.cpp | 2 -- src/slic3r/GUI/MixedFilamentDialog.hpp | 1 - src/slic3r/GUI/Monitor.hpp | 3 --- src/slic3r/GUI/MsgDialog.hpp | 2 -- src/slic3r/GUI/MultiMachineManagerPage.hpp | 3 --- src/slic3r/GUI/MultiMachinePage.hpp | 1 - src/slic3r/GUI/MultiTaskManagerPage.hpp | 6 ------ src/slic3r/GUI/ObjColorDialog.cpp | 2 -- src/slic3r/GUI/ObjColorDialog.hpp | 3 --- src/slic3r/GUI/PluginPickerDialog.cpp | 2 -- src/slic3r/GUI/PluginPickerDialog.hpp | 1 - src/slic3r/GUI/SelectMachine.hpp | 1 - src/slic3r/GUI/SelectMachinePop.hpp | 2 -- src/slic3r/GUI/SendToPrinter.hpp | 7 ------- src/slic3r/GUI/SliceInfoPanel.hpp | 1 - src/slic3r/GUI/SyncAmsInfoDialog.cpp | 1 - src/slic3r/GUI/SyncAmsInfoDialog.hpp | 4 ---- src/slic3r/GUI/Tab.hpp | 1 - src/slic3r/GUI/TextureImportDialog.cpp | 2 -- src/slic3r/GUI/UpdateDialogs.hpp | 1 - src/slic3r/GUI/WebViewDialog.hpp | 8 +++++--- src/slic3r/GUI/Widgets/AMSItem.hpp | 10 ---------- src/slic3r/GUI/Widgets/FanControl.hpp | 1 - src/slic3r/GUI/Widgets/MultiNozzleSync.hpp | 2 -- 54 files changed, 21 insertions(+), 117 deletions(-) diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index 9bdbc1737d..635328f5ab 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -40,8 +40,8 @@ static float DeltaHS_BBS(float h1, float s1, float v1, float h2, float s2, float return std::min(1.2f, dxy); } -FlushVolCalculator::FlushVolCalculator(int min, int max, int flush_dataset, float multiplier) - :m_min_flush_vol(min), m_max_flush_vol(max), m_multiplier(multiplier), m_flush_dataset(flush_dataset) +FlushVolCalculator::FlushVolCalculator(int min, int max, int flush_dataset) + :m_min_flush_vol(min), m_max_flush_vol(max), m_flush_dataset(flush_dataset) { } diff --git a/src/libslic3r/FlushVolCalc.hpp b/src/libslic3r/FlushVolCalc.hpp index 46d04d13ff..73baca5a89 100644 --- a/src/libslic3r/FlushVolCalc.hpp +++ b/src/libslic3r/FlushVolCalc.hpp @@ -15,7 +15,7 @@ extern const int g_max_flush_volume; class FlushVolCalculator { public: - FlushVolCalculator(int min, int max, int flush_dataset, float multiplier = 1.0f); + FlushVolCalculator(int min, int max, int flush_dataset); ~FlushVolCalculator() { } @@ -32,7 +32,6 @@ public: private: int m_min_flush_vol; int m_max_flush_vol; - float m_multiplier; int m_flush_dataset; }; diff --git a/src/libslic3r/GCode/FanMover.hpp b/src/libslic3r/GCode/FanMover.hpp index 3f803fbd23..17addd855c 100644 --- a/src/libslic3r/GCode/FanMover.hpp +++ b/src/libslic3r/GCode/FanMover.hpp @@ -32,7 +32,8 @@ class FanMover private: const std::regex regex_fan_speed; const float nb_seconds_delay; - const bool with_D_option; + // Set from fan_speedup_time at the call site, but nothing here reads it. + [[maybe_unused]] const bool with_D_option; const bool relative_e; const bool only_overhangs; const float kickstart; diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index 12ac275592..a955eb5ca7 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -333,8 +333,7 @@ PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object m_print_config (&object->print()->config()), m_object_config (&object->config()), m_slicing_params (slicing_params), - m_support_params (*object), - m_object (object) + m_support_params (*object) { } diff --git a/src/libslic3r/Support/SupportMaterial.hpp b/src/libslic3r/Support/SupportMaterial.hpp index 50b8256c4a..6d5355dab1 100644 --- a/src/libslic3r/Support/SupportMaterial.hpp +++ b/src/libslic3r/Support/SupportMaterial.hpp @@ -86,7 +86,6 @@ private: */ // Following objects are not owned by SupportMaterial class. - const PrintObject *m_object; const PrintConfig *m_print_config; const PrintObjectConfig *m_object_config; // Pre-calculated parameters shared between the object slicer and the support generator, diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 61e030ef86..bd5a154e26 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -432,7 +432,6 @@ private: size_t m_highest_overhang_layer = 0; std::vector> m_spanning_trees; std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; - float DO_NOT_MOVER_UNDER_MM = 0.0; coordf_t base_radius = 0.0; const coordf_t MAX_BRANCH_RADIUS = 10.0; const coordf_t MIN_BRANCH_RADIUS = 0.4; diff --git a/src/slic3r/GUI/AMSDryControl.hpp b/src/slic3r/GUI/AMSDryControl.hpp index 46699650d6..223fe137e2 100644 --- a/src/slic3r/GUI/AMSDryControl.hpp +++ b/src/slic3r/GUI/AMSDryControl.hpp @@ -97,12 +97,6 @@ private: wxSimplebook* m_main_simplebook{nullptr}; wxPanel* m_original_page{nullptr}; - wxWindow* m_amswin{nullptr}; - wxBoxSizer* m_sizer_ams_items{nullptr}; - wxScrolledWindow* m_panel_prv_left {nullptr}; - wxScrolledWindow* m_panel_prv_right{nullptr}; - wxBoxSizer* m_sizer_prv_left{nullptr}; - wxBoxSizer* m_sizer_prv_right{nullptr}; // left panel related members ScalableBitmap m_humidity_image; diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index fc3f89fa69..21a3e38080 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -457,7 +457,6 @@ private: ScalableBitmap close_img; wxStaticBitmap* curr_humidity_img; - wxStaticBitmap* m_img; Label* m_staticText;; Label* m_staticText_note; diff --git a/src/slic3r/GUI/BBLTopbar.hpp b/src/slic3r/GUI/BBLTopbar.hpp index e60a95f64f..2745490d00 100644 --- a/src/slic3r/GUI/BBLTopbar.hpp +++ b/src/slic3r/GUI/BBLTopbar.hpp @@ -93,7 +93,6 @@ private: CenteredTitle* m_title_ctrl { nullptr }; wxString m_titleText; - wxAuiToolBarItem* m_model_store_item; //wxAuiToolBarItem *m_publish_item; wxAuiToolBarItem* m_undo_item; diff --git a/src/slic3r/GUI/BindDialog.hpp b/src/slic3r/GUI/BindDialog.hpp index b809bc523b..8d21c1be5e 100644 --- a/src/slic3r/GUI/BindDialog.hpp +++ b/src/slic3r/GUI/BindDialog.hpp @@ -65,18 +65,10 @@ private: wxPanel* request_bind_panel; wxPanel* binding_panel; - wxScrolledWindow* m_sw_bind_failed_info; - Label* m_bind_failed_info; - Label* m_st_txt_error_code{ nullptr }; - Label* m_st_txt_error_desc{ nullptr }; - Label* m_st_txt_extra_info{ nullptr }; - HyperLink* m_link_network_state{ nullptr }; wxString m_result_info; wxString m_result_extra; wxString m_ping_code_wiki; - bool m_show_error_info_state = true; - int m_result_code; std::shared_ptr m_status_bar; public: @@ -110,7 +102,6 @@ private: wxBitmap m_bitmap_show_error_close; wxBitmap m_bitmap_show_error_open; wxScrolledWindow* m_sw_bind_failed_info; - Label* m_bind_failed_info; Label* m_st_txt_error_code{ nullptr }; Label* m_st_txt_error_desc{ nullptr }; Label* m_st_txt_extra_info{ nullptr }; diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index eafb380c79..1f6b097af9 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -70,11 +70,7 @@ public: private: int m_my_devices_count{ 0 }; - int m_other_devices_count{ 0 }; bool m_dismiss{ false }; - wxWindow* m_placeholder_panel { nullptr }; - wxWindow* m_panel_body{ nullptr }; - wxBoxSizer* m_sizer_body{ nullptr }; wxBoxSizer* m_sizer_my_devices{ nullptr }; wxScrolledWindow* m_scrolledWindow{ nullptr }; wxTimer* m_refresh_timer{ nullptr }; diff --git a/src/slic3r/GUI/CameraPopup.hpp b/src/slic3r/GUI/CameraPopup.hpp index dbdb81a9cb..f45ebb6e42 100644 --- a/src/slic3r/GUI/CameraPopup.hpp +++ b/src/slic3r/GUI/CameraPopup.hpp @@ -72,8 +72,10 @@ private: SwitchButton* m_switch_recording; wxStaticText* m_text_vcamera; SwitchButton* m_switch_vcamera; +#if !BBL_RELEASE_TO_PUBLIC wxStaticText* m_text_liveview_retry; SwitchButton* m_switch_liveview_retry; +#endif //BBL_RELEASE_TO_PUBLIC wxStaticText* m_custom_camera_hint; TextInput* m_custom_camera_input; Button* m_custom_camera_input_confirm; diff --git a/src/slic3r/GUI/CreatePresetsDialog.hpp b/src/slic3r/GUI/CreatePresetsDialog.hpp index 701779b1bf..07811aa144 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.hpp +++ b/src/slic3r/GUI/CreatePresetsDialog.hpp @@ -74,7 +74,6 @@ private: std::unordered_set m_system_filament_types_set; std::set m_visible_printers; CreateType m_create_type; - Button * m_button_cancel = nullptr; ComboBox * m_filament_vendor_combobox = nullptr; ::CheckBox * m_can_not_find_vendor_checkbox = nullptr; ComboBox * m_filament_type_combobox = nullptr; diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index f585425130..d2f758bf5f 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -245,7 +245,6 @@ DailyTipsPanel::DailyTipsPanel(bool can_expand, DailyTipsLayout layout) m_width(0), m_height(0), m_can_expand(can_expand), - m_layout(layout), m_uid(DailyTipsPanel::uid++), m_dailytips_renderer(std::make_unique(layout)) { diff --git a/src/slic3r/GUI/DailyTips.hpp b/src/slic3r/GUI/DailyTips.hpp index 508a8ad7e9..537fed4952 100644 --- a/src/slic3r/GUI/DailyTips.hpp +++ b/src/slic3r/GUI/DailyTips.hpp @@ -51,7 +51,6 @@ private: int m_uid; bool m_first_enter{ false }; bool m_is_dark{ false }; - DailyTipsLayout m_layout{ DailyTipsLayout::Vertical }; float m_fade_opacity{ 1.0f }; }; diff --git a/src/slic3r/GUI/DeviceCore/DevConfig.h b/src/slic3r/GUI/DeviceCore/DevConfig.h index 449b5a7253..b0cdcb936e 100644 --- a/src/slic3r/GUI/DeviceCore/DevConfig.h +++ b/src/slic3r/GUI/DeviceCore/DevConfig.h @@ -54,7 +54,7 @@ public: void ParseCalibrationConfig(const json& print_json); //cali private: - MachineObject* m_obj; + [[maybe_unused]] MachineObject* m_obj; /*configure vals*/ // chamber diff --git a/src/slic3r/GUI/DeviceCore/DevExtensionTool.h b/src/slic3r/GUI/DeviceCore/DevExtensionTool.h index 02f0b6a213..c3b9c5b0b7 100644 --- a/src/slic3r/GUI/DeviceCore/DevExtensionTool.h +++ b/src/slic3r/GUI/DeviceCore/DevExtensionTool.h @@ -31,7 +31,7 @@ protected: DevExtensionTool(MachineObject* obj); private: - MachineObject* m_owner = nullptr; + [[maybe_unused]] MachineObject* m_owner = nullptr; enum MountState { diff --git a/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h b/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h index efdad308b2..ca59b9fd3e 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h +++ b/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.h @@ -28,7 +28,7 @@ public: void SetAutoRefillEnabled(bool enable) { m_enable_auto_refill = enable; } private: - DevFilaSystem* m_owner = nullptr; + [[maybe_unused]] DevFilaSystem* m_owner = nullptr; std::optional m_enable_detect_on_insert = false; bool m_enable_detect_on_powerup = false; diff --git a/src/slic3r/GUI/DeviceCore/DevHMS.h b/src/slic3r/GUI/DeviceCore/DevHMS.h index 205cad77b3..f72d899187 100644 --- a/src/slic3r/GUI/DeviceCore/DevHMS.h +++ b/src/slic3r/GUI/DeviceCore/DevHMS.h @@ -21,7 +21,7 @@ public: const std::vector& GetHMSItems() const { return m_hms_list; }; private: - MachineObject* m_object = nullptr; + [[maybe_unused]] MachineObject* m_object = nullptr; // all hms for this machine std::vector m_hms_list; diff --git a/src/slic3r/GUI/DeviceCore/DevInfo.h b/src/slic3r/GUI/DeviceCore/DevInfo.h index 66224888e6..259c277e46 100644 --- a/src/slic3r/GUI/DeviceCore/DevInfo.h +++ b/src/slic3r/GUI/DeviceCore/DevInfo.h @@ -34,7 +34,7 @@ private: //std::string m_connect_type; //std::string m_bind_state; - MachineObject* m_owner = nullptr; + [[maybe_unused]] MachineObject* m_owner = nullptr; }; } // namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/DeviceCore/DevStatus.h b/src/slic3r/GUI/DeviceCore/DevStatus.h index 45f76d2239..4ed0d5c416 100644 --- a/src/slic3r/GUI/DeviceCore/DevStatus.h +++ b/src/slic3r/GUI/DeviceCore/DevStatus.h @@ -36,7 +36,7 @@ public: void ParseStatus(const nlohmann::json& print_jj); private: - MachineObject *m_owner = nullptr; + [[maybe_unused]] MachineObject *m_owner = nullptr; std::optional m_job_state; // could be nullopt for some old firmware }; diff --git a/src/slic3r/GUI/DeviceCore/DevStorage.h b/src/slic3r/GUI/DeviceCore/DevStorage.h index 537665f778..8ac53b7fea 100644 --- a/src/slic3r/GUI/DeviceCore/DevStorage.h +++ b/src/slic3r/GUI/DeviceCore/DevStorage.h @@ -31,7 +31,7 @@ public: bool is_timelapse_storage_low(const std::string& storage) const; private: - MachineObject *m_owner; + [[maybe_unused]] MachineObject *m_owner; SdcardState m_sdcard_state { NO_SDCARD }; // timelapse storage space info (from device push cam data) int tl_internal_free_kb{-1}; diff --git a/src/slic3r/GUI/GUI_ObjectTable.hpp b/src/slic3r/GUI/GUI_ObjectTable.hpp index a5a0059e1b..0fbd432e02 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.hpp +++ b/src/slic3r/GUI/GUI_ObjectTable.hpp @@ -591,16 +591,11 @@ private: wxColour m_hover_colour; wxBoxSizer* m_top_sizer{nullptr}; wxBoxSizer* m_page_sizer{nullptr}; - wxBoxSizer* m_page_top_sizer{nullptr}; - wxTextCtrl* m_search_line{ nullptr }; ObjectGrid* m_object_grid{nullptr}; ObjectGridTable* m_object_grid_table{nullptr}; - wxStaticText* m_page_text{nullptr}; - ScalableButton* m_global_reset{nullptr}; wxScrolledWindow* m_side_window{nullptr}; ObjectTableSettings* m_object_settings{ nullptr }; Model* m_model{nullptr}; - ModelConfig* m_config {nullptr}; Plater* m_plater{nullptr}; int m_cur_row { -1 }; @@ -625,8 +620,6 @@ class ObjectTableDialog : public GUI::DPIDialog const int POPUP_HEIGHT = FromDIP(1024); //wxPanel* m_panel{ nullptr }; - wxBoxSizer* m_top_sizer{ nullptr }; - wxStaticText* m_static_title{ nullptr }; //wxTimer* m_refresh_timer; ObjectTablePanel* m_obj_panel{ nullptr }; Model* m_model{ nullptr }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index e6cbb7d0ef..109e0fe5bc 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -94,7 +94,6 @@ class GLGizmoCut3D : public GLGizmoBase GLModel m_reference_radius; GLModel m_angle_arc; - Vec3d m_old_center; Vec3d m_cut_normal; struct InvalidConnectorsStatistics diff --git a/src/slic3r/GUI/HMSPanel.hpp b/src/slic3r/GUI/HMSPanel.hpp index 49910590b8..25ac56de96 100644 --- a/src/slic3r/GUI/HMSPanel.hpp +++ b/src/slic3r/GUI/HMSPanel.hpp @@ -25,7 +25,6 @@ class HMSNotifyItem : public wxPanel wxStaticBitmap *m_bitmap_notify; wxStaticBitmap *m_bitmap_arrow; wxStaticText * m_hms_content; - wxHtmlWindow * m_html; wxPanel * m_staticline; wxBitmap m_img_notify_lv1; diff --git a/src/slic3r/GUI/IMSlider.hpp b/src/slic3r/GUI/IMSlider.hpp index 45e4d6ccb8..d28a65c1ff 100644 --- a/src/slic3r/GUI/IMSlider.hpp +++ b/src/slic3r/GUI/IMSlider.hpp @@ -216,7 +216,6 @@ private: long m_extra_style; float m_label_koef{1.0}; - float m_zero_layer_height = 0.0f; std::vector m_values; TickCodeInfo m_ticks; std::vector m_layers_times; diff --git a/src/slic3r/GUI/Jobs/BindJob.hpp b/src/slic3r/GUI/Jobs/BindJob.hpp index af89e2fc1b..1e8aa91d6f 100644 --- a/src/slic3r/GUI/Jobs/BindJob.hpp +++ b/src/slic3r/GUI/Jobs/BindJob.hpp @@ -20,7 +20,6 @@ class BindJob : public Job std::string m_sec_link; std::string m_ssdp_version; bool m_job_finished{ false }; - int m_print_job_completed_id = 0; bool m_improved{false}; public: diff --git a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp index 5a531065f3..3e634e0337 100644 --- a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp +++ b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.hpp @@ -27,7 +27,6 @@ class UpgradeNetworkJob : public Job wxWindow * m_event_handle{nullptr}; std::function m_success_fun{nullptr}; bool m_job_finished{ false }; - int m_print_job_completed_id = 0; InstallProgressFn pro_fn { nullptr }; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 675bc8da27..aeed034b0f 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -4488,10 +4488,9 @@ std::string MainFrame::get_dir_name(const wxString &full_name) const // ---------------------------------------------------------------------------- SettingsDialog::SettingsDialog(MainFrame* mainframe) -:DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "settings_dialog"), +:DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, "settings_dialog") //: DPIDialog(mainframe, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _L("Settings"), wxDefaultPosition, wxDefaultSize, // wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX, "settings_dialog"), - m_main_frame(mainframe) { if (wxGetApp().is_gcode_viewer()) return; diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 2052860d80..b8b7ef2e7d 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -94,7 +94,6 @@ class SettingsDialog : public DPIDialog//DPIDialog { //wxNotebook* m_tabpanel { nullptr }; Notebook* m_tabpanel{ nullptr }; - MainFrame* m_main_frame { nullptr }; wxMenuBar* m_menubar{ nullptr }; public: SettingsDialog(MainFrame* mainframe); diff --git a/src/slic3r/GUI/MixedFilamentDialog.cpp b/src/slic3r/GUI/MixedFilamentDialog.cpp index 902c12d27b..a0e2eaeaf7 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.cpp +++ b/src/slic3r/GUI/MixedFilamentDialog.cpp @@ -126,7 +126,6 @@ MixedFilamentDialog::MixedFilamentDialog(wxWindow* parent, const std::vector& physical_types) : DPIDialog(parent, wxID_ANY, _L("Add Mixed Filament"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) - , m_edit_mode(false) , m_physical_colors(physical_colors) , m_physical_names(physical_names) , m_physical_types(physical_types) @@ -157,7 +156,6 @@ MixedFilamentDialog::MixedFilamentDialog(wxWindow* parent, : DPIDialog(parent, wxID_ANY, _L("Edit Mixed Filament"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_result(existing) - , m_edit_mode(true) , m_physical_colors(physical_colors) , m_physical_names(physical_names) , m_physical_types(physical_types) diff --git a/src/slic3r/GUI/MixedFilamentDialog.hpp b/src/slic3r/GUI/MixedFilamentDialog.hpp index ea8ac5ad16..45b297da4a 100644 --- a/src/slic3r/GUI/MixedFilamentDialog.hpp +++ b/src/slic3r/GUI/MixedFilamentDialog.hpp @@ -115,7 +115,6 @@ private: wxColour comp_colour(size_t i) const; MixedFilamentResult m_result; - bool m_edit_mode{false}; std::vector m_physical_colors; std::vector m_physical_names; std::vector m_physical_types; diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 13688d6526..9252b04559 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -78,7 +78,6 @@ private: Tabbook* m_tabpanel{ nullptr }; wxSizer* m_main_sizer{ nullptr }; - AddMachinePanel* m_status_add_machine_panel; StatusPanel* m_status_info_panel; MediaFilePanel* m_media_file_panel; UpgradePanel* m_upgrade_panel; @@ -86,8 +85,6 @@ private: /* side tools */ SideTools* m_side_tools{nullptr}; - wxStaticBitmap* m_bitmap_arrow; - wxStaticBitmap* m_bitmap_wifi_signal; SelectMachinePopup m_select_machine; /* images */ diff --git a/src/slic3r/GUI/MsgDialog.hpp b/src/slic3r/GUI/MsgDialog.hpp index 90fd160310..ed8079d88c 100644 --- a/src/slic3r/GUI/MsgDialog.hpp +++ b/src/slic3r/GUI/MsgDialog.hpp @@ -177,7 +177,6 @@ public: // Generic rich message dialog, used intead of wxRichMessageDialog class RichMessageDialog : public MsgDialog { - wxCheckBox* m_checkBox{ nullptr }; wxString m_checkBoxText; bool m_checkBoxValue{ false }; @@ -416,7 +415,6 @@ private: wxString m_new_keys; Button * m_update_btn = nullptr; Button * m_later_btn = nullptr; - wxStaticText *m_msg_text = nullptr; }; diff --git a/src/slic3r/GUI/MultiMachineManagerPage.hpp b/src/slic3r/GUI/MultiMachineManagerPage.hpp index 2576e36f12..9b5655a9ee 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.hpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.hpp @@ -79,7 +79,6 @@ private: wxBoxSizer* m_main_sizer{nullptr}; wxBoxSizer* m_sizer_machine_list{nullptr}; wxScrolledWindow* m_machine_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // table head wxPanel* m_table_head_panel{ nullptr }; @@ -99,8 +98,6 @@ private: int m_total_count{ 0 }; int m_count_page_item{ 10 }; - bool prev{ false }; - bool next{ false }; Button* btn_last_page{ nullptr }; Button* btn_next_page{ nullptr }; wxStaticText* st_page_number{ nullptr }; diff --git a/src/slic3r/GUI/MultiMachinePage.hpp b/src/slic3r/GUI/MultiMachinePage.hpp index 0572c30d1b..724eeed2a9 100644 --- a/src/slic3r/GUI/MultiMachinePage.hpp +++ b/src/slic3r/GUI/MultiMachinePage.hpp @@ -81,7 +81,6 @@ private: AppConfig* app_config; Label* m_label{ nullptr }; wxScrolledWindow* scroll_macine_list{ nullptr }; - wxBoxSizer* m_sizer_body{ nullptr }; wxBoxSizer* sizer_machine_list{ nullptr }; std::map m_device_items; int m_selected_count{0}; diff --git a/src/slic3r/GUI/MultiTaskManagerPage.hpp b/src/slic3r/GUI/MultiTaskManagerPage.hpp index 0f676d06b3..f1b35ca2aa 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.hpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.hpp @@ -99,7 +99,6 @@ private: wxBoxSizer* page_sizer{ nullptr }; wxBoxSizer* m_sizer_task_list{ nullptr }; wxScrolledWindow* m_task_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // table head wxPanel* m_table_head_panel{ nullptr }; @@ -113,7 +112,6 @@ private: Button* m_action{ nullptr }; // ctrl button for all - int m_sel_number{0}; wxPanel* m_ctrl_btn_panel{ nullptr }; wxBoxSizer* m_btn_sizer{ nullptr }; Button* btn_stop_all{ nullptr }; @@ -160,15 +158,12 @@ private: wxBoxSizer* m_sizer_task_list{ nullptr }; wxBoxSizer* m_main_sizer{ nullptr }; wxScrolledWindow* m_task_list{ nullptr }; - wxStaticText* m_selected_num{ nullptr }; // Flipping pages int m_current_page{ 0 }; int m_total_page{0}; int m_total_count{ 0 }; int m_count_page_item{ 10 }; - bool prev{ false }; - bool next{ false }; Button* btn_last_page{ nullptr }; Button* btn_next_page{ nullptr }; wxStaticText* st_page_number{ nullptr }; @@ -191,7 +186,6 @@ private: Button* m_action{ nullptr }; // ctrl button for all - int m_sel_number; wxPanel* m_ctrl_btn_panel{ nullptr }; wxBoxSizer* m_btn_sizer{ nullptr }; Button* btn_pause_all{ nullptr }; diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index d5a37fc9a7..ef5d4ba9d2 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -86,8 +86,6 @@ ObjColorDialog::ObjColorDialog(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE /* | wxRESIZE_BORDER*/) - , m_filament_ids(in_out.filament_ids) - , m_first_extruder_id(in_out.first_extruder_id) { auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); diff --git a/src/slic3r/GUI/ObjColorDialog.hpp b/src/slic3r/GUI/ObjColorDialog.hpp index 19ed1dcb24..34f9eb5de5 100644 --- a/src/slic3r/GUI/ObjColorDialog.hpp +++ b/src/slic3r/GUI/ObjColorDialog.hpp @@ -94,7 +94,6 @@ private: std::vector m_cluster_map_filaments;//show middle int m_max_filament_index = 0; std::vector m_cluster_colours;//from_algo and show left - bool m_can_add_filament{true}; bool m_deal_thumbnail_flag{false}; std::vector m_new_add_colors; std::vector m_new_add_final_colors; @@ -123,8 +122,6 @@ private: wxBoxSizer * m_main_sizer = nullptr; wxBoxSizer * m_buttons_sizer = nullptr; std::unordered_map m_button_list; - std::vector& m_filament_ids; - unsigned char & m_first_extruder_id; }; #endif // _WIPE_TOWER_DIALOG_H_ \ No newline at end of file diff --git a/src/slic3r/GUI/PluginPickerDialog.cpp b/src/slic3r/GUI/PluginPickerDialog.cpp index d0c387b0c0..194dbaaf07 100644 --- a/src/slic3r/GUI/PluginPickerDialog.cpp +++ b/src/slic3r/GUI/PluginPickerDialog.cpp @@ -16,7 +16,6 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, const std::vector& plugins) : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_plugins(plugins) - , m_capability_mode(false) { build_ui(plugin_type_label); CentreOnParent(); @@ -27,7 +26,6 @@ PluginPickerDialog::PluginPickerDialog(wxWindow* parent, std::vector capabilities) : wxDialog(parent, wxID_ANY, wxString::Format(_L("Select %s Plugin"), plugin_type_label)) , m_capabilities(std::move(capabilities)) - , m_capability_mode(true) { build_capability_ui(plugin_type_label); CentreOnParent(); diff --git a/src/slic3r/GUI/PluginPickerDialog.hpp b/src/slic3r/GUI/PluginPickerDialog.hpp index 0d676eb04d..95f00689c3 100644 --- a/src/slic3r/GUI/PluginPickerDialog.hpp +++ b/src/slic3r/GUI/PluginPickerDialog.hpp @@ -50,7 +50,6 @@ private: wxStaticText* m_description { nullptr }; std::vector m_plugins; std::vector m_capabilities; - bool m_capability_mode { false }; }; }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 46d6adf4f4..6a3acce54c 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -662,7 +662,6 @@ private: ScalableButton* m_button_question { nullptr }; wxStaticBitmap* m_bed_image{ nullptr }; - Label* m_text_bed_type; }; diff --git a/src/slic3r/GUI/SelectMachinePop.hpp b/src/slic3r/GUI/SelectMachinePop.hpp index 764ffd6af5..76d38be522 100644 --- a/src/slic3r/GUI/SelectMachinePop.hpp +++ b/src/slic3r/GUI/SelectMachinePop.hpp @@ -181,13 +181,11 @@ private: PinCodePanel* m_panel_direct_connection{nullptr}; wxWindow* m_placeholder_panel{nullptr}; HyperLink* m_hyperlink{nullptr}; // ORCA - wxBoxSizer * m_sizer_body{nullptr}; wxBoxSizer * m_sizer_my_devices{nullptr}; wxBoxSizer * m_sizer_other_devices{nullptr}; wxBoxSizer * m_sizer_search_bar{nullptr}; wxSearchCtrl* m_search_bar{nullptr}; wxScrolledWindow * m_scrolledWindow{nullptr}; - wxWindow * m_panel_body{nullptr}; wxTimer * m_refresh_timer{nullptr}; std::vector m_user_list_machine_panel; std::vector m_other_list_machine_panel; diff --git a/src/slic3r/GUI/SendToPrinter.hpp b/src/slic3r/GUI/SendToPrinter.hpp index 93215c4e06..24e483ae33 100644 --- a/src/slic3r/GUI/SendToPrinter.hpp +++ b/src/slic3r/GUI/SendToPrinter.hpp @@ -55,7 +55,6 @@ private: void init_timer(); int m_print_plate_idx; - int m_current_filament_id; int m_print_error_code = 0; int timeout_count = 0; int m_connect_try_times = 0; @@ -77,7 +76,6 @@ private: TextInput* m_rename_input{ nullptr }; wxSimplebook* m_rename_switch_panel{ nullptr }; Plater* m_plater{ nullptr }; - wxStaticBitmap* m_staticbitmap{ nullptr }; ThumbnailPanel* m_thumbnailPanel{ nullptr }; ComboBox* m_comboBox_printer{ nullptr }; Button* m_rename_button{ nullptr }; @@ -97,8 +95,6 @@ private: wxPanel * m_connecting_panel{nullptr}; wxSimplebook* m_simplebook{ nullptr }; wxStaticText* m_statictext_finish{ nullptr }; - wxStaticText* m_stext_sending{ nullptr }; - wxStaticText* m_staticText_bed_title{ nullptr }; wxStaticText* m_statictext_printer_msg{ nullptr }; wxStaticText * m_connecting_printer_msg{nullptr}; wxStaticText* m_stext_printer_title{ nullptr }; @@ -115,7 +111,6 @@ private: wxBoxSizer* sizer_thumbnail; wxBoxSizer* m_sizer_scrollable_region; wxBoxSizer* m_sizer_main; - wxStaticText* m_file_name; PrintDialogStatus m_print_status{ PrintStatusInit }; AnimaIcon * m_animaicon{nullptr}; @@ -134,8 +129,6 @@ private: std::vector m_storage_radioBox; std::string m_selected_storage; bool m_if_has_sdcard; - bool m_waiting_support{ false }; - bool m_waiting_enable{ false }; std::vector m_ability_list; public: diff --git a/src/slic3r/GUI/SliceInfoPanel.hpp b/src/slic3r/GUI/SliceInfoPanel.hpp index 8f1710022b..09708d68e4 100644 --- a/src/slic3r/GUI/SliceInfoPanel.hpp +++ b/src/slic3r/GUI/SliceInfoPanel.hpp @@ -28,7 +28,6 @@ public: private: wxScrolledWindow *m_panel; - BBLSliceInfo *m_info { nullptr }; void OnMouse(wxMouseEvent &event); void OnSize(wxSizeEvent &event); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 7ae48008c8..92c3d218e5 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -631,7 +631,6 @@ void SyncAmsInfoDialog::updata_ui_when_priner_not_same() { SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Synchronize AMS Filament Information"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) , m_input_info(info) - , m_export_3mf_cancel(false) , m_mapping_popup(AmsMapingPopup(this,true)) , m_mapping_tip_popup(AmsMapingTipPopup(this)) , m_mapping_tutorial_popup(AmsTutorialPopup(this)) diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index b0868f8c58..6f86af6032 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -21,15 +21,11 @@ class SyncAmsInfoDialog : public DPIDialog bool m_only_exist_ext_spool_flag{false}; int m_current_filament_id{0}; int m_print_plate_idx{0}; - int m_print_plate_total{0}; int m_timeout_count{0}; int m_print_error_code{0}; bool m_is_in_sending_mode{false}; bool m_ams_mapping_res{false}; bool m_ams_mapping_valid{false}; - bool m_export_3mf_cancel{false}; - bool m_is_canceled{false}; - bool m_is_rename_mode{false}; bool m_check_flag{false}; PrintPageMode m_print_page_mode{PrintPageMode::PrintPageModePrepare}; std::string m_print_error_msg; diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 5069b76417..4212c4a599 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -630,7 +630,6 @@ private: std::vector m_pages_fff; std::vector m_pages_sla; - wxBoxSizer* m_presets_sizer {nullptr}; public: ScalableButton* m_reset_to_filament_color = nullptr; diff --git a/src/slic3r/GUI/TextureImportDialog.cpp b/src/slic3r/GUI/TextureImportDialog.cpp index 1a24799a15..1bf52d792c 100644 --- a/src/slic3r/GUI/TextureImportDialog.cpp +++ b/src/slic3r/GUI/TextureImportDialog.cpp @@ -519,7 +519,6 @@ public: , m_entries(entries) , m_colors_rgba(colors_rgba) , m_names(names) - , m_existing_count(existing_count) , m_dialog_anchor(dialog_anchor) , m_on_select(std::move(on_select)) , m_on_add_filament(std::move(on_add_filament)) @@ -877,7 +876,6 @@ private: std::vector m_entries; std::vector> m_colors_rgba; std::vector m_names; - size_t m_existing_count = 0; wxWindow* m_dialog_anchor = nullptr; std::function m_on_select; std::function m_on_add_filament; diff --git a/src/slic3r/GUI/UpdateDialogs.hpp b/src/slic3r/GUI/UpdateDialogs.hpp index 04eb4ffb3c..784c10f09a 100644 --- a/src/slic3r/GUI/UpdateDialogs.hpp +++ b/src/slic3r/GUI/UpdateDialogs.hpp @@ -33,7 +33,6 @@ public: void on_hyperlink(wxHyperlinkEvent& evt); private: - wxCheckBox *cbox; }; diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 123025ef85..bad0192115 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -108,13 +108,16 @@ public: private: wxWebView* m_browser; + wxButton * m_button_stop; + wxTextCtrl *m_url; +#if !BBL_RELEASE_TO_PUBLIC + // Created only by the internal-build toolbar in the constructor. wxBoxSizer *bSizer_toolbar; wxButton * m_button_back; wxButton * m_button_forward; - wxButton * m_button_stop; wxButton * m_button_reload; - wxTextCtrl *m_url; wxButton * m_button_tools; +#endif //BBL_RELEASE_TO_PUBLIC wxMenu* m_tools_menu; wxMenuItem* m_tools_handle_navigation; @@ -143,7 +146,6 @@ private: wxMenuItem* m_dev_tools; wxInfoBar *m_info; - wxStaticText* m_info_text; long m_zoomFactor; diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index c43c71f580..ac4283b7e8 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -641,17 +641,11 @@ private: AMSRoadShowMode m_road_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; AMSPassRoadSTEP m_load_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; - bool m_selected = {false}; - int m_passroad_width = {6}; - double m_radius = {4}; wxColour m_road_def_color; wxColour m_road_color; std::vector ams_humidity_img; - int m_humidity = {0}; - bool m_show_humidity = {false}; - bool m_vams_loading{false}; AMSModel m_ams_model; }; @@ -690,14 +684,10 @@ private: int m_left_road_length = {-1}; int m_right_road_length = {-1}; - int m_passroad_width = {6}; - double m_radius = {4}; AMSPassRoadSTEP m_pass_road_left_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; AMSPassRoadSTEP m_pass_road_right_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; std::map m_road_color; - bool m_vams_loading{false}; - AMSModel m_ams_model; }; /************************************************* diff --git a/src/slic3r/GUI/Widgets/FanControl.hpp b/src/slic3r/GUI/Widgets/FanControl.hpp index b13ce19d41..2badbf8594 100644 --- a/src/slic3r/GUI/Widgets/FanControl.hpp +++ b/src/slic3r/GUI/Widgets/FanControl.hpp @@ -212,7 +212,6 @@ private: wxGridSizer* m_sizer_fanControl { nullptr }; wxBoxSizer *m_mode_sizer{ nullptr }; - wxBoxSizer *m_bottom_sizer{ nullptr }; // mode switch buttons std::unordered_map m_mode_switch_btns; // diff --git a/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp b/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp index 3baea061dc..3e2e41ccb7 100644 --- a/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp +++ b/src/slic3r/GUI/Widgets/MultiNozzleSync.hpp @@ -89,8 +89,6 @@ private: bool m_right_on{ true }; wxStaticBitmap* badget; - Label* left; - Label* right; Label* left_diameter_desp; Label* right_diameter_desp; Label* left_flow_desp; From 4deadc9dcea073b44f70232cdaf15d49931170b1 Mon Sep 17 00:00:00 2001 From: HanifKoh <76276251+HanifKoh@users.noreply.github.com> Date: Wed, 9 Sep 2026 12:33:42 +0800 Subject: [PATCH 061/162] Make Tree-Support Deterministic (#15565) * Make tree support deterministic without giving up its parallelism * Break equal-distance ties in the tree support MST by coordinates * test: cover the determinism this PR fixes The MST unit tests here cover the tie-break, but the drop_nodes rework has no test. Adds two cases to the tree support suite. The thread-scheduling one slices five configs twice each and compares the support point sequence, which is what the node ordering moves. The MST tie one pins the branch diameter and line width that carry Prim's equal-distance ties into the toolpaths. slice_with_tree_support takes an optional config list so the second case can add the tree parameters it needs, and the double-slice comparison is shared rather than written twice. Both fail on main without this PR. The first passes from 60d1ceb580, the second from e148865dd6. --------- Co-authored-by: raistlin7447 --- src/libslic3r/MinimumSpanningTree.cpp | 7 +- src/libslic3r/Support/TreeSupport.cpp | 102 ++++++++++++++---- src/libslic3r/Support/TreeSupport3D.cpp | 11 +- tests/fff_print/test_tree_support.cpp | 69 +++++++++++- tests/libslic3r/CMakeLists.txt | 1 + .../libslic3r/test_minimum_spanning_tree.cpp | 66 ++++++++++++ 6 files changed, 223 insertions(+), 33 deletions(-) create mode 100644 tests/libslic3r/test_minimum_spanning_tree.cpp diff --git a/src/libslic3r/MinimumSpanningTree.cpp b/src/libslic3r/MinimumSpanningTree.cpp index ff8fe6e5dd..88555e70ee 100644 --- a/src/libslic3r/MinimumSpanningTree.cpp +++ b/src/libslic3r/MinimumSpanningTree.cpp @@ -60,10 +60,15 @@ auto MinimumSpanningTree::prim(std::vector vertices) const -> AdjacencyGr //This search is O(V) right now, which can be made down to O(log(V)). This reduces the overall time complexity from O(V*V) to O(V*log(E)). //However that requires an implementation of a heap that supports the decreaseKey operation, which is not in the std library. //TODO: Implement this? + // Break equal-distance ties on coordinates: the map is keyed by address, so its + // iteration order (and therefore the first minimum) would otherwise depend on where + // the vertices were allocated. using MapValue = std::pair; const auto closest = std::min_element(smallest_distance.begin(), smallest_distance.end(), [](const MapValue& a, const MapValue& b) { - return a.second < b.second; + if (a.second != b.second) + return a.second < b.second; + return *a.first < *b.first; }); //Add this point to the graph and remove it from the candidates. diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 2b06f11244..519b6e826e 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2846,7 +2846,9 @@ void TreeSupport::drop_nodes() const MinimumSpanningTree& mst = spanning_trees[group_index]; //In the first pass, merge all nodes that are close together. std::vector> nodes_vec(nodes_this_part.begin(), nodes_this_part.end()); - tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { + // Sequential: nodes merge into and invalidate each other in place, so parallel execution + // makes the merge order (and thus the result) depend on thread scheduling. + std::for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { SupportNode* p_node = entry.second; SupportNode& node = *p_node; if (!p_node->valid) @@ -2934,7 +2936,32 @@ void TreeSupport::drop_nodes() ); //In the second pass, move all middle nodes. - tbb::parallel_for_each(nodes_vec.begin(), nodes_vec.end(), [&](const std::pair& entry) { + // Still parallel: this pass only reads other nodes. Side effects (invalidation, new + // nodes, contact_nodes/unsupported_branch_leaves updates) are recorded per node and + // applied afterwards in node order. Node creation must be deferred too, since + // SupportNode's constructor writes `parent->child = this` on other nodes. + struct PendingNode { + Point position; + int distance_to_top = 0; + int support_roof_layers_below = 0; + bool to_buildplate = false; + SupportNode *parent = nullptr; + bool zero_max_move = false; + bool has_overhang = false; + ExPolygon overhang; + bool clamp_radius = false; + coordf_t parent_radius = 0; + double dist_to_outer = 0; + }; + struct PassTwoResult { + bool invalidate = false; + bool unsupported_leaf = false; + std::vector pending; + }; + std::vector pass2_results(nodes_vec.size()); + auto pass2_body = [&](size_t node_idx) { + const std::pair& entry = nodes_vec[node_idx]; + PassTwoResult& pass2_out = pass2_results[node_idx]; SupportNode* p_node = entry.second; const SupportNode& node = *p_node; @@ -2949,14 +2976,16 @@ void TreeSupport::drop_nodes() ExPolygons overhangs_next = diff_clipped({ node.overhang }, get_collision(0, obj_layer_nr_next)); for(auto& overhang:overhangs_next) { Point next_pt = overhang.contour.centroid(); - SupportNode *next_node = m_ts_data->create_node(next_pt, p_node->distance_to_top + 1, obj_layer_nr_next, - p_node->support_roof_layers_below - (p_node->distance_to_top >= 0 ? 1 : 0), - to_buildplate, p_node, print_z_next, height_next); - next_node->max_move_dist = 0; - next_node->overhang = std::move(overhang); - m_ts_data->m_mutex.lock(); - contact_nodes[layer_nr_next].emplace_back(next_node); - m_ts_data->m_mutex.unlock(); + PendingNode pending; + pending.position = next_pt; + pending.distance_to_top = p_node->distance_to_top + 1; + pending.support_roof_layers_below = p_node->support_roof_layers_below - (p_node->distance_to_top >= 0 ? 1 : 0); + pending.to_buildplate = to_buildplate; + pending.parent = p_node; + pending.zero_max_move = true; + pending.has_overhang = true; + pending.overhang = std::move(overhang); + pass2_out.pending.emplace_back(std::move(pending)); } return; @@ -2973,17 +3002,17 @@ void TreeSupport::drop_nodes() { if (support_on_buildplate_only) { - unsupported_branch_leaves.push_front({ layer_nr, p_node }); + pass2_out.unsupported_leaf = true; } else { - p_node->valid = false; + pass2_out.invalidate = true; } return; } // if the link between parent and current is cut by contours, mark current as bottom contact node if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) { - p_node->valid = false; + pass2_out.invalidate = true; return; } } @@ -3096,20 +3125,47 @@ void TreeSupport::drop_nodes() } auto next_collision = get_collision(0, obj_layer_nr_next); const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[obj_layer_nr_next], next_layer_vertex); - SupportNode * next_node = m_ts_data->create_node(next_layer_vertex, node.distance_to_top + 1, obj_layer_nr_next, - node.support_roof_layers_below - (node.distance_to_top >= 0 ? 1 : 0), - to_buildplate, p_node, print_z_next, height_next); // don't increase radius if next node will collide partially with the object (STUDIO-7883) - to_outside = projection_onto(next_collision, next_node->position); + to_outside = projection_onto(next_collision, next_layer_vertex); direction_to_outer = to_outside - node.position; double dist_to_outer = unscale_(direction_to_outer.cast().norm()); - next_node->radius = std::max(node.radius, std::min(next_node->radius, dist_to_outer)); - get_max_move_dist(next_node); - m_ts_data->m_mutex.lock(); - contact_nodes[layer_nr_next].push_back(next_node); - m_ts_data->m_mutex.unlock(); + PendingNode pending; + pending.position = next_layer_vertex; + pending.distance_to_top = node.distance_to_top + 1; + pending.support_roof_layers_below = node.support_roof_layers_below - (node.distance_to_top >= 0 ? 1 : 0); + pending.to_buildplate = to_buildplate; + pending.parent = p_node; + pending.clamp_radius = true; + pending.parent_radius = node.radius; + pending.dist_to_outer = dist_to_outer; + pass2_out.pending.emplace_back(std::move(pending)); + }; + tbb::parallel_for(tbb::blocked_range(0, nodes_vec.size()), + [&pass2_body](const tbb::blocked_range& node_range) { + for (size_t node_idx = node_range.begin(); node_idx < node_range.end(); ++ node_idx) + pass2_body(node_idx); + }); + // Apply the recorded side effects in node order. + for (size_t node_idx = 0; node_idx < nodes_vec.size(); ++ node_idx) { + PassTwoResult& pass2_out = pass2_results[node_idx]; + for (PendingNode& pending : pass2_out.pending) { + SupportNode* next_node = m_ts_data->create_node(pending.position, pending.distance_to_top, obj_layer_nr_next, + pending.support_roof_layers_below, pending.to_buildplate, pending.parent, print_z_next, height_next); + if (pending.zero_max_move) + next_node->max_move_dist = 0; + if (pending.has_overhang) + next_node->overhang = std::move(pending.overhang); + if (pending.clamp_radius) { + next_node->radius = std::max(pending.parent_radius, std::min(next_node->radius, pending.dist_to_outer)); + get_max_move_dist(next_node); + } + contact_nodes[layer_nr_next].push_back(next_node); + } + if (pass2_out.unsupported_leaf) + unsupported_branch_leaves.push_front({ layer_nr, nodes_vec[node_idx].second }); + if (pass2_out.invalidate) + nodes_vec[node_idx].second->valid = false; } - ); } #ifdef SUPPORT_TREE_DEBUG_TO_SVG diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 29131502d2..3cd3f4110d 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -2382,13 +2382,10 @@ static void merge_influence_areas( size_t num_buckets_initial; { // How many buckets per first merge iteration? - const size_t num_threads = tbb::this_task_arena::max_concurrency(); - // 4 buckets per thread if possible, - const size_t num_buckets_min = (input_size + 2) / 4; - // 2 buckets per thread otherwise. - const size_t num_buckets_max = input_size / 2; - num_buckets_initial = num_buckets_min >= num_threads ? num_buckets_min : num_buckets_max; - const size_t bucket_size = num_buckets_min >= num_threads ? 4 : 2; + // Fixed at 4: merging is not associative, so sizing buckets off max_concurrency() made + // results depend on the core count of the slicing machine. + const size_t bucket_size = 4; + num_buckets_initial = (input_size + 2) / 4; // Fill in the buckets. SupportElementMerging *it = influence_areas.data(); // Reserve one more bucket to keep a single influence area which will not be merged in the first iteration. diff --git a/tests/fff_print/test_tree_support.cpp b/tests/fff_print/test_tree_support.cpp index 362eb0ca56..fbb40bb8f3 100644 --- a/tests/fff_print/test_tree_support.cpp +++ b/tests/fff_print/test_tree_support.cpp @@ -1,5 +1,7 @@ #include +#include + #include "libslic3r/Layer.hpp" #include "libslic3r/TriangleMesh.hpp" @@ -33,10 +35,13 @@ TriangleMesh scaled(TestMesh id, float scale) return mesh; } +// `extra` is applied last, so a caller can add or override any key. void slice_with_tree_support(const TriangleMesh &mesh, Slic3r::Print &print, const char *style, - int threshold_angle = 30, int build_plate_only = 0, int raft_layers = 0) + int threshold_angle = 30, int build_plate_only = 0, int raft_layers = 0, + std::initializer_list extra = {}) { - Slic3r::Test::init_and_process_print({ mesh }, print, { + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ { "enable_support", 1 }, { "support_type", "tree(auto)" }, { "support_style", style }, @@ -45,6 +50,8 @@ void slice_with_tree_support(const TriangleMesh &mesh, Slic3r::Print &print, con { "raft_layers", raft_layers }, { "layer_height", 0.2 }, }); + config.set_deserialize_strict(extra); + Slic3r::Test::init_and_process_print({ mesh }, print, config); } Points support_points(const Slic3r::Print &print) @@ -63,6 +70,32 @@ size_t support_point_count(const TriangleMesh &mesh, const char *style, int thre return support_points(print).size(); } +// Index of the first differing point, or the common length when they match. An index keeps a +// failure readable; comparing the vectors themselves dumps thousands of points. +size_t first_difference(const Points &a, const Points &b) +{ + const size_t common = std::min(a.size(), b.size()); + for (size_t i = 0; i < common; ++i) + if (a[i] != b[i]) + return i; + return common; +} + +// Slice `mesh` twice and require an identical support point sequence. Point counts and total +// length are order insensitive, so the sequence is what a reordering shows up in. +void sliced_twice_matches(const TriangleMesh &mesh, int build_plate_only, const char *style = "tree_slim", + std::initializer_list extra = {}) +{ + Slic3r::Print first_print, second_print; + slice_with_tree_support(mesh, first_print, style, 30, build_plate_only, 0, extra); + slice_with_tree_support(mesh, second_print, style, 30, build_plate_only, 0, extra); + const Points first = support_points(first_print); + const Points second = support_points(second_print); + REQUIRE(first.size() > 1000); // without support the comparison below passes vacuously + REQUIRE(second.size() == first.size()); + REQUIRE(first_difference(first, second) == first.size()); +} + } // namespace TEST_CASE("Tree support is generated for an overhang and not for a plain cube", "[TreeSupport]") @@ -123,3 +156,35 @@ TEST_CASE("A raft is still generated under tree support", "[TreeSupport]") // The raft goes under the object. REQUIRE(rafted_object->layers().front()->print_z > unrafted_object->layers().front()->print_z); } + +// drop_nodes() decides the node merges and spawns the next layer's nodes in parallel. Every one of +// those decisions has to be applied in a fixed order, or the same model gives different branches on +// each slice. +TEST_CASE("Tree support toolpaths do not depend on thread scheduling", "[TreeSupport][Regression]") +{ + // Scaled up so that a layer holds enough nodes for the parallel range to be split. At stock + // size it stays in one chunk and the order never varies. + SECTION("overhang") { sliced_twice_matches(scaled(TestMesh::overhang, 2.f), 0); } + SECTION("bridge with hole") { sliced_twice_matches(scaled(TestMesh::bridge_with_hole, 3.f), 0); } + // Dropping every branch that cannot reach the bed leaves the survivors dense enough that the + // neighbour merge fires in bulk. + SECTION("on the build plate") { sliced_twice_matches(scaled(TestMesh::overhang, 4.f), 1); } + // Branches resting on the model are what put nodes in a part group other than 0, which is the + // only way to reach the prune in the second pass. tree_hybrid additionally builds polygon + // nodes, so it is the only style that exercises the overhang merge. + SECTION("resting on the model") { sliced_twice_matches(two_tier_mesh(), 0); } + SECTION("hybrid on the model") { sliced_twice_matches(two_tier_mesh(), 0, "tree_hybrid"); } +} + +// Prim breaks equal-distance ties by heap address. A 1 mm branch diameter puts neighbours close +// enough to tie, and an explicit line width pins max_move_dist, so the moved tie winner reaches +// the support toolpaths. +TEST_CASE("Tree support toolpaths do not depend on the MST tie order", "[TreeSupport][Regression]") +{ + sliced_twice_matches(two_tier_mesh(), 0, "tree_hybrid", { + { "tree_support_branch_diameter", 1.0 }, + { "tree_support_branch_distance", 5.0 }, + { "tree_support_branch_angle", 40 }, + { "support_line_width", 0.4 }, + }); +} diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 5d3e301ea7..0d29ea11ae 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -29,6 +29,7 @@ add_executable(${_TEST_NAME}_tests test_polygon.cpp test_mutable_polygon.cpp test_mutable_priority_queue.cpp + test_minimum_spanning_tree.cpp test_nozzle_volume_type.cpp test_step.cpp test_stl.cpp diff --git a/tests/libslic3r/test_minimum_spanning_tree.cpp b/tests/libslic3r/test_minimum_spanning_tree.cpp new file mode 100644 index 0000000000..5f9998171c --- /dev/null +++ b/tests/libslic3r/test_minimum_spanning_tree.cpp @@ -0,0 +1,66 @@ +#include + +#include + +#include "libslic3r/MinimumSpanningTree.hpp" +#include "libslic3r/Point.hpp" + +using namespace Slic3r; + +// A 5x5 lattice: at every step of Prim's algorithm several candidates sit at the same +// distance from the tree, so the tie-break decides the tree's shape. +static std::vector lattice() +{ + std::vector vertices; + for (int y = 0; y < 5; ++y) + for (int x = 0; x < 5; ++x) + vertices.emplace_back(Point::new_scale(x, y)); + return vertices; +} + +static std::vector sorted_neighbours(const MinimumSpanningTree &mst, const Point &vertex) +{ + std::vector neighbours = mst.adjacent_nodes(vertex); + std::sort(neighbours.begin(), neighbours.end()); + return neighbours; +} + +TEST_CASE("Minimum spanning tree connects every vertex", "[MinimumSpanningTree]") +{ + const std::vector vertices = lattice(); + const MinimumSpanningTree mst(vertices); + + REQUIRE(mst.vertices().size() == vertices.size()); + size_t adjacency_entries = 0; + for (const Point &vertex : vertices) { + const std::vector neighbours = mst.adjacent_nodes(vertex); + REQUIRE(! neighbours.empty()); + adjacency_entries += neighbours.size(); + } + // A tree on n vertices has n - 1 edges, each listed from both ends. + REQUIRE(adjacency_entries == 2 * (vertices.size() - 1)); +} + +TEST_CASE("Minimum spanning tree does not depend on the order of the non-root vertices", "[MinimumSpanningTree][Regression]") +{ + const std::vector vertices = lattice(); + const MinimumSpanningTree reference(vertices); + + // The root stays first: Prim's tree legitimately depends on where it starts. + // Every other order of the remaining vertices must give the same tree. + std::vector> orders; + orders.emplace_back(vertices); + std::reverse(orders.back().begin() + 1, orders.back().end()); + for (size_t shift = 1; shift + 1 < vertices.size(); ++shift) { + orders.emplace_back(vertices); + std::rotate(orders.back().begin() + 1, orders.back().begin() + 1 + shift, orders.back().end()); + } + + for (const std::vector &order : orders) { + const MinimumSpanningTree mst(order); + for (const Point &vertex : vertices) { + INFO("vertex " << vertex.x() << "," << vertex.y()); + REQUIRE(sorted_neighbours(mst, vertex) == sorted_neighbours(reference, vertex)); + } + } +} From 8a291f9d561d1ce718867da02eb2fe8e576d0c68 Mon Sep 17 00:00:00 2001 From: HanifKoh <76276251+HanifKoh@users.noreply.github.com> Date: Wed, 9 Sep 2026 15:35:21 +0800 Subject: [PATCH 062/162] Confine config import to the preset directory (#15608) import_presets reduced each zip entry to a basename by stripping only '/', so on Windows an entry named with '\' separators kept its directory components and was extracted wherever they pointed. Strip both separators, and reject any entry whose name still escapes the extraction folder. The preset name from the JSON and the bundle id from bundle_structure.json were joined onto the preset directory unchecked as well, which let either of them write outside it on every platform. Both are now validated before anything is written. The check is the is_path_within_root helper the 3MF importer already had, moved to Utils so both importers share it. It treats '/' and '\' as separators on every platform, so a bundle that would escape on one OS is rejected on all of them. --- src/libslic3r/Format/bbs_3mf.cpp | 39 -------- src/libslic3r/PresetBundle.cpp | 16 +++- src/libslic3r/Utils.hpp | 4 + src/libslic3r/utils.cpp | 24 +++++ .../libslic3r/test_preset_bundle_loading.cpp | 90 +++++++++++++++++++ 5 files changed, 133 insertions(+), 40 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index b0cbb1fd50..b4f6dc1d45 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -102,45 +102,6 @@ struct ZipUnicodePathExtraField } }; -// Validate that a relative file path does not escape the root directory via path traversal. -static bool is_path_within_root(const std::string& file_path, const boost::filesystem::path& root) -{ - if (file_path.empty()) - return false; - - boost::filesystem::path p(file_path); - if (p.is_absolute()) - return false; - - // Reject any path component that is ".." - for (const auto& component : p) { - if (component == "..") - return false; - } - - // Resolve the full path and verify it starts with the canonical root (also catches symlink escapes) - try { - boost::filesystem::path full_path = root / p; - boost::filesystem::path canonical_root = boost::filesystem::weakly_canonical(root); - boost::filesystem::path canonical_full = boost::filesystem::weakly_canonical(full_path); - - auto root_str = canonical_root.string(); - auto full_str = canonical_full.string(); - if (full_str.length() < root_str.length()) - return false; - if (full_str.compare(0, root_str.length(), root_str) != 0) - return false; - // Ensure it's a proper prefix (not just a substring of a longer directory name) - if (full_str.length() > root_str.length() && - full_str[root_str.length()] != boost::filesystem::path::preferred_separator) - return false; - } catch (const boost::filesystem::filesystem_error&) { - return false; - } - - return true; -} - // VERSION NUMBERS // 0 : .3mf, files saved by older slic3r or other applications. No version definition in them. // 1 : Introduction of 3mf versioning. No other change in data saved into 3mf files. diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 6d4e77837a..f17fd5c768 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1614,6 +1614,12 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector metadata.id = to_string(uuid); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " bundle_id was empty, so generating a UUID: " << metadata.id; } + if (has_bundle_structure && !is_path_within_root(metadata.id, user_folder / user_id / PRESET_LOCAL_DIR)) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " bundle id escapes the bundle directory, not importing: " << metadata.id; + fclose(zipFile); + fs::remove_all(temp_folder, ec); + continue; + } // Build bundle directory path based on whether bundle_structure.json was present fs::path bundle_base_dir; @@ -1636,11 +1642,15 @@ PresetsConfigSubstitutions PresetBundle::import_presets(std::vector if (status) { std::string file_name = file_stat.m_filename; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " From zip file: " << file << ". Read file name: " << file_stat.m_filename; - size_t index = file_name.find_last_of('/'); + size_t index = file_name.find_last_of("/\\"); if (std::string::npos != index) { file_name = file_name.substr(index + 1); } if (BUNDLE_STRUCTURE_JSON_NAME == file_name) continue; + if (!is_path_within_root(file_name, temp_folder)) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " zip entry escapes the temp directory, skipping: " << file_stat.m_filename; + continue; + } // create target file path std::string target_file_path = boost::filesystem::path(temp_folder / file_name).make_preferred().string(); @@ -1729,6 +1739,10 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions & s BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset type is unknown, not loading: " << name; return false; } + if (!is_path_within_root(name, fs::path(collection->m_dir_path))) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " Preset name escapes the preset directory, not loading: " << name; + return false; + } const PresetOrigin load_origin = detect_origin_from_path(boost::filesystem::path(bundle_dir)); const std::string preset_name = get_preset_canonical_name(name, load_origin); diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 55d9b716cf..797894442a 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -255,6 +255,10 @@ extern bool is_gallery_file(const std::string& path, char const* type); extern bool is_shapes_dir(const std::string& dir); //BBS: add json support extern bool is_json_file(const std::string& path); +// True if rel_path is relative, has no ".." component and, joined to root, still resolves inside it. +// Both '/' and '\\' are treated as separators on every platform, so an archive rejected on one OS +// is rejected on all of them. +extern bool is_path_within_root(const std::string &rel_path, const boost::filesystem::path &root); // Orca: custom protocal support utils inline bool is_orca_open(const std::string& url) { return boost::starts_with(url, "orcaslicer://open"); } diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 5f4baac951..875c90f6ab 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -1088,6 +1088,30 @@ bool is_json_file(const std::string& path) return boost::iends_with(path, ".json"); } +bool is_path_within_root(const std::string &rel_path, const boost::filesystem::path &root) +{ + auto is_separator = [](char c) { return c == '/' || c == '\\'; }; + if (rel_path.empty() || is_separator(rel_path.front()) || (rel_path.size() > 1 && rel_path[1] == ':')) + return false; + for (size_t start = 0; start <= rel_path.size();) { + size_t end = start; + while (end < rel_path.size() && !is_separator(rel_path[end])) + ++end; + if (rel_path.compare(start, end - start, "..") == 0) + return false; + start = end + 1; + } + // Resolve against the canonical root so a symlink inside it cannot lead back out. + try { + const std::string root_str = boost::filesystem::weakly_canonical(root).string(); + const std::string full_str = boost::filesystem::weakly_canonical(root / rel_path).string(); + return full_str.compare(0, root_str.size(), root_str) == 0 && + (full_str.size() == root_str.size() || full_str[root_str.size()] == boost::filesystem::path::preferred_separator); + } catch (const boost::filesystem::filesystem_error &) { + return false; + } +} + bool is_img_file(const std::string &path) { return boost::iends_with(path, ".png") || boost::iends_with(path, ".svg"); diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 26cbf387ec..d01711000a 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -6,6 +6,8 @@ #include "libslic3r/PresetBundle.hpp" #include "libslic3r/AppConfig.hpp" +#include "libslic3r/Utils.hpp" +#include "libslic3r/miniz_extension.hpp" #include "test_utils.hpp" @@ -1406,3 +1408,91 @@ TEST_CASE("Sizing down to the nozzle count plus mixes is what eats the mixed tai CHECK(bundle.project_config.option("filament_mixed_components")->values[5] == "1,2"); } } + +namespace { + +// data_dir() is a process-wide global that import_presets extracts into; scope it to the test. +struct ScopedDataDir +{ + std::string previous = data_dir(); + explicit ScopedDataDir(const fs::path &dir) { set_data_dir(dir.string()); } + ~ScopedDataDir() { set_data_dir(previous); } +}; + +std::string read_file(const fs::path &file) +{ + std::ifstream in(file.string(), std::ios::binary); + return std::string(std::istreambuf_iterator(in), std::istreambuf_iterator()); +} + +void write_zip(const fs::path &zip_file, const std::vector> &entries) +{ + mz_zip_archive zip; + mz_zip_zero_struct(&zip); + REQUIRE(open_zip_writer(&zip, zip_file.string())); + for (const auto &[name, content] : entries) + REQUIRE(mz_zip_writer_add_mem(&zip, name.c_str(), content.data(), content.size(), MZ_DEFAULT_COMPRESSION)); + REQUIRE(mz_zip_writer_finalize_archive(&zip)); + REQUIRE(close_zip_writer(&zip)); +} + +bool any_filename_contains(const fs::path &root, const std::string &needle) +{ + for (fs::recursive_directory_iterator it(root), end; it != end; ++it) + if (it->path().filename().string().find(needle) != std::string::npos) + return true; + return false; +} + +} // namespace + +TEST_CASE("Config import confines zip entries, preset names and bundle ids to the preset directory", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir temp_dir; + const fs::path data_root = temp_dir.path() / "datadir"; + const fs::path src_dir = temp_dir.path() / "src"; + fs::create_directories(src_dir); + ScopedDataDir scoped_data_dir(data_root); + + PresetBundle bundle; + AppConfig app_config; + const auto confirm = [](std::string const &) { return 1; }; + const auto import = [&](const fs::path &file) { + std::vector files{file.string()}; + bundle.import_presets(files, confirm, ForwardCompatibilitySubstitutionRule::Disable, app_config); + return files; + }; + + const fs::path good_file = src_dir / "Good.json"; + write_print_preset(bundle.prints.default_preset().config, good_file, "Good"); + const std::string good_json = read_file(good_file); + + // Four levels up from where import_presets writes (/user/default/temp) is temp_dir + // itself, so anything that escapes lands where the scan below can see it. + const std::string up = "../../../../"; + const std::string up_win = "..\\..\\..\\..\\"; + + SECTION("zip entry names with either separator are reduced to a basename") { + const fs::path zip = src_dir / "bundle.zip"; + write_zip(zip, {{up + "zip-escape.json", "{}"}, {up_win + "zip-escape.json", "{}"}, {"presets/Good.json", good_json}}); + import(zip); + CHECK(bundle.prints.find_preset("Good") != nullptr); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "zip-escape")); + } + + SECTION("a preset name that walks out of the preset directory is rejected") { + for (const std::string &name : {up + "name-escape", up_win + "name-escape"}) { + const fs::path file = src_dir / "escape.json"; + write_print_preset(bundle.prints.default_preset().config, file, name); + CHECK(import(file).empty()); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "name-escape")); + } + } + + SECTION("a bundle id that walks out of the bundle directory is rejected") { + const fs::path zip = src_dir / "bundle.zip"; + write_zip(zip, {{BUNDLE_STRUCTURE_JSON_NAME, "{\"id\": \"" + up + "bundle-escape\"}"}, {"Good.json", good_json}}); + CHECK(import(zip).empty()); + CHECK_FALSE(any_filename_contains(temp_dir.path(), "bundle-escape")); + } +} From 8df5e5e738aae791c2fac9cfa8b0534ed7639e5c Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Fri, 4 Sep 2026 17:15:19 +0800 Subject: [PATCH 063/162] Extract and Unify Wipe Tower Estimation --- src/OrcaSlicer.cpp | 43 ++-- src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/GCode/WipeTowerEstimate.cpp | 109 ++++++++++ src/libslic3r/GCode/WipeTowerEstimate.hpp | 29 +++ src/libslic3r/Print.cpp | 100 +++------ src/libslic3r/Print.hpp | 4 + src/slic3r/GUI/GLCanvas3D.cpp | 12 +- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 3 +- src/slic3r/GUI/PartPlate.cpp | 214 +++++++++---------- src/slic3r/GUI/PartPlate.hpp | 10 +- tests/fff_print/test_wipe_tower.cpp | 83 +++++++ tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_wipe_tower_estimate.cpp | 206 ++++++++++++++++++ 13 files changed, 589 insertions(+), 227 deletions(-) create mode 100644 src/libslic3r/GCode/WipeTowerEstimate.cpp create mode 100644 src/libslic3r/GCode/WipeTowerEstimate.hpp create mode 100644 tests/libslic3r/test_wipe_tower_estimate.cpp diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 31f39921f4..5b1d2da1bf 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -4015,7 +4015,7 @@ int CLI::run(int argc, char **argv) } }; - auto check_plate_wipe_tower = [get_print_sequence, is_smooth_timelapse, new_extruder_count](Slic3r::GUI::PartPlate* plate, int plate_index, DynamicPrintConfig& print_config, plate_obj_size_info_t &plate_obj_size_info) { + auto check_plate_wipe_tower = [get_print_sequence, is_smooth_timelapse](Slic3r::GUI::PartPlate* plate, int plate_index, DynamicPrintConfig& print_config, plate_obj_size_info_t &plate_obj_size_info) { plate_obj_size_info.obj_bbox= plate->get_objects_bounding_box(); BOOST_LOG_TRIVIAL(info) << boost::format("plate %1%, object bbox: min {%2%, %3%, %4%} - max {%5%, %6%, %7%}") %(plate_index+1) %plate_obj_size_info.obj_bbox.min.x() % plate_obj_size_info.obj_bbox.min.y() % plate_obj_size_info.obj_bbox.min.z() %plate_obj_size_info.obj_bbox.max.x() % plate_obj_size_info.obj_bbox.max.y() % plate_obj_size_info.obj_bbox.max.z(); @@ -4059,22 +4059,13 @@ int CLI::run(int argc, char **argv) plate_obj_size_info.wipe_x = wipe_x_option->get_at(plate_index); plate_obj_size_info.wipe_y = wipe_y_option->get_at(plate_index); - ConfigOptionFloat* width_option = print_config.option("prime_tower_width", true); - plate_obj_size_info.wipe_width = width_option->value; + // Body and brim from one estimate: resolving an auto (-1) brim against a different + // height would size the two halves of the same tower from two different objects. + const WipeTowerFootprint footprint = plate->estimate_wipe_tower_footprint(print_config, filaments_cnt); + float brim_width = float(footprint.brim_width); - ConfigOptionFloat* brim_width_option = print_config.option("prime_tower_brim_width", true); - float brim_width = brim_width_option->value; - if (brim_width < 0) brim_width = WipeTower::get_auto_brim_by_height((float)plate_obj_size_info.obj_bbox.max.z()); - - ConfigOptionFloat* volume_option = print_config.option("prime_volume", true); - float wipe_volume = volume_option->value; - - const ConfigOptionBool * wrapping_detection = print_config.option("enable_wrapping_detection"); - bool enable_wrapping = (wrapping_detection != nullptr) && wrapping_detection->value; - - Vec3d wipe_tower_size = plate->estimate_wipe_tower_size(print_config, plate_obj_size_info.wipe_width, wipe_volume, new_extruder_count, filaments_cnt, false, enable_wrapping); - plate_obj_size_info.wipe_width = wipe_tower_size(0); - plate_obj_size_info.wipe_depth = wipe_tower_size(1); + plate_obj_size_info.wipe_width = footprint.width; + plate_obj_size_info.wipe_depth = footprint.depth; Vec3d origin = plate->get_origin(); Vec3d start(origin(0) + plate_obj_size_info.wipe_x - brim_width, origin(1) + plate_obj_size_info.wipe_y, 0.f); @@ -4875,7 +4866,7 @@ int CLI::run(int argc, char **argv) wipe_y_option->set_at(&wt_y_opt, i, 0); Vec3d wipe_tower_size, wipe_tower_pos; - ArrangePolygon wipe_tower_ap = cur_plate->estimate_wipe_tower_polygon(m_print_config, i, wipe_tower_pos, wipe_tower_size, new_extruder_count, assemble_plate.filaments_count, true); + ArrangePolygon wipe_tower_ap = cur_plate->estimate_wipe_tower_polygon(m_print_config, i, wipe_tower_pos, wipe_tower_size, assemble_plate.filaments_count, true); //update the new wp position wt_x_opt.value = wipe_tower_pos(0); @@ -5175,7 +5166,7 @@ int CLI::run(int argc, char **argv) } Vec3d wipe_tower_size, wipe_tower_pos; - ArrangePolygon wipe_tower_ap = partplate_list.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(m_print_config, plate_index_valid, wipe_tower_pos, wipe_tower_size, new_extruder_count, extruder_size, true); + ArrangePolygon wipe_tower_ap = partplate_list.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(m_print_config, plate_index_valid, wipe_tower_pos, wipe_tower_size, extruder_size, true); //update the new wp position if (bedid < plate_count) { @@ -5276,22 +5267,16 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); - const ConfigOptionBool *wrapping_detection = m_print_config.option("enable_wrapping_detection"); - bool enable_wrapping = (wrapping_detection != nullptr) && wrapping_detection->value; - - Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, new_extruder_count, filaments_cnt, false, enable_wrapping); + const WipeTowerFootprint footprint = cur_plate->estimate_wipe_tower_footprint(m_print_config, filaments_cnt); + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); Vec3d plate_origin = cur_plate->get_origin(); int plate_width, plate_depth; double plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); float depth = wipe_tower_size(1); - float margin = 15.f, wp_brim_width = 0.f; - ConfigOption *wipe_tower_brim_width_opt = m_print_config.option("prime_tower_brim_width"); - if (wipe_tower_brim_width_opt ) { - wp_brim_width = wipe_tower_brim_width_opt->getFloat(); - if (wp_brim_width < 0) wp_brim_width = WipeTower::get_auto_brim_by_height((float) wipe_tower_size.z()); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%")%wp_brim_width; - } + // Brim already resolved against the height the body was sized from. + float margin = 15.f, wp_brim_width = float(footprint.brim_width); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%")%wp_brim_width; w = wipe_tower_size(0); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: x=%1%, y=%2%, width=%3%, depth=%4%, angle=%5%, prime_volume=%6%, filaments_cnt=%7%, layer_height=%8%, plate_width=%9%, plate_depth=%10%") diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index d07c42d8f6..23b6decb2c 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -272,6 +272,8 @@ set(lisbslic3r_sources GCode/WipeTower2.hpp GCode/WipeTower.cpp GCode/WipeTower.hpp + GCode/WipeTowerEstimate.cpp + GCode/WipeTowerEstimate.hpp GCodeWriter.cpp GCodeWriter.hpp Geometry/ArcWelder.hpp diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp new file mode 100644 index 0000000000..9e9bb7de4b --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -0,0 +1,109 @@ +#include "WipeTowerEstimate.hpp" + +#include "WipeTower.hpp" +#include "WipeTower2.hpp" +#include "../Config.hpp" +#include "../PrintConfig.hpp" +#include "../libslic3r.h" + +#include +#include + +namespace Slic3r { + +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height, bool any_raft) +{ + WipeTowerFootprint footprint; + footprint.height = max_object_height; + if (filaments_cnt == 0 || layer_height < EPSILON) + return footprint; + + // Every caller today declares all these keys, but the signature accepts any ConfigBase: + // fall back to the key's declared default, never to a hand-copied constant. + auto option_of = [&config](const char *key) -> const ConfigOption * { + if (const ConfigOption *opt = config.option(key); opt != nullptr) + return opt; + if (const ConfigDef *def = config.def(); def != nullptr) + if (const ConfigOptionDef *opt_def = def->get(key); opt_def != nullptr) + return opt_def->default_value.get(); + return nullptr; + }; + auto opt_float = [&option_of](const char *key) { + const ConfigOption *opt = option_of(key); + return opt != nullptr ? opt->getFloat() : 0.; + }; + auto opt_bool = [&option_of](const char *key) { + const ConfigOption *opt = option_of(key); + return opt != nullptr && opt->getBool(); + }; + // By value, not by concrete type: a static PrintConfig holds ConfigOptionEnum, a + // DynamicConfig built from presets holds ConfigOptionEnumGeneric, and both answer getInt(). + auto opt_enum = [&option_of](const char *key, int fallback) { + const ConfigOption *opt = option_of(key); + return opt != nullptr ? opt->getInt() : fallback; + }; + auto max_of = [&option_of](const char *key, double fallback) { + const auto *opt = dynamic_cast(option_of(key)); + return (opt != nullptr && !opt->values.empty()) ? *std::max_element(opt->values.begin(), opt->values.end()) : fallback; + }; + + const double width = opt_float("prime_tower_width"); + const double prime_volume = opt_float("prime_volume"); + const double extra_spacing = opt_float("prime_tower_infill_gap") / 100.; + double rib_width = opt_float("wipe_tower_rib_width"); + const double extra_rib_length = opt_float("wipe_tower_extra_rib_length"); + const auto *nozzle_opt = dynamic_cast(option_of("nozzle_diameter")); + const bool dual_nozzle = nozzle_opt != nullptr && nozzle_opt->values.size() == 2; + const bool rib_wall = opt_enum("wipe_tower_wall_type", int(WipeTowerWallType::wtwRectangle)) == int(WipeTowerWallType::wtwRib); + const bool smooth_timelapse = opt_enum("timelapse_type", int(TimelapseType::tlTraditional)) == int(TimelapseType::tlSmooth); + // Reasons a tower is printed with no tool change to purge for. + const bool need_wipe_tower = smooth_timelapse || opt_bool("enable_wrapping_detection") || any_raft; + + // No tool change, nothing to purge; smooth timelapse still primes once. + size_t purge_count = 0; + if (filaments_cnt > 1) + purge_count = dual_nozzle ? filaments_cnt : filaments_cnt - 1; + else if (smooth_timelapse) + purge_count = 1; + + double volume = prime_volume * double(purge_count); + if (dual_nozzle) { + // Dual-nozzle printers also purge the filament change length on the tower. + const double length = max_of("filament_change_length", 0.); + const double diameter = max_of("filament_diameter", 1.75); + volume += length * PI * diameter * diameter / 4. * double(filaments_cnt / 2); + } + // Single-extruder multi-material purges the flush matrix instead of the prime volume. + const bool semm_flush = opt_bool("purge_in_prime_tower") && opt_bool("single_extruder_multi_material"); + if (semm_flush) + volume = WipeTower2::estimate_semm_flush_volume(config, filaments_cnt); + + // Both wall types decide this together: over-reserving only wastes bed area, but + // reporting no tower for one that is built collapses the validation hull to a point. + if (volume < EPSILON && !need_wipe_tower) + return footprint; + + const double min_depth = WipeTower::get_limit_depth_by_height(float(max_object_height)); + if (rib_wall) { + // A rib wall squares the tower; the ribs run the diagonal and bulge past the body. + const double volume_depth = std::sqrt(volume / layer_height * extra_spacing); + double depth = std::max(min_depth, volume_depth); + rib_width = std::min(rib_width, depth / 2.); + depth = rib_width / std::sqrt(2.) + std::max(depth + extra_rib_length, volume_depth); + footprint.width = footprint.depth = depth; + } else { + double depth = volume / (layer_height * width); + // The flush volumes already hold the spacing between wipes. + if (!semm_flush) + depth *= extra_spacing; + footprint.width = width; + footprint.depth = std::max(min_depth, depth); + } + + footprint.brim_width = opt_float("prime_tower_brim_width"); + if (footprint.brim_width < 0) + footprint.brim_width = WipeTower::get_auto_brim_by_height(float(max_object_height)); + return footprint; +} + +} // namespace Slic3r diff --git a/src/libslic3r/GCode/WipeTowerEstimate.hpp b/src/libslic3r/GCode/WipeTowerEstimate.hpp new file mode 100644 index 0000000000..911ca9560c --- /dev/null +++ b/src/libslic3r/GCode/WipeTowerEstimate.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +namespace Slic3r { + +class ConfigBase; + +// Pre-slice footprint of the wipe tower, shared by validation (Print), the GUI's placement +// clamp/preview/arrange and the CLI placement. The arithmetic is shared; the inputs below are +// not, so a change to how one caller derives them has to be mirrored in the others. +struct WipeTowerFootprint +{ + double width = 0.; // effective width: equals depth for a rib wall, which squares the tower + double depth = 0.; // 0 when these inputs imply no tower + double height = 0.; // tallest object; drives the stability floor and the auto brim + double brim_width = 0.; // configured width, auto (-1) resolved by height +}; + +// filaments_cnt: filaments purged on the plate. The config cannot see custom G-code tool +// changes, so a count derived from the model must include them +// (Print::extruders(true)) or a real tower is sized as if it were never built. +// layer_height: thinnest layer the tower will be planned at. +// any_raft: any object on the plate prints a raft, which puts the tower on every layer +// below it. Caller-resolved: raft_layers is a PrintObjectConfig key, absent +// from Print's config and overridable per object. +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height, bool any_raft); + +} // namespace Slic3r diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index aee50db534..7d362537ea 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -20,6 +20,7 @@ #include "GCode.hpp" #include "GCode/WipeTower.hpp" #include "GCode/WipeTower2.hpp" +#include "GCode/WipeTowerEstimate.hpp" #include "Utils.hpp" #include "PrintConfig.hpp" #include "MaterialType.hpp" @@ -1031,20 +1032,20 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, //BBS: add the wipe tower check logic const PrintConfig & config = print.config(); - int filaments_count = print.extruders().size(); + // Custom G-code tool changes (MultiAsSingle) build a real tower on a plate whose objects + // all use one filament, so they have to be counted or the hull below collapses to a point. + int filaments_count = print.extruders(true).size(); int plate_index = print.get_plate_index(); const Vec3d plate_origin = print.get_plate_origin(); float x = config.wipe_tower_x.get_at(plate_index) + plate_origin(0); float y = config.wipe_tower_y.get_at(plate_index) + plate_origin(1); - float width = config.prime_tower_width.value; float a = config.wipe_tower_rotation_angle.value; //float v = config.wiping_volume.value; - float depth = print.wipe_tower_data(filaments_count).depth; - //float brim_width = print.wipe_tower_data(filaments_count).brim_width; - - if (config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib) - width = depth; + // The estimate resolves the effective width (a rib wall squares the tower). + const WipeTowerData &wipe_tower_estimate = print.wipe_tower_data(filaments_count); + float width = wipe_tower_estimate.width; + float depth = wipe_tower_estimate.depth; Polygons convex_hulls_temp; if (print.has_wipe_tower()) { @@ -3997,74 +3998,27 @@ bool Print::has_wipe_tower() const const WipeTowerData &Print::wipe_tower_data(size_t filaments_cnt) const { - // If the wipe tower wasn't created yet, make sure the depth and brim_width members are set to default. - double max_height = 0; - for (size_t obj_idx = 0; obj_idx < m_objects.size(); obj_idx++) { - double object_z = (double) m_objects[obj_idx]->size().z(); - max_height = std::max(unscale_(object_z), max_height); + // Until the tower is generated, size it with the estimate the GUI/CLI placement uses, so + // validation cannot reject a position the clamp just accepted. + if (is_step_done(psWipeTower) || filaments_cnt == 0) + return m_wipe_tower_data; + + double max_height = 0.; + double layer_height = std::numeric_limits::max(); + bool any_raft = false; + for (const PrintObject *object : m_objects) { + max_height = std::max(max_height, unscale_(double(object->size().z()))); + layer_height = std::min(layer_height, object->config().layer_height.value); + any_raft = any_raft || object->config().raft_layers.value > 0; } - if (max_height < EPSILON) return m_wipe_tower_data; + if (max_height < EPSILON) + return m_wipe_tower_data; - double layer_height = 0.08f; // hard code layer height - layer_height = m_objects.front()->config().layer_height.value; - - auto timelapse_type = config().option>("timelapse_type"); - bool need_wipe_tower = (timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false) | (m_config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib); - double extra_spacing = config().option("prime_tower_infill_gap")->getFloat() / 100.; - double rib_width = config().option("wipe_tower_rib_width")->getFloat(); - - double filament_change_volume = 0.; - { - std::vector filament_change_lengths; - auto filament_change_lengths_opt = config().option("filament_change_length"); - if (filament_change_lengths_opt) filament_change_lengths = filament_change_lengths_opt->values; - double length = filament_change_lengths.empty() ? 0 : *std::max_element(filament_change_lengths.begin(), filament_change_lengths.end()); - double diameter = 1.75; - std::vector diameters; - auto filament_diameter_opt = config().option("filament_diameter"); - if (filament_diameter_opt) diameters = filament_diameter_opt->values; - diameter = diameters.empty() ? diameter : *std::max_element(diameters.begin(), diameters.end()); - filament_change_volume = length * PI * diameter * diameter / 4.; - } - - - if (! is_step_done(psWipeTower) && filaments_cnt !=0) { - double wipe_volume = m_config.prime_volume; - int filament_depth_count = m_config.nozzle_diameter.values.size() == 2 ? filaments_cnt : filaments_cnt - 1; - if (filaments_cnt == 1 && enable_timelapse_print()) filament_depth_count = 1; - double volume = wipe_volume * filament_depth_count; - if (m_config.nozzle_diameter.values.size() == 2) volume += filament_change_volume * (int) (filaments_cnt / 2); - - // Sizing should take into account currently set wiping volumes. - // For a long time, the initial preview would just use 900/width per toolchange (15mm on a 60mm wide tower) - // and it worked well enough. Let's try to do slightly better by accounting for the purging volumes. - const bool semm_flush = m_config.purge_in_prime_tower && m_config.single_extruder_multi_material; - if (semm_flush) volume = WipeTower2::estimate_semm_flush_volume(m_config, filaments_cnt); - - if (m_config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib) { - double depth = std::sqrt(volume / layer_height * extra_spacing); - if (need_wipe_tower || filaments_cnt > 1) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double) min_wipe_tower_depth, depth); - depth += rib_width / std::sqrt(2) + config().wipe_tower_extra_rib_length.value; - const_cast(this)->m_wipe_tower_data.depth = depth; - const_cast(this)->m_wipe_tower_data.brim_width = m_config.prime_tower_brim_width; - } - } - else { - double width = m_config.prime_tower_width; - double depth = volume / (layer_height * width); - // The flush volumes already hold the spacing between wipes. - if (!semm_flush) depth *= extra_spacing; - if (need_wipe_tower || depth > EPSILON) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double) min_wipe_tower_depth, depth); - } - const_cast(this)->m_wipe_tower_data.depth = depth; - const_cast(this)->m_wipe_tower_data.brim_width = m_config.prime_tower_brim_width; - } - if (m_config.prime_tower_brim_width < 0) const_cast(this)->m_wipe_tower_data.brim_width = WipeTower::get_auto_brim_by_height(max_height); - } + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, filaments_cnt, layer_height, max_height, any_raft); + WipeTowerData &data = const_cast(this)->m_wipe_tower_data; + data.depth = float(footprint.depth); + data.width = float(footprint.width); + data.brim_width = float(footprint.brim_width); return m_wipe_tower_data; } diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 9e20061501..964deb7a60 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -782,6 +782,9 @@ struct WipeTowerData // Depth of the wipe tower to pass to GLCanvas3D for exact bounding box: float depth; + // Effective width (a rib wall squares the tower). Pre-generation estimate only; once the + // tower exists its mesh is exact. + float width; std::vector> z_and_depth_pairs; float brim_width; float height; @@ -795,6 +798,7 @@ struct WipeTowerData used_filament.clear(); number_of_toolchanges = -1; depth = 0.f; + width = 0.f; brim_width = 0.f; height = 0.f; rib_offset = Vec2f::Zero(); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6cdc27ed65..e1f47061c1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2891,20 +2891,18 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; float x = dynamic_cast(proj_cfg.option("wipe_tower_x"))->get_at(plate_id); float y = dynamic_cast(proj_cfg.option("wipe_tower_y"))->get_at(plate_id); - float w = dynamic_cast(m_config->option("prime_tower_width"))->value; float a = dynamic_cast(m_config->option("wipe_tower_rotation_angle"))->value; - // BBS - float v = dynamic_cast(m_config->option("prime_volume"))->value; Vec3d plate_origin = ppl.get_plate(plate_id)->get_origin(); - const Print* print = m_process->fff_print(); const Print* current_print = part_plate->fff_print(); if (!need_wipe_tower && part_plate->get_extruders(true).size() < 2) continue; if (part_plate->get_objects_on_this_plate().empty()) continue; - float brim_width = print->wipe_tower_data(filaments_count).brim_width; - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - Vec3d wipe_tower_size = ppl.get_plate(plate_id)->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, 0, false, dynamic_cast(dconfig.option("enable_wrapping_detection"))->value); + // Body and brim from this plate's own estimate: m_process->fff_print() is the + // selected plate's, so an auto brim drew every tower with that plate's brim. + const WipeTowerFootprint footprint = part_plate->estimate_wipe_tower_footprint(full_config); + float brim_width = float(footprint.brim_width); + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); // The stored position is already clamped onto the bed, by // set_default_wipe_tower_pos_for_plate and again on every drag. diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 6b74b71af1..c0cc7bdb5a 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -265,8 +265,7 @@ arrangement::ArrangePolygon estimate_wipe_tower_info(int plate_index, std::setget_printer_extruder_count(); - auto arrange_poly = ppl.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(full_config, plate_index, wipe_tower_pos, wipe_tower_size, nozzle_nums, extruder_size); + auto arrange_poly = ppl.get_plate(plate_index_valid)->estimate_wipe_tower_polygon(full_config, plate_index, wipe_tower_pos, wipe_tower_size, extruder_size); arrange_poly.bed_idx = plate_index; return arrange_poly; } diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 849aa4e31a..3f56e9a8de 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -20,6 +20,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Polygon.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Geometry.hpp" @@ -1531,8 +1532,15 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const if (check_objects_empty_and_gcode3mf(plate_extruders)) { return plate_extruders; } - // if 3mf file - const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + return get_extruders(conside_custom_gcode, wxGetApp().preset_bundle->prints.get_edited_preset().config, wxGetApp().preset_bundle->project_config); +} + +// The plate's filaments, with the global keys read from the given configs rather than the +// application's presets: the wipe tower estimate is also called under the CLI, which has no +// application object. get_extruders(bool) passes the edited presets; a full config serves both. +std::vector PartPlate::get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const +{ + std::vector plate_extruders; int glb_support_intf_extr = glb_config.opt_int("support_interface_filament"); int glb_support_extr = glb_config.opt_int("support_filament"); int glb_outer_wall_extr = glb_config.opt_int("outer_wall_filament_id"); @@ -1549,7 +1557,9 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const glb_support |= glb_config.opt_int("raft_layers") > 0; for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!contain_instance_totally(obj_idx, 0)) + // Any instance on the plate counts, as PrintApply does: after an arrange, instance 0 + // can sit on a different plate. + if (!contain_any_instance_totally(obj_idx)) continue; ModelObject* mo = m_model->objects[obj_idx]; @@ -1662,7 +1672,7 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const if (conside_custom_gcode) { //BBS int nums_extruders = 0; - if (const ConfigOptionStrings *color_option = dynamic_cast(wxGetApp().preset_bundle->project_config.option("filament_colour"))) { + if (const ConfigOptionStrings *color_option = dynamic_cast(project_config.option("filament_colour"))) { nums_extruders = color_option->values.size(); if (m_model->plates_custom_gcodes.find(m_plate_index) != m_model->plates_custom_gcodes.end()) { for (auto item : m_model->plates_custom_gcodes.at(m_plate_index).gcodes) { @@ -1681,9 +1691,8 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const // is never loaded into a tray, so callers (AMS mapping, filament checks) must see the // physical filaments it resolves to instead. { - auto& project_config = wxGetApp().preset_bundle->project_config; - auto* is_mixed_opt = project_config.option("filament_is_mixed"); - auto* comp_strs_opt = project_config.option("filament_mixed_components"); + const auto* is_mixed_opt = project_config.option("filament_is_mixed"); + const auto* comp_strs_opt = project_config.option("filament_mixed_components"); if (is_mixed_opt && comp_strs_opt && has_any_mixed_filament(is_mixed_opt->values)) { std::vector ext_0based; for (int e : plate_extruders) @@ -2311,113 +2320,86 @@ bool PartPlate::check_compatible_of_nozzle_and_filament(const DynamicPrintConfig return wipe_tower_size; }*/ -Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, const double w, const double wipe_volume, int extruder_count, int plate_extruder_size, bool use_global_objects, bool enable_wrapping_detection) const +WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintConfig &config, int plate_extruder_size, bool use_global_objects) const { - Vec3d wipe_tower_size; - double layer_height = 0.08f; // hard code layer height - double max_height = 0.f; - wipe_tower_size.setZero(); - - const ConfigOption* layer_height_opt = config.option("layer_height"); - if (layer_height_opt) - layer_height = layer_height_opt->getFloat(); - - // empty plate - if (plate_extruder_size == 0) - { - std::vector plate_extruders = get_extruders(true); - plate_extruder_size = plate_extruders.size(); + // The CLI calls this too, so the plate's filaments are derived from the passed config: + // get_extruders(bool) reads the same keys off wxGetApp()'s presets, which the CLI has none of. + std::vector plate_extruders; + if (plate_extruder_size == 0) { + plate_extruders = get_extruders(true, config, config); + plate_extruder_size = int(plate_extruders.size()); + } + // The wipe tower filament joins the tool ordering even when unused (Print::extruders), so + // validation counts it. An explicit count is the plate's painted filaments, which never do. + const ConfigOption *wipe_tower_filament_opt = config.option("wipe_tower_filament"); + const int wipe_tower_filament = wipe_tower_filament_opt != nullptr ? wipe_tower_filament_opt->getInt() : 0; + if (plate_extruder_size > 1 && wipe_tower_filament > 0) { + if (plate_extruders.empty()) + plate_extruders = get_extruders(true, config, config); + if (std::find(plate_extruders.begin(), plate_extruders.end(), wipe_tower_filament) == plate_extruders.end()) + ++plate_extruder_size; } if (plate_extruder_size == 0) - return wipe_tower_size; + return WipeTowerFootprint(); - for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!use_global_objects && !contain_instance_totally(obj_idx, 0)) + // Tallest object on this plate and the thinnest layer it is sliced at, resolved per object + // as PrintObject resolves them (override, else preset) and over this plate's objects only - + // seeding from the global value, or folding in an off-plate override, diverges from Print. + const ConfigOption *layer_height_opt = config.option("layer_height"); + const double global_layer_height = layer_height_opt != nullptr ? layer_height_opt->getFloat() : 0.08; + const ConfigOption *raft_layers_opt = config.option("raft_layers"); + const int global_raft_layers = raft_layers_opt != nullptr ? raft_layers_opt->getInt() : 0; + double max_height = 0.; + double layer_height = std::numeric_limits::max(); + bool any_raft = false; + for (int obj_idx = 0; obj_idx < int(m_model->objects.size()); ++obj_idx) { + const ModelObject *object = m_model->objects[obj_idx]; + if (!use_global_objects && !contain_any_instance_totally(obj_idx)) continue; - - BoundingBoxf3 bbox = m_model->objects[obj_idx]->bounding_box_exact(); - max_height = std::max(bbox.size().z(), max_height); - } - wipe_tower_size(2) = max_height; - //const DynamicPrintConfig &dconfig = wxGetApp().preset_bundle->prints.get_edited_preset().config; - auto timelapse_type = config.option>("timelapse_type"); - bool need_wipe_tower = (timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false) | enable_wrapping_detection; - double extra_spacing = config.option("prime_tower_infill_gap")->getFloat() / 100.; - const ConfigOptionEnum* use_rib_wall_opt = config.option>("wipe_tower_wall_type"); - bool use_rib_wall = use_rib_wall_opt ? use_rib_wall_opt->value == WipeTowerWallType::wtwRib: false; - double rib_width = config.option("wipe_tower_rib_width")->getFloat(); - double depth; - double filament_change_volume=0.; - { - std::vector filament_change_lengths; - auto filament_change_lengths_opt = m_print->config().option("filament_change_length"); - if (filament_change_lengths_opt) filament_change_lengths = filament_change_lengths_opt->values; - double length = filament_change_lengths.empty() ? 0 : *std::max_element(filament_change_lengths.begin(), filament_change_lengths.end()); - double diameter = 1.75; - std::vector diameters; - auto filament_diameter_opt = m_print->config().option("filament_diameter"); - if (filament_diameter_opt) diameters = filament_diameter_opt->values; - diameter = diameters.empty() ? diameter : *std::max_element(diameters.begin(), diameters.end()); - filament_change_volume = length * PI * diameter * diameter / 4.; - } - double volume = wipe_volume * (extruder_count == 2 ? plate_extruder_size : (plate_extruder_size - 1)); - if (extruder_count == 2) volume += filament_change_volume * (int) (plate_extruder_size / 2); - // Read from the passed plate config — m_print may not have been applied yet - // (fresh plates, CLI), in which case its PrintConfig still holds defaults. - const auto *purge_opt = config.option("purge_in_prime_tower"); - const auto *semm_opt = config.option("single_extruder_multi_material"); - const bool semm_flush = purge_opt && purge_opt->value && semm_opt && semm_opt->value; - if (semm_flush) volume = WipeTower2::estimate_semm_flush_volume(config, plate_extruder_size); - if (use_rib_wall) { - depth = std::sqrt(volume / layer_height * extra_spacing); - if (need_wipe_tower || plate_extruder_size > 1) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - double volume_depth = depth; - depth = std::max((double) min_wipe_tower_depth, depth); - rib_width = std::min(rib_width, depth / 2); - depth = rib_width / std::sqrt(2) + std::max(depth + m_print->config().wipe_tower_extra_rib_length.value, volume_depth); - wipe_tower_size(0) = wipe_tower_size(1) = depth; + // Per instance, to match PrintObject::size(); the union over instances differs once + // they are rotated apart. + for (int inst_idx = 0; inst_idx < int(object->instances.size()); ++inst_idx) { + if (!use_global_objects && !contain_instance_totally(obj_idx, inst_idx)) + continue; + max_height = std::max(max_height, object->instance_bounding_box(inst_idx, true).size().z()); } + const ConfigOption *object_layer_height = object->config.option("layer_height"); + layer_height = std::min(layer_height, object_layer_height != nullptr ? object_layer_height->getFloat() : global_layer_height); + const ConfigOption *object_raft_layers = object->config.option("raft_layers"); + any_raft = any_raft || (object_raft_layers != nullptr ? object_raft_layers->getInt() : global_raft_layers) > 0; } - else { - depth = volume / (layer_height * w); - // The flush volumes already hold the spacing between wipes. - if (!semm_flush) depth *= extra_spacing; - if (need_wipe_tower || depth > EPSILON) { - float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height); - depth = std::max((double)min_wipe_tower_depth, depth); - } - wipe_tower_size(0) = w; - wipe_tower_size(1) = depth; - } + if (layer_height == std::numeric_limits::max()) + layer_height = global_layer_height; - return wipe_tower_size; + return Slic3r::estimate_wipe_tower_footprint(config, size_t(plate_extruder_size), layer_height, max_height, any_raft); } -arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int extruder_count, int plate_extruder_size, bool use_global_objects) const +Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig &config, int plate_extruder_size, bool use_global_objects) const +{ + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(config, plate_extruder_size, use_global_objects); + return Vec3d(footprint.width, footprint.depth, footprint.height); +} + +arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size, bool use_global_objects) const { float x = dynamic_cast(config.option("wipe_tower_x"))->get_at(plate_index); float y = dynamic_cast(config.option("wipe_tower_y"))->get_at(plate_index); - float w = dynamic_cast(config.option("prime_tower_width"))->value; //float a = dynamic_cast(config.option("wipe_tower_rotation_angle"))->value; - float v = dynamic_cast(config.option("prime_volume"))->value; - float tower_brim_width = dynamic_cast(config.option("prime_tower_brim_width"))->value; - const ConfigOptionBool * wrapping_opt = dynamic_cast(config.option("enable_wrapping_detection")); - bool enable_wrapping = (wrapping_opt != nullptr) && wrapping_opt->value; - wt_size = estimate_wipe_tower_size(config, w, v, extruder_count, plate_extruder_size, use_global_objects, enable_wrapping); + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(config, plate_extruder_size, use_global_objects); + wt_size = Vec3d(footprint.width, footprint.depth, footprint.height); int plate_width=m_width, plate_depth=m_depth; - w = wt_size(0); // effective width; differs from prime_tower_width when the rib wall squares the tower + float w = wt_size(0); // effective width; differs from prime_tower_width when the rib wall squares the tower float depth = wt_size(1); - float margin = WIPE_TOWER_MARGIN + tower_brim_width, wp_brim_width = 0.f; - const ConfigOption* wipe_tower_brim_width_opt = config.option("prime_tower_brim_width"); - if (wipe_tower_brim_width_opt) { - wp_brim_width = wipe_tower_brim_width_opt->getFloat(); - if (wp_brim_width < 0) wp_brim_width = WipeTower::get_auto_brim_by_height((float) wt_size.z()); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; - } + // Resolved brim, not the raw option: "Auto" (-1) would yield a margin of 0 and let the + // clamp put the brim off the bed. Matches set_default_wipe_tower_pos_for_plate. + const float wp_brim_width = float(footprint.brim_width); + const float margin = WIPE_TOWER_MARGIN + wp_brim_width; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; - x = std::clamp(x, margin, (float)plate_width - w - margin - wp_brim_width); - y = std::clamp(y, margin, (float)plate_depth - depth - margin - wp_brim_width); + // A tower too deep for the plate leaves no valid position: clamping with hi < lo is UB and + // in release silently returns the negative hi. + x = std::clamp(x, margin, std::max(margin, (float)plate_width - w - margin)); + y = std::clamp(y, margin, std::max(margin, (float)plate_depth - depth - margin)); wt_pos(0) = x; wt_pos(1) = y; wt_pos(2) = 0.f; @@ -2755,6 +2737,20 @@ bool PartPlate::contain_instance_totally(int obj_id, int instance_id) const return result; } +//judge whether any of the object's instances is totally included in plate or not +bool PartPlate::contain_any_instance_totally(int obj_id) const +{ + if (obj_id < 0 || obj_id >= int(m_model->objects.size())) + return false; + + const ModelObject *object = m_model->objects[obj_id]; + for (int instance_id = 0; instance_id < int(object->instances.size()); ++instance_id) + if (contain_instance_totally(obj_id, instance_id)) + return true; + + return false; +} + //check whether instance is outside the plate or not bool PartPlate::check_outside(int obj_id, int instance_id, BoundingBoxf3* bounding_box) { @@ -4488,26 +4484,16 @@ void PartPlateList::set_default_wipe_tower_pos_for_plate(int plate_idx, bool ini f_volume_maps = wxGetApp().preset_bundle->get_default_nozzle_volume_types_for_filaments(filament_maps); } DynamicPrintConfig full_config = wxGetApp().preset_bundle->full_config(false, filament_maps, f_volume_maps); - float w = dynamic_cast(full_config.option("prime_tower_width"))->value; - float v = dynamic_cast(full_config.option("prime_volume"))->value; - bool enable_wrapping = false; - const ConfigOptionBool *wrapping_opt = dynamic_cast(full_config.option("enable_wrapping_detection")); - if (wrapping_opt) enable_wrapping = wrapping_opt->value; - int nozzle_nums = wxGetApp().preset_bundle->get_printer_extruder_count(); - Vec3d wipe_tower_size = part_plate->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, init_pos ? 2 : 0, false, enable_wrapping); + WipeTowerFootprint footprint = part_plate->estimate_wipe_tower_footprint(full_config, init_pos ? 2 : 0); - if (!init_pos && (is_approx(wipe_tower_size(0), 0.0) || is_approx(wipe_tower_size(1), 0.0))) { - wipe_tower_size = part_plate->estimate_wipe_tower_size(full_config, w, v, nozzle_nums, 2, false, enable_wrapping); + if (!init_pos && (is_approx(footprint.width, 0.0) || is_approx(footprint.depth, 0.0))) { + footprint = part_plate->estimate_wipe_tower_footprint(full_config, 2); } + Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); - // Compute brim-aware margin: brim extends outward from tower position - float brim_width = 0.f; - const ConfigOptionFloat *brim_opt = full_config.option("prime_tower_brim_width"); - if (brim_opt) { - brim_width = brim_opt->value; - if (brim_width < 0) brim_width = WipeTower::get_auto_brim_by_height((float) wipe_tower_size.z()); - } - const float margin = WIPE_TOWER_MARGIN + brim_width; + // Brim-aware margin: the brim extends outward from the tower position. + const float brim_width = float(footprint.brim_width); + const float margin = WIPE_TOWER_MARGIN + brim_width; // clamp wipe tower position within plate boundaries { diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 8ad2f4a7d1..1cd45f77fd 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -11,6 +11,7 @@ #include "libslic3r/GCode/GCodeProcessor.hpp" #include "libslic3r/Format/bbs_3mf.hpp" #include "libslic3r/Slicing.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/Arrange.hpp" #include "Plater.hpp" #include "libslic3r/Model.hpp" @@ -339,11 +340,14 @@ public: Vec3d get_origin() { return m_origin; } //Vec3d calculate_wipe_tower_size(const DynamicPrintConfig &config, const double w, const double wipe_volume, int plate_extruder_size = 0, bool use_global_objects = false) const; - Vec3d estimate_wipe_tower_size(const DynamicPrintConfig & config, const double w, const double wipe_volume, int extruder_count = 1, int plate_extruder_size = 0, bool use_global_objects = false, bool enable_wrapping_detection = false) const; - arrangement::ArrangePolygon estimate_wipe_tower_polygon(const DynamicPrintConfig & config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int extruder_count = 1, int plate_extruder_size = 0, bool use_global_objects = false) const; + // plate_extruder_size: filaments purged on the plate; 0 derives it from the plate's objects. + WipeTowerFootprint estimate_wipe_tower_footprint(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; + Vec3d estimate_wipe_tower_size(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; + arrangement::ArrangePolygon estimate_wipe_tower_polygon(const DynamicPrintConfig & config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size = 0, bool use_global_objects = false) const; bool check_objects_empty_and_gcode3mf(std::vector &result) const; // get used filaments from config, 1 based idx std::vector get_extruders(bool conside_custom_gcode = false) const; + std::vector get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const; std::vector get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config) const; std::vector get_extruders_without_support(bool conside_custom_gcode = false) const; // get used filaments from gcode result, 1 based idx @@ -366,6 +370,8 @@ public: bool contain_instance_totally(ModelObject* object, int instance_id) const; //judge whether instance is totally included in plate or not bool contain_instance_totally(int obj_id, int instance_id) const; + //judge whether any of the object's instances is totally included in plate or not + bool contain_any_instance_totally(int obj_id) const; //judge whether the plate's origin is at the left of instance or not bool is_left_top_of(int obj_id, int instance_id); diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index 2bd7ac4189..d5f56d3f6c 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -182,3 +182,86 @@ TEST_CASE("The wipe tower's toolchange planner flush follows the gcode flavor", CHECK_THAT(tower, !Catch::Matchers::ContainsSubstring(unexpected)); } } + +// What Print feeds the shared estimate. The libslic3r WipeTowerEstimate cases cannot see this: +// they call the estimator directly. +static DynamicPrintConfig tower_estimate_config(const char *wall_type) +{ + // 100 mm3 per purge on a 50 mm wide tower: one purge is 100/(layer_height * 50) of depth. + return multifilament_config(2, { + { "enable_prime_tower", "1" }, + { "wipe_tower_wall_type", wall_type }, + { "prime_tower_width", "50" }, + { "prime_volume", "100" }, + { "prime_tower_infill_gap", "100%" }, + { "prime_tower_brim_width", "3" }, + { "purge_in_prime_tower", "0" }, + { "single_extruder_multi_material", "0" }, + { "timelapse_type", "0" }, + { "layer_height", "0.2" }, + { "raft_layers", "0" } }); +} + +TEST_CASE("The tower is sized for the thinnest layer any object on the plate is sliced at", "[WipeTower]") +{ + // The tower has to survive its thinnest layer, so an override finer than the preset drives + // the estimate even on the second object. Two 20 mm cubes, the second at 0.1 mm. + const DynamicPrintConfig config = tower_estimate_config("rectangle"); + const std::vector> overrides = { + {}, { { "layer_height", "0.1" } } }; + + Print print; + Model model; + init_print({ cube(20), cube(20) }, print, model, config, &overrides); + + // One purge at 0.1 mm: 100 / (0.1 * 50) = 20 mm, above the 20 mm-tall tower's stability + // floor. At the preset's 0.2 mm it would be half that, so the two are easy to tell apart. + const float floor_20mm = WipeTower::get_limit_depth_by_height(20.f); + REQUIRE(floor_20mm < 10.f); + CHECK_THAT(print.wipe_tower_data(2).depth, Catch::Matchers::WithinAbs(20., 1e-4)); +} + +TEST_CASE("Validation is given the tower's effective width, not the configured one", "[WipeTower]") +{ + // A rib wall squares the tower, so its width is its depth. Validation reads this rather + // than re-deriving the rule from the wall type. + Print print; + Model model; + + SECTION("a rectangle wall keeps the configured width") { + const DynamicPrintConfig config = tower_estimate_config("rectangle"); + init_print({ cube(20) }, print, model, config); + const WipeTowerData &data = print.wipe_tower_data(2); + CHECK_THAT(data.width, Catch::Matchers::WithinAbs(50., 1e-4)); + CHECK(data.depth < data.width); + } + + SECTION("a rib wall reports the squared footprint") { + const DynamicPrintConfig config = tower_estimate_config("rib"); + init_print({ cube(20) }, print, model, config); + const WipeTowerData &data = print.wipe_tower_data(2); + CHECK_THAT(data.width, Catch::Matchers::WithinAbs(data.depth, 1e-4)); + CHECK(data.width > 0.f); + } +} + +TEST_CASE("A single-filament plate reserves a tower only when one is actually printed", "[WipeTower]") +{ + // Reporting no tower for one that is built collapses the validation hull to a point, so + // the config-visible reasons for a single-filament tower have to be honoured. + Print print; + Model model; + + SECTION("no tool change and nothing else that prints one") { + const DynamicPrintConfig config = tower_estimate_config("rib"); + init_print({ cube(20) }, print, model, config); + CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); + } + + SECTION("a raft puts the tower on every layer below the object") { + DynamicPrintConfig config = tower_estimate_config("rib"); + config.set_deserialize_strict({ { "raft_layers", "3" } }); + init_print({ cube(20) }, print, model, config); + CHECK(print.wipe_tower_data(1).depth > 0.f); + } +} diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 0d29ea11ae..dc8508743e 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -40,6 +40,7 @@ add_executable(${_TEST_NAME}_tests test_utils.cpp test_timeutils.cpp test_voronoi.cpp + test_wipe_tower_estimate.cpp test_optimizers.cpp test_ordering_strategies.cpp # test_png_io.cpp diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp new file mode 100644 index 0000000000..753d872f29 --- /dev/null +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -0,0 +1,206 @@ +#include + +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "libslic3r/PrintConfig.hpp" + +#include +#include + +using namespace Slic3r; +using Catch::Matchers::WithinAbs; + +// Rectangle wall, one nozzle, 100 mm3 prime volume on a 50 mm wide tower at 0.2 mm layers: one +// purge is 10 mm of depth. The flush matrix is off here; the shipped-default case covers it. +// Built as PresetBundle::full_config builds the GUI's: apply() creates each enum as a +// ConfigOptionEnumGeneric, where full_print_config() would clone the static defaults' +// ConfigOptionEnum. The estimate has to read either. +static DynamicPrintConfig preset_shaped_defaults() +{ + DynamicPrintConfig config; + config.apply(FullPrintConfig::defaults()); + return config; +} + +static DynamicPrintConfig make_config(const char *wall_type = "rectangle") +{ + DynamicPrintConfig config = preset_shaped_defaults(); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(50.)); + config.set_key_value("prime_volume", new ConfigOptionFloat(100.)); + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(100.)); + config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(3.)); + config.set_deserialize_strict("wipe_tower_wall_type", wall_type); + config.set_key_value("wipe_tower_rib_width", new ConfigOptionFloat(8.)); + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4})); + config.set_deserialize_strict("timelapse_type", "0"); + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); + config.set_key_value("raft_layers", new ConfigOptionInt(0)); + config.set_key_value("purge_in_prime_tower", new ConfigOptionBool(false)); + config.set_key_value("single_extruder_multi_material", new ConfigOptionBool(false)); + return config; +} + +TEST_CASE("A rectangle wall tower is sized by the purge volume", "[WipeTowerEstimate]") { + const DynamicPrintConfig config = make_config(); + // Three filaments purge twice per layer; a 5 mm object keeps the stability floor at 5 mm. + const WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5., false); + CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); + CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); + CHECK_THAT(fp.height, WithinAbs(5., 1e-9)); + CHECK_THAT(fp.brim_width, WithinAbs(3., 1e-9)); + // Thinner layers need more depth for the same volume. + CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.1, 5., false).depth, WithinAbs(40., 1e-9)); + // The infill gap spaces the purge lines. + DynamicPrintConfig spaced = config; + spaced.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); + CHECK_THAT(estimate_wipe_tower_footprint(spaced, 3, 0.2, 5., false).depth, WithinAbs(30., 1e-9)); +} + +TEST_CASE("Object height sets the stability floor and the auto brim", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + // Two filaments purge once: 10 mm, lifted to the 20 mm floor of a 100 mm tower. + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); + config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(-1.)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 50., false).brim_width, WithinAbs(WipeTower::get_auto_brim_by_height(50.f), 1e-6)); +} + +TEST_CASE("A single filament only gets a tower when one is printed anyway", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 0, 0.2, 100., false).width, WithinAbs(0., 1e-9)); + + // Wrapping detection prints a tower on the first layers whatever the filament count. + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(true)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); + config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); + + // So does a raft. raft_layers is a per-object key, so it arrives as a resolved flag and + // is deliberately not read off the config. + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., true).depth, WithinAbs(20., 1e-9)); + config.set_key_value("raft_layers", new ConfigOptionInt(3)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(0., 1e-9)); + config.set_key_value("raft_layers", new ConfigOptionInt(0)); + + config.set_deserialize_strict("timelapse_type", "1"); + // Smooth timelapse primes the single filament once: 10 mm, lifted to the floor. + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 5., false).depth, WithinAbs(10., 1e-9)); +} + +TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowerEstimate]") { + // A wall type may only change the shape of the tower, never whether one is reserved: + // reporting no tower for one that is built collapses the validation hull to a point. + const double height = GENERATE(5., 100.); + DynamicPrintConfig rect = make_config(); + DynamicPrintConfig rib = make_config("rib"); + + // No tool change and nothing else that prints a tower - neither wall type reserves one. + CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + + // Not even on a dual-nozzle printer, where a lone filament still needs no purge. + rect.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + rib.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + + // With a tool change both reserve one, and both respect the stability floor. + CHECK(estimate_wipe_tower_footprint(rect, 2, 0.2, height, false).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate_wipe_tower_footprint(rib, 2, 0.2, height, false).depth >= WipeTower::get_limit_depth_by_height(float(height))); +} + +TEST_CASE("A rib wall squares the tower and caps the rib width", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config("rib"); + // sqrt(200 / 0.2) = 31.62 mm square, plus the 8 mm rib bulge along the diagonal. + const double body = std::sqrt(1000.); + WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5., false); + CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + body, 1e-9)); + CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); + // The extra rib length grows the footprint. + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(4.)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.2, 5., false).depth, WithinAbs(8. / std::sqrt(2.) + body + 4., 1e-9)); + // A tiny tower caps the rib width at half its depth: 5 mm body, 2.5 mm rib. + config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); + config.set_key_value("prime_volume", new ConfigOptionFloat(5.)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-9)); +} + +TEST_CASE("Every wall and tower type is read the same from a preset and a static config", "[WipeTowerEstimate]") { + // The GUI, arrange and the CLI pass a DynamicPrintConfig whose enums are + // ConfigOptionEnumGeneric; Print passes a static config whose enums are ConfigOptionEnum. + // The wall type is read by value, so both give the same shape, and the wipe tower + // implementation is not an input to the footprint at all. + const char *wall_type = GENERATE("rectangle", "cone", "rib"); + const char *tower_type = GENERATE("type1", "type2"); + DynamicPrintConfig preset = make_config(wall_type); + preset.set_deserialize_strict("wipe_tower_type", tower_type); + REQUIRE(dynamic_cast(preset.option("wipe_tower_wall_type")) != nullptr); + + FullPrintConfig static_config; + static_config.apply(preset, true); + REQUIRE(static_config.wipe_tower_wall_type.serialize() == wall_type); + REQUIRE(static_config.wipe_tower_type.serialize() == tower_type); + + // Three filaments purge twice per layer on a 5 mm object: a 50 x 20 rectangle, or a square. + const WipeTowerFootprint fp = estimate_wipe_tower_footprint(preset, 3, 0.2, 5., false); + if (std::string(wall_type) == "rib") { + CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); + CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + std::sqrt(1000.), 1e-9)); + } else { + CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); + CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); + } + + const WipeTowerFootprint from_static = estimate_wipe_tower_footprint(static_config, 3, 0.2, 5., false); + CHECK_THAT(from_static.width, WithinAbs(fp.width, 1e-9)); + CHECK_THAT(from_static.depth, WithinAbs(fp.depth, 1e-9)); + CHECK_THAT(from_static.brim_width, WithinAbs(fp.brim_width, 1e-9)); + + // Smooth timelapse is the other enum the estimate reads: a lone filament gets a tower + // through both storages too. + preset.set_deserialize_strict("timelapse_type", "1"); + static_config.apply(preset, true); + CHECK(estimate_wipe_tower_footprint(preset, 1, 0.2, 5., false).depth > 0.); + CHECK(estimate_wipe_tower_footprint(static_config, 1, 0.2, 5., false).depth > 0.); +} + +TEST_CASE("A dual nozzle purges every filament plus the filament change", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + config.set_key_value("filament_change_length", new ConfigOptionFloats({10., 10.})); + config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); + // Two purges of 100 mm3 plus one 10 mm filament change: (200 + 10 * pi * 1.75^2 / 4) / (0.2 * 50). + const double change_volume = 10. * PI * 1.75 * 1.75 / 4.; + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); +} + +TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTowerEstimate]") { + // Both keys default to true, so the shipped configuration purges the flush volumes rather + // than the prime volume, with no infill gap on top - the flush volumes already hold it. + DynamicPrintConfig config = preset_shaped_defaults(); + REQUIRE(config.opt_bool("purge_in_prime_tower")); + REQUIRE(config.opt_bool("single_extruder_multi_material")); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(50.)); + config.set_deserialize_strict("wipe_tower_wall_type", "rectangle"); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4})); + + const double flush_volume = WipeTower2::estimate_semm_flush_volume(config, 2); + const double expected = std::max(double(WipeTower::get_limit_depth_by_height(5.f)), flush_volume / (0.2 * 50.)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs(expected, 1e-6)); +} + +TEST_CASE("A config missing a tower key falls back to that key's default", "[WipeTowerEstimate]") { + // The signature takes any ConfigBase: an absent key must read as its declared default. + const DynamicPrintConfig full = make_config(); + DynamicPrintConfig partial = full; + partial.erase("prime_tower_infill_gap"); + REQUIRE(partial.option("prime_tower_infill_gap") == nullptr); + + DynamicPrintConfig defaulted = full; + defaulted.set_key_value("prime_tower_infill_gap", + print_config_def.get("prime_tower_infill_gap")->default_value->clone()); + CHECK_THAT(estimate_wipe_tower_footprint(partial, 3, 0.2, 5., false).depth, + WithinAbs(estimate_wipe_tower_footprint(defaulted, 3, 0.2, 5., false).depth, 1e-9)); +} From e1efec7d6ce537c2408fd6ada5aefac7a909a685 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Tue, 8 Sep 2026 14:43:23 +0800 Subject: [PATCH 064/162] Fix review findings in the shared wipe tower estimate A raft is not a reason to reserve a tower. Print::apply runs normalize_fdm_2, which clears enable_prime_tower for a plate that purges one filament unless smooth timelapse or wrapping detection is on, so a single-filament plate with a raft prints no tower at all and the estimate was reserving bed area for one. Drop the input; need_wipe_tower is now exactly the two exceptions normalize_fdm_2 honours, named there so the next reason added has to be checked against it. The GUI preview and the validation containment check each re-derived "is a tower printed here" from the filament count instead of reading the estimate, so both missed the towers printed with no tool change to purge for. They now take the answer from the footprint, which is the drift this shared estimate exists to remove. A tower that is not printed estimates to zero, so its hull is degenerate and every check on it passes trivially - the containment check needs no gate of its own. WipeTowerData::width was written only by the pre-generation estimate and left at zero for the whole post-generation life of the Print, while its neighbour depth held the real value. Set it from the generator in both branches. The plate's height scan transformed every model part's full mesh per instance on each scene reload, discarding all but the z extent. The cached convex hull has the same z extent. A plate loaded from a sliced .gcode.3mf holds no objects and its filaments live in slice_filaments_info; the config-taking get_extruders overload returned an empty list for it, which sized the tower for a placeholder two filaments. It now answers the way the wx overload does, without reaching the plater. Also drop estimate_wipe_tower_size, which has no callers. --- src/libslic3r/GCode/WipeTowerEstimate.cpp | 11 +-- src/libslic3r/GCode/WipeTowerEstimate.hpp | 8 +-- src/libslic3r/Print.cpp | 29 ++++---- src/libslic3r/Print.hpp | 4 +- src/slic3r/GUI/GLCanvas3D.cpp | 4 +- src/slic3r/GUI/PartPlate.cpp | 27 ++++--- src/slic3r/GUI/PartPlate.hpp | 5 +- tests/fff_print/test_wipe_tower.cpp | 67 ++++++++++++++++- tests/libslic3r/test_wipe_tower_estimate.cpp | 75 ++++++++++++-------- 9 files changed, 154 insertions(+), 76 deletions(-) diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp index 9e9bb7de4b..a8aeda28ef 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.cpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -11,7 +11,7 @@ namespace Slic3r { -WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height, bool any_raft) +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height) { WipeTowerFootprint footprint; footprint.height = max_object_height; @@ -56,8 +56,9 @@ WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_ const bool dual_nozzle = nozzle_opt != nullptr && nozzle_opt->values.size() == 2; const bool rib_wall = opt_enum("wipe_tower_wall_type", int(WipeTowerWallType::wtwRectangle)) == int(WipeTowerWallType::wtwRib); const bool smooth_timelapse = opt_enum("timelapse_type", int(TimelapseType::tlTraditional)) == int(TimelapseType::tlSmooth); - // Reasons a tower is printed with no tool change to purge for. - const bool need_wipe_tower = smooth_timelapse || opt_bool("enable_wrapping_detection") || any_raft; + // Reasons a tower is printed with no tool change to purge for: the ones that stop + // normalize_fdm_2 clearing enable_prime_tower. Its mixed-filament case is not modelled. + const bool need_wipe_tower = smooth_timelapse || opt_bool("enable_wrapping_detection"); // No tool change, nothing to purge; smooth timelapse still primes once. size_t purge_count = 0; @@ -80,7 +81,9 @@ WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_ // Both wall types decide this together: over-reserving only wastes bed area, but // reporting no tower for one that is built collapses the validation hull to a point. - if (volume < EPSILON && !need_wipe_tower) + // A tool change is a reason on its own: the generator floors the tower whatever the + // purge volumes resolve to. + if (volume < EPSILON && filaments_cnt < 2 && !need_wipe_tower) return footprint; const double min_depth = WipeTower::get_limit_depth_by_height(float(max_object_height)); diff --git a/src/libslic3r/GCode/WipeTowerEstimate.hpp b/src/libslic3r/GCode/WipeTowerEstimate.hpp index 911ca9560c..fe5c0b519c 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.hpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.hpp @@ -21,9 +21,9 @@ struct WipeTowerFootprint // changes, so a count derived from the model must include them // (Print::extruders(true)) or a real tower is sized as if it were never built. // layer_height: thinnest layer the tower will be planned at. -// any_raft: any object on the plate prints a raft, which puts the tower on every layer -// below it. Caller-resolved: raft_layers is a PrintObjectConfig key, absent -// from Print's config and overridable per object. -WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height, bool any_raft); +// +// A raft is deliberately not a reason: normalize_fdm_2 clears enable_prime_tower for a plate +// purging one filament unless smooth timelapse or wrapping detection is on. +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height); } // namespace Slic3r diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 7d362537ea..39410a8cef 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1081,22 +1081,21 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, if (print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, convex_hulls_temp).empty()) { return {L("Prime Tower") + L(" is too close to clumping detection area, and collisions will be caused.\n")}; } - // Skip the containment check for towers that will never be printed (single-filament - // prints without smooth timelapse keep the config's tower position but emit nothing). + // No gate on "is there a tower": one that is not printed estimates to zero, so the hull + // is degenerate and every check passes. Re-deriving it here missed the wrapping-detection + // tower on a single-filament plate. // Pre-generation only the body square is tested — the auto-brim estimate can overshoot // the generated brim by several mm and must not hard-fail a print that physically fits. // Post-generation the mesh bottom already includes the real brim, so the exact // footprint is tested. - if (filaments_count > 1 || print.enable_timelapse_print()) { - // The shared printable polygon is plate-local, while the tower polygons above are - // already shifted by the plate origin. - Polygons printable_polys = print.get_extruder_shared_printable_polygon(); - const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); - for (Polygon &p : printable_polys) - p.translate(plate_shift); - if (!diff(convex_hulls_temp, printable_polys).empty()) - return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; - } + // The shared printable polygon is plate-local, while the tower polygons above are + // already shifted by the plate origin. + Polygons printable_polys = print.get_extruder_shared_printable_polygon(); + const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); + for (Polygon &p : printable_polys) + p.translate(plate_shift); + if (!diff(convex_hulls_temp, printable_polys).empty()) + return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; return {}; } @@ -4005,16 +4004,14 @@ const WipeTowerData &Print::wipe_tower_data(size_t filaments_cnt) const double max_height = 0.; double layer_height = std::numeric_limits::max(); - bool any_raft = false; for (const PrintObject *object : m_objects) { max_height = std::max(max_height, unscale_(double(object->size().z()))); layer_height = std::min(layer_height, object->config().layer_height.value); - any_raft = any_raft || object->config().raft_layers.value > 0; } if (max_height < EPSILON) return m_wipe_tower_data; - const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, filaments_cnt, layer_height, max_height, any_raft); + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, filaments_cnt, layer_height, max_height); WipeTowerData &data = const_cast(this)->m_wipe_tower_data; data.depth = float(footprint.depth); data.width = float(footprint.width); @@ -4244,6 +4241,7 @@ void Print::_make_wipe_tower() m_wipe_tower_data.tool_changes.reserve(m_wipe_tower_data.tool_ordering.layer_tools().size()); wipe_tower.generate_new(m_wipe_tower_data.tool_changes); m_wipe_tower_data.depth = wipe_tower.get_depth(); + m_wipe_tower_data.width = wipe_tower.width(); m_wipe_tower_data.brim_width = wipe_tower.get_brim_width(); m_wipe_tower_data.bbx = wipe_tower.get_bbx(); m_wipe_tower_data.rib_offset = wipe_tower.get_rib_offset(); @@ -4357,6 +4355,7 @@ void Print::_make_wipe_tower() m_wipe_tower_data.tool_changes.reserve(m_wipe_tower_data.tool_ordering.layer_tools().size()); wipe_tower.generate(m_wipe_tower_data.tool_changes); m_wipe_tower_data.depth = wipe_tower.get_depth(); + m_wipe_tower_data.width = wipe_tower.width(); m_wipe_tower_data.z_and_depth_pairs = wipe_tower.get_z_and_depth_pairs(); m_wipe_tower_data.brim_width = wipe_tower.get_brim_width(); m_wipe_tower_data.height = wipe_tower.get_wipe_tower_height(); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 964deb7a60..af1dc3af40 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -782,8 +782,8 @@ struct WipeTowerData // Depth of the wipe tower to pass to GLCanvas3D for exact bounding box: float depth; - // Effective width (a rib wall squares the tower). Pre-generation estimate only; once the - // tower exists its mesh is exact. + // Effective width (a rib wall squares the tower): the estimate until generation, then the + // generated width, so it never disagrees with depth. float width; std::vector> z_and_depth_pairs; float brim_width; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e1f47061c1..b0675360b8 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2895,12 +2895,14 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re Vec3d plate_origin = ppl.get_plate(plate_id)->get_origin(); const Print* current_print = part_plate->fff_print(); - if (!need_wipe_tower && part_plate->get_extruders(true).size() < 2) continue; if (part_plate->get_objects_on_this_plate().empty()) continue; // Body and brim from this plate's own estimate: m_process->fff_print() is the // selected plate's, so an auto brim drew every tower with that plate's brim. const WipeTowerFootprint footprint = part_plate->estimate_wipe_tower_footprint(full_config); + // The estimate is also the answer to whether this plate prints a tower; + // deciding it here as well only gave the two room to drift. + if (footprint.depth <= 0.) continue; float brim_width = float(footprint.brim_width); Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 3f56e9a8de..09b8ff3068 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -1541,6 +1542,14 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const std::vector PartPlate::get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const { std::vector plate_extruders; + // A plate from a sliced .gcode.3mf holds no objects, so report the filaments the G-code + // used. check_objects_empty_and_gcode3mf does this for get_extruders(bool), but reaches + // the plater, which the CLI has none of; slice_filaments_info is only filled for such a plate. + if (m_model->objects.empty()) { + for (const FilamentInfo &info : slice_filaments_info) + plate_extruders.push_back(info.id + 1); + return plate_extruders; + } int glb_support_intf_extr = glb_config.opt_int("support_interface_filament"); int glb_support_extr = glb_config.opt_int("support_filament"); int glb_outer_wall_extr = glb_config.opt_int("outer_wall_filament_id"); @@ -2347,37 +2356,27 @@ WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintCo // seeding from the global value, or folding in an off-plate override, diverges from Print. const ConfigOption *layer_height_opt = config.option("layer_height"); const double global_layer_height = layer_height_opt != nullptr ? layer_height_opt->getFloat() : 0.08; - const ConfigOption *raft_layers_opt = config.option("raft_layers"); - const int global_raft_layers = raft_layers_opt != nullptr ? raft_layers_opt->getInt() : 0; double max_height = 0.; double layer_height = std::numeric_limits::max(); - bool any_raft = false; for (int obj_idx = 0; obj_idx < int(m_model->objects.size()); ++obj_idx) { const ModelObject *object = m_model->objects[obj_idx]; if (!use_global_objects && !contain_any_instance_totally(obj_idx)) continue; // Per instance, to match PrintObject::size(); the union over instances differs once - // they are rotated apart. + // they are rotated apart. The cached convex hull has the mesh's z extent and is cheap + // enough for every scene reload. for (int inst_idx = 0; inst_idx < int(object->instances.size()); ++inst_idx) { if (!use_global_objects && !contain_instance_totally(obj_idx, inst_idx)) continue; - max_height = std::max(max_height, object->instance_bounding_box(inst_idx, true).size().z()); + max_height = std::max(max_height, object->instance_convex_hull_bounding_box(inst_idx, true).size().z()); } const ConfigOption *object_layer_height = object->config.option("layer_height"); layer_height = std::min(layer_height, object_layer_height != nullptr ? object_layer_height->getFloat() : global_layer_height); - const ConfigOption *object_raft_layers = object->config.option("raft_layers"); - any_raft = any_raft || (object_raft_layers != nullptr ? object_raft_layers->getInt() : global_raft_layers) > 0; } if (layer_height == std::numeric_limits::max()) layer_height = global_layer_height; - return Slic3r::estimate_wipe_tower_footprint(config, size_t(plate_extruder_size), layer_height, max_height, any_raft); -} - -Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig &config, int plate_extruder_size, bool use_global_objects) const -{ - const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(config, plate_extruder_size, use_global_objects); - return Vec3d(footprint.width, footprint.depth, footprint.height); + return Slic3r::estimate_wipe_tower_footprint(config, size_t(plate_extruder_size), layer_height, max_height); } arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size, bool use_global_objects) const diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 1cd45f77fd..829d417e04 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -340,9 +340,10 @@ public: Vec3d get_origin() { return m_origin; } //Vec3d calculate_wipe_tower_size(const DynamicPrintConfig &config, const double w, const double wipe_volume, int plate_extruder_size = 0, bool use_global_objects = false) const; - // plate_extruder_size: filaments purged on the plate; 0 derives it from the plate's objects. + // plate_extruder_size: filaments purged on the plate; 0 derives them from its objects. + // use_global_objects skips the containment test, which the CLI needs before objects are + // assigned to plates - the layer height is then the project's thinnest, which over-reserves. WipeTowerFootprint estimate_wipe_tower_footprint(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; - Vec3d estimate_wipe_tower_size(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; arrangement::ArrangePolygon estimate_wipe_tower_polygon(const DynamicPrintConfig & config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size = 0, bool use_global_objects = false) const; bool check_objects_empty_and_gcode3mf(std::vector &result) const; // get used filaments from config, 1 based idx diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index d5f56d3f6c..9a6c5aa686 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -199,6 +199,7 @@ static DynamicPrintConfig tower_estimate_config(const char *wall_type) { "single_extruder_multi_material", "0" }, { "timelapse_type", "0" }, { "layer_height", "0.2" }, + { "enable_wrapping_detection", "0" }, { "raft_layers", "0" } }); } @@ -245,23 +246,83 @@ TEST_CASE("Validation is given the tower's effective width, not the configured o } } +TEST_CASE("Generating the tower keeps its reported width current", "[WipeTower]") +{ + // width is handed out after the slice, so leaving it at the estimate reports a zero-width + // tower to every post-generation consumer. + const DynamicPrintConfig config = wipe_tower_toolchange_config("marlin"); + Print print; + Model model; + init_print({ cube(10) }, print, model, config); + print.apply(model, config); + REQUIRE(print.wipe_tower_data(2).width > 0.f); + + print.process(); + REQUIRE(print.is_step_done(psWipeTower)); + const WipeTowerData &data = print.wipe_tower_data(); + // A width the generator never wrote reads as zero. A rib wall squares the tower, so the + // generated width is the body square: under the configured 50 mm, and inside the depth. + CHECK(data.width > 0.f); + CHECK(data.width < 50.f); + CHECK(data.width <= data.depth + EPSILON); +} + TEST_CASE("A single-filament plate reserves a tower only when one is actually printed", "[WipeTower]") { - // Reporting no tower for one that is built collapses the validation hull to a point, so - // the config-visible reasons for a single-filament tower have to be honoured. + // The estimate has to answer this the way Print::apply does: reporting no tower for one + // that is built collapses the validation hull to a point, and reporting one for a tower + // that is not built takes that bed area away from the arranger and draws a preview box + // over nothing. Print print; Model model; SECTION("no tool change and nothing else that prints one") { const DynamicPrintConfig config = tower_estimate_config("rib"); init_print({ cube(20) }, print, model, config); + REQUIRE_FALSE(print.has_wipe_tower()); CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); } - SECTION("a raft puts the tower on every layer below the object") { + // A raft puts the tower on every layer below the object, but only where there is a tower: + // Print::apply runs normalize_fdm_2, which clears enable_prime_tower for a plate that + // purges one filament and has neither smooth timelapse nor wrapping detection on. + SECTION("a raft alone does not print one") { DynamicPrintConfig config = tower_estimate_config("rib"); config.set_deserialize_strict({ { "raft_layers", "3" } }); init_print({ cube(20) }, print, model, config); + REQUIRE_FALSE(print.config().enable_prime_tower.value); + REQUIRE_FALSE(print.has_wipe_tower()); + CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); + } + + SECTION("smooth timelapse prints one, and keeps enable_prime_tower on") { + DynamicPrintConfig config = tower_estimate_config("rib"); + config.set_deserialize_strict({ { "timelapse_type", "1" } }); + init_print({ cube(20) }, print, model, config); + REQUIRE(print.has_wipe_tower()); CHECK(print.wipe_tower_data(1).depth > 0.f); } } + +TEST_CASE("A tower printed without a tool change is still validated against the bed", "[WipeTower]") +{ + // Wrapping detection prints a tower on a plate that purges one filament. Neither the old + // estimate (which read the wall type and smooth timelapse) nor the old containment gate (the + // filament count or smooth timelapse) knew about it, so between them that tower was never + // checked against the bed. + Print print; + Model model; + DynamicPrintConfig config = tower_estimate_config("rectangle"); + // Relative E without a per-layer G92 is rejected before the tower is ever looked at, and + // has_wipe_tower() wants a real exclusion polygon before it honours wrapping detection. + config.set_deserialize_strict({ { "enable_wrapping_detection", "1" }, + { "wrapping_exclude_area", "180x180,190x180,190x190,180x190" }, + { "wipe_tower_x", "500" }, { "wipe_tower_y", "500" }, + { "use_relative_e_distances", "0" } }); + + init_print({ cube(20) }, print, model, config); + REQUIRE(print.extruders(true).size() == 1); + REQUIRE(print.has_wipe_tower()); + CHECK(print.wipe_tower_data(1).depth > 0.f); + CHECK_THAT(print.validate().string, Catch::Matchers::ContainsSubstring("printable area")); +} diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp index 753d872f29..00235bb2ff 100644 --- a/tests/libslic3r/test_wipe_tower_estimate.cpp +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -45,48 +45,61 @@ static DynamicPrintConfig make_config(const char *wall_type = "rectangle") TEST_CASE("A rectangle wall tower is sized by the purge volume", "[WipeTowerEstimate]") { const DynamicPrintConfig config = make_config(); // Three filaments purge twice per layer; a 5 mm object keeps the stability floor at 5 mm. - const WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5., false); + const WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5.); CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); CHECK_THAT(fp.height, WithinAbs(5., 1e-9)); CHECK_THAT(fp.brim_width, WithinAbs(3., 1e-9)); // Thinner layers need more depth for the same volume. - CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.1, 5., false).depth, WithinAbs(40., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.1, 5.).depth, WithinAbs(40., 1e-9)); // The infill gap spaces the purge lines. DynamicPrintConfig spaced = config; spaced.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); - CHECK_THAT(estimate_wipe_tower_footprint(spaced, 3, 0.2, 5., false).depth, WithinAbs(30., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(spaced, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); } TEST_CASE("Object height sets the stability floor and the auto brim", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config(); // Two filaments purge once: 10 mm, lifted to the 20 mm floor of a 100 mm tower. - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 100.).depth, WithinAbs(20., 1e-9)); config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(-1.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 50., false).brim_width, WithinAbs(WipeTower::get_auto_brim_by_height(50.f), 1e-6)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 50.).brim_width, WithinAbs(WipeTower::get_auto_brim_by_height(50.f), 1e-6)); } TEST_CASE("A single filament only gets a tower when one is printed anyway", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config(); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 0, 0.2, 100., false).width, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 0, 0.2, 100.).width, WithinAbs(0., 1e-9)); // Wrapping detection prints a tower on the first layers whatever the filament count. config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(true)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); - // So does a raft. raft_layers is a per-object key, so it arrives as a resolved flag and - // is deliberately not read off the config. - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., true).depth, WithinAbs(20., 1e-9)); + // A raft is not one of them: normalize_fdm_2 clears enable_prime_tower for a plate that + // purges one filament unless smooth timelapse or wrapping detection is on, so a raft + // alone leaves no tower to reserve for. config.set_key_value("raft_layers", new ConfigOptionInt(3)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); config.set_key_value("raft_layers", new ConfigOptionInt(0)); config.set_deserialize_strict("timelapse_type", "1"); // Smooth timelapse primes the single filament once: 10 mm, lifted to the floor. - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100., false).depth, WithinAbs(20., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 5., false).depth, WithinAbs(10., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 5.).depth, WithinAbs(10., 1e-9)); +} + +TEST_CASE("A tool change reserves the stability floor even with nothing to purge", "[WipeTowerEstimate]") { + // The purge volumes are configurable down to zero, but the tool changes are still printed on + // the tower and the generator still floors it, so the estimate has to floor it too. + const double height = GENERATE(5., 100.); + const float floor = WipeTower::get_limit_depth_by_height(float(height)); + DynamicPrintConfig config = make_config(GENERATE("rectangle", "rib")); + config.set_key_value("prime_volume", new ConfigOptionFloat(0.)); + + CHECK(estimate_wipe_tower_footprint(config, 3, 0.2, height).depth >= floor); + // Still nothing for a lone filament with no other reason. + CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); } TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowerEstimate]") { @@ -97,34 +110,34 @@ TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowe DynamicPrintConfig rib = make_config("rib"); // No tool change and nothing else that prints a tower - neither wall type reserves one. - CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); // Not even on a dual-nozzle printer, where a lone filament still needs no purge. rect.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); rib.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); - CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height, false).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); // With a tool change both reserve one, and both respect the stability floor. - CHECK(estimate_wipe_tower_footprint(rect, 2, 0.2, height, false).depth >= WipeTower::get_limit_depth_by_height(float(height))); - CHECK(estimate_wipe_tower_footprint(rib, 2, 0.2, height, false).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate_wipe_tower_footprint(rect, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate_wipe_tower_footprint(rib, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); } TEST_CASE("A rib wall squares the tower and caps the rib width", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config("rib"); // sqrt(200 / 0.2) = 31.62 mm square, plus the 8 mm rib bulge along the diagonal. const double body = std::sqrt(1000.); - WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5., false); + WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5.); CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + body, 1e-9)); CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); // The extra rib length grows the footprint. config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(4.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.2, 5., false).depth, WithinAbs(8. / std::sqrt(2.) + body + 4., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.2, 5.).depth, WithinAbs(8. / std::sqrt(2.) + body + 4., 1e-9)); // A tiny tower caps the rib width at half its depth: 5 mm body, 2.5 mm rib. config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); config.set_key_value("prime_volume", new ConfigOptionFloat(5.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-9)); } TEST_CASE("Every wall and tower type is read the same from a preset and a static config", "[WipeTowerEstimate]") { @@ -144,7 +157,7 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static REQUIRE(static_config.wipe_tower_type.serialize() == tower_type); // Three filaments purge twice per layer on a 5 mm object: a 50 x 20 rectangle, or a square. - const WipeTowerFootprint fp = estimate_wipe_tower_footprint(preset, 3, 0.2, 5., false); + const WipeTowerFootprint fp = estimate_wipe_tower_footprint(preset, 3, 0.2, 5.); if (std::string(wall_type) == "rib") { CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + std::sqrt(1000.), 1e-9)); @@ -153,7 +166,7 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); } - const WipeTowerFootprint from_static = estimate_wipe_tower_footprint(static_config, 3, 0.2, 5., false); + const WipeTowerFootprint from_static = estimate_wipe_tower_footprint(static_config, 3, 0.2, 5.); CHECK_THAT(from_static.width, WithinAbs(fp.width, 1e-9)); CHECK_THAT(from_static.depth, WithinAbs(fp.depth, 1e-9)); CHECK_THAT(from_static.brim_width, WithinAbs(fp.brim_width, 1e-9)); @@ -162,8 +175,8 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static // through both storages too. preset.set_deserialize_strict("timelapse_type", "1"); static_config.apply(preset, true); - CHECK(estimate_wipe_tower_footprint(preset, 1, 0.2, 5., false).depth > 0.); - CHECK(estimate_wipe_tower_footprint(static_config, 1, 0.2, 5., false).depth > 0.); + CHECK(estimate_wipe_tower_footprint(preset, 1, 0.2, 5.).depth > 0.); + CHECK(estimate_wipe_tower_footprint(static_config, 1, 0.2, 5.).depth > 0.); } TEST_CASE("A dual nozzle purges every filament plus the filament change", "[WipeTowerEstimate]") { @@ -173,7 +186,7 @@ TEST_CASE("A dual nozzle purges every filament plus the filament change", "[Wipe config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); // Two purges of 100 mm3 plus one 10 mm filament change: (200 + 10 * pi * 1.75^2 / 4) / (0.2 * 50). const double change_volume = 10. * PI * 1.75 * 1.75 / 4.; - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); } TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTowerEstimate]") { @@ -188,7 +201,7 @@ TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTow const double flush_volume = WipeTower2::estimate_semm_flush_volume(config, 2); const double expected = std::max(double(WipeTower::get_limit_depth_by_height(5.f)), flush_volume / (0.2 * 50.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5., false).depth, WithinAbs(expected, 1e-6)); + CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs(expected, 1e-6)); } TEST_CASE("A config missing a tower key falls back to that key's default", "[WipeTowerEstimate]") { @@ -201,6 +214,6 @@ TEST_CASE("A config missing a tower key falls back to that key's default", "[Wip DynamicPrintConfig defaulted = full; defaulted.set_key_value("prime_tower_infill_gap", print_config_def.get("prime_tower_infill_gap")->default_value->clone()); - CHECK_THAT(estimate_wipe_tower_footprint(partial, 3, 0.2, 5., false).depth, - WithinAbs(estimate_wipe_tower_footprint(defaulted, 3, 0.2, 5., false).depth, 1e-9)); + CHECK_THAT(estimate_wipe_tower_footprint(partial, 3, 0.2, 5.).depth, + WithinAbs(estimate_wipe_tower_footprint(defaulted, 3, 0.2, 5.).depth, 1e-9)); } From 98acd687f7c4792f105083b9287d514b1c272726 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Tue, 1 Sep 2026 20:30:56 +0800 Subject: [PATCH 065/162] Fixes for Wipe Tower Position Clamping Validation grows the estimated body by the brim before the tower is generated, so a tower whose brim leaves the bed is rejected up front instead of at export. The scene reload re-clamps the stored position, since set_default_wipe_tower_pos_for_plate does not rerun when painting changes the filament count. The rectangle-wall footprint polygon gets its two missing brim corners (it was a skewed quad), so the post-generation check covers the whole brim. --- src/libslic3r/Print.cpp | 17 ++++++++--------- src/slic3r/GUI/GLCanvas3D.cpp | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 39410a8cef..b014b0f299 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1046,6 +1046,7 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, const WipeTowerData &wipe_tower_estimate = print.wipe_tower_data(filaments_count); float width = wipe_tower_estimate.width; float depth = wipe_tower_estimate.depth; + float brim_width = wipe_tower_estimate.brim_width; Polygons convex_hulls_temp; if (print.has_wipe_tower()) { @@ -1084,17 +1085,15 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, // No gate on "is there a tower": one that is not printed estimates to zero, so the hull // is degenerate and every check passes. Re-deriving it here missed the wrapping-detection // tower on a single-filament plate. - // Pre-generation only the body square is tested — the auto-brim estimate can overshoot - // the generated brim by several mm and must not hard-fail a print that physically fits. - // Post-generation the mesh bottom already includes the real brim, so the exact - // footprint is tested. - // The shared printable polygon is plate-local, while the tower polygons above are - // already shifted by the plate origin. + // Pre-generation, grow the body by the brim to match what the generator draws; + // post-generation the mesh already includes it. Polygons printable_polys = print.get_extruder_shared_printable_polygon(); const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); for (Polygon &p : printable_polys) p.translate(plate_shift); - if (!diff(convex_hulls_temp, printable_polys).empty()) + Polygons tower_polys_with_brim = print.is_step_done(psWipeTower) ? + convex_hulls_temp : offset(convex_hulls_temp, float(scale_(brim_width))); + if (!diff(tower_polys_with_brim, printable_polys).empty()) return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; return {}; } @@ -5961,8 +5960,8 @@ void WipeTowerData::construct_mesh(float width, float depth, float height, float wipe_tower_mesh_data->real_wipe_tower_mesh = make_cube(width, depth, height); wipe_tower_mesh_data->real_brim_mesh = make_cube(width + 2 * brim_width, depth + 2 * brim_width, first_layer_height); wipe_tower_mesh_data->real_brim_mesh.translate({-brim_width, -brim_width, 0}); - wipe_tower_mesh_data->bottom = {scaled(Vec2f{-brim_width, -brim_width}), scaled(Vec2f{width + brim_width, 0}), scaled(Vec2f{width + brim_width, depth + brim_width}), - scaled(Vec2f{0, depth})}; + wipe_tower_mesh_data->bottom = {scaled(Vec2f{-brim_width, -brim_width}), scaled(Vec2f{width + brim_width, -brim_width}), + scaled(Vec2f{width + brim_width, depth + brim_width}), scaled(Vec2f{-brim_width, depth + brim_width})}; } else { wipe_tower_mesh_data->real_wipe_tower_mesh = WipeTower::its_make_rib_tower(width, depth, height, rib_length, rib_width, fillet_wall); wipe_tower_mesh_data->bottom = WipeTower::rib_section(width, depth, rib_length, rib_width, fillet_wall); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index b0675360b8..5ad6151c68 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2906,8 +2906,20 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re float brim_width = float(footprint.brim_width); Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); - // The stored position is already clamped onto the bed, by - // set_default_wipe_tower_pos_for_plate and again on every drag. + // set_default_wipe_tower_pos_for_plate doesn't rerun when painting changes the + // filament count, so redo its clamp here on every reload. + { + Vec3d clamped_pos, clamped_size; + part_plate->estimate_wipe_tower_polygon(full_config, plate_id, clamped_pos, clamped_size); + if (std::abs(x - (float) clamped_pos(0)) > EPSILON || std::abs(y - (float) clamped_pos(1)) > EPSILON) { + x = (float) clamped_pos(0); + y = (float) clamped_pos(1); + ConfigOptionFloat wt_x_opt(x), wt_y_opt(y); + dynamic_cast(proj_cfg.option("wipe_tower_x"))->set_at(&wt_x_opt, plate_id, 0); + dynamic_cast(proj_cfg.option("wipe_tower_y"))->set_at(&wt_y_opt, plate_id, 0); + } + } + if (!current_print->is_step_done(psWipeTower) || !current_print->wipe_tower_data().wipe_tower_mesh_data) { // update for wipe tower position int volume_idx_wipe_tower_new = m_volumes.load_wipe_tower_preview(1000 + plate_id, x + plate_origin(0), y + plate_origin(1), From 99627c8e935b4bd0a167f6728949840d49a024a1 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 14:52:01 +0800 Subject: [PATCH 066/162] Size the Footprint Estimate from the Planners The shared estimate reserved every tower with one volume-per-purge rule and the stability floor. Both planners do more: WipeTower (Type1) wipes each filament's own prime volume in whole lines, one block per adhesiveness category sized by its worst layer, rams the leaving filament at every nozzle change, and squares a rib tower from the planned depth; WipeTower2 (Type2) spaces its lines by wipe_tower_extra_spacing, not the Type1-only infill gap, and its extra flow cancels out of the depth. Both extend the ribs rather than the body below the stability minimum, size every layer including a thinner first one, and lay the brim in whole loops, WipeTower reporting half a spacing of line width on top. All of that now lives in estimate_wipe_tower_footprint, fed the planner (resolve_wipe_tower_type mirrors Print::wipe_tower_type and the CLI's Bambu Lab detection) and the filament ids rather than a count. Print passes its own tool set; the PartPlate adapter derives the plate's ids from the passed config and treats an explicit count as a floor, so the CLI's count-only callers size per filament too. The placement clamp also reserves a Type2 cone's base bulge, which the body box does not cover. The planner-mirroring helpers sit beside the planners in WipeTower and WipeTower2 so the two stay in sync; the libslic3r cases pin them to footprints measured from generated G-code. --- src/libslic3r/GCode/WipeTower.cpp | 88 ++++++++ src/libslic3r/GCode/WipeTower.hpp | 27 +++ src/libslic3r/GCode/WipeTower2.cpp | 17 ++ src/libslic3r/GCode/WipeTower2.hpp | 4 + src/libslic3r/GCode/WipeTowerEstimate.cpp | 166 ++++++++++++---- src/libslic3r/GCode/WipeTowerEstimate.hpp | 22 +- src/libslic3r/Print.cpp | 2 +- src/slic3r/GUI/PartPlate.cpp | 44 ++-- src/slic3r/GUI/PartPlate.hpp | 3 +- tests/fff_print/test_wipe_tower.cpp | 19 +- tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_wipe_tower.cpp | 93 +++++++++ tests/libslic3r/test_wipe_tower_estimate.cpp | 199 ++++++++++++++----- 13 files changed, 559 insertions(+), 126 deletions(-) create mode 100644 tests/libslic3r/test_wipe_tower.cpp diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 8aff5f4a3f..bef3803c55 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1630,6 +1630,94 @@ float WipeTower::get_auto_brim_by_height(float max_height) { return 8.f; } +float WipeTower::estimate_brim_real_width(float brim_width, float nozzle_diameter, float first_layer_height, bool type2) +{ + if (brim_width <= 0.f) + return brim_width; + const float spacing = nozzle_diameter * 1.25f - first_layer_height * float(1. - M_PI_4); // Width_To_Nozzle_Ratio + if (spacing <= EPSILON) + return brim_width; + const int loops_num = int((brim_width + spacing / 2.f) / spacing); + return loops_num * spacing + (type2 ? 0.f : spacing / 2.f); +} + +float WipeTower::get_wrapping_detection_depth() +{ + return float(wrapping_wipe_tower_depth); +} + +float WipeTower::nozzle_change_perimeter_width(float nozzle_diameter) +{ + auto it = nozzle_diameter_to_nozzle_change_width.find(nozzle_diameter); + return it != nozzle_diameter_to_nozzle_change_width.end() ? it->second : 2.f * nozzle_diameter * 1.25f; +} + +float WipeTower::estimate_tower_blocks_depth(const std::vector &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing) +{ + if (purges.empty() || layer_height < EPSILON || nozzle_diameter < EPSILON) + return 0.f; + const float pw = nozzle_diameter * 1.25f; // Width_To_Nozzle_Ratio + const float ncpw = nozzle_change_perimeter_width(nozzle_diameter); + const float line_width = width - 2.f * pw; + if (line_width <= EPSILON) + return 0.f; + // Line cross-section as volume_to_length() sees it; the infill gap stretches the perimeter + // width by the configured ratio and nozzle-change lines keep their own width + // (calc_block_infill_gap). + auto line_area = [layer_height](float w) { return layer_height * (w - layer_height * float(1. - M_PI_4)); }; + const float extra_width = (extra_spacing - 1.f) * pw; + const float gap = pw + extra_width; + const float nc_gap = ncpw + extra_width; + // A layer purges into at most (filaments - 1) targets, so a category holding every filament + // never sees its smallest purge (the layer's first filament) in its worst layer. + struct Block { float depth = 0.f; float min_purge = 0.f; size_t filaments = 0; }; + std::map blocks; + for (const PurgeEstimate &purge : purges) { + Block &block = blocks[purge.category]; + const float purge_depth = std::ceil(purge.prime_volume / line_area(pw) / line_width) * gap; + block.min_purge = block.filaments == 0 ? purge_depth : std::min(block.min_purge, purge_depth); + block.depth += purge_depth; + ++block.filaments; + if (purge.filament_change_length > EPSILON) { + // The leaving filament is rammed over the nozzle-change flow, again in whole lines. + const float filament_area = float(M_PI) * purge.filament_diameter * purge.filament_diameter / 4.f; + const float nc_length = purge.filament_change_length * filament_area / line_area(ncpw); + block.depth += std::ceil(nc_length / (width - ncpw - pw)) * nc_gap; + } + } + float depth = pw; // plan_tower_new starts the first block one perimeter width in + for (const auto &[category, block] : blocks) + depth += block.filaments == purges.size() ? block.depth - block.min_purge : block.depth; + return depth; +} + +float WipeTower::rib_footprint_side(float width, float depth, float rib_width, float extra_rib_length, float max_height) +{ + if (width < EPSILON || depth < EPSILON) + return 0.f; + // Ribs run the diagonal; below the height-based minimum they are extended rather than the + // body, then by the extra length, never ending up shorter than the diagonal. + const float diagonal = std::sqrt(width * width + depth * depth); + float rib_length = diagonal; + if (depth + EPSILON < get_limit_depth_by_height(max_height)) + rib_length = std::max(rib_length, get_limit_depth_by_height(max_height) * float(std::sqrt(2.))); + rib_length = std::max(diagonal, rib_length + extra_rib_length); + // Half the extension at each end of the diagonal plus half the rib width, projected onto the axes. + const float rib_w = std::min(rib_width, std::min(width, depth) / 2.f); + const float per_side = ((rib_length - diagonal) / 2.f + rib_w / 2.f) / float(std::sqrt(2.)); + return std::max(width, depth) + 2.f * per_side; +} + +float WipeTower::estimate_rib_tower_bbox_side(const std::vector &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing, float rib_width, float extra_rib_length, float max_height) +{ + if (purges.empty() || width < EPSILON || layer_height < EPSILON || nozzle_diameter < EPSILON) + return 0.f; + const float pw = nozzle_diameter * 1.25f; // Width_To_Nozzle_Ratio + const float square = align_ceil(std::sqrt(estimate_tower_blocks_depth(purges, width, layer_height, nozzle_diameter, extra_spacing) * width), pw); + const float depth = estimate_tower_blocks_depth(purges, square, layer_height, nozzle_diameter, extra_spacing); + return rib_footprint_side(square, depth, rib_width, extra_rib_length, max_height); +} + Vec2f WipeTower::move_box_inside_polygon(const BoundingBox &box, const Polygons &polygons, coord_t offset) { if (polygons.empty()) return Vec2f{0.f, 0.f}; diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 045c82cbf3..9303f09691 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -42,9 +42,36 @@ public: static const std::map min_depth_per_height; static float get_limit_depth_by_height(float max_height); static float get_auto_brim_by_height(float max_height); + // Both generators lay the brim in whole loops one line spacing apart, so the printed width + // differs from the configured one. WipeTower reports it with half a spacing of line width + // added, WipeTower2 reports the loops alone; an estimate has to round like the generator + // whose G-code it stands in for. + static float estimate_brim_real_width(float brim_width, float nozzle_diameter, float first_layer_height, bool type2); + // Depth a Type1 tower reserves once nothing but wrapping detection asks for one. + static float get_wrapping_detection_depth(); + // Line width of the nozzle-change purge lines at this nozzle diameter. + static float nozzle_change_perimeter_width(float nozzle_diameter); static TriangleMesh its_make_rib_tower(float width, float depth, float height, float rib_length, float rib_width, bool fillet_wall); static TriangleMesh its_make_rib_brim(const Polygon& brim, float layer_height); static Polygon rib_section(float width, float depth, float rib_length, float rib_width, bool fillet_wall); + // One filament's share of a Type1 tower layer, as plan_tower_new() reserves it. + struct PurgeEstimate + { + float prime_volume = 0.f; // mm3 wiped after changing to this filament + int category = 0; // filament_adhesiveness_category; one purge block per category + float filament_change_length = 0.f; // mm of filament rammed when it leaves its nozzle; 0 when no nozzle change is planned + float filament_diameter = 1.75f; + }; + // Depth of the Type1 purge stack at the given width (also the rectangle-wall depth): each + // purge is whole lines at the block infill gap, one block per adhesiveness category sized by + // its worst layer, stacked behind one perimeter width. + static float estimate_tower_blocks_depth(const std::vector &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing); + // Side of the square bounding a rib-wall tower's first layer, brim excluded: the body plus the + // rib bulge, with the ribs extended to the height-based minimum as both generators do. + static float rib_footprint_side(float width, float depth, float rib_width, float extra_rib_length, float max_height); + // Type1 rib tower: plan_tower_new() squares the tower from the depth at the configured width, + // then re-plans the depth at the squared width. + static float estimate_rib_tower_bbox_side(const std::vector &purges, float width, float layer_height, float nozzle_diameter, float extra_spacing, float rib_width, float extra_rib_length, float max_height); // Translation that brings a footprint inside the printable outline, padded by offset. The prime // tower is validated against the real outline (see layered_print_cleareance_valid), so clamping // against the bounding box alone would leave it off a delta or hexagonal bed. box and polygons diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index ee0f9c375a..4e752bd772 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -2129,6 +2129,23 @@ std::pair WipeTower2::get_wipe_tower_cone_base(double width, dou return std::make_pair(R, support_scale); } +Polygon WipeTower2::cone_base_polygon(double width, double depth, double height, double angle_deg) +{ + Polygon box({Point::new_scale(Vec2d(0., 0.)), Point::new_scale(Vec2d(width, 0.)), + Point::new_scale(Vec2d(width, depth)), Point::new_scale(Vec2d(0., depth))}); + if (angle_deg <= EPSILON || height <= EPSILON || width <= EPSILON || depth <= EPSILON) + return box; + const auto [R, x_scale] = get_wipe_tower_cone_base(width, height, depth, angle_deg); + if (R <= EPSILON) + return box; + const Vec2d center(width / 2., depth / 2.); + Polygon ellipse; + for (double alpha = 0.; alpha < 2. * M_PI; alpha += M_PI / 20.) + ellipse.points.push_back(Point::new_scale(center + R * Vec2d(std::cos(alpha) / x_scale, std::sin(alpha)))); + Polygons u = union_({box, ellipse}); + return u.empty() ? box : u.front(); +} + // Static method to extract wipe_volumes[from][to] from the configuration. // Takes a ConfigBase so the GUI's wipe tower size estimate can pass the plate's // DynamicPrintConfig directly instead of materializing a full PrintConfig per call. diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 5b1a474b5d..232cad1a6b 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -27,6 +27,10 @@ public: // in WipeTowerIntegration::append_tcr2 does not strip it. static const std::string wait_for_temp_tag() { return ";_WAIT_FOR_TEMP_ON_WIPE_TOWER"; } static std::pair get_wipe_tower_cone_base(double width, double height, double depth, double angle_deg); + // First-layer outline of a cone-wall tower in tower-local (scaled) coordinates: body box + // unioned with the cone's base ellipse — the model first_layer_wipe_tower_corners uses, + // and generate_support_cone_wall stays within it. Brim not included. + static Polygon cone_base_polygon(double width, double depth, double height, double angle_deg); static std::vector> extract_wipe_volumes(const ConfigBase& config); // Estimated total flush volume of a SEMM print with the given number of filaments, // used to reserve wipe tower space before the tower is generated. diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp index a8aeda28ef..6fee774e9c 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.cpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -8,57 +8,93 @@ #include #include +#include namespace Slic3r { -WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height) +// Every caller today declares all these keys, but the signature accepts any ConfigBase: fall +// back to the key's declared default, never to a hand-copied constant. +static const ConfigOption *option_of(const ConfigBase &config, const char *key) +{ + if (const ConfigOption *opt = config.option(key); opt != nullptr) + return opt; + if (const ConfigDef *def = config.def(); def != nullptr) + if (const ConfigOptionDef *opt_def = def->get(key); opt_def != nullptr) + return opt_def->default_value.get(); + return nullptr; +} + +WipeTowerType resolve_wipe_tower_type(const ConfigBase &config) +{ + // printer_model is what the CLI keys its Bambu Lab detection on; the GUI's vendor flag + // agrees for every shipped profile. + if (const auto *model = dynamic_cast(config.option("printer_model")); + model != nullptr && model->value.compare(0, 9, "Bambu Lab") == 0) + return WipeTowerType::Type1; + // By value, not by concrete type: a static PrintConfig holds ConfigOptionEnum, a + // DynamicConfig built from presets holds ConfigOptionEnumGeneric, and both answer getInt(). + const ConfigOption *type = option_of(config, "wipe_tower_type"); + return type != nullptr ? WipeTowerType(type->getInt()) : WipeTowerType::Type2; +} + +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, WipeTowerType tower_type, const std::vector &filament_ids, double layer_height, double max_object_height) { WipeTowerFootprint footprint; footprint.height = max_object_height; + const size_t filaments_cnt = filament_ids.size(); if (filaments_cnt == 0 || layer_height < EPSILON) return footprint; - // Every caller today declares all these keys, but the signature accepts any ConfigBase: - // fall back to the key's declared default, never to a hand-copied constant. - auto option_of = [&config](const char *key) -> const ConfigOption * { - if (const ConfigOption *opt = config.option(key); opt != nullptr) - return opt; - if (const ConfigDef *def = config.def(); def != nullptr) - if (const ConfigOptionDef *opt_def = def->get(key); opt_def != nullptr) - return opt_def->default_value.get(); - return nullptr; - }; - auto opt_float = [&option_of](const char *key) { - const ConfigOption *opt = option_of(key); + auto opt_float = [&config](const char *key) { + const ConfigOption *opt = option_of(config, key); return opt != nullptr ? opt->getFloat() : 0.; }; - auto opt_bool = [&option_of](const char *key) { - const ConfigOption *opt = option_of(key); + auto opt_bool = [&config](const char *key) { + const ConfigOption *opt = option_of(config, key); return opt != nullptr && opt->getBool(); }; - // By value, not by concrete type: a static PrintConfig holds ConfigOptionEnum, a - // DynamicConfig built from presets holds ConfigOptionEnumGeneric, and both answer getInt(). - auto opt_enum = [&option_of](const char *key, int fallback) { - const ConfigOption *opt = option_of(key); + auto opt_enum = [&config](const char *key, int fallback) { + const ConfigOption *opt = option_of(config, key); return opt != nullptr ? opt->getInt() : fallback; }; - auto max_of = [&option_of](const char *key, double fallback) { - const auto *opt = dynamic_cast(option_of(key)); + auto floats_of = [&config](const char *key) { return dynamic_cast(option_of(config, key)); }; + auto max_of = [&floats_of](const char *key, double fallback) { + const auto *opt = floats_of(key); return (opt != nullptr && !opt->values.empty()) ? *std::max_element(opt->values.begin(), opt->values.end()) : fallback; }; + auto float_at = [&floats_of](const char *key, unsigned int id, double fallback) { + const auto *opt = floats_of(key); + return (opt != nullptr && !opt->values.empty()) ? opt->get_at(id) : fallback; + }; + auto int_at = [&config](const char *key, unsigned int id, int fallback) { + const auto *opt = dynamic_cast(option_of(config, key)); + return (opt != nullptr && !opt->values.empty()) ? opt->get_at(id) : fallback; + }; + // Both planners size every layer, so the tower has to fit its thinnest one: the first layer + // when it is printed thinner than the rest. + const double first_layer_height = opt_float("initial_layer_print_height"); + if (first_layer_height > EPSILON) + layer_height = std::min(layer_height, first_layer_height); + + const bool type1 = tower_type == WipeTowerType::Type1; const double width = opt_float("prime_tower_width"); const double prime_volume = opt_float("prime_volume"); - const double extra_spacing = opt_float("prime_tower_infill_gap") / 100.; - double rib_width = opt_float("wipe_tower_rib_width"); + // Type1 spaces its purge lines by prime_tower_infill_gap, Type2 by wipe_tower_extra_spacing. + // Type2's extra flow cancels out of the depth: the line length is divided by it and the row + // pitch multiplied by it (WipeTower2::get_wipe_depth). + const double extra_spacing = opt_float(type1 ? "prime_tower_infill_gap" : "wipe_tower_extra_spacing") / 100.; + const double rib_width = opt_float("wipe_tower_rib_width"); const double extra_rib_length = opt_float("wipe_tower_extra_rib_length"); - const auto *nozzle_opt = dynamic_cast(option_of("nozzle_diameter")); + const auto *nozzle_opt = floats_of("nozzle_diameter"); + const double nozzle_diameter = (nozzle_opt != nullptr && !nozzle_opt->values.empty()) ? nozzle_opt->values.front() : 0.4; const bool dual_nozzle = nozzle_opt != nullptr && nozzle_opt->values.size() == 2; const bool rib_wall = opt_enum("wipe_tower_wall_type", int(WipeTowerWallType::wtwRectangle)) == int(WipeTowerWallType::wtwRib); const bool smooth_timelapse = opt_enum("timelapse_type", int(TimelapseType::tlTraditional)) == int(TimelapseType::tlSmooth); + const bool wrapping = opt_bool("enable_wrapping_detection"); // Reasons a tower is printed with no tool change to purge for: the ones that stop // normalize_fdm_2 clearing enable_prime_tower. Its mixed-filament case is not modelled. - const bool need_wipe_tower = smooth_timelapse || opt_bool("enable_wrapping_detection"); + const bool need_wipe_tower = smooth_timelapse || wrapping; // No tool change, nothing to purge; smooth timelapse still primes once. size_t purge_count = 0; @@ -67,6 +103,8 @@ WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_ else if (smooth_timelapse) purge_count = 1; + // Type2 purges one volume per tool change. Type1 plans per filament below; here the volume + // only decides whether a tower exists. double volume = prime_volume * double(purge_count); if (dual_nozzle) { // Dual-nozzle printers also purge the filament change length on the tower. @@ -79,33 +117,77 @@ WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_ if (semm_flush) volume = WipeTower2::estimate_semm_flush_volume(config, filaments_cnt); - // Both wall types decide this together: over-reserving only wastes bed area, but - // reporting no tower for one that is built collapses the validation hull to a point. - // A tool change is a reason on its own: the generator floors the tower whatever the - // purge volumes resolve to. - if (volume < EPSILON && filaments_cnt < 2 && !need_wipe_tower) + // The Type1 planner wipes each filament's own prime volume after changing to it, in a block + // per adhesiveness category. On a two-nozzle printer the leaving filament is also rammed at + // every nozzle change; the tool order groups filaments by nozzle, so a layer crosses + // (nozzles used - 1) times, charged here to the longest ramming. + std::vector purges; + if (type1 && filaments_cnt > 1) { + const bool saving_mode = opt_enum("prime_volume_mode", int(PrimeVolumeMode::pvmDefault)) == int(PrimeVolumeMode::pvmSaving); + std::set nozzles; + size_t longest_ramming = 0; + for (size_t i = 0; i < filaments_cnt; ++i) { + const unsigned int id = filament_ids[i]; + WipeTower::PurgeEstimate purge; + purge.prime_volume = saving_mode ? 15.f : float(float_at("filament_prime_volume", id, prime_volume)); + purge.category = int_at("filament_adhesiveness_category", id, 0); + purge.filament_diameter = float(float_at("filament_diameter", id, 1.75)); + purges.push_back(purge); + if (dual_nozzle) { + nozzles.insert(int_at("filament_map", id, 1)); + if (float_at("filament_change_length", id, 0.) > float_at("filament_change_length", filament_ids[longest_ramming], 0.)) + longest_ramming = i; + } + } + if (nozzles.size() > 1) + purges[longest_ramming].filament_change_length = float(float_at("filament_change_length", filament_ids[longest_ramming], 0.) * double(nozzles.size() - 1)); + } + + // Both wall types decide this together: over-reserving only wastes bed area, but reporting + // no tower for one that is built collapses the validation hull to a point. + // A tool change is a reason on its own (see the base commit); Type1 already reserves + // per filament, Type2 has only the volume, which can resolve to zero. + const bool has_purge = type1 ? !purges.empty() : volume > EPSILON; + if (!has_purge && filaments_cnt < 2 && !need_wipe_tower) return footprint; - const double min_depth = WipeTower::get_limit_depth_by_height(float(max_object_height)); + const double min_depth = WipeTower::get_limit_depth_by_height(float(max_object_height)); + const float perimeter_width = float(nozzle_diameter) * 1.25f; // Width_To_Nozzle_Ratio + // With nothing to purge, plan_tower_new sizes the tower for wrapping detection or the + // stability minimum; WipeTower2 only knows the latter. + const double idle_depth = (type1 && wrapping && !smooth_timelapse) ? WipeTower::get_wrapping_detection_depth() : min_depth; if (rib_wall) { - // A rib wall squares the tower; the ribs run the diagonal and bulge past the body. - const double volume_depth = std::sqrt(volume / layer_height * extra_spacing); - double depth = std::max(min_depth, volume_depth); - rib_width = std::min(rib_width, depth / 2.); - depth = rib_width / std::sqrt(2.) + std::max(depth + extra_rib_length, volume_depth); - footprint.width = footprint.depth = depth; + // Both planners square the tower to the purge area and extend the ribs, not the body, + // below the stability minimum. + double side; + if (!purges.empty()) + side = WipeTower::estimate_rib_tower_bbox_side(purges, float(width), float(layer_height), float(nozzle_diameter), float(extra_spacing), float(rib_width), float(extra_rib_length), float(max_object_height)); + else { + const double square = has_purge ? std::sqrt(volume / layer_height * extra_spacing) : idle_depth; + side = WipeTower::rib_footprint_side(float(square), float(square), float(rib_width), float(extra_rib_length), float(max_object_height)); + } + footprint.width = footprint.depth = side; } else { - double depth = volume / (layer_height * width); - // The flush volumes already hold the spacing between wipes. - if (!semm_flush) - depth *= extra_spacing; + double depth; + if (type1) { + // plan_tower_new stretches a short purge stack to the stability minimum behind its + // leading perimeter width. + depth = purges.empty() ? idle_depth : std::max(min_depth + perimeter_width, double(WipeTower::estimate_tower_blocks_depth(purges, float(width), float(layer_height), float(nozzle_diameter), float(extra_spacing)))); + } else { + depth = volume / (layer_height * width); + // The flush volumes already hold the spacing between wipes. + if (!semm_flush) + depth *= extra_spacing; + depth = std::max(min_depth, depth); + } footprint.width = width; - footprint.depth = std::max(min_depth, depth); + footprint.depth = depth; } footprint.brim_width = opt_float("prime_tower_brim_width"); if (footprint.brim_width < 0) footprint.brim_width = WipeTower::get_auto_brim_by_height(float(max_object_height)); + footprint.brim_width = WipeTower::estimate_brim_real_width(float(footprint.brim_width), float(nozzle_diameter), float(first_layer_height > EPSILON ? first_layer_height : layer_height), !type1); return footprint; } diff --git a/src/libslic3r/GCode/WipeTowerEstimate.hpp b/src/libslic3r/GCode/WipeTowerEstimate.hpp index fe5c0b519c..5b333005e8 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.hpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.hpp @@ -1,10 +1,11 @@ #pragma once -#include +#include namespace Slic3r { class ConfigBase; +enum class WipeTowerType; // Pre-slice footprint of the wipe tower, shared by validation (Print), the GUI's placement // clamp/preview/arrange and the CLI placement. The arithmetic is shared; the inputs below are @@ -14,16 +15,25 @@ struct WipeTowerFootprint double width = 0.; // effective width: equals depth for a rib wall, which squares the tower double depth = 0.; // 0 when these inputs imply no tower double height = 0.; // tallest object; drives the stability floor and the auto brim - double brim_width = 0.; // configured width, auto (-1) resolved by height + double brim_width = 0.; // printed width: auto (-1) resolved by height, laid in whole loops }; -// filaments_cnt: filaments purged on the plate. The config cannot see custom G-code tool -// changes, so a count derived from the model must include them +// Which planner builds the tower: Bambu Lab printers always get Type1, the rest follow +// wipe_tower_type. The rule Print::wipe_tower_type() and the CLI apply, read off the config so +// the GUI and CLI placement can resolve it without a Print. +WipeTowerType resolve_wipe_tower_type(const ConfigBase &config); + +// filament_ids: 0-based filaments purged on the plate. The config cannot see custom G-code tool +// changes, so ids derived from the model must include them // (Print::extruders(true)) or a real tower is sized as if it were never built. -// layer_height: thinnest layer the tower will be planned at. +// layer_height: thinnest layer the objects are sliced at. The first layer is folded in here. // // A raft is deliberately not a reason: normalize_fdm_2 clears enable_prime_tower for a plate // purging one filament unless smooth timelapse or wrapping detection is on. -WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, size_t filaments_cnt, double layer_height, double max_object_height); +WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, + WipeTowerType tower_type, + const std::vector &filament_ids, + double layer_height, + double max_object_height); } // namespace Slic3r diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index b014b0f299..271e410933 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -4010,7 +4010,7 @@ const WipeTowerData &Print::wipe_tower_data(size_t filaments_cnt) const if (max_height < EPSILON) return m_wipe_tower_data; - const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, filaments_cnt, layer_height, max_height); + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(m_config, this->wipe_tower_type(), this->extruders(true), layer_height, max_height); WipeTowerData &data = const_cast(this)->m_wipe_tower_data; data.depth = float(footprint.depth); data.width = float(footprint.width); diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 09b8ff3068..beb244a39c 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -22,6 +22,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Polygon.hpp" #include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Geometry.hpp" @@ -2333,22 +2334,20 @@ WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintCo { // The CLI calls this too, so the plate's filaments are derived from the passed config: // get_extruders(bool) reads the same keys off wxGetApp()'s presets, which the CLI has none of. - std::vector plate_extruders; - if (plate_extruder_size == 0) { - plate_extruders = get_extruders(true, config, config); - plate_extruder_size = int(plate_extruders.size()); - } + // An explicit count is a floor: init-time and arrange estimates size an empty plate for that + // many generic filaments, the lowest ids not already on the plate. + std::vector plate_extruders = get_extruders(true, config, config); + for (int id = 1; int(plate_extruders.size()) < plate_extruder_size; ++id) + if (std::find(plate_extruders.begin(), plate_extruders.end(), id) == plate_extruders.end()) + plate_extruders.push_back(id); // The wipe tower filament joins the tool ordering even when unused (Print::extruders), so - // validation counts it. An explicit count is the plate's painted filaments, which never do. + // validation counts it. const ConfigOption *wipe_tower_filament_opt = config.option("wipe_tower_filament"); const int wipe_tower_filament = wipe_tower_filament_opt != nullptr ? wipe_tower_filament_opt->getInt() : 0; - if (plate_extruder_size > 1 && wipe_tower_filament > 0) { - if (plate_extruders.empty()) - plate_extruders = get_extruders(true, config, config); - if (std::find(plate_extruders.begin(), plate_extruders.end(), wipe_tower_filament) == plate_extruders.end()) - ++plate_extruder_size; - } - if (plate_extruder_size == 0) + if (plate_extruders.size() > 1 && wipe_tower_filament > 0 && + std::find(plate_extruders.begin(), plate_extruders.end(), wipe_tower_filament) == plate_extruders.end()) + plate_extruders.push_back(wipe_tower_filament); + if (plate_extruders.empty()) return WipeTowerFootprint(); // Tallest object on this plate and the thinnest layer it is sliced at, resolved per object @@ -2376,7 +2375,11 @@ WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintCo if (layer_height == std::numeric_limits::max()) layer_height = global_layer_height; - return Slic3r::estimate_wipe_tower_footprint(config, size_t(plate_extruder_size), layer_height, max_height); + std::vector filament_ids; + for (int id : plate_extruders) + if (id > 0) + filament_ids.push_back(static_cast(id - 1)); + return Slic3r::estimate_wipe_tower_footprint(config, resolve_wipe_tower_type(config), filament_ids, layer_height, max_height); } arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const DynamicPrintConfig& config, int plate_index, Vec3d& wt_pos, Vec3d& wt_size, int plate_extruder_size, bool use_global_objects) const @@ -2391,8 +2394,17 @@ arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const Dynamic float depth = wt_size(1); // Resolved brim, not the raw option: "Auto" (-1) would yield a margin of 0 and let the // clamp put the brim off the bed. Matches set_default_wipe_tower_pos_for_plate. - const float wp_brim_width = float(footprint.brim_width); - const float margin = WIPE_TOWER_MARGIN + wp_brim_width; + float wp_brim_width = float(footprint.brim_width); + // A Type2 stabilization cone bulges past the body box like a brim does - fold its worst-axis + // bulge into the same margin (Type1 ignores the cone option). + const auto *cone_wall_opt = config.option("wipe_tower_wall_type"); + const auto *cone_angle_opt = config.option("wipe_tower_cone_angle"); + if (cone_wall_opt != nullptr && cone_wall_opt->getInt() == int(WipeTowerWallType::wtwCone) && cone_angle_opt != nullptr && + cone_angle_opt->getFloat() > EPSILON && resolve_wipe_tower_type(config) == WipeTowerType::Type2) { + const BoundingBox cb = get_extents(WipeTower2::cone_base_polygon(w, depth, wt_size.z(), cone_angle_opt->getFloat())); + wp_brim_width += float(std::max({0., unscaled(cb.max.x()) - w, unscaled(cb.max.y()) - depth, -unscaled(cb.min.x()), -unscaled(cb.min.y())})); + } + const float margin = WIPE_TOWER_MARGIN + wp_brim_width; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; // A tower too deep for the plate leaves no valid position: clamping with hi < lo is UB and diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 829d417e04..6d7eb18beb 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -340,7 +340,8 @@ public: Vec3d get_origin() { return m_origin; } //Vec3d calculate_wipe_tower_size(const DynamicPrintConfig &config, const double w, const double wipe_volume, int plate_extruder_size = 0, bool use_global_objects = false) const; - // plate_extruder_size: filaments purged on the plate; 0 derives them from its objects. + // plate_extruder_size: a floor on the filaments purged on the plate; its own are always + // counted, so 0 sizes for exactly those. // use_global_objects skips the containment test, which the CLI needs before objects are // assigned to plates - the layer height is then the project's thinnest, which over-reserves. WipeTowerFootprint estimate_wipe_tower_footprint(const DynamicPrintConfig & config, int plate_extruder_size = 0, bool use_global_objects = false) const; diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index 9a6c5aa686..5a248075e4 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -184,11 +184,13 @@ TEST_CASE("The wipe tower's toolchange planner flush follows the gcode flavor", } // What Print feeds the shared estimate. The libslic3r WipeTowerEstimate cases cannot see this: -// they call the estimator directly. -static DynamicPrintConfig tower_estimate_config(const char *wall_type) +// they call the estimator directly. The estimate counts the filaments the print really uses, +// so the two-filament shape gives the outer wall the second one. +static DynamicPrintConfig tower_estimate_config(const char *wall_type, unsigned int filaments = 2) { // 100 mm3 per purge on a 50 mm wide tower: one purge is 100/(layer_height * 50) of depth. - return multifilament_config(2, { + return multifilament_config(filaments, { + { "outer_wall_filament_id", filaments == 2 ? "2" : "1" }, { "enable_prime_tower", "1" }, { "wipe_tower_wall_type", wall_type }, { "prime_tower_width", "50" }, @@ -277,7 +279,7 @@ TEST_CASE("A single-filament plate reserves a tower only when one is actually pr Model model; SECTION("no tool change and nothing else that prints one") { - const DynamicPrintConfig config = tower_estimate_config("rib"); + const DynamicPrintConfig config = tower_estimate_config("rib", 1); init_print({ cube(20) }, print, model, config); REQUIRE_FALSE(print.has_wipe_tower()); CHECK_THAT(print.wipe_tower_data(1).depth, Catch::Matchers::WithinAbs(0., 1e-6)); @@ -287,7 +289,7 @@ TEST_CASE("A single-filament plate reserves a tower only when one is actually pr // Print::apply runs normalize_fdm_2, which clears enable_prime_tower for a plate that // purges one filament and has neither smooth timelapse nor wrapping detection on. SECTION("a raft alone does not print one") { - DynamicPrintConfig config = tower_estimate_config("rib"); + DynamicPrintConfig config = tower_estimate_config("rib", 1); config.set_deserialize_strict({ { "raft_layers", "3" } }); init_print({ cube(20) }, print, model, config); REQUIRE_FALSE(print.config().enable_prime_tower.value); @@ -296,7 +298,7 @@ TEST_CASE("A single-filament plate reserves a tower only when one is actually pr } SECTION("smooth timelapse prints one, and keeps enable_prime_tower on") { - DynamicPrintConfig config = tower_estimate_config("rib"); + DynamicPrintConfig config = tower_estimate_config("rib", 1); config.set_deserialize_strict({ { "timelapse_type", "1" } }); init_print({ cube(20) }, print, model, config); REQUIRE(print.has_wipe_tower()); @@ -312,13 +314,12 @@ TEST_CASE("A tower printed without a tool change is still validated against the // checked against the bed. Print print; Model model; - DynamicPrintConfig config = tower_estimate_config("rectangle"); + DynamicPrintConfig config = tower_estimate_config("rectangle", 1); // Relative E without a per-layer G92 is rejected before the tower is ever looked at, and // has_wipe_tower() wants a real exclusion polygon before it honours wrapping detection. config.set_deserialize_strict({ { "enable_wrapping_detection", "1" }, { "wrapping_exclude_area", "180x180,190x180,190x190,180x190" }, - { "wipe_tower_x", "500" }, { "wipe_tower_y", "500" }, - { "use_relative_e_distances", "0" } }); + { "wipe_tower_x", "500" }, { "wipe_tower_y", "500" }, { "use_relative_e_distances", "0" } }); init_print({ cube(20) }, print, model, config); REQUIRE(print.extruders(true).size() == 1); diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index dc8508743e..5c10ab1496 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -41,6 +41,7 @@ add_executable(${_TEST_NAME}_tests test_timeutils.cpp test_voronoi.cpp test_wipe_tower_estimate.cpp + test_wipe_tower.cpp test_optimizers.cpp test_ordering_strategies.cpp # test_png_io.cpp diff --git a/tests/libslic3r/test_wipe_tower.cpp b/tests/libslic3r/test_wipe_tower.cpp new file mode 100644 index 0000000000..2987dce9da --- /dev/null +++ b/tests/libslic3r/test_wipe_tower.cpp @@ -0,0 +1,93 @@ +#include + +#include + +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" + +using namespace Slic3r; +using Catch::Matchers::WithinAbs; + +// A Bambu P1S project that reproduced the off-plate brim: two PLAs priming 30 and 45 mm3 in +// separate adhesiveness categories on a 35 mm tower, 0.21 mm layers, 0.4 nozzle (0.5 mm lines), +// 150 % infill gap (0.75 mm line pitch), rib width 8, 16 mm tall. +static std::vector cube_purges(int first_category = 100) +{ + return {{30.f, first_category}, {45.f, 0}}; +} + +TEST_CASE("Cone base polygon bulges past the body box", "[WipeTower]") { + // Zero angle: plain body box. + const Polygon box = WipeTower2::cone_base_polygon(35., 20., 100., 0.); + CHECK(box.points.size() == 4); + CHECK(get_extents(box).size() == Point::new_scale(Vec2d(35., 20.))); + // A 25-degree cone on a 100 mm tower: base radius R = tan(12.5deg)*100 = 22.2 mm, + // which exceeds the body half-depth, so the footprint bulges to center +- R in y + // (support_scale keeps the x extent compressed near the body). + const Polygon base = WipeTower2::cone_base_polygon(35., 20., 100., 25.); + const BoundingBox bb = get_extents(base); + const double R = std::tan(25. / 2. * M_PI / 180.) * 100.; + CHECK_THAT(unscaled(bb.min.y()), WithinAbs(10. - R, 0.1)); + CHECK_THAT(unscaled(bb.max.y()), WithinAbs(10. + R, 0.1)); + // The footprint always contains the body box. + CHECK(diff(Polygons{box}, Polygons{base}).empty()); +} + +TEST_CASE("Type1 block-stack depth quantizes each purge to whole lines", "[WipeTower]") { + // A 0.5 mm line at 0.21 mm carries 0.0955 mm3 per mm, so across the 34 mm between the + // perimeters 30 mm3 is 10 lines and 45 mm3 is 14: 7.5 + 10.5 at the 0.75 mm pitch behind + // one perimeter width. The generated mesh of the project measured exactly this. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(cube_purges(), 35.f, 0.21f, 0.4f, 1.5f), WithinAbs(18.5f, 0.01f)); + // Sharing one category, a layer can never purge into every filament (one of them starts + // the layer), so the block is sized by its worst layer and the 10-line purge drops out. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(cube_purges(0), 35.f, 0.21f, 0.4f, 1.5f), WithinAbs(11.0f, 0.01f)); + CHECK_THAT(WipeTower::estimate_tower_blocks_depth({}, 35.f, 0.2f, 0.4f, 1.f), WithinAbs(0.f, 1e-6f)); + // A width narrower than two perimeter widths cannot hold purge lines. + CHECK_THAT(WipeTower::estimate_tower_blocks_depth({{45.f, 0}}, 0.9f, 0.2f, 0.4f, 1.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("A nozzle change adds its ramming lines to the block", "[WipeTower]") { + // 10 mm of 1.75 mm filament (24.05 mm3) laid as 1.0 mm nozzle-change lines at 0.2 mm + // (0.1914 mm2 each) is 125.7 mm; across the 48.5 mm available that is 3 lines of 1.0 mm. + std::vector purges{{100.f, 0}, {100.f, 0}}; + const float without_change = WipeTower::estimate_tower_blocks_depth(purges, 50.f, 0.2f, 0.4f, 1.f); + purges.front().filament_change_length = 10.f; + CHECK_THAT(WipeTower::estimate_tower_blocks_depth(purges, 50.f, 0.2f, 0.4f, 1.f) - without_change, WithinAbs(3.f, 1e-4f)); +} + +TEST_CASE("Rib tower footprint estimate covers the generated footprint", "[WipeTower]") { + // The generated first-layer wall bbox of the project measured 29.56 mm from the sliced + // G-code; the volume-only estimate said 23.585 mm. + const float side = WipeTower::estimate_rib_tower_bbox_side(cube_purges(), 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 16.f); + CHECK(side >= 29.56f); + CHECK(side <= 29.56f + 4.f); // without grossly over-reserving plate space + // Separate categories stack their blocks, so the footprint must not shrink when they differ. + CHECK(side >= WipeTower::estimate_rib_tower_bbox_side(cube_purges(0), 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 16.f)); + CHECK_THAT(WipeTower::estimate_rib_tower_bbox_side({}, 35.f, 0.2f, 0.4f, 1.f, 8.f, 0.f, 16.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("Rib footprint extends the ribs, not the body, below the stability minimum", "[WipeTower]") { + // A 10 mm body under a 90 mm print: the ribs stretch to the minimum depth's diagonal, and + // the rib width is capped at half the body, so the square grows to minimum + 5 / sqrt(2). + const float min_depth = WipeTower::get_limit_depth_by_height(90.f); + REQUIRE(min_depth > 10.f); + CHECK_THAT(WipeTower::rib_footprint_side(10.f, 10.f, 8.f, 0.f, 90.f), WithinAbs(min_depth + 5.f / std::sqrt(2.f), 1e-4f)); + // The extra rib length runs along the diagonal, so it shows as its projection on each axis. + const float plain = WipeTower::rib_footprint_side(30.f, 30.f, 8.f, 0.f, 5.f); + CHECK_THAT(plain, WithinAbs(30.f + 8.f / std::sqrt(2.f), 1e-4f)); + CHECK_THAT(WipeTower::rib_footprint_side(30.f, 30.f, 8.f, 4.f, 5.f) - plain, WithinAbs(4.f / std::sqrt(2.f), 1e-4f)); + // A negative extra length cannot pull the ribs inside the diagonal. + CHECK_THAT(WipeTower::rib_footprint_side(30.f, 30.f, 8.f, -4.f, 5.f), WithinAbs(plain, 1e-4f)); + CHECK_THAT(WipeTower::rib_footprint_side(0.f, 30.f, 8.f, 0.f, 5.f), WithinAbs(0.f, 1e-6f)); +} + +TEST_CASE("Brim width estimate matches each generator's loop quantization", "[WipeTower]") { + // 3 mm configured, 0.4 nozzle, 0.2 first layer: 0.4571 mm spacing, 7 loops. WipeTower2 + // prints and reports the 7 loops; WipeTower reports half a spacing of line width on top. + const float spacing = 0.5f - 0.2f * float(1. - M_PI_4); + CHECK_THAT(WipeTower::estimate_brim_real_width(3.f, 0.4f, 0.2f, true), WithinAbs(7.f * spacing, 1e-4f)); + CHECK_THAT(WipeTower::estimate_brim_real_width(3.f, 0.4f, 0.2f, false), WithinAbs(7.5f * spacing, 1e-4f)); + CHECK_THAT(WipeTower::estimate_brim_real_width(0.f, 0.4f, 0.2f, true), WithinAbs(0.f, 1e-6f)); +} diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp index 00235bb2ff..ae0a92f40a 100644 --- a/tests/libslic3r/test_wipe_tower_estimate.cpp +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -6,6 +6,7 @@ #include "libslic3r/PrintConfig.hpp" #include +#include #include using namespace Slic3r; @@ -28,12 +29,16 @@ static DynamicPrintConfig make_config(const char *wall_type = "rectangle") DynamicPrintConfig config = preset_shaped_defaults(); config.set_key_value("prime_tower_width", new ConfigOptionFloat(50.)); config.set_key_value("prime_volume", new ConfigOptionFloat(100.)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({100.})); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({0})); config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(100.)); + config.set_key_value("wipe_tower_extra_spacing", new ConfigOptionPercent(100.)); config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(3.)); config.set_deserialize_strict("wipe_tower_wall_type", wall_type); config.set_key_value("wipe_tower_rib_width", new ConfigOptionFloat(8.)); config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4})); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.2)); config.set_deserialize_strict("timelapse_type", "0"); config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); config.set_key_value("raft_layers", new ConfigOptionInt(0)); @@ -42,51 +47,133 @@ static DynamicPrintConfig make_config(const char *wall_type = "rectangle") return config; } +static std::vector filaments(size_t count) +{ + std::vector ids(count); + std::iota(ids.begin(), ids.end(), 0u); + return ids; +} + +// The first `count` filaments on the given planner; Type2 unless a case says otherwise. +static WipeTowerFootprint estimate(const ConfigBase &config, size_t count, double layer_height, double height, WipeTowerType type = WipeTowerType::Type2) +{ + return estimate_wipe_tower_footprint(config, type, filaments(count), layer_height, height); +} + +// What both planners print for a 3 mm brim at 0.4 nozzle and 0.2 first layer (0.4571 mm loops). +static double printed_brim(double configured, WipeTowerType type) +{ + return WipeTower::estimate_brim_real_width(float(configured), 0.4f, 0.2f, type == WipeTowerType::Type2); +} + TEST_CASE("A rectangle wall tower is sized by the purge volume", "[WipeTowerEstimate]") { const DynamicPrintConfig config = make_config(); // Three filaments purge twice per layer; a 5 mm object keeps the stability floor at 5 mm. - const WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5.); + const WipeTowerFootprint fp = estimate(config, 3, 0.2, 5.); CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); CHECK_THAT(fp.height, WithinAbs(5., 1e-9)); - CHECK_THAT(fp.brim_width, WithinAbs(3., 1e-9)); + CHECK_THAT(fp.brim_width, WithinAbs(printed_brim(3., WipeTowerType::Type2), 1e-6)); // Thinner layers need more depth for the same volume. - CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.1, 5.).depth, WithinAbs(40., 1e-9)); - // The infill gap spaces the purge lines. - DynamicPrintConfig spaced = config; - spaced.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); - CHECK_THAT(estimate_wipe_tower_footprint(spaced, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); + CHECK_THAT(estimate(config, 3, 0.1, 5.).depth, WithinAbs(40., 1e-9)); +} + +TEST_CASE("Each planner spaces its purge lines by its own option", "[WipeTowerEstimate]") { + // Type2 reads wipe_tower_extra_spacing and Type1 prime_tower_infill_gap; neither sees the + // other's key. Type2's extra flow cancels out of its depth. + DynamicPrintConfig config = make_config(); + config.set_key_value("wipe_tower_extra_flow", new ConfigOptionPercent(250.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(20., 1e-9)); + config.set_key_value("wipe_tower_extra_spacing", new ConfigOptionPercent(150.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); + const double type1_spaced = estimate(config, 3, 0.2, 5., WipeTowerType::Type1).depth; + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs(30., 1e-9)); + // Type1 stacks whole lines behind one 0.5 mm perimeter width, so only the stack scales. + CHECK_THAT(estimate(config, 3, 0.2, 5., WipeTowerType::Type1).depth - 0.5, WithinAbs(1.5 * (type1_spaced - 0.5), 1e-6)); +} + +TEST_CASE("Type1 sizes the tower from each filament's own prime volume", "[WipeTowerEstimate]") { + // The Bambu P1S project of the WipeTower cases: 30 and 45 mm3 in two categories on a 35 mm + // tower at 0.21 mm, 150 % gap, is 18.5 mm of stacked blocks (11 mm sharing one category). + DynamicPrintConfig config = make_config(); + config.set_key_value("prime_tower_width", new ConfigOptionFloat(35.)); + config.set_key_value("prime_tower_infill_gap", new ConfigOptionPercent(150.)); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.21)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({30., 45.})); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({100, 0})); + const std::vector purges{{30.f, 100}, {45.f, 0}}; + const double blocks = WipeTower::estimate_tower_blocks_depth(purges, 35.f, 0.21f, 0.4f, 1.5f); + REQUIRE_THAT(blocks, WithinAbs(18.5, 0.01)); + CHECK_THAT(estimate(config, 2, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(blocks, 1e-4)); + // The ids pick the volumes, so their order does not matter and a lone filament has no purge. + CHECK_THAT(estimate_wipe_tower_footprint(config, WipeTowerType::Type1, {1, 0}, 0.21, 5.).depth, WithinAbs(blocks, 1e-4)); + CHECK_THAT(estimate(config, 1, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(0., 1e-9)); + config.set_key_value("filament_adhesiveness_category", new ConfigOptionInts({0, 0})); + CHECK_THAT(estimate(config, 2, 0.21, 5., WipeTowerType::Type1).depth, WithinAbs(11., 0.01)); + // A rib wall squares the same stack. + config.set_deserialize_strict("wipe_tower_wall_type", "rib"); + const WipeTowerFootprint rib = estimate(config, 2, 0.21, 5., WipeTowerType::Type1); + CHECK_THAT(rib.width, WithinAbs(rib.depth, 1e-9)); + CHECK_THAT(rib.depth, WithinAbs(WipeTower::estimate_rib_tower_bbox_side({{30.f, 0}, {45.f, 0}}, 35.f, 0.21f, 0.4f, 1.5f, 8.f, 0.f, 5.f), 1e-4)); +} + +TEST_CASE("A second nozzle adds the ramming of one nozzle change per layer", "[WipeTowerEstimate]") { + // Two filaments on two nozzles: the tool order crosses once per layer, and Type1 rams 10 mm + // of filament as three 1.0 mm nozzle-change lines (see the WipeTower case). + DynamicPrintConfig config = make_config(); + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); + config.set_key_value("filament_change_length", new ConfigOptionFloats({10., 10.})); + config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); + config.set_key_value("filament_map", new ConfigOptionInts({1, 1})); + const double same_nozzle = estimate(config, 2, 0.2, 5., WipeTowerType::Type1).depth; + config.set_key_value("filament_map", new ConfigOptionInts({1, 2})); + CHECK_THAT(estimate(config, 2, 0.2, 5., WipeTowerType::Type1).depth - same_nozzle, WithinAbs(3., 1e-4)); +} + +TEST_CASE("The tower is sized for the first layer when it is the thinnest", "[WipeTowerEstimate]") { + // Both planners reserve the worst layer: a 0.28 mm print with a 0.2 mm first layer needs + // the 0.2 mm depth, while a thicker first layer changes nothing. + DynamicPrintConfig config = make_config(); + const double at_thinnest = estimate(config, 3, 0.2, 5.).depth; + CHECK_THAT(estimate(config, 3, 0.28, 5.).depth, WithinAbs(at_thinnest, 1e-9)); + config.set_key_value("initial_layer_print_height", new ConfigOptionFloat(0.3)); + CHECK(estimate(config, 3, 0.28, 5.).depth < at_thinnest); } TEST_CASE("Object height sets the stability floor and the auto brim", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config(); // Two filaments purge once: 10 mm, lifted to the 20 mm floor of a 100 mm tower. - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 2, 0.2, 100.).depth, WithinAbs(20., 1e-9)); config.set_key_value("prime_tower_brim_width", new ConfigOptionFloat(-1.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 50.).brim_width, WithinAbs(WipeTower::get_auto_brim_by_height(50.f), 1e-6)); + const double auto_brim = WipeTower::get_auto_brim_by_height(50.f); + CHECK_THAT(estimate(config, 2, 0.2, 50.).brim_width, WithinAbs(printed_brim(auto_brim, WipeTowerType::Type2), 1e-6)); + CHECK_THAT(estimate(config, 2, 0.2, 50., WipeTowerType::Type1).brim_width, WithinAbs(printed_brim(auto_brim, WipeTowerType::Type1), 1e-6)); } TEST_CASE("A single filament only gets a tower when one is printed anyway", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config(); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 0, 0.2, 100.).width, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 0, 0.2, 100.).width, WithinAbs(0., 1e-9)); - // Wrapping detection prints a tower on the first layers whatever the filament count. + // Wrapping detection prints a tower on the first layers whatever the filament count: the + // Type1 planner's fixed 10 mm, the stability floor otherwise. config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(true)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100., WipeTowerType::Type1).depth, WithinAbs(WipeTower::get_wrapping_detection_depth(), 1e-9)); config.set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); // A raft is not one of them: normalize_fdm_2 clears enable_prime_tower for a plate that // purges one filament unless smooth timelapse or wrapping detection is on, so a raft // alone leaves no tower to reserve for. config.set_key_value("raft_layers", new ConfigOptionInt(3)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(0., 1e-9)); config.set_key_value("raft_layers", new ConfigOptionInt(0)); config.set_deserialize_strict("timelapse_type", "1"); // Smooth timelapse primes the single filament once: 10 mm, lifted to the floor. - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, 5.).depth, WithinAbs(10., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 5.).depth, WithinAbs(10., 1e-9)); } TEST_CASE("A tool change reserves the stability floor even with nothing to purge", "[WipeTowerEstimate]") { @@ -97,9 +184,9 @@ TEST_CASE("A tool change reserves the stability floor even with nothing to purge DynamicPrintConfig config = make_config(GENERATE("rectangle", "rib")); config.set_key_value("prime_volume", new ConfigOptionFloat(0.)); - CHECK(estimate_wipe_tower_footprint(config, 3, 0.2, height).depth >= floor); + CHECK(estimate(config, 3, 0.2, height).depth >= floor); // Still nothing for a lone filament with no other reason. - CHECK_THAT(estimate_wipe_tower_footprint(config, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); } TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowerEstimate]") { @@ -110,41 +197,40 @@ TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowe DynamicPrintConfig rib = make_config("rib"); // No tool change and nothing else that prints a tower - neither wall type reserves one. - CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); // Not even on a dual-nozzle printer, where a lone filament still needs no purge. rect.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); rib.set_key_value("nozzle_diameter", new ConfigOptionFloats({0.4, 0.4})); - CHECK_THAT(estimate_wipe_tower_footprint(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); - CHECK_THAT(estimate_wipe_tower_footprint(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rect, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(rib, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); // With a tool change both reserve one, and both respect the stability floor. - CHECK(estimate_wipe_tower_footprint(rect, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); - CHECK(estimate_wipe_tower_footprint(rib, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate(rect, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); + CHECK(estimate(rib, 2, 0.2, height).depth >= WipeTower::get_limit_depth_by_height(float(height))); } TEST_CASE("A rib wall squares the tower and caps the rib width", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config("rib"); // sqrt(200 / 0.2) = 31.62 mm square, plus the 8 mm rib bulge along the diagonal. const double body = std::sqrt(1000.); - WipeTowerFootprint fp = estimate_wipe_tower_footprint(config, 3, 0.2, 5.); - CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + body, 1e-9)); + WipeTowerFootprint fp = estimate(config, 3, 0.2, 5.); + CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + body, 1e-5)); CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); - // The extra rib length grows the footprint. + // The extra rib length runs along the diagonal and grows the footprint by its projection. config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(4.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 3, 0.2, 5.).depth, WithinAbs(8. / std::sqrt(2.) + body + 4., 1e-9)); + CHECK_THAT(estimate(config, 3, 0.2, 5.).depth, WithinAbs((8. + 4.) / std::sqrt(2.) + body, 1e-5)); // A tiny tower caps the rib width at half its depth: 5 mm body, 2.5 mm rib. config.set_key_value("wipe_tower_extra_rib_length", new ConfigOptionFloat(0.)); config.set_key_value("prime_volume", new ConfigOptionFloat(5.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-9)); + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs(2.5 / std::sqrt(2.) + 5., 1e-5)); } TEST_CASE("Every wall and tower type is read the same from a preset and a static config", "[WipeTowerEstimate]") { // The GUI, arrange and the CLI pass a DynamicPrintConfig whose enums are // ConfigOptionEnumGeneric; Print passes a static config whose enums are ConfigOptionEnum. - // The wall type is read by value, so both give the same shape, and the wipe tower - // implementation is not an input to the footprint at all. + // Both the wall type and the planner selection are read by value, so both give the same shape. const char *wall_type = GENERATE("rectangle", "cone", "rib"); const char *tower_type = GENERATE("type1", "type2"); DynamicPrintConfig preset = make_config(wall_type); @@ -156,17 +242,18 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static REQUIRE(static_config.wipe_tower_wall_type.serialize() == wall_type); REQUIRE(static_config.wipe_tower_type.serialize() == tower_type); - // Three filaments purge twice per layer on a 5 mm object: a 50 x 20 rectangle, or a square. - const WipeTowerFootprint fp = estimate_wipe_tower_footprint(preset, 3, 0.2, 5.); - if (std::string(wall_type) == "rib") { - CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); - CHECK_THAT(fp.depth, WithinAbs(8. / std::sqrt(2.) + std::sqrt(1000.), 1e-9)); - } else { - CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); - CHECK_THAT(fp.depth, WithinAbs(20., 1e-9)); - } + const WipeTowerType type = resolve_wipe_tower_type(preset); + CHECK(type == (std::string(tower_type) == "type1" ? WipeTowerType::Type1 : WipeTowerType::Type2)); + CHECK(resolve_wipe_tower_type(static_config) == type); - const WipeTowerFootprint from_static = estimate_wipe_tower_footprint(static_config, 3, 0.2, 5.); + // Three filaments purge twice per layer on a 5 mm object. + const WipeTowerFootprint fp = estimate(preset, 3, 0.2, 5., type); + const WipeTowerFootprint from_static = estimate(static_config, 3, 0.2, 5., type); + CHECK(fp.depth > 0.); + if (std::string(wall_type) == "rib") + CHECK_THAT(fp.width, WithinAbs(fp.depth, 1e-9)); + else + CHECK_THAT(fp.width, WithinAbs(50., 1e-9)); CHECK_THAT(from_static.width, WithinAbs(fp.width, 1e-9)); CHECK_THAT(from_static.depth, WithinAbs(fp.depth, 1e-9)); CHECK_THAT(from_static.brim_width, WithinAbs(fp.brim_width, 1e-9)); @@ -175,8 +262,19 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static // through both storages too. preset.set_deserialize_strict("timelapse_type", "1"); static_config.apply(preset, true); - CHECK(estimate_wipe_tower_footprint(preset, 1, 0.2, 5.).depth > 0.); - CHECK(estimate_wipe_tower_footprint(static_config, 1, 0.2, 5.).depth > 0.); + CHECK(estimate(preset, 1, 0.2, 5., type).depth > 0.); + CHECK(estimate(static_config, 1, 0.2, 5., type).depth > 0.); +} + +TEST_CASE("A Bambu Lab printer always gets the Type1 planner", "[WipeTowerEstimate]") { + DynamicPrintConfig config = make_config(); + config.set_deserialize_strict("wipe_tower_type", "type2"); + config.set_key_value("printer_model", new ConfigOptionString("Bambu Lab X1 Carbon")); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type1); + config.set_key_value("printer_model", new ConfigOptionString("Voron 2.4")); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type2); + config.erase("wipe_tower_type"); + CHECK(resolve_wipe_tower_type(config) == WipeTowerType::Type2); } TEST_CASE("A dual nozzle purges every filament plus the filament change", "[WipeTowerEstimate]") { @@ -186,7 +284,7 @@ TEST_CASE("A dual nozzle purges every filament plus the filament change", "[Wipe config.set_key_value("filament_diameter", new ConfigOptionFloats({1.75, 1.75})); // Two purges of 100 mm3 plus one 10 mm filament change: (200 + 10 * pi * 1.75^2 / 4) / (0.2 * 50). const double change_volume = 10. * PI * 1.75 * 1.75 / 4.; - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs((200. + change_volume) / 10., 1e-9)); } TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTowerEstimate]") { @@ -201,19 +299,18 @@ TEST_CASE("The shipped defaults size the tower from the flush matrix", "[WipeTow const double flush_volume = WipeTower2::estimate_semm_flush_volume(config, 2); const double expected = std::max(double(WipeTower::get_limit_depth_by_height(5.f)), flush_volume / (0.2 * 50.)); - CHECK_THAT(estimate_wipe_tower_footprint(config, 2, 0.2, 5.).depth, WithinAbs(expected, 1e-6)); + CHECK_THAT(estimate(config, 2, 0.2, 5.).depth, WithinAbs(expected, 1e-6)); } TEST_CASE("A config missing a tower key falls back to that key's default", "[WipeTowerEstimate]") { // The signature takes any ConfigBase: an absent key must read as its declared default. const DynamicPrintConfig full = make_config(); DynamicPrintConfig partial = full; - partial.erase("prime_tower_infill_gap"); - REQUIRE(partial.option("prime_tower_infill_gap") == nullptr); + partial.erase("wipe_tower_extra_spacing"); + REQUIRE(partial.option("wipe_tower_extra_spacing") == nullptr); DynamicPrintConfig defaulted = full; - defaulted.set_key_value("prime_tower_infill_gap", - print_config_def.get("prime_tower_infill_gap")->default_value->clone()); - CHECK_THAT(estimate_wipe_tower_footprint(partial, 3, 0.2, 5.).depth, - WithinAbs(estimate_wipe_tower_footprint(defaulted, 3, 0.2, 5.).depth, 1e-9)); + defaulted.set_key_value("wipe_tower_extra_spacing", + print_config_def.get("wipe_tower_extra_spacing")->default_value->clone()); + CHECK_THAT(estimate(partial, 3, 0.2, 5.).depth, WithinAbs(estimate(defaulted, 3, 0.2, 5.).depth, 1e-9)); } From e17965be53168549985551da55439d54cfe5272d Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 14:52:26 +0800 Subject: [PATCH 067/162] Brim and Cone Aware Preview --- src/slic3r/GUI/3DScene.cpp | 41 ++++++++++++++++++++++++++++++++--- src/slic3r/GUI/GLCanvas3D.cpp | 4 +++- src/slic3r/GUI/Selection.cpp | 7 +++--- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index f65c0e3532..a21deaf209 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -20,6 +20,9 @@ #include "libslic3r/AppConfig.hpp" #include "libslic3r/PresetBundle.hpp" #include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTower2.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/Tesselate.hpp" #include "libslic3r/PrintConfig.hpp" @@ -919,6 +922,33 @@ int GLVolumeCollection::load_wipe_tower_preview( GUI::PartPlateList& ppl = GUI::wxGetApp().plater()->get_partplate_list(); std::vector plate_extruders = ppl.get_plate(plate_idx)->get_extruders(true); TriangleMesh wipe_tower_shell = make_cube(width, depth, height); + // The brim is part of the printed footprint: draw it and fold it into the shell so the + // outside-bed shader and the drag clamp react to the true first-layer extent. + const bool show_brim = brim_width > 0.f; + const float brim_height = 0.2f; // one first layer, visual only + TriangleMesh brim_slab; + if (show_brim) { + // A Type2 cone-wall tower's base bulges past the body box — follow the real base + // outline instead of the rectangle. Type1 ignores the cone option. + Polygon cone_base; + { + // Preset enums are ConfigOptionEnumGeneric, so read them by value; the planner is + // resolved as the estimate resolves it, off the printer preset. + const DynamicPrintConfig &print_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig &printer_cfg = GUI::wxGetApp().preset_bundle->printers.get_edited_preset().config; + const ConfigOption *wall_opt = print_cfg.option("wipe_tower_wall_type"); + if (wall_opt != nullptr && wall_opt->getInt() == int(WipeTowerWallType::wtwCone) && resolve_wipe_tower_type(printer_cfg) == WipeTowerType::Type2) + cone_base = WipeTower2::cone_base_polygon(width, depth, height, print_cfg.opt_float("wipe_tower_cone_angle")); + } + if (!cone_base.empty()) { + Polygons brim_outline = offset(cone_base, scaled(brim_width)); + brim_slab = WipeTower::its_make_rib_brim(brim_outline.empty() ? cone_base : brim_outline.front(), brim_height); + } else { + brim_slab = make_cube(width + 2.f * brim_width, depth + 2.f * brim_width, brim_height); + brim_slab.translate({-brim_width, -brim_width, 0.f}); + } + wipe_tower_shell.merge(brim_slab); + } for (int extruder_id : plate_extruders) { if (extruder_id <= extruder_colors.size()) colors.push_back(extruder_colors[extruder_id - 1]); @@ -929,14 +959,19 @@ int GLVolumeCollection::load_wipe_tower_preview( // Orca: make it transparent for(auto& color : colors) color.a(0.66f); + const size_t slab_count = colors.size(); // per-filament body slabs; the brim part comes after + if (show_brim && !colors.empty()) + colors.push_back(colors.front()); volumes.emplace_back(new GLWipeTowerVolume(colors)); GLWipeTowerVolume& v = *dynamic_cast(volumes.back()); v.model_per_colors.resize(colors.size()); - for (int i = 0; i < colors.size(); i++) { - TriangleMesh color_part = make_cube(width, depth / colors.size(), height); - color_part.translate({ 0.f, depth * i / colors.size(), 0. }); + for (size_t i = 0; i < slab_count; i++) { + TriangleMesh color_part = make_cube(width, depth / slab_count, height); + color_part.translate({ 0.f, depth * i / slab_count, 0. }); v.model_per_colors[i].init_from(color_part); } + if (show_brim && !colors.empty()) + v.model_per_colors[slab_count].init_from(brim_slab); v.model.init_from(wipe_tower_shell); v.mesh_raycaster = std::make_unique(std::make_shared(wipe_tower_shell)); v.set_convex_hull(wipe_tower_shell); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 5ad6151c68..8d72405cdd 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2907,7 +2907,9 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re Vec3d wipe_tower_size(footprint.width, footprint.depth, footprint.height); // set_default_wipe_tower_pos_for_plate doesn't rerun when painting changes the - // filament count, so redo its clamp here on every reload. + // filament count, so redo its clamp here on every reload — unconditionally: a + // paint-triggered reload can arrive before the background process invalidates + // psWipeTower, so gating on it would skip the clamp exactly when it is needed. { Vec3d clamped_pos, clamped_size; part_plate->estimate_wipe_tower_polygon(full_config, plate_id, clamped_pos, clamped_size); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index b6d7abde21..e74cc832a8 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1274,9 +1274,10 @@ void Selection::translate(const Vec3d &displacement, TransformationType transfor Vec3d tower_origin = m_cache.volumes_data[i].get_volume_position(); Vec3d actual_displacement = displacement; bool show_read_wipe_tower = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx)->fff_print()->is_step_done(psWipeTower); - float brim_width = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("prime_tower_brim_width"); - - const double margin = show_read_wipe_tower ? WIPE_TOWER_MARGIN : brim_width + 0.5; // 0.5 is the line width of wipe tower + // Both preview volumes carry the brim in their bounding box (the estimate + // preview merges a brim slab, the sliced preview the real brim mesh), so the + // drag clamp only pads by the wipe tower line width. + const double margin = show_read_wipe_tower ? WIPE_TOWER_MARGIN : 0.5; // 0.5 is the line width of wipe tower actual_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()) From 4c583212f58519fff74ff92ba767fb03e42e8e4b Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 15:51:31 +0800 Subject: [PATCH 068/162] Match Drag Margin to Release Clamp --- src/slic3r/GUI/Selection.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index e74cc832a8..84f4a0b836 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1273,11 +1273,9 @@ void Selection::translate(const Vec3d &displacement, TransformationType transfor const Polygons bed_polys{wxGetApp().plater()->get_partplate_list().get_plate(plate_idx)->get_shared_printable_polygon()}; Vec3d tower_origin = m_cache.volumes_data[i].get_volume_position(); Vec3d actual_displacement = displacement; - bool show_read_wipe_tower = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx)->fff_print()->is_step_done(psWipeTower); - // Both preview volumes carry the brim in their bounding box (the estimate - // preview merges a brim slab, the sliced preview the real brim mesh), so the - // drag clamp only pads by the wipe tower line width. - const double margin = show_read_wipe_tower ? WIPE_TOWER_MARGIN : 0.5; // 0.5 is the line width of wipe tower + // Both preview volumes carry the brim in their bounding box, and the release + // clamp holds it WIPE_TOWER_MARGIN inside — same margin, so drops don't snap. + const double margin = WIPE_TOWER_MARGIN; actual_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()) From 869805132ec1ec80f29a9a83f6bc9030b4873600 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 17:07:48 +0800 Subject: [PATCH 069/162] Add Separate Comfort Margin for Auto Placement --- src/libslic3r/libslic3r.h | 3 +++ src/slic3r/GUI/PartPlate.cpp | 25 +++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 6584566f40..c339da566a 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -93,6 +93,9 @@ static constexpr double INSET_OVERLAP_TOLERANCE = 0.4; static constexpr double EXTERNAL_INFILL_MARGIN = 3; static constexpr double BRIDGE_INFILL_MARGIN = 1; static constexpr double WIPE_TOWER_MARGIN = 1.; +// Margin for system placement of the wipe tower (defaults, re-placement, CLI). Positions +// within WIPE_TOWER_MARGIN stay valid: a user drag down to that limit is respected. +static constexpr double WIPE_TOWER_AUTO_MARGIN = 15.; //FIXME Better to use an inline function with an explicit return type. //inline coord_t scale_(coordf_t v) { return coord_t(floor(v / SCALING_FACTOR + 0.5f)); } #define scale_(val) ((val) / SCALING_FACTOR) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index beb244a39c..bf511ec657 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2404,13 +2404,26 @@ arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const Dynamic const BoundingBox cb = get_extents(WipeTower2::cone_base_polygon(w, depth, wt_size.z(), cone_angle_opt->getFloat())); wp_brim_width += float(std::max({0., unscaled(cb.max.x()) - w, unscaled(cb.max.y()) - depth, -unscaled(cb.min.x()), -unscaled(cb.min.y())})); } + // A position valid by WIPE_TOWER_MARGIN is the user's choice and stays untouched; an + // invalid one is re-placed with the comfort margin (falling back to the validity bounds + // on cramped plates). std::clamp is UB if lo > hi, so keep every hi >= lo. const float margin = WIPE_TOWER_MARGIN + wp_brim_width; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("arrange wipe_tower: wp_brim_width %1%") % wp_brim_width; - - // A tower too deep for the plate leaves no valid position: clamping with hi < lo is UB and - // in release silently returns the negative hi. - x = std::clamp(x, margin, std::max(margin, (float)plate_width - w - margin)); - y = std::clamp(y, margin, std::max(margin, (float)plate_depth - depth - margin)); + const float x_hi = std::max(margin, (float) plate_width - w - margin); + const float y_hi = std::max(margin, (float) plate_depth - depth - margin); + const float margin_c = (float) WIPE_TOWER_AUTO_MARGIN + wp_brim_width; + float x_lo_c = margin_c, x_hi_c = (float) plate_width - w - margin_c; + if (x_lo_c > x_hi_c) { x_lo_c = margin; x_hi_c = x_hi; } + float y_lo_c = margin_c, y_hi_c = (float) plate_depth - depth - margin_c; + if (y_lo_c > y_hi_c) { y_lo_c = margin; y_hi_c = y_hi; } + // Drag clamps reach this limit through the volume's bounding box (post-slice: the real + // mesh, a couple of mm inside this reserved estimate), so a drop can land slightly out + // of bounds — snap it onto the bound; only far-out positions get the comfort re-place. + const float tol = 5.f; + if (x < margin - tol || x > x_hi + tol) x = std::clamp(x, x_lo_c, x_hi_c); + else x = std::clamp(x, margin, x_hi); + if (y < margin - tol || y > y_hi + tol) y = std::clamp(y, y_lo_c, y_hi_c); + else y = std::clamp(y, margin, y_hi); wt_pos(0) = x; wt_pos(1) = y; wt_pos(2) = 0.f; @@ -4504,7 +4517,7 @@ void PartPlateList::set_default_wipe_tower_pos_for_plate(int plate_idx, bool ini // Brim-aware margin: the brim extends outward from the tower position. const float brim_width = float(footprint.brim_width); - const float margin = WIPE_TOWER_MARGIN + brim_width; + const float margin = WIPE_TOWER_AUTO_MARGIN + brim_width; // clamp wipe tower position within plate boundaries { From 2fdc16f9f28cdaf5951e0f2e29282dc1f749adeb Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Tue, 8 Sep 2026 14:43:34 +0800 Subject: [PATCH 070/162] Size a no-purge tower at the planners' idle depth Smooth timelapse no longer charges a prime volume it does not purge. A tower printed with no tool change is exactly the idle depth: the stability minimum for Type2, the wrapping detection depth for Type1. Charging a full prime_volume on top made the previewed and arranged tower deeper than the one that is printed. The Type2 half of "a tool change reserves a tower whatever the purge volumes resolve to" arrives with the base commit; here it only has to survive the planner split, since Type1 already reserves per filament. The wipe tower filament only joins the tool ordering when there is a tower to join, which is the has_wipe_tower() half of the guard Print::extruders applies. --- src/libslic3r/GCode/WipeTowerEstimate.cpp | 9 +++---- src/slic3r/GUI/PartPlate.cpp | 6 +++-- tests/libslic3r/test_wipe_tower_estimate.cpp | 26 ++++++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp index 6fee774e9c..f40f2899fd 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.cpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -96,12 +96,9 @@ WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, WipeT // normalize_fdm_2 clearing enable_prime_tower. Its mixed-filament case is not modelled. const bool need_wipe_tower = smooth_timelapse || wrapping; - // No tool change, nothing to purge; smooth timelapse still primes once. - size_t purge_count = 0; - if (filaments_cnt > 1) - purge_count = dual_nozzle ? filaments_cnt : filaments_cnt - 1; - else if (smooth_timelapse) - purge_count = 1; + // A tower printed for one of the reasons above has no tool change to purge for; both + // planners give it the idle depth below and nothing more. + const size_t purge_count = filaments_cnt > 1 ? (dual_nozzle ? filaments_cnt : filaments_cnt - 1) : 0; // Type2 purges one volume per tool change. Type1 plans per filament below; here the volume // only decides whether a tower exists. diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index bf511ec657..e73d43b782 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2341,10 +2341,12 @@ WipeTowerFootprint PartPlate::estimate_wipe_tower_footprint(const DynamicPrintCo if (std::find(plate_extruders.begin(), plate_extruders.end(), id) == plate_extruders.end()) plate_extruders.push_back(id); // The wipe tower filament joins the tool ordering even when unused (Print::extruders), so - // validation counts it. + // validation counts it - but only where there is a tower to join, which is the + // has_wipe_tower() half of that guard. const ConfigOption *wipe_tower_filament_opt = config.option("wipe_tower_filament"); + const ConfigOption *enable_prime_tower_opt = config.option("enable_prime_tower"); const int wipe_tower_filament = wipe_tower_filament_opt != nullptr ? wipe_tower_filament_opt->getInt() : 0; - if (plate_extruders.size() > 1 && wipe_tower_filament > 0 && + if (enable_prime_tower_opt != nullptr && enable_prime_tower_opt->getBool() && plate_extruders.size() > 1 && wipe_tower_filament > 0 && std::find(plate_extruders.begin(), plate_extruders.end(), wipe_tower_filament) == plate_extruders.end()) plate_extruders.push_back(wipe_tower_filament); if (plate_extruders.empty()) diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp index ae0a92f40a..fee5c1f152 100644 --- a/tests/libslic3r/test_wipe_tower_estimate.cpp +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -171,22 +171,28 @@ TEST_CASE("A single filament only gets a tower when one is printed anyway", "[Wi config.set_key_value("raft_layers", new ConfigOptionInt(0)); config.set_deserialize_strict("timelapse_type", "1"); - // Smooth timelapse primes the single filament once: 10 mm, lifted to the floor. + // A tower printed with no tool change is exactly the planner's idle depth: there is + // nothing to purge, and WipeTower2 sizes it at the stability floor. CHECK_THAT(estimate(config, 1, 0.2, 100.).depth, WithinAbs(20., 1e-9)); - CHECK_THAT(estimate(config, 1, 0.2, 5.).depth, WithinAbs(10., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, 5.).depth, WithinAbs(WipeTower::get_limit_depth_by_height(5.f), 1e-9)); } -TEST_CASE("A tool change reserves the stability floor even with nothing to purge", "[WipeTowerEstimate]") { - // The purge volumes are configurable down to zero, but the tool changes are still printed on - // the tower and the generator still floors it, so the estimate has to floor it too. - const double height = GENERATE(5., 100.); - const float floor = WipeTower::get_limit_depth_by_height(float(height)); - DynamicPrintConfig config = make_config(GENERATE("rectangle", "rib")); +TEST_CASE("A tool change reserves a tower even with nothing to purge", "[WipeTowerEstimate]") { + // The purge volumes are configurable down to zero, but the tool changes are still printed + // on the tower and both planners still floor it - so the estimate has to floor it too. + // Type1 plans per filament and already reserves one; Type2 has only the volume to go on. + const double height = GENERATE(5., 100.); + const float floor = WipeTower::get_limit_depth_by_height(float(height)); + const char *wall = GENERATE("rectangle", "rib"); + DynamicPrintConfig config = make_config(wall); config.set_key_value("prime_volume", new ConfigOptionFloat(0.)); + config.set_key_value("filament_prime_volume", new ConfigOptionFloats({0.})); - CHECK(estimate(config, 3, 0.2, height).depth >= floor); + CHECK(estimate(config, 3, 0.2, height, WipeTowerType::Type2).depth >= floor); + CHECK(estimate(config, 3, 0.2, height, WipeTowerType::Type1).depth >= floor); // Still nothing for a lone filament with no other reason. - CHECK_THAT(estimate(config, 1, 0.2, height).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, height, WipeTowerType::Type2).depth, WithinAbs(0., 1e-9)); + CHECK_THAT(estimate(config, 1, 0.2, height, WipeTowerType::Type1).depth, WithinAbs(0., 1e-9)); } TEST_CASE("Both wall types agree on whether there is a tower at all", "[WipeTowerEstimate]") { From 81357695c518c090cf32d18777978dc880d89556 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 14:52:12 +0800 Subject: [PATCH 071/162] Verify WipeTower Footprint at Point of Generation The clamps and validation work from estimates. Once the tower is generated, _make_wipe_tower re-tests the exact first-layer footprint, brim and cone base included, against the printable area and the exclusion zone, so an off-plate tower fails with a clear error instead of exporting unprintable G-code. The rectangle-wall mesh footprint learns the Type2 cone base so that check and the post-generation validation see the real outline. Pre-generation, validation hard-checks the body plus an explicit brim and warns on the estimated auto brim and cone base with the existing "may collide" strings, so the user hears about a marginal position on the first slice rather than only at generation time. Two fff_print fixtures that print a tower at the default position move it onto the 200 mm test bed, as the multifilament fixtures already do: the shipped default y of 220 is off that bed, and the backstop now says so instead of exporting the tower. --- src/libslic3r/Print.cpp | 87 +++++++++++++++++++++++----- src/libslic3r/Print.hpp | 2 +- tests/fff_print/test_gcodewriter.cpp | 3 + tests/fff_print/test_wipe_tower.cpp | 2 + 4 files changed, 78 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 271e410933..1b54a527ea 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1068,33 +1068,57 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, convex_hulls_temp.push_back(wipe_tower_polygon); } } + // Post-generation the mesh bottom already carries the brim. Pre-generation the body grows + // by the brim only when its width is explicit; the auto brim and a Type2 cone base depend on + // the tower height, exact only once generated, so they only warn here - the exact footprint + // is re-checked in _make_wipe_tower. + const bool exact_footprint = print.is_step_done(psWipeTower); + Polygons tower_polys_checked = (!exact_footprint && config.prime_tower_brim_width.value >= 0) ? + offset(convex_hulls_temp, float(scale_(brim_width))) : + convex_hulls_temp; + Polygons tower_polys_estimated; + if (!exact_footprint && !convex_hulls_temp.empty()) { + Polygon base = convex_hulls_temp.front(); + if (config.wipe_tower_wall_type.value == WipeTowerWallType::wtwCone && print.wipe_tower_type() == WipeTowerType::Type2) { + double max_height = 0.; + for (const PrintObject *object : print.objects()) + max_height = std::max(max_height, unscale_(object->size().z())); + base = WipeTower2::cone_base_polygon(width, depth, max_height, config.wipe_tower_cone_angle.value); + base.rotate(Geometry::deg2rad(a)); + base.translate(Point(scale_(x), scale_(y))); + } + tower_polys_estimated = offset(base, float(scale_(brim_width))); + } + // Object proximity stays a body-only warning: brim near-misses would newly warn on + // many setups that print fine. if (!intersection(convex_hulls_other, convex_hulls_temp).empty()) { if (warning) { warning->string += L("Prime Tower") + L(" is too close to others, and collisions may be caused.\n"); } } - if (!intersection(exclude_polys, convex_hulls_temp).empty()) { - /*if (warning) { - warning->string += L("Prime Tower is too close to exclusion area, there may be collisions when printing.\n"); - }*/ + if (!intersection(exclude_polys, tower_polys_checked).empty()) { return {L("Prime Tower") + L(" is too close to an exclusion area, and collisions will be caused.\n")}; } - if (print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, convex_hulls_temp).empty()) { + if (print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, tower_polys_checked).empty()) { return {L("Prime Tower") + L(" is too close to clumping detection area, and collisions will be caused.\n")}; } - // No gate on "is there a tower": one that is not printed estimates to zero, so the hull - // is degenerate and every check passes. Re-deriving it here missed the wrapping-detection + if (warning && !intersection(exclude_polys, tower_polys_estimated).empty()) { + warning->string += L("Prime Tower") + L(" is too close to exclusion area, there may be collisions when printing.") + "\n"; + } + if (warning && print_config.enable_wrapping_detection.value && !intersection({wrapping_poly}, tower_polys_estimated).empty()) { + warning->string += L("Prime Tower") + L(" is too close to clumping detection area, there may be collisions when printing.") + "\n"; + } + // No gate on "is there a tower": one that is not printed estimates to zero, so the hulls + // are degenerate and every check passes. Re-deriving it here missed the wrapping-detection // tower on a single-filament plate. - // Pre-generation, grow the body by the brim to match what the generator draws; - // post-generation the mesh already includes it. Polygons printable_polys = print.get_extruder_shared_printable_polygon(); const Point plate_shift(scale_(plate_origin.x()), scale_(plate_origin.y())); for (Polygon &p : printable_polys) p.translate(plate_shift); - Polygons tower_polys_with_brim = print.is_step_done(psWipeTower) ? - convex_hulls_temp : offset(convex_hulls_temp, float(scale_(brim_width))); - if (!diff(tower_polys_with_brim, printable_polys).empty()) + if (!diff(tower_polys_checked, printable_polys).empty()) return {L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")}; + if (warning && !diff(tower_polys_estimated, printable_polys).empty()) + warning->string += L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n"); return {}; } @@ -4390,7 +4414,9 @@ void Print::_make_wipe_tower() wipe_tower.get_wipe_tower_height(), wipe_tower.get_brim_width(), config().wipe_tower_wall_type.value == WipeTowerWallType::wtwRib, wipe_tower.get_rib_width(), wipe_tower.get_rib_length(), - config().wipe_tower_fillet_wall.value); + config().wipe_tower_fillet_wall.value, + config().wipe_tower_wall_type.value == WipeTowerWallType::wtwCone ? + (float) config().wipe_tower_cone_angle.value : 0.f); const Vec3d origin = Vec3d::Zero(); // FakeWipeTower::pos is a bed-frame translation applied after rotation // (getFakeExtrusionPathsFromWipeTower2 rotates about the local origin), so the @@ -4403,6 +4429,28 @@ void Print::_make_wipe_tower() config().wipe_tower_rotation_angle, config().wipe_tower_cone_angle, {scale_(origin.x()), scale_(origin.y())}); } + + // The clamps and checks above work from estimates; re-test the exact generated footprint + // so an off-plate tower fails with a clear error instead of exporting unprintable G-code + // (validate() only sees the mesh on its next run). + if (m_wipe_tower_data.wipe_tower_mesh_data) { + Polygon footprint = m_wipe_tower_data.wipe_tower_mesh_data->bottom; // includes brim and rib offset + footprint.rotate(Geometry::deg2rad(m_config.wipe_tower_rotation_angle.value)); + footprint.translate(Point(scale_(m_config.wipe_tower_x.get_at(m_plate_index)), + scale_(m_config.wipe_tower_y.get_at(m_plate_index)))); + const Polygons printable_polys = this->get_extruder_shared_printable_polygon(); + if (!printable_polys.empty() && !diff(Polygons{footprint}, printable_polys).empty()) { + const BoundingBox fp = get_extents(footprint); + const BoundingBox pr = get_extents(printable_polys); + BOOST_LOG_TRIVIAL(error) << boost::format("wipe tower footprint [%1%,%2%]-[%3%,%4%] leaves printable [%5%,%6%]-[%7%,%8%]") % + unscaled(fp.min.x()) % unscaled(fp.min.y()) % unscaled(fp.max.x()) % unscaled(fp.max.y()) % + unscaled(pr.min.x()) % unscaled(pr.min.y()) % unscaled(pr.max.x()) % unscaled(pr.max.y()); + throw Slic3r::SlicingError(L("Prime Tower") + L(" is partially outside the printable area, and it cannot be printed.\n")); + } + // The cutter/purge corner is a physical obstacle — the brim must stay out like the body. + if (!intersection(get_bed_excluded_area(m_config), Polygons{footprint}).empty()) + throw Slic3r::SlicingError(L("Prime Tower") + L(" is too close to an exclusion area, and collisions will be caused.\n")); + } } // Generate a recommended G-code output file name based on the format template, default extension, and template parameters @@ -5951,12 +5999,21 @@ ExtrusionLayers FakeWipeTower::getTrueExtrusionLayersFromWipeTower() const } return wtels; } -void WipeTowerData::construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length,bool fillet_wall) +void WipeTowerData::construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length,bool fillet_wall, float cone_angle) { wipe_tower_mesh_data = WipeTowerMeshData{}; float first_layer_height=0.08; //brim height if (width < EPSILON || depth < EPSILON || height < EPSILON) return; - if (!is_rib_wipe_tower || rib_length < EPSILON) { + if (cone_angle > EPSILON && (!is_rib_wipe_tower || rib_length < EPSILON)) { + // Cone tower: the base bulges past the body box; this bottom polygon feeds the + // containment checks, so it must carry the bulge and the brim (cone not lofted). + wipe_tower_mesh_data->real_wipe_tower_mesh = make_cube(width, depth, height); + wipe_tower_mesh_data->bottom = WipeTower2::cone_base_polygon(width, depth, height, cone_angle); + auto brim_bottom = offset(wipe_tower_mesh_data->bottom, scaled(brim_width)); + if (!brim_bottom.empty()) + wipe_tower_mesh_data->bottom = brim_bottom.front(); + wipe_tower_mesh_data->real_brim_mesh = WipeTower::its_make_rib_brim(wipe_tower_mesh_data->bottom, first_layer_height); + } else if (!is_rib_wipe_tower || rib_length < EPSILON) { wipe_tower_mesh_data->real_wipe_tower_mesh = make_cube(width, depth, height); wipe_tower_mesh_data->real_brim_mesh = make_cube(width + 2 * brim_width, depth + 2 * brim_width, first_layer_height); wipe_tower_mesh_data->real_brim_mesh.translate({-brim_width, -brim_width, 0}); diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index af1dc3af40..9822c5520c 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -804,7 +804,7 @@ struct WipeTowerData rib_offset = Vec2f::Zero(); wipe_tower_mesh_data = std::nullopt; } - void construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length, bool fillet_wall); + void construct_mesh(float width, float depth, float height, float brim_width, bool is_rib_wipe_tower, float rib_width, float rib_length, bool fillet_wall, float cone_angle = 0.f); private: // Only allow the WipeTowerData to be instantiated internally by Print, diff --git a/tests/fff_print/test_gcodewriter.cpp b/tests/fff_print/test_gcodewriter.cpp index b09b38e794..c0c9e794b9 100644 --- a/tests/fff_print/test_gcodewriter.cpp +++ b/tests/fff_print/test_gcodewriter.cpp @@ -574,6 +574,9 @@ static DynamicPrintConfig dual_extruder_toolchange_config() config.set_key_value("nozzle_temperature_range_high", new ConfigOptionInts({240, 240})); config.set_key_value("flush_multiplier", new ConfigOptionFloats({1})); config.set_key_value("flush_volumes_matrix", new ConfigOptionFloats({0, 140, 140, 0})); + // Inside the 200x200 test bed; the default y, 220, is not, and generation rejects that. + config.set_key_value("wipe_tower_x", new ConfigOptionFloats({50.})); + config.set_key_value("wipe_tower_y", new ConfigOptionFloats({50.})); return config; } diff --git a/tests/fff_print/test_wipe_tower.cpp b/tests/fff_print/test_wipe_tower.cpp index 5a248075e4..24d50d6e66 100644 --- a/tests/fff_print/test_wipe_tower.cpp +++ b/tests/fff_print/test_wipe_tower.cpp @@ -152,6 +152,8 @@ static DynamicPrintConfig wipe_tower_toolchange_config(const std::string &gcode_ { "outer_wall_filament_id", 2 }, { "inner_wall_filament_id", 2 }, { "enable_prime_tower", true }, + { "wipe_tower_x", 50 }, // inside the 200x200 test bed + { "wipe_tower_y", 50 }, // (the default y, 220, is not) { "layer_height", 0.3 }, { "gcode_flavor", gcode_flavor }, }); From fae77be3db53af3f87a8fdf561f77450f9ace0a6 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Mon, 7 Sep 2026 21:04:15 +0800 Subject: [PATCH 072/162] Place the Wipe Tower in the Profile Validator The validator forces a two-filament print with the prime tower on and slices it at the config default position (x 15, y 220), which lies off any bed shallower than the tower. It calls validate() but slices regardless, so the off-plate tower was exported silently; with the generation-time footprint check it is rejected instead, and 522 of the 1013 printer presets failed the slice check. The validator now positions the tower the way the GUI and CLI do before slicing: beside the centred cube, clear of the edge exclusion strips some beds carry, then pulled inside the printable outline by the tower's own estimated footprint. --- .../OrcaSlicer_profile_validator.cpp | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/dev-utils/OrcaSlicer_profile_validator.cpp b/src/dev-utils/OrcaSlicer_profile_validator.cpp index 67d0ba444d..56acbaa732 100644 --- a/src/dev-utils/OrcaSlicer_profile_validator.cpp +++ b/src/dev-utils/OrcaSlicer_profile_validator.cpp @@ -8,7 +8,11 @@ #define NANOSVGRAST_IMPLEMENTATION #include "nanosvg/nanosvgrast.h" +#include "libslic3r/BoundingBox.hpp" #include "libslic3r/GCode.hpp" +#include "libslic3r/GCode/WipeTower.hpp" +#include "libslic3r/GCode/WipeTowerEstimate.hpp" +#include "libslic3r/Geometry.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/PresetBundle.hpp" @@ -116,15 +120,45 @@ Vec2d printable_area_center(const DynamicPrintConfig &cfg) return 0.5 * (lo + hi); } +// Put the prime tower where the GUI and CLI would before slicing. The config default (x 15, y 220) +// lies off any bed shallower than the tower, and generation rejects an off-plate tower instead of +// exporting it. Beside the centred cube, clear of the edge exclusion strips some beds carry, then +// pulled inside the printable outline by the tower's own estimated footprint, with a few mm of +// clearance so the conflict checker never sees the two touch. +void place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) +{ + const auto *area = cfg.option("printable_area"); + if (area == nullptr || area->values.size() < 3) + return; + const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(cfg, resolve_wipe_tower_type(cfg), {0, 1}, cfg.opt_float("layer_height"), 10.); + if (footprint.depth < EPSILON) + return; + const double margin = WIPE_TOWER_MARGIN + footprint.brim_width; + // The position is the tower's own origin; a rotated tower extends from it in another + // direction, so place the rotated box's extents rather than the origin. + Slic3r::Polygon box({Point::new_scale(0., 0.), Point::new_scale(footprint.width, 0.), Point::new_scale(footprint.width, footprint.depth), Point::new_scale(0., footprint.depth)}); + box.rotate(Geometry::deg2rad(cfg.opt_float("wipe_tower_rotation_angle"))); + const BoundingBox local = get_extents(box); + const Vec2d lo = unscale(local.min); + const Vec2d size = unscale(local.max) - lo; + Vec2d pos(center.x() + 5. + margin + 5. - lo.x(), center.y() - size.y() / 2. - lo.y()); + box.translate(Point::new_scale(pos.x(), pos.y())); + const Vec2f move = WipeTower::move_box_inside_polygon(get_extents(box), Polygons{Polygon::new_scale(area->values)}, scaled(margin)); + pos += move.cast(); + cfg.option("wipe_tower_x", true)->values = {pos.x()}; + cfg.option("wipe_tower_y", true)->values = {pos.y()}; +} + // Slice one centered cube that switches from filament 1 to filament 2 partway up, so exactly one // filament change fires, then export. The change drives the printer's own change_filament_gcode: on a // single-nozzle machine it rides the AMS prime tower (append_tcr), on a multi-nozzle machine it routes // through the nozzle swap (set_extruder / append_tcr2) - the engine picks the path from the printer's // topology, so one model covers both. An undefined placeholder in any shipped custom g-code throws // Slic3r::PlaceholderParserError from export. -std::string slice_two_color_cube_and_export(const DynamicPrintConfig &cfg, bool is_bbl) +std::string slice_two_color_cube_and_export(DynamicPrintConfig cfg, bool is_bbl) { const Vec2d center = printable_area_center(cfg); + place_wipe_tower(cfg, center); TriangleMesh m = make_cube(10, 10, 10); m.translate(float(center.x() - 5.), float(center.y() - 5.), 0.f); From 2f2a6bc3b5039603d3b2b78fcd97104e7474a196 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Mon, 7 Sep 2026 19:41:01 +0800 Subject: [PATCH 073/162] Share the Estimated First-Layer Outline of the Wipe Tower The preview brim, the placement margin and the pre-generation validation warning each decided on their own whether the tower has a Type2 cone base, reading the wall type and cone angle three different ways. The preview's read cast the preset's enum to ConfigOptionEnum, which a preset-shaped config never holds, so the cone base was never previewed. estimate_wipe_tower_first_layer_outline now answers that question once, beside the footprint estimate, from the config and the resolved planner; all three sites take the outline from it. The libslic3r case reads the outline off a preset-shaped config, where the old cast came back empty. --- src/libslic3r/GCode/WipeTowerEstimate.cpp | 11 ++++++++ src/libslic3r/GCode/WipeTowerEstimate.hpp | 8 ++++++ src/libslic3r/Print.cpp | 15 ++++------ src/slic3r/GUI/3DScene.cpp | 27 +++++------------- src/slic3r/GUI/PartPlate.cpp | 12 ++------ tests/libslic3r/test_wipe_tower_estimate.cpp | 29 ++++++++++++++++++++ 6 files changed, 64 insertions(+), 38 deletions(-) diff --git a/src/libslic3r/GCode/WipeTowerEstimate.cpp b/src/libslic3r/GCode/WipeTowerEstimate.cpp index f40f2899fd..d8cfe74527 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.cpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.cpp @@ -37,6 +37,17 @@ WipeTowerType resolve_wipe_tower_type(const ConfigBase &config) return type != nullptr ? WipeTowerType(type->getInt()) : WipeTowerType::Type2; } +Polygon estimate_wipe_tower_first_layer_outline(const ConfigBase &config, WipeTowerType tower_type, double width, double depth, double height) +{ + // Type1 ignores the cone option. The wall type is read by value: a preset-shaped config + // holds it as ConfigOptionEnumGeneric, which a cast to ConfigOptionEnum cannot see. + const ConfigOption *wall_type = option_of(config, "wipe_tower_wall_type"); + const ConfigOption *cone_angle = option_of(config, "wipe_tower_cone_angle"); + const bool cone = tower_type == WipeTowerType::Type2 && wall_type != nullptr && + wall_type->getInt() == int(WipeTowerWallType::wtwCone) && cone_angle != nullptr; + return WipeTower2::cone_base_polygon(width, depth, height, cone ? cone_angle->getFloat() : 0.); +} + WipeTowerFootprint estimate_wipe_tower_footprint(const ConfigBase &config, WipeTowerType tower_type, const std::vector &filament_ids, double layer_height, double max_object_height) { WipeTowerFootprint footprint; diff --git a/src/libslic3r/GCode/WipeTowerEstimate.hpp b/src/libslic3r/GCode/WipeTowerEstimate.hpp index 5b333005e8..387028649b 100644 --- a/src/libslic3r/GCode/WipeTowerEstimate.hpp +++ b/src/libslic3r/GCode/WipeTowerEstimate.hpp @@ -2,6 +2,8 @@ #include +#include "../Polygon.hpp" + namespace Slic3r { class ConfigBase; @@ -23,6 +25,12 @@ struct WipeTowerFootprint // the GUI and CLI placement can resolve it without a Print. WipeTowerType resolve_wipe_tower_type(const ConfigBase &config); +// First-layer outline of an estimated tower in tower-local scaled coordinates, brim excluded: +// the body box, or for a Type2 cone wall the box unioned with the cone's base. The preview, +// the placement margin and validation all take the outline from here so they cannot disagree +// about whether a cone exists. +Polygon estimate_wipe_tower_first_layer_outline(const ConfigBase &config, WipeTowerType tower_type, double width, double depth, double height); + // filament_ids: 0-based filaments purged on the plate. The config cannot see custom G-code tool // changes, so ids derived from the model must include them // (Print::extruders(true)) or a real tower is sized as if it were never built. diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1b54a527ea..60f747ce04 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1078,15 +1078,12 @@ static StringObjectException layered_print_cleareance_valid(const Print &print, convex_hulls_temp; Polygons tower_polys_estimated; if (!exact_footprint && !convex_hulls_temp.empty()) { - Polygon base = convex_hulls_temp.front(); - if (config.wipe_tower_wall_type.value == WipeTowerWallType::wtwCone && print.wipe_tower_type() == WipeTowerType::Type2) { - double max_height = 0.; - for (const PrintObject *object : print.objects()) - max_height = std::max(max_height, unscale_(object->size().z())); - base = WipeTower2::cone_base_polygon(width, depth, max_height, config.wipe_tower_cone_angle.value); - base.rotate(Geometry::deg2rad(a)); - base.translate(Point(scale_(x), scale_(y))); - } + double max_height = 0.; + for (const PrintObject *object : print.objects()) + max_height = std::max(max_height, unscale_(object->size().z())); + Polygon base = estimate_wipe_tower_first_layer_outline(config, print.wipe_tower_type(), width, depth, max_height); + base.rotate(Geometry::deg2rad(a)); + base.translate(Point(scale_(x), scale_(y))); tower_polys_estimated = offset(base, float(scale_(brim_width))); } // Object proximity stays a body-only warning: brim near-misses would newly warn on diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index a21deaf209..6dbea1272a 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -21,7 +21,6 @@ #include "libslic3r/PresetBundle.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/WipeTower.hpp" -#include "libslic3r/GCode/WipeTower2.hpp" #include "libslic3r/GCode/WipeTowerEstimate.hpp" #include "libslic3r/Tesselate.hpp" #include "libslic3r/PrintConfig.hpp" @@ -928,25 +927,13 @@ int GLVolumeCollection::load_wipe_tower_preview( const float brim_height = 0.2f; // one first layer, visual only TriangleMesh brim_slab; if (show_brim) { - // A Type2 cone-wall tower's base bulges past the body box — follow the real base - // outline instead of the rectangle. Type1 ignores the cone option. - Polygon cone_base; - { - // Preset enums are ConfigOptionEnumGeneric, so read them by value; the planner is - // resolved as the estimate resolves it, off the printer preset. - const DynamicPrintConfig &print_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; - const DynamicPrintConfig &printer_cfg = GUI::wxGetApp().preset_bundle->printers.get_edited_preset().config; - const ConfigOption *wall_opt = print_cfg.option("wipe_tower_wall_type"); - if (wall_opt != nullptr && wall_opt->getInt() == int(WipeTowerWallType::wtwCone) && resolve_wipe_tower_type(printer_cfg) == WipeTowerType::Type2) - cone_base = WipeTower2::cone_base_polygon(width, depth, height, print_cfg.opt_float("wipe_tower_cone_angle")); - } - if (!cone_base.empty()) { - Polygons brim_outline = offset(cone_base, scaled(brim_width)); - brim_slab = WipeTower::its_make_rib_brim(brim_outline.empty() ? cone_base : brim_outline.front(), brim_height); - } else { - brim_slab = make_cube(width + 2.f * brim_width, depth + 2.f * brim_width, brim_height); - brim_slab.translate({-brim_width, -brim_width, 0.f}); - } + // The brim follows the real first-layer outline: a Type2 cone-wall tower's base bulges + // past the body box. The wall type and angle are print settings, the planner a printer one. + const DynamicPrintConfig &print_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig &printer_cfg = GUI::wxGetApp().preset_bundle->printers.get_edited_preset().config; + const Polygon outline = estimate_wipe_tower_first_layer_outline(print_cfg, resolve_wipe_tower_type(printer_cfg), width, depth, height); + const Polygons brim_outline = offset(outline, scaled(brim_width)); + brim_slab = WipeTower::its_make_rib_brim(brim_outline.empty() ? outline : brim_outline.front(), brim_height); wipe_tower_shell.merge(brim_slab); } for (int extruder_id : plate_extruders) { diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index e73d43b782..90e2c96ab6 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -22,7 +22,6 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/Polygon.hpp" #include "libslic3r/GCode/WipeTowerEstimate.hpp" -#include "libslic3r/GCode/WipeTower2.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/BoundingBox.hpp" #include "libslic3r/Geometry.hpp" @@ -2398,14 +2397,9 @@ arrangement::ArrangePolygon PartPlate::estimate_wipe_tower_polygon(const Dynamic // clamp put the brim off the bed. Matches set_default_wipe_tower_pos_for_plate. float wp_brim_width = float(footprint.brim_width); // A Type2 stabilization cone bulges past the body box like a brim does - fold its worst-axis - // bulge into the same margin (Type1 ignores the cone option). - const auto *cone_wall_opt = config.option("wipe_tower_wall_type"); - const auto *cone_angle_opt = config.option("wipe_tower_cone_angle"); - if (cone_wall_opt != nullptr && cone_wall_opt->getInt() == int(WipeTowerWallType::wtwCone) && cone_angle_opt != nullptr && - cone_angle_opt->getFloat() > EPSILON && resolve_wipe_tower_type(config) == WipeTowerType::Type2) { - const BoundingBox cb = get_extents(WipeTower2::cone_base_polygon(w, depth, wt_size.z(), cone_angle_opt->getFloat())); - wp_brim_width += float(std::max({0., unscaled(cb.max.x()) - w, unscaled(cb.max.y()) - depth, -unscaled(cb.min.x()), -unscaled(cb.min.y())})); - } + // bulge into the same margin. + const BoundingBox outline = get_extents(estimate_wipe_tower_first_layer_outline(config, resolve_wipe_tower_type(config), w, depth, wt_size.z())); + wp_brim_width += float(std::max({0., unscaled(outline.max.x()) - w, unscaled(outline.max.y()) - depth, -unscaled(outline.min.x()), -unscaled(outline.min.y())})); // A position valid by WIPE_TOWER_MARGIN is the user's choice and stays untouched; an // invalid one is re-placed with the comfort margin (falling back to the validity bounds // on cramped plates). std::clamp is UB if lo > hi, so keep every hi >= lo. diff --git a/tests/libslic3r/test_wipe_tower_estimate.cpp b/tests/libslic3r/test_wipe_tower_estimate.cpp index fee5c1f152..20644200f3 100644 --- a/tests/libslic3r/test_wipe_tower_estimate.cpp +++ b/tests/libslic3r/test_wipe_tower_estimate.cpp @@ -1,5 +1,7 @@ #include +#include "libslic3r/BoundingBox.hpp" +#include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/WipeTower.hpp" #include "libslic3r/GCode/WipeTower2.hpp" #include "libslic3r/GCode/WipeTowerEstimate.hpp" @@ -272,6 +274,33 @@ TEST_CASE("Every wall and tower type is read the same from a preset and a static CHECK(estimate(static_config, 1, 0.2, 5., type).depth > 0.); } +TEST_CASE("The first-layer outline bulges only for a Type2 cone wall", "[WipeTowerEstimate]") { + // Read off a preset-shaped config, whose enums are ConfigOptionEnumGeneric: a cast to + // ConfigOptionEnum sees no wall type there and would never find the cone. + DynamicPrintConfig config = make_config("cone"); + config.set_key_value("wipe_tower_cone_angle", new ConfigOptionFloat(25.)); + REQUIRE(dynamic_cast(config.option("wipe_tower_wall_type")) != nullptr); + const Polygon box = Polygon::new_scale({{0., 0.}, {35., 0.}, {35., 20.}, {0., 20.}}); + auto is_box = [&box](const Polygon &outline) { return diff(Polygons{outline}, Polygons{box}).empty(); }; + + // A 25-degree cone on a 100 mm tower has a 22 mm base radius, past the 10 mm half-depth. + const Polygon cone = estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type2, 35., 20., 100.); + CHECK(unscaled(get_extents(cone).max.y()) > 20. + 1.); + CHECK(diff(Polygons{box}, Polygons{cone}).empty()); + // Type1 ignores the cone option, and the other wall types have no cone. + CHECK(is_box(estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type1, 35., 20., 100.))); + for (const char *wall_type : {"rectangle", "rib"}) { + config.set_deserialize_strict("wipe_tower_wall_type", wall_type); + CHECK(is_box(estimate_wipe_tower_first_layer_outline(config, WipeTowerType::Type2, 35., 20., 100.))); + } + // The static config Print holds gives the same outline. + config.set_deserialize_strict("wipe_tower_wall_type", "cone"); + FullPrintConfig static_config; + static_config.apply(config, true); + const Polygon from_static = estimate_wipe_tower_first_layer_outline(static_config, WipeTowerType::Type2, 35., 20., 100.); + CHECK(from_static.points == cone.points); +} + TEST_CASE("A Bambu Lab printer always gets the Type1 planner", "[WipeTowerEstimate]") { DynamicPrintConfig config = make_config(); config.set_deserialize_strict("wipe_tower_type", "type2"); From 284539d76245243837848e18fafed595284177ef Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 3 Sep 2026 14:52:26 +0800 Subject: [PATCH 074/162] [CLI]: Place Wipe Tower before Slicing A plain CLI slice ran none of the placement sites, so a stored or default tower position that no longer fits the tower the plate needs went straight to the generation-time error. The slice loop now applies the same clamp the GUI applies on reload to every plate it is about to slice, skipping only plates that print no tower: by-object plates with more than one instance, and plates whose footprint estimate is empty (which covers single-filament plates without smooth timelapse, wrapping detection or a raft). The plate's filaments come from the same config-driven derivation the estimate uses everywhere else. The two arrange sites read the brim width from the right option when padding the default position; an auto brim uses its 8 mm cap there, since the object heights are unknown before the estimate runs. --- src/OrcaSlicer.cpp | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 5b1d2da1bf..1f85cf7358 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -4832,7 +4832,10 @@ int CLI::run(int argc, char **argv) int plate_count = partplate_list.get_plate_count(); auto printer_structure_opt = m_print_config.option>("printer_structure"); - const float tower_brim_width = m_print_config.option("prime_tower_width", true)->value; + // This margin only pre-adjusts the default away from the near edges; + // estimate_wipe_tower_polygon below computes the real clamped position. + float tower_brim_width = m_print_config.option("prime_tower_brim_width", true)->value; + if (tower_brim_width < 0.f) tower_brim_width = 8.f; // auto: object heights unknown here, 8 mm is the auto cap const float tower_margin = WIPE_TOWER_MARGIN + tower_brim_width; // set the default position, the same with print config(left top) @@ -5129,7 +5132,10 @@ int CLI::run(int argc, char **argv) int extruder_size = used_filament_set.size(); auto printer_structure_opt = m_print_config.option>("printer_structure"); - const float tower_brim_width = m_print_config.option("prime_tower_width", true)->value; + // This margin only pre-adjusts the default away from the near edges; + // estimate_wipe_tower_polygon below computes the real clamped position. + float tower_brim_width = m_print_config.option("prime_tower_brim_width", true)->value; + if (tower_brim_width < 0.f) tower_brim_width = 8.f; // auto: object heights unknown here, 8 mm is the auto cap const float tower_margin = WIPE_TOWER_MARGIN + tower_brim_width; // set the default position, the same with print config(left top) float x = WIPE_TOWER_DEFAULT_X_POS; @@ -5792,6 +5798,34 @@ int CLI::run(int argc, char **argv) //Print fff_print; std::vector plate_triangle_counts(partplate_list.get_plate_count(), 0); + // The stored (or default) tower position may not fit the tower these plates + // need, and no CLI placement site runs on a plain slice - mirror the GUI's + // reload clamp and fit every plate's tower into the printable area first. + if (m_print_config.option("enable_prime_tower", true)->value) { + for (int index = 0; index < partplate_list.get_plate_count(); index++) { + if ((plate_to_slice != 0) && (plate_to_slice != (index + 1))) + continue; + Slic3r::GUI::PartPlate *plate = partplate_list.get_plate(index); + // Printing by object disables the tower only with more than one instance. + bool is_seq_print = false; + get_print_sequence(plate, m_print_config, is_seq_print); + if (is_seq_print && plate->printable_instance_size() > 1) + continue; + // An empty estimate is a plate that prints no tower (one filament and + // neither smooth timelapse, wrapping detection nor a raft). + Vec3d wt_pos, wt_size; + plate->estimate_wipe_tower_polygon(m_print_config, index, wt_pos, wt_size); + if (wt_size(0) < EPSILON || wt_size(1) < EPSILON) + continue; + ConfigOptionFloat wt_x_opt((float) wt_pos(0)); + ConfigOptionFloat wt_y_opt((float) wt_pos(1)); + m_print_config.option("wipe_tower_x", true)->set_at(&wt_x_opt, index, 0); + m_print_config.option("wipe_tower_y", true)->set_at(&wt_y_opt, index, 0); + BOOST_LOG_TRIVIAL(info) << boost::format("plate %1%: wipe tower clamped to {%2%, %3%}, size {%4%, %5%}") + % (index + 1) % wt_pos(0) % wt_pos(1) % wt_size(0) % wt_size(1); + } + } + while(!finished) { //BBS: slice every partplate one by one From d112a0af290671599490678ef2a5cf7601209a16 Mon Sep 17 00:00:00 2001 From: MAVProxyUser Date: Wed, 9 Sep 2026 06:39:08 -0400 Subject: [PATCH 075/162] Fix two stack buffer overflows in ADMesh stl_read (unbounded solid name + MW metadata parse) (#15594) Fix two stack buffer overflows in ADMesh stl_read (solid name + MW parse) Bound the ASCII-STL solid-name fscanf scanset to the buffer size, and bound the OrcaSlicer-specific "MW" metadata sscanf %s conversions to their buffers: - fscanf(fp, " solid %[^\n]", solid_name) -> %255[^\n] (solid_name[256]) - sscanf(mw_position+3, "%s %s %s", ...) -> %15s %127s %15s (version_str[16], model_id_str[128], country_code_str[16]) Both are reachable by opening a crafted .stl and overwrite saved stack state (instruction-pointer control on the no-PAC arm64 macOS build). The solid-name defect is inherited from the shared ADMesh loader (bambulab/BambuStudio#12153); the MW parse is OrcaSlicer-specific. Co-authored-by: Kevin Finisterre Co-authored-by: Claude Opus 4.8 --- deps_src/admesh/stlinit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps_src/admesh/stlinit.cpp b/deps_src/admesh/stlinit.cpp index a69bd5497a..9d44cdf266 100644 --- a/deps_src/admesh/stlinit.cpp +++ b/deps_src/admesh/stlinit.cpp @@ -162,7 +162,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor rewind(fp); try{ char solid_name[256]; - int res_solid = fscanf(fp, " solid %[^\n]", solid_name); + int res_solid = fscanf(fp, " solid %255[^\n]", solid_name); if (res_solid == 1) { char* mw_position = strstr(solid_name, "MW"); if (mw_position != NULL) { @@ -170,7 +170,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor char version_str[16]; char model_id_str[128]; char country_code_str[16]; - int num_values = sscanf(mw_position + 3, "%s %s %s", version_str, model_id_str, country_code_str); + int num_values = sscanf(mw_position + 3, "%15s %127s %15s", version_str, model_id_str, country_code_str); if (num_values == 3) { if (strcmp(version_str, "1.0") == 0) { model_id = model_id_str; From 10c123f2aa4b815116e9f8f5c74708b04d096469 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 05:41:51 -0500 Subject: [PATCH 076/162] build: clear 6 warnings - data passed as ImGui format strings (#15585) ImGui::Text and ImGui::TextColored take a printf format, so these six sites passed data where a literal belonged. A % in that data reads a vararg that was never supplied. Three sites in GLCanvas3D's paint toolbar passed filament text, which comes from the filament preset config and is user-editable. Two more passed translated strings, where a % in any of the 23 catalogs does the same. GLGizmoSimplify passed its progress label. That label had been built with an escaped %% because it was being used as a format string. Passing it as an argument instead needs a single %, so it still renders as "42%". ToUTF8() returns a buffer class, which converts to const char* for a named parameter but not through varargs, so those two sites need .data(). GLGizmoSimplify.cpp:335 is unchanged, because _u8L("%d triangles") is passed with a real argument and has to stay a format string. --- src/slic3r/GUI/GLCanvas3D.cpp | 10 +++++----- src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 8d72405cdd..6921a72271 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -9780,18 +9780,18 @@ void GLCanvas3D::_render_paint_toolbar() const ImVec2 number_label_size = ImGui::CalcTextSize(std::to_string(i + 1).c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - number_label_size.x) / 2); - ImGui::TextColored(text_color, std::to_string(i + 1).c_str()); + ImGui::TextColored(text_color, "%s", std::to_string(i + 1).c_str()); imgui.pop_bold_font(); ImVec2 filament_first_line_label_size = ImGui::CalcTextSize(filament_text_first_line[i].c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y + number_label_size.y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - filament_first_line_label_size.x) / 2); - ImGui::TextColored(text_color, filament_text_first_line[i].c_str()); + ImGui::TextColored(text_color, "%s", filament_text_first_line[i].c_str()); ImVec2 filament_second_line_label_size = ImGui::CalcTextSize(filament_text_second_line[i].c_str()); ImGui::SetCursorPosY(cursor_y + text_offset_y + number_label_size.y + filament_first_line_label_size.y); ImGui::SetCursorPosX(spacing + i * (spacing + button_size.x) + (button_size.x - filament_second_line_label_size.x) / 2); - ImGui::TextColored(text_color, filament_text_second_line[i].c_str()); + ImGui::TextColored(text_color, "%s", filament_text_second_line[i].c_str()); } if (ImGui::GetWindowWidth() == constraint_window_width) { @@ -10018,9 +10018,9 @@ void GLCanvas3D::_render_assemble_info() const double size1 = m_selection.get_bounding_box().size()(1); double size2 = m_selection.get_bounding_box().size()(2); if (!m_selection.is_empty()) { - ImGui::Text(_L("Volume:").ToUTF8()); ImGui::SameLine(caption_max); + ImGui::Text("%s", _L("Volume:").ToUTF8().data()); ImGui::SameLine(caption_max); ImGui::Text("%.2f", size0 * size1 * size2); - ImGui::Text(_L("Size:").ToUTF8()); ImGui::SameLine(caption_max); + ImGui::Text("%s", _L("Size:").ToUTF8().data()); ImGui::SameLine(caption_max); ImGui::Text("%.2f x %.2f x %.2f", size0, size1, size2); } imgui->end(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index f4fa1fbbb9..6a08d5eff4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -343,12 +343,12 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing,ImVec2(10,20)); if (is_worker_running) { // apply or preview // draw progress bar - std::string progress_text = GUI::format("%1%", std::to_string(progress)) + "%%"; + std::string progress_text = GUI::format("%1%", std::to_string(progress)) + "%"; ImVec2 progress_size(bottom_left_width - space_size, 0.0f); ImGui::BBLProgressBar2(progress / 100., progress_size); ImGui::SameLine(); ImGui::AlignTextToFramePadding(); - ImGui::TextColored(ImVec4(0.42f, 0.42f, 0.42f, 1.00f), progress_text.c_str()); + ImGui::TextColored(ImVec4(0.42f, 0.42f, 0.42f, 1.00f), "%s", progress_text.c_str()); ImGui::SameLine(bottom_left_width + slider_width + m_imgui->scaled(1.0f)); } else { ImGui::Dummy(ImVec2(bottom_left_width - space_size, -1)); From c70a6135483f2e54826dbc4f2bb64b2b40a868c7 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 05:43:08 -0500 Subject: [PATCH 077/162] build: clear 8 warnings - && inside || without parentheses (#15587) Every edit makes the precedence the compiler already applies explicit. None of them regroups an expression, so behavior is unchanged at all eight sites. Strip parentheses and whitespace from the diff and the token stream matches. GCodeProcessor.cpp:1472 tests == where the symmetric clause below tests !=, which reads like a typo and is not one. A comment now explains why. OrcaSlicer.cpp:4760 was the only judgment call. Its leading !is_seq_print is bare while both operands are parenthesized, so the written form matches what the compiler does. Kept rather than guessed at. --- src/OrcaSlicer.cpp | 2 +- src/libslic3r/GCode/GCodeProcessor.cpp | 8 +++++--- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 4 ++-- src/slic3r/GUI/SelectMachine.cpp | 2 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 4 ++-- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 1f85cf7358..15e7f85c46 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -4826,7 +4826,7 @@ int CLI::run(int argc, char **argv) } } - if (!arrange_cfg.is_seq_print && (assemble_plate.filaments_count > 1)||(enable_wrapping_detect && !current_wrapping_exclude_area.empty())) + if ((!arrange_cfg.is_seq_print && (assemble_plate.filaments_count > 1))||(enable_wrapping_detect && !current_wrapping_exclude_area.empty())) { //prepare the wipe tower int plate_count = partplate_list.get_plate_count(); diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index cd6c494f33..0b3db0323b 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1468,9 +1468,11 @@ void GCodeProcessor::run_post_process() // Append a per-filament usage block at a filament change. auto handle_filament_change = [&](int filament_id, int cur_line_id, int nozzle_id) { - // skip filament changes emitted inside the machine start / end gcode - if (m_machine_start_gcode_end_line_id == (unsigned int) (-1) && (unsigned int) (cur_line_id) < m_machine_start_gcode_end_line_id || - m_machine_end_gcode_start_line_id != (unsigned int) (-1) && (unsigned int) (cur_line_id) > m_machine_end_gcode_start_line_id) + // Skip filament changes emitted inside the machine start / end gcode. One forward pass assigns + // the tag ids and tests them in the same loop, so inside the start gcode the end tag is unseen + // and the id still holds the sentinel. That is why the first clause tests == and the second !=. + if ((m_machine_start_gcode_end_line_id == (unsigned int) (-1) && (unsigned int) (cur_line_id) < m_machine_start_gcode_end_line_id) || + (m_machine_end_gcode_start_line_id != (unsigned int) (-1) && (unsigned int) (cur_line_id) > m_machine_end_gcode_start_line_id)) return; if (!m_filament_blocks.empty()) m_filament_blocks.back().upper_gcode_id = cur_line_id; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 6921a72271..556faaa763 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2191,7 +2191,7 @@ void GLCanvas3D::render(bool only_init) // Negative coordinate means out of the window, likely because the window was deactivated. // In that case the tooltip should be hidden. - if (m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0. || has_mouse_capture()) { // ORCA continue to capture mouse pos mid drag + if ((m_mouse.position.x() >= 0. && m_mouse.position.y() >= 0.) || has_mouse_capture()) { // ORCA continue to capture mouse pos mid drag if (tooltip.empty()) tooltip = m_layers_editing.get_tooltip(*this); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2d8816960b..109d7b3c10 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3667,8 +3667,8 @@ void Sidebar::update_presets(Preset::Type preset_type) // so extruders without an explicit sub-nozzle count never offer Hybrid. A nullable-int // nil is INT_MAX (> 1) and would otherwise falsely pass the gate, so exclude it too. if (boost::algorithm::contains(extruder_variants->values[index], type + " " + nozzle_volumes_def->enum_labels[i]) || - extruder_max_nozzle_count->get_at(index) > 1 && extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && - nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid) { + (extruder_max_nozzle_count->get_at(index) > 1 && extruder_max_nozzle_count->get_at(index) != ConfigOptionIntsNullable::nil_value() && + nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == nvtHybrid)) { if (nozzle_volumes_def->enum_keys_map->at(nozzle_volumes_def->enum_values[i]) == NozzleVolumeType::nvtHighFlow &&(diameter == "0.2" || is_skip_high_flow_printer(printer_model))) continue; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 41ee523fbe..629aef7296 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3073,7 +3073,7 @@ static bool _HasExt(const std::vector &ams_mapping_result) { }; for (const auto &info : ams_mapping_result) { - if (info.ams_id == VIRTUAL_AMS_MAIN_ID_STR || info.ams_id == VIRTUAL_AMS_DEPUTY_ID_STR && !info.ams_id.empty()) { + if (info.ams_id == VIRTUAL_AMS_MAIN_ID_STR || (info.ams_id == VIRTUAL_AMS_DEPUTY_ID_STR && !info.ams_id.empty())) { return true; } } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 5c69466cfa..0cb35fb139 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1281,8 +1281,8 @@ static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& } auto opt_vector = dynamic_cast(option); - if (option->is_scalar() && config.option(opt_key)->is_nil() || - option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx)) + if ((option->is_scalar() && config.option(opt_key)->is_nil()) || + (option->is_vector() && opt_vector && opt_idx >= 0 && opt_idx < opt_vector->size() && opt_vector->is_nil(opt_idx))) return _L("N/A"); wxString out; From a3c9041c10b23c2112a506d5cb857da0390d9f95 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 05:45:25 -0500 Subject: [PATCH 078/162] build: clear 2 warnings - sites GCC reports and Clang does not (#15597) Both are in our own code and neither shows up in a clang-cl or clang census, so the Windows and CI matrices have never reported them. FillRectilinear.cpp draws two trapezoid diagrams whose lines end in a backslash, which continues a // comment onto the next line. GCC calls that a multi-line comment. The diagrams are now block comments, where the rule does not apply, and the drawings are unchanged. CutObjectBase has a user-provided operator= and a virtual destructor, either of which deprecates its implicitly generated copy constructor. bbs_3mf.cpp copies the type through CutObjectInfo. The copy constructor is now declared and defaulted, leaving the class with no implicit copy member. Move operations were already suppressed by the user-provided operator=, so nothing changes there. --- src/libslic3r/Fill/FillRectilinear.cpp | 19 +++++++++++-------- src/libslic3r/ObjectID.hpp | 4 ++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp index db340748ab..7edf350081 100644 --- a/src/libslic3r/Fill/FillRectilinear.cpp +++ b/src/libslic3r/Fill/FillRectilinear.cpp @@ -3090,10 +3090,11 @@ bool FillRectilinear::fill_surface_trapezoidal( case 0: // Grid / Trapezoidal { // Generate a non-crossing trapezoidal pattern to avoid overextrusion at intersections when `multiline > 1`. - // P2--P3 - // / \ - // P0_P1/ \P4_ - // + /* + * P2--P3 + * / \ + * P0_P1/ \P4_ + */ // P0xP1x=P4xP0x=d1/2 // P2xP3x=d1 // P1yP2y=P2yP3y=d2 @@ -3171,10 +3172,12 @@ bool FillRectilinear::fill_surface_trapezoidal( case 1: // Triangular { // Generate a non-crossing trapezoidal pattern with a base line below. - // P1-P2 - // / \ - // P0/ \P3_P4 - // ---------------- + /* + * P1-P2 + * / \ + * P0/ \P3_P4 + * ---------------- + */ // P1xP2x=P3xP4x=d2 // P0yP1y=P2yP3y=h-2d1 // diff --git a/src/libslic3r/ObjectID.hpp b/src/libslic3r/ObjectID.hpp index f2697b74f5..56042bbaa3 100644 --- a/src/libslic3r/ObjectID.hpp +++ b/src/libslic3r/ObjectID.hpp @@ -170,6 +170,10 @@ public: this->m_check_sum = rhs.check_sum(); this->m_connectors_cnt = rhs.connectors_cnt(); } + // A user-declared copy assignment or destructor deprecates the implicitly generated + // copy constructor, and this class has both, so declare it rather than rely on it. + CutObjectBase(const CutObjectBase &) = default; + CutObjectBase &operator=(const CutObjectBase &other) { this->copy(other); From 46180c3f543964e5349fa0a2db10de0b37184930 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 05:51:10 -0500 Subject: [PATCH 079/162] build: clear 3 warnings - a precedence bug, an arm64-only pragma, and a CLI error label (#15601) * build: clear 2 warnings - a precedence bug and an arm64-only pragma Both were found by promoting every warning to an error across the CI matrix. Neither is reported by clang-cl on Windows x64, which is the configuration the #15374 inventory measures. LineSplit.hpp reserved with path.size() + closed ? 1 : 0. Addition binds tighter than ?:, so that parses as (path.size() + closed) ? 1 : 0, and the function returns early when path is empty, so the condition is always true and the reserve is always 1. The vector then grows by reallocation instead of reserving once. Output is unaffected, since reserve only sets capacity. Reported by Clang on Linux, macOS and Flatpak; GCC does not diagnose it. Int128.hpp declared #pragma intrinsic(_mul128) under _WIN64, which is defined on Windows arm64 as well, where that x64 intrinsic does not exist. The call site at line 190 is already guarded on _M_X64 and carries a comment saying ARM64 has no _mul128, so the pragma now uses the same guard. x64 is unchanged because _M_X64 is defined there. * build: clear 1 warning - CLI error label prints 1 instead of a name construct_assemble_list is a function, so streaming it converts the function pointer to bool. When that catch block fires the CLI prints "1: ". This line was already fixed in #5963 and came back in the wholesale revert of that PR two weeks later, which was reverting an auto-orientation regression somewhere in its 184 files. The string is restored exactly as it was merged then. --- src/OrcaSlicer.cpp | 2 +- src/libslic3r/Algorithm/LineSplit.hpp | 2 +- src/libslic3r/Int128.hpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 15e7f85c46..1cbf76ef5a 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1925,7 +1925,7 @@ int CLI::run(int argc, char **argv) } } catch (std::exception& e) { - boost::nowide::cerr << construct_assemble_list << ": " << e.what() << std::endl; + boost::nowide::cerr << "construct_assemble_list: " << e.what() << std::endl; record_exit_reson(outfile_dir, CLI_DATA_FILE_ERROR, 0, cli_errors[CLI_DATA_FILE_ERROR], sliced_info); flush_and_exit(CLI_DATA_FILE_ERROR); } diff --git a/src/libslic3r/Algorithm/LineSplit.hpp b/src/libslic3r/Algorithm/LineSplit.hpp index 58b9fdc34a..e12113fa6c 100644 --- a/src/libslic3r/Algorithm/LineSplit.hpp +++ b/src/libslic3r/Algorithm/LineSplit.hpp @@ -49,7 +49,7 @@ SplittedLine split_line(const PathType& path, const ExPolygons& clip, bool close // Convert the input path into an open ZPath ClipperZUtils::ZPath p; - p.reserve(path.size() + closed ? 1 : 0); + p.reserve(path.size() + (closed ? 1 : 0)); ClipperLib_Z::cInt z = 0; for (const auto& point : path) { p.emplace_back(point.x(), point.y(), z); diff --git a/src/libslic3r/Int128.hpp b/src/libslic3r/Int128.hpp index e7238ca745..e55ef64cfb 100644 --- a/src/libslic3r/Int128.hpp +++ b/src/libslic3r/Int128.hpp @@ -57,7 +57,7 @@ #define HAS_INTRINSIC_128_TYPE #endif -#if defined(_MSC_VER) && defined(_WIN64) +#if defined(_MSC_VER) && defined(_M_X64) #include #pragma intrinsic(_mul128) #endif From fa3dbfcc6f9a093f5aa33833121a16561e7cce3d Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 05:55:19 -0500 Subject: [PATCH 080/162] fix: clear 1 warning - report the real error when a Windows G-code export fails (#15582) fix: report the real error when a Windows G-code export fails copy_file built its failure message as "Error: " + errCode. Adding a DWORD to a string literal is pointer arithmetic, not concatenation, so the pointer lands errCode bytes into an 8-byte literal and runs past its end for any code above 7. std::string then calls strlen on it and throws length_error, and the catch(...) in BackgroundSlicingProcess::finalize_gcode replaces the diagnosis with "Unknown error occurred during exporting G-code." Every code a user is likely to hit is past the end: write-protected media is 19, no media 21, a full disk 112, and a destination held open by another program 32. Codes 1 to 7 stay inside the literal and produce a truncated message instead. So the "Maybe the SD card is write locked?" text has not been reachable on Windows since this path was added in #2923. Now that it is reachable, that guess only fits removable media, so it is conditional on m_export_path_on_removable_media. The existing string is untouched and keeps its 23 translations; the fixed-drive case adds one string. --- src/libslic3r/utils.cpp | 2 +- src/slic3r/GUI/BackgroundSlicingProcess.cpp | 4 ++- tests/libslic3r/test_utils.cpp | 36 +++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 875c90f6ab..58323b29ce 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -961,7 +961,7 @@ CopyFileResult copy_file(const std::string &from, const std::string &to, std::st BOOL result = CopyFileW(src_wstr, dst_wstr, FALSE); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 64c52c6e72..f795b41999 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -848,7 +848,9 @@ void BackgroundSlicingProcess::finalize_gcode() case CopyFileResult::SUCCESS: break; // no error case CopyFileResult::FAIL_COPY_FILE: throw Slic3r::ExportError(GUI::format( - _L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%"), + m_export_path_on_removable_media ? + _L("Copying of the temporary G-code to the output G-code failed. Maybe the SD card is write locked?\nError message: %1%") : + _L("Copying of the temporary G-code to the output G-code failed.\nError message: %1%"), error_message)); break; case CopyFileResult::FAIL_FILES_DIFFERENT: diff --git a/tests/libslic3r/test_utils.cpp b/tests/libslic3r/test_utils.cpp index c039069b2a..484438127c 100644 --- a/tests/libslic3r/test_utils.cpp +++ b/tests/libslic3r/test_utils.cpp @@ -2,6 +2,13 @@ #include "libslic3r/Utils.hpp" +#include "test_utils.hpp" + +#include +#include +#include +#include + #ifndef _WIN32 #include // getuid #endif @@ -52,3 +59,32 @@ TEST_CASE("per-user temp root is unchanged on Windows, isolated elsewhere", "[ut REQUIRE_THAT(root, Catch::Matchers::StartsWith(base + "/orcaslicer_")); #endif } + +TEST_CASE("copy_file reports the OS error when the destination cannot be written", "[utils]") { + ScopedTemporaryFile source(".txt"); + { + std::ofstream ofs(source.string(), std::ios::binary); + ofs << "orca"; + } + REQUIRE(boost::filesystem::exists(source.path())); + + // A directory that was never created, so the copy fails on every platform. + const boost::filesystem::path destination = source.path().parent_path() / "orca-missing-dir" / "copy.txt"; + REQUIRE_FALSE(boost::filesystem::exists(destination.parent_path())); + + std::string error_message; + REQUIRE(copy_file(source.string(), destination.string(), error_message) == FAIL_COPY_FILE); + REQUIRE_FALSE(error_message.empty()); + +#ifdef _WIN32 + // The Windows branch formats GetLastError() itself. Writing that as + // "Error: " + errCode adds an integer to a string literal, which indexes into the + // literal instead of appending and runs off its end for any code above 7. + const std::string prefix = "Error: "; + REQUIRE(error_message.rfind(prefix, 0) == 0); + + const std::string code = error_message.substr(prefix.size()); + REQUIRE_FALSE(code.empty()); + REQUIRE(std::all_of(code.begin(), code.end(), [](unsigned char c) { return std::isdigit(c) != 0; })); +#endif // _WIN32 +} From 913afc51b7b7fe112b4fa4adb58a824ecc301c28 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 06:07:54 -0500 Subject: [PATCH 081/162] build: clear 3 warnings - lambda captures that are not required (#15596) config_substitution_rule is a const enum with a constant initializer, so a lambda can read it without capturing it. Capturing it explicitly is what -Wunused-lambda-capture reports. The category was taken to zero by #15417 and merged on 2026-09-02. These three sites arrived on 2026-09-08 in bcb4f17d9a, "fix(cli): resolve inherited presets through vendor manifests" (#15438). All three lambdas still read the value, which needs no capture and is unchanged. --- src/OrcaSlicer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 1cbf76ef5a..5463f55c20 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1975,7 +1975,7 @@ int CLI::run(int argc, char **argv) } std::unique_ptr cli_preset_bundle; - auto ensure_cli_preset_bundle = [&cli_preset_bundle, config_substitution_rule](std::string &error) -> PresetBundle * { + auto ensure_cli_preset_bundle = [&cli_preset_bundle](std::string &error) -> PresetBundle * { if (cli_preset_bundle) return cli_preset_bundle.get(); try { @@ -2002,7 +2002,7 @@ int CLI::run(int argc, char **argv) } }; - auto resolve_preset = [&ensure_cli_preset_bundle, config_substitution_rule](const std::string &file, DynamicPrintConfig &config, + auto resolve_preset = [&ensure_cli_preset_bundle](const std::string &file, DynamicPrintConfig &config, std::string &config_type, const std::string &config_from, bool probe_type, std::string &error) { const auto *inherits = config.option(BBL_JSON_KEY_INHERITS); @@ -2046,7 +2046,7 @@ int CLI::run(int argc, char **argv) error, allow_source_manifest); }; - auto load_config_file = [config_substitution_rule, &resolve_preset](const std::string& file, DynamicPrintConfig& config, std::string& config_type, + auto load_config_file = [&resolve_preset](const std::string& file, DynamicPrintConfig& config, std::string& config_type, std::string& config_name, std::string& filament_id, std::string& config_from) { if (! boost::filesystem::exists(file)) { boost::nowide::cerr << __FUNCTION__<< ": can not find setting file: " << file << std::endl; From f18eb21b82a5eedff91ee95aa9d6755a221f03e1 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 10:01:19 -0500 Subject: [PATCH 082/162] build: clear 11 single-site clang-cl warning categories (#15584) build: clear eleven single-site clang-cl warning categories Each of these is the last site left in its category, and every one is the compiler saying it cannot tell what the code meant. Nothing here changes defined behavior. - OrcaSlicer_app_msvc.cpp printed a DWORD with %d - StackWalker.cpp ran delete[] through an LPVOID - ToolOrdering.cpp used a bare ; as a deliberate skip loop's body - WipeTower.cpp had finish_block_tcr = finish_block_tcr, so the branch that reached it did nothing. Folding the condition into the enclosing if leaves the other branch untouched - GCodeProcessor.cpp had an else binding to the inner if while the outer if carried no braces - AmsMappingPopupUpdate.cpp wrote >= 1 || <= 3 where its own comment says && - CalibrationWizardPresetPage.cpp left max_decimal_length unset through a pair of conditions that cover every value but not visibly so - DevManager.cpp bound map elements to pair rather than pair, copying every one - SyncAmsInfoDialog.cpp had extraneous parentheses around a comparison - Http.cpp had if (speed > 0.01) speed = speed;. speed now starts at 0 as well, because curl_easy_getinfo leaves the target untouched when it fails and the value reaches Progress either way - SnapmakerPrinterAgent.cpp truncated npos into an unsigned int, so the != npos guard was always true. A colour with no # still yields 0, because the wrap produced 0 as well Nine categories go to zero. -Wtautological-overlap-compare and -Wsometimes-uninitialized reach zero when #15583 merges their second site. --- src/OrcaSlicer_app_msvc.cpp | 2 +- src/dev-utils/StackWalker.cpp | 2 +- src/libslic3r/GCode/GCodeProcessor.cpp | 3 ++- src/libslic3r/GCode/ToolOrdering.cpp | 2 +- src/libslic3r/GCode/WipeTower.cpp | 8 ++------ src/slic3r/GUI/AmsMappingPopupUpdate.cpp | 2 +- src/slic3r/GUI/CalibrationWizardPresetPage.cpp | 2 +- src/slic3r/GUI/DeviceCore/DevManager.cpp | 2 +- src/slic3r/GUI/SyncAmsInfoDialog.cpp | 2 +- src/slic3r/Utils/Http.cpp | 4 +--- src/slic3r/Utils/SnapmakerPrinterAgent.cpp | 2 +- 11 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/OrcaSlicer_app_msvc.cpp b/src/OrcaSlicer_app_msvc.cpp index 35568a9cfa..265047fa34 100644 --- a/src/OrcaSlicer_app_msvc.cpp +++ b/src/OrcaSlicer_app_msvc.cpp @@ -297,7 +297,7 @@ int wmain(int argc, wchar_t **argv) // printf("Loading Slic3r library: %S\n", path_to_slic3r); HINSTANCE hInstance_Slic3r = LoadLibraryExW(path_to_slic3r, nullptr, 0); if (hInstance_Slic3r == nullptr) { - printf("OrcaSlicer.dll was not loaded, error=%d\n", GetLastError()); + printf("OrcaSlicer.dll was not loaded, error=%lu\n", GetLastError()); return -1; } diff --git a/src/dev-utils/StackWalker.cpp b/src/dev-utils/StackWalker.cpp index 468e8927a5..6038196cb0 100644 --- a/src/dev-utils/StackWalker.cpp +++ b/src/dev-utils/StackWalker.cpp @@ -364,7 +364,7 @@ void CStackWalker::GetModuleInformation(LPMODULE_INFO pmi) if (dwInfoSize > 0) { - LPVOID lpData = new byte[dwInfoSize]; + byte *lpData = new byte[dwInfoSize]; ZeroMemory(lpData, dwInfoSize * sizeof(byte)); if (GetFileVersionInfo(pmi->szModulePath, dwHandle, dwInfoSize, lpData) > 0 ) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 0b3db0323b..e4da19cd73 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -2779,7 +2779,7 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int std::map> gcode_path_pos; // object_id, filament_id, pos for (const GCodeProcessorResult::MoveVertex &move : m_result.moves) { // sometimes, the start line extrude was outside the edge of plate a little, this is allowed, so do not include into the gcode_path_pos - if (move.type == EMoveType::Extrude /* && move.extrusion_role != ExtrusionRole::erFlush || move.type == EMoveType::Travel*/) + if (move.type == EMoveType::Extrude /* && move.extrusion_role != ExtrusionRole::erFlush || move.type == EMoveType::Travel*/) { if (move.extrusion_role == ExtrusionRole::erCustom) { /*if (move.is_arc_move_with_interpolation_points()) { for (int i = 0; i < move.interpolation_points.size(); i++) { @@ -2801,6 +2801,7 @@ bool GCodeProcessor::check_multi_extruder_gcode_valid(const int gcode_path_pos[move.object_label_id][int(move.extruder_id)].max_print_z = std::max(gcode_path_pos[move.object_label_id][int(move.extruder_id)].max_print_z, move.print_z); } + } } bool valid = true; diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 0a97e7ac41..c6517c6e65 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -3137,7 +3137,7 @@ void ToolOrdering::assign_custom_gcodes(const Print &print) // Skip all custom G-codes above this layer and skip all extruder switches. for (; custom_gcode_it != custom_gcode_per_print_z.gcodes.rend() && ( (print_z_above > lt.print_z && custom_gcode_it->print_z > 0.5 * (lt.print_z + print_z_above)) - || custom_gcode_it->type == CustomGCode::ToolChange); ++ custom_gcode_it); + || custom_gcode_it->type == CustomGCode::ToolChange); ++ custom_gcode_it) {} print_z_above = lt.print_z; if (custom_gcode_it == custom_gcode_per_print_z.gcodes.rend()) // Custom G-codes were processed. diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index bef3803c55..589ac14bad 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -4971,12 +4971,8 @@ void WipeTower::generate_new(std::vector= 1 || ams_type <= 3) { // 1:ams 2:ams-lite 3:n3f + if (ams_type >= 1 && ams_type <= 3) { // 1:ams 2:ams-lite 3:n3f auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL); auto ams_mapping_item_container = new MappingContainer(nozzle_id == 0 ? m_right_marea_panel : m_left_marea_panel, "AMS-1", 4); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 5267715439..c6d491a930 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -360,7 +360,7 @@ void CaliPresetCustomRangePanel::create_panel(wxWindow* parent) int max_decimal_length; if (i <= 1) max_decimal_length = 3; - else if (i >= 2) + else max_decimal_length = 4; if (decimal_number > max_decimal_length) { int allowed_length = number.length() - decimal_number + max_decimal_length; diff --git a/src/slic3r/GUI/DeviceCore/DevManager.cpp b/src/slic3r/GUI/DeviceCore/DevManager.cpp index 8844303793..feb6301df3 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.cpp +++ b/src/slic3r/GUI/DeviceCore/DevManager.cpp @@ -872,7 +872,7 @@ namespace Slic3r obj->m_is_online = elem["dev_online"].get(); if (elem.contains("dev_model_name") && !elem["dev_model_name"].is_null()) { auto printer_type = elem["dev_model_name"].get(); - for (const std::pair> &pair : device_subseries) { + for (const auto &pair : device_subseries) { auto it = std::find(pair.second.begin(), pair.second.end(), printer_type); if (it != pair.second.end()) { diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 92c3d218e5..c6973649b1 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -1547,7 +1547,7 @@ bool SyncAmsInfoDialog::is_nozzle_type_match(DevExtderSystem data, wxString &err auto sai_nz_pt = wxGetApp().preset_bundle->printers.get_edited_preset().get_printer_type(wxGetApp().preset_bundle); if (target_machine_nozzle_id == DEPUTY_EXTRUDER_ID) { pos = _L(DevPrinterConfigUtil::get_toolhead_display_name(sai_nz_pt, DEPUTY_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase)); - } else if ((target_machine_nozzle_id == MAIN_EXTRUDER_ID)) { + } else if (target_machine_nozzle_id == MAIN_EXTRUDER_ID) { pos = _L(DevPrinterConfigUtil::get_toolhead_display_name(sai_nz_pt, MAIN_EXTRUDER_ID, ToolHeadComponent::Nozzle, ToolHeadNameCase::LowerCase)); } diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index f1ff056d10..4d34d60d04 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -254,10 +254,8 @@ int Http::priv::xfercb(void *userp, curl_off_t dltotal, curl_off_t dlnow, curl_o bool cb_cancel = false; if (self->progressfn) { - double speed; + double speed = 0.; curl_easy_getinfo(self->curl, CURLINFO_SPEED_UPLOAD, &speed); - if (speed > 0.01) - speed = speed; Progress progress(dltotal, dlnow, ultotal, ulnow, self->buffer, speed); self->progressfn(progress, cb_cancel); } diff --git a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp index 9b9a6809fd..ab7aa9bd52 100644 --- a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp +++ b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp @@ -39,7 +39,7 @@ std::string find_closest_color_preset_by_vendor_and_type(const PresetCollection& std::string p_color = p.config.opt_string("default_filament_colour", 0u); unsigned int p_color_value; if (!p_color.empty()) { - unsigned int hash_pos = p_color.find("#"); + size_t hash_pos = p_color.find("#"); p_color_value = std::stoul(p_color.substr(hash_pos != std::string::npos ? hash_pos + 1 : 0), nullptr, 16); } else { // Default to black if no color specified in profile. Assume other profiles might be a closer color match. From dbeef900ccf341f6b977417164b298e975e38b8f Mon Sep 17 00:00:00 2001 From: TheLegendTubaGuy <95944177+thelegendtubaguy@users.noreply.github.com> Date: Wed, 9 Sep 2026 12:18:21 -0500 Subject: [PATCH 083/162] Fix Windows build test midnight race (#15616) --- scripts/test_build_win.ps1 | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/scripts/test_build_win.ps1 b/scripts/test_build_win.ps1 index a8abfbc7bf..65dec8ffa1 100644 --- a/scripts/test_build_win.ps1 +++ b/scripts/test_build_win.ps1 @@ -22,6 +22,7 @@ Match regexes; each must match at least one output line NotMatch regexes; none may match any output line NotExists paths that must not exist after the case runs + DateStampedZip require a bundle date from during this case's invocation .PARAMETER Name Run only the cases whose name matches this regex. Headings with no @@ -109,12 +110,6 @@ $slnDir = Join-Path $fixtures 'sln' New-Item -ItemType Directory -Force -Path $slnDir | Out-Null Set-Content -Path (Join-Path $slnDir 'OrcaSlicer.sln') -Value '' -Encoding ascii -# The pack stamp is checked against real dates, so a locale-dependent parse -# in the script cannot pass by looking date-shaped. Yesterday is accepted too, -# so a run that crosses midnight does not flake. -$dateStamps = @((Get-Date -Format 'yyyyMMdd'), (Get-Date).AddDays(-1).ToString('yyyyMMdd')) -$stampPattern = '_(' + ($dateStamps -join '|') + ')\.zip$' - $cases = @( 'argument handling' @{ Name = 'no arguments prints help'; Args = @(); DryRun = $false @@ -326,12 +321,12 @@ $cases = @( Contains = @('OrcaSlicer_dep_win-x64_') NotContains = @('-clang', '-Release') } @{ Name = 'the bundle is stamped with today, not a shuffled date'; Args = @('-p') - Match = @($stampPattern) } + DateStampedZip = $true } # powershell.exe is not in System32 itself, so a trimmed PATH used to # leave the stamp empty and the bundle named OrcaSlicer_dep_win-x64_.zip. @{ Name = 'the bundle is stamped even with a bare PATH'; Args = @('-p') Env = @{ PATH = 'C:\Windows\system32;C:\Windows' } - Match = @($stampPattern) } + DateStampedZip = $true } @{ Name = '-p packs without rebuilding'; Args = @('-p') Match = @('^\+ .*(7z\.exe a|tar\.exe -a -c -f) ') NotContains = @('cmake -S deps') } @@ -861,7 +856,7 @@ function Invoke-BuildScript { $knownFields = @( 'Name', 'Args', 'ExpectExit', 'DryRun', 'First', 'Env', - 'Contains', 'NotContains', 'Match', 'NotMatch', 'NotExists' + 'Contains', 'NotContains', 'Match', 'NotMatch', 'NotExists', 'DateStampedZip' ) function Test-Case { @@ -876,7 +871,9 @@ function Test-Case { $expect = 0 if ($Case.ContainsKey('ExpectExit')) { $expect = $Case['ExpectExit'] } + $started = Get-Date $result = Invoke-BuildScript -Arguments $argv -Environment $Case['Env'] + $finished = Get-Date $problems = @() @@ -902,6 +899,15 @@ function Test-Case { $problems += "no line matching /$pattern/" } } + if ($Case['DateStampedZip']) { + # Bound the accepted dates to this invocation so crossing midnight is + # valid without allowing an unrelated past or future date. + $dateStamps = @($started.ToString('yyyyMMdd'), $finished.ToString('yyyyMMdd')) | Select-Object -Unique + $pattern = '_(' + ($dateStamps -join '|') + ')\.zip$' + if (@($lines | Where-Object { $_ -match $pattern }).Count -eq 0) { + $problems += "no line matching /$pattern/" + } + } foreach ($pattern in $Case['NotMatch']) { foreach ($line in @($lines | Where-Object { $_ -match $pattern })) { $problems += "line matches /$pattern/: $line" From e296d5daac1084babfc8988620383e9c02b76ed5 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 9 Sep 2026 17:13:05 -0500 Subject: [PATCH 084/162] build: fix 9 defects found by clang-cl warnings (#15583) --- src/slic3r/GUI/Field.cpp | 3 ++- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/GUI_Utils.cpp | 4 ++-- src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp | 2 +- src/slic3r/GUI/MediaPlayCtrl.cpp | 2 +- src/slic3r/GUI/Mouse3DController.cpp | 2 +- src/slic3r/GUI/SyncAmsInfoDialog.cpp | 2 +- src/slic3r/Utils/Http.cpp | 4 +++- 9 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 142cf70522..b7564551f8 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -2711,7 +2711,8 @@ void ColourPicker::set_value(const boost::any& value, bool change_event) auto field = dynamic_cast(window); #ifdef __WXMSW__ - wxColour clr = (clr_str.IsEmpty() || !clr.IsOk()) ? wxTransparentColour : clr_str; + const wxColour parsed_clr(clr_str); + wxColour clr = (clr_str.IsEmpty() || !parsed_clr.IsOk()) ? wxTransparentColour : parsed_clr; field->SetColour(clr); draw_bmp_btn(field, clr); #else diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 3500493329..99a829bdcc 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -6808,7 +6808,7 @@ bool GUI_App::check_preset_parent_available(const std::pair>& preset_data) { - Preset::Type type; + Preset::Type type = Preset::Type::TYPE_INVALID; if (preset_data.second.at(BBL_JSON_KEY_TYPE) == PRESET_IOT_PRINT_TYPE) type = Preset::Type::TYPE_PRINT; else if (preset_data.second.at(BBL_JSON_KEY_TYPE) == PRESET_IOT_PRINTER_TYPE) diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index cb8ba45c6b..bc66d90ffd 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -102,7 +102,7 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std result = ReadFile(handlesrc, buff, size, &dwRead, NULL); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } @@ -110,7 +110,7 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std result = WriteFile(handledst,buff,size,&dwWrite,NULL); if (!result) { DWORD errCode = GetLastError(); - error_message = "Error: " + errCode; + error_message = "Error: " + std::to_string(errCode); ret = FAIL_COPY_FILE; goto __finished; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 709e7b5b21..904e7d0a07 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -342,7 +342,7 @@ bool GLGizmoBrimEars::on_mouse(const wxMouseEvent& mouse_event) // concludes that the event was not intended for it, it should return false. bool GLGizmoBrimEars::gizmo_event(SLAGizmoEventType action, const Vec2d &mouse_position, bool shift_down, bool alt_down, bool control_down) { - if (action != SLAGizmoEventType::MouseWheelDown || action != SLAGizmoEventType::MouseWheelUp || action != SLAGizmoEventType::Moving) { + if (action != SLAGizmoEventType::MouseWheelDown && action != SLAGizmoEventType::MouseWheelUp && action != SLAGizmoEventType::Moving) { apply_radius_change(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index f190e1ad97..035fb895aa 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -122,7 +122,7 @@ bool GLGizmoFdmSupports::on_init() {ctrl + _L("Mouse wheel"), _L("Gap area")} }; - memset(&m_print_instance, 0, sizeof(m_print_instance)); + m_print_instance = PrintInstance(); return true; } diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 0d75c3770d..29c8c9f664 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -71,7 +71,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl3 *media_ctrl, const w auto ip = str.find(' ', ik); if (ip == wxString::npos) ip = str.Length(); auto v = str.Mid(ik, ip - ik); - if (k == "T:" && v.Length() == 8) { + if (strcmp(k, "T:") == 0 && v.Length() == 8) { long h = 0,m = 0,s = 0; v.Left(2).ToLong(&h); v.Mid(3, 2).ToLong(&m); diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 11709501ac..8ed91d461f 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -498,7 +498,7 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(20.0f, 20.0f)); static ImVec2 last_win_size(0.0f, 0.0f); bool shown = true; - if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse || ImGuiWindowFlags_NoTitleBar)) { + if (imgui.begin(_L("3Dconnexion settings"), &shown, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar)) { if (shown) { ImVec2 win_size = ImGui::GetWindowSize(); if (last_win_size.x != win_size.x || last_win_size.y != win_size.y) { diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index c6973649b1..7f075dbbfa 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -678,7 +678,7 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) : wxBoxSizer *loading_Sizer = new wxBoxSizer(wxHORIZONTAL); m_gif_ctrl = new wxAnimationCtrl(m_loading_page, wxID_ANY, wxNullAnimation, wxDefaultPosition, wxDefaultSize, wxAC_DEFAULT_STYLE); - auto gif_path = Slic3r::var("loading.gif").c_str(); + const wxString gif_path = from_u8(Slic3r::var("loading.gif")); if (m_gif_ctrl->LoadFile(gif_path)){ m_gif_ctrl->SetSize(m_gif_ctrl->GetAnimation().GetSize()); m_gif_ctrl->Play(); diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index 4d34d60d04..6f43df74e4 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -321,8 +321,10 @@ void Http::priv::form_add_file(const char *name, const fs::path &path, const cha // We can't use CURLFORM_FILECONTENT, because curl doesn't support Unicode filenames on Windows // and so we use CURLFORM_STREAM with boost ifstream to read the file. + std::string filename_str; if (filename == nullptr) { - filename = path.string().c_str(); + filename_str = path.string(); + filename = filename_str.c_str(); } form_files.emplace_back(path, offset, length); From a5d0d33df32e1af8b6084cfe2f4275b55c43ed70 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 10 Sep 2026 12:39:55 +0800 Subject: [PATCH 085/162] Register Instance Copies and Moves with Their Plate An instance added with "+" was never registered with the plate it landed on, and moving an instance only re-registered instance 0 of its object, so a copy dragged onto another plate stayed unknown to that plate's registry. The plate's filament list, its wipe tower preview and the position clamp all read that registry, so a multi-filament copy moved onto a single-filament plate drew no tower there and its tower position was never clamped. Register new copies at creation, notify exactly the instances a move changed (every instance of the object when one of its parts moved), and drop the registry entry when a copy is removed again. --- src/slic3r/GUI/GLCanvas3D.cpp | 16 +++++++++++++++- src/slic3r/GUI/Plater.cpp | 8 +++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 556faaa763..676d310f7b 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5059,7 +5059,21 @@ void GLCanvas3D::do_move(const std::string& snapshot_type) } //BBS: notify instance updates to part plater list - m_selection.notify_instance_update(-1, 0); + // Only what moved: the selected instances, or every instance of an object one of whose + // parts moved. Notifying a plate about an instance that stayed put invalidates its slice + // result, and notifying instance 0 alone left a moved copy unregistered on its new plate. + { + std::set> notified; + for (unsigned int i : m_selection.get_volume_idxs()) { + const GLVolume* v = m_volumes.volumes[i]; + const int object_idx = v->object_idx(); + if (object_idx < 0 || object_idx >= static_cast(m_model->objects.size())) + continue; + const std::pair key(object_idx, selection_mode == Selection::Volume ? -1 : v->instance_idx()); + if (notified.insert(key).second) + m_selection.notify_instance_update(key.first, key.second); + } + } // Fixes sinking/flying instances (snaps object to buildplate) for (const std::pair& i : done) { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 109d7b3c10..3aab1184c3 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -17653,6 +17653,10 @@ void Plater::increase_instances(size_t num) model_object->add_instance(offset_vec, model_instance->get_scaling_factor(), model_instance->get_rotation(), model_instance->get_mirror()); // p->print.get_object(obj_idx)->add_copy(Slic3r::to_2d(offset_vec)); } + // Register the copies with the plate they land on before the scene reloads: the plate's + // filament list and wipe tower preview are read from that registry. + for (size_t i = model_object->instances.size() - num; i < model_object->instances.size(); ++i) + p->partplate_list.notify_instance_update(obj_idx, static_cast(i)); #ifdef SUPPORT_AUTO_CENTER if (p->get_config("autocenter") == "true") @@ -17683,8 +17687,10 @@ void Plater::decrease_instances(size_t num) ModelObject* model_object = p->model.objects[obj_idx]; if (model_object->instances.size() > num) { - for (size_t i = 0; i < num; ++ i) + for (size_t i = 0; i < num; ++ i) { + p->partplate_list.notify_instance_removed(obj_idx, static_cast(model_object->instances.size()) - 1); model_object->delete_last_instance(); + } p->update(); // Delete object from Sidebar list. Do it after update, so that the GLScene selection is updated with the modified model. sidebar().obj_list()->decrease_object_instances(obj_idx, num); From 8c8e6fd0695e390796d4102f36baaae2380d4aad Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 10 Sep 2026 12:39:55 +0800 Subject: [PATCH 086/162] Let the Remaining Per-Plate Object Scans See Every Instance get_extruders() and estimate_wipe_tower_size() already ask whether any instance of an object sits on the plate; the support-less extruder scan, the mixed-filament risk check and the nozzle/filament compatibility check still tested instance 0 only, so an object whose copy - not its original - was placed on the plate was skipped by all three. --- src/slic3r/GUI/PartPlate.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 90e2c96ab6..93730fdafb 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1917,7 +1917,7 @@ std::vector PartPlate::get_extruders_without_support(bool conside_custom_gc const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!contain_instance_totally(obj_idx, 0)) + if (!contain_any_instance_totally(obj_idx)) continue; ModelObject* mo = m_model->objects[obj_idx]; @@ -2088,7 +2088,7 @@ bool PartPlate::check_single_extruder_mixed_filament_risk(const DynamicPrintConf "which may significantly increase waste and the risk of nozzle / waste-chute clogging."); for (int obj_idx = 0; obj_idx < (int)m_model->objects.size(); ++obj_idx) { - if (!contain_instance_totally(obj_idx, 0)) + if (!contain_any_instance_totally(obj_idx)) continue; ModelObject *mo = m_model->objects[obj_idx]; int obj_ext = mo->config.has("extruder") ? mo->config.extruder() : 1; @@ -2307,7 +2307,7 @@ bool PartPlate::check_compatible_of_nozzle_and_filament(const DynamicPrintConfig return wipe_tower_size; for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { - if (!use_global_objects && !contain_instance_totally(obj_idx, 0)) + if (!use_global_objects && !contain_any_instance_totally(obj_idx)) continue; BoundingBoxf3 bbox = m_model->objects[obj_idx]->bounding_box(); From 7888452666c31bab80d1dd0675a642f2e41c5d31 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Thu, 10 Sep 2026 05:39:14 -0500 Subject: [PATCH 087/162] build: clear 7 warning categories across 26 sites (#15615) * build: clear 2 warnings - cast the NSTextField the class check already proved mainframe_text_field is NSTextField* and was assigned a bare NSView*, which Clang reports as -Wincompatible-pointer-types. Both assignments sit inside if ([viewObject class] == [NSTextField self]), so the runtime type is already guaranteed, and the line above the second one casts the same variable the same way to call setTextColor. macOS only, since nothing else compiles this file. * build: clear 6 warning categories from the clang-cl inventory -Wmissing-braces (9). Aggregates whose first member is itself an aggregate. GUID's fourth member is BYTE[8], so the trailing eight bytes take their own braces. The others were reaching for zero-initialization with {0} and say {} now. bbs_3mf's backup Task ends in an anonymous union, which needs braces of its own; those braces initialize the union's first member rather than the one named at the call site, so the RemoveBackup site says so in a comment. -Wmacro-redefined (11). SendMultiMachinePage.hpp defines five names that Preferences.hpp, PresetBundleDialog.hpp, ExportPresetBundleDialog.hpp and TroubleshootDialog.hpp also define with different values, so the value in force depended on include order. All nine of this file's DESIGN_ macros take the SEND_ prefix it already uses for its own macros, values unchanged, so a DESIGN_ name added elsewhere later cannot collide with it again. They read as one page-local palette, a 900 to 400 gray ramp plus sizes, so the four with no current readers stay: dropping them would leave gaps in a named scale. test_marchingsquares.cpp defines NOMINMAX, which libslic3r already passes as a PUBLIC compile definition, so it takes the #ifndef guard the other suites use. -Wbraced-scalar-init (3). Two PushStyleVar calls resolve to the float overload, so the braces were initializing a scalar. ConfigOptionFloatsNullable already takes an initializer_list, so the inner braces did the same thing. -Wmicrosoft-goto (2). Both gotos in copy_file_gui jump forward over the initialization of size, dwRead and dwWrite, which only MSVC accepts. Those declarations move up to join the others at the top of the function. -Wunused-private-field (3). Every use of ColourPicker's m_clrData and m_picker_widget is behind !defined(__linux__), so on Linux they are written and never read; the members now carry the same guard. ParamsPanel's m_size_move is read nowhere. Tab has its own, which is the one Tab.cpp uses. -Wnonportable-include-path (2). BaseException.h asked for "stackwalker.h" and the file on disk is StackWalker.h. --- src/dev-utils/BaseException.h | 2 +- src/dev-utils/StackWalker.cpp | 2 +- src/libslic3r/Format/bbs_3mf.cpp | 8 ++++---- src/libslic3r/PrintConfig.cpp | 2 +- src/slic3r/GUI/Field.hpp | 2 ++ src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/GUI_Utils.cpp | 5 +++-- .../GUI/Gizmos/GizmoObjectManipulation.cpp | 2 +- src/slic3r/GUI/IMSlider.cpp | 2 +- src/slic3r/GUI/MainFrame.cpp | 4 ++-- src/slic3r/GUI/ParamsPanel.hpp | 1 - src/slic3r/GUI/PartPlate.cpp | 2 +- src/slic3r/GUI/SendMultiMachinePage.cpp | 14 +++++++------- src/slic3r/GUI/SendMultiMachinePage.hpp | 18 +++++++++--------- src/slic3r/Utils/MacDarkMode.mm | 4 ++-- tests/libslic3r/test_marchingsquares.cpp | 2 ++ 16 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/dev-utils/BaseException.h b/src/dev-utils/BaseException.h index 2cb65d945e..20b6fb0c89 100644 --- a/src/dev-utils/BaseException.h +++ b/src/dev-utils/BaseException.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include "stackwalker.h" +#include "StackWalker.h" #include class CBaseException : public CStackWalker diff --git a/src/dev-utils/StackWalker.cpp b/src/dev-utils/StackWalker.cpp index 6038196cb0..3ef983cd86 100644 --- a/src/dev-utils/StackWalker.cpp +++ b/src/dev-utils/StackWalker.cpp @@ -425,7 +425,7 @@ LPSTACKINFO CStackWalker::StackWalker(HANDLE hThread, const CONTEXT* context) else c = *context; - STACKFRAME64 sf = {0}; + STACKFRAME64 sf = {}; DWORD imageType; //intel X86 diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 96d98dbe9f..e2091da1db 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -8844,7 +8844,7 @@ public: auto model = object.get_model(); auto o = m_temp_model.add_object(object); int backup_id = model->get_object_backup_id(object); - push_task({ AddObject, (size_t) backup_id, object.get_model()->get_backup_path(), o, 1 }); + push_task({ AddObject, (size_t) backup_id, object.get_model()->get_backup_path(), o, { 1 } }); } void remove_object_mesh(ModelObject& object) { @@ -8854,7 +8854,7 @@ public: void backup_soon() { boost::lock_guard lock(m_mutex); m_other_changes_backup = true; - m_tasks.push_back({ Backup, 0, std::string(), nullptr, ++m_task_seq }); + m_tasks.push_back({ Backup, 0, std::string(), nullptr, { ++m_task_seq } }); m_cond.notify_all(); } @@ -8872,7 +8872,7 @@ public: m_ui_tasks.clear(); m_tasks.clear(); } - m_tasks.push_back({ RemoveBackup, model.id().id, model.get_backup_path(), nullptr, removeAll }); + m_tasks.push_back({ RemoveBackup, model.id().id, model.get_backup_path(), nullptr, { removeAll } }); ++m_task_seq; if (model.is_need_backup()) { m_other_changes = false; @@ -9087,7 +9087,7 @@ public: else m_cond.wait(lock); if (m_interval > 0 && boost::get_system_time() > m_next_backup) { - m_tasks.push_back({ Backup, 0, std::string(), nullptr, ++m_task_seq }); + m_tasks.push_back({ Backup, 0, std::string(), nullptr, { ++m_task_seq } }); m_next_backup += boost::posix_time::seconds(m_interval); // Maybe wakeup from power sleep if (m_next_backup < boost::get_system_time()) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 1db476eede..4c27995ba0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -5430,7 +5430,7 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->readonly = false; def->nullable = true; - def->set_default_value(new ConfigOptionFloatsNullable { {0.0} }); + def->set_default_value(new ConfigOptionFloatsNullable { 0.0 }); def = this->add("cooling_tube_retraction", coFloat); def->label = L("Cooling tube position"); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 5d5d549427..74011983c6 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -628,8 +628,10 @@ private: void on_button_click(wxCommandEvent &WXUNUSED(ev)); void save_colors_to_config(); private: +#if !defined(__linux__) && !defined(__LINUX__) wxColourData* m_clrData{nullptr}; wxColourPickerWidget* m_picker_widget{nullptr}; +#endif }; class PointCtrl : public Field { diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 99a829bdcc..6d08f052da 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -598,7 +598,7 @@ wxString file_wildcards(FileType file_type, const std::string &custom_extension) static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); } #ifdef WIN32 -static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }; +static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }; static void register_win32_device_notification_event() { diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index bc66d90ffd..10dd29c9c1 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -69,6 +69,8 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std HANDLE handlesrc = nullptr; HANDLE handledst = nullptr; CopyFileResult ret = SUCCESS; + DWORD size = 0; + DWORD dwRead = 0, dwWrite = 0; handlesrc = CreateFile(src.wc_str(), GENERIC_READ, @@ -96,9 +98,8 @@ CopyFileResult copy_file_gui(const std::string &from, const std::string &to, std goto __finished; } - DWORD size=GetFileSize(handlesrc,NULL); + size = GetFileSize(handlesrc,NULL); buff = new char[size+1]; - DWORD dwRead=0,dwWrite; result = ReadFile(handlesrc, buff, size, &dwRead, NULL); if (!result) { DWORD errCode = GetLastError(); diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index 7c4a2afd38..5d70fde833 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -702,7 +702,7 @@ bool GizmoObjectManipulation::reset_zero_button(ImGuiWrapper *imgui_wrapper, bo for (int i = 0; i < number; i++) { - char buf[3][64] = {0}; + char buf[3][64] = {}; float buf_size[3] = {0}; for (int j = 0; j < 3; j++) { ImGui::DataTypeFormatString(buf[j], IM_ARRAYSIZE(buf[j]), ImGuiDataType_Double, (void *) &vec[i][j], "%.2f"); diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index c008963646..0d0d6739f8 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -790,7 +790,7 @@ void IMSlider::draw_ticks(const ImRect& slideable_region) { void IMSlider::show_tooltip(const std::string tooltip) { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 6 * m_scale, 3 * m_scale }); - ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, { 3 * m_scale }); + ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 3 * m_scale); ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BACKGROUND); ImGui::PushStyleColor(ImGuiCol_Border, { 0,0,0,0 }); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 1.00f)); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 167b2b4cda..c734804c22 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1591,7 +1591,7 @@ void MainFrame::register_win32_callbacks() //static GUID GUID_DEVINTERFACE_USB_DEVICE = { 0xA5DCBF10, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED }; //static GUID GUID_DEVINTERFACE_DISK = { 0x53f56307, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b }; //static GUID GUID_DEVINTERFACE_VOLUME = { 0x71a27cdd, 0x812a, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f }; - static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 }; + static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }; // Register USB HID (Human Interface Devices) notifications to trigger the 3DConnexion enumeration. DEV_BROADCAST_DEVICEINTERFACE NotificationFilter = { 0 }; @@ -1631,7 +1631,7 @@ void MainFrame::register_win32_callbacks() { static constexpr int device_count = 1; - RAWINPUTDEVICE devices[device_count] = { 0 }; + RAWINPUTDEVICE devices[device_count] = {}; // multi-axis mouse (SpaceNavigator, etc.) devices[0].usUsagePage = 0x01; devices[0].usUsage = 0x08; diff --git a/src/slic3r/GUI/ParamsPanel.hpp b/src/slic3r/GUI/ParamsPanel.hpp index 0726db91d3..91bf3d2a7e 100644 --- a/src/slic3r/GUI/ParamsPanel.hpp +++ b/src/slic3r/GUI/ParamsPanel.hpp @@ -66,7 +66,6 @@ class ParamsPanel : public wxPanel { #if __WXOSX__ wxWindow* m_tmp_panel; - int m_size_move = -1; #endif // __WXOSX__ private: diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 90e2c96ab6..9826498fbd 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1112,7 +1112,7 @@ void PartPlate::show_tooltip(const std::string tooltip) { const auto scale = m_plater->get_current_canvas3D()->get_scale(); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, {6 * scale, 3 * scale}); - ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, {3 * scale}); + ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 3 * scale); ImGui::PushStyleColor(ImGuiCol_PopupBg, ImGuiWrapper::COL_WINDOW_BACKGROUND); ImGui::PushStyleColor(ImGuiCol_Border, {0, 0, 0, 0}); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.00f, 1.00f, 1.00f, 1.00f)); diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 3a52caec3f..2d1b713264 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -814,13 +814,13 @@ wxBoxSizer* SendMultiMachinePage::create_item_title(wxString title, wxWindow* pa wxBoxSizer* m_sizer_title = new wxBoxSizer(wxHORIZONTAL); auto m_title = new wxStaticText(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, 0); - m_title->SetForegroundColour(DESIGN_GRAY800_COLOR); + m_title->SetForegroundColour(SEND_DESIGN_GRAY800_COLOR); m_title->SetFont(::Label::Head_13); m_title->Wrap(-1); m_title->SetToolTip(tooltip); auto m_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); - m_line->SetBackgroundColour(DESIGN_GRAY400_COLOR); + m_line->SetBackgroundColour(SEND_DESIGN_GRAY400_COLOR); m_sizer_title->Add(m_title, 0, wxALIGN_CENTER | wxALL, 3); m_sizer_title->Add(0, 0, 0, wxLEFT, 9); @@ -843,7 +843,7 @@ wxBoxSizer* SendMultiMachinePage::create_item_checkbox(wxString title, wxWindow* m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8); auto checkbox_title = new wxStaticText(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, 0); - checkbox_title->SetForegroundColour(DESIGN_GRAY900_COLOR); + checkbox_title->SetForegroundColour(SEND_DESIGN_GRAY900_COLOR); checkbox_title->SetFont(::Label::Body_13); auto size = checkbox_title->GetTextExtent(title); @@ -867,12 +867,12 @@ wxBoxSizer* SendMultiMachinePage::create_item_input(wxString str_before, wxStrin { wxBoxSizer* sizer_input = new wxBoxSizer(wxHORIZONTAL); auto input_title = new wxStaticText(parent, wxID_ANY, str_before); - input_title->SetForegroundColour(DESIGN_GRAY900_COLOR); + input_title->SetForegroundColour(SEND_DESIGN_GRAY900_COLOR); input_title->SetFont(::Label::Body_13); input_title->SetToolTip(tooltip); input_title->Wrap(-1); - auto input = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, DESIGN_INPUT_SIZE, wxTE_PROCESS_ENTER); + auto input = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, SEND_DESIGN_INPUT_SIZE, wxTE_PROCESS_ENTER); StateColor input_bg(std::pair(wxColour("#F0F0F1"), StateColor::Disabled), std::pair(*wxWHITE, StateColor::Enabled)); input->SetBackgroundColor(input_bg); input->GetTextCtrl()->SetValue(app_config->get(param)); @@ -880,7 +880,7 @@ wxBoxSizer* SendMultiMachinePage::create_item_input(wxString str_before, wxStrin input->GetTextCtrl()->SetValidator(validator); auto second_title = new wxStaticText(parent, wxID_ANY, str_after, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); - second_title->SetForegroundColour(DESIGN_GRAY900_COLOR); + second_title->SetForegroundColour(SEND_DESIGN_GRAY900_COLOR); second_title->SetFont(::Label::Body_13); second_title->SetToolTip(tooltip); second_title->Wrap(-1); @@ -1337,7 +1337,7 @@ wxPanel* SendMultiMachinePage::create_page() m_tip_text->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1)); m_tip_text->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1)); m_tip_text->SetLabel(_L("Please select the devices you would like to manage here (up to 6 devices)")); - m_tip_text->SetForegroundColour(DESIGN_GRAY800_COLOR); + m_tip_text->SetForegroundColour(SEND_DESIGN_GRAY800_COLOR); m_tip_text->SetFont(::Label::Head_20); m_tip_text->Wrap(-1); diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index 7d77849bf3..a63bc51bb0 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -22,15 +22,15 @@ namespace GUI { #define SEND_LEFT_DEV_STATUS 250 #define SEND_LEFT_TAKS_STATUS 180 -#define DESIGN_SELECTOR_NOMORE_COLOR wxColour(248, 248, 248) -#define DESIGN_GRAY900_COLOR wxColour(38, 46, 48) -#define DESIGN_GRAY800_COLOR wxColour(50, 58, 61) -#define DESIGN_GRAY600_COLOR wxColour(144, 144, 144) -#define DESIGN_GRAY400_COLOR wxColour(166, 169, 170) -#define DESIGN_RESOUTION_PREFERENCES wxSize(FromDIP(540), -1) -#define DESIGN_COMBOBOX_SIZE wxSize(FromDIP(140), -1) -#define DESIGN_LARGE_COMBOBOX_SIZE wxSize(FromDIP(160), -1) -#define DESIGN_INPUT_SIZE wxSize(FromDIP(50), -1) +#define SEND_DESIGN_SELECTOR_NOMORE_COLOR wxColour(248, 248, 248) +#define SEND_DESIGN_GRAY900_COLOR wxColour(38, 46, 48) +#define SEND_DESIGN_GRAY800_COLOR wxColour(50, 58, 61) +#define SEND_DESIGN_GRAY600_COLOR wxColour(144, 144, 144) +#define SEND_DESIGN_GRAY400_COLOR wxColour(166, 169, 170) +#define SEND_DESIGN_RESOUTION_PREFERENCES wxSize(FromDIP(540), -1) +#define SEND_DESIGN_COMBOBOX_SIZE wxSize(FromDIP(140), -1) +#define SEND_DESIGN_LARGE_COMBOBOX_SIZE wxSize(FromDIP(160), -1) +#define SEND_DESIGN_INPUT_SIZE wxSize(FromDIP(50), -1) diff --git a/src/slic3r/Utils/MacDarkMode.mm b/src/slic3r/Utils/MacDarkMode.mm index cecd90044b..2bce7835e8 100644 --- a/src/slic3r/Utils/MacDarkMode.mm +++ b/src/slic3r/Utils/MacDarkMode.mm @@ -57,7 +57,7 @@ void set_miniaturizable(void * window) while(viewObject = (NSView *)[viewEnum nextObject]) { if([viewObject class] == [NSTextField self]) { //[(NSTextField*)viewObject setTextColor : NSColor.whiteColor]; - mainframe_text_field = viewObject; + mainframe_text_field = (NSTextField*)viewObject; } } } @@ -74,7 +74,7 @@ void set_title_colour_after_set_title(void * window) while(viewObject = (NSView *)[viewEnum nextObject]) { if([viewObject class] == [NSTextField self]) { [(NSTextField*)viewObject setTextColor : NSColor.whiteColor]; - mainframe_text_field = viewObject; + mainframe_text_field = (NSTextField*)viewObject; } } diff --git a/tests/libslic3r/test_marchingsquares.cpp b/tests/libslic3r/test_marchingsquares.cpp index 6844ecb6ac..9a11f49faa 100644 --- a/tests/libslic3r/test_marchingsquares.cpp +++ b/tests/libslic3r/test_marchingsquares.cpp @@ -1,4 +1,6 @@ +#ifndef NOMINMAX #define NOMINMAX +#endif #include #include "test_utils.hpp" From e8d35fadd45c537d578cedc4eacf548ad7a48920 Mon Sep 17 00:00:00 2001 From: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com> Date: Thu, 10 Sep 2026 13:03:50 +0200 Subject: [PATCH 088/162] Fix internal bridges over Hilbert Curve/Octagram Spiral sparse infill (#15206) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix internal bridges over Hilbert Curve/Octagram Spiral sparse infill For patterns with curved/turning anchor lines (Hilbert Curve, Octagram Spiral), the bridge_over_infill algorithm produced incorrect results: 1. determine_bridging_angle: sampling curved anchor orientations produced noise across all turning directions (0/90/180/270°) instead of a single dominant one, yielding unstable bridge angles with 180° spread. Fix: use the configured infill_direction + 90° directly, bypassing the noisy sampling. The old blind +0.25*PI (Hilbert) and +1/16*PI (Octagram) offsets are removed. 2. construct_anchored_polygon: curved Hilbert/Octagram anchors intersected each vertical scan line many times at wildly different Y positions, producing chaotic polygon sections — holes in random places, bridges over air, rotated bridges. Fix: replace the curved infill polylines with synthetic straight lines parallel to infill_direction, spaced at the real infill line spacing (flow_spacing / density). Lines are centered on the limiting_area bbox center so that after rotation they span the full bridged_area. Anchors are left at full bbox length (not clipped) to guarantee every scan line finds an anchor. Rectilinear and other straight-line patterns are unaffected. Known limitation: some bridge edges may still terminate over air in edge cases where the nearest synthetic anchor line is more than one infill spacing away from the bridge boundary. This will be addressed in a follow-up. * fix: anchor internal bridges to actual sparse infill Preserve real anchors across regions and align plane-path anchor origins with printed infill. Respect lower-layer rotation templates and model alignment, and sample curved bridge boundaries more finely. Add regression coverage for anchor alignment, bridge angles and region isolation, with Orca comments explaining the geometry constraints. Verified 175 FFF tests before the comment-only follow-up; preserve CRLF in modified files. * Fix internal bridge support contacts and separated infill origins Restore anchor contact after bridge smoothing and share per-body pattern origins between anchors and printed infill. Recompute origins when preparation settings change. Cover multiline counts 1, 2 and 3 and add regressions for printed bridge support, separated infill alignment and reslicing. * Add explicit standard headers to PrintObject tests * test: cover surface centering when infill settings change Verify top and bottom Archimedean Chords and Octagram Spiral paths after switching centering modes or toggling separated infills. Compare reslicing against fresh slicing and document dependent infill invalidation. * test: preserve directional surface infill when settings change * perf: index layer islands for connected-body detection * test: use public print pipeline for body centering checks --- src/libslic3r/Fill/Fill.cpp | 75 +++-- src/libslic3r/Fill/Fill.hpp | 6 + src/libslic3r/PrintObject.cpp | 304 +++++++++++------- tests/fff_print/test_fill.cpp | 66 ++++ tests/fff_print/test_printobject.cpp | 442 +++++++++++++++++++++++++++ 5 files changed, 736 insertions(+), 157 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index dc772580ca..f5386b085c 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -11,7 +11,7 @@ #include "AABBTreeLines.hpp" #include "ExtrusionEntity.hpp" -#include "FillBase.hpp" +#include "Fill.hpp" #include "FillRectilinear.hpp" #include "FillLightning.hpp" #include "FillConcentricInternal.hpp" @@ -1234,6 +1234,33 @@ std::vector group_fills(const Layer &layer, LockRegionParam &lock_p return surface_fills; } +// Orca: Anchors and printed infill must share the same body origin. Keep the choice +// here so per-model surface centering and separated sparse infill cannot drift apart. +static BoundingBox infill_bounding_box(const Layer &layer, const SurfaceFill &fill, const ExPolygon &expoly, BoundingBox bbox) +{ + const auto ¶ms = fill.params; + const auto &config = layer.regions()[fill.region_id]->region().config(); + const bool external = params.extrusion_role == erTopSolidInfill || params.extrusion_role == erBottomSurface; + const bool per_model = external && params.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model && + (params.pattern == ipArchimedeanChords || params.pattern == ipOctagramSpiral); + const bool separate = !external && params.separated_infills && + (is_separable_infill_pattern(params.pattern) || !config.solid_infill_rotate_template.value.empty() || + !config.sparse_infill_rotate_template.value.empty()); + if (per_model || separate) { + double best_overlap = 0.; + for (size_t i = 0; i < layer.lslices.size() && i < layer.lslices_separated_component_bboxes.size(); ++i) { + const double overlap = area(intersection_ex(layer.lslices[i], expoly)); + if (overlap > best_overlap) { + best_overlap = overlap; + const Point center = layer.lslices_separated_component_bboxes[i].center(); + bbox = layer.object()->bounding_box(); + bbox.translate(center.x(), center.y()); + } + } + } + return bbox; +} + #ifdef SLIC3R_DEBUG_SLICE_PROCESSING void export_group_fills_to_svg(const char *path, const std::vector &fills) { @@ -1353,19 +1380,9 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // Orca: Checking the filling of a centered surface by drawing for each model parts bool is_top_or_bottom = params.extrusion_role == erTopSolidInfill || params.extrusion_role == erBottomSurface; - bool is_centered_infill = surface_fill.params.pattern == ipArchimedeanChords || surface_fill.params.pattern == ipOctagramSpiral; if (is_top_or_bottom) { params.center_of_surface_pattern = surface_fill.params.center_of_surface_pattern; // Orca: center of surface pattern } - // Orca: Each_Model centers the pattern on each model part's bbox; Each_Surface / Each_Assembly - // fall through to the default (whole-object) bounding box below. - bool is_per_model_center = is_top_or_bottom && params.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model && is_centered_infill; - bool is_separate_infill = !is_top_or_bottom && surface_fill.params.separated_infills && - ( - is_separable_infill_pattern(surface_fill.params.pattern) || - params.config->solid_infill_rotate_template != "" || - params.config->sparse_infill_rotate_template != "" ); - if( surface_fill.params.pattern == ipLockedZag ) { params.locked_zag = true; params.infill_lock_depth = surface_fill.params.infill_lock_depth; @@ -1389,34 +1406,8 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.can_reverse = false; for (ExPolygon& expoly : surface_fill.expolygons) { - // Orca: separate infill / per-model pattern centering. - // - // Center the pattern on each connected body of the object independently, so every piece - // is filled exactly as if it were sliced on its own: touching/overlapping parts merge - // into one body sharing a center, while separate parts and disconnected islands (even - // interleaved-but-not-touching ones, e.g. chain links) each get their own. The body each - // island belongs to, and its full bounding box, were resolved in 3D by PrintObject:: - // infill() (lslices_separated_component_bboxes, aligned with this layer's lslices). We - // match this fill region to the island it overlaps most, then re-use the whole-object - // bounding box (origin-centered — identical extent to the default, so coverage and cost - // are unchanged) re-centered on that body. - if (is_per_model_center || is_separate_infill) { - double best_overlap = 0.; - BoundingBox best_component; - for (size_t r = 0; r < this->lslices.size() && r < this->lslices_separated_component_bboxes.size(); ++ r) { - const double overlap = area(intersection_ex(this->lslices[r], expoly)); - if (overlap > best_overlap) { - best_overlap = overlap; - best_component = this->lslices_separated_component_bboxes[r]; - } - } - if (best_component.defined) { - const Point c = best_component.center(); - BoundingBox part_bbox = bbox; // origin-centered, whole-object extent (from above) - part_bbox.translate(c.x(), c.y()); // re-center on this body - f->set_bounding_box(part_bbox); - } - } // - End: separate infill / per-model pattern centering + // Orca: Reuse the body origin used for bridge anchoring, resetting it for each surface. + f->set_bounding_box(infill_bounding_box(*this, surface_fill, expoly, bbox)); f->no_overlap_expolygons = intersection_ex(surface_fill.no_overlap_expolygons, ExPolygons() = {expoly}, ApplySafetyOffset::Yes); if (params.symmetric_infill_y_axis) { @@ -1583,8 +1574,14 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc params.multiline = surface_fill.params.multiline; params.gyroid_optimized = surface_fill.params.gyroid_optimized; params.smooth_factor = surface_fill.params.smooth_factor; + // Orca: Match make_fills() when choosing the origin of plane-path patterns. + // Without the sparse extrusion role, the filler uses each surface's bounds + // instead of the object's bounds, so bridge anchors shift away from printed infill. + params.extrusion_role = surface_fill.params.extrusion_role; for (ExPolygon &expoly : surface_fill.expolygons) { + // Orca: Match the per-body origin of make_fills() before generating physical anchors. + f->set_bounding_box(infill_bounding_box(*this, surface_fill, expoly, bbox)); // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. f->spacing = surface_fill.params.spacing; surface_fill.surface.expolygon = std::move(expoly); diff --git a/src/libslic3r/Fill/Fill.hpp b/src/libslic3r/Fill/Fill.hpp index e92ab2dee5..b183cf0253 100644 --- a/src/libslic3r/Fill/Fill.hpp +++ b/src/libslic3r/Fill/Fill.hpp @@ -14,6 +14,12 @@ namespace Slic3r { class ExtrusionEntityCollection; class LayerRegion; +class PrintObject; + +// Orca: Share the layer rotation calculation between infill generation and internal +// bridge angle selection so both interpret rotation templates in the same way. +double calculate_infill_rotation_angle(const PrintObject *object, size_t layer_id, + const double &fixed_infill_angle, const std::string &template_string); // An interface class to Perl, aggregating an instance of a Fill and a FillData. class Filler diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index a228bb7436..e147356ea6 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -21,9 +21,11 @@ #include "TriangleMeshSlicer.hpp" #include "Utils.hpp" #include "Fill/FillAdaptive.hpp" +#include "Fill/Fill.hpp" #include "Fill/FillLightning.hpp" #include "Format/STL.hpp" #include "format.hpp" +#include "AABBTreeIndirect.hpp" #include "AABBTreeLines.hpp" #include @@ -672,6 +674,98 @@ void PrintObject::prepare_infill() } // for each region #endif /* SLIC3R_DEBUG_SLICE_PROCESSING */ + // Orca: precompute the object's 3D connected bodies for separated infills / per-model + // centering. Two islands belong to the same body when their slices overlap on adjacent + // layers; islands that only overlap in top-down projection but never touch (e.g. interleaved + // chain links) stay separate, matching "split to objects". Each layer island then records + // the full bounding box of its body, so its infill is centered on that body as if it were + // sliced alone. Compute this before bridges so anchors and extrusion share the same origin. + bool needs_separated_components = false; + for (size_t i = 0; i < this->num_printing_regions(); ++ i) { + const PrintRegionConfig &rc = this->printing_region(i).config(); + if (rc.separated_infills || rc.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model) { + needs_separated_components = true; + break; + } + } + // Orca: Fast path: the feature only changes anything when the object is made of more than one + // connected body. Detect that cheaply the same way as "Split to objects" — more than one + // model part, or a single part whose mesh is splittable (is_splittable() is cached). A single + // body already shares the object center, i.e. the default, so skip the connectivity pass. + if (needs_separated_components) { + int parts = 0; + const ModelVolume *first_part = nullptr; + for (const ModelVolume *v : this->model_object()->volumes) + if (v->is_model_part()) { ++ parts; first_part = v; } + if (parts <= 1 && ! (first_part != nullptr && first_part->is_splittable())) + needs_separated_components = false; + } + for (Layer *layer : m_layers) + layer->lslices_separated_component_bboxes.clear(); + if (needs_separated_components) { + const size_t nl = m_layers.size(); + std::vector offset(nl + 1, 0); // Orca: flat index of the first island of each layer + for (size_t i = 0; i < nl; ++ i) + offset[i + 1] = offset[i] + m_layers[i]->lslices.size(); + const size_t nreg = offset[nl]; + // Orca: Union-find over every (layer, island). + std::vector parent(nreg); + for (size_t i = 0; i < nreg; ++ i) parent[i] = i; + auto find = [&parent](size_t x) { + while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } + return x; + }; + auto unite = [&](size_t a, size_t b) { a = find(a); b = find(b); if (a != b) parent[a] = b; }; + // Orca: Index the smaller of two consecutive layers instead of scanning every + // pair of islands. The tree prunes distant boxes on fragmented models; exact + // polygon intersections still decide connectivity for the remaining candidates. + for (size_t i = 0; i + 1 < nl; ++ i) { + m_print->throw_if_canceled(); + size_t layer_a = i, layer_b = i + 1; + if (m_layers[layer_a]->lslices.size() < m_layers[layer_b]->lslices.size()) + std::swap(layer_a, layer_b); + const Layer *la = m_layers[layer_a], *lb = m_layers[layer_b]; + if (lb->lslices.empty()) + continue; + + using IslandTree = AABBTreeIndirect::Tree<2, coord_t>; + std::vector bboxes; + bboxes.reserve(lb->lslices.size()); + for (size_t b = 0; b < lb->lslices.size(); ++ b) + bboxes.emplace_back(b, lb->lslices_bboxes[b]); + IslandTree tree; + tree.build_modify_input(bboxes); + for (size_t a = 0; a < la->lslices.size(); ++ a) { + const IslandTree::BoundingBox query(la->lslices_bboxes[a].min, la->lslices_bboxes[a].max); + AABBTreeIndirect::traverse(tree, + [&query](const IslandTree::Node &node) { return node.bbox.intersects(query); }, + [&](const IslandTree::Node &node) { + const size_t b = node.idx; + // Orca: Tree boxes include an epsilon, so retain the original box + // filter. Already-connected islands cannot change the partition + // and need no further polygon intersection. + if (la->lslices_bboxes[a].overlap(lb->lslices_bboxes[b]) && + find(offset[layer_a] + a) != find(offset[layer_b] + b) && + ! intersection_ex(la->lslices[a], lb->lslices[b]).empty()) + unite(offset[layer_a] + a, offset[layer_b] + b); + return true; + }); + } + } + // Orca: Full bounding box of each body, indexed by its union-find root. + std::vector body_bbox(nreg); + for (size_t i = 0; i < nl; ++ i) + for (size_t a = 0; a < m_layers[i]->lslices.size(); ++ a) + body_bbox[find(offset[i] + a)].merge(m_layers[i]->lslices_bboxes[a]); + // Orca: Store the body bbox for every island. + for (size_t i = 0; i < nl; ++ i) { + Layer *layer = m_layers[i]; + layer->lslices_separated_component_bboxes.resize(layer->lslices.size()); + for (size_t a = 0; a < layer->lslices.size(); ++ a) + layer->lslices_separated_component_bboxes[a] = body_bbox[find(offset[i] + a)]; + } + } + // the following step needs to be done before combination because it may need // to remove only half of the combined infill this->bridge_over_infill(); @@ -706,71 +800,6 @@ void PrintObject::infill() if (this->set_started(posInfill)) { m_print->set_status(35, L("Generating infill toolpath")); - // Orca: precompute the object's 3D connected bodies for separated infills / per-model - // centering. Two islands belong to the same body when their slices overlap on adjacent - // layers; islands that only overlap in top-down projection but never touch (e.g. interleaved - // chain links) stay separate, matching "split to objects". Each layer island then records - // the full bounding box of its body, so its infill is centered on that body as if it were - // sliced alone. Done once here, before the parallel fill, and only when a region needs it. - bool needs_separated_components = false; - for (size_t i = 0; i < this->num_printing_regions(); ++ i) { - const PrintRegionConfig &rc = this->printing_region(i).config(); - if (rc.separated_infills || rc.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model) { - needs_separated_components = true; - break; - } - } - // Fast path: the feature only changes anything when the object is made of more than one - // connected body. Detect that cheaply the same way as "Split to objects" — more than one - // model part, or a single part whose mesh is splittable (is_splittable() is cached). A single - // body already shares the object center, i.e. the default, so skip the connectivity pass. - if (needs_separated_components) { - int parts = 0; - const ModelVolume *first_part = nullptr; - for (const ModelVolume *v : this->model_object()->volumes) - if (v->is_model_part()) { ++ parts; first_part = v; } - if (parts <= 1 && ! (first_part != nullptr && first_part->is_splittable())) - needs_separated_components = false; - } - for (Layer *layer : m_layers) - layer->lslices_separated_component_bboxes.clear(); - if (needs_separated_components) { - const size_t nl = m_layers.size(); - std::vector offset(nl + 1, 0); // flat index of the first island of each layer - for (size_t i = 0; i < nl; ++ i) - offset[i + 1] = offset[i] + m_layers[i]->lslices.size(); - const size_t nreg = offset[nl]; - // Union-find over every (layer, island). - std::vector parent(nreg); - for (size_t i = 0; i < nreg; ++ i) parent[i] = i; - auto find = [&parent](size_t x) { - while (parent[x] != x) { parent[x] = parent[parent[x]]; x = parent[x]; } - return x; - }; - auto unite = [&](size_t a, size_t b) { a = find(a); b = find(b); if (a != b) parent[a] = b; }; - // Join islands that overlap between two consecutive layers. - for (size_t i = 0; i + 1 < nl; ++ i) { - const Layer *la = m_layers[i], *lb = m_layers[i + 1]; - for (size_t a = 0; a < la->lslices.size(); ++ a) - for (size_t b = 0; b < lb->lslices.size(); ++ b) - if (la->lslices_bboxes[a].overlap(lb->lslices_bboxes[b]) && - ! intersection_ex(la->lslices[a], lb->lslices[b]).empty()) - unite(offset[i] + a, offset[i + 1] + b); - } - // Full bounding box of each body, indexed by its union-find root. - std::vector body_bbox(nreg); - for (size_t i = 0; i < nl; ++ i) - for (size_t a = 0; a < m_layers[i]->lslices.size(); ++ a) - body_bbox[find(offset[i] + a)].merge(m_layers[i]->lslices_bboxes[a]); - // Store the body bbox for every island. - for (size_t i = 0; i < nl; ++ i) { - Layer *layer = m_layers[i]; - layer->lslices_separated_component_bboxes.resize(layer->lslices.size()); - for (size_t a = 0; a < layer->lslices.size(); ++ a) - layer->lslices_separated_component_bboxes[a] = body_bbox[find(offset[i] + a)]; - } - } - const auto& adaptive_fill_octree = this->m_adaptive_fill_octrees.first; const auto& support_fill_octree = this->m_adaptive_fill_octrees.second; @@ -1401,8 +1430,6 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "infill_anchor_max" || opt_key == "top_surface_line_width" || opt_key == "bottom_surface_density" - || opt_key == "center_of_surface_pattern" - || opt_key == "separated_infills" || opt_key == "initial_layer_line_width" || opt_key == "small_area_infill_flow_compensation" || opt_key == "lateral_lattice_angle_1" @@ -1410,6 +1437,10 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "infill_overhang_angle") { steps.emplace_back(posInfill); } else if (opt_key == "sparse_infill_pattern" + // Orca: Body centering now also determines bridge anchors during preparation. + // Invalidating preparation also invalidates infill, including top/bottom surfaces. + || opt_key == "center_of_surface_pattern" + || opt_key == "separated_infills" || opt_key == "sparse_infill_smooth_factor" || opt_key == "symmetric_infill_y_axis" || opt_key == "infill_shift_step" @@ -3009,21 +3040,12 @@ void PrintObject::bridge_over_infill() return diff(layers_sparse_infill, not_sparse_infill); }; - // LAMBDA do determine optimal bridging angle - auto determine_bridging_angle = [](const Polygons &bridged_area, const Lines &anchors, InfillPattern dominant_pattern, double infill_direction) { + // Orca: Derive the fallback bridge direction from the supplied anchor geometry. + // Pattern-specific angle selection belongs at the call site, where the supporting + // layer and region are known; this helper must not override it with a base config angle. + auto determine_bridging_angle = [](const Polygons &bridged_area, const Lines &anchors) { AABBTreeLines::LinesDistancer lines_tree(anchors); - // Orca: since 3D Honeycomb was "fixed" by forcing coordf_t layerHeight = scale_(1.0), this is no longer needed. - // CorssHatch also does not need fixed angle. - // - // Check it the infill that require a fixed infill angle. - //switch (dominant_pattern) { - //case ip3DHoneycomb: - //case ipCrossHatch: - // return (infill_direction + 45.0) * 2.0 * M_PI / 360.; - //default: break; - //} - std::map counted_directions; for (const Polygon &p : bridged_area) { double acc_distance = 0; @@ -3089,18 +3111,15 @@ void PrintObject::bridge_over_infill() if (bridging_angle == 0) { bridging_angle = 0.001; } - switch (dominant_pattern) { - case ipHilbertCurve: bridging_angle += 0.25 * PI; break; - case ipOctagramSpiral: bridging_angle += (1.0 / 16.0) * PI; break; - default: break; - } return bridging_angle; }; - // LAMBDA that will fill given polygons with lines, exapand the lines to the nearest anchor, and reconstruct polygons from the newly - // generated lines - auto construct_anchored_polygon = [](Polygons bridged_area, Lines anchors, const Flow &bridging_flow, double bridging_angle) { + // Orca: Extend scan sections to the nearest anchors and reconstruct the bridge area. + // scan_spacing controls boundary sampling independently of the extrusion spacing; + // anchoring overlap and smoothing thresholds still use the physical bridging flow. + auto construct_anchored_polygon = [](Polygons bridged_area, Lines anchors, const Flow &bridging_flow, double bridging_angle, + coord_t scan_spacing, bool restore_anchors = false) { auto lines_rotate = [](Lines &lines, double cos_angle, double sin_angle) { for (Line &l : lines) { double ax = double(l.a.x()); @@ -3127,12 +3146,12 @@ void PrintObject::bridge_over_infill() BoundingBox bb_x = get_extents(bridged_area); BoundingBox bb_y = get_extents(anchors); - const size_t n_vlines = (bb_x.max.x() - bb_x.min.x() + bridging_flow.scaled_spacing() - 1) / bridging_flow.scaled_spacing(); + const size_t n_vlines = (bb_x.max.x() - bb_x.min.x() + scan_spacing - 1) / scan_spacing; std::vector vertical_lines(n_vlines); for (size_t i = 0; i < n_vlines; i++) { - // Orca: Make sure the line is placed in the middle of the extrusion - // coord_t x = bb_x.min.x() + i * bridging_flow.scaled_spacing(); - coord_t x = bb_x.min.x() + (i + 0.5) * bridging_flow.scaled_spacing(); + // Orca: Sample the center of each reconstructed strip. Its edges lie + // half a scan step away, even when the sampling is finer than extrusion. + coord_t x = bb_x.min.x() + (i + 0.5) * scan_spacing; coord_t y_min = bb_y.min.y() - bridging_flow.scaled_spacing(); coord_t y_max = bb_y.max.y() + bridging_flow.scaled_spacing(); vertical_lines[i].a = Point{x, y_min}; @@ -3155,7 +3174,11 @@ void PrintObject::bridge_over_infill() auto anchors_intersections = anchors_and_walls_tree.intersections_with_line(vertical_lines[i]); for (Line §ion : polygon_sections[i]) { - auto maybe_below_anchor = std::upper_bound(anchors_intersections.rbegin(), anchors_intersections.rend(), section.a, + // Orca: A repaired boundary may already overlap its anchor by one flow width. + // Include that overlap in the search so restoring rounded corners does not + // extend every already anchored section into the next sparse infill cell. + const coord_t overlap = restore_anchors ? bridging_flow.scaled_width() + SCALED_EPSILON : 0; + auto maybe_below_anchor = std::upper_bound(anchors_intersections.rbegin(), anchors_intersections.rend(), section.a + Point{0, overlap}, [](const Point &a, const std::pair &b) { return a.y() > b.first.y(); }); @@ -3164,7 +3187,7 @@ void PrintObject::bridge_over_infill() section.a.y() -= bridging_flow.scaled_width() * (0.5 + 0.5); } - auto maybe_upper_anchor = std::upper_bound(anchors_intersections.begin(), anchors_intersections.end(), section.b, + auto maybe_upper_anchor = std::upper_bound(anchors_intersections.begin(), anchors_intersections.end(), section.b - Point{0, overlap}, [](const Point &a, const std::pair &b) { return a.y() < b.first.y(); }); @@ -3194,7 +3217,9 @@ void PrintObject::bridge_over_infill() }); } - // reconstruct polygon from polygon sections + // Orca: Reconstruct the polygon from scan sections. At discontinuities and + // strip starts/ends, use half the scan step for the X offsets; using half an + // extrusion spacing would overlap the finer strips and distort curved anchors. struct TracedPoly { Points lows; @@ -3220,8 +3245,8 @@ void PrintObject::bridge_over_infill() 36.0 * double(bridging_flow.scaled_spacing()) * bridging_flow.scaled_spacing()) { traced_poly.lows.push_back(candidate->a); } else { - traced_poly.lows.push_back(traced_poly.lows.back() + Point{bridging_flow.scaled_spacing() / 2, 0}); - traced_poly.lows.push_back(candidate->a - Point{bridging_flow.scaled_spacing() / 2, 0}); + traced_poly.lows.push_back(traced_poly.lows.back() + Point{scan_spacing / 2, 0}); + traced_poly.lows.push_back(candidate->a - Point{scan_spacing / 2, 0}); traced_poly.lows.push_back(candidate->a); } @@ -3229,8 +3254,8 @@ void PrintObject::bridge_over_infill() 36.0 * double(bridging_flow.scaled_spacing()) * bridging_flow.scaled_spacing()) { traced_poly.highs.push_back(candidate->b); } else { - traced_poly.highs.push_back(traced_poly.highs.back() + Point{bridging_flow.scaled_spacing() / 2, 0}); - traced_poly.highs.push_back(candidate->b - Point{bridging_flow.scaled_spacing() / 2, 0}); + traced_poly.highs.push_back(traced_poly.highs.back() + Point{scan_spacing / 2, 0}); + traced_poly.highs.push_back(candidate->b - Point{scan_spacing / 2, 0}); traced_poly.highs.push_back(candidate->b); } segment_added = true; @@ -3238,9 +3263,9 @@ void PrintObject::bridge_over_infill() } if (!segment_added) { - // Zero overlapping segments, we just close this polygon - traced_poly.lows.push_back(traced_poly.lows.back() + Point{bridging_flow.scaled_spacing() / 2, 0}); - traced_poly.highs.push_back(traced_poly.highs.back() + Point{bridging_flow.scaled_spacing() / 2, 0}); + // Orca: No section continues this strip; close at its right edge. + traced_poly.lows.push_back(traced_poly.lows.back() + Point{scan_spacing / 2, 0}); + traced_poly.highs.push_back(traced_poly.highs.back() + Point{scan_spacing / 2, 0}); Polygon &new_poly = expanded_bridged_area.emplace_back(std::move(traced_poly.lows)); new_poly.points.insert(new_poly.points.end(), traced_poly.highs.rbegin(), traced_poly.highs.rend()); traced_poly.lows.clear(); @@ -3255,9 +3280,9 @@ void PrintObject::bridge_over_infill() for (const auto &segment : polygon_slice) { if (used_segments.find(&segment) == used_segments.end()) { TracedPoly &new_tp = current_traced_polys.emplace_back(); - new_tp.lows.push_back(segment.a - Point{bridging_flow.scaled_spacing() / 2, 0}); + new_tp.lows.push_back(segment.a - Point{scan_spacing / 2, 0}); new_tp.lows.push_back(segment.a); - new_tp.highs.push_back(segment.b - Point{bridging_flow.scaled_spacing() / 2, 0}); + new_tp.highs.push_back(segment.b - Point{scan_spacing / 2, 0}); new_tp.highs.push_back(segment.b); } } @@ -3364,7 +3389,10 @@ void PrintObject::bridge_over_infill() total_fill_area = closing(total_fill_area, float(SCALED_EPSILON)); expansion_area = closing(expansion_area, float(SCALED_EPSILON)); expansion_area = intersection(expansion_area, deep_infill_area); - Polylines anchors = intersection_pl(infill_lines[lidx - 1], shrink(expansion_area, spacing)); + // Orca: Preserve the real lower-layer anchors for every candidate in this + // layer. Replacing this shared set for one pattern also changes later regions, + // and synthetic straight lines can claim support where no infill is printed. + const Polylines anchors = intersection_pl(infill_lines[lidx - 1], shrink(expansion_area, spacing)); Polygons internal_unsupported_area = shrink(deep_infill_area, spacing * 4.5); #ifdef DEBUG_BRIDGE_OVER_INFILL @@ -3375,6 +3403,9 @@ void PrintObject::bridge_over_infill() std::vector expanded_surfaces; expanded_surfaces.reserve(surfaces_by_layer[lidx].size()); for (const CandidateSurface &candidate : surfaces_by_layer[lidx]) { + const auto ®ion_config = candidate.region->region().config(); + const bool turning_pattern = region_config.sparse_infill_pattern == ipHilbertCurve || + region_config.sparse_infill_pattern == ipOctagramSpiral; const Flow &flow = candidate.region->bridging_flow(frSolidInfill, true); Polygons area_to_be_bridge = expand(candidate.new_polys, flow.scaled_spacing()); area_to_be_bridge = intersection(area_to_be_bridge, deep_infill_area); @@ -3403,20 +3434,40 @@ void PrintObject::bridge_over_infill() to_lines(area_to_be_bridge), to_lines(boundary_plines), to_lines(anchors), to_lines(expansion_area)); #endif - double bridging_angle = 0; - if (!anchors.empty()) { - bridging_angle = determine_bridging_angle(area_to_be_bridge, to_lines(anchors), - candidate.region->region().config().sparse_infill_pattern.value, - candidate.region->region().config().infill_direction.value); - } else { - // use expansion boundaries as anchors. - // Also, use Infill pattern that is neutral for angle determination, since there are no infill lines. - bridging_angle = determine_bridging_angle(area_to_be_bridge, to_lines(boundary_plines), InfillPattern::ipLine, 0); + double bridging_angle = -1.; + if (!anchors.empty() && turning_pattern) { + // Orca: Keep adjacent bridges over Hilbert/Octagram aligned despite + // their many local turning directions. Use the lower layer's rotation, + // since that is the infill supporting the bridge, not the current layer's. + for (const LayerRegion *lower_region : layer->lower_layer->regions()) { + // Orca: Apply the configured direction only if the same region has + // sparse infill below this bridge. A height modifier may put another + // pattern underneath, requiring the geometry-based fallback below. + if (&lower_region->region() != &candidate.region->region() || + intersection(area_to_be_bridge, to_polygons(lower_region->fill_surfaces.filter_by_type(stInternal))).empty()) + continue; + bridging_angle = calculate_infill_rotation_angle(po, layer->lower_layer->id(), region_config.infill_direction.value, + region_config.sparse_infill_rotate_template.value) + 0.5 * PI; + // Orca: Apply model alignment as infill generation does, then normalize + // the undirected bridge angle to [0, PI), including negative rotations. + if (region_config.align_infill_direction_to_model) { + const auto &m = po->trafo().matrix(); + bridging_angle += std::atan2(double(m(1, 0)), double(m(0, 0))); + } + bridging_angle = std::fmod(bridging_angle, PI); + if (bridging_angle < 0.) + bridging_angle += PI; + break; + } } + // Orca: A different region below (e.g. a height modifier) needs the actual anchor + // directions. When there are no sparse anchors, use the expansion boundaries. + if (bridging_angle < 0.) + bridging_angle = determine_bridging_angle(area_to_be_bridge, to_lines(anchors.empty() ? boundary_plines : anchors)); - // ORCA: Internal bridge angle override + // Orca: Preserve the user's absolute or relative internal bridge angle + // override after automatic direction selection. if (candidate.region->region().config().internal_bridge_angle.value > 0) { - const auto ®ion_config = candidate.region->region().config(); const double custom_angle_rad = Geometry::deg2rad(region_config.internal_bridge_angle.value); if (region_config.relative_bridge_angle.value) bridging_angle += custom_angle_rad; @@ -3429,11 +3480,19 @@ void PrintObject::bridge_over_infill() } } + // Orca: Changing the bridge direction must not change its physical supports. + // Extend to actual sparse infill or the existing boundary anchors, never to + // a synthetic grid that merely has the same nominal angle and spacing. boundary_plines.insert(boundary_plines.end(), anchors.begin(), anchors.end()); if (!lightning_area.empty() && !intersection(area_to_be_bridge, lightning_area).empty()) { boundary_plines = intersection_pl(boundary_plines, expand(area_to_be_bridge, scale_(10))); } - Polygons bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle); + // Orca: Use four samples per extrusion spacing for Hilbert/Octagram so the + // reconstructed boundary follows rounded anchors instead of cutting corners. + // Keep the original step for other patterns and at least one coordinate unit + // after integer division. This changes boundary accuracy, not infill density. + const coord_t scan_spacing = std::max(coord_t(1), flow.scaled_spacing() / (turning_pattern ? 4 : 1)); + Polygons bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle, scan_spacing); // Check collision with other expanded surfaces { @@ -3447,7 +3506,9 @@ void PrintObject::bridge_over_infill() } } if (reconstruct) { - bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle); + // Orca: Retain the same sampling accuracy when matching a nearby + // bridge's direction; rebuilding must not lose the curved supports. + bridging_area = construct_anchored_polygon(area_to_be_bridge, to_lines(boundary_plines), flow, bridging_angle, scan_spacing); } } @@ -3455,6 +3516,13 @@ void PrintObject::bridge_over_infill() // bridging_area = opening(bridging_area, flow.scaled_spacing()); bridging_area = opening(bridging_area, flow.scaled_spacing() * 0.75); bridging_area = closing(bridging_area, flow.scaled_spacing()); + // Orca: Opening/closing can pull rounded bridge ends away from their real + // supports. Restore those contacts after smoothing, preserving the cleaned + // area and the selected angle; do not smooth the restored contacts again. + if (turning_pattern && !bridging_area.empty()) { + bridging_area = union_(bridging_area, construct_anchored_polygon(bridging_area, to_lines(boundary_plines), flow, + bridging_angle, scan_spacing, true)); + } bridging_area = intersection(bridging_area, limiting_area); bridging_area = intersection(bridging_area, total_fill_area); bridging_area = diff(bridging_area, total_top_area); diff --git a/tests/fff_print/test_fill.cpp b/tests/fff_print/test_fill.cpp index 04e5b61831..aa81570e56 100644 --- a/tests/fff_print/test_fill.cpp +++ b/tests/fff_print/test_fill.cpp @@ -9,6 +9,7 @@ #include #include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/AABBTreeLines.hpp" #include "libslic3r/Fill/Fill.hpp" #include "libslic3r/Flow.hpp" #include "libslic3r/Geometry.hpp" @@ -1229,3 +1230,68 @@ TEST_CASE("Smoothing multiline lightning infill keeps its outlines connected", " REQUIRE(smooth.point_count > sharp.point_count); REQUIRE(smooth.sharp_turns < sharp.sharp_turns); } + +TEST_CASE("Sparse plane-path anchors match the printed infill", "[Fill][InternalBridge][Regression]") +{ + // Orca: Compare generated anchors with actual extrusion across plane-path patterns, + // smoothing, multiline and rotations; an origin shift must not pass as valid support. + const std::string pattern = GENERATE("hilbertcurve", "octagramspiral", "archimedeanchords"); + const std::string smoothing = GENERATE("0%", "100%"); + const int multiline = GENERATE(1, 2); + const bool rotated = GENERATE(false, true); + const bool separated = GENERATE(false, true); + CAPTURE(pattern, smoothing, multiline, rotated, separated); + + auto config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"sparse_infill_pattern", pattern}, + {"sparse_infill_density", "15%"}, + {"sparse_infill_smooth_factor", smoothing}, + {"fill_multiline", multiline}, + {"infill_direction", 45}, + {"sparse_infill_rotate_template", rotated ? "0,25,50" : ""}, + {"align_infill_direction_to_model", rotated}, + {"separated_infills", separated}, + {"top_shell_layers", 0}, + {"bottom_shell_layers", 0}, + {"top_shell_thickness", 0}, + {"bottom_shell_thickness", 0}, + {"layer_height", 0.2}, + {"initial_layer_print_height", 0.2}, + {"resolution", 0.012}}); + Print print; + Model model; + TriangleMesh mesh = make_cube(30, 24, 1); + if (separated) { + // Orca: Two disconnected bodies in one object must each use their own infill origin. + TriangleMesh second = make_cube(30, 24, 1); + second.translate(50, 0, 0); + mesh.merge(second); + } + Slic3r::Test::init_print({mesh}, print, model, config, nullptr, false); + if (rotated) { + model.objects.front()->instances.front()->set_rotation(Vec3d(0., 0., Geometry::deg2rad(23.))); + print.apply(model, config); + } + print.process(); + + const Layer &layer = *print.objects().front()->get_layer(4); + Polylines printed; + for (const LayerRegion *region : layer.regions()) + for (const ExtrusionEntity *entity : region->fills.flatten().entities) + if (entity->role() == erInternalInfill) + entity->collect_polylines(printed); + REQUIRE_FALSE(printed.empty()); + const AABBTreeLines::LinesDistancer printed_tree(to_lines(printed)); + + // Orca: Exclude perimeter connections: anchoring and extrusion can trim those differently. + const Polylines anchors = intersection_pl(layer.generate_sparse_infill_polylines_for_anchoring(nullptr, nullptr, nullptr), + shrink(to_polygons(layer.lslices), scale_(3.))); + REQUIRE_FALSE(anchors.empty()); + double max_distance = 0.; + for (const Polyline &path : anchors) + for (const Point &point : path.equally_spaced_points(scale_(0.25))) + max_distance = std::max(max_distance, printed_tree.distance_from_lines(point)); + // Orca: Allow only the configured simplification tolerance; infill-scale offsets + // would hide anchors that no longer coincide with printed lines. + CHECK(unscale(max_distance) <= config.opt_float("resolution")); +} diff --git a/tests/fff_print/test_printobject.cpp b/tests/fff_print/test_printobject.cpp index fb7fe2c1fd..a373a1ad39 100644 --- a/tests/fff_print/test_printobject.cpp +++ b/tests/fff_print/test_printobject.cpp @@ -4,11 +4,18 @@ #include "libslic3r/Print.hpp" #include "libslic3r/Layer.hpp" #include "libslic3r/GCodeReader.hpp" +#include "libslic3r/ClipperUtils.hpp" +#include "libslic3r/AABBTreeLines.hpp" #include "test_helpers.hpp" +#include #include +#include #include +#include +#include +#include using namespace Slic3r; using namespace Slic3r::Test; @@ -130,3 +137,438 @@ TEST_CASE("Initial layer height is honored", "[PrintObject]") REQUIRE_THAT(*layer_zs.begin(), Catch::Matchers::WithinAbs(0.3, 1e-4)); REQUIRE_THAT(*std::next(layer_zs.begin()), Catch::Matchers::WithinAbs(0.5, 1e-4)); } + +static TriangleMesh internal_bridge_step() +{ + // Orca: The smaller tower leaves a shoulder whose solid skin needs internal bridges + // over the sparse infill in the base, without relying on an external model file. + TriangleMesh mesh = make_cube(30, 24, 3); + TriangleMesh tower = make_cube(14, 10, 1); + tower.translate(8, 7, 3); + mesh.merge(tower); + return mesh; +} + +static DynamicPrintConfig internal_bridge_config(const std::string &pattern, int multiline) +{ + auto config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"sparse_infill_pattern", pattern}, + {"fill_multiline", multiline}, + {"sparse_infill_density", "15%"}, + {"sparse_infill_smooth_factor", "100%"}, + {"infill_direction", 45}, + {"internal_bridge_angle", 0}, + {"thick_internal_bridges", true}, + {"top_shell_layers", 3}, + {"bottom_shell_layers", 2}, + {"top_shell_thickness", 0}, + {"bottom_shell_thickness", 0}, + {"layer_height", 0.2}, + {"initial_layer_print_height", 0.2}}); + return config; +} + +TEST_CASE("Internal bridge angles follow the lower infill layer and model rotation", "[PrintObject][InternalBridge][Regression]") +{ + const std::string pattern = GENERATE("hilbertcurve", "octagramspiral"); + // Orca: Cover both a central line (odd counts) and offset pairs (even counts). + const int multiline = GENERATE(1, 2, 3); + CAPTURE(multiline); + const double rotation = GENERATE(23., -123.); + const std::vector cycle{10., 30., 70.}; + auto config = internal_bridge_config(pattern, multiline); + config.set_deserialize_strict({{"sparse_infill_rotate_template", "10,30,70"}, + {"align_infill_direction_to_model", true}, + {"separated_infills", false}}); + Print print; + Model model; + init_print({internal_bridge_step()}, print, model, config, nullptr, false); + model.objects.front()->instances.front()->set_rotation(Vec3d(0., 0., Geometry::deg2rad(rotation))); + print.apply(model, config); + print.process(); + const PrintObject &object = *print.objects().front(); + size_t bridges = 0; + for (size_t i = 1; i < object.layer_count(); ++i) { + // Orca: The support is one layer below the bridge. Check the template and model + // rotation together, including normalization when the resulting angle is negative. + double expected = std::fmod(cycle[(i - 1) % cycle.size()] + 90. + rotation, 180.); + if (expected < 0.) expected += 180.; + for (const LayerRegion *region : object.get_layer(i)->regions()) + for (const Surface *surface : region->fill_surfaces.filter_by_type(stInternalBridge)) { + CAPTURE(pattern, rotation, i); + CHECK_THAT(Geometry::rad2deg(surface->bridge_angle), Catch::Matchers::WithinAbs(expected, 0.001)); + ++bridges; + } + } + REQUIRE(bridges > 0); +} + +TEST_CASE("Turning infill does not replace the anchors of another region", "[PrintObject][InternalBridge][Regression]") +{ + // Orca: Keep the right-hand region fixed while changing the left-hand pattern in the + // same object. Its bridge areas must be independent of a previous candidate's anchors. + const int multiline = GENERATE(1, 2, 3); + CAPTURE(multiline); + auto right_bridges = [multiline](const std::string &left_pattern) { + auto config = internal_bridge_config(left_pattern, multiline); + Print print; + Model model; + init_print({internal_bridge_step()}, print, model, config, nullptr, false); + TriangleMesh right = internal_bridge_step(); + right.translate(50, 0, 0); + ModelVolume *volume = model.objects.front()->add_volume(std::move(right)); + volume->config.set_key_value("sparse_infill_pattern", new ConfigOptionEnum(ipRectilinear)); + volume->config.set_key_value("infill_direction", new ConfigOptionFloat(17.)); + print.apply(model, config); + print.process(); + std::map result; + const PrintObject &object = *print.objects().front(); + for (size_t i = 0; i < object.layer_count(); ++i) + for (const LayerRegion *region : object.get_layer(i)->regions()) + if (region->region().config().infill_direction == 17.) + polygons_append(result[i], to_polygons(region->fill_surfaces.filter_by_type(stInternalBridge))); + return result; + }; + const auto baseline = right_bridges("rectilinear"); + const auto actual = right_bridges(GENERATE("hilbertcurve", "octagramspiral")); + REQUIRE(actual.size() == baseline.size()); + double total_area = 0.; + for (const auto &[layer, expected] : baseline) { + CAPTURE(layer); + const auto &polys = actual.at(layer); + CHECK(area(diff(expected, polys)) < scaled(1.) * scaled(1.) * 1e-6); + CHECK(area(diff(polys, expected)) < scaled(1.) * scaled(1.) * 1e-6); + total_area += area(expected); + } + REQUIRE(total_area > 0.); +} + +TEST_CASE("Rounded internal bridges end on printed support", "[PrintObject][InternalBridge][Regression]") +{ + const std::string pattern = GENERATE("hilbertcurve", "octagramspiral"); + const bool separated = GENERATE(false, true); + CAPTURE(pattern, separated); + auto config = internal_bridge_config(pattern, 1); + config.set_deserialize_strict({{"infill_wall_overlap", "0%"}, {"separated_infills", separated}}); + TriangleMesh mesh = internal_bridge_step(); + if (separated) { + TriangleMesh second = internal_bridge_step(); + second.translate(50, 0, 0); + mesh.merge(second); + } + Print print; + Model model; + init_print({mesh}, print, model, config, nullptr, false); + print.process(); + + // Orca: Check final extrusion endpoints after polygon cleanup and fill generation. + // A correct bridge angle and correct sparse anchors alone do not guarantee contact. + const PrintObject &object = *print.objects().front(); + size_t checked = 0; + for (size_t i = 1; i < object.layer_count(); ++i) { + Polygons support; + Polylines walls; + for (const LayerRegion *region : object.get_layer(i - 1)->regions()) { + region->perimeters.polygons_covered_by_width(support, 0.f); + region->fills.polygons_covered_by_width(support, 0.f); + region->perimeters.collect_polylines(walls); + } + REQUIRE_FALSE(support.empty()); + const AABBTreeLines::LinesDistancer support_tree(to_lines(union_(support))); + const AABBTreeLines::LinesDistancer wall_tree(to_lines(walls)); + for (const LayerRegion *region : object.get_layer(i)->regions()) + for (const ExtrusionEntity *entity : region->fills.flatten().entities) { + if (entity->role() != erInternalBridgeInfill) + continue; + const auto *path = dynamic_cast(entity); + REQUIRE(path != nullptr); + for (const Line &line : path->polyline.to_polyline().lines()) { + // Orca: Sample span ends, excluding short connectors and wall overlap. + if (line.length() < scale_(std::max(0.7, 3. * path->width))) + continue; + for (const Point &point : {line.a, line.b}) { + if (wall_tree.distance_from_lines(point) <= scale_(0.5)) + continue; + CAPTURE(i, point.x(), point.y()); + const double gap = unscale(support_tree.distance_from_lines(point)) - 0.5 * path->width; + CHECK(gap <= 0.1); + ++checked; + } + } + } + } + REQUIRE(checked > 0); +} + +TEST_CASE("Enabling separated infill recomputes body origins", "[PrintObject][InternalBridge][Regression]") +{ + const std::string pattern = GENERATE("hilbertcurve", "octagramspiral", "archimedeanchords"); + CAPTURE(pattern); + auto footprint = [&](bool reslice) { + auto config = internal_bridge_config(pattern, 2); + config.set_deserialize_strict({{"separated_infills", !reslice}}); + TriangleMesh mesh = internal_bridge_step(); + TriangleMesh second = internal_bridge_step(); + second.translate(50, 0, 0); + mesh.merge(second); + Print print; + Model model; + init_print({mesh}, print, model, config, nullptr, false); + print.process(); + if (reslice) { + // Orca: Enabling centering after a completed slice must rebuild the body + // origins now shared by bridge preparation and printed infill. + config.set_deserialize_strict({{"separated_infills", true}}); + print.apply(model, config); + print.process(); + } + Polygons result; + for (const LayerRegion *region : print.objects().front()->get_layer(4)->regions()) + region->fills.polygons_covered_by_width(result, 0.f); + return union_(result); + }; + const Polygons fresh = footprint(false); + const Polygons resliced = footprint(true); + REQUIRE_FALSE(fresh.empty()); + CHECK(area(diff(fresh, resliced)) < scaled(1.) * scaled(1.) * 1e-6); + CHECK(area(diff(resliced, fresh)) < scaled(1.) * scaled(1.) * 1e-6); +} + +TEST_CASE("Surface centering survives changes to separated infill settings", "[PrintObject][SurfaceInfill][Regression]") +{ + const std::string pattern = GENERATE("archimedeanchords", "octagramspiral"); + const std::string initial_center = GENERATE("each_surface", "each_model", "each_assembly"); + const std::string final_center = GENERATE("each_surface", "each_model", "each_assembly"); + const bool separated = GENERATE(false, true); + const std::string top_order = GENERATE("default", "outward", "inward"); + const std::string bottom_order = top_order == "outward" ? "inward" : top_order == "inward" ? "outward" : "default"; + const std::string density = GENERATE("80%", "100%"); + const bool change_center = initial_center != final_center; + CAPTURE(pattern, initial_center, final_center, separated, top_order, bottom_order, density); + + auto config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"top_surface_pattern", pattern}, + {"bottom_surface_pattern", pattern}, + {"top_surface_fill_order", top_order}, + {"bottom_surface_fill_order", bottom_order}, + {"top_surface_density", density}, + {"bottom_surface_density", density}, + {"center_of_surface_pattern", initial_center}, + {"separated_infills", change_center ? separated : !separated}, + {"sparse_infill_pattern", "rectilinear"}, + {"sparse_infill_density", "15%"}, + {"top_shell_layers", 2}, + {"bottom_shell_layers", 2}, + {"top_shell_thickness", 0}, + {"bottom_shell_thickness", 0}, + {"layer_height", 0.2}, + {"initial_layer_print_height", 0.2}}); + + // Orca: Two disconnected bodies exercise per-body centering. The offset tower also + // makes each-surface and each-model centering differ on the top surfaces. + TriangleMesh mesh = make_cube(30, 24, 2); + TriangleMesh tower = make_cube(12, 10, 1); + tower.translate(4, 3, 2); + mesh.merge(tower); + TriangleMesh second = mesh; + second.translate(50, 0, 0); + mesh.merge(second); + + // Orca: Equal footprints can hide reordered or reversed paths. Retain their point + // sequences and ordering protection to cover the directional surface behavior too. + struct SurfaceFillSnapshot { + std::map> paths; + bool protected_order = true; + }; + auto surface_fills = [](const Print &print) { + std::map, SurfaceFillSnapshot> result; + const PrintObject &object = *print.objects().front(); + for (size_t i = 0; i < object.layer_count(); ++i) { + auto collect = [&](const auto &self, const ExtrusionEntity &entity, bool no_sort) -> void { + if (const auto *collection = dynamic_cast(&entity)) { + for (const ExtrusionEntity *child : collection->entities) + self(self, *child, no_sort || collection->no_sort); + } else if (entity.role() == erTopSolidInfill || entity.role() == erBottomSurface) { + const auto *path = dynamic_cast(&entity); + REQUIRE(path != nullptr); + auto &snapshot = result[{i, entity.role()}]; + // Orca: The centered test model has one body on either side of X=0. + // Their traversal order may vary; preserve path order within each body. + Points points = path->polyline.to_polyline().points; + REQUIRE_FALSE(points.empty()); + snapshot.paths[points.front().x() > 0].push_back(std::move(points)); + snapshot.protected_order &= no_sort && !path->can_reverse(); + } + }; + for (const LayerRegion *region : object.get_layer(i)->regions()) + collect(collect, region->fills, false); + } + return result; + }; + + Print print; + Model model; + init_print({mesh}, print, model, config, nullptr, false); + print.process(); + const auto initial = surface_fills(print); + config.set_deserialize_strict({{"center_of_surface_pattern", final_center}, {"separated_infills", separated}}); + print.apply(model, config); + // Orca: Preparation owns the body origins, and its invalidation must also force + // regeneration of top/bottom extrusion paths, even when sparse infill is unchanged. + CHECK_FALSE(print.objects().front()->is_step_done(posPrepareInfill)); + CHECK_FALSE(print.objects().front()->is_step_done(posInfill)); + print.process(); + const auto resliced = surface_fills(print); + + Print fresh_print; + Model fresh_model; + init_print({mesh}, fresh_print, fresh_model, config, nullptr, false); + fresh_print.process(); + const auto fresh = surface_fills(fresh_print); + REQUIRE_FALSE(fresh.empty()); + REQUIRE(resliced.size() == fresh.size()); + std::set roles; + bool changed_paths = false; + for (const auto &entry : fresh) { + CAPTURE(entry.first.first, entry.first.second); + REQUIRE_FALSE(entry.second.paths.empty()); + roles.insert(entry.first.second); + REQUIRE(resliced.count(entry.first) == 1); + REQUIRE(initial.count(entry.first) == 1); + const auto &actual = resliced.at(entry.first); + const auto &expected = entry.second; + const auto &before = initial.at(entry.first); + CHECK((actual.paths == expected.paths)); + if (!change_center) + CHECK((actual.paths == before.paths)); + if (top_order != "default") { + CHECK(expected.protected_order); + CHECK(actual.protected_order); + CHECK(before.protected_order); + } + changed_paths |= expected.paths != before.paths; + } + CHECK(roles.count(erTopSolidInfill) == 1); + CHECK(roles.count(erBottomSurface) == 1); + // Orca: Guard against a vacuous comparison: changing surface centering must change + // the printed pattern, while toggling separated sparse infill must leave it alone. + CHECK(changed_paths == change_center); +} + +TEST_CASE("Separated infill keeps fragmented and nested bodies independent", "[PrintObject][SurfaceInfill][Regression]") +{ + constexpr size_t grid_size = 8; + TriangleMesh mesh; + auto add_box = [&](double x, double y, double width, double depth) { + TriangleMesh box = make_cube(width, depth, 0.6); + box.translate(x, y, 0); + mesh.merge(box); + }; + // Orca: Many small islands exercise spatial pruning and the tree's original + // island indices. A pillar inside a frame also overlaps its bounding box, + // but must remain a separate body because it lies entirely inside the hole. + for (size_t x = 0; x < grid_size; ++ x) + for (size_t y = 0; y < grid_size; ++ y) + add_box(6 * x, 6 * y, 3, 3); + add_box(54, 0, 20, 4); + add_box(54, 16, 20, 4); + add_box(54, 0, 4, 20); + add_box(70, 0, 4, 20); + add_box(62, 8, 4, 4); + + auto config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"separated_infills", true}, + {"center_of_surface_pattern", "each_surface"}, + {"layer_height", 0.2}, + {"initial_layer_print_height", 0.2}, + {"elefant_foot_compensation", 0}, + {"wall_loops", 1}}); + Print print; + Model model; + init_print({mesh}, print, model, config, nullptr, false); + // Orca: Prepare body bounds through the public pipeline, then inspect the object read-only. + print.process(); + const PrintObject &object = *print.objects().front(); + REQUIRE(object.layer_count() > 1); + for (const Layer *layer : object.layers()) { + REQUIRE(layer->lslices.size() == grid_size * grid_size + 2); + REQUIRE(layer->lslices_separated_component_bboxes.size() == layer->lslices.size()); + size_t holes = 0; + for (size_t i = 0; i < layer->lslices.size(); ++ i) { + const BoundingBox &body = layer->lslices_separated_component_bboxes[i]; + const BoundingBox &island = layer->lslices_bboxes[i]; + CHECK(body.min == island.min); + CHECK(body.max == island.max); + holes += layer->lslices[i].holes.size(); + } + CHECK(holes == 1); + } +} + +TEST_CASE("Body centering survives islands merging and splitting between layers", "[PrintObject][SurfaceInfill][Regression]") +{ + const bool separated = GENERATE(false, true); + CAPTURE(separated); + // Orca: Four posts join through horizontal then vertical rails, creating a + // cycle of overlaps before splitting into four islands again. This exercises + // redundant connections and indexing either adjacent layer. A fifth post + // stays separate at every height. + TriangleMesh mesh; + for (int x : {0, 8}) + for (int y : {0, 8}) { + TriangleMesh post = make_cube(4, 4, 1); + post.translate(x, y, 0); + mesh.merge(post); + } + for (int y : {0, 8}) { + TriangleMesh rail = make_cube(12, 4, 0.2); + rail.translate(0, y, 0.2); + mesh.merge(rail); + } + for (int x : {0, 8}) { + TriangleMesh rail = make_cube(4, 12, 0.2); + rail.translate(x, 0, 0.4); + mesh.merge(rail); + } + TriangleMesh isolated = make_cube(4, 4, 1); + isolated.translate(20, 0, 0); + mesh.merge(isolated); + + auto config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({{"separated_infills", separated}, + {"center_of_surface_pattern", separated ? "each_surface" : "each_model"}, + {"layer_height", 0.2}, + {"initial_layer_print_height", 0.2}, + {"elefant_foot_compensation", 0}, + {"wall_loops", 1}}); + Print print; + Model model; + init_print({mesh}, print, model, config, nullptr, false); + // Orca: Prepare body bounds through the public pipeline, then inspect the object read-only. + print.process(); + const PrintObject &object = *print.objects().front(); + REQUIRE(object.layer_count() == 5); + REQUIRE(object.get_layer(0)->lslices.size() == 5); + REQUIRE(object.get_layer(1)->lslices.size() == 3); + REQUIRE(object.get_layer(2)->lslices.size() == 3); + REQUIRE(object.get_layer(4)->lslices.size() == 5); + + BoundingBox isolated_bbox = object.get_layer(0)->lslices_bboxes.front(); + for (const BoundingBox &bbox : object.get_layer(0)->lslices_bboxes) + if (bbox.min.x() > isolated_bbox.min.x()) + isolated_bbox = bbox; + BoundingBox connected_bbox; + for (const Layer *layer : object.layers()) + for (const BoundingBox &bbox : layer->lslices_bboxes) + if (bbox.min.x() < isolated_bbox.min.x()) + connected_bbox.merge(bbox); + for (const Layer *layer : object.layers()) { + REQUIRE(layer->lslices_separated_component_bboxes.size() == layer->lslices.size()); + for (size_t i = 0; i < layer->lslices.size(); ++ i) { + const BoundingBox &expected = layer->lslices_bboxes[i].min.x() < isolated_bbox.min.x() ? connected_bbox : isolated_bbox; + const BoundingBox &actual = layer->lslices_separated_component_bboxes[i]; + CHECK(actual.min == expected.min); + CHECK(actual.max == expected.max); + } + } +} From a93c6ea67b11376ed27c80acea7878b9fbfbf270 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Thu, 10 Sep 2026 19:29:58 +0800 Subject: [PATCH 089/162] hotfix: system bundles being copied from resources folder on every startup --- src/slic3r/Utils/PresetUpdater.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index b328c43cca..23957f6500 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1106,8 +1106,8 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const const auto is_vendor_enabled = (vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) // always update configs from resource to vendor for ORCA_DEFAULT_BUNDLE || (enabled_vendors.find(vendor_name) != enabled_vendors.end()); - if (enabled_config_update) { - if (is_vendor_installed(vendor_name)) { + if (is_vendor_installed(vendor_name)) { + if (enabled_config_update) { if (is_vendor_enabled) { // Orca: whichever form of the vendor resources ships at the newer // version is the one installing lays down, and the one to judge @@ -1122,17 +1122,12 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const << resource_ver.to_string() << " from resource, old version " << vendor_ver.to_string(); bundles.insert(vendor_name); } - } - else { - //need to be removed because not installed + } else { + // need to be removed because not installed remove_installed_vendor(vendor_name); } } - else if (is_vendor_enabled) { - bundles.insert(vendor_name); - } - } - else if (is_vendor_enabled) { + } else if (is_vendor_enabled) { bundles.insert(vendor_name); } } From 29b3282c8b73ca2518a8045369a938e666c3a8ac Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 10 Sep 2026 15:45:00 +0300 Subject: [PATCH 090/162] Update PluginPickerDialog.cpp --- src/slic3r/GUI/PluginPickerDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PluginPickerDialog.cpp b/src/slic3r/GUI/PluginPickerDialog.cpp index c0ff656fd1..5109b3b483 100644 --- a/src/slic3r/GUI/PluginPickerDialog.cpp +++ b/src/slic3r/GUI/PluginPickerDialog.cpp @@ -124,7 +124,7 @@ void PluginPickerDialog::build_capability_ui(const wxString& plugin_type_label) if (has_capabilities) { m_choice->SetSelection(0); - m_choice->Bind(wxEVT_CHOICE, [this](wxCommandEvent& evt) { + m_choice->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent& evt) { update_capability_description(evt.GetSelection()); }); } else { From d09c3568c553c324fd2684193b8fe9dbd3142b67 Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 10 Sep 2026 17:02:29 +0300 Subject: [PATCH 091/162] match style of progress dialog --- src/slic3r/GUI/PluginsDialog.hpp | 6 +++--- src/slic3r/GUI/Widgets/ProgressDialog.cpp | 9 ++++++--- src/slic3r/GUI/Widgets/ProgressDialog.hpp | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/PluginsDialog.hpp b/src/slic3r/GUI/PluginsDialog.hpp index e663de79e4..98b46cf3e3 100644 --- a/src/slic3r/GUI/PluginsDialog.hpp +++ b/src/slic3r/GUI/PluginsDialog.hpp @@ -107,12 +107,12 @@ private: const wxString& title, const wxString& message, int maximum = 100, - int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE, + int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE, // | wxPD_CAN_ABORT for cancel button bool finish_after_dialog_destroyed = false) { const auto alive = m_alive; - wxProgressDialog* progress = new wxProgressDialog(title, message, maximum, this, style); - wxTimer* timer = new wxTimer(); + ProgressDialog* progress = new ProgressDialog(title, message, maximum, this, style); + wxTimer* timer = new wxTimer(); timer->Bind(wxEVT_TIMER, [alive, progress, message](wxTimerEvent&) { if (alive->load(std::memory_order_acquire) && progress) diff --git a/src/slic3r/GUI/Widgets/ProgressDialog.cpp b/src/slic3r/GUI/Widgets/ProgressDialog.cpp index 53842ecaea..c16f3bcf1f 100644 --- a/src/slic3r/GUI/Widgets/ProgressDialog.cpp +++ b/src/slic3r/GUI/Widgets/ProgressDialog.cpp @@ -178,7 +178,7 @@ bool ProgressDialog::Create(const wxString &title, const wxString &message, int wxBoxSizer *sizer_1line = new wxBoxSizer(wxHORIZONTAL); m_msg = new wxStaticText(m_panel_1line, wxID_ANY, wxEmptyString, wxDefaultPosition, PROGRESSDIALOG_SIMPLEBOOK_SIZE, 0); m_msg->Wrap(-1); - m_msg->SetFont(::Label::Body_13); + m_msg->SetFont(::Label::Body_14); m_msg->SetForegroundColour(PROGRESSDIALOG_GREY_700); sizer_1line->Add(m_msg, 0, wxALIGN_CENTER, 0); m_panel_1line->SetSizer(sizer_1line); @@ -188,7 +188,7 @@ bool ProgressDialog::Create(const wxString &title, const wxString &message, int wxBoxSizer *sizer_2line = new wxBoxSizer(wxVERTICAL); m_msg_2line = new wxStaticText(m_panel_2line, wxID_ANY, wxEmptyString, wxDefaultPosition, PROGRESSDIALOG_SIMPLEBOOK_SIZE, 0); m_msg_2line->Wrap(PROGRESSDIALOG_SIMPLEBOOK_SIZE.x); - m_msg_2line->SetFont(::Label::Body_13); + m_msg_2line->SetFont(::Label::Body_14); m_msg_2line->SetForegroundColour(PROGRESSDIALOG_GREY_700); m_msg_2line->SetMaxSize(wxSize(PROGRESSDIALOG_SIMPLEBOOK_SIZE.x, -1)); sizer_2line->Add(m_msg_2line, 1, wxALL, 0); @@ -204,7 +204,7 @@ bool ProgressDialog::Create(const wxString &title, const wxString &message, int m_msg = new wxStaticText(m_msg_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(PROGRESSDIALOG_SIMPLEBOOK_SIZE.x, -1), 0); m_msg->Wrap(PROGRESSDIALOG_SIMPLEBOOK_SIZE.x); - m_msg->SetFont(::Label::Body_13); + m_msg->SetFont(::Label::Body_14); m_msg->SetForegroundColour(PROGRESSDIALOG_GREY_700); m_msg_sizer->Add(m_msg, 0, wxEXPAND | wxALL, 0); @@ -228,6 +228,9 @@ bool ProgressDialog::Create(const wxString &title, const wxString &message, int if (!HasPDFlag(wxPD_NO_PROGRESS)) { m_gauge = new wxGauge(this, wxID_ANY, maximum, wxDefaultPosition, PROGRESSDIALOG_GAUGE_SIZE, gauge_style); m_gauge->SetValue(0); + m_gauge->SetForegroundColour(wxColour("#009688")); + m_gauge->SetBackgroundColour(wxColour("#D9D9D9")); + wxGetApp().UpdateDarkUI(m_gauge); m_sizer_main->Add(m_gauge, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(28)); } diff --git a/src/slic3r/GUI/Widgets/ProgressDialog.hpp b/src/slic3r/GUI/Widgets/ProgressDialog.hpp index bb770298a9..9ebf31b194 100644 --- a/src/slic3r/GUI/Widgets/ProgressDialog.hpp +++ b/src/slic3r/GUI/Widgets/ProgressDialog.hpp @@ -18,7 +18,7 @@ class WXDLLIMPEXP_FWD_CORE wxWindowDisabler; #define PROGRESSDIALOG_GAUGE_SIZE wxSize(FromDIP(320), FromDIP(6)) #define PROGRESSDIALOG_CANCEL_BUTTON_SIZE wxSize(FromDIP(60), FromDIP(24)) #define PROGRESSDIALOG_DEF_BK wxColour(255,255,255) -#define PROGRESSDIALOG_GREY_700 wxColour(107,107,107) +#define PROGRESSDIALOG_GREY_700 wxColour(54,54,54) // #363636 label color #define wxPD_NO_PROGRESS 0x0100 From a640e32a19583378d68618efba5b44911a6b7cd2 Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 10 Sep 2026 17:29:25 +0300 Subject: [PATCH 092/162] fix build error --- src/slic3r/GUI/PluginsDialog.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/PluginsDialog.hpp b/src/slic3r/GUI/PluginsDialog.hpp index 98b46cf3e3..ec68d12969 100644 --- a/src/slic3r/GUI/PluginsDialog.hpp +++ b/src/slic3r/GUI/PluginsDialog.hpp @@ -2,6 +2,7 @@ #define slic3r_PluginsDialog_hpp_ #include "Widgets/WebViewHostDialog.hpp" +#include "Widgets/ProgressDialog.hpp" #include "PluginSource.hpp" #include "PluginStatus.hpp" #include "PluginSort.hpp" From d97dea2c41d554db3fd115886ce6b67e5beb146c Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Thu, 10 Sep 2026 16:08:54 -0500 Subject: [PATCH 093/162] build: clear 10 driver warnings from CGAL's fp flag pair under clang-cl (#15629) --- src/libslic3r/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index e860f50280..ffc6b5cee6 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -558,6 +558,12 @@ if (_opts) target_compile_options(libslic3r_cgal PRIVATE "${_opts_bad}") endif() +if (IS_CLANG_CL) + # CGAL passes /fp:strict /fp:except-. clang-cl reports the second as overriding part of + # the first; the settings cc1 receives are the same ones MSVC produces from that pair. + target_compile_options(libslic3r_cgal PRIVATE -Wno-overriding-option) +endif () + target_link_libraries(libslic3r_cgal PRIVATE ${_cgal_tgt} admesh libigl mcut boost_libs) if (MSVC AND "${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") # 32 bit MSVC workaround From 0a630738f1e6467f7602b4948a901b8381daab78 Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Fri, 11 Sep 2026 00:15:06 +0300 Subject: [PATCH 094/162] Fix untranslated language dialog captions (#15600) --- localization/i18n/OrcaSlicer.pot | 4 - localization/i18n/ca/OrcaSlicer_ca.po | 4 - localization/i18n/cs/OrcaSlicer_cs.po | 4 - localization/i18n/de/OrcaSlicer_de.po | 4 - localization/i18n/en/OrcaSlicer_en.po | 4 - localization/i18n/es/OrcaSlicer_es.po | 4 - localization/i18n/eu/OrcaSlicer_eu.po | 4 - localization/i18n/fr/OrcaSlicer_fr.po | 4 - localization/i18n/hu/OrcaSlicer_hu.po | 4 - localization/i18n/it/OrcaSlicer_it.po | 4 - localization/i18n/ja/OrcaSlicer_ja.po | 4 - localization/i18n/ko/OrcaSlicer_ko.po | 4 - localization/i18n/lt/OrcaSlicer_lt.po | 4 - localization/i18n/nl/OrcaSlicer_nl.po | 4 - localization/i18n/pl/OrcaSlicer_pl.po | 4 - localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 4 - localization/i18n/ru/OrcaSlicer_ru.po | 4 - localization/i18n/sv/OrcaSlicer_sv.po | 4 - localization/i18n/th/OrcaSlicer_th.po | 4 - localization/i18n/tr/OrcaSlicer_tr.po | 4 - localization/i18n/uk/OrcaSlicer_uk.po | 4 - localization/i18n/vi/OrcaSlicer_vi.po | 4 - localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 4 - localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 4 - src/slic3r/GUI/GUI_App.cpp | 221 -------------------- src/slic3r/GUI/GUI_App.hpp | 3 - src/slic3r/GUI/MainFrame.cpp | 89 -------- src/slic3r/GUI/Preferences.cpp | 23 +- src/slic3r/GUI/Widgets/FanControl.cpp | 2 +- 29 files changed, 4 insertions(+), 430 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 92b25f26c0..bbdc0e59be 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -2293,8 +2293,6 @@ msgstr "" msgid "%s has been removed." msgstr "" -msgid "Switching application language" -msgstr "" msgid "Select the language" msgstr "" @@ -8294,8 +8292,6 @@ msgstr "" msgid "Language selection" msgstr "" -msgid "Switching application language while some presets are modified." -msgstr "" msgid "Asia-Pacific" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 91ba0e2f2a..373eb6e9fd 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -2522,8 +2522,6 @@ msgstr "Hi ha una actualització disponible. Obriu el quadre de diàleg del paqu msgid "%s has been removed." msgstr "%s s'ha eliminat." -msgid "Switching application language" -msgstr "Canvi d'idioma de l'aplicació" msgid "Select the language" msgstr "Seleccioneu l'idioma" @@ -8924,8 +8922,6 @@ msgstr "Voleu continuar?" msgid "Language selection" msgstr "Selecció d'idiomes" -msgid "Switching application language while some presets are modified." -msgstr "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." msgid "Asia-Pacific" msgstr "Àsia-Pacífic" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 9884888723..b0d64c8005 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -2482,8 +2482,6 @@ msgstr "Je k dispozici aktualizace. Otevřete dialog balíčku předvoleb a prov msgid "%s has been removed." msgstr "%s bylo odstraněno." -msgid "Switching application language" -msgstr "Přepnutí jazyka aplikace" msgid "Select the language" msgstr "Zvolte jazyk" @@ -8882,8 +8880,6 @@ msgstr "Chcete pokračovat?" msgid "Language selection" msgstr "Výběr jazyka" -msgid "Switching application language while some presets are modified." -msgstr "Přepnutí jazyka aplikace, když jsou některé předvolby upraveny." msgid "Asia-Pacific" msgstr "Asie-Pacifik" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index bb096c0a23..bd25405cc3 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -2430,8 +2430,6 @@ msgstr "Es ist ein Update verfügbar. Öffnen Sie den Profilbündel-Dialog, um e msgid "%s has been removed." msgstr "%s wurde entfernt." -msgid "Switching application language" -msgstr "Wechsel der Sprache" msgid "Select the language" msgstr "Sprache wählen" @@ -8754,8 +8752,6 @@ msgstr "Möchten Sie fortfahren?" msgid "Language selection" msgstr "Sprachauswahl" -msgid "Switching application language while some presets are modified." -msgstr "Umschalten der Anwendungssprache, während einige Profile geändert werden." msgid "Asia-Pacific" msgstr "Asien-Pazifik" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index b949aea730..35c7f8a87a 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -2289,8 +2289,6 @@ msgstr "" msgid "%s has been removed." msgstr "" -msgid "Switching application language" -msgstr "" msgid "Select the language" msgstr "" @@ -8290,8 +8288,6 @@ msgstr "" msgid "Language selection" msgstr "" -msgid "Switching application language while some presets are modified." -msgstr "" msgid "Asia-Pacific" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e1d86c2fe8..efe4c7dbcd 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -2356,8 +2356,6 @@ msgstr "Hay una actualización disponible. Abra el cuadro de diálogo del paquet msgid "%s has been removed." msgstr "Se ha eliminado %s." -msgid "Switching application language" -msgstr "Cambiando el idioma de la aplicación" msgid "Select the language" msgstr "Seleccionar el idioma" @@ -8529,8 +8527,6 @@ msgstr "¿Quieres continuar?" msgid "Language selection" msgstr "Selección de idiomas" -msgid "Switching application language while some presets are modified." -msgstr "Cambiando idioma de la aplicación mientras se modifican algunos perfiles." msgid "Asia-Pacific" msgstr "Asia-Pacífico" diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index a475d76ab2..698941018e 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -2390,8 +2390,6 @@ msgstr "Eguneratze bat dago erabilgarri. Ireki aurrezarpen-paketeen elkarrizketa msgid "%s has been removed." msgstr "%s kendu da." -msgid "Switching application language" -msgstr "Aplikazioaren hizkuntza aldatzen" msgid "Select the language" msgstr "Hautatu hizkuntza" @@ -8610,8 +8608,6 @@ msgstr "Jarraitu nahi duzu?" msgid "Language selection" msgstr "Hizkuntza-hautaketa" -msgid "Switching application language while some presets are modified." -msgstr "Aplikazioaren hizkuntza aldatzen ari da aurrezarpen batzuk aldatuta dauden bitartean." msgid "Asia-Pacific" msgstr "Asia-Pazifikoa" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index de356edd7d..6344696234 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -2414,8 +2414,6 @@ msgstr "Une mise à jour est disponible. Ouvrez la boîte de dialogue du paquet msgid "%s has been removed." msgstr "%s a été supprimé." -msgid "Switching application language" -msgstr "Changer la langue de l'application" msgid "Select the language" msgstr "Sélectionner la langue" @@ -8678,8 +8676,6 @@ msgstr "Voulez-vous continuer ?" msgid "Language selection" msgstr "Sélection de la langue" -msgid "Switching application language while some presets are modified." -msgstr "Changement de langue de l’application alors que certains préréglages sont modifiés." msgid "Asia-Pacific" msgstr "Asie-Pacifique" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 2c00949e15..78c06dd4c0 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -2460,8 +2460,6 @@ msgstr "Frissítés érhető el. Nyisd meg a beállításcsomag párbeszédablak msgid "%s has been removed." msgstr "%s eltávolítva." -msgid "Switching application language" -msgstr "Alkalmazás nyelvének váltása" msgid "Select the language" msgstr "Válaszd ki a nyelvet" @@ -8806,8 +8804,6 @@ msgstr "Szeretnéd folytatni?" msgid "Language selection" msgstr "Nyelv kiválasztása" -msgid "Switching application language while some presets are modified." -msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." msgid "Asia-Pacific" msgstr "Ázsia-Csendes-óceáni térség" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 1aa2f15701..cf5099bca3 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -2466,8 +2466,6 @@ msgstr "È disponibile un aggiornamento. Apri la finestra di dialogo del bundle msgid "%s has been removed." msgstr "%s è stato rimosso." -msgid "Switching application language" -msgstr "Cambio lingua applicazione" msgid "Select the language" msgstr "Seleziona la lingua" @@ -8807,8 +8805,6 @@ msgstr "Vuoi continuare?" msgid "Language selection" msgstr "Selezione lingua" -msgid "Switching application language while some presets are modified." -msgstr "Cambio lingua applicazione durante la modifica di alcuni profili." msgid "Asia-Pacific" msgstr "Asia-Pacifico" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 9067928361..99cd0d0a83 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -2473,8 +2473,6 @@ msgstr "アップデートが利用可能です。プリセットバンドルの msgid "%s has been removed." msgstr "%sを削除しました。" -msgid "Switching application language" -msgstr "アプリケーション言語の切り替え" msgid "Select the language" msgstr "言語を選択" @@ -8825,8 +8823,6 @@ msgstr "続行しますか?" msgid "Language selection" msgstr "言語選択" -msgid "Switching application language while some presets are modified." -msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" msgid "Asia-Pacific" msgstr "アジア太平洋地域" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index fef0a09398..8d12c90228 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -2481,8 +2481,6 @@ msgstr "사용 가능한 업데이트가 있습니다. 사전 설정 번들 대 msgid "%s has been removed." msgstr "%s이(가) 제거되었습니다." -msgid "Switching application language" -msgstr "응용 프로그램 언어 전환" msgid "Select the language" msgstr "언어 선택" @@ -8860,8 +8858,6 @@ msgstr "계속하시겠습니까?" msgid "Language selection" msgstr "언어 선택" -msgid "Switching application language while some presets are modified." -msgstr "일부 사전 설정이 수정되는 동안 응용 프로그램 언어를 전환합니다." msgid "Asia-Pacific" msgstr "아시아 태평양" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 80273427f0..67d02bef6d 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -2449,8 +2449,6 @@ msgstr "Yra prieinamas atnaujinimas. Atidarykite profilių paketo dialogo langą msgid "%s has been removed." msgstr "%s buvo pašalintas." -msgid "Switching application language" -msgstr "Perjungiama programos kalba" msgid "Select the language" msgstr "Pasirinkite kalbą" @@ -8797,8 +8795,6 @@ msgstr "Ar norite tęsti?" msgid "Language selection" msgstr "Kalbos pasirinkimas" -msgid "Switching application language while some presets are modified." -msgstr "Keičiama programos kalba, kai yra pakeistų profilių." msgid "Asia-Pacific" msgstr "Azija-Ramusis vandenynas" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 720f4ba6f5..eff0fdc6b0 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -2679,8 +2679,6 @@ msgstr "Er is een update beschikbaar. Open het dialoogvenster voor de voorinstel msgid "%s has been removed." msgstr "%s is verwijderd." -msgid "Switching application language" -msgstr "De taal van de applicatie wordt aangepast" msgid "Select the language" msgstr "Kies de taal" @@ -9602,8 +9600,6 @@ msgstr "Wilt u doorgaan?" msgid "Language selection" msgstr "Taal selectie" -msgid "Switching application language while some presets are modified." -msgstr "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn aangepast." msgid "Asia-Pacific" msgstr "Azië-Pacific" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 3d7fb083ef..6f74f4b602 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -2512,8 +2512,6 @@ msgstr "Dostępna jest aktualizacja. Otwórz okno pakietu profili, aby ją zains msgid "%s has been removed." msgstr "%s został usunięty." -msgid "Switching application language" -msgstr "Zmiana języka aplikacji" msgid "Select the language" msgstr "Wybierz język" @@ -9016,8 +9014,6 @@ msgstr "Czy kontynuować?" msgid "Language selection" msgstr "Wybór języka" -msgid "Switching application language while some presets are modified." -msgstr "Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych ustawieniach." msgid "Asia-Pacific" msgstr "Azja i Pacyfik" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 066b8b310b..6f7bf473c0 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2356,8 +2356,6 @@ msgstr "Há uma atualização disponível. Abra a caixa de diálogo do pacote de msgid "%s has been removed." msgstr "%s foi removido." -msgid "Switching application language" -msgstr "Alternando o idioma do aplicativo" msgid "Select the language" msgstr "Selecione o idioma" @@ -8572,8 +8570,6 @@ msgstr "Você deseja continuar?" msgid "Language selection" msgstr "Seleção de idioma" -msgid "Switching application language while some presets are modified." -msgstr "Alternando idioma do aplicativo enquanto algumas predefinições são modificadas." msgid "Asia-Pacific" msgstr "Ásia-Pacífico" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index b5e6baffe0..2e33546ae8 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -2431,8 +2431,6 @@ msgstr "Доступно обновление. Проверьте меню па msgid "%s has been removed." msgstr "%s был удалён." -msgid "Switching application language" -msgstr "Изменение языка приложения" msgid "Select the language" msgstr "Выбор языка" @@ -8852,8 +8850,6 @@ msgstr "Хотите продолжить?" msgid "Language selection" msgstr "Выбор языка" -msgid "Switching application language while some presets are modified." -msgstr "Смена языка приложения при изменении некоторых профилей." msgid "Asia-Pacific" msgstr "Азиатско-Тихоокеанский" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index b4e3bf51bc..b9aa481d4c 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -2767,8 +2767,6 @@ msgstr "Det finns en uppdatering tillgänglig. Öppna dialogrutan för förinst msgid "%s has been removed." msgstr "%s har tagits bort." -msgid "Switching application language" -msgstr "Byt applikationsspråk" msgid "Select the language" msgstr "Välj språk" @@ -9694,8 +9692,6 @@ msgstr "Fortsätta?" msgid "Language selection" msgstr "Språkval" -msgid "Switching application language while some presets are modified." -msgstr "Byter språk medans inställningarna ändras." msgid "Asia-Pacific" msgstr "Asien-Stillahavsområdet" diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index 935bb83a3b..ee7430015e 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -2456,8 +2456,6 @@ msgstr "มีอัปเดตพร้อมใช้งาน เปิด msgid "%s has been removed." msgstr "ลบ %s แล้ว" -msgid "Switching application language" -msgstr "การเปลี่ยนภาษาของแอปพลิเคชัน" msgid "Select the language" msgstr "เลือกภาษา" @@ -8758,8 +8756,6 @@ msgstr "ต้องการดำเนินการต่อหรือไ msgid "Language selection" msgstr "การเลือกภาษา" -msgid "Switching application language while some presets are modified." -msgstr "การสลับภาษาของแอปพลิเคชันในขณะที่มีการแก้ไขค่าที่ตั้งไว้บางส่วน" msgid "Asia-Pacific" msgstr "เอเชียแปซิฟิก" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 02d54aa39f..0cf9d57412 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -2480,8 +2480,6 @@ msgstr "Kullanılabilir bir güncelleme var. Güncellemek için ön ayar paketi msgid "%s has been removed." msgstr "%s kaldırıldı." -msgid "Switching application language" -msgstr "Uygulama dilini değiştirme" msgid "Select the language" msgstr "Dili seçin" @@ -8860,8 +8858,6 @@ msgstr "Devam etmek istiyor musun?" msgid "Language selection" msgstr "Dil seçimi" -msgid "Switching application language while some presets are modified." -msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." msgid "Asia-Pacific" msgstr "Asya Pasifik" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index d72a1f9792..ec9e97bae0 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -2424,8 +2424,6 @@ msgstr "Доступне оновлення. Відкрийте вікно на msgid "%s has been removed." msgstr "%s вилучено." -msgid "Switching application language" -msgstr "Зміна мови програми" msgid "Select the language" msgstr "Вибрати мову" @@ -8874,8 +8872,6 @@ msgstr "Ви хочете продовжувати?" msgid "Language selection" msgstr "Вибір мови" -msgid "Switching application language while some presets are modified." -msgstr "Зміна мови програми при зміні деяких профілів." msgid "Asia-Pacific" msgstr "Азіатсько-Тихоокеанський регіон" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index a0758d51ad..a80f47cfc1 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -2568,8 +2568,6 @@ msgstr "Có bản cập nhật khả dụng. Hãy mở hộp thoại gói cài msgid "%s has been removed." msgstr "%s đã bị xóa." -msgid "Switching application language" -msgstr "Đang chuyển ngôn ngữ ứng dụng" msgid "Select the language" msgstr "Chọn ngôn ngữ" @@ -9309,8 +9307,6 @@ msgstr "Bạn có muốn tiếp tục?" msgid "Language selection" msgstr "Chọn ngôn ngữ" -msgid "Switching application language while some presets are modified." -msgstr "Đang chuyển đổi ngôn ngữ ứng dụng trong khi một số preset đã được chỉnh sửa." msgid "Asia-Pacific" msgstr "Châu Á-Thái Bình Dương" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 7c474031c9..faa3419ae5 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -2361,8 +2361,6 @@ msgstr "有更新可用。打开预设包对话框进行更新。" msgid "%s has been removed." msgstr "%s 已被移除。" -msgid "Switching application language" -msgstr "切换应用程序语言" msgid "Select the language" msgstr "选择语言" @@ -8587,8 +8585,6 @@ msgstr "是否继续?" msgid "Language selection" msgstr "语言选择" -msgid "Switching application language while some presets are modified." -msgstr "在切换应用语言之前发现某些参数预设有更改。" msgid "Asia-Pacific" msgstr "亚太" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 83b22ca029..8f17cfdc5d 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -2425,8 +2425,6 @@ msgstr "有可用的更新。請開啟預設組合對話框進行更新。" msgid "%s has been removed." msgstr "%s 已移除。" -msgid "Switching application language" -msgstr "切換應用程式語言" msgid "Select the language" msgstr "選擇語言" @@ -8753,8 +8751,6 @@ msgstr "是否繼續?" msgid "Language selection" msgstr "語言選擇" -msgid "Switching application language while some presets are modified." -msgstr "在切換應用程式語言之前發現某些參數預設有更改。" msgid "Asia-Pacific" msgstr "亞太" diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 6d08f052da..df2d1fccc0 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -7769,21 +7769,6 @@ void GUI_App::stop_http_server() m_http_server.stop(); } -void GUI_App::switch_staff_pick(bool on) -{ - mainframe->m_webview->SendDesignStaffpick(on); -} - -bool GUI_App::switch_language() -{ - if (select_language()) { - recreate_GUI(_L("Switching application language") + dots); - return true; - } else { - return false; - } -} - #ifdef __linux__ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language, const wxLanguageInfo* system_language) @@ -7878,72 +7863,6 @@ int GUI_App::GetSingleChoiceIndex(const wxString& message, #endif } -// select language from the list of installed languages -bool GUI_App::select_language() -{ - wxArrayString translations = wxTranslations::Get()->GetAvailableTranslations(SLIC3R_APP_KEY); - std::vector language_infos; - language_infos.emplace_back(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH)); - for (size_t i = 0; i < translations.GetCount(); ++ i) { - const wxLanguageInfo *langinfo = wxLocale::FindLanguageInfo(translations[i]); - if (langinfo != nullptr) - language_infos.emplace_back(langinfo); - } - sort_remove_duplicates(language_infos); - std::sort(language_infos.begin(), language_infos.end(), [](const wxLanguageInfo* l, const wxLanguageInfo* r) { return l->Description < r->Description; }); - - wxArrayString names; - names.Alloc(language_infos.size()); - - // Some valid language should be selected since the application start up. - const wxString active_language_code = current_language_code(); - const wxLanguageInfo* active_language_info = wxLocale::FindLanguageInfo(active_language_code); - const wxLanguage current_language = active_language_info != nullptr ? wxLanguage(active_language_info->Language) : wxLanguage(m_wxLocale->GetLanguage()); - const wxString active_lang_prefix = active_language_code.BeforeFirst('_'); - int init_selection = -1; - int init_selection_alt = -1; - int init_selection_default = -1; - for (size_t i = 0; i < language_infos.size(); ++ i) { - if (wxLanguage(language_infos[i]->Language) == current_language) - // The dictionary matches the active language and country. - init_selection = i; - else if ((language_infos[i]->CanonicalName.BeforeFirst('_') == active_lang_prefix) || - // if the active language is Slovak, mark the Czech language as active. - (language_infos[i]->CanonicalName.BeforeFirst('_') == "cs" && active_lang_prefix == "sk")) - // The dictionary matches the active language, it does not necessarily match the country. - init_selection_alt = i; - if (language_infos[i]->CanonicalName.BeforeFirst('_') == "en") - // This will be the default selection if the active language does not match any dictionary. - init_selection_default = i; - names.Add(language_infos[i]->Description); - } - if (init_selection == -1) - // This is the dictionary matching the active language. - init_selection = init_selection_alt; - if (init_selection != -1) - // This is the language to highlight in the choice dialog initially. - init_selection_default = init_selection; - - const long index = GetSingleChoiceIndex(_L("Select the language"), _L("Language"), names, init_selection_default); - // Try to load a new language. - if (index != -1 && (init_selection == -1 || init_selection != index)) { - const wxLanguageInfo *new_language_info = language_infos[index]; - if (this->load_language(new_language_info->CanonicalName, false)) { - // Save language at application config. - // Which language to save as the selected dictionary language? - // 1) Hopefully the language set to wxTranslations by this->load_language(), but that API is weird and we don't want to rely on its - // stability in the future: - // wxTranslations::Get()->GetBestTranslation(SLIC3R_APP_KEY, wxLANGUAGE_ENGLISH); - // 2) Current locale language may not match the dictionary name, see GH issue #3901 - // m_wxLocale->GetCanonicalName() - // 3) new_language_info->CanonicalName is a safe bet. It points to a valid dictionary name. - app_config->set("language", new_language_info->CanonicalName.ToUTF8().data()); - return true; - } - } - - return false; -} // Load gettext translation files and activate them at the start of the application, // based on the "language" key stored in the application config. @@ -8330,146 +8249,6 @@ void GUI_App::show_ip_address_enter_dialog_handler(wxCommandEvent& evt) show_modal_ip_address_enter_dialog(mode == -1?false:true, title); } -//void GUI_App::add_config_menu(wxMenuBar *menu) -//void GUI_App::add_config_menu(wxMenu *menu) -//{ -// auto local_menu = new wxMenu(); -// wxWindowID config_id_base = wxWindow::NewControlId(int(ConfigMenuCnt)); -// -// const auto config_wizard_name = _(ConfigWizard::name(true)); -// const auto config_wizard_tooltip = from_u8((boost::format(_utf8(L("Open %s"))) % config_wizard_name).str()); -// // Cmd+, is standard on OS X - what about other operating systems? -// if (is_editor()) { -// local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip); -// local_menu->Append(config_id_base + ConfigMenuUpdate, _L("Check for Configuration Updates"), _L("Check for configuration updates")); -// local_menu->AppendSeparator(); -// } -// local_menu->Append(config_id_base + ConfigMenuPreferences, _L("Preferences") + dots + -//#ifdef __APPLE__ -// "\tCtrl+,", -//#else -// "\tCtrl+P", -//#endif -// _L("Application preferences")); -// wxMenu* mode_menu = nullptr; -// if (is_editor()) { -// local_menu->AppendSeparator(); -// mode_menu = new wxMenu(); -// mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _L("Simple"), _L("Simple Mode")); -// mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeAdvanced, _L("Advanced"), _L("Advanced Mode")); -// Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comSimple) evt.Check(true); }, config_id_base + ConfigMenuModeSimple); -// Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { if (get_mode() == comAdvanced) evt.Check(true); }, config_id_base + ConfigMenuModeAdvanced); -// -// local_menu->AppendSubMenu(mode_menu, _L("Mode"), wxString::Format(_L("%s Mode"), SLIC3R_APP_NAME)); -// } -// local_menu->AppendSeparator(); -// local_menu->Append(config_id_base + ConfigMenuLanguage, _L("Language")); -// if (is_editor()) { -// local_menu->AppendSeparator(); -// } -// -// local_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent &event) { -// switch (event.GetId() - config_id_base) { -// case ConfigMenuWizard: -// run_wizard(ConfigWizard::RR_USER); -// break; -// case ConfigMenuUpdate: -// check_updates(true); -// break; -//#ifdef __linux__ -// case ConfigMenuDesktopIntegration: -// show_desktop_integration_dialog(); -// break; -//#endif -// case ConfigMenuSnapshots: -// //BBS do not support task snapshot -// break; -// case ConfigMenuPreferences: -// { -// //BBS GUI refactor: remove unuse layout logic -// //bool app_layout_changed = false; -// { -// // the dialog needs to be destroyed before the call to recreate_GUI() -// // or sometimes the application crashes into wxDialogBase() destructor -// // so we put it into an inner scope -// PreferencesDialog dlg(mainframe); -// dlg.ShowModal(); -// //BBS GUI refactor: remove unuse layout logic -// //app_layout_changed = dlg.settings_layout_changed(); -// if (dlg.seq_top_layer_only_changed()) -// this->plater_->refresh_print(); -// -// if (dlg.recreate_GUI()) { -// recreate_GUI(_L("Restart application") + dots); -// return; -// } -//#ifdef _WIN32 -// if (is_editor()) { -// if (app_config->get("associate_3mf") == "true") -// associate_3mf_files(); -// if (app_config->get("associate_stl") == "true") -// associate_stl_files(); -// } -// else { -// if (app_config->get("associate_gcode") == "true") -// associate_gcode_files(); -// } -//#endif // _WIN32 -// } -// //BBS GUI refactor: remove unuse layout logic -// /*if (app_layout_changed) { -// // hide full main_sizer for mainFrame -// mainframe->GetSizer()->Show(false); -// mainframe->update_layout(); -// mainframe->select_tab(size_t(0)); -// }*/ -// break; -// } -// case ConfigMenuLanguage: -// { -// /* Before change application language, let's check unsaved changes on 3D-Scene -// * and draw user's attention to the application restarting after a language change -// */ -// { -// // the dialog needs to be destroyed before the call to switch_language() -// // or sometimes the application crashes into wxDialogBase() destructor -// // so we put it into an inner scope -// wxString title = is_editor() ? wxString(SLIC3R_APP_NAME) : wxString(GCODEVIEWER_APP_NAME); -// title += " - " + _L("Choose language"); -// //wxMessageDialog dialog(nullptr, -// MessageDialog dialog(nullptr, -// _L("Switching the language requires application restart.\n") + "\n\n" + -// _L("Do you want to continue?"), -// title, -// wxICON_QUESTION | wxOK | wxCANCEL); -// if (dialog.ShowModal() == wxID_CANCEL) -// return; -// } -// -// switch_language(); -// break; -// } -// case ConfigMenuFlashFirmware: -// //BBS FirmwareDialog::run(mainframe); -// break; -// default: -// break; -// } -// }); -// -// using std::placeholders::_1; -// -// if (mode_menu != nullptr) { -// auto modfn = [this](int mode, wxCommandEvent&) { if (get_mode() != mode) save_mode(mode); }; -// mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comSimple, _1), config_id_base + ConfigMenuModeSimple); -// mode_menu->Bind(wxEVT_MENU, std::bind(modfn, comAdvanced, _1), config_id_base + ConfigMenuModeAdvanced); -// } -// -// // BBS -// //menu->Append(local_menu, _L("Configuration")); -// menu->AppendSubMenu(local_menu, _L("Configuration")); -//} - void GUI_App::open_presetbundledialog(size_t open_on_tab, const std::string& highlight_option) { bool app_layout_changed = false; diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 8bf32df64c..2569e10271 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -569,7 +569,6 @@ public: void start_http_server(const std::string& provider = ORCA_CLOUD_PROVIDER); void start_http_server(int port, const std::string& provider = ORCA_CLOUD_PROVIDER); void stop_http_server(); - void switch_staff_pick(bool on); void on_show_check_privacy_dlg(int online_login = 0, const std::string& provider = ORCA_CLOUD_PROVIDER); void show_check_privacy_dlg(wxCommandEvent& evt); @@ -583,7 +582,6 @@ public: void persist_window_geometry(wxTopLevelWindow *window, bool default_maximized = false); void update_ui_from_settings(); - bool switch_language(); bool load_language(wxString language, bool initial); Tab* get_tab(Preset::Type type); @@ -801,7 +799,6 @@ private: bool window_pos_restore(wxTopLevelWindow* window, const std::string &name, bool default_maximized = false); void window_pos_sanitize(wxTopLevelWindow* window); void window_pos_center(wxTopLevelWindow *window); - bool select_language(); // Dynamic printer agent selection - internal helpers for switch_printer_agent // and the plugin load/unload callbacks (init_plugin_gui_wiring). diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index c734804c22..5f36323d6e 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3275,98 +3275,9 @@ void MainFrame::init_menubar_as_editor() auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); #endif - //auto printer_item = new wxMenuItem(parent_menu, ConfigMenuPrinter + config_id_base, _L("Printer"), ""); - //auto language_item = new wxMenuItem(parent_menu, ConfigMenuLanguage + config_id_base, _L("Switch Language"), ""); -// parent_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent& event) { -// switch (event.GetId() - config_id_base) { -// //case ConfigMenuLanguage: -// //{ -// // /* Before change application language, let's check unsaved changes on 3D-Scene -// // * and draw user's attention to the application restarting after a language change -// // */ -// // { -// // // the dialog needs to be destroyed before the call to switch_language() -// // // or sometimes the application crashes into wxDialogBase() destructor -// // // so we put it into an inner scope -// // wxString title = _L("Language selection"); -// // wxMessageDialog dialog(nullptr, -// // _L("Switching the language requires application restart.\n") + "\n\n" + -// // _L("Do you want to continue?"), -// // title, -// // wxICON_QUESTION | wxOK | wxCANCEL); -// // if (dialog.ShowModal() == wxID_CANCEL) -// // return; -// // } -// -// // wxGetApp().switch_language(); -// // break; -// //} -// //case ConfigMenuWizard: -// //{ -// // wxGetApp().run_wizard(ConfigWizard::RR_USER); -// // break; -// //} -// case ConfigMenuPrinter: -// { -// wxGetApp().params_dialog()->Popup(); -// wxGetApp().get_tab(Preset::TYPE_PRINTER)->restore_last_select_item(); -// break; -// } -// case ConfigMenuPreferences: -// { -// CallAfter([this] { -// PreferencesDialog dlg(this); -// dlg.ShowModal(); -//#if ENABLE_GCODE_LINES_ID_IN_H_SLIDER -// if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) -//#else -// if (dlg.seq_top_layer_only_changed()) -//#endif // ENABLE_GCODE_LINES_ID_IN_H_SLIDER -// plater()->refresh_print(); -//#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN -//#ifdef _WIN32 -// /* -// if (wxGetApp().app_config()->get("associate_3mf") == "true") -// wxGetApp().associate_3mf_files(); -// if (wxGetApp().app_config()->get("associate_stl") == "true") -// wxGetApp().associate_stl_files(); -// /*if (wxGetApp().app_config()->get("associate_step") == "true") -// wxGetApp().associate_step_files();*/ -//#endif // _WIN32 -//#endif -// }); -// break; -// } -// default: -// break; -// } -// }); #ifdef __APPLE__ wxString about_title = wxString::Format(_L("&About %s"), SLIC3R_APP_FULL_NAME); - //auto about_item = new wxMenuItem(parent_menu, OrcaSlicerMenuAbout + bambu_studio_id_base, about_title, ""); - //parent_menu->Bind(wxEVT_MENU, [this, bambu_studio_id_base](wxEvent& event) { - // switch (event.GetId() - bambu_studio_id_base) { - // case OrcaSlicerMenuAbout: - // Slic3r::GUI::about(); - // break; - // case OrcaSlicerMenuPreferences: - // CallAfter([this] { - // PreferencesDialog dlg(this); - // dlg.ShowModal(); - //#if ENABLE_GCODE_LINES_ID_IN_H_SLIDER - // if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) - //#else - // if (dlg.seq_top_layer_only_changed()) - //#endif // ENABLE_GCODE_LINES_ID_IN_H_SLIDER - // plater()->refresh_print(); - // }); - // break; - // default: - // break; - // } - //}); - //parent_menu->Insert(0, about_item); append_menu_item( parent_menu, wxID_ANY, _L(about_title), "", [](wxCommandEvent &) { Slic3r::GUI::about();}, diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 08483f3100..7d80147efa 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -507,26 +507,14 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS } } - - // the dialog needs to be destroyed before the call to switch_language() - // or sometimes the application crashes into wxDialogBase() destructor - // so we put it into an inner scope - MessageDialog msg_wingow(nullptr, _L("Switching languages requires the application to restart.\n") + "\n" + _L("Do you want to continue?"), - L("Language selection"), wxICON_QUESTION | wxOK | wxCANCEL); - if (msg_wingow.ShowModal() == wxID_CANCEL) { + MessageDialog msg_window(nullptr, _L("Switching languages requires the application to restart.\n") + "\n" + _L("Do you want to continue?"), + _L("Language selection"), wxICON_QUESTION | wxOK | wxCANCEL); + if (msg_window.ShowModal() == wxID_CANCEL) { combobox->SetSelection(m_current_language_selected); return; } } - auto check = [](bool yes_or_no) { - // if (yes_or_no) - // return true; - int act_btns = ActionButtons::SAVE; - return wxGetApp().check_and_keep_current_preset_changes(_L("Switching application language"), - _L("Switching application language while some presets are modified."), act_btns); - }; - m_current_language_selected = combobox->GetSelection(); if (m_current_language_selected >= 0 && m_current_language_selected < vlist.size()) { m_pending_language = vlist[m_current_language_selected]->CanonicalName.ToUTF8().data(); @@ -1031,11 +1019,6 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxString too app_config->set_bool(param, checkbox->GetValue()); app_config->save(); - // if (param == "staff_pick_switch") { - // bool pbool = app_config->get("staff_pick_switch") == "true"; - // wxGetApp().switch_staff_pick(pbool); - // } - if (param == "sync_user_preset") { bool sync = app_config->get("sync_user_preset") == "true" ? true : false; if (sync) { diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index f10553814e..7efdfabf07 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -995,7 +995,7 @@ void FanControlPopupNew::init_names(MachineObject* obj) { radio_btn_name[AIR_DUCT::AIR_DUCT_HEATING_INTERNAL_FILT] = _L("Heating"); radio_btn_name[AIR_DUCT::AIR_DUCT_EXHAUST] = _L("Exhaust"); radio_btn_name[AIR_DUCT::AIR_DUCT_FULL_COOLING] = _L("Full Cooling"); - radio_btn_name[AIR_DUCT::AIR_DUCT_INIT] = L("Init"); + radio_btn_name[AIR_DUCT::AIR_DUCT_INIT] = _L("Init"); air_door_func_name[AIR_DOOR::AIR_DOOR_FUNC_CHAMBER] = _L("Chamber"); air_door_func_name[AIR_DOOR::AIR_DOOR_FUNC_INNERLOOP] = _L("Innerloop"); From d127db4d9927021ade3bf9c122fd55aa6c01dac7 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Thu, 10 Sep 2026 16:15:39 -0500 Subject: [PATCH 095/162] build: clear 5 warning categories across 19 sites (#15628) --- src/libslic3r/Emboss.cpp | 10 +++++----- src/libslic3r/Fill/FillAdaptive.cpp | 4 ++-- src/libslic3r/GCode/ToolOrderUtils.cpp | 2 +- src/libslic3r/Line.cpp | 4 ++-- src/libslic3r/PrintObject.cpp | 4 +++- src/libslic3r/SLAPrint.cpp | 4 +++- src/slic3r/GUI/DeviceCore/DevMapping.cpp | 4 +++- src/slic3r/GUI/MeshUtils.cpp | 4 ++-- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 2 +- src/slic3r/Utils/BBLNetworkPlugin.cpp | 2 +- src/slic3r/Utils/BBLPrinterAgent.cpp | 21 +++++++++++++++----- src/slic3r/Utils/PresetUpdater.cpp | 2 +- 12 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/libslic3r/Emboss.cpp b/src/libslic3r/Emboss.cpp index ef144b48d3..34d9a93590 100644 --- a/src/libslic3r/Emboss.cpp +++ b/src/libslic3r/Emboss.cpp @@ -968,10 +968,10 @@ EmbossStyles Emboss::get_font_list_by_register() { } // TODO: Fix global function -bool CALLBACK EnumFamCallBack(LPLOGFONT lplf, - LPNEWTEXTMETRIC lpntm, - DWORD FontType, - LPVOID aFontList) +int CALLBACK EnumFamCallBack(const LOGFONT *lplf, + const TEXTMETRIC *lpntm, + DWORD FontType, + LPARAM aFontList) { std::vector *fontList = (std::vector *) (aFontList); @@ -988,7 +988,7 @@ EmbossStyles Emboss::get_font_list_by_enumeration() { HDC hDC = GetDC(NULL); std::vector font_names; - EnumFontFamilies(hDC, (LPCTSTR) NULL, (FONTENUMPROC) EnumFamCallBack, + EnumFontFamilies(hDC, (LPCTSTR) NULL, EnumFamCallBack, (LPARAM) &font_names); EmbossStyles font_list; diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp index 344bb529f0..dbaa1f2ac9 100644 --- a/src/libslic3r/Fill/FillAdaptive.cpp +++ b/src/libslic3r/Fill/FillAdaptive.cpp @@ -1395,8 +1395,8 @@ void Filler::_fill_surface_single( } #endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */ - const auto hook_length = coordf_t(std::min(std::numeric_limits::max(), scale_(params.anchor_length))); - const auto hook_length_max = coordf_t(std::min(std::numeric_limits::max(), scale_(params.anchor_length_max))); + const auto hook_length = coordf_t(scale_(params.anchor_length)); + const auto hook_length_max = coordf_t(scale_(params.anchor_length_max)); Polylines all_polylines_with_hooks = all_polylines.size() > 1 ? connect_lines_using_hooks(std::move(all_polylines), expolygon, this->spacing, hook_length, hook_length_max) : std::move(all_polylines); diff --git a/src/libslic3r/GCode/ToolOrderUtils.cpp b/src/libslic3r/GCode/ToolOrderUtils.cpp index 4e2934d967..4a67477d24 100644 --- a/src/libslic3r/GCode/ToolOrderUtils.cpp +++ b/src/libslic3r/GCode/ToolOrderUtils.cpp @@ -910,7 +910,7 @@ namespace Slic3r unsigned int iterations = (1 << all_extruders.size()); unsigned int final_state = iterations - 1; - std::vector>cache(iterations, std::vector(all_extruders.size(), 0x7fffffff)); + std::vector>cache(iterations, std::vector(all_extruders.size(), std::numeric_limits::max())); std::vector>prev(iterations, std::vector(all_extruders.size(), -1)); cache[1][0] = 0.; for (unsigned int state = 0; state < iterations; ++state) { diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index c74df3aa59..94453e18f7 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -30,8 +30,8 @@ bool Line::intersection_infinite(const Line &other, Point* point) const return false; double t1 = cross2(v12, v2) / denom; Vec2d result = (a1 + t1 * v1); - if (result.x() > std::numeric_limits::max() || result.x() < std::numeric_limits::lowest() || - result.y() > std::numeric_limits::max() || result.y() < std::numeric_limits::lowest()) { + if (result.x() > double(std::numeric_limits::max()) || result.x() < double(std::numeric_limits::lowest()) || + result.y() > double(std::numeric_limits::max()) || result.y() < double(std::numeric_limits::lowest())) { // Intersection has at least one of the coordinates much bigger (or smaller) than coord_t maximum value (or minimum). // So it can not be stored into the Point without integer overflows. That could mean that input lines are parallel or near parallel. return false; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index e147356ea6..720a2cdade 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1635,7 +1635,9 @@ bool PrintObject::invalidate_step(PrintObjectStep step) bool PrintObject::invalidate_all_steps() { // First call the "invalidate" functions, which may cancel background processing. - bool result = Inherited::invalidate_all_steps() | m_print->invalidate_all_steps(); + const bool inherited_invalidated = Inherited::invalidate_all_steps(); + const bool print_invalidated = m_print->invalidate_all_steps(); + bool result = inherited_invalidated || print_invalidated; // Then reset some of the depending values. m_slicing_params.valid = false; return result; diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index cdefd3e10e..eb37ca578c 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1007,7 +1007,9 @@ bool SLAPrintObject::invalidate_step(SLAPrintObjectStep step) bool SLAPrintObject::invalidate_all_steps() { - return Inherited::invalidate_all_steps() | m_print->invalidate_all_steps(); + const bool inherited_invalidated = Inherited::invalidate_all_steps(); + const bool print_invalidated = m_print->invalidate_all_steps(); + return inherited_invalidated || print_invalidated; } double SLAPrintObject::get_elevation() const { diff --git a/src/slic3r/GUI/DeviceCore/DevMapping.cpp b/src/slic3r/GUI/DeviceCore/DevMapping.cpp index 165492c9f6..0040bb05f2 100644 --- a/src/slic3r/GUI/DeviceCore/DevMapping.cpp +++ b/src/slic3r/GUI/DeviceCore/DevMapping.cpp @@ -1,3 +1,5 @@ +#include + #include #include "DevMapping.h" #include "DevFilaSystem.h" @@ -270,7 +272,7 @@ namespace Slic3r std::set picked_tar; for (int k = 0; k < distance_map.size(); k++) { - float min_val = INT_MAX; + float min_val = std::numeric_limits::max(); int picked_src_idx = -1; int picked_tar_idx = -1; for (int i = 0; i < distance_map.size(); i++) diff --git a/src/slic3r/GUI/MeshUtils.cpp b/src/slic3r/GUI/MeshUtils.cpp index bc6c60a360..173c5d2f13 100644 --- a/src/slic3r/GUI/MeshUtils.cpp +++ b/src/slic3r/GUI/MeshUtils.cpp @@ -297,7 +297,7 @@ void MeshClipper::recalculate_triangles() // it so it lies on our line. This will be the figure to subtract // from the cut. The coordinates must not overflow after the transform, // make the rectangle a bit smaller. - const coord_t size = (std::numeric_limits::max()/2 - scale_(std::max(std::abs(e * a), std::abs(e * b)))) / 4; + const coord_t size = (double(std::numeric_limits::max()/2) - scale_(std::max(std::abs(e * a), std::abs(e * b)))) / 4; Polygons ep {Polygon({Point(-size, 0), Point(size, 0), Point(size, 2*size), Point(-size, 2*size)})}; ep.front().rotate(angle); ep.front().translate(scale_(-e * a), scale_(-e * b)); @@ -352,7 +352,7 @@ void MeshClipper::recalculate_triangles() // To prevent overflow after scaling, downscale the input if needed: double extra_scale = 1.; - coord_t limit = coord_t(std::min(std::numeric_limits::max() / (2. * std::max(1., scale_x)), std::numeric_limits::max() / (2. * std::max(1., scale_y)))); + coord_t limit = coord_t(std::min(double(std::numeric_limits::max()) / (2. * std::max(1., scale_x)), double(std::numeric_limits::max()) / (2. * std::max(1., scale_y)))); coord_t max_coord = 0; for (const Point& pt : exp.contour) max_coord = std::max(max_coord, std::max(std::abs(pt.x()), std::abs(pt.y()))); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 8ec6909c8c..9aa35e2cff 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -1803,7 +1803,7 @@ static void* get_function(const char* name) return function; #if defined(_MSC_VER) || defined(_WIN32) - function = GetProcAddress(module, name); + function = reinterpret_cast(GetProcAddress(module, name)); #else function = dlsym(module, name); #endif diff --git a/src/slic3r/Utils/BBLNetworkPlugin.cpp b/src/slic3r/Utils/BBLNetworkPlugin.cpp index 607e7d16d1..d795abf354 100644 --- a/src/slic3r/Utils/BBLNetworkPlugin.cpp +++ b/src/slic3r/Utils/BBLNetworkPlugin.cpp @@ -349,7 +349,7 @@ void* BBLNetworkPlugin::get_function(const char* name) return function; #if defined(_MSC_VER) || defined(_WIN32) - function = GetProcAddress(m_networking_module, name); + function = reinterpret_cast(GetProcAddress(m_networking_module, name)); #else function = dlsym(m_networking_module, name); #endif diff --git a/src/slic3r/Utils/BBLPrinterAgent.cpp b/src/slic3r/Utils/BBLPrinterAgent.cpp index 5e73edf84c..0c6225cc55 100644 --- a/src/slic3r/Utils/BBLPrinterAgent.cpp +++ b/src/slic3r/Utils/BBLPrinterAgent.cpp @@ -8,6 +8,7 @@ #include using json = nlohmann::json; +#include #include namespace Slic3r { @@ -90,6 +91,16 @@ OnMessageFn to_orca_messages(OnMessageFn fn) return [fn = std::move(fn)](std::string dev_id, std::string msg) { fn(std::move(dev_id), BBLPrinterAgent::to_orca_payload(std::move(msg))); }; } +// Retypes a plug-in entry point for an older plug-in generation. The detour through the +// generic function pointer marks the signature change as deliberate, which a direct cast +// between two signatures does not. +template +To as_abi(From fn) +{ + static_assert(std::is_function_v>, "as_abi retypes a function pointer"); + return reinterpret_cast(reinterpret_cast(fn)); +} + } // namespace std::string BBLPrinterAgent::to_orca_filament_id(const std::string& printer_filament_id) const @@ -141,7 +152,7 @@ int BBLPrinterAgent::send_message(std::string dev_id, std::string json_str, int // series through the legacy form would silently drop MessageFlag sign/encrypt. switch (plugin.network_abi()) { case NetworkAbi::Legacy: { - auto legacy_func = reinterpret_cast(func); + auto legacy_func = as_abi(func); return legacy_func(agent, std::move(dev_id), std::move(json_str), qos); } case NetworkAbi::V0203: @@ -185,7 +196,7 @@ int BBLPrinterAgent::send_message_to_printer(std::string dev_id, std::string jso if (func && agent) { switch (plugin.network_abi()) { case NetworkAbi::Legacy: { - auto legacy_func = reinterpret_cast(func); + auto legacy_func = as_abi(func); return legacy_func(agent, std::move(dev_id), std::move(json_str), qos); } case NetworkAbi::V0203: @@ -275,7 +286,7 @@ int BBLPrinterAgent::bind(std::string dev_ip, std::string dev_id, std::string de switch (plugin.network_abi()) { case NetworkAbi::Legacy: case NetworkAbi::V0203: { - auto older_func = reinterpret_cast(func); + auto older_func = as_abi(func); return older_func(agent, dev_ip, dev_id, sec_link, timezone, improved, update_fn); } case NetworkAbi::Current: @@ -436,9 +447,9 @@ int dispatch_start(CurrentFn func, PrintParams& params, const CallbackFns&... ca params.ams_mapping_info = BBLPrinterAgent::from_orca_payload(std::move(params.ams_mapping_info)); switch (plugin.network_abi()) { case NetworkAbi::Legacy: - return reinterpret_cast(func)(agent, BBLNetworkPlugin::as_legacy(params), callbacks...); + return as_abi(func)(agent, BBLNetworkPlugin::as_legacy(params), callbacks...); case NetworkAbi::V0203: - return reinterpret_cast(func)(agent, BBLNetworkPlugin::as_0203(params), callbacks...); + return as_abi(func)(agent, BBLNetworkPlugin::as_0203(params), callbacks...); case NetworkAbi::Current: return func(agent, std::move(params), callbacks...); default: diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 23957f6500..032f9dbf7a 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1620,7 +1620,7 @@ void PresetUpdater::priv::check_new_vendors(const std::set& system_ Http::get(download_url_str) .timeout_connect(5) .on_progress(check_cancel) - .on_error([&vendor_id, &retry_count, max_retries](std::string body, std::string error, unsigned http_status) { + .on_error([&vendor_id, &retry_count](std::string body, std::string error, unsigned http_status) { BOOST_LOG_TRIVIAL(warning) << "[Orca Updater] download failed for new vendor " << vendor_id << " (attempt " << retry_count << "/" << max_retries << "): " << error; }) From a49b8927088cde075c8ccfc7dcaf1bedc3b52af9 Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Fri, 11 Sep 2026 00:23:31 +0300 Subject: [PATCH 096/162] Fix bridge flow invalidation for zero-gap supports (#15626) --- src/libslic3r/PrintObject.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 720a2cdade..54378b3b16 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1511,13 +1511,9 @@ bool PrintObject::invalidate_state_by_config_options( steps.emplace_back(posPerimeters); steps.emplace_back(posSupportMaterial); } else if (opt_key == "bridge_flow" || opt_key == "internal_bridge_flow") { - if (m_config.support_top_z_distance > 0.) { - // Only invalidate due to bridging if bridging is enabled. - // If later "support_top_z_distance" is modified, the complete PrintObject is invalidated anyway. - steps.emplace_back(posPerimeters); - steps.emplace_back(posInfill); - steps.emplace_back(posSupportMaterial); - } + steps.emplace_back(posPerimeters); + steps.emplace_back(posInfill); + steps.emplace_back(posSupportMaterial); } else if ( opt_key == "wall_generator" || opt_key == "wall_transition_length" From a6cf5cc1e3aecebda1eb9330f88540b58ac53d5c Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 10 Sep 2026 18:23:30 +0800 Subject: [PATCH 097/162] Add the includes the precompiled header was supplying on macOS A build without SLIC3R_PCH had never been tried on macOS. Three files used what pchheader.hpp happened to include: LocalesUtils.cpp needs and , and the two dialogs need . The GTK port's headers and libstdc++ pull these in transitively, the Cocoa port's headers and libc++ do not. --- src/libslic3r/LocalesUtils.cpp | 2 ++ src/slic3r/GUI/AmsMappingPopup.cpp | 1 + src/slic3r/GUI/PhysicalPrinterDialog.cpp | 1 + 3 files changed, 4 insertions(+) diff --git a/src/libslic3r/LocalesUtils.cpp b/src/libslic3r/LocalesUtils.cpp index 308752cc62..e727b29b09 100644 --- a/src/libslic3r/LocalesUtils.cpp +++ b/src/libslic3r/LocalesUtils.cpp @@ -3,6 +3,8 @@ #ifdef _WIN32 #include #endif +#include +#include #include #include diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 3e745b0a64..22ffaef034 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -11,6 +11,7 @@ #include "MainFrame.hpp" #include "format.hpp" #include "Widgets/ProgressDialog.hpp" +#include #include "Widgets/RoundedRectangle.hpp" #include "Widgets/StaticBox.hpp" diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index 989cf204e1..04317ca46b 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include From 3331280b3467e06bde414c162662f92e8774108c Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Fri, 11 Sep 2026 05:36:59 -0300 Subject: [PATCH 098/162] Verify and improve AI pt_BR translations (#15621) --- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 150 ++++++-------------- 1 file changed, 40 insertions(+), 110 deletions(-) diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 6f7bf473c0..2a3e9a7f53 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2128,7 +2128,7 @@ msgid "" "OrcaSlicer has attempted to recreate the configuration file.\n" "Please note, application settings will be lost, but printer profiles will not be affected." msgstr "" -"O arquivo de configuração do OrcaSlicer pode estar corrompido e não pode ser analisado.\n" +"O arquivo de configuração do OrcaSlicer pode estar corrompido e não pode ser processado.\n" "O OrcaSlicer tentou recriar o arquivo de configuração.\n" "Por favor, note que as configurações do aplicativo serão perdidas, mas os perfis de impressora não serão afetados." @@ -6675,7 +6675,7 @@ msgid "Failed to fetch model information from printer." msgstr "Falha ao obter informação do modelo da impressora." msgid "Failed to parse model information." -msgstr "Falha ao analisar a informação do modelo." +msgstr "Falha ao processar a informação do modelo." msgid "The .gcode.3mf file contains no G-code data. Please slice it with Orca Slicer and export a new .gcode.3mf file." msgstr "O arquivo .gcode.3mf não contém dados de G-code. Por favor, fatie com Orca Slicer e exporte um novo arquivo .gcode.3mf." @@ -8637,7 +8637,7 @@ msgstr "" "\n" "Deseja baixar e instalar esta versão agora?\n" "\n" -"Observação: o aplicativo pode precisar ser reiniciado após a instalação." +"Nota: o aplicativo pode precisar ser reiniciado após a instalação." msgid "Download Network Plug-in" msgstr "Baixar Plug-in de Rede" @@ -9135,7 +9135,7 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up to Orca Cloud." msgstr "" "Isso desativa todos os recursos da nuvem, incluindo a sincronização de perfis do Orca Cloud. Usuários que preferem trabalhar totalmente offline podem ativar esta opção.\n" -"Observação: quando o Modo Furtivo está ativado, seus perfis de usuário não serão copiados para o Orca Cloud." +"Nota: quando o Modo Furtivo está ativado, seus perfis de usuário não serão copiados para o Orca Cloud." msgid "Hide login side panel" msgstr "Ocultar painel lateral de autenticação" @@ -9775,7 +9775,6 @@ msgstr "A impressora falhou ao gerar a tabela de mapeamento automático do bico msgid "The current nozzle mapping may produce an extra %0.2f g of waste." msgstr "O mapeamento de bicos atual pode gerar um desperdício adicional de %0.2f g." -# AI Translated #, c-format, boost-format msgid "Recommended filament arrangement saves %s->" msgstr "A disposição de filamento recomendada economiza %s->" @@ -9834,7 +9833,6 @@ msgstr "Este processo determina os valores de fluxo dinâmico para melhorar a qu msgid "Internal" msgstr "Interno" -# AI Translated #, c-format, boost-format msgid "%s space less than 20MB. Timelapse may not save properly. You can turn it off or" msgstr "%s com espaço inferior a 20MB. O timelapse pode não ser salvo corretamente. Você pode desativá-lo ou" @@ -9842,15 +9840,12 @@ msgstr "%s com espaço inferior a 20MB. O timelapse pode não ser salvo corretam msgid "Clean up files" msgstr "Limpar arquivos" -# AI Translated msgid "Low internal storage. This timelapse will overwrite the oldest video files." msgstr "Armazenamento interno baixo. Este timelapse substituirá os arquivos de vídeo mais antigos." -# AI Translated msgid "Low external storage. This timelapse will overwrite the oldest video files." msgstr "Armazenamento externo baixo. Este timelapse substituirá os arquivos de vídeo mais antigos." -# AI Translated msgid "Insufficient external storage for time-lapse photography. Connect to computer to delete files, or use a larger memory card." msgstr "Armazenamento externo insuficiente para fotografia time-lapse. Conecte ao computador para excluir arquivos ou use um cartão de memória maior." @@ -9886,7 +9881,6 @@ msgstr "Atualizando informações dos hotends (%d/%d)." msgid "There are not enough available hotends currently." msgstr "Não há hotends disponíveis em quantidade suficiente no momento." -# AI Translated msgid "Please complete the hotend rack setup and try again." msgstr "Por favor, conclua a configuração do rack de hotend e tente novamente." @@ -9903,11 +9897,9 @@ msgstr "As informações reportadas sobre o hotend podem não ser confiáveis." msgid "The printer has no nozzle matching the slicing file (%s)." msgstr "A impressora não possui um bico compatível com o arquivo de fatiamento (%s)." -# AI Translated msgid "Please install a matching nozzle in the hotend rack, or set the corresponding printer preset while slicing." msgstr "Por favor, instale um bico compatível no rack de hotend, ou defina a predefinição de impressora correspondente ao fatiar." -# AI Translated msgid "The toolhead and hotend rack are full. Please remove at least one hotend before printing." msgstr "A cabeça da ferramenta e o rack de hotend estão cheios. Por favor, remova pelo menos um hotend antes de imprimir." @@ -9933,24 +9925,19 @@ msgstr "ambas extrusoras" msgid "The hardness of current material (%s) exceeds the hardness of %s(%s). Please verify the nozzle or material settings and try again." msgstr "A dureza do material atual (%s) excede a dureza de %s(%s). Verifique as configurações do bico ou do material e tente novamente." -# AI Translated msgid "Your current firmware version cannot start this print job. Please update to the latest version and try again." msgstr "Sua versão atual do firmware não pode iniciar este trabalho de impressão. Atualize para a versão mais recente e tente novamente." -# AI Translated #, c-format, boost-format msgid "The hardness of current material (%s) exceeds the hardness of %s(%s). It may cause nozzle wear, leading to material leakage and unstable flow. Please exercise caution when using it." msgstr "A dureza do material atual (%s) excede a dureza de %s(%s). Isso pode causar desgaste do bico, levando a vazamento de material e fluxo instável. Tenha cuidado ao usá-lo." -# AI Translated msgid "Some filaments may switch between extruders during printing. Manual K-value calibration cannot be applied throughout the entire print, which may affect print quality. Enabling Flow Dynamics Calibration is recommended." msgstr "Alguns filamentos podem alternar entre extrusoras durante a impressão. A calibração manual do valor K não pode ser aplicada durante toda a impressão, o que pode afetar a qualidade da impressão. Recomenda-se ativar a Calibração de Dinâmica de Fluxo." -# AI Translated msgid "There is stringing-prone filament in this file. For best print quality, we recommend switching nozzle clumping detection to Auto mode." -msgstr "Há filamento propenso a fiapos neste arquivo. Para a melhor qualidade de impressão, recomendamos alternar a detecção de aglomeração no bico para o modo Automático." +msgstr "Há filamento propenso a criar fios neste arquivo. Para a melhor qualidade de impressão, recomendamos alternar a detecção de aglomeração no bico para o modo Automático." -# AI Translated msgid "If 'Dynamic Flow Calibration' is set to Auto/On, the system will use the manual calibration value or the default value and skip the flow calibration process. You can perform a manual flow calibration for TPU filament on the 'Calibration' page." msgstr "Se a 'Calibração de Fluxo Dinâmico' estiver definida como Automático/Ativado, o sistema usará o valor de calibração manual ou o valor padrão e ignorará o processo de calibração de fluxo. Você pode realizar uma calibração de fluxo manual para filamento TPU na página 'Calibração'." @@ -10057,7 +10044,6 @@ msgstr "Desative a calibração de fluxo dinâmico para habilitar o valor de flu msgid "This printer does not support printing all plates." msgstr "Esta impressora não suporta a imprimir todas as placas." -# AI Translated #, c-format, boost-format msgid "The current firmware supports a maximum of %s materials. You can either reduce the number of materials to %s or fewer on the Preparation Page, or try updating the firmware. If you are still restricted after the update, please wait for subsequent firmware support." msgstr "O firmware atual suporta no máximo %s materiais. Você pode reduzir o número de materiais para %s ou menos na Página de Preparação, ou tentar atualizar o firmware. Se ainda estiver restrito após a atualização, aguarde o suporte de firmware subsequente." @@ -10065,11 +10051,9 @@ msgstr "O firmware atual suporta no máximo %s materiais. Você pode reduzir o n msgid "The type of external filament is unknown or does not match with the filament type in the slicing file. Please make sure you have installed the correct filament in the external spool." msgstr "O tipo de filamento externo é desconhecido ou não corresponde ao tipo de filamento no arquivo de fatiamento. Certifique-se de ter instalado o filamento correto no carretel externo." -# AI Translated msgid "TPU 90A/TPU 85A are too soft. It is recommended to perform manual flow calibration on the 'Calibration' page. If 'Dynamic Flow Calibration' is set to auto/on, the system will use the previous calibration value and skip the flow calibration process." msgstr "TPU 90A/TPU 85A são muito macios. Recomenda-se realizar a calibração de fluxo manual na página 'Calibração'. Se a 'Calibração de Fluxo Dinâmico' estiver definida como automático/ativado, o sistema usará o valor de calibração anterior e ignorará o processo de calibração de fluxo." -# AI Translated msgid "The filament in the AMS may be insufficient for this print. Please refill or replace it." msgstr "O filamento no AMS pode ser insuficiente para esta impressão. Por favor, reabasteça ou substitua-o." @@ -10146,7 +10130,7 @@ msgid "Failed to post ticket to server" msgstr "Falha ao enviar o ticket para o servidor" msgid "Failed to parse login report reason" -msgstr "Falha ao analisar o motivo do relatório de login" +msgstr "Falha ao processar o motivo do relatório de login" msgid "Receive login report timeout" msgstr "Limite de tempo excedido ao receber o relatório de login" @@ -10242,11 +10226,9 @@ msgstr "Excluir esta predefinição" msgid "Search in preset" msgstr "Pesquisar nas predefinições" -# AI Translated msgid "Synchronization of different extruder drives or nozzle volume types is not supported." msgstr "A sincronização de diferentes acionamentos de extrusora ou tipos de volume do bico não é suportada." -# AI Translated msgid "Synchronize the modification of parameters to the corresponding parameters of another extruder." msgstr "Sincroniza a modificação de parâmetros com os parâmetros correspondentes de outra extrusora." @@ -10316,7 +10298,7 @@ msgid "Are you sure you want to enable this option?" msgstr "Tem certeza de que deseja habilitar esta opção?" msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?" -msgstr "Padrões de preenchimento são projetados para lidar com a rotação automaticamente para garantir a impressão adequada e atingir os efeitos pretendidos (Ex. Giroide, Cúbico). Girar o padrão de preenchimento esparso atual pode causar suporte insuficiente. Prossiga com cautela e verifique cuidadosamente se há possíveis problemas de impressão. Tem certeza de que deseja habilitar esta opção?" +msgstr "Padrões de preenchimento são projetados para lidar com a rotação automaticamente para garantir a impressão adequada e atingir os efeitos pretendidos (ex.: Giroide, Cúbico). Girar o padrão de preenchimento esparso atual pode causar suporte insuficiente. Prossiga com cautela e verifique cuidadosamente se há possíveis problemas de impressão. Tem certeza de que deseja habilitar esta opção?" msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications." msgstr "Funcionalidade experimental: Retrair e cortar o filamento a uma distância maior durante mudanças de filamento para minimizar a purga. Embora possa reduzir notavelmente a purga, ele também pode elevar o risco de bolhas no bico ou outras complicações de impressão." @@ -10479,7 +10461,6 @@ msgstr "G-code de mudança de tipo de extrusão" msgid "Post-processing Scripts" msgstr "Scripts de pós-processamento" -# AI Translated msgid "Slicing Pipeline Plugin" msgstr "Plugin de Pipeline de Fatiamento" @@ -10533,9 +10514,8 @@ msgstr "Temperatura da câmara de impressão" msgid "Chamber temperature" msgstr "Temperatura da câmara" -# AI Translated msgid "Target chamber temperature, and the minimal chamber temperature at which printing should start" -msgstr "Temperatura da câmara alvo, e a temperatura mínima da câmara na qual a impressão deve começar" +msgstr "Temperatura alvo da câmara, e a temperatura mínima da câmara na qual a impressão deve começar" msgid "Target" msgstr "Alvo" @@ -10773,7 +10753,6 @@ msgstr "Limites de altura da camada" msgid "Z-Hop" msgstr "Z-Hop" -# AI Translated msgid "" "The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n" "\n" @@ -11081,7 +11060,6 @@ msgstr "Se ativo, este diálogo pode ser usado para transferir valores seleciona msgid "One of the presets does not exist" msgstr "Uma das predefinições não existe" -# AI Translated msgid "Compared presets has different printer technology" msgstr "As predefinições comparadas têm tecnologia de impressora diferente" @@ -11416,9 +11394,8 @@ msgstr "Entrar" msgid "Login failed. Please try again." msgstr "Falha no login. Tente novamente." -# AI Translated msgid "parse json failed" -msgstr "falha ao analisar o json" +msgstr "falha ao processar o json" msgid "[Action Required] " msgstr "[Ação Necessária] " @@ -11609,7 +11586,6 @@ msgctxt "Keyboard Shortcut" msgid "Space" msgstr "Espaço" -# AI Translated msgid "Open actions speed dial" msgstr "Abrir menu rápido de ações" @@ -11691,11 +11667,9 @@ msgstr "informações de atualização da versão %s:" msgid "Network plug-in update" msgstr "Atualização do plug-in de rede" -# AI Translated msgid "Click OK to update the Network plug-in now. If a file is in use, the update will be applied the next time Orca Slicer launches." msgstr "Clique em OK para atualizar o plug-in de Rede agora. Se um arquivo estiver em uso, a atualização será aplicada na próxima vez que o Orca Slicer for iniciado." -# AI Translated msgid "A new Network plug-in is available. Do you want to install it?" msgstr "Um novo plug-in de Rede está disponível. Deseja instalá-lo?" @@ -11755,7 +11729,6 @@ msgstr "Nome da impressora" msgid "Where to find your printer's IP and Access Code?" msgstr "Onde encontrar o IP e o Código de Acesso da sua impressora?" -# AI Translated msgid "How to trouble shooting" msgstr "Como solucionar problemas" @@ -11903,11 +11876,9 @@ msgstr "Objeto: %1%" msgid "Parts of the object at these heights may be too thin or the object may have a faulty mesh." msgstr "Partes do objeto nessas alturas podem ser muito finas, ou o objeto pode ter uma malha com falhas." -# AI Translated msgid "Process change extrusion role G-code" msgstr "G-code de mudança de tipo de extrusão do processo" -# AI Translated msgid "Filament change extrusion role G-code" msgstr "G-code de mudança de tipo de extrusão do filamento" @@ -12082,7 +12053,6 @@ msgstr " está muito perto de uma área de exclusão, e colisões vão ocorrer.\ msgid " is too close to clumping detection area, and collisions will be caused.\n" msgstr " está muito perto da área de detecção de aglomeração, e ocorrerão colisões.\n" -# AI Translated msgid " is partially outside the printable area, and it cannot be printed.\n" msgstr " está parcialmente fora da área imprimível, e não pode ser impresso.\n" @@ -12098,7 +12068,6 @@ msgstr "Se ainda assim desejar imprimir, você pode ativar a opção em Preferê msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." -# AI Translated msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed." msgstr "Um filamento misto com gradiente está em uso, mas 'Subcamada de cor mista' está desativado. O gradiente não será impresso." @@ -12138,7 +12107,6 @@ msgstr "Você pode querer reduzir o tamanho do seu modelo ou alterar as configur msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes Orgânicos." -# AI Translated msgid "The wipe tower filament cannot be a mixed filament." msgstr "O filamento da torre de purga não pode ser um filamento misto." @@ -12775,7 +12743,6 @@ msgstr "" msgid "Internal bridge flow ratio" msgstr "Taxa de fluxo em ponte interna" -# AI Translated msgid "" "This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill so increasing it may increase strength and upper layer quality.\n" "Values above 1.0: Increase the amount of material while maintaining line spacing. This can improve line contact and strength.\n" @@ -13165,11 +13132,9 @@ msgstr "" "A geometria será decimada antes de detectar ângulos agudos. Este parâmetro indica o comprimento mínimo da divergência para a decimação.\n" "0 para desativar." -# AI Translated msgid "Brim ears outer only" -msgstr "Orelhas da borda apenas externas" +msgstr "Apenas orelhas da borda externas" -# AI Translated msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections." msgstr "Gera orelhas de rato apenas no contorno externo do modelo, excluindo furos e seções fechadas." @@ -13197,7 +13162,6 @@ msgstr "Por objeto" msgid "Intra-layer order" msgstr "Ordem intra-camada" -# AI Translated msgid "" "Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n" "\n" @@ -13255,7 +13219,7 @@ msgid "mm/s² or %" msgstr "mm/s² ou %" msgid "Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration." -msgstr "Aceleração das pontes. Se o valor for expresso como uma porcentagem (por exemplo, 50%), será calculado com base na aceleração da parede externa." +msgstr "Aceleração das pontes. Se o valor for expresso como uma porcentagem (ex.: 50%), será calculado com base na aceleração da parede externa." msgid "Default filament profile" msgstr "Perfil de filamento padrão" @@ -13835,7 +13799,6 @@ msgstr "Tempo da camada" msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time." msgstr "A ventoinha de resfriamento de peças será ativado para camadas cujo tempo estimado seja mais curto que esse valor. A velocidade da ventoinha é interpolada entre as velocidades mínima e máxima da ventoinha de acordo com o tempo de impressão da camada." -# AI Translated msgctxt "second" msgid "s" msgstr "s" @@ -14142,61 +14105,47 @@ msgstr "Material de suporte" msgid "Support material is commonly used to print supports and support interfaces." msgstr "O material de suporte é comumente usado para imprimir suportes e interfaces de suporte." -# AI Translated msgid "Is mixed filament" msgstr "É filamento misto" -# AI Translated msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments" msgstr "Define se este slot de filamento é um filamento misto composto por vários filamentos físicos" -# AI Translated msgid "Mixed filament components" msgstr "Componentes do filamento misto" -# AI Translated msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\"" msgstr "Índices (começando em 1) dos filamentos componentes, separados por vírgulas; ex.: \"1,3\"" -# AI Translated msgid "Mixed filament sublayer ratios" msgstr "Proporções de subcamada do filamento misto" -# AI Translated msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\"" msgstr "Valores de proporção separados por vírgulas cuja soma seja 1.0; ex.: \"0.7,0.3\"" -# AI Translated msgid "Mixed filament gradient" msgstr "Gradiente do filamento misto" -# AI Translated msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers." -msgstr "Ativa o modo de gradiente na direção Z para as subcamadas do filamento misto. Quando ativado, as proporções das subcamadas variam linearmente ao longo das camadas." +msgstr "Ativa o modo de gradiente na direção Z para as subcamadas do filamento misto. Quando ativo, as proporções das subcamadas variam linearmente ao longo das camadas." -# AI Translated msgid "Mixed filament gradient range" msgstr "Faixa do gradiente do filamento misto" -# AI Translated msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%." msgstr "Proporções inicial e final do primeiro componente no modo de gradiente. Par separado por vírgula; ex.: \"0.10,0.90\" significa de 10% a 90%." -# AI Translated msgid "Mixed filament gradient curve" msgstr "Curva do gradiente do filamento misto" -# AI Translated msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead." -msgstr "Curva personalizada opcional, no estilo do Photoshop, que mapeia o progresso em Z para a proporção do primeiro componente. Codificada como pontos de controle separados por barras verticais, no formato \"x,y\" (legado) ou \"x,y,m_in,m_out\" quando é necessário substituir a tangente (um valor vazio ou \"nan\" usa o padrão PCHIP). x está em [0,1]; y é limitado à faixa de proporção configurada; ex.: \"0,0.15|0.5,0.50|1,0.85\". Quando vazio, o gradient_range linear é usado." +msgstr "Curva personalizada opcional no estilo do Photoshop, mapeando o progresso em Z para a proporção do primeiro componente. Codificada como pontos de controle separados por barras verticais, no formato \"x,y\" (legado) ou \"x,y,m_in,m_out\" quando é necessário substituir a tangente (um valor vazio ou \"nan\" usa o padrão PCHIP). X em [0,1]; Y é limitado à faixa de proporção configurada; ex.: \"0,0.15|0.5,0.50|1,0.85\". Quando vazio, o gradient_range linear é usado no lugar." -# AI Translated msgid "Mixed filament per-part gradient" msgstr "Gradiente por peça do filamento misto" -# AI Translated msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range." -msgstr "Quando o modo de gradiente está ativado, aplica o gradiente a cada peça de uma montagem de forma independente, em vez de tratar toda a montagem como uma única faixa Z." +msgstr "Quando o modo de gradiente está ativado, aplica o gradiente a cada peça de uma montagem de forma independente em vez de tratar toda a montagem como uma única faixa Z." msgid "Filament printable" msgstr "Filamento imprimível" @@ -14287,7 +14236,7 @@ msgid "Insert solid layers" msgstr "Inserir camadas sólidas" msgid "Insert solid infill at specific layers. Use N to insert every Nth layer, N#K to insert K consecutive solid layers every N layers (K is optional, e.g. '5#' equals '5#1'), or a comma-separated list (e.g. 1,7,9) to insert at explicit layers. Layers are 1-based." -msgstr "Insere preenchimento sólido em camadas específicas. Use N para inserir a cada enésima camada, N#K para inserir K camadas sólidas consecutivas a cada enésima camada (K é opcional, ou seja, '5#' é igual a '5#1'), ou uma lista separada por vírgulas (Ex. 1,7,9) para inserir em camadas esplícitas. Camadas são baseadas em 1." +msgstr "Insere preenchimento sólido em camadas específicas. Use N para inserir a cada enésima camada, N#K para inserir K camadas sólidas consecutivas a cada enésima camada (K é opcional, ex.: '5#' é igual a '5#1'), ou uma lista separada por vírgulas (Ex. 1,7,9) para inserir em camadas esplícitas. Camadas são baseadas em 1." msgid "Fill Multiline" msgstr "Multilinhas de Preenchimento" @@ -14365,11 +14314,9 @@ msgstr "TPMS-FK" msgid "Gyroid" msgstr "Giroide" -# AI Translated msgid "Sparse infill smooth factor" msgstr "Fator de suavização do preenchimento esparso" -# AI Translated msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines." msgstr "Controla o quanto os cantos do preenchimento esparso são arredondados. 0% mantém o trajeto original com cantos vivos, enquanto 100% produz as maiores curvas possíveis entre linhas de preenchimento adjacentes." @@ -14383,10 +14330,10 @@ msgid "Acceleration of inner walls." msgstr "Aceleração das paredes internas." msgid "Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." -msgstr "Aceleração do preenchimento esparso. Se o valor for expresso como uma porcentagem (por exemplo, 100%), será calculado com base na aceleração padrão." +msgstr "Aceleração do preenchimento esparso. Se o valor for expresso como uma porcentagem (ex.: 100%), será calculado com base na aceleração padrão." msgid "Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration." -msgstr "Aceleração do preenchimento sólido interno. Se o valor for expresso como uma porcentagem (por exemplo, 100%), será calculado com base na aceleração padrão." +msgstr "Aceleração do preenchimento sólido interno. Se o valor for expresso como uma porcentagem (ex.: 100%), será calculado com base na aceleração padrão." msgid "This is the printing acceleration for the first layer. Using limited acceleration can improve build plate adhesion." msgstr "Esta é a aceleração para a primeira camada. Usar aceleração limitada melhorar a adesão à placa de impressão." @@ -14490,7 +14437,7 @@ msgid "" "Only available when \"No cooling for the first\" is 0.\n" "Set to -1 to disable it." msgstr "" -"Define uma velocidade exata da ventoinha para a primeira camada, substituindo todas as outras configurações de resfriamento. Útil para proteger peças impressas em 3D da cabeça da ferramenta (por exemplo, dutos ABS/ASA no estilo Voron) de uma mesa aquecida. Uma pequena quantidade de fluxo de ar resfria os dutos, sem usar o resfriamento total que pode, em certas condições, prejudicar a aderência da primeira camada.\n" +"Define uma velocidade exata da ventoinha para a primeira camada, substituindo todas as outras configurações de resfriamento. Útil para proteger peças impressas em 3D da cabeça da ferramenta (ex.: dutos ABS/ASA no estilo Voron) de uma mesa aquecida. Uma pequena quantidade de fluxo de ar resfria os dutos, sem usar o resfriamento total que pode, em certas condições, prejudicar a aderência da primeira camada.\n" "A partir da segunda camada, o resfriamento normal é retomado.\n" "Se \"Velocidade total da ventoinha na camada\" também estiver definida, a ventoinha aumenta suavemente deste valor na primeira camada até o seu alvo na camada escolhida.\n" "Disponível apenas quando \"Sem resfriamento nas primeiras\" é 0.\n" @@ -14861,7 +14808,7 @@ msgid "" "Set to 0 to deactivate." msgstr "" "Algumas ventoinhas de resfriamento de componentes não conseguem iniciar a rotação quando comandadas abaixo de um determinado ciclo de trabalho PWM. Quando definido acima de 0, qualquer comando de ventoinha de resfriamento de componentes diferente de zero será elevado para pelo menos essa porcentagem, para que a ventoinha inicie de forma confiável. Um comando de ventoinha de 0 (ventoinha desligada) é sempre atendido exatamente. Essa limitação é aplicada após cada outro cálculo da ventoinha (rampa da primeira camada, interpolação do tempo da camada, substituições de saliência/ponte/interface de suporte/alisamento), para que o dimensionamento ainda opere dentro do intervalo [este valor, 100%].\n" -"Se o seu firmware já desativa a ventoinha abaixo de um limite (por exemplo, [fan] off_below: 0.10 do Klipper desliga a ventoinha sempre que o ciclo de trabalho comandado for inferior a 10%), esta opção e o limite do firmware devem idealmente ser definidos com o mesmo valor. A correspondência entre eles (por exemplo, off_below: 0.10 no Klipper e 10% aqui) garante que o fatiador nunca emita um valor diferente de zero que o firmware emitiria a velocidade cai silenciosamente e a ventoinha nunca recebe um valor abaixo daquele que você sabe que ela pode realmente atingir.\n" +"Se o seu firmware já desativa a ventoinha abaixo de um limite (por exemplo, [fan] off_below: 0.10 do Klipper desliga a ventoinha sempre que o ciclo de trabalho comandado for inferior a 10%), esta opção e o limite do firmware devem idealmente ser definidos com o mesmo valor. A correspondência entre eles (ex.: off_below: 0.10 no Klipper e 10% aqui) garante que o fatiador nunca emita um valor diferente de zero que o firmware emitiria a velocidade cai silenciosamente e a ventoinha nunca recebe um valor abaixo daquele que você sabe que ela pode realmente atingir.\n" "Defina como 0 para desativar." msgid "Time cost" @@ -14908,13 +14855,11 @@ msgstr "Com que tipo de G-code a impressora é compatível." msgid "Klipper" msgstr "Klipper" -# AI Translated msgid "Skip G-code config block" msgstr "Omitir o bloco de configuração do G-code" -# AI Translated msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration." -msgstr "Não grava o CONFIG_BLOCK (os pares chave/valor da configuração do fatiador) no arquivo G-code. Isso pode ajudar com impressoras cujo firmware trava ao interpretar essas linhas de comentário (por exemplo, Anycubic go-klipper). Observação: o arquivo G-code não conterá mais as configurações do fatiador, então importá-lo de volta no OrcaSlicer não restaurará a configuração." +msgstr "Não grava o CONFIG_BLOCK (os pares chave/valor da configuração do fatiador) no arquivo G-code. Isso pode ajudar com impressoras cujo firmware trava ao interpretar essas linhas de comentário (ex.: Anycubic go-klipper). Nota: o arquivo G-code não conterá mais as configurações do fatiador, então importá-lo de volta no OrcaSlicer não restaurará a configuração." msgid "Pellet Modded Printer" msgstr "Impressora Modificada para Pellets" @@ -14962,13 +14907,13 @@ msgid "Sparse infill rotation template" msgstr "Gabarito de rotação de preenchimento esparso" msgid "Rotate the sparse infill direction per layer using a template of angles. Enter comma-separated degrees (e.g., '0,30,60,90'). Angles are applied in order by layer and repeat when the list ends. Advanced syntax is supported: '+5' rotates +5° every layer; '+5#5' rotates +5° every 5 layers. See the Wiki for details. When a template is set, the standard infill direction setting is ignored. Note: some infill patterns (e.g., Gyroid) control rotation themselves; use with care." -msgstr "Gira a direção do preenchimento esparso por camada usando um gabarito de ângulos. Insira graus separados por vírgula (por exemplo, '0, 30, 60, 90'). Os ângulos são aplicados em ordem por camada e repetidos quando a lista termina. Sintaxe avançada suportada: '+5' gira +5° a cada camada; '+5#5' gira +5° a cada 5 camadas. Consulte a Wiki para obter detalhes. Quando um modelo é definido, a configuração padrão de direção do preenchimento é ignorada. Observação: alguns padrões de preenchimento (por exemplo, Giróide) tem seu próprio controle de rotação, use com cuidado." +msgstr "Gira a direção do preenchimento esparso por camada usando um gabarito de ângulos. Insira graus separados por vírgula (ex.: '0,30,60,90'). Os ângulos são aplicados em ordem por camada e repetidos quando a lista termina. Sintaxe avançada suportada: '+5' gira +5° a cada camada; '+5#5' gira +5° a cada 5 camadas. Consulte a Wiki para obter detalhes. Quando um modelo é definido, a configuração padrão de direção do preenchimento é ignorada. Nota: alguns padrões de preenchimento (ex.: Giróide) tem seu próprio controle de rotação, use com cuidado." msgid "Solid infill rotation template" msgstr "Gabarito de rotação de preenchimento sólido" msgid "This parameter adds a rotation of solid infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all solid infill patterns support rotation." -msgstr "Este parâmetro adiciona uma rotação da direção do preenchimento sólido a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, por exemplo, '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento sólido suportam rotação." +msgstr "Este parâmetro adiciona uma rotação da direção do preenchimento sólido a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, como '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento sólido suportam rotação." msgid "Skeleton infill density" msgstr "Densidade de preenchimento de esqueleto" @@ -15434,7 +15379,6 @@ msgstr "Força máxima do eixo Y" msgid "The allowed maximum output force of Y axis" msgstr "A força máxima de saída permitida do eixo Y" -# AI Translated msgctxt "Newton" msgid "N" msgstr "N" @@ -15445,7 +15389,6 @@ msgstr "Massa da mesa do eixo Y" msgid "The machine bed mass load of Y axis" msgstr "A carga de massa da mesa do equipamento no eixo Y" -# AI Translated msgctxt "gram" msgid "g" msgstr "g" @@ -15970,7 +15913,7 @@ msgid "Z-hop height" msgstr "Altura de Z-hop" msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing." -msgstr "Sempre que há uma retração, o bico é levantado um pouco para criar folga entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linhas em espiral para levantar Z pode evitar stringing." +msgstr "Sempre que há uma retração, o bico é levantado um pouco para criar folga entre o bico e a impressão. Isso evita que o bico atinja a impressão ao se mover. Usar linhas em espiral para levantar Z pode evitar criação de fios." msgid "Z-hop lower boundary" msgstr "Limite inferior do Z-hop" @@ -16051,7 +15994,7 @@ msgid "Has filament switcher" msgstr "Tem trocador de filamentos" msgid "Printer has a filament switcher hardware (e.g., AMS)." -msgstr "A impressora tem um sistema de troca de filamentos (Ex.: AMS)." +msgstr "A impressora tem um sistema de troca de filamentos (ex.: AMS)." msgid "Extra length on restart" msgstr "Comprimento extra na retração" @@ -16168,7 +16111,7 @@ msgid "Scarf joint speed" msgstr "Velocidade da costura em bisel" msgid "This option sets the printing speed for scarf joints. It is recommended to print scarf joints at a slow speed (less than 100 mm/s). It's also advisable to enable 'Extrusion rate smoothing' if the set speed varies significantly from the speed of the outer or inner walls. If the speed specified here is higher than the speed of the outer or inner walls, the printer will default to the slower of the two speeds. When specified as a percentage (e.g., 80%), the speed is calculated based on the respective outer or inner wall speed. The default value is set to 100%." -msgstr "Esta opção define a velocidade de impressão para as costuras em bisel. É recomendável imprimir as costuras em bisel em uma velocidade baixa (menor que 100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida variar significativamente da velocidade das paredes externas ou internas. Se a velocidade especificada aqui for maior que a velocidade das paredes externas ou internas, a impressora utilizará a mais lenta das duas velocidades. Quando especificado como uma porcentagem (por exemplo, 80%), a velocidade é calculada com base na velocidade do perímetro externo ou interna respectiva. O valor padrão é definido como 100%." +msgstr "Esta opção define a velocidade de impressão para as costuras em bisel. É recomendável imprimir as costuras em bisel em uma velocidade baixa (menor que 100 mm/s). Também é aconselhável habilitar 'Suavização da taxa de extrusão' se a velocidade definida variar significativamente da velocidade das paredes externas ou internas. Se a velocidade especificada aqui for maior que a velocidade das paredes externas ou internas, a impressora utilizará a mais lenta das duas velocidades. Quando especificado como uma porcentagem (ex.: 80%), a velocidade é calculada com base na velocidade do perímetro externo ou interna respectiva. O valor padrão é definido como 100%." msgid "Scarf joint flow ratio" msgstr "Taxa de fluxo da costura em bisel" @@ -16238,7 +16181,7 @@ msgid "Wipe speed" msgstr "Velocidade de limpeza" msgid "The wipe speed is determined by the speed setting specified in this configuration. If the value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel speed setting above. The default value for this parameter is 80%." -msgstr "A velocidade de limpeza é determinada pela velocidade especificada nesta configuração. Se o valor for expresso como uma porcentagem (por exemplo, 80%), será calculado com base na configuração de velocidade de deslocamento acima. O valor padrão para este parâmetro é 80%." +msgstr "A velocidade de limpeza é determinada pela velocidade especificada nesta configuração. Se o valor for expresso como uma porcentagem (ex.: 80%), será calculado com base na configuração de velocidade de deslocamento acima. O valor padrão para este parâmetro é 80%." msgid "Skirt distance" msgstr "Distância da saia" @@ -16276,7 +16219,7 @@ msgstr "" "Um escudo de ar é útil para proteger uma impressão ABS ou ASA de deformações e desprendimento da mesa de impressão devido à corrente de ar. Geralmente, ele é necessário apenas com impressoras de estrutura aberta, ou seja, sem um gabinete.\n" "\n" "Habilitado = a saia é tão alta quanto o objeto impresso mais alto. Caso contrário, 'Altura da saia' é usada.\n" -"Observação: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n" +"Nota: com o escudo de ar ativo, a saia será impressa na distância da saia do objeto. Portanto, se as bordas estiverem ativas, ela pode se cruzar com elas. Para evitar isso, aumente o valor da distância da saia.\n" msgid "Enabled" msgstr "Ativado" @@ -16417,10 +16360,10 @@ msgid "Preheat steps" msgstr "Passos de pré-aquecimento" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." -msgstr "Insire múltiplos comandos de pré-aquecimento (por exemplo, M104.1). Útil apenas para Prusa XL. Para outras impressoras, defina como 1." +msgstr "Insire múltiplos comandos de pré-aquecimento (ex.: M104.1). Útil apenas para Prusa XL. Para outras impressoras, defina como 1." msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (por exemplo, tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}." +msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (ex.: tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}." msgid "Start G-code" msgstr "G-code Inicial" @@ -16441,7 +16384,7 @@ msgid "Manual Filament Change" msgstr "Troca Manual de Filamento" msgid "Enable this option to omit the custom Change filament G-code only at the beginning of the print. The tool change command (e.g., T0) will be skipped throughout the entire print. This is useful for manual multi-material printing, where we use M600/PAUSE to trigger the manual filament change action." -msgstr "Ative esta opção para omitir o G-code de troca de filamento personalizado apenas no início da impressão. O comando de troca de ferramenta (por exemplo, T0) será ignorado durante toda a impressão. Isso é útil para impressão manual de vários materiais, onde usamos M600/PAUSE para acionar a ação de troca manual de filamento." +msgstr "Ative esta opção para omitir o G-code de troca de filamento personalizado apenas no início da impressão. O comando de troca de ferramenta (ex.: T0) será ignorado durante toda a impressão. Isso é útil para impressão manual de vários materiais, onde usamos M600/PAUSE para acionar a ação de troca manual de filamento." msgid "Wipe tower type" msgstr "Tipo de torre de purga" @@ -16997,11 +16940,9 @@ msgstr "" "\n" "Definir um valor na configuração de quantidade de retração antes da limpeza abaixo executará qualquer retração em excesso antes da limpeza, caso contrário, será realizada após." -# AI Translated msgid "Mixed color sublayer" msgstr "Subcamada de cor mista" -# AI Translated msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects." msgstr "Ativa a divisão em subcamadas de cor mista. Quando ativado, as camadas que contêm filamentos de cor mista são divididas em subcamadas para obter efeitos de mistura de cores." @@ -18061,9 +18002,8 @@ msgstr "A geração da malha do arquivo do modelo falhou ou não há forma váli msgid "The supplied file couldn't be read because it's empty." msgstr "O arquivo fornecido não pôde ser lido porque está vazio." -# AI Translated msgid "The file format is incompatible and cannot be parsed." -msgstr "O formato do arquivo é incompatível e não pode ser lido." +msgstr "O formato do arquivo é incompatível e não pode ser processado." msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension." msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .stl, .obj, .amf(.xml)." @@ -18072,10 +18012,10 @@ msgid "Unknown file format: input file must have .3mf or .zip.amf extension." msgstr "Formato de arquivo desconhecido: o arquivo de entrada deve ter extensão .3mf ou .zip.amf." msgid "load_obj: failed to parse" -msgstr "load_obj: falha ao analisar" +msgstr "load_obj: falha ao processar" msgid "load mtl in obj: failed to parse" -msgstr "carregar mtl em obj: falha ao analisar" +msgstr "carregar mtl em obj: falha ao processsar" msgid "The file contains polygons with more than 4 vertices." msgstr "O arquivo contém polígonos com mais de 4 vértices." @@ -19189,7 +19129,7 @@ msgid "Serial" msgstr "Série" msgid "e.g. Basic, Matte, Silk, Marble" -msgstr "por exemplo, Básico, Fosco, Seda, Mármore" +msgstr "Ex.: Básico, Fosco, Seda, Mármore" msgid "Filament Preset" msgstr "Predefinição de Filamento" @@ -19870,7 +19810,7 @@ msgid "Error. Can't get API token for authorization" msgstr "Erro. ​​Não foi possível obter o token de API para autorização" msgid "Could not parse server response." -msgstr "Não foi possível decifrar a resposta do servidor." +msgstr "Não foi possível processar a resposta do servidor." msgid "Error saving session to file" msgstr "Erro salvando sessão para arquivo" @@ -19938,7 +19878,7 @@ msgstr "O host respondeu, mas não parece ser o Moonraker (falta o result.klippy #, c-format, boost-format msgid "Could not parse Moonraker server response: %s" -msgstr "Não foi possível analisar a resposta do servidor Moonraker: %s" +msgstr "Não foi possível processar a resposta do servidor Moonraker: %s" msgid "Connection to OctoPrint is working correctly." msgstr "A conexão com o OctoPrint funciona corretamente." @@ -20312,7 +20252,6 @@ msgstr "Removido" msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings" msgstr "Ativar atribuição inteligente de filamento: Atribui um filamento a vários bicos para maximizar a economia" -# AI Translated msgid "File Saving" msgstr "Salvamento de Arquivo" @@ -20499,7 +20438,7 @@ msgid "Connection timed out. Please check if the printer and computer network ar msgstr "Limite de tempo de conexão esgotado. Verifique se a impressora e a rede do computador estão funcionando corretamente e confirme se estão na mesma rede." msgid "The Hostname/IP/URL could not be parsed, please check it and try again." -msgstr "Não foi possível decifrar o Hostname/IP/URL; verifique-o e tente novamente." +msgstr "Não foi possível processar o Hostname/IP/URL; verifique-o e tente novamente." msgid "File/data transfer interrupted. Please check the printer and network, then try it again." msgstr "Transferência de arquivo/dados interrompida. Verifique a impressora e a rede e tente novamente." @@ -21282,15 +21221,6 @@ msgstr "" #~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)" #~ msgstr "Seu sistema não possui codecs H.264 para o GStreamer, que são necessários para reproduzir vídeos. (Tente instalar os pacotes gstreamer1.0-plugins-bad ou gstreamer1.0-libav e depois reinicie o OrcaSlicer?)" -#~ msgid "N" -#~ msgstr "N" - -#~ msgid "g" -#~ msgstr "g" - -#~ msgid "Fila Saving" -#~ msgstr "Econo Filamento" - #~ msgid "" #~ "Layer height is too small.\n" #~ "It will set to min_layer_height\n" @@ -21618,7 +21548,7 @@ msgstr "" #~ "Pontes externas de menor densidade podem ajudar a melhorar a confiabilidade, pois há mais espaço para o ar circular ao redor da ponte extrudada, melhorando sua velocidade de resfriamento. O mínimo é 10%.\n" #~ "\n" #~ "Densidades mais altas podem produzir superfícies de ponte mais lisas, pois as linhas sobrepostas fornecem suporte adicional durante a impressão. O máximo é 120%.\n" -#~ "Observação: Densidade de ponte muito alta pode causar deformação ou sobrextrusão." +#~ "Nota: Densidade de ponte muito alta pode causar deformação ou sobrextrusão." #~ msgid "" #~ "Controls the density (spacing) of internal bridge lines. 100% means solid bridge. Default is 100%.\n" @@ -21663,7 +21593,7 @@ msgstr "" #~ "\n" #~ "Geralmente, é recomendável ter esta opção ativada, a menos que o resfriamento da impressora seja potente o suficiente ou a velocidade de impressão lenta o suficiente para que a curvatura do perímetro não aconteça. Se estiver imprimindo com uma alta velocidade de perímetro externo, este parâmetro pode introduzir pequenos artefatos ao desacelerar devido à grande variação nas velocidades de impressão. Se você notar artefatos, certifique-se de que seu pressure advance esteja ajustado corretamente.\n" #~ "\n" -#~ "Observação: quando esta opção estiver habilitada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo se o perímetro de saliência for parte de uma ponte. Por exemplo, quando os perímetros estiverem 100% salientes, sem nenhuma parede apoiando-os por baixo, a velocidade de saliência de 100% será aplicada." +#~ "Nota: quando esta opção estiver habilitada, os perímetros de saliência são tratados como saliências, o que significa que a velocidade de saliência é aplicada mesmo se o perímetro de saliência for parte de uma ponte. Por exemplo, quando os perímetros estiverem 100% salientes, sem nenhuma parede apoiando-os por baixo, a velocidade de saliência de 100% será aplicada." #~ msgid "If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If disabled, bridges look better but are reliable just for shorter bridged distances." #~ msgstr "Se ativado, as pontes são mais confiáveis, podem cobrir distâncias maiores, mas podem parecer piores. Se desativado, as pontes ficam melhores, mas são confiáveis apenas para distâncias de ponte mais curtas." @@ -22583,7 +22513,7 @@ msgstr "" #~ msgstr "Contagem máxima de projetos recentes" #~ msgid "This parameter adds a rotation of sparse infill direction to each layer according to the specified template. The template is a comma-separated list of angles in degrees, e.g. '0,90'. The first angle is applied to the first layer, the second angle to the second layer, and so on. If there are more layers than angles, the angles will be repeated. Note that not all sparse infill patterns support rotation." -#~ msgstr "Este parâmetro adiciona uma rotação na direção do preenchimento esparso a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, por exemplo, '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento esparso suportam rotação." +#~ msgstr "Este parâmetro adiciona uma rotação na direção do preenchimento esparso a cada camada, de acordo com o gabarito especificado. O gabarito é uma lista de ângulos em graus separados por vírgulas, como '0,90'. O primeiro ângulo é aplicado à primeira camada, o segundo ângulo à segunda camada e assim por diante. Se houver mais camadas do que ângulos, os ângulos serão repetidos. Observe que nem todos os padrões de preenchimento esparso suportam rotação." #~ msgid "Set Position" #~ msgstr "Definir Posição" From 4ad3d11c7a27e70b5f7303ea3f2af6d835ae4434 Mon Sep 17 00:00:00 2001 From: TheLegendTubaGuy <95944177+thelegendtubaguy@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:52:37 -0500 Subject: [PATCH 099/162] Fix Qidi X-Plus 5 chamber heating profiles (#15556) * Fix Qidi X-Plus 5 chamber heating profiles * Restore Qidi ABS Odorless chamber temperature --------- Co-authored-by: yw4z --- .../profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json | 3 +++ .../profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json | 6 ++++++ .../profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json | 6 ++++++ .../profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json | 6 ++++++ .../profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json | 4 ++-- .../Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json | 3 +++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json index accf79987f..79a52578a4 100644 --- a/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/Generic ABS @X-Plus 5.json @@ -8,6 +8,9 @@ "box_temperature_range_high": [ "45" ], + "chamber_temperature": [ + "55" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json index 6abc420237..d4af23e160 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PA12-CF @X-Plus 5.json @@ -14,9 +14,15 @@ "box_temperature": [ "55" ], + "chamber_temperature": [ + "55" + ], "close_fan_the_first_x_layers": [ "3" ], + "during_print_exhaust_fan_speed": [ + "0" + ], "cool_plate_temp_initial_layer": [ "60" ], diff --git a/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json index ca5591813d..fec939caa8 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PAHT-CF @X-Plus 5.json @@ -14,9 +14,15 @@ "box_temperature": [ "60" ], + "chamber_temperature": [ + "55" + ], "close_fan_the_first_x_layers": [ "3" ], + "during_print_exhaust_fan_speed": [ + "0" + ], "cool_plate_temp_initial_layer": [ "80" ], diff --git a/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json index 411ae26214..de72deb697 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PAHT-GF @X-Plus 5.json @@ -14,9 +14,15 @@ "box_temperature": [ "60" ], + "chamber_temperature": [ + "55" + ], "close_fan_the_first_x_layers": [ "3" ], + "during_print_exhaust_fan_speed": [ + "0" + ], "cool_plate_temp_initial_layer": [ "80" ], diff --git a/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json index 615d895851..f973121e62 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI PPS-GF @X-Plus 5.json @@ -14,8 +14,8 @@ "box_temperature": [ "65" ], - "chamber_temperatures": [ - "0" + "chamber_temperature": [ + "55" ], "close_fan_the_first_x_layers": [ "3" diff --git a/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json b/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json index 2ea27efa4b..82c261fbd5 100644 --- a/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json +++ b/resources/profiles/Qidi/filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json @@ -14,6 +14,9 @@ "box_temperature": [ "60" ], + "chamber_temperature": [ + "55" + ], "close_fan_the_first_x_layers": [ "3" ], From 613dbcb21be6d2a91a3f92cbed12d4fe155bbbc0 Mon Sep 17 00:00:00 2001 From: TheLegendTubaGuy <95944177+thelegendtubaguy@users.noreply.github.com> Date: Fri, 11 Sep 2026 04:03:14 -0500 Subject: [PATCH 100/162] Add Flashforge Creator 5 and Creator 5 Pro 0.25 mm nozzle profiles (#15282) * Add Creator 5 0.25 mm nozzle profiles * Fix Creator 5 process profile load order * Bump Flashforge profile version --------- Co-authored-by: yw4z --- resources/profiles/Flashforge.json | 26 +- .../Flashforge Creator 5 0.25 nozzle.json | 311 ++++++++++++++++++ .../Flashforge Creator 5 Pro 0.25 nozzle.json | 311 ++++++++++++++++++ .../machine/Flashforge Creator 5 Pro.json | 2 +- .../machine/Flashforge Creator 5.json | 2 +- .../0.08mm Standard @FF C5 0.25 nozzle.json | 28 ++ .../0.10mm Standard @FF C5 0.25 nozzle.json | 27 ++ .../0.12mm Standard @FF C5 0.25 nozzle.json | 28 ++ .../0.14mm Standard @FF C5 0.25 nozzle.json | 28 ++ 9 files changed, 760 insertions(+), 3 deletions(-) create mode 100644 resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.08mm Standard @FF C5 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.10mm Standard @FF C5 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.12mm Standard @FF C5 0.25 nozzle.json create mode 100644 resources/profiles/Flashforge/process/0.14mm Standard @FF C5 0.25 nozzle.json diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index f3923c435a..f348a4f329 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.04.00.05", + "version": "02.04.00.06", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ @@ -439,6 +439,22 @@ "name": "0.14mm Standard @FF AD5X 0.25 nozzle", "sub_path": "process/0.14mm Standard @FF AD5X 0.25 nozzle.json" }, + { + "name": "0.08mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.08mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.10mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.10mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.12mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.14mm Standard @FF C5 0.25 nozzle.json" + }, { "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" @@ -2903,6 +2919,10 @@ "name": "Flashforge AD5X 0.4 nozzle", "sub_path": "machine/Flashforge AD5X 0.4 nozzle.json" }, + { + "name": "Flashforge Creator 5 0.25 nozzle", + "sub_path": "machine/Flashforge Creator 5 0.25 nozzle.json" + }, { "name": "Flashforge Creator 5 0.4 nozzle", "sub_path": "machine/Flashforge Creator 5 0.4 nozzle.json" @@ -2915,6 +2935,10 @@ "name": "Flashforge Creator 5 0.8 nozzle", "sub_path": "machine/Flashforge Creator 5 0.8 nozzle.json" }, + { + "name": "Flashforge Creator 5 Pro 0.25 nozzle", + "sub_path": "machine/Flashforge Creator 5 Pro 0.25 nozzle.json" + }, { "name": "Flashforge Creator 5 Pro 0.4 nozzle", "sub_path": "machine/Flashforge Creator 5 Pro 0.4 nozzle.json" diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json new file mode 100644 index 0000000000..54be573cf7 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json @@ -0,0 +1,311 @@ +{ + "type": "machine", + "name": "Flashforge Creator 5 0.25 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "xp3cpTEGYdWjcrMM", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_bed_type": "", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle", + "deretraction_speed": [ + "30", + "30", + "30", + "30" + ], + "disable_m73": "1", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "360", + "extruder_clearance_height_to_rod": "60", + "extruder_clearance_radius": "92", + "extruder_colour": [ + "#FCE94F", + "#FCE94F", + "#FCE94F", + "#FCE94F" + ], + "extruder_offset": [ + "0x0", + "0x0", + "0x0", + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0", + "0", + "0", + "0" + ], + "machine_end_gcode": ";end_gcode\nG1 X150 Y150 E-1.2 F12000", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "300", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_junction_deviation": [ + "0", + "0" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": ";start_gcode\nM140 S[bed_temperature_initial_layer_single]\nM106 P101 S0 ; L+R_PLA_Turbo_Fan_0-255\nM106 P2 S0 ; Center_Fresch_Air_Input_Fan_for_PLA30%_(80_0-255) \nM191 S0 ; Chamber temp. max65C\nM106 S0 ; Model_Fan_(Heat_Break_Cooler_80-255)100%=255\nM106 P3 S0 ; Filter_Unit_Fan_0-255(ABS=255)\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F2400\nT[initial_extruder]\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nG1 X256 Y0 Z0.2 F6000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\nG1 X216 E10 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n;start_gcode end", + "machine_tool_change_time": "7", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.14", + "0.14", + "0.14", + "0.14" + ], + "max_resonance_avoidance_speed": "120", + "min_layer_height": [ + "0.08", + "0.08", + "0.08", + "0.08" + ], + "min_resonance_avoidance_speed": "70", + "nozzle_diameter": [ + "0.25", + "0.25", + "0.25", + "0.25" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "256x0", + "256x256", + "0x256" + ], + "printable_height": "256", + "printer_model": "Flashforge Creator 5", + "printer_notes": "", + "printer_settings_id": "Flashforge Creator 5 0.25 nozzle", + "printer_structure": "corexy", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "resonance_avoidance": "0", + "retract_before_wipe": [ + "100%", + "100%", + "100%", + "100%" + ], + "retract_length_toolchange": [ + "3", + "3", + "3", + "3" + ], + "retract_lift_above": [ + "0", + "0", + "0", + "0" + ], + "retract_lift_below": [ + "0", + "0", + "0", + "0" + ], + "retract_lift_enforce": [ + "All Surfaces", + "All Surfaces", + "All Surfaces", + "All Surfaces" + ], + "retract_restart_extra": [ + "0", + "0", + "0", + "0" + ], + "retract_restart_extra_toolchange": [ + "-0.8", + "-0.8", + "-0.8", + "-0.8" + ], + "retract_when_changing_layer": [ + "1", + "1", + "1", + "1" + ], + "retraction_distances_when_cut": [ + "18", + "18", + "18", + "18" + ], + "retraction_length": [ + "0.8", + "0.8", + "0.8", + "0.8" + ], + "retraction_minimum_travel": [ + "2", + "2", + "2", + "2" + ], + "retraction_speed": [ + "30", + "30", + "30", + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "0", + "support_chamber_temp_control": "0", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3", + "3", + "3", + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1", + "1", + "1", + "1" + ], + "wipe_distance": [ + "2", + "2", + "2", + "2" + ], + "z_hop": [ + "0.4", + "0.4", + "0.4", + "0.4" + ], + "z_hop_types": [ + "Auto Lift", + "Auto Lift", + "Auto Lift", + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json new file mode 100644 index 0000000000..3eea1c58cf --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json @@ -0,0 +1,311 @@ +{ + "type": "machine", + "name": "Flashforge Creator 5 Pro 0.25 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "rpmib7bIKa85LNMR", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_bed_type": "", + "default_filament_profile": [ + "Flashforge Generic PLA" + ], + "default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle", + "deretraction_speed": [ + "30", + "30", + "30", + "30" + ], + "disable_m73": "1", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "360", + "extruder_clearance_height_to_rod": "60", + "extruder_clearance_radius": "92", + "extruder_colour": [ + "#FCE94F", + "#FCE94F", + "#FCE94F", + "#FCE94F" + ], + "extruder_offset": [ + "0x0", + "0x0", + "0x0", + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0", + "0", + "0", + "0" + ], + "machine_end_gcode": ";end_gcode\nG1 X150 Y150 E-1.2 F12000", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "30000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "30000", + "20000" + ], + "machine_max_acceleration_y": [ + "30000", + "20000" + ], + "machine_max_acceleration_z": [ + "300", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_junction_deviation": [ + "0", + "0" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "M25", + "machine_start_gcode": ";start_gcode\nM140 S[bed_temperature_initial_layer_single]\nM106 P101 S0 ; L+R_PLA_Turbo_Fan_0-255\nM106 P2 S0 ; Center_Fresch_Air_Input_Fan_for_PLA30%_(80_0-255) \nM191 S0 ; Chamber temp. max65C\nM106 S0 ; Model_Fan_(Heat_Break_Cooler_80-255)100%=255\nM106 P3 S0 ; Filter_Unit_Fan_0-255(ABS=255)\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F2400\nT[initial_extruder]\nM109 S[nozzle_temperature_initial_layer] T[initial_extruder]\nG1 X256 Y0 Z0.2 F6000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\nG1 X216 E10 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n;start_gcode end", + "machine_tool_change_time": "7", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.14", + "0.14", + "0.14", + "0.14" + ], + "max_resonance_avoidance_speed": "120", + "min_layer_height": [ + "0.08", + "0.08", + "0.08", + "0.08" + ], + "min_resonance_avoidance_speed": "70", + "nozzle_diameter": [ + "0.25", + "0.25", + "0.25", + "0.25" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "0x0", + "256x0", + "256x256", + "0x256" + ], + "printable_height": "256", + "printer_model": "Flashforge Creator 5 Pro", + "printer_notes": "", + "printer_settings_id": "Flashforge Creator 5 Pro 0.25 nozzle", + "printer_structure": "corexy", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "resonance_avoidance": "0", + "retract_before_wipe": [ + "100%", + "100%", + "100%", + "100%" + ], + "retract_length_toolchange": [ + "3", + "3", + "3", + "3" + ], + "retract_lift_above": [ + "0", + "0", + "0", + "0" + ], + "retract_lift_below": [ + "0", + "0", + "0", + "0" + ], + "retract_lift_enforce": [ + "All Surfaces", + "All Surfaces", + "All Surfaces", + "All Surfaces" + ], + "retract_restart_extra": [ + "0", + "0", + "0", + "0" + ], + "retract_restart_extra_toolchange": [ + "-0.8", + "-0.8", + "-0.8", + "-0.8" + ], + "retract_when_changing_layer": [ + "1", + "1", + "1", + "1" + ], + "retraction_distances_when_cut": [ + "18", + "18", + "18", + "18" + ], + "retraction_length": [ + "0.8", + "0.8", + "0.8", + "0.8" + ], + "retraction_minimum_travel": [ + "2", + "2", + "2", + "2" + ], + "retraction_speed": [ + "30", + "30", + "30", + "30" + ], + "scan_first_layer": "0", + "silent_mode": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3", + "3", + "3", + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1", + "1", + "1", + "1" + ], + "wipe_distance": [ + "2", + "2", + "2", + "2" + ], + "z_hop": [ + "0.4", + "0.4", + "0.4", + "0.4" + ], + "z_hop_types": [ + "Auto Lift", + "Auto Lift", + "Auto Lift", + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json index bf8cbf3702..4ef02628d1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Flashforge Creator 5 Pro", "model_id": "Flashforge-Creator-5-Pro", - "nozzle_diameter": "0.4;0.6;0.8", + "nozzle_diameter": "0.25;0.4;0.6;0.8", "machine_tech": "FFF", "family": "Flashforge", "bed_model": "flashforge_c5_buildplate_model.stl", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5.json index 8d5ac253b7..7ef9c172c0 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Flashforge Creator 5", "model_id": "Flashforge-Creator-5", - "nozzle_diameter": "0.4;0.6;0.8", + "nozzle_diameter": "0.25;0.4;0.6;0.8", "machine_tech": "FFF", "family": "Flashforge", "bed_model": "flashforge_c5_buildplate_model.stl", diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @FF C5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @FF C5 0.25 nozzle.json new file mode 100644 index 0000000000..09221f10b2 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.08mm Standard @FF C5 0.25 nozzle.json @@ -0,0 +1,28 @@ +{ + "type": "process", + "name": "0.08mm Standard @FF C5 0.25 nozzle", + "inherits": "0.10mm Standard @FF AD5X 0.25 nozzle", + "from": "system", + "setting_id": "KrOSCGKyvNy9v08u", + "instantiation": "true", + "bottom_solid_infill_flow_ratio": "1", + "compatible_printers": [ + "Flashforge Creator 5 0.25 nozzle", + "Flashforge Creator 5 Pro 0.25 nozzle" + ], + "initial_layer_print_height": "0.1", + "internal_bridge_flow": "1", + "layer_height": "0.08", + "ooze_prevention": "1", + "preheat_time": "20", + "print_extruder_id": [ + "1" + ], + "print_extruder_variant": [ + "Direct Drive Standard" + ], + "print_settings_id": "0.08mm Standard @FF C5 0.25 nozzle", + "small_perimeter_speed": "30", + "standby_temperature_delta": "-100", + "top_solid_infill_flow_ratio": "1" +} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF C5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF C5 0.25 nozzle.json new file mode 100644 index 0000000000..47ea8c6322 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF C5 0.25 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "name": "0.10mm Standard @FF C5 0.25 nozzle", + "inherits": "0.10mm Standard @FF AD5X 0.25 nozzle", + "from": "system", + "setting_id": "0Mep1gVTvD4RwK53", + "instantiation": "true", + "bottom_solid_infill_flow_ratio": "1", + "compatible_printers": [ + "Flashforge Creator 5 0.25 nozzle", + "Flashforge Creator 5 Pro 0.25 nozzle" + ], + "initial_layer_print_height": "0.1", + "internal_bridge_flow": "1", + "ooze_prevention": "1", + "preheat_time": "20", + "print_extruder_id": [ + "1" + ], + "print_extruder_variant": [ + "Direct Drive Standard" + ], + "print_settings_id": "0.10mm Standard @FF C5 0.25 nozzle", + "small_perimeter_speed": "30", + "standby_temperature_delta": "-100", + "top_solid_infill_flow_ratio": "1" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF C5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF C5 0.25 nozzle.json new file mode 100644 index 0000000000..df33cdf344 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF C5 0.25 nozzle.json @@ -0,0 +1,28 @@ +{ + "type": "process", + "name": "0.12mm Standard @FF C5 0.25 nozzle", + "inherits": "0.10mm Standard @FF AD5X 0.25 nozzle", + "from": "system", + "setting_id": "rcKQBKZJvCfrfzqV", + "instantiation": "true", + "bottom_solid_infill_flow_ratio": "1", + "compatible_printers": [ + "Flashforge Creator 5 0.25 nozzle", + "Flashforge Creator 5 Pro 0.25 nozzle" + ], + "initial_layer_print_height": "0.1", + "internal_bridge_flow": "1", + "layer_height": "0.12", + "ooze_prevention": "1", + "preheat_time": "20", + "print_extruder_id": [ + "1" + ], + "print_extruder_variant": [ + "Direct Drive Standard" + ], + "print_settings_id": "0.12mm Standard @FF C5 0.25 nozzle", + "small_perimeter_speed": "30", + "standby_temperature_delta": "-100", + "top_solid_infill_flow_ratio": "1" +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF C5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF C5 0.25 nozzle.json new file mode 100644 index 0000000000..fd6f8f560d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF C5 0.25 nozzle.json @@ -0,0 +1,28 @@ +{ + "type": "process", + "name": "0.14mm Standard @FF C5 0.25 nozzle", + "inherits": "0.10mm Standard @FF AD5X 0.25 nozzle", + "from": "system", + "setting_id": "749mQY3CU2jk0MOd", + "instantiation": "true", + "bottom_solid_infill_flow_ratio": "1", + "compatible_printers": [ + "Flashforge Creator 5 0.25 nozzle", + "Flashforge Creator 5 Pro 0.25 nozzle" + ], + "initial_layer_print_height": "0.1", + "internal_bridge_flow": "1", + "layer_height": "0.14", + "ooze_prevention": "1", + "preheat_time": "20", + "print_extruder_id": [ + "1" + ], + "print_extruder_variant": [ + "Direct Drive Standard" + ], + "print_settings_id": "0.14mm Standard @FF C5 0.25 nozzle", + "small_perimeter_speed": "30", + "standby_temperature_delta": "-100", + "top_solid_infill_flow_ratio": "1" +} From 0a3724ed2f106dd40b8a6b6f89c6a83a546cc81c Mon Sep 17 00:00:00 2001 From: mschfh <37435502+mschfh@users.noreply.github.com> Date: Fri, 11 Sep 2026 04:05:17 -0500 Subject: [PATCH 101/162] =?UTF-8?q?fix(profiles):=20set=20PETG=20SuperTack?= =?UTF-8?q?=20temperatures=20to=2060=C2=B0C=20(#15189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: yw4z --- .../Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json | 6 ------ .../Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json | 6 ------ .../Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json | 6 ------ .../Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json | 6 ------ .../Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json | 6 ------ .../Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json | 6 ------ .../Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json | 6 ------ .../Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json | 6 ------ .../Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json | 6 ------ .../filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json | 6 ------ resources/profiles/Anycubic/filament/fdm_filament_pet.json | 6 ++++++ .../Flashforge/filament/Flashforge HS PETG @FF G4 HF.json | 6 ++++++ .../Flashforge/filament/Flashforge HS PETG @FF G4P HF.json | 6 ++++++ .../Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json | 6 ++++++ .../Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json | 6 ++++++ .../filament/Flashforge PETG Transparent @FF G4 HF.json | 6 ++++++ .../filament/Flashforge PETG Transparent @FF G4P HF.json | 6 ++++++ .../profiles/Flashforge/filament/fdm_filament_pet.json | 6 ++++++ 18 files changed, 48 insertions(+), 60 deletions(-) diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json index 7fb1d1f66c..4852093cda 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -324,12 +324,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json index 64ec8774b0..16d4b54568 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -318,12 +318,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json index ea95c2b1c5..ebc7e8e514 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -324,12 +324,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json index a2cd9ecc5e..978c51007e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -324,12 +324,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json index b0c543cebf..e2c6e84c1b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json @@ -309,12 +309,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json index bbe7575b49..0774881a2b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -318,12 +318,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json index d78fcc1d27..e3a405e192 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -324,12 +324,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json index cc3e8a15fc..e28e2d859e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -324,12 +324,6 @@ "slow_down_min_speed": [ "10" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json index e025d0587c..b44b6ecc11 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -318,12 +318,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json index 78925acad9..0f238e5a5b 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json @@ -309,12 +309,6 @@ "slow_down_min_speed": [ "20" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "support_material_interface_fan_speed": [ "-1" ], diff --git a/resources/profiles/Anycubic/filament/fdm_filament_pet.json b/resources/profiles/Anycubic/filament/fdm_filament_pet.json index 62af7c89ed..56671ade0d 100644 --- a/resources/profiles/Anycubic/filament/fdm_filament_pet.json +++ b/resources/profiles/Anycubic/filament/fdm_filament_pet.json @@ -25,6 +25,12 @@ "hot_plate_temp_initial_layer": [ "80" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json index 955235b442..3534f1a60b 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4 HF.json @@ -87,6 +87,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ] diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json index 82a8dc096a..263224a1ea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF G4P HF.json @@ -93,6 +93,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json index d1c404cd19..8308064c52 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4 HF.json @@ -90,6 +90,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ] diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json index 1385ac8454..d8bdc53caa 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF G4P HF.json @@ -96,6 +96,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json index 2736fea042..f38a075dea 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4 HF.json @@ -90,6 +90,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ] diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json index bc6fbecdb4..c920f757e5 100644 --- a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF G4P HF.json @@ -96,6 +96,12 @@ "support_material_interface_fan_speed": [ "90" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pet.json b/resources/profiles/Flashforge/filament/fdm_filament_pet.json index 678ab77822..a19e1faece 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pet.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pet.json @@ -28,6 +28,12 @@ "textured_plate_temp_initial_layer": [ "85" ], + "supertack_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], "slow_down_for_layer_cooling": [ "1" ], From 67f77e16c38519f8854b20dffd7caf38ace1f3c8 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Thu, 10 Sep 2026 18:23:58 +0800 Subject: [PATCH 102/162] ci: cache compiled objects between runs Every CI leg compiled the whole tree from scratch, 42 to 57 minutes of each build job. Objects are now cached with ccache, one entry per leg kept on the branch that built it: a push saves the cache and drops the previous entry, a pull request restores main's and keeps nothing. The precompiled header is turned off whenever the cache is on: Clang stamps it with the build time, so every file including it missed. With it off, a warm run hits 98.5 to 98.9 % of compiles and the compile steps take 1 to 4 minutes; a cold run costs 25 to 60 % more than before, and a change to a widely included header lands in between. --- .github/workflows/build_orca.yml | 79 ++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 8e1e28db13..f1fb29c46b 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -76,6 +76,56 @@ jobs: if (-not (Test-Path "$cmakeBin\cmake.exe")) { throw "cmake.exe not found at $cmakeBin" } Add-Content -Path $env:GITHUB_PATH -Value $cmakeBin + # Compiler cache. Pushes save it, so main keeps it warm; pull requests + # restore it and discard what they compiled. Objects are keyed on the + # preprocessed source, the compiler and the flags, so a leg only ever + # hits its own entries. A failed install costs the caching, not the build. + - name: Name the compiler cache leg + if: ${{ !inputs.macos-combine-only }} + shell: bash + run: | + leg="${{ runner.os }}-${{ inputs.arch || 'amd64' }}${{ runner.os == 'Windows' && format('-{0}', inputs.compiler) || '' }}" + echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV" + echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV" + + # The action only installs and configures ccache. Restore and save go + # through actions/cache with one path string, since the cache service + # only matches entries saved under the identical path and the action + # spells it differently on Windows. + - name: Compiler cache + id: ccache + if: ${{ !inputs.macos-combine-only }} + continue-on-error: true + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ env.CCACHE_LEG }} + max-size: 3G + restore: false + save: false + + - name: Restore compiler cache + if: ${{ steps.ccache.outcome == 'success' }} + uses: actions/cache/restore@v6 + with: + path: ${{ github.workspace }}/.ccache + key: ${{ env.CCACHE_ENTRY }} + restore-keys: ccache-${{ env.CCACHE_LEG }}- + + - name: Enable compiler cache + if: ${{ steps.ccache.outcome == 'success' }} + shell: bash + run: | + echo "CMAKE_C_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV" + echo "CMAKE_CXX_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV" + # Headers a fresh checkout has just written, and the few files that + # use __DATE__ or __TIME__. + echo "CCACHE_SLOPPINESS=time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV" + # Clang rebuilds the precompiled header with a fresh timestamp on + # every run, so everything that includes it would miss. + echo "ORCA_EXTRA_BUILD_ARGS=-DSLIC3R_PCH=OFF" >> "$GITHUB_ENV" + # The restored directory carries the previous run's counters. + ccache -z + - name: Get the version and date on Ubuntu and macOS if: runner.os != 'Windows' run: | @@ -670,3 +720,32 @@ jobs: asset_name: orca_custom_preset_tests.zip asset_content_type: application/octet-stream max_releases: 1 + + - name: Compiler cache statistics + if: ${{ always() && steps.ccache.outcome == 'success' }} + shell: bash + run: ccache -s -v || ccache -s + + # Entries are immutable, so the new one is saved first and the older + # ones for this leg on this ref are dropped afterwards: a failed save + # leaves the previous entry in place. + - name: Save compiler cache + id: ccache_save + if: ${{ steps.ccache.outcome == 'success' && github.event_name != 'pull_request' }} + uses: actions/cache/save@v6 + with: + path: ${{ github.workspace }}/.ccache + key: ${{ env.CCACHE_ENTRY }} + + - name: Drop older compiler cache entries + if: ${{ steps.ccache_save.outcome == 'success' }} + # A read-only token (fork PRs) cannot delete; that only costs storage. + continue-on-error: true + shell: bash + env: + GH_TOKEN: ${{ github.token }} + run: | + gh cache list --ref "$GITHUB_REF" --key "ccache-$CCACHE_LEG-" --limit 100 --json id,key \ + | jq -r --arg keep "$CCACHE_ENTRY" '.[] | select(.key != $keep) | .id' \ + | tr -d '\r' \ + | while read -r id; do gh cache delete "$id"; done From 6f90ff6e93fb8c00d6f343f4322a570c8dcc0c0b Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Fri, 11 Sep 2026 17:29:28 +0800 Subject: [PATCH 103/162] Allow ccache with PCH Clang records the modification time of every input in the precompiled header, so a fresh checkout produces a different header and every file that includes it misses the compiler cache. -fno-pch-timestamp makes the header reproducible, and pch_defines lets ccache cache the header itself. The precompiled header no longer has to be turned off when the cache is on. --- .github/workflows/build_orca.yml | 10 ++++------ cmake/modules/PrecompiledHeader.cmake | 7 +++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index f1fb29c46b..e51cb2e37a 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -117,12 +117,10 @@ jobs: run: | echo "CMAKE_C_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV" echo "CMAKE_CXX_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV" - # Headers a fresh checkout has just written, and the few files that - # use __DATE__ or __TIME__. - echo "CCACHE_SLOPPINESS=time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV" - # Clang rebuilds the precompiled header with a fresh timestamp on - # every run, so everything that includes it would miss. - echo "ORCA_EXTRA_BUILD_ARGS=-DSLIC3R_PCH=OFF" >> "$GITHUB_ENV" + # Headers a fresh checkout has just written, the few files that + # use __DATE__ or __TIME__, and the precompiled header, whose + # macros ccache cannot see. + echo "CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV" # The restored directory carries the previous run's counters. ccache -z diff --git a/cmake/modules/PrecompiledHeader.cmake b/cmake/modules/PrecompiledHeader.cmake index 7ef80aacff..7d8b3a5603 100644 --- a/cmake/modules/PrecompiledHeader.cmake +++ b/cmake/modules/PrecompiledHeader.cmake @@ -256,6 +256,13 @@ function(add_precompiled_header _target _input) message(STATUS "Adding precompiled header ${_input} to target ${_target}.") target_precompile_headers(${_target} PRIVATE ${_input}) + # Clang records the modification time of every input in the precompiled + # header, which makes it differ between two checkouts of the same source + # and defeats a compiler cache. The build system already rebuilds the + # header when an input changes. + target_compile_options(${_target} PRIVATE + "$<$:SHELL:-Xclang -fno-pch-timestamp>") + get_target_property(_sources ${_target} SOURCES) list(FILTER _sources INCLUDE REGEX ".*\\.mm?") From 6a88f0790edaa79f4e09e25023403a32c20edf98 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Fri, 11 Sep 2026 23:02:31 +0800 Subject: [PATCH 104/162] Enable ccache Depend Mode A miss used to cost a preprocessor pass for the hash and then the real compile. With the depend mode ccache hashes the include list the compiler reports, so a miss costs only the compile. Ninja already asks every compiler here for that list. --- .github/workflows/build_orca.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index e51cb2e37a..1b7fd37a0f 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -121,6 +121,9 @@ jobs: # use __DATE__ or __TIME__, and the precompiled header, whose # macros ccache cannot see. echo "CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV" + # Hash the includes the compiler reports instead of preprocessing + # every miss before compiling it. + echo "CCACHE_DEPEND=1" >> "$GITHUB_ENV" # The restored directory carries the previous run's counters. ccache -z From 1e76e733b7e487db298da922779e09ca03178c7b Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Fri, 11 Sep 2026 22:31:12 +0200 Subject: [PATCH 105/162] CLI: record user overrides in different_settings_to_system for 3MF export (#15595) * CLI: record user overrides in different_settings_to_system for 3MF export Three sites in CLI::run wrote an empty `different_settings_to_system` column and left a //todo: //todo: support user machine preset's different settings different_settings[filament_count+1] = ""; //todo: support system process preset different_settings[0] = ""; //todo: update different settings of filaments different_settings[filament_index] = ""; So a 3MF exported by the CLI does not record which keys the user actually overrode relative to the system parent. Re-opening such a project in the GUI then shows spurious "unsaved changes", and accepting that dialog can revert inherited process/filament/machine values to system defaults. The column could not be filled before because the CLI had no resolved view of the parent preset. It does now: #15438 builds a PresetBundle for inherits resolution, so the parent can be looked up by name and diffed against the resolved leaf. This adds no extra loading -- the bundle is the one already built, and the helper returns "" whenever it is unavailable or the parent cannot be found, which is the previous behaviour. Preset metadata is filtered out of the diff: `inherits`, the three `*_settings_id` keys, and `compatible_printers` / `compatible_prints` and their `_condition` variants, which have their own tracking columns (`inherits_group`, per-slot lists) and would otherwise double-count. A value already carried by the loaded JSON still wins for the process slot, so presets saved with a `different_settings_to_system` field behave as before; the computed value only fills the gap where that field is absent, which is the case for every user preset in my datadir (0 of 47 carry it). System presets keep an empty column: there are no user overrides to record. * CLI: diff the filament slot before load_default_gcodes_to_config The process and machine slots compute their different_settings_to_system column before load_default_gcodes_to_config(); the filament slot did it after. That call materialises absent gcode keys via option(..., true), and DynamicConfig::diff only compares keys present in both configs -- so a gcode key the resolved leaf did not carry would go from 'not compared' to 'compared as empty against the parent' and land in the column as an override the user never made. Hoisted into a local above the call, guarded by load_filament_count > 0 so the work is skipped exactly where it was before, and assigned at the original site. The diff now also runs before config.erase("filament_settings_id"), which is immaterial: cli_different_settings already filters filament_settings_id along with the other *_settings_id keys. This is a consistency fix rather than a demonstrated defect -- resolve_preset merges the parent config, so in practice the gcode keys are already present on both sides and the diff is unaffected. It removes the dependence on that invariant, which the other two slots never had. Reported by HanifKoh in review of #15595. --- src/OrcaSlicer.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 5463f55c20..7c881047e7 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -2046,6 +2046,51 @@ int CLI::run(int argc, char **argv) error, allow_source_manifest); }; + //ORCA: list the keys a user preset overrides relative to its system parent, for the + // `different_settings_to_system` column of an exported 3MF. Without it the CLI + // writes an empty column, so re-opening a CLI-exported project in the GUI shows + // spurious "unsaved changes" and can revert inherited process/filament/machine + // values to system defaults. + // + // The parent comes from the preset bundle that inherits resolution already builds, + // so this adds no extra loading. Returns "" whenever the parent cannot be resolved, + // which is exactly the previous behaviour. + auto cli_different_settings = [&ensure_cli_preset_bundle](const DynamicPrintConfig &resolved, + const std::string &parent_name, + Preset::Type type) -> std::string { + if (parent_name.empty()) + return std::string(); + std::string error; + PresetBundle *bundle = ensure_cli_preset_bundle(error); + if (bundle == nullptr) { + BOOST_LOG_TRIVIAL(warning) << "CLI: no preset bundle for different_settings_to_system: " << error; + return std::string(); + } + const PresetCollection *collection = nullptr; + switch (type) { + case Preset::TYPE_PRINT: collection = &bundle->prints; break; + case Preset::TYPE_FILAMENT: collection = &bundle->filaments; break; + case Preset::TYPE_PRINTER: collection = &bundle->printers; break; + default: return std::string(); + } + const Preset *parent = collection->find_preset2(parent_name, true); + if (parent == nullptr) { + BOOST_LOG_TRIVIAL(warning) << boost::format("CLI: parent preset '%1%' not found; leaving different_settings_to_system empty")%parent_name; + return std::string(); + } + std::vector keys = resolved.diff(parent->config); + //ORCA: preset metadata, not user-tunable settings. compatible_printers / + // compatible_prints have their own tracking columns and would double-count. + keys.erase(std::remove_if(keys.begin(), keys.end(), [](const std::string &k) { + return k == "inherits" || k == "compatible_printers" || k == "compatible_prints" + || k == "compatible_printers_condition" || k == "compatible_prints_condition" + || k == "print_settings_id" || k == "filament_settings_id" || k == "printer_settings_id"; + }), + keys.end()); + BOOST_LOG_TRIVIAL(info) << boost::format("CLI: %1% overrides vs parent '%2%'")%keys.size()%parent_name; + return Slic3r::escape_strings_cstyle(keys); + }; + auto load_config_file = [&resolve_preset](const std::string& file, DynamicPrintConfig& config, std::string& config_type, std::string& config_name, std::string& filament_id, std::string& config_from) { if (! boost::filesystem::exists(file)) { @@ -2937,8 +2982,10 @@ int CLI::run(int argc, char **argv) } } else { - //todo: support user machine preset's different settings - different_settings[filament_count+1] = ""; + //ORCA: was a //todo — compute the user's overrides instead of writing an empty column. + different_settings[filament_count+1] = new_printer_config_is_system + ? std::string() + : cli_different_settings(load_machine_config, new_printer_system_name, Preset::TYPE_PRINTER); if (new_printer_config_is_system) inherits_group[filament_count+1] = ""; else @@ -3080,8 +3127,14 @@ int CLI::run(int argc, char **argv) print_compatible_printers = std::move(current_print_compatible_printers); } else { - //todo: support system process preset - different_settings[0] = ""; + //ORCA: was a //todo. Prefer a value the loaded JSON already carried, otherwise + // compute the overrides against the system parent. + if (!different_process_setting.empty()) + different_settings[0] = different_process_setting; + else + different_settings[0] = new_process_config_is_system + ? std::string() + : cli_different_settings(load_process_config, new_process_system_name, Preset::TYPE_PRINT); if (new_process_config_is_system) inherits_group[0] = ""; else @@ -3268,6 +3321,16 @@ int CLI::run(int argc, char **argv) int filament_index = load_filaments_index[index]; std::vector different_keys; + //ORCA: diff before load_default_gcodes_to_config, the way the process and machine + // slots above already do. That call materialises absent gcode keys via + // option(..., true), and DynamicConfig::diff only compares keys present in + // both configs -- so a gcode key the leaf did not carry would go from "not + // compared" to "compared as empty against the parent" and land in the column + // as an override the user never made. + std::string filament_different_settings; + if (load_filament_count > 0) + filament_different_settings = cli_different_settings(config, load_filaments_inherit[index], Preset::TYPE_FILAMENT); + load_default_gcodes_to_config(config, Preset::TYPE_FILAMENT); if (load_filament_count > 0) { @@ -3279,8 +3342,8 @@ int CLI::run(int argc, char **argv) opt_filament_settings->set_at(filament_name_setting, filament_index-1, 0); config.erase("filament_settings_id"); - //todo: update different settings of filaments - different_settings[filament_index] = ""; + //ORCA: was a //todo — same treatment as process/machine above. + different_settings[filament_index] = filament_different_settings; inherits_group[filament_index] = load_filaments_inherit[index]; } else { From 74cf1483841b0421282ee5eb9ff5f617d3e1a79d Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Fri, 11 Sep 2026 19:22:16 -0500 Subject: [PATCH 106/162] fix: sequential-print arrange settings are ignored and never persisted (#15425) --- src/slic3r/GUI/GLCanvas3D.cpp | 138 ++++++++++--------------------- src/slic3r/GUI/GLCanvas3D.hpp | 19 +---- src/slic3r/GUI/GUI_App.cpp | 2 +- tests/libslic3r/test_arrange.cpp | 98 +++++++++++++++++++++- tests/libslic3r/test_config.cpp | 70 ++++++++++++++++ 5 files changed, 213 insertions(+), 114 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 676d310f7b..e63501eec1 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1078,56 +1078,36 @@ const double GLCanvas3D::DefaultCameraZoomToPlateMarginFactor = 1.25; void GLCanvas3D::load_arrange_settings() { - std::string dist_fff_str = - wxGetApp().app_config->get("arrange", "min_object_distance_fff"); + // Each key must match what _render_arrange_menu writes, which appends a per-mode + // postfix to the base name. + auto load_float = [](const char *key, float &out) { + // The menu writes these with float_to_string_decimal_point, so parse them back + // the same way rather than with anything locale-dependent. + std::string value = wxGetApp().app_config->get("arrange", key); + size_t parsed = 0; + double number = string_to_double_decimal_point(value, &parsed); + if (parsed > 0) + out = float(number); + }; + auto load_bool = [](const char *key, bool &out) { + std::string value = wxGetApp().app_config->get("arrange", key); + if (!value.empty()) + out = (value == "1" || value == "true"); + }; - std::string dist_fff_seq_print_str = - wxGetApp().app_config->get("arrange", "min_object_distance_seq_print_fff"); + load_float("min_object_distance_fff", m_arrange_settings_fff.distance); + load_float("min_object_distance_fff_seq_print", m_arrange_settings_fff_seq_print.distance); + load_float("min_object_distance_sla", m_arrange_settings_sla.distance); - std::string dist_sla_str = - wxGetApp().app_config->get("arrange", "min_object_distance_sla"); + load_bool("enable_rotation_fff", m_arrange_settings_fff.enable_rotation); + load_bool("enable_rotation_fff_seq_print", m_arrange_settings_fff_seq_print.enable_rotation); + load_bool("enable_rotation_sla", m_arrange_settings_sla.enable_rotation); - std::string en_rot_fff_str = - wxGetApp().app_config->get("arrange", "enable_rotation_fff"); - - std::string en_rot_fff_seqp_str = - wxGetApp().app_config->get("arrange", "enable_rotation_seq_print"); - - std::string en_rot_sla_str = - wxGetApp().app_config->get("arrange", "enable_rotation_sla"); - - std::string en_allow_multiple_materials_str = - wxGetApp().app_config->get("arrange", "allow_multi_materials_on_same_plate"); - - std::string en_avoid_region_str = - wxGetApp().app_config->get("arrange", "avoid_extrusion_cali_region"); - - - - if (!dist_fff_str.empty()) - m_arrange_settings_fff.distance = std::stof(dist_fff_str); - - if (!dist_fff_seq_print_str.empty()) - m_arrange_settings_fff_seq_print.distance = std::stof(dist_fff_seq_print_str); - - if (!dist_sla_str.empty()) - m_arrange_settings_sla.distance = std::stof(dist_sla_str); - - if (!en_rot_fff_str.empty()) - m_arrange_settings_fff.enable_rotation = (en_rot_fff_str == "1" || en_rot_fff_str == "true"); - - if (!en_allow_multiple_materials_str.empty()) - m_arrange_settings_fff.allow_multi_materials_on_same_plate = (en_allow_multiple_materials_str == "1" || en_allow_multiple_materials_str == "true"); - - - if (!en_rot_fff_seqp_str.empty()) - m_arrange_settings_fff_seq_print.enable_rotation = (en_rot_fff_seqp_str == "1" || en_rot_fff_seqp_str == "true"); - - if(!en_avoid_region_str.empty()) - m_arrange_settings_fff.avoid_extrusion_cali_region = (en_avoid_region_str == "1" || en_avoid_region_str == "true"); - - if (!en_rot_sla_str.empty()) - m_arrange_settings_sla.enable_rotation = (en_rot_sla_str == "1" || en_rot_sla_str == "true"); + // These two keys carry no postfix, so the one stored value covers both FFF modes. + load_bool("allow_multi_materials_on_same_plate", m_arrange_settings_fff.allow_multi_materials_on_same_plate); + load_bool("allow_multi_materials_on_same_plate", m_arrange_settings_fff_seq_print.allow_multi_materials_on_same_plate); + load_bool("avoid_extrusion_cali_region", m_arrange_settings_fff.avoid_extrusion_cali_region); + load_bool("avoid_extrusion_cali_region", m_arrange_settings_fff_seq_print.avoid_extrusion_cali_region); //BBS: add specific arrange settings m_arrange_settings_fff_seq_print.is_seq_print = true; @@ -5959,7 +5939,7 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa } //BBS: GUI refactor: adjust main toolbar position -bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, float top) +void GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, float top) { ImGuiWrapper *imgui = wxGetApp().imgui(); @@ -5984,7 +5964,6 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo imgui->begin(_L("Arrange options"), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); - ArrangeSettings settings = get_arrange_settings(); ArrangeSettings &settings_out = get_arrange_settings(); const float slider_icon_width = imgui->get_slider_icon_size().x; const float cursor_slider_left = imgui->calc_text_size(_L("Spacing")).x + imgui->scaled(1.5f); @@ -5993,13 +5972,9 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo auto &appcfg = wxGetApp().app_config; PrinterTechnology ptech = current_printer_technology(); - bool settings_changed = false; - float dist_min = 0.f; // 0 means auto std::string dist_key = "min_object_distance", rot_key = "enable_rotation"; - std::string bed_shrink_x_key = "bed_shrink_x", bed_shrink_y_key = "bed_shrink_y"; std::string multi_material_key = "allow_multi_materials_on_same_plate"; std::string avoid_extrusion_key = "avoid_extrusion_cali_region"; - std::string align_to_y_axis_key = "align_to_y_axis"; std::string postfix; //BBS: bool seq_print = false; @@ -6007,59 +5982,41 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo if (ptech == ptSLA) { postfix = "_sla"; } else if (ptech == ptFFF) { - seq_print = &settings == &m_arrange_settings_fff_seq_print; - if (seq_print) { - postfix = "_fff_seq_print"; - } else { - postfix = "_fff"; - } + seq_print = wxGetApp().global_print_sequence() == PrintSequence::ByObject; + postfix = seq_print ? "_fff_seq_print" : "_fff"; } dist_key += postfix; rot_key += postfix; - bed_shrink_x_key += postfix; - bed_shrink_y_key += postfix; ImGui::AlignTextToFramePadding(); imgui->text(_L("Spacing")); ImGui::SameLine(1.2 * cursor_slider_left); ImGui::PushItemWidth(window_width - slider_icon_width); - bool b_Spacing = imgui->bbl_slider_float_style("##Spacing", &settings.distance, dist_min, 100.0f, "%5.2f") || dist_min > settings.distance; + bool b_Spacing = imgui->bbl_slider_float_style("##Spacing", &settings_out.distance, 0.f, 100.0f, "%5.2f", 1.0f, /*clamp=*/false); ImGui::SameLine(window_width - slider_icon_width + 1.3 * cursor_slider_left); ImGui::PushItemWidth(1.5 * slider_icon_width); - bool b_spacing_input = ImGui::BBLDragFloat("##spacing_input", &settings.distance, 0.05f, 0.0f, 0.0f, "%.2f"); - if (b_Spacing || b_spacing_input) - { - settings.distance = std::max(dist_min, settings.distance); - settings_out.distance = settings.distance; + bool b_spacing_input = ImGui::BBLDragFloat("##spacing_input", &settings_out.distance, 0.05f, 0.0f, 0.0f, "%.2f"); + if (b_Spacing || b_spacing_input) { + settings_out.distance = std::max(0.f, settings_out.distance); appcfg->set("arrange", dist_key.c_str(), float_to_string_decimal_point(settings_out.distance)); - settings_changed = true; } imgui->text(_L("0 means auto spacing.")); ImGui::Separator(); - if (imgui->bbl_checkbox(_L("Auto rotate for arrangement"), settings.enable_rotation)) { - settings_out.enable_rotation = settings.enable_rotation; + if (imgui->bbl_checkbox(_L("Auto rotate for arrangement"), settings_out.enable_rotation)) appcfg->set("arrange", rot_key.c_str(), settings_out.enable_rotation); - settings_changed = true; - } - if (imgui->bbl_checkbox(_L("Allow multiple materials on same plate"), settings.allow_multi_materials_on_same_plate)) { - settings_out.allow_multi_materials_on_same_plate = settings.allow_multi_materials_on_same_plate; - appcfg->set("arrange", multi_material_key.c_str(), settings_out.allow_multi_materials_on_same_plate ); - settings_changed = true; - } + if (imgui->bbl_checkbox(_L("Allow multiple materials on same plate"), settings_out.allow_multi_materials_on_same_plate)) + appcfg->set("arrange", multi_material_key.c_str(), settings_out.allow_multi_materials_on_same_plate); // only show this option if the printer has micro Lidar and can do first layer scan DynamicPrintConfig ¤t_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; const bool has_lidar = wxGetApp().preset_bundle->is_bbl_vendor(); auto op = current_config.option("scan_first_layer"); if (has_lidar && op && op->getBool()) { - if (imgui->bbl_checkbox(_L("Avoid extrusion calibration region"), settings.avoid_extrusion_cali_region)) { - settings_out.avoid_extrusion_cali_region = settings.avoid_extrusion_cali_region; - appcfg->set("arrange", avoid_extrusion_key.c_str(), settings_out.avoid_extrusion_cali_region ? "1" : "0"); - settings_changed = true; - } + if (imgui->bbl_checkbox(_L("Avoid extrusion calibration region"), settings_out.avoid_extrusion_cali_region)) + appcfg->set("arrange", avoid_extrusion_key.c_str(), settings_out.avoid_extrusion_cali_region); } else { settings_out.avoid_extrusion_cali_region = false; } @@ -6071,11 +6028,7 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo settings_out.align_to_y_axis = false; } - if (imgui->bbl_checkbox(_L("Align to Y axis"), settings.align_to_y_axis)) { - settings_out.align_to_y_axis = settings.align_to_y_axis; - appcfg->set("arrange", align_to_y_axis_key, settings_out.align_to_y_axis ? "1" : "0"); - settings_changed = true; - } + imgui->bbl_checkbox(_L("Align to Y axis"), settings_out.align_to_y_axis); if (settings_out.enable_rotation == true) { imgui->disabled_end(); } } @@ -6091,7 +6044,6 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo if (imgui->button(_L("Reset"))) { settings_out = ArrangeSettings{}; - settings_out.distance = std::max(dist_min, settings_out.distance); //BBS: add specific arrange settings if (seq_print) settings_out.is_seq_print = true; @@ -6101,18 +6053,16 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo else settings_out.align_to_y_axis = false; - appcfg->set("arrange", dist_key, float_to_string_decimal_point(settings_out.distance)); - appcfg->set("arrange", rot_key, settings_out.enable_rotation ? "1" : "0"); - appcfg->set("arrange", align_to_y_axis_key, settings_out.align_to_y_axis ? "1" : "0"); - settings_changed = true; + appcfg->erase("arrange", dist_key); + appcfg->erase("arrange", rot_key); + appcfg->erase("arrange", multi_material_key); + appcfg->erase("arrange", avoid_extrusion_key); } ImGui::PopStyleVar(1); imgui->end(); //BBS ImGuiWrapper::pop_toolbar_style(); - - return settings_changed; } static const float cameraProjection[16] = {1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f}; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 84dbd5d652..b1dd674d96 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -656,11 +656,7 @@ public: } void load_arrange_settings(); - ArrangeSettings& get_arrange_settings();// { return get_arrange_settings(this); } - ArrangeSettings& get_arrange_settings(PrintSequence print_seq) { - return (print_seq == PrintSequence::ByObject) ? m_arrange_settings_fff_seq_print - : m_arrange_settings_fff; - } + ArrangeSettings& get_arrange_settings(); class SequentialPrintClearance { @@ -1163,17 +1159,6 @@ public: void highlight_toolbar_item(const std::string& item_name); void highlight_gizmo(const std::string& gizmo_name); - ArrangeSettings get_arrange_settings() const { - const ArrangeSettings &settings = get_arrange_settings(); - ArrangeSettings ret = settings; - if (&settings == &m_arrange_settings_fff_seq_print) { - ret.distance = std::max(ret.distance, - float(min_object_distance(*m_config))); - } - - return ret; - } - // Timestamp for FPS calculation and notification fade-outs. static int64_t timestamp_now() { #ifdef _WIN32 @@ -1308,7 +1293,7 @@ private: void _render_selection_sidebar_hints() { m_selection.render_sidebar_hints(m_sidebar_field, m_gizmos.get_uniform_scaling()); } //BBS: GUI refactor: adjust main toolbar position bool _render_orient_menu(float left, float right, float bottom, float top); - bool _render_arrange_menu(float left, float right, float bottom, float top); + void _render_arrange_menu(float left, float right, float bottom, float top); void _render_3d_navigator(); void _update_volumes_hover_state(); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index df2d1fccc0..fee18b4799 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -9197,7 +9197,7 @@ int GUI_App::filaments_cnt() const PrintSequence GUI_App::global_print_sequence() const { PrintSequence global_print_seq = PrintSequence::ByDefault; - auto curr_preset_config = preset_bundle->prints.get_edited_preset().config; + const auto &curr_preset_config = preset_bundle->prints.get_edited_preset().config; if (curr_preset_config.has("print_sequence")) global_print_seq = curr_preset_config.option>("print_sequence")->value; return global_print_seq; diff --git a/tests/libslic3r/test_arrange.cpp b/tests/libslic3r/test_arrange.cpp index a9fb51e352..3906cba8ba 100644 --- a/tests/libslic3r/test_arrange.cpp +++ b/tests/libslic3r/test_arrange.cpp @@ -4,6 +4,8 @@ #include "libslic3r/BoundingBox.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ExPolygon.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/PrintConfig.hpp" using namespace Slic3r; using namespace Slic3r::arrangement; @@ -24,11 +26,13 @@ ArrangePolygon make_square(coord_t side) return ap; } -ArrangePolygons squares(int n, double side_mm) +ArrangePolygons squares(int n, double side_mm, double height_mm = 0.) { ArrangePolygons items; - for (int i = 0; i < n; ++i) + for (int i = 0; i < n; ++i) { items.emplace_back(make_square(scaled(side_mm))); + items.back().height = height_mm; + } return items; } @@ -82,6 +86,38 @@ void require_no_overlap(const ArrangePolygons &items) REQUIRE(disjoint(placed_shapes(items))); } +// The sequential-print floor is chosen by comparing object height against the nozzle, +// so the two are defined together and every expectation is derived from them. +constexpr double NOZZLE_HEIGHT_MM = 2.5; +constexpr double CLEARANCE_MM = 30.; +constexpr double NOZZLE_FLOOR_MM = MAX_OUTER_NOZZLE_DIAMETER / 2.; + +ArrangeParams seq_print_params(coord_t min_dist) +{ + ArrangeParams p = quiet_params(min_dist); + p.is_seq_print = true; + p.clearance_radius = float(CLEARANCE_MM); + p.nozzle_height = float(NOZZLE_HEIGHT_MM); + p.object_skirt_offset = 0.f; + return p; +} + +// update_selected_items_inflation reads the bed out of the config to cap inflation. +DynamicPrintConfig bed_config() +{ + DynamicPrintConfig c; + c.set_key_value("printable_area", new ConfigOptionPoints{{0, 0}, {200, 0}, {200, 200}, {0, 200}}); + return c; +} + +ArrangePolygons squares_of_heights(const std::vector &heights_mm) +{ + ArrangePolygons items; + for (double height_mm : heights_mm) + items.push_back(squares(1, 20., height_mm).front()); + return items; +} + } // namespace // Prove the overlap check the other tests rely on actually detects overlap. @@ -222,3 +258,61 @@ TEST_CASE("Arrange aligns the pile to a custom center", "[Arrange]") REQUIRE(ap.bed_idx == 0); require_no_overlap(items); } + +TEST_CASE("Sequential print floors the object distance by object height", "[Arrange]") +{ + // The only place sequential-print clearance is enforced. The arrange menu offers + // no floor of its own, so a stored 0 has to be raised here or not at all. + struct Case + { + std::string description; + std::vector heights; + double skirt_offset_mm; + double expected_floor_mm; + }; + + auto c = GENERATE(values({ + {"objects taller than the nozzle need the full clearance", {NOZZLE_HEIGHT_MM * 2, NOZZLE_HEIGHT_MM * 2}, 0., CLEARANCE_MM}, + {"an object exactly at the nozzle height counts as tall", {NOZZLE_HEIGHT_MM, NOZZLE_HEIGHT_MM}, 0., CLEARANCE_MM}, + {"one tall object among short ones is enough", {NOZZLE_HEIGHT_MM / 2, NOZZLE_HEIGHT_MM * 2}, 0., CLEARANCE_MM}, + {"objects the nozzle clears keep only the nozzle-width floor", {NOZZLE_HEIGHT_MM / 2, NOZZLE_HEIGHT_MM / 2}, 0., NOZZLE_FLOOR_MM}, + {"a wide skirt raises the floor for short objects", {NOZZLE_HEIGHT_MM / 2, NOZZLE_HEIGHT_MM / 2}, 3., 6.}, + })); + + DYNAMIC_SECTION(c.description) + { + ArrangePolygons items = squares_of_heights(c.heights); + DynamicPrintConfig cfg = bed_config(); + ArrangeParams p = seq_print_params(0); + p.object_skirt_offset = float(c.skirt_offset_mm); + + update_selected_items_inflation(items, &cfg, p); + + CHECK(p.min_obj_distance >= scaled(c.expected_floor_mm)); + CHECK(p.min_obj_distance <= scaled(c.expected_floor_mm + 0.01)); + // Half each, so a pair ends up a full min_obj_distance apart. + CHECK(items.front().inflation == p.min_obj_distance / 2); + } +} + +TEST_CASE("Sequential print keeps an object distance already above the floor", "[Arrange]") +{ + const coord_t stored = scaled(CLEARANCE_MM * 2); + ArrangePolygons items = squares_of_heights({NOZZLE_HEIGHT_MM * 2, NOZZLE_HEIGHT_MM * 2}); + DynamicPrintConfig cfg = bed_config(); + ArrangeParams p = seq_print_params(stored); + + update_selected_items_inflation(items, &cfg, p); + CHECK(p.min_obj_distance == stored); +} + +TEST_CASE("Layered printing does not floor the object distance", "[Arrange]") +{ + ArrangePolygons items = squares_of_heights({NOZZLE_HEIGHT_MM * 2, NOZZLE_HEIGHT_MM * 2}); + DynamicPrintConfig cfg = bed_config(); + ArrangeParams p = seq_print_params(0); + p.is_seq_print = false; + + update_selected_items_inflation(items, &cfg, p); + CHECK(p.min_obj_distance == 0); +} diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index bd147b5881..9a70ecbaeb 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -1091,3 +1091,73 @@ TEST_CASE("get_filament_type treats empty vector options as absent", "[Config][F REQUIRE(displayed == "Sup.PLA"); } } + +namespace { + +// min_object_distance reads exactly these three options. +DynamicPrintConfig spacing_config(PrinterTechnology tech, PrintSequence seq, double clearance_radius) +{ + DynamicPrintConfig c; + c.set_key_value("printer_technology", new ConfigOptionEnum(tech)); + c.set_key_value("print_sequence", new ConfigOptionEnum(seq)); + c.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(clearance_radius)); + return c; +} + +} // namespace + +TEST_CASE("min_object_distance floors object spacing per print sequence", "[Config]") +{ + struct Case + { + std::string description; + PrinterTechnology tech; + PrintSequence sequence; + double clearance_radius; + double expected; + }; + + auto c = GENERATE(values({ + {"sequential FFF takes a clearance radius above the floor", ptFFF, PrintSequence::ByObject, 12., 12.}, + {"sequential FFF holds the floor at the radius", ptFFF, PrintSequence::ByObject, 6., 6.}, + {"sequential FFF holds the floor below the radius", ptFFF, PrintSequence::ByObject, 4., 6.}, + {"layered FFF ignores the clearance radius", ptFFF, PrintSequence::ByLayer, 12., 6.}, + {"SLA is a flat 6mm", ptSLA, PrintSequence::ByObject, 12., 6.}, + {"SLA ignores the print sequence too", ptSLA, PrintSequence::ByLayer, 12., 6.}, + })); + + DYNAMIC_SECTION(c.description) + { + CHECK_THAT(min_object_distance(spacing_config(c.tech, c.sequence, c.clearance_radius)), + Catch::Matchers::WithinAbs(c.expected, 1e-9)); + } +} + +TEST_CASE("min_object_distance yields no floor when an FFF config lacks the options", "[Config]") +{ + // Missing options yield 0 rather than an error, so a caller gets no floor at all. + SECTION("no clearance radius") { + DynamicPrintConfig c; + c.set_key_value("printer_technology", new ConfigOptionEnum(ptFFF)); + c.set_key_value("print_sequence", new ConfigOptionEnum(PrintSequence::ByObject)); + CHECK_THAT(min_object_distance(c), Catch::Matchers::WithinAbs(0., 1e-9)); + } + + SECTION("no print sequence") { + DynamicPrintConfig c; + c.set_key_value("printer_technology", new ConfigOptionEnum(ptFFF)); + c.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(12.)); + CHECK_THAT(min_object_distance(c), Catch::Matchers::WithinAbs(0., 1e-9)); + } + + SECTION("nothing at all") { + CHECK_THAT(min_object_distance(DynamicPrintConfig{}), Catch::Matchers::WithinAbs(0., 1e-9)); + } + + SECTION("an unset printer technology is treated as FFF") { + DynamicPrintConfig c; + c.set_key_value("print_sequence", new ConfigOptionEnum(PrintSequence::ByObject)); + c.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(12.)); + CHECK_THAT(min_object_distance(c), Catch::Matchers::WithinAbs(12., 1e-9)); + } +} From 75f5fe22e8913b686a19849332921341a70ae00c Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Fri, 11 Sep 2026 19:24:37 -0500 Subject: [PATCH 107/162] build: clear 12 platform-gated warnings the x64 census could not see (#15633) --- src/libslic3r/PresetBundle.cpp | 12 ++++++------ src/libslic3r/Thread.cpp | 9 +++++++-- src/slic3r/GUI/InstanceCheck.hpp | 1 - src/slic3r/GUI/SelectMachinePop.hpp | 2 ++ src/slic3r/GUI/TextureImportDialog.cpp | 2 ++ src/slic3r/Utils/Serial.cpp | 2 ++ 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index c90ebc756b..4b8fb03a02 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4981,7 +4981,7 @@ static void apply_mixed_config_relocations(DynamicPrintConfig& case coBools: { auto* live = static_cast(opt); const auto* frozen = static_cast(snapshot.get()); - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const unsigned char cell = from < frozen->values.size() ? frozen->values[from] : 0; if (live->values.size() <= to) live->values.resize(to + 1, 0); @@ -4992,7 +4992,7 @@ static void apply_mixed_config_relocations(DynamicPrintConfig& case coStrings: { auto* live = static_cast(opt); const auto* frozen = static_cast(snapshot.get()); - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); if (live->values.size() <= to) live->values.resize(to + 1, std::string{}); @@ -5028,7 +5028,7 @@ static void apply_receiver_mix_relocations(DynamicPrintConfig& auto* live = static_cast(opt); std::unique_ptr snapshot(opt->clone()); const auto* frozen = static_cast(snapshot.get()); - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const bool cell = from < frozen->values.size() ? frozen->values[from] : false; if (live->values.size() <= to) live->values.resize(to + 1, false); @@ -5044,7 +5044,7 @@ static void apply_receiver_mix_relocations(DynamicPrintConfig& auto* live = static_cast(opt); std::unique_ptr snapshot(opt->clone()); const auto* frozen = static_cast(snapshot.get()); - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const std::string cell = from < frozen->values.size() ? frozen->values[from] : std::string(); if (live->values.size() <= to) live->values.resize(to + 1, std::string{}); @@ -5060,7 +5060,7 @@ static void apply_receiver_mix_relocations(DynamicPrintConfig& auto* live = static_cast(opt); std::unique_ptr snapshot(opt->clone()); const auto* frozen = static_cast(snapshot.get()); - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const int cell = from < frozen->values.size() ? frozen->values[from] : 0; if (live->values.size() <= to) live->values.resize(to + 1, 0); @@ -5087,7 +5087,7 @@ static void apply_receiver_mix_relocations(DynamicPrintConfig& move_ints("filament_volume_map"); { const std::vector> frozen = ams_multi_color_filment; - for (const auto [from, to] : moves) { + for (const auto& [from, to] : moves) { const std::vector cell = from < frozen.size() ? frozen[from] : std::vector(); if (ams_multi_color_filment.size() <= to) ams_multi_color_filment.resize(to + 1, std::vector{}); diff --git a/src/libslic3r/Thread.cpp b/src/libslic3r/Thread.cpp index 3030b6d194..edd7c2a3d0 100644 --- a/src/libslic3r/Thread.cpp +++ b/src/libslic3r/Thread.cpp @@ -30,6 +30,11 @@ static HMODULE s_hKernel32 = nullptr; static SetThreadDescriptionType s_fnSetThreadDescription = nullptr; static GetThreadDescriptionType s_fnGetThreadDescription = nullptr; +// Convert the FARPROC from GetProcAddress to Fn through a generic function pointer. +template static Fn load_proc(HMODULE module, const char* name) { + return reinterpret_cast(reinterpret_cast(::GetProcAddress(module, name))); +} + static bool WindowsGetSetThreadNameAPIInitialize() { if (! s_SetGetThreadDescriptionInitialized) { @@ -37,8 +42,8 @@ static bool WindowsGetSetThreadNameAPIInitialize() // to initialize s_hKernel32 = LoadLibraryW(L"Kernel32.dll"); if (s_hKernel32) { - s_fnSetThreadDescription = (SetThreadDescriptionType)::GetProcAddress(s_hKernel32, "SetThreadDescription"); - s_fnGetThreadDescription = (GetThreadDescriptionType)::GetProcAddress(s_hKernel32, "GetThreadDescription"); + s_fnSetThreadDescription = load_proc(s_hKernel32, "SetThreadDescription"); + s_fnGetThreadDescription = load_proc(s_hKernel32, "GetThreadDescription"); } s_SetGetThreadDescriptionInitialized = true; } diff --git a/src/slic3r/GUI/InstanceCheck.hpp b/src/slic3r/GUI/InstanceCheck.hpp index 5f26f1e48f..9bfb3e2500 100644 --- a/src/slic3r/GUI/InstanceCheck.hpp +++ b/src/slic3r/GUI/InstanceCheck.hpp @@ -87,7 +87,6 @@ private: std::condition_variable m_thread_stop_condition; mutable std::mutex m_thread_stop_mutex; bool m_stop{ false }; - bool m_start{ true }; // background thread method void listen(); diff --git a/src/slic3r/GUI/SelectMachinePop.hpp b/src/slic3r/GUI/SelectMachinePop.hpp index 76d38be522..e34a23708c 100644 --- a/src/slic3r/GUI/SelectMachinePop.hpp +++ b/src/slic3r/GUI/SelectMachinePop.hpp @@ -183,7 +183,9 @@ private: HyperLink* m_hyperlink{nullptr}; // ORCA wxBoxSizer * m_sizer_my_devices{nullptr}; wxBoxSizer * m_sizer_other_devices{nullptr}; +#if defined(__WINDOWS__) wxBoxSizer * m_sizer_search_bar{nullptr}; +#endif wxSearchCtrl* m_search_bar{nullptr}; wxScrolledWindow * m_scrolledWindow{nullptr}; wxTimer * m_refresh_timer{nullptr}; diff --git a/src/slic3r/GUI/TextureImportDialog.cpp b/src/slic3r/GUI/TextureImportDialog.cpp index 1bf52d792c..2e5c1145e1 100644 --- a/src/slic3r/GUI/TextureImportDialog.cpp +++ b/src/slic3r/GUI/TextureImportDialog.cpp @@ -134,7 +134,9 @@ public: } private: +#if defined(__WXMSW__) || defined(__APPLE__) int m_suspended_count = 0; +#endif }; static bool needs_filament_swatch_border(const wxColour& colour) diff --git a/src/slic3r/Utils/Serial.cpp b/src/slic3r/Utils/Serial.cpp index 4db1acc6b6..f8c03ceb26 100644 --- a/src/slic3r/Utils/Serial.cpp +++ b/src/slic3r/Utils/Serial.cpp @@ -331,7 +331,9 @@ void Serial::set_baud_rate(unsigned baud_rate) speed_t c_ispeed; speed_t c_ospeed; }; +#ifndef BOTHER #define BOTHER CBAUDEX +#endif termios2 ios; handle_errno(::ioctl(handle, TCGETS2, &ios)); From 081bb9a7035795e78d0381f8a67cff898b3b9c33 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Fri, 11 Sep 2026 19:27:30 -0500 Subject: [PATCH 108/162] build: clear 41 -Woverloaded-virtual warnings, the last of the category (#15637) Co-authored-by: Raoul Rubien --- src/libslic3r/Config.hpp | 12 ++++++++++++ src/slic3r/GUI/Field.cpp | 10 +++++----- src/slic3r/GUI/Field.hpp | 2 +- src/slic3r/GUI/GUI_ObjectTable.cpp | 4 ++-- src/slic3r/GUI/GUI_ObjectTableSettings.cpp | 2 +- src/slic3r/GUI/GUI_ObjectTableSettings.hpp | 2 +- 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 9e4344820d..ea85cda1e7 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -1006,6 +1006,7 @@ public: int getInt() const override { return this->value; } void setInt(int val) override { this->value = val; } ConfigOption* clone() const override { return new ConfigOptionInt(*this); } + using ConfigOptionSingle::operator==; bool operator==(const ConfigOptionInt &rhs) const throw() { return this->value == rhs.value; } std::string serialize() const override @@ -1048,6 +1049,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionIntsTempl(*this); } ConfigOptionIntsTempl& operator= (const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionVector::operator==; bool operator==(const ConfigOptionIntsTempl &rhs) const throw() { return this->values == rhs.values; } bool operator< (const ConfigOptionIntsTempl &rhs) const throw() { return this->values < rhs.values; } // Could a special "nil" value be stored inside the vector, indicating undefined value? @@ -1137,6 +1139,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionString(*this); } ConfigOptionString& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionSingle::operator==; bool operator==(const ConfigOptionString &rhs) const throw() { return this->value == rhs.value; } bool operator< (const ConfigOptionString &rhs) const throw() { return this->value < rhs.value; } bool empty() const { return this->value.empty(); } @@ -1171,6 +1174,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionStrings(*this); } ConfigOptionStrings& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionVector::operator==; bool operator==(const ConfigOptionStrings &rhs) const throw() { return this->values == rhs.values; } bool operator< (const ConfigOptionStrings &rhs) const throw() { return this->values < rhs.values; } bool is_nil(size_t) const override { return false; } @@ -1215,6 +1219,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionPercent(*this); } ConfigOptionPercent& operator= (const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionFloat::operator==; bool operator==(const ConfigOptionPercent &rhs) const throw() { return this->value == rhs.value; } bool operator< (const ConfigOptionPercent &rhs) const throw() { return this->value < rhs.value; } @@ -1257,6 +1262,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionPercentsTempl(*this); } ConfigOptionPercentsTempl& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionFloatsTempl::operator==; bool operator==(const ConfigOptionPercentsTempl &rhs) const throw() { return ConfigOptionFloatsTempl::vectors_equal(this->values, rhs.values); } bool operator< (const ConfigOptionPercentsTempl &rhs) const throw() { return ConfigOptionFloatsTempl::vectors_lower(this->values, rhs.values); } @@ -1502,6 +1508,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionPoint(*this); } ConfigOptionPoint& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionSingle::operator==; bool operator==(const ConfigOptionPoint &rhs) const throw() { return this->value == rhs.value; } bool operator< (const ConfigOptionPoint &rhs) const throw() { return this->value < rhs.value; } @@ -1539,6 +1546,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionPoints(*this); } ConfigOptionPoints& operator= (const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionVector::operator==; bool operator==(const ConfigOptionPoints &rhs) const throw() { return this->values == rhs.values; } bool operator< (const ConfigOptionPoints &rhs) const throw() { return std::lexicographical_compare(this->values.begin(), this->values.end(), rhs.values.begin(), rhs.values.end(), [](const auto &l, const auto &r){ return l < r; }); } @@ -1617,6 +1625,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionPoint3(*this); } ConfigOptionPoint3& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionSingle::operator==; bool operator==(const ConfigOptionPoint3 &rhs) const throw() { return this->value == rhs.value; } bool operator< (const ConfigOptionPoint3 &rhs) const throw() { return this->value.x() < rhs.value.x() || (this->value.x() == rhs.value.x() && (this->value.y() < rhs.value.y() || (this->value.y() == rhs.value.y() && this->value.z() < rhs.value.z()))); } @@ -1860,6 +1869,7 @@ public: bool getBool() const override { return this->value; } ConfigOption* clone() const override { return new ConfigOptionBool(*this); } ConfigOptionBool& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionSingle::operator==; bool operator==(const ConfigOptionBool &rhs) const throw() { return this->value == rhs.value; } bool operator< (const ConfigOptionBool &rhs) const throw() { return int(this->value) < int(rhs.value); } @@ -1911,6 +1921,7 @@ public: ConfigOptionType type() const override { return static_type(); } ConfigOption* clone() const override { return new ConfigOptionBoolsTempl(*this); } ConfigOptionBoolsTempl& operator=(const ConfigOption *opt) { this->set(opt); return *this; } + using ConfigOptionVector::operator==; bool operator==(const ConfigOptionBoolsTempl &rhs) const throw() { return this->values == rhs.values; } bool operator< (const ConfigOptionBoolsTempl &rhs) const throw() { return this->values < rhs.values; } // Could a special "nil" value be stored inside the vector, indicating undefined value? @@ -2163,6 +2174,7 @@ public: ConfigOptionEnumsGenericTempl& operator= (const ConfigOption* opt) { this->set(opt); return *this; } bool operator< (const ConfigOptionInts& rhs) const throw() { return this->values < rhs.values; } + using ConfigOptionInts::operator==; bool operator==(const ConfigOptionInts& rhs) const { if (rhs.type() != this->type()) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index b8cb698ff9..43ece4e10b 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -2805,11 +2805,11 @@ void PointCtrl::BUILD() //temp->Add(static_text_y, 0, wxALIGN_CENTER_VERTICAL, 0); temp->Add(y_input); - x_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_value(x_textctrl); }), x_textctrl->GetId()); - y_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_value(y_textctrl); }), y_textctrl->GetId()); + x_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_input_value(x_textctrl); }), x_textctrl->GetId()); + y_textctrl->Bind(wxEVT_TEXT_ENTER, ([this](wxCommandEvent e) { propagate_input_value(y_textctrl); }), y_textctrl->GetId()); - x_textctrl->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); propagate_value(x_textctrl); }), x_textctrl->GetId()); - y_textctrl->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); propagate_value(y_textctrl); }), y_textctrl->GetId()); + x_textctrl->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); propagate_input_value(x_textctrl); }), x_textctrl->GetId()); + y_textctrl->Bind(wxEVT_KILL_FOCUS, ([this](wxEvent& e) { e.Skip(); propagate_input_value(y_textctrl); }), y_textctrl->GetId()); // // recast as a wxWindow to fit the calling convention window = dynamic_cast(x_input); @@ -2858,7 +2858,7 @@ bool PointCtrl::value_was_changed(wxTextCtrl* win) return boost::any_cast(m_value) != boost::any_cast(val); } -void PointCtrl::propagate_value(wxTextCtrl* win) +void PointCtrl::propagate_input_value(wxTextCtrl* win) { if (win->GetValue().empty()) on_kill_focus(); diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index 6219921202..3f55bf5c5a 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -650,7 +650,7 @@ public: void BUILD() override; bool value_was_changed(wxTextCtrl* win); // Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER - void propagate_value(wxTextCtrl* win); + void propagate_input_value(wxTextCtrl* win); void set_value(const Vec2d& value, bool change_event = false); void set_value(const boost::any& value, bool change_event = false) override; boost::any& get_value() override; diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 35508c6113..a496eca6d3 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -2578,7 +2578,7 @@ void ObjectGridTable::OnSelectCell(int row, int col) return; m_panel->m_side_window->Freeze(); if (row == 0 || col == col_filaments) { - m_panel->m_object_settings->UpdateAndShow(row, false, false, false, nullptr, nullptr, std::string()); + m_panel->m_object_settings->UpdateAndShowRow(row, false, false, false, nullptr, nullptr, std::string()); } else { ObjectGridRow* grid_row = m_grid_data[row - 1]; @@ -2588,7 +2588,7 @@ void ObjectGridTable::OnSelectCell(int row, int col) //m_panel->m_object_settings->get_og()->set_name(GUI::from_u8(grid_row->name.value)); //m_panel->m_page_text->SetLabel(GUI::from_u8(grid_row->name.value)); - m_panel->m_object_settings->UpdateAndShow(row, true, is_object, false, object, grid_row->config, grid_col->category); + m_panel->m_object_settings->UpdateAndShowRow(row, true, is_object, false, object, grid_row->config, grid_col->category); std::vector object_volume_ids; ObjectVolumeID object_volume_id; diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 2290018419..4cd272840f 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -463,7 +463,7 @@ void ObjectTableSettings::update_config_values(bool is_object, ModelObject* obje m_table->reload_cell_data(m_current_row, category); } -void ObjectTableSettings::UpdateAndShow(int row, const bool show, bool is_object, bool is_multiple_selection, ModelObject* object, ModelConfig* config, const std::string& category) +void ObjectTableSettings::UpdateAndShowRow(int row, const bool show, bool is_object, bool is_multiple_selection, ModelObject* object, ModelConfig* config, const std::string& category) { m_current_row = row; m_current_category = category; diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp index 39e7e514e2..24e3d427a9 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.hpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.hpp @@ -71,7 +71,7 @@ public: //return visible count int update_extra_column_visible_status(ConfigOptionsGroup* option_group, const std::vector& option_keys, ModelConfig* config); void update_config_values(bool is_object, ModelObject* object, ModelConfig* config, const std::string& category, const std::string& changed_opt_key = ""); - void UpdateAndShow(int row, const bool show, bool is_object, bool is_multiple_selection, ModelObject* object, ModelConfig* config, const std::string& category); + void UpdateAndShowRow(int row, const bool show, bool is_object, bool is_multiple_selection, ModelObject* object, ModelConfig* config, const std::string& category); void ValueChanged(int row, bool is_object, ModelObject* object, ModelConfig* config, const std::string& category, const std::string& key); void resetAllValues(int row, bool is_object, ModelObject* object, ModelConfig* config, const std::string& category); void msw_rescale(); From e998ad968aed65ec7e51897ccc15ad84a15978f2 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Fri, 11 Sep 2026 20:43:48 -0500 Subject: [PATCH 109/162] ci: cache the Flatpak job's compiled objects with ccache (#15650) --- .github/workflows/build_all.yml | 88 +++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 0ab9cfe41d..570d3203ed 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -283,21 +283,41 @@ jobs: id: fp_cache_key run: echo "key=flatpak-builder-${{ matrix.variant.arch }}-${{ hashFiles('deps/**', 'scripts/flatpak/com.orcaslicer.OrcaSlicer.yml', 'scripts/flatpak/make_deps_tar.sh') }}" >> "$GITHUB_OUTPUT" shell: bash - # Manage flatpak-builder cache externally so PRs restore but never upload + # Manage flatpak-builder cache externally so PRs restore but never upload. + # The compiler cache under it is keyed per run below, so it is left out. - name: Restore flatpak-builder cache if: github.event_name == 'pull_request' uses: actions/cache/restore@v6 with: - path: .flatpak-builder + path: | + .flatpak-builder/* + !.flatpak-builder/ccache key: ${{ steps.fp_cache_key.outputs.key }} restore-keys: flatpak-builder-${{ matrix.variant.arch }}- - name: Save/restore flatpak-builder cache if: github.event_name != 'pull_request' uses: actions/cache@v6 with: - path: .flatpak-builder + path: | + .flatpak-builder/* + !.flatpak-builder/ccache key: ${{ steps.fp_cache_key.outputs.key }} restore-keys: flatpak-builder-${{ matrix.variant.arch }}- + # Compiler cache for the OrcaSlicer module, as in build_orca.yml. Pull + # requests only restore it; every other run (main, release branches, the + # nightly, a dispatch) saves it. orca_deps stays on the state cache above. + - name: Name the compiler cache leg + run: | + leg="Flatpak-${{ matrix.variant.arch }}" + echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV" + echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV" + shell: bash + - name: Restore compiler cache + uses: actions/cache/restore@v6 + with: + path: .flatpak-builder/ccache + key: ${{ env.CCACHE_ENTRY }} + restore-keys: ccache-${{ env.CCACHE_LEG }}- - name: Disable debug info for faster CI builds run: | sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \ @@ -308,6 +328,33 @@ jobs: sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \ scripts/flatpak/com.orcaslicer.OrcaSlicer.yml shell: bash + # flatpak-builder's --ccache only wraps cc and gcc, and the manifest builds + # with clang, so CMake's launcher runs ccache instead; --ccache is still what + # mounts the cache directory into the sandbox. The settings go into that + # directory's own config file, which the sandbox reads too. + - name: Enable compiler cache + run: | + printf ' %s\n' \ + 'CMAKE_C_COMPILER_LAUNCHER: ccache' \ + 'CMAKE_CXX_COMPILER_LAUNCHER: ccache' > "$RUNNER_TEMP/ccache-env.yml" + sed -i "/^ git_commit_hash: /r $RUNNER_TEMP/ccache-env.yml" \ + scripts/flatpak/com.orcaslicer.OrcaSlicer.yml + grep -q '^ CMAKE_CXX_COMPILER_LAUNCHER: ccache$' scripts/flatpak/com.orcaslicer.OrcaSlicer.yml + mkdir -p .flatpak-builder/ccache + export CCACHE_DIR=$PWD/.flatpak-builder/ccache + ccache --set-config=max_size=3G + # The compiler is reinstalled every run, so its mtime means nothing. + ccache --set-config=compiler_check=content + # Headers a fresh checkout has just written, the few files that use + # __DATE__ or __TIME__, and the precompiled header, whose macros ccache + # cannot see. + ccache --set-config=sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime + # Hash the includes the compiler reports instead of preprocessing every + # miss before compiling it. + ccache --set-config=depend_mode=true + # The restored directory carries the previous run's counters. + ccache -z + shell: bash - name: Check the manifest keeps orca_deps cacheable run: ./scripts/flatpak/check_manifest_cacheable.sh shell: bash @@ -318,9 +365,42 @@ jobs: with: bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak manifest-path: scripts/flatpak/com.orcaslicer.OrcaSlicer.yml - cache: false + # cache only turns on flatpak-builder --ccache; the caching itself is above. + cache: true + restore-cache: false + save-cache: false arch: ${{ matrix.variant.arch }} upload-artifact: false + - name: Compiler cache statistics + if: always() + run: | + export CCACHE_DIR=$PWD/.flatpak-builder/ccache + ccache -s -v || ccache -s + shell: bash + # Save the new entry first, then drop the older ones for this leg on this + # ref, so a failed save leaves the previous entry in place. + - name: Save compiler cache + id: ccache_save + if: github.event_name != 'pull_request' + uses: actions/cache/save@v6 + with: + path: .flatpak-builder/ccache + key: ${{ env.CCACHE_ENTRY }} + - name: Drop older compiler cache entries + if: ${{ steps.ccache_save.outcome == 'success' }} + # The container has no gh, so this is the list and delete over the REST API. + continue-on-error: true + env: + GH_TOKEN: ${{ github.token }} + run: | + api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/caches" + curl -sSf -H "Authorization: Bearer $GH_TOKEN" \ + "$api?ref=$GITHUB_REF&key=ccache-$CCACHE_LEG-&per_page=100" \ + | jq -r --arg keep "$CCACHE_ENTRY" '.actions_caches[] | select(.key != $keep) | .id' \ + | while read -r id; do + curl -sSf -X DELETE -H "Authorization: Bearer $GH_TOKEN" "$api/$id" + done + shell: bash - name: Upload artifacts Flatpak uses: actions/upload-artifact@v7 with: From ccd608678732c801e76cc211d3084ed239989462 Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Sat, 12 Sep 2026 05:17:10 +0200 Subject: [PATCH 110/162] CLI: evaluate compatible_printers_condition in the compat checks (#15449) * CLI: evaluate compatible_printers_condition in the compat checks Slicing from the CLI with --load-settings exits with CLI_PROCESS_NOT_COMPATIBLE (-17), "The selected printer is not compatible with the process preset in the 3mf.", for process/printer pairs the GUI accepts. Reproducible with stock, unmodified Prusa system profiles: orca-slicer --datadir \ --load-settings "/system/Prusa/process/0.20mm SPEED @CORE One HF 0.4.json;/system/Prusa/machine/Prusa CORE One HF 0.4 nozzle.json" \ --load-filaments "/system/Prusa/filament/Prusament PETG @CORE One HF 0.4.json" \ --slice 0 --outputdir /tmp/out model.stl The four compat checks in CLI::run did a literal name match against the `compatible_printers` list only: for (index ...) if (new_print_compatible_printers[index] == new_printer_system_name) process_compatible = true; Process profiles that declare compatibility through `compatible_printers_condition` and leave `compatible_printers` empty are therefore always reported incompatible -- the condition is never consulted. For 0.20mm SPEED @CORE One HF 0.4 that condition is: printer_notes=~/.*PRINTER_MODEL_COREONE[^_a-zA-Z0-9].*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*HF_NOZZLE.*/ The GUI does not have this bug: is_compatible_with_printer() in Preset.cpp treats an empty list as "no explicit constraint" and evaluates the condition in that case. Fix: replace the four loops with a check_compat lambda that calls is_compatible_with_printer() -- the same helper the GUI uses -- wrapping the already-loaded DynamicPrintConfigs in lightweight Preset / PresetWithVendorProfile shells. The 3MF-embedded process/printer full configs are kept in current_process_full_config / current_printer_full_config so the condition can be evaluated for the reprocess paths too; those fall back to the previous literal match when the full config was not preserved. Behaviour is unchanged where an explicit compatible_printers list exists: is_compatible_with_printer() performs the same name match, and returns true when both list and condition are empty, matching the existing "old 3mf, no compatible printers, set to compatible" path. Split out of #13731 (section 1) as a standalone, single-purpose change. Orthogonal to the inherits-chain resolution work in #14718 / #15302 / #15438; those decide which values a preset resolves to, this decides whether the resulting pair is considered compatible. * CLI: translate the 3MF's renamed compatibility keys before the compat check The 3MF fallback fed the project config to is_compatible_with_printer() as-is, but a project config does not carry compatible_printers or compatible_printers_condition. PresetBundle::construct_full_config() erases both and re-emits them as print_compatible_printers and compatible_machine_expression_group; they are renamed back only on the PresetBundle load path, which the CLI does not take. The check therefore saw no list and no condition, read that as 'no constraint' and accepted every printer. That is not just a wrong accept. An early true skips the !process_compatible block that sets machine_switch, so the new printer is never appended to print_compatible_printers and the exported 3MF stays marked compatible only with the printer it came from -- which is exactly what that block exists to prevent. Translate the two keys back before the check. Index 0 of the expression group is the print preset; the group is filled print, filaments, printer. Also note in the comment that profiles/BBL/{process,machine}_full/ are gitignored and generated by nothing in-tree, so current_*_full_config is always empty and this fallback is the only live path -- not the rare non-BBL case the original comment implied. Reported with measurements by HanifKoh in review of #15449. Preset: add a config-level is_compatible_with_printer() overload The CLI holds resolved DynamicPrintConfigs, not Presets, so it wrapped them in throwaway Preset shells at the call site. Moving that into Preset.cpp puts the compatibility policy -- including the documented fail-open on a malformed compatible_printers_condition -- in one place for the GUI and the CLI, rather than leaving a second copy of the plumbing in OrcaSlicer.cpp to drift. Purely additive: neither existing overload changes, so no GUI behaviour moves. Requested by HanifKoh in review of #15449. (cherry picked from commit 14ca1972ef4d3c7d90935d159423013a40a6bd70) * CLI: never overwrite a real compat key with an empty renamed one 7e7f0e3 translated compatible_machine_expression_group[0] into compatible_printers_condition whenever the group vector was non-empty. A project the CLI exported itself carries the real compatible_printers_condition AND an all-empty group, ["", "", ""], so the valid condition was overwritten with "", the check saw no constraint, and every printer was accepted. That fixed GUI-shaped projects and broke CLI-shaped ones. Bisected across six builds re-slicing one CLI-exported CORE One project with an MK4S: every build before 7e7f0e3 gives 'compatible 0' and takes the machine-switch path; with it, 'compatible 1' and no switch. The raw keys now win whenever they carry something; the renamed ones are only a fallback, and an empty value is never written over a real one. Same for the list: print_compatible_printers is used only when compatible_printers is absent or empty and it itself is not. Found by a peer session re-testing the installed build. --- src/OrcaSlicer.cpp | 97 ++++++++++++++++++++++++++++++---------- src/libslic3r/Preset.cpp | 14 ++++++ src/libslic3r/Preset.hpp | 5 +++ 3 files changed, 93 insertions(+), 23 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 7c881047e7..bebd1aad5c 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -53,6 +53,7 @@ using namespace nlohmann; #include "libslic3r/libslic3r.h" #include "libslic3r/Config.hpp" +#include "libslic3r/Preset.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/GCode.hpp" #include "libslic3r/Model.hpp" @@ -1466,6 +1467,10 @@ int CLI::run(int argc, char **argv) std::vector upward_compatible_printers, new_print_compatible_printers, current_print_compatible_printers, current_different_settings; std::vector current_filaments_name, current_filaments_system_name, current_inherits_group, current_extruder_variants, new_extruder_variants, current_print_extruder_variants, new_printer_extruder_variants; DynamicPrintConfig load_process_config, load_machine_config; + //ORCA: full configs of the "current" (3MF-embedded) process/printer presets, kept so that + // compatible_printers_condition can be evaluated for them below. Previously only the + // literal compatible_printers list was extracted. + DynamicPrintConfig current_process_full_config, current_printer_full_config; bool new_process_config_is_system = true, new_printer_config_is_system = true; std::string pipe_name, makerlab_name, makerlab_version, different_process_setting; const std::vector &metadata_name = m_config.option("metadata_name", true)->values; @@ -2680,6 +2685,8 @@ int CLI::run(int argc, char **argv) flush_and_exit(ret); } upward_compatible_printers = config.option("upward_compatible_machine", true)->values; + //ORCA: keep the full config so compatible_printers_condition can be evaluated against it below + current_printer_full_config = std::move(config); } } } @@ -2702,6 +2709,8 @@ int CLI::run(int argc, char **argv) flush_and_exit(ret); } current_print_compatible_printers = config.option("compatible_printers", true)->values; + //ORCA: keep the full config so compatible_printers_condition can be evaluated against it below + current_process_full_config = std::move(config); } } } @@ -2720,46 +2729,88 @@ int CLI::run(int argc, char **argv) for (int index = 0; index < upward_compatible_printers.size(); index++) { BOOST_LOG_TRIVIAL(info) << boost::format("index %1%, upward_compatible_printers %2%")%index %upward_compatible_printers[index]; } + //ORCA: Replace the four manual equality-loop checks below with is_compatible_with_printer(), the + // same helper the GUI uses, which also evaluates compatible_printers_condition. Process + // profiles that declare compatibility via condition only -- leaving compatible_printers + // empty -- were always reported incompatible by the literal-name match, so a CLI slice with + // such a preset exited with CLI_PROCESS_NOT_COMPATIBLE (-17) even though the GUI accepts the + // same pair. Behaviour is unchanged where an explicit list exists: is_compatible_with_printer + // does the same name match, and returns true when both list and condition are empty (which + // matches the "old 3mf, no compatible printers" path below). + auto check_compat = [](const DynamicPrintConfig &process_cfg, + const DynamicPrintConfig &printer_cfg, + const std::string &printer_name) -> bool { + return is_compatible_with_printer(process_cfg, Preset::TYPE_PRINT, printer_cfg, printer_name); + }; + + //ORCA: a 3MF's project config does not carry compatible_printers / compatible_printers_condition. + // PresetBundle::construct_full_config() erases both and re-emits them as + // print_compatible_printers and compatible_machine_expression_group; they are renamed back + // only on the PresetBundle load path, which the CLI does not take. Feeding the project config + // to the check as-is therefore presents no list and no condition, and + // is_compatible_with_printer() reads that as "no constraint" and accepts every printer. + // Translate the two keys back. Index 0 of the expression group is the print preset -- the + // group is filled print, filaments, printer (PresetBundle.cpp). + // The raw keys win whenever they carry something. A project the CLI exported itself has the + // real compatible_printers_condition AND an all-empty compatible_machine_expression_group, + // so copying the group's first entry unconditionally would overwrite a valid condition with + // "" and accept every printer. The renamed keys are only a fallback, and an empty value is + // never written over a real one. + auto cli_process_compat_config = [](const DynamicPrintConfig &project_cfg) -> DynamicPrintConfig { + DynamicPrintConfig cfg = project_cfg; + const auto *raw_list = project_cfg.option("compatible_printers"); + const auto *list = project_cfg.option("print_compatible_printers"); + if ((raw_list == nullptr || raw_list->values.empty()) && list != nullptr && !list->values.empty()) + cfg.set_key_value("compatible_printers", new ConfigOptionStrings(list->values)); + const auto *raw_cond = project_cfg.option("compatible_printers_condition"); + const auto *group = project_cfg.option("compatible_machine_expression_group"); + if ((raw_cond == nullptr || raw_cond->value.empty()) && group != nullptr && !group->values.empty() && + !group->values.front().empty()) + cfg.set_key_value("compatible_printers_condition", new ConfigOptionString(group->values.front())); + return cfg; + }; if (!new_printer_name.empty()) { if (!new_process_name.empty()) { - for (int index = 0; index < new_print_compatible_printers.size(); index++) { - if (new_print_compatible_printers[index] == new_printer_system_name) { - process_compatible = true; - break; - } - } + //new process + new printer: both configs came from --load-settings + process_compatible = check_compat(load_process_config, load_machine_config, new_printer_system_name); BOOST_LOG_TRIVIAL(info) << boost::format("new printer %1%, inherited from %2%, new process %3%, inherited from %4% ,compatible %5%") %new_printer_name %new_printer_system_name %new_process_name %new_process_system_name %process_compatible; } else { - for (int index = 0; index < current_print_compatible_printers.size(); index++) { - if (current_print_compatible_printers[index] == new_printer_system_name) { - process_compatible = true; - break; - } + //3MF-embedded process vs new printer. current_process_full_config is only populated from + //profiles/BBL/process_full/, so for every other vendor fall back to the 3MF's own project + //config in m_print_config, with its renamed compatibility keys translated back (see + //cli_process_compat_config above). Without this a 3MF built from a condition-only process + //is rejected when re-sliced with the very printer it was made for. + { + //ORCA: profiles/BBL/{process,machine}_full/ are gitignored and not generated in-tree, + // so current_*_full_config is always empty and this fallback is the only live path. + const DynamicPrintConfig process_cfg = current_process_full_config.empty() + ? cli_process_compat_config(m_print_config) + : current_process_full_config; + process_compatible = check_compat(process_cfg, load_machine_config, new_printer_system_name); } BOOST_LOG_TRIVIAL(info) << boost::format("new printer %1%, inherited from %2%, old process %3%, inherited from %4% ,compatible %5%") %new_printer_name %new_printer_system_name %current_process_name %current_process_system_name %process_compatible; } } else if (!new_process_name.empty()) { - for (int index = 0; index < new_print_compatible_printers.size(); index++) { - if (new_print_compatible_printers[index] == current_printer_system_name) { - process_compatible = true; - break; - } + //new process vs 3MF-embedded printer. As above, current_printer_full_config only resolves for + //BBL profiles; otherwise evaluate against the 3MF's own project config in m_print_config, which + //holds the embedded printer's printer_notes / nozzle_diameter. + { + const DynamicPrintConfig &printer_cfg = current_printer_full_config.empty() ? m_print_config : current_printer_full_config; + process_compatible = check_compat(load_process_config, printer_cfg, current_printer_system_name); } BOOST_LOG_TRIVIAL(info) << boost::format("old printer %1%, inherited from %2%, new process %3%, inherited from %4% ,compatible %5%") %current_printer_name %current_printer_system_name %new_process_name %new_process_system_name %process_compatible; } else { - //check the compatible of old printer&&process - for (int index = 0; index < current_print_compatible_printers.size(); index++) { - if (current_print_compatible_printers[index] == current_printer_system_name) { - process_compatible = true; - break; - } - } + //both sides 3MF-embedded (pure reprocess) + if (!current_process_full_config.empty() && !current_printer_full_config.empty()) + process_compatible = check_compat(current_process_full_config, current_printer_full_config, current_printer_system_name); + else + process_compatible = std::find(current_print_compatible_printers.begin(), current_print_compatible_printers.end(), current_printer_system_name) != current_print_compatible_printers.end(); if (!process_compatible && current_print_compatible_printers.empty()) { BOOST_LOG_TRIVIAL(info) << boost::format("old 3mf, no compatible printers, set to compatible"); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 3cf85e8054..e974ffd7f8 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -867,6 +867,20 @@ bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const Pre return is_compatible_with_printer(preset, active_printer, &config); } +// ORCA: see the header. The CLI resolves --load-settings into bare DynamicPrintConfigs and has no +// Preset objects to hand; without this it would have to reimplement the policy or build the shells +// at every call site. +bool is_compatible_with_printer(const DynamicPrintConfig &preset_config, Preset::Type preset_type, + const DynamicPrintConfig &printer_config, const std::string &printer_name) +{ + Preset preset(preset_type, std::string("__compat_check")); + preset.config = preset_config; + Preset printer(Preset::TYPE_PRINTER, printer_name); + printer.config = printer_config; + return is_compatible_with_printer(PresetWithVendorProfile(preset, nullptr), + PresetWithVendorProfile(printer, nullptr)); +} + void Preset::set_visible_from_appconfig(const AppConfig &app_config) { //BBS: add config related log diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 2653628ead..73052678e8 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -459,6 +459,11 @@ protected: bool is_compatible_with_print (const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_print, const PresetWithVendorProfile &active_printer); bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer, const DynamicPrintConfig *extra_config); bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer); +// ORCA: same check for callers that hold raw configs rather than Presets (the CLI). Wraps them in +// throwaway Preset shells and delegates, so the compatibility policy -- including the fail-open on a +// malformed compatible_printers_condition -- lives in one place for the GUI and the CLI alike. +bool is_compatible_with_printer(const DynamicPrintConfig &preset_config, Preset::Type preset_type, + const DynamicPrintConfig &printer_config, const std::string &printer_name); // Where a preset is being loaded from. `Auto` lets load_presets() infer from the directory path. struct PresetOrigin { From 0888e331b51bf17c23f38df3d1361c12b89a1edb Mon Sep 17 00:00:00 2001 From: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com> Date: Sat, 12 Sep 2026 15:59:13 +0200 Subject: [PATCH 111/162] fix: validate float-or-percent input ranges (#15392) --- localization/i18n/OrcaSlicer.pot | 4 +- localization/i18n/ca/OrcaSlicer_ca.po | 8 +- localization/i18n/cs/OrcaSlicer_cs.po | 8 +- localization/i18n/de/OrcaSlicer_de.po | 8 +- localization/i18n/en/OrcaSlicer_en.po | 4 +- localization/i18n/es/OrcaSlicer_es.po | 8 +- localization/i18n/eu/OrcaSlicer_eu.po | 8 +- localization/i18n/fr/OrcaSlicer_fr.po | 8 +- localization/i18n/hu/OrcaSlicer_hu.po | 8 +- localization/i18n/it/OrcaSlicer_it.po | 8 +- localization/i18n/ja/OrcaSlicer_ja.po | 7 +- localization/i18n/ko/OrcaSlicer_ko.po | 8 +- localization/i18n/lt/OrcaSlicer_lt.po | 8 +- localization/i18n/nl/OrcaSlicer_nl.po | 8 +- localization/i18n/pl/OrcaSlicer_pl.po | 17 +-- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 8 +- localization/i18n/ru/OrcaSlicer_ru.po | 8 +- localization/i18n/sv/OrcaSlicer_sv.po | 8 +- localization/i18n/th/OrcaSlicer_th.po | 8 +- localization/i18n/tr/OrcaSlicer_tr.po | 8 +- localization/i18n/uk/OrcaSlicer_uk.po | 8 +- localization/i18n/vi/OrcaSlicer_vi.po | 8 +- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 8 +- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 8 +- src/slic3r/GUI/Field.cpp | 113 ++++++++++++++------ 25 files changed, 125 insertions(+), 180 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index bbdc0e59be..a063ab0484 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -4995,9 +4995,7 @@ msgstr "" #, possible-c-format, possible-boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" #, possible-boost-format diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 373eb6e9fd..4fee47786f 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -5429,13 +5429,9 @@ msgstr "El valor %s està fora de rang. El rang vàlid és de %d a %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"És %s%% or %s %s?\n" -"SÍ per %s%%.\n" -"NO per %s %s." +"És %s%% or %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index b0d64c8005..f79c90bcd1 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -5386,13 +5386,9 @@ msgstr "Hodnota %s je mimo rozsah. Platný rozsah je od %d do %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Je to %s%% nebo %s %s?\n" -"ANO pro %s%%,\n" -"NE pro %s %s." +"Je to %s%% nebo %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index bd25405cc3..2a3e4e19d6 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -5291,13 +5291,9 @@ msgstr "Wert %s ist außerhalb des Bereichs. Der gültige Bereich liegt zwischen #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Heißt es %s%% oder %s %s?\n" -"Ja für %s%%, \n" -"Nein für %s %s." +"Heißt es %s%% oder %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 35c7f8a87a..37485ba662 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -4991,9 +4991,7 @@ msgstr "" #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" #, boost-format diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index efe4c7dbcd..9dfcde53e5 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -5155,13 +5155,9 @@ msgstr "El valor %s está fuera de rango. El rango válido es de %d a %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"¿Es %s%% o %s %s?\n" -"SÍ para %s%%, \n" -"NO para %s %s." +"¿Es %s%% o %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index 698941018e..b966a124cb 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -5203,13 +5203,9 @@ msgstr "%s balioa tartetik kanpo dago. Baliozko tartea %d eta %d artekoa da." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%% edo %s %s da?\n" -"BAI %s%%-(r)entzat,\n" -"EZ %s %s-(r)entzat." +"%s%% edo %s %s da?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 6344696234..9d8739babe 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -5241,13 +5241,9 @@ msgstr "La valeur %s est hors plage. La plage valide est comprise entre %d et %d #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Est-ce %s%% ou %s %s ?\n" -"OUI pour %s%%, \n" -"NON pour %s %s." +"Est-ce %s%% ou %s %s ?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 78c06dd4c0..198d3decac 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -5338,13 +5338,9 @@ msgstr "%s érték tartományon kívül van. Az érvényes tartomány: %d - %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%% vagy %s %s?\n" -"IGEN %s%%, \n" -"NEM %s %s." +"%s%% vagy %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index cf5099bca3..bc9a0980f2 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -5339,13 +5339,9 @@ msgstr "Il valore %s è fuori intervallo. L'intervallo valido è da %d a %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"È %s%% o %s %s?\n" -"Sì per %s%%, \n" -"NO per %s %s." +"È %s%% o %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 99cd0d0a83..ed9960bb8a 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -5353,12 +5353,9 @@ msgstr "値%sは範囲外です。有効な範囲は%dから%dです。" #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%% か、それとも %s %sですか?\n" -"%s%% の場合ははい、 %s %s はいいえ。" +"%s%% か、それとも %s %sですか?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 8d12c90228..16dc582437 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -5364,13 +5364,9 @@ msgstr "값 %s이 범위를 벗어났습니다. 유효한 범위는 %d에서 %d #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%% 또는 %s %s입니까?\n" -"%s%%에 대해 예,\n" -"%s %s에 대해 아니요." +"%s%% 또는 %s %s입니까?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 67d02bef6d..0141917d77 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -5325,13 +5325,9 @@ msgstr "Reikšmė %s yra už ribų. Galimas diapazonas yra nuo %d iki %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Ar tai %s%% ar %s %s?\n" -"TAIP %s%%, \n" -"NE %s %s." +"Ar tai %s%% ar %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index eff0fdc6b0..a767093bb8 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -5831,13 +5831,9 @@ msgstr "Waarde %s valt buiten het bereik. Het geldige bereik loopt van %d tot %d #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Is het %s%% or %s %s?\n" -"JA voor %s%%, \n" -"NEE voor %s %s." +"Is het %s%% or %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 6f74f4b602..39b0c71d89 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -5452,13 +5452,9 @@ msgstr "Wartość %s jest spoza zakresu. Poprawny zakres wynosi od %d do %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Czy to %s%% czy %s %s?\n" -"TAK dla %s%%,\n" -"NIE dla %s %s." +"Czy to %s%% czy %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -25436,15 +25432,6 @@ msgstr "" #~ msgid "Low-temperature filament (PLA/PETG/TPU) is loaded in the extruder. In order to avoid extruder clogging, it is not allowed to set the chamber temperature above 45℃." #~ msgstr "W ekstruzorze jest załadowany filament o niskiej temperaturze (PLA/PETG/TPU). Aby uniknąć zatkania ekstruzora, nie wolno ustawiać temperatury komory powyżej 45℃." -#~ msgid "" -#~ "Is it %s%% or %s %s?\n" -#~ "YES for %s%%,\n" -#~ "NO for %s %s." -#~ msgstr "" -#~ "Czy to %s%% czy %s %s?\n" -#~ "TAK dla %s%%,\n" -#~ "NIE dla %s %s." - #~ msgid "Allow multiple materials on the same plate" #~ msgstr "Pozwól na kilka filamentów na tej samej płycie" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 2a3e9a7f53..ca92c4c09e 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -5169,13 +5169,9 @@ msgstr "Valor %s está fora do intervalo. O intervalo válido é de %d para %d." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"É %s%% ou %s %s?\n" -"SIM para %s%%, \n" -"NÃO para %s %s." +"É %s%% ou %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2e33546ae8..972f853df4 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -5335,13 +5335,9 @@ msgstr "Значение %s выходит за пределы допустим #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Имелось ввиду %s%%? (введено %s %s)\n" -"Да – изменить на %s%%\n" -"Нет – оставить %s %s." +"Имелось ввиду %s%% или %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index b9aa481d4c..472b105744 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -5905,13 +5905,9 @@ msgstr "Värdet %s ligger utanför intervallet. Giltigt intervall är från %d t #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Det är %s%% eller %s %s?\n" -"JA för %s%%, \n" -"NEJ för %s %s." +"Det är %s%% eller %s %s?" # AI Translated #, boost-format diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index ee7430015e..2865914d23 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -5319,13 +5319,9 @@ msgstr "ค่า %s อยู่นอกช่วง ช่วงที่ถ #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"มันคือ %s%% หรือ %s %s?\n" -"ใช่สำหรับ %s%% \n" -"ไม่ สำหรับ %s %s" +"มันคือ %s%% หรือ %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 0cf9d57412..a5c11f5300 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -5382,13 +5382,9 @@ msgstr "Değer %s aralık dışında. Geçerli aralık %d ile %d arasındadır." #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%% mi yoksa %s %s mi?\n" -"%s%% için EVET,\n" -"%s %s için HAYIR." +"%s%% mi yoksa %s %s mi?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index ec9e97bae0..c3ac201896 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -5330,13 +5330,9 @@ msgstr "Значення %s знаходиться за межами діапа #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Це %s%% або %s %s?\n" -"ТАК для %s%%, \n" -"НІ для %s %s." +"Це %s%% або %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index a80f47cfc1..4504b5c95c 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -5635,13 +5635,9 @@ msgstr "Giá trị %s nằm ngoài phạm vi. Phạm vi hợp lệ từ %d đế #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"Là %s%% hay %s %s?\n" -"YES cho %s%%, \n" -"NO cho %s %s." +"Là %s%% hay %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index faa3419ae5..ff2e0fd940 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -5175,13 +5175,9 @@ msgstr "值 %s 超出了范围,有效的范围是从 %d 到 %d 。" #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"%s%%还是%s %s?\n" -"是:%s%%\n" -"否:%s %s" +"%s%%还是%s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 8f17cfdc5d..e0e468fccf 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -5304,13 +5304,9 @@ msgstr "數值 %s 超出範圍。有效範圍是從 %d 到 %d。" #, c-format, boost-format msgid "" -"Is it %s%% or %s %s?\n" -"YES for %s%%, \n" -"NO for %s %s." +"Is it %s%% or %s %s?" msgstr "" -"是 %s%% 還是 %s %s?\n" -"選『是』代表 %s%%,\n" -"選『否』代表 %s %s。" +"是 %s%% 還是 %s %s?" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 43ece4e10b..74ef3f87c8 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -11,6 +11,7 @@ #include "libslic3r/PrintConfig.hpp" #include +#include #include #include #include @@ -540,51 +541,95 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true case coStrings: case coFloatOrPercent: case coFloatsOrPercents: { - if ((m_opt.type == coFloatOrPercent || m_opt.type == coFloatsOrPercents) && !str.IsEmpty() && str.Last() != '%') - { + if ((m_opt.type == coFloatOrPercent || m_opt.type == coFloatsOrPercents) && !str.IsEmpty() && + !(m_opt.nullable && str == m_na_value)) { + bool update_control = false; + wxString numeric_str = str; double val = 0.; + const char dec_sep = is_decimal_separator_point() ? '.' : ','; const char dec_sep_alt = dec_sep == '.' ? ',' : '.'; - // Replace the first incorrect separator in decimal number. - if (str.Replace(dec_sep_alt, dec_sep, false) != 0) - set_value(str, false); + // Orca: normalize the decimal separator and optional unit before + // detecting the percentage suffix and parsing the numeric part. + update_control |= numeric_str.Replace(dec_sep_alt, dec_sep, false) != 0; + update_control |= numeric_str.Replace(" ", "", true) != 0; + const bool has_literal_unit = numeric_str.EndsWith("mm"); + if (has_literal_unit) { + numeric_str.RemoveLast(2); + update_control = true; + } + bool is_percent = !numeric_str.IsEmpty() && numeric_str.Last() == '%'; + if (is_percent) + numeric_str.RemoveLast(); - - // remove space and "mm" substring, if any exists - str.Replace(" ", "", true); - str.Replace("m", "", true); - - if (!str.ToDouble(&val)) - { + if ((has_literal_unit && is_percent) || !numeric_str.ToDouble(&val) || !std::isfinite(val)) { if (!check_value) { m_value.clear(); break; } show_error(m_parent, _L("Invalid numeric.")); - set_value(double_to_string(val), true); - } - else if (((m_opt.sidetext.rfind("mm/s") != std::string::npos && val > m_opt.max) || - (m_opt.sidetext.rfind("mm ") != std::string::npos && val > /*1*/m_opt.max_literal)) && - (m_value.empty() || into_u8(str) != boost::any_cast(m_value))) - { - if (!check_value) { - m_value.clear(); - break; + numeric_str = double_to_string(std::clamp(0., double(m_opt.min), double(m_opt.max))); + is_percent = false; + update_control = true; + } else { + const bool looks_like_missing_percent = !is_percent && !has_literal_unit && + ((m_opt.sidetext.rfind("mm/s") != std::string::npos && val > m_opt.max) || + (m_opt.sidetext.rfind("mm ") != std::string::npos && val > m_opt.max_literal)); + // Orca: validate explicit percentages and literal values before + // asking whether an otherwise valid literal was meant as a percentage. + const bool out_of_range = !m_opt.is_value_valid(val); + if (out_of_range) { + if (!check_value) { + m_value.clear(); + break; + } + show_error(m_parent, _L("Value is out of range.")); + val = std::clamp(val, double(m_opt.min), double(m_opt.max)); + // Orca: retain the inferred percent unit when clamping a + // suspicious unitless value, so 2000 becomes 100%, not 100 mm. + is_percent |= looks_like_missing_percent; + numeric_str = double_to_string(val); + update_control = true; + } else { + const bool value_changed = m_value.empty() || into_u8(str) != boost::any_cast(m_value); + if (looks_like_missing_percent && value_changed) { + if (!check_value) { + m_value.clear(); + break; + } + + const std::string sidetext = m_opt.sidetext.rfind("mm/s") != std::string::npos ? "mm/s" : "mm"; + const wxString stVal = numeric_str; + const wxString msg_text = from_u8((boost::format(_utf8(L("Is it %s%% or %s %s?"))) % + stVal % stVal % sidetext).str()); + WarningDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxYES | wxNO); + dialog.SetButtonLabel(wxID_YES, stVal + _L("%")); + dialog.SetButtonLabel(wxID_NO, stVal + " " + _L(sidetext)); + dialog.GetSizer()->SetSizeHints(&dialog); + dialog.Fit(); + dialog.CenterOnParent(); + is_percent = dialog.ShowModal() == wxID_YES; + update_control = true; + } } - const std::string sidetext = m_opt.sidetext.rfind("mm/s") != std::string::npos ? "mm/s" : "mm"; - const wxString stVal = double_to_string(val, 2); - const wxString msg_text = from_u8((boost::format(_utf8(L("Is it %s%% or %s %s?\n" - "YES for %s%%, \n" - "NO for %s %s."))) % - stVal % stVal % sidetext % stVal % stVal % sidetext) - .str()); - WarningDialog dialog(m_parent, msg_text, _L("Parameter validation") + ": " + m_opt_id, wxYES | wxNO); - if ((val > 100) && dialog.ShowModal() == wxID_YES) { - set_value(from_u8((boost::format("%s%%") % stVal).str()), false /*true*/); - str += "%%"; - } else - set_value(stVal, false); // it's no needed but can be helpful, when inputted value contained "," instead of "." + // Orca: also enforce the literal limit after clamping an explicit mm input. + if (!is_percent && m_opt.sidetext.rfind("mm ") != std::string::npos && val > m_opt.max_literal) { + if (!check_value) { + m_value.clear(); + break; + } + if (!out_of_range) + show_error(m_parent, _L("Value is out of range.")); + val = m_opt.max_literal; + numeric_str = double_to_string(val); + update_control = true; + } + } + + if (update_control) { + str = numeric_str + (is_percent ? "%" : ""); + set_value(str, true); } } if (m_opt.opt_key == "thumbnails") { From e7ca4fb87e479e4fa280253e0ad48ee375bdc8f1 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sat, 12 Sep 2026 10:09:39 -0500 Subject: [PATCH 112/162] build: trim GUI_App.hpp includes so edits stop rebuilding the whole GUI (#15644) --- src/OrcaSlicer.cpp | 3 ++- src/slic3r/GUI/AMSDryControl.cpp | 1 + src/slic3r/GUI/AMSDryControl.hpp | 1 + src/slic3r/GUI/AMSMaterialsSetting.cpp | 2 ++ src/slic3r/GUI/BaseTransparentDPIFrame.hpp | 2 ++ src/slic3r/GUI/CalibrationWizard.cpp | 1 + .../GUI/CalibrationWizardPresetPage.cpp | 2 ++ src/slic3r/GUI/CalibrationWizardSavePage.cpp | 1 + src/slic3r/GUI/CapsuleButton.cpp | 1 + src/slic3r/GUI/ColorDecomposeSupport.cpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 1 + src/slic3r/GUI/DailyTips.cpp | 1 + src/slic3r/GUI/DeviceCore/DevCalib.cpp | 2 ++ .../GUI/DeviceCore/DevFilaBlackList.cpp | 2 ++ src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp | 1 + src/slic3r/GUI/DeviceManager.cpp | 2 ++ src/slic3r/GUI/DeviceTab/wgtMsgPanel.cpp | 1 + src/slic3r/GUI/DragCanvas.cpp | 1 + src/slic3r/GUI/EncodedFilament.cpp | 3 +++ src/slic3r/GUI/ExportPresetBundleDialog.cpp | 5 +++++ src/slic3r/GUI/ExtraRenderers.cpp | 1 + src/slic3r/GUI/ExtrusionCalibration.cpp | 1 + src/slic3r/GUI/FilamentMapPanel.cpp | 1 + src/slic3r/GUI/GLTexture.cpp | 2 ++ src/slic3r/GUI/GUI_App.cpp | 8 ++++++++ src/slic3r/GUI/GUI_App.hpp | 19 ++++++++++--------- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp | 2 ++ src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp | 1 + src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp | 1 + src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp | 1 + src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp | 2 ++ src/slic3r/GUI/HttpServer.cpp | 4 ++++ src/slic3r/GUI/IMSlider.cpp | 1 + src/slic3r/GUI/ImageDPIFrame.hpp | 2 ++ src/slic3r/GUI/ImageGrid.cpp | 2 +- src/slic3r/GUI/Jobs/BindJob.cpp | 4 ++++ src/slic3r/GUI/Jobs/SendJob.cpp | 2 ++ src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp | 1 + src/slic3r/GUI/MainFrame.hpp | 1 + src/slic3r/GUI/MediaFilePanel.cpp | 3 +++ src/slic3r/GUI/MediaPlayCtrl.cpp | 6 ++++++ src/slic3r/GUI/Mouse3DController.cpp | 1 + src/slic3r/GUI/PartPlate.cpp | 1 + src/slic3r/GUI/PartSkipDialog.cpp | 1 + src/slic3r/GUI/Plater.hpp | 1 + src/slic3r/GUI/PluginsConfigDialog.cpp | 1 + src/slic3r/GUI/PluginsDialog.cpp | 1 + src/slic3r/GUI/Preferences.cpp | 1 + src/slic3r/GUI/PrivacyUpdateDialog.cpp | 1 + src/slic3r/GUI/RammingChart.cpp | 1 + src/slic3r/GUI/ReleaseNote.hpp | 1 + src/slic3r/GUI/SendMultiMachinePage.cpp | 1 + src/slic3r/GUI/SendMultiMachinePage.hpp | 3 +++ src/slic3r/GUI/TroubleshootDialog.cpp | 2 ++ src/slic3r/GUI/UserManager.cpp | 2 ++ src/slic3r/GUI/WebGuideDialog.hpp | 2 ++ src/slic3r/GUI/Widgets/CheckList.cpp | 1 + src/slic3r/GUI/Widgets/MultiNozzleSync.cpp | 2 ++ src/slic3r/GUI/Widgets/WebView.cpp | 8 +++++++- src/slic3r/GUI/WipeTowerDialog.cpp | 1 + src/slic3r/Utils/3DPrinterOS.cpp | 3 +++ src/slic3r/Utils/BBLCloudServiceAgent.cpp | 3 +++ src/slic3r/Utils/CalibUtils.cpp | 1 + src/slic3r/Utils/CloudProvider.hpp | 11 +++++++++++ src/slic3r/Utils/CrealityPrintAgent.cpp | 2 ++ src/slic3r/Utils/ICloudServiceAgent.hpp | 4 +--- src/slic3r/Utils/MoonrakerPrinterAgent.cpp | 1 + src/slic3r/Utils/OrcaCloudServiceAgent.cpp | 1 + src/slic3r/Utils/PresetUpdater.cpp | 1 + src/slic3r/Utils/Process.cpp | 1 + src/slic3r/Utils/QidiPrinterAgent.cpp | 2 ++ src/slic3r/Utils/SnapmakerPrinterAgent.cpp | 2 ++ src/slic3r/plugin/PluginResolver.cpp | 1 + 73 files changed, 149 insertions(+), 15 deletions(-) create mode 100644 src/slic3r/Utils/CloudProvider.hpp diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index bebd1aad5c..d3e24437fb 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -78,8 +78,9 @@ using namespace nlohmann; #include "libslic3r/ObjColorUtils.hpp" #include "OrcaSlicer.hpp" -//BBS: add exception handler for win32 +#include #include +//BBS: add exception handler for win32 #ifdef WIN32 #include "dev-utils/BaseException.h" #endif diff --git a/src/slic3r/GUI/AMSDryControl.cpp b/src/slic3r/GUI/AMSDryControl.cpp index c191e24eac..eb5ddb5d4e 100644 --- a/src/slic3r/GUI/AMSDryControl.cpp +++ b/src/slic3r/GUI/AMSDryControl.cpp @@ -1,6 +1,7 @@ #include "AMSDryControl.hpp" #include "slic3r/GUI/DeviceCore/DevFilaSystem.h" #include "GUI_App.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "I18N.hpp" #include "slic3r/GUI/DeviceCore/DevExtruderSystem.h" diff --git a/src/slic3r/GUI/AMSDryControl.hpp b/src/slic3r/GUI/AMSDryControl.hpp index 223fe137e2..6c5df86849 100644 --- a/src/slic3r/GUI/AMSDryControl.hpp +++ b/src/slic3r/GUI/AMSDryControl.hpp @@ -14,6 +14,7 @@ //Previous defintions class wxGrid; +class ProgressBar; namespace Slic3r { diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 68f1b44212..f0fdf950a0 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -2,6 +2,8 @@ #include "ExtrusionCalibration.hpp" #include "MsgDialog.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "libslic3r/Preset.hpp" #include "I18N.hpp" #include diff --git a/src/slic3r/GUI/BaseTransparentDPIFrame.hpp b/src/slic3r/GUI/BaseTransparentDPIFrame.hpp index 35ed51ddfe..7dc83b4d46 100644 --- a/src/slic3r/GUI/BaseTransparentDPIFrame.hpp +++ b/src/slic3r/GUI/BaseTransparentDPIFrame.hpp @@ -5,8 +5,10 @@ #include #include "GUI_App.hpp" #include "GUI_Utils.hpp" +#include class Button; +class Label; class CheckBox; namespace Slic3r { namespace GUI { class CapsuleButton; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 7496d59a51..f80562578d 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -1,6 +1,7 @@ #include "CalibrationWizard.hpp" #include "I18N.hpp" #include "GUI_App.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "MsgDialog.hpp" #include "CalibrationWizardPage.hpp" #include "../../libslic3r/calib.hpp" diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index c6d491a930..7a83d39dd3 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1,5 +1,7 @@ #include #include "CalibrationWizardPresetPage.hpp" +#include "GUI.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "I18N.hpp" #include "Widgets/Label.hpp" #include "MsgDialog.hpp" diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp index f7699cfab0..427f022d1c 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp @@ -1,4 +1,5 @@ #include "CalibrationWizardSavePage.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "Widgets/Label.hpp" #include "MsgDialog.hpp" diff --git a/src/slic3r/GUI/CapsuleButton.cpp b/src/slic3r/GUI/CapsuleButton.cpp index 8afe39889e..8d71f9911e 100644 --- a/src/slic3r/GUI/CapsuleButton.cpp +++ b/src/slic3r/GUI/CapsuleButton.cpp @@ -1,5 +1,6 @@ #include "GUI_App.hpp" #include "CapsuleButton.hpp" +#include "Widgets/StateColor.hpp" #include #include "wx/graphics.h" #include "Widgets/Label.hpp" diff --git a/src/slic3r/GUI/ColorDecomposeSupport.cpp b/src/slic3r/GUI/ColorDecomposeSupport.cpp index 6621b97059..ea67564208 100644 --- a/src/slic3r/GUI/ColorDecomposeSupport.cpp +++ b/src/slic3r/GUI/ColorDecomposeSupport.cpp @@ -1,4 +1,5 @@ #include "ColorDecomposeSupport.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "MixedFilamentDialog.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 8eab1c785c..5bd74e107d 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -2,6 +2,7 @@ #include "ConfigManipulation.hpp" #include "I18N.hpp" #include "GUI_App.hpp" +#include "DeviceCore/DevConfigUtil.h" #include "format.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/Model.hpp" diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index d2f758bf5f..894c0316bb 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -1,4 +1,5 @@ #include "DailyTips.hpp" +#include "slic3r/GUI/Widgets/Label.hpp" #ifndef IMGUI_DEFINE_MATH_OPERATORS #define IMGUI_DEFINE_MATH_OPERATORS diff --git a/src/slic3r/GUI/DeviceCore/DevCalib.cpp b/src/slic3r/GUI/DeviceCore/DevCalib.cpp index cf7ee1d90e..ddf71e0c62 100644 --- a/src/slic3r/GUI/DeviceCore/DevCalib.cpp +++ b/src/slic3r/GUI/DeviceCore/DevCalib.cpp @@ -1,5 +1,7 @@ #include #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/DeviceManager.hpp" #include "slic3r/GUI/UserNotification.hpp" #include "libslic3r/PrintConfig.hpp" diff --git a/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp b/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp index b59499d9d9..7ae990730a 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp +++ b/src/slic3r/GUI/DeviceCore/DevFilaBlackList.cpp @@ -4,6 +4,8 @@ #include #include "DevFilaBlackList.h" +#include "slic3r/Utils/NetworkAgent.hpp" +#include "slic3r/GUI/DeviceManager.hpp" #include "DevFilaSystem.h" #include "DevManager.h" #include "DevConfigUtil.h" diff --git a/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp b/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp index e0a230969b..881aa75d20 100644 --- a/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp +++ b/src/slic3r/GUI/DeviceCore/DevFilaSystem.cpp @@ -1,5 +1,6 @@ #include #include "DevFilaSystem.h" +#include "slic3r/Utils/NetworkAgent.hpp" #include "DevNozzleSystem.h" // DevNozzle / DevNozzleSystem for GetNozzleFlowStringByAmsId // TODO: remove this include diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 782574c220..fd60f80d25 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1,5 +1,7 @@ #include "libslic3r/libslic3r.h" #include "DeviceManager.hpp" +#include "HMS.hpp" +#include "I18N.hpp" #include "libslic3r/Time.hpp" #include "libslic3r/Thread.hpp" #include "slic3r/Utils/NetworkAgent.hpp" diff --git a/src/slic3r/GUI/DeviceTab/wgtMsgPanel.cpp b/src/slic3r/GUI/DeviceTab/wgtMsgPanel.cpp index 64195d97a8..16ae8812be 100644 --- a/src/slic3r/GUI/DeviceTab/wgtMsgPanel.cpp +++ b/src/slic3r/GUI/DeviceTab/wgtMsgPanel.cpp @@ -1,6 +1,7 @@ #include "wgtMsgPanel.h" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/I18N.hpp" #include "slic3r/GUI/Widgets/Label.hpp" #include "slic3r/GUI/Widgets/StateColor.hpp" #include "slic3r/GUI/wxExtensions.hpp" diff --git a/src/slic3r/GUI/DragCanvas.cpp b/src/slic3r/GUI/DragCanvas.cpp index 04d51c0861..66a9acecbc 100644 --- a/src/slic3r/GUI/DragCanvas.cpp +++ b/src/slic3r/GUI/DragCanvas.cpp @@ -1,6 +1,7 @@ #include "DragCanvas.hpp" #include "wxExtensions.hpp" #include "GUI_App.hpp" +#include "Widgets/StateColor.hpp" namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/EncodedFilament.cpp b/src/slic3r/GUI/EncodedFilament.cpp index f9054e7f6d..0cab200386 100644 --- a/src/slic3r/GUI/EncodedFilament.cpp +++ b/src/slic3r/GUI/EncodedFilament.cpp @@ -1,7 +1,10 @@ #include "EncodedFilament.hpp" +#include #include "GUI_App.hpp" +using json = nlohmann::json; + namespace Slic3r { diff --git a/src/slic3r/GUI/ExportPresetBundleDialog.cpp b/src/slic3r/GUI/ExportPresetBundleDialog.cpp index 6d642ee1c1..9d2f26bf6a 100644 --- a/src/slic3r/GUI/ExportPresetBundleDialog.cpp +++ b/src/slic3r/GUI/ExportPresetBundleDialog.cpp @@ -1,4 +1,5 @@ #include "ExportPresetBundleDialog.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "GUI_App.hpp" #include "ConfigWizard.hpp" #include "I18N.hpp" @@ -12,7 +13,11 @@ #include #include #include +#include #include + +using json = nlohmann::json; + namespace Slic3r { namespace GUI { ExportPresetBundleDialog::ExportPresetBundleDialog( diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 18811ef241..3abfdb82ff 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -1,6 +1,7 @@ #include "ExtraRenderers.hpp" #include "wxExtensions.hpp" #include "GUI.hpp" +#include "I18N.hpp" #include "BitmapComboBox.hpp" #include "Plater.hpp" #include "Widgets/ComboBox.hpp" diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index 933e2ac211..1f07823d61 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -1,5 +1,6 @@ #include "ExtrusionCalibration.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "MsgDialog.hpp" #include "libslic3r/Preset.hpp" #include diff --git a/src/slic3r/GUI/FilamentMapPanel.cpp b/src/slic3r/GUI/FilamentMapPanel.cpp index 81117bc2a6..0f3cc7217d 100644 --- a/src/slic3r/GUI/FilamentMapPanel.cpp +++ b/src/slic3r/GUI/FilamentMapPanel.cpp @@ -1,5 +1,6 @@ #include "FilamentMapPanel.hpp" #include "GUI_App.hpp" +#include "I18N.hpp" #include "Plater.hpp" #include "Widgets/MultiNozzleSync.hpp" // manuallySetNozzleCount producer for extruder_nozzle_stats #include diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index d670181b1b..fbdb308c56 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -9,6 +9,7 @@ #include "3DScene.hpp" #include "OpenGLManager.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "GLModel.hpp" #include @@ -31,6 +32,7 @@ #include "GUI_App.hpp" #include #include +#include namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index fee18b4799..966cf49013 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3,6 +3,14 @@ #include "libslic3r/Technologies.hpp" #include "libslic3r/Platform.hpp" #include "GUI_App.hpp" +#include "BindDialog.hpp" +#include "DeviceManager.hpp" +#include "HMS.hpp" +#include "PresetBundleDialog.hpp" +#include "WebUserLoginDialog.hpp" +#include "WebViewDialog.hpp" +#include "slic3r/Utils/BBLCloudServiceAgent.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "GUI_Init.hpp" #include "GUI_ObjectList.hpp" #include "slic3r/GUI/UserManager.hpp" diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 2569e10271..f6f0b81c92 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -1,23 +1,17 @@ #ifndef slic3r_GUI_App_hpp_ #define slic3r_GUI_App_hpp_ +#include #include #include #include "ActionRegistry.hpp" #include "ImGuiWrapper.hpp" #include "ConfigWizard.hpp" #include "OpenGLManager.hpp" -#include "PresetBundleDialog.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/PresetBundle.hpp" -#include "slic3r/GUI/DeviceManager.hpp" #include "slic3r/GUI/UserNotification.hpp" -#include "slic3r/Utils/NetworkAgent.hpp" -#include "slic3r/Utils/BBLCloudServiceAgent.hpp" -#include "slic3r/GUI/WebViewDialog.hpp" -#include "slic3r/GUI/WebUserLoginDialog.hpp" -#include "slic3r/GUI/BindDialog.hpp" -#include "slic3r/GUI/HMS.hpp" +#include "slic3r/Utils/CloudProvider.hpp" #include "slic3r/GUI/Jobs/UpgradeNetworkJob.hpp" #include "slic3r/GUI/HttpServer.hpp" #include "../Utils/PrintHost.hpp" @@ -64,9 +58,14 @@ class ModelObject; class Model; class UserManager; class DeviceManager; +class MachineObject; class NetworkAgent; +class IPrinterAgent; class TaskManager; +// Same typedef as in bambu_networking.hpp, so this header need not include it. +typedef std::function WasCancelledFn; + namespace GUI{ class RemovableDriveManager; @@ -85,6 +84,8 @@ class ParamsDialog; class HMSQuery; class ModelMallDialog; class PingCodeBindDialog; +class PresetBundleDialog; +class ZUserLogin; class NetworkErrorDialog; class PluginsDialog; class SpeedDialWebDialog; @@ -829,7 +830,7 @@ wxDECLARE_EVENT(EVT_UPDATE_BUNDLE_COMPLETE, wxCommandEvent); bool is_support_filament(int extruder_id, bool strict_check = true); bool is_soluble_filament(int extruder_id); // check if the filament for model is in the list -bool has_filaments(const std::vector& model_filaments); +bool has_filaments(const std::vector& model_filaments); } // namespace GUI } // Slic3r diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 012e62b2bc..99ad00fe55 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -1,5 +1,7 @@ // Include GLGizmoBase.hpp before I18N.hpp as it includes some libigl code, which overrides our localization "L" macro. #include "GLGizmoAdvancedCut.hpp" +#include "slic3r/GUI/Widgets/ProgressDialog.hpp" +#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 904e7d0a07..6d9e810815 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -1,6 +1,7 @@ #include "GLGizmoBrimEars.hpp" #include #include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/Gizmos/GLGizmosCommon.hpp" #include "slic3r/GUI/GUI_App.hpp" diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp index 6689fcdcea..d807e466c8 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp @@ -4,6 +4,7 @@ #include "libslic3r/Print.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index e21498163a..6f7d6fed58 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -1,4 +1,5 @@ #include "GLGizmoMeasure.hpp" +#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/Plater.hpp" diff --git a/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp b/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp index 00d608b80a..75dca0855d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp @@ -32,6 +32,8 @@ */ +using namespace std::string_view_literals; + namespace Slic3r::GUI::GLGizmoUtils { void render_tooltip_button( diff --git a/src/slic3r/GUI/HttpServer.cpp b/src/slic3r/GUI/HttpServer.cpp index afdc46e9f0..ef26f20173 100644 --- a/src/slic3r/GUI/HttpServer.cpp +++ b/src/slic3r/GUI/HttpServer.cpp @@ -4,6 +4,10 @@ #include "slic3r/Utils/Http.hpp" #include "slic3r/Utils/NetworkAgent.hpp" #include "slic3r/Utils/BBLNetworkPlugin.hpp" +#include "libslic3r/Thread.hpp" +#include + +using json = nlohmann::json; namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index 0d0d6739f8..fa777b6a37 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -1,6 +1,7 @@ #include "IMSlider.hpp" #include "libslic3r/GCode.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "NotificationManager.hpp" #include "Widgets/StateColor.hpp" #ifndef IMGUI_DEFINE_MATH_OPERATORS diff --git a/src/slic3r/GUI/ImageDPIFrame.hpp b/src/slic3r/GUI/ImageDPIFrame.hpp index 817ef6be18..c22d296492 100644 --- a/src/slic3r/GUI/ImageDPIFrame.hpp +++ b/src/slic3r/GUI/ImageDPIFrame.hpp @@ -3,6 +3,8 @@ #include "GUI_App.hpp" #include "GUI_Utils.hpp" +#include +#include class wxStaticBitmap; namespace Slic3r { namespace GUI { diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index abef6f0f12..f6bf25d77c 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -521,7 +521,7 @@ void ImageGrid::render(wxDC& dc) if (!m_status_msg.IsEmpty()) { auto si = m_status_icon.GetBmpSize(); auto st = dc.GetMultiLineTextExtent(m_status_msg); - auto rect = wxRect{0, 0, max(st.x, si.x), si.y + 26 + st.y}.CenterIn(wxRect({0, 0}, size)); + auto rect = wxRect{0, 0, std::max(st.x, si.x), si.y + 26 + st.y}.CenterIn(wxRect({0, 0}, size)); dc.DrawBitmap(m_status_icon.bmp(), rect.x + (rect.width - si.x) / 2, rect.y); dc.SetTextForeground(wxColor(0x909090)); dc.DrawText(m_status_msg, rect.x + (rect.width - st.x) / 2, rect.GetBottom() - st.y); diff --git a/src/slic3r/GUI/Jobs/BindJob.cpp b/src/slic3r/GUI/Jobs/BindJob.cpp index 61c430c6e6..76af712f63 100644 --- a/src/slic3r/GUI/Jobs/BindJob.cpp +++ b/src/slic3r/GUI/Jobs/BindJob.cpp @@ -3,6 +3,10 @@ #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/DeviceManager.hpp" +#include "slic3r/GUI/HMS.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "slic3r/GUI/DeviceCore/DevManager.h" diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index 67ce02b476..d27b18f24b 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -1,4 +1,6 @@ #include "SendJob.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "libslic3r/MTUtils.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/PresetBundle.hpp" diff --git a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp index 6cd88ac5d3..7090f0e2e0 100644 --- a/src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp +++ b/src/slic3r/GUI/Jobs/UpgradeNetworkJob.cpp @@ -2,6 +2,7 @@ #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/I18N.hpp" #include "slic3r/Utils/Http.hpp" namespace Slic3r { diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 44e0547f50..5340115609 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -66,6 +66,7 @@ class Tab; class PrintHostQueueDialog; class Plater; class MainFrame; +class WebViewPanel; class ParamsDialog; #ifdef __WXGTK__ class ResizeEdgePanel; diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index 36316f8ff5..e9e1f56b03 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -2,6 +2,9 @@ #include "ImageGrid.h" #include "I18N.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" +#include "DeviceManager.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "Plater.hpp" #include "Widgets/Button.hpp" #include "Widgets/SwitchButton.hpp" diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 29c8c9f664..557d859cf7 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -3,6 +3,11 @@ #include "Widgets/CheckBox.hpp" #include "Widgets/Label.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" +#include "DeviceManager.hpp" +#include "DeviceCore/DevConfigUtil.h" +#include "slic3r/Utils/NetworkAgent.hpp" +#include "libslic3r/Thread.hpp" #include "libslic3r/AppConfig.hpp" #include "I18N.hpp" #include "MsgDialog.hpp" @@ -13,6 +18,7 @@ #include #include #include +#include #include #undef pid_t #include diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 8ed91d461f..0317342412 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -1,6 +1,7 @@ #include "libslic3r/libslic3r.h" #include "libslic3r/PresetBundle.hpp" #include "Mouse3DController.hpp" +#include "GUI.hpp" #include "Camera.hpp" #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index d38ab5e0ac..c9370cc282 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include "libslic3r/libslic3r.h" diff --git a/src/slic3r/GUI/PartSkipDialog.cpp b/src/slic3r/GUI/PartSkipDialog.cpp index b9dd7d5007..9bd6687757 100644 --- a/src/slic3r/GUI/PartSkipDialog.cpp +++ b/src/slic3r/GUI/PartSkipDialog.cpp @@ -1,5 +1,6 @@ #include "GUI_Utils.hpp" #include "GUI_App.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include #include #include diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 26cd06978b..84e64acea0 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -42,6 +42,7 @@ class Button; namespace Slic3r { class BuildVolume; +class MachineObject; enum class BuildVolume_Type : char; class Model; class ModelObject; diff --git a/src/slic3r/GUI/PluginsConfigDialog.cpp b/src/slic3r/GUI/PluginsConfigDialog.cpp index 0241b47b8c..9a79588af1 100644 --- a/src/slic3r/GUI/PluginsConfigDialog.cpp +++ b/src/slic3r/GUI/PluginsConfigDialog.cpp @@ -1,6 +1,7 @@ #include "PluginsConfigDialog.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "format.hpp" diff --git a/src/slic3r/GUI/PluginsDialog.cpp b/src/slic3r/GUI/PluginsDialog.cpp index a39fcbc535..2bac7eddca 100644 --- a/src/slic3r/GUI/PluginsDialog.cpp +++ b/src/slic3r/GUI/PluginsDialog.cpp @@ -2,6 +2,7 @@ #include "GUI.hpp" #include "GUI_App.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "I18N.hpp" #include "OrcaCloudServiceAgent.hpp" #include "slic3r/plugin/PluginConfig.hpp" diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 7d80147efa..73f3a2c90a 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -2,6 +2,7 @@ #include "OptionsGroup.hpp" #include "GUI_App.hpp" #include "MainFrame.hpp" +#include "WebViewDialog.hpp" #include "Plater.hpp" #include "GLCanvas3D.hpp" // ORCA: for live preview refresh when toggling "Dim lower layers" #include "MsgDialog.hpp" diff --git a/src/slic3r/GUI/PrivacyUpdateDialog.cpp b/src/slic3r/GUI/PrivacyUpdateDialog.cpp index 92d6d6c8c7..c417767a42 100644 --- a/src/slic3r/GUI/PrivacyUpdateDialog.cpp +++ b/src/slic3r/GUI/PrivacyUpdateDialog.cpp @@ -1,5 +1,6 @@ #include "PrivacyUpdateDialog.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "BitmapCache.hpp" #include #include diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp index 96cd3b65a7..29116b12cb 100644 --- a/src/slic3r/GUI/RammingChart.cpp +++ b/src/slic3r/GUI/RammingChart.cpp @@ -7,6 +7,7 @@ #include "GUI.hpp" #include "GUI_App.hpp" #include "I18N.hpp" +#include "Widgets/StateColor.hpp" wxDEFINE_EVENT(EVT_WIPE_TOWER_CHART_CHANGED, wxCommandEvent); diff --git a/src/slic3r/GUI/ReleaseNote.hpp b/src/slic3r/GUI/ReleaseNote.hpp index 0c11dc2f58..cfd372bc97 100644 --- a/src/slic3r/GUI/ReleaseNote.hpp +++ b/src/slic3r/GUI/ReleaseNote.hpp @@ -35,6 +35,7 @@ #include "Widgets/CheckBox.hpp" #include "Widgets/ComboBox.hpp" #include "Widgets/ScrolledWindow.hpp" +#include "Widgets/HyperLink.hpp" #include #include diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 2d1b713264..cafbb360e6 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -3,6 +3,7 @@ #include "I18N.hpp" #include "GUI_App.hpp" +#include "slic3r/Utils/bambu_networking.hpp" #include "MainFrame.hpp" #include "Widgets/RadioBox.hpp" #include diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index a63bc51bb0..eadd78eb0a 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -15,6 +15,9 @@ #include "SelectMachine.hpp" namespace Slic3r { + +struct PrintParams; + namespace GUI { #define SEND_LEFT_PADDING_LEFT 15 #define SEND_LEFT_PRINTABLE 40 diff --git a/src/slic3r/GUI/TroubleshootDialog.cpp b/src/slic3r/GUI/TroubleshootDialog.cpp index 5acb75c6ea..7cbb00b5d8 100644 --- a/src/slic3r/GUI/TroubleshootDialog.cpp +++ b/src/slic3r/GUI/TroubleshootDialog.cpp @@ -6,6 +6,8 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" +#include +#include #include #include #include "wx/clipbrd.h" diff --git a/src/slic3r/GUI/UserManager.cpp b/src/slic3r/GUI/UserManager.cpp index 456582e896..e874c2158d 100644 --- a/src/slic3r/GUI/UserManager.cpp +++ b/src/slic3r/GUI/UserManager.cpp @@ -1,9 +1,11 @@ #include "libslic3r/libslic3r.h" #include "UserManager.hpp" #include "DeviceManager.hpp" +#include "BindDialog.hpp" #include "NetworkAgent.hpp" #include "GUI.hpp" #include "GUI_App.hpp" +#include "I18N.hpp" #include "MsgDialog.hpp" #include "DeviceCore/DevManager.h" diff --git a/src/slic3r/GUI/WebGuideDialog.hpp b/src/slic3r/GUI/WebGuideDialog.hpp index c4cfc8bf6d..1ad60175ae 100644 --- a/src/slic3r/GUI/WebGuideDialog.hpp +++ b/src/slic3r/GUI/WebGuideDialog.hpp @@ -43,6 +43,8 @@ namespace Slic3r { namespace GUI { class GuideFrame : public DPIDialog { public: + using json = nlohmann::json; + GuideFrame(GUI_App *pGUI, long style = wxCAPTION | wxCLOSE_BOX | wxSYSTEM_MENU); virtual ~GuideFrame(); diff --git a/src/slic3r/GUI/Widgets/CheckList.cpp b/src/slic3r/GUI/Widgets/CheckList.cpp index cd0dcebff3..c0101441ff 100644 --- a/src/slic3r/GUI/Widgets/CheckList.cpp +++ b/src/slic3r/GUI/Widgets/CheckList.cpp @@ -1,6 +1,7 @@ #include "CheckList.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/I18N.hpp" CheckList::CheckList( wxWindow* parent, diff --git a/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp b/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp index 20944df553..9278565c47 100644 --- a/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp +++ b/src/slic3r/GUI/Widgets/MultiNozzleSync.cpp @@ -20,6 +20,8 @@ #include #include +#include +#include #include #include diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index e281d97407..a29a3cb725 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -1,9 +1,13 @@ #include "WebView.hpp" +#include "slic3r/GUI/Widgets/StateColor.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/Utils/MacDarkMode.hpp" #include +#include +#include + #include #include #if wxUSE_WEBVIEW_EDGE @@ -12,6 +16,8 @@ #include #endif #include +#include +#include #if defined(__WIN32__) || defined(__WXMAC__) #include "wx/private/jsscriptwrapper.h" #endif @@ -73,7 +79,7 @@ DWORD DownloadAndInstallWV2RT() { }) .perform_sync(); // Sleep for 1 second to wait for the buffer writen into disk - std::this_thread::sleep_for(1000ms); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); if (downloaded) { // Either Package the WebView2 Bootstrapper with your app or download it using fwlink // Then invoke install at Runtime. diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index d4fbcc6fe3..9a473c7c8a 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -6,6 +6,7 @@ #include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" +#include "WebViewDialog.hpp" #include "MsgDialog.hpp" #include "format.hpp" #include "libslic3r/Color.hpp" diff --git a/src/slic3r/Utils/3DPrinterOS.cpp b/src/slic3r/Utils/3DPrinterOS.cpp index 61fcc80d5b..503dbe63e3 100755 --- a/src/slic3r/Utils/3DPrinterOS.cpp +++ b/src/slic3r/Utils/3DPrinterOS.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -30,6 +31,8 @@ #include +using json = nlohmann::json; + namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/BBLCloudServiceAgent.cpp b/src/slic3r/Utils/BBLCloudServiceAgent.cpp index 846e4ce509..801ad1cf57 100644 --- a/src/slic3r/Utils/BBLCloudServiceAgent.cpp +++ b/src/slic3r/Utils/BBLCloudServiceAgent.cpp @@ -8,6 +8,9 @@ #include #include #include + +using json = nlohmann::json; + namespace Slic3r { diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 499228d13c..25aad85d2f 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -3,6 +3,7 @@ #include "../GUI/GUI_App.hpp" #include "../GUI/DeviceCore/DevStorage.h" #include "../GUI/DeviceManager.hpp" +#include "NetworkAgent.hpp" #include "../GUI/Jobs/ProgressIndicator.hpp" #include "../GUI/PartPlate.hpp" #include "libslic3r/CutUtils.hpp" diff --git a/src/slic3r/Utils/CloudProvider.hpp b/src/slic3r/Utils/CloudProvider.hpp new file mode 100644 index 0000000000..0f03683222 --- /dev/null +++ b/src/slic3r/Utils/CloudProvider.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace Slic3r { + +// Identifiers of the cloud services an ICloudServiceAgent can stand for. +static const std::string ORCA_CLOUD_PROVIDER("orca"); +static const std::string BBL_CLOUD_PROVIDER("bbl"); + +} // namespace Slic3r diff --git a/src/slic3r/Utils/CrealityPrintAgent.cpp b/src/slic3r/Utils/CrealityPrintAgent.cpp index 9b3bd5843e..f340a61267 100644 --- a/src/slic3r/Utils/CrealityPrintAgent.cpp +++ b/src/slic3r/Utils/CrealityPrintAgent.cpp @@ -12,6 +12,8 @@ #include #include +using json = nlohmann::json; + namespace Slic3r { namespace { diff --git a/src/slic3r/Utils/ICloudServiceAgent.hpp b/src/slic3r/Utils/ICloudServiceAgent.hpp index 556c253641..7d326eb4c6 100644 --- a/src/slic3r/Utils/ICloudServiceAgent.hpp +++ b/src/slic3r/Utils/ICloudServiceAgent.hpp @@ -2,6 +2,7 @@ #define __I_CLOUD_SERVICE_AGENT_HPP__ #include "bambu_networking.hpp" +#include "CloudProvider.hpp" #include "../../libslic3r/ProjectTask.hpp" #include #include @@ -37,9 +38,6 @@ namespace Slic3r { * implementation. */ -static const std::string ORCA_CLOUD_PROVIDER("orca"); -static const std::string BBL_CLOUD_PROVIDER("bbl"); - struct CloudEvent { std::string provider; // ORCA_CLOUD_PROVIDER or BBL_CLOUD_PROVIDER }; diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp index 571d707a9f..384a69d51e 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp @@ -3,6 +3,7 @@ #include "libslic3r/Preset.hpp" #include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/DeviceManager.hpp" #include "slic3r/GUI/DeviceCore/DevFilaSystem.h" #include "slic3r/GUI/DeviceCore/DevManager.h" #include "../GUI/DeviceCore/DevStorage.h" diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 4bfe429cd3..5d129a490e 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 032f9dbf7a..69bfa4217e 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -42,6 +42,7 @@ #include "slic3r/GUI/format.hpp" #include "slic3r/GUI/NotificationManager.hpp" #include "slic3r/Utils/Http.hpp" +#include "slic3r/Utils/bambu_networking.hpp" #include "slic3r/Config/Version.hpp" #include "slic3r/Config/Snapshot.hpp" #include "slic3r/GUI/MarkdownTip.hpp" diff --git a/src/slic3r/Utils/Process.cpp b/src/slic3r/Utils/Process.cpp index 518462bbc9..96da521114 100644 --- a/src/slic3r/Utils/Process.cpp +++ b/src/slic3r/Utils/Process.cpp @@ -21,6 +21,7 @@ #include #endif +#include #include namespace Slic3r { diff --git a/src/slic3r/Utils/QidiPrinterAgent.cpp b/src/slic3r/Utils/QidiPrinterAgent.cpp index 6b05480194..1f437853ba 100644 --- a/src/slic3r/Utils/QidiPrinterAgent.cpp +++ b/src/slic3r/Utils/QidiPrinterAgent.cpp @@ -9,6 +9,8 @@ #include #include +using json = nlohmann::json; + namespace Slic3r { namespace { diff --git a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp index ab7aa9bd52..5783738af7 100644 --- a/src/slic3r/Utils/SnapmakerPrinterAgent.cpp +++ b/src/slic3r/Utils/SnapmakerPrinterAgent.cpp @@ -6,6 +6,8 @@ #include "nlohmann/json.hpp" #include +using json = nlohmann::json; + namespace Slic3r { namespace { diff --git a/src/slic3r/plugin/PluginResolver.cpp b/src/slic3r/plugin/PluginResolver.cpp index 4ba58ee550..6e72929c63 100644 --- a/src/slic3r/plugin/PluginResolver.cpp +++ b/src/slic3r/plugin/PluginResolver.cpp @@ -3,6 +3,7 @@ #include "PluginManager.hpp" #include "../Utils/Http.hpp" #include "../Utils/OrcaCloudServiceAgent.hpp" +#include "../Utils/NetworkAgent.hpp" #include "../GUI/GUI.hpp" #include "../GUI/GUI_App.hpp" #include "../GUI/I18N.hpp" From db9163ec34cdd4080f64ff8bcde24eff0d9c9072 Mon Sep 17 00:00:00 2001 From: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> Date: Sat, 12 Sep 2026 13:26:11 -0300 Subject: [PATCH 113/162] Set the CMake policy CMP0177 (#15657) Update CMakeLists.txt --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5620875d4f..85ee9c4232 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,10 @@ endif() cmake_minimum_required(VERSION 3.13) +if(POLICY CMP0177) + cmake_policy(SET CMP0177 NEW) +endif() + # The following line used to be in tests/CMakeLists.txt # Having it there causes rebuilds of all targets on any CMakeLists.txt change under tests/ From c5965fa4d9edc9cfebdaba4dfbdfb3a551f3a888 Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Sat, 12 Sep 2026 20:31:28 +0300 Subject: [PATCH 114/162] Fix: clear stale paths when merging perimeter regions (#15662) --- src/libslic3r/Layer.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 1d6c2b0703..b7ec08f856 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -187,6 +187,12 @@ void Layer::make_perimeters() { BOOST_LOG_TRIVIAL(trace) << "Generating perimeters for layer " << this->id(); + const auto clear_generated_extrusions = [](LayerRegion *layer_region) { + layer_region->perimeters.clear(); + layer_region->fills.clear(); + layer_region->thin_fills.clear(); + }; + // keep track of regions whose perimeters we have already generated std::vector done(m_regions.size(), false); @@ -217,13 +223,11 @@ void Layer::make_perimeters() if (this_region.gradient_volume_id() != other_region.gradient_volume_id()) continue; if (is_perimeter_compatible(*m_object->print(), this_region, other_region)) - { - other_layerm->perimeters.clear(); - other_layerm->fills.clear(); - other_layerm->thin_fills.clear(); - layerms.push_back(other_layerm); - done[it - m_regions.begin()] = true; - } + { + clear_generated_extrusions(other_layerm); + layerms.push_back(other_layerm); + done[it - m_regions.begin()] = true; + } } if (layerms.size() == 1) { // optimization @@ -231,6 +235,10 @@ void Layer::make_perimeters() (*layerm)->make_perimeters((*layerm)->slices, {*layerm}, &(*layerm)->fill_surfaces, &(*layerm)->fill_no_overlap_expolygons); (*layerm)->fill_expolygons = to_expolygons((*layerm)->fill_surfaces.surfaces); } else { + // Orca: Unlike the compatible regions above, the initiating region has not + // been cleared yet and may contain paths from a previous incompatible run. + clear_generated_extrusions(*layerm); + SurfaceCollection new_slices; // Use the region with highest infill rate, as the make_perimeters() function below decides on the gap fill based on the infill existence. LayerRegion *layerm_config = layerms.front(); From fe0d47c7a340362d57ed90911cb732d55b50bce0 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sat, 12 Sep 2026 13:04:44 -0500 Subject: [PATCH 115/162] feat(issues): add a crash report template (#15524) --- .github/ISSUE_TEMPLATE/bug_report.yml | 39 +++-- .github/ISSUE_TEMPLATE/crash_report.yml | 183 ++++++++++++++++++++++++ 2 files changed, 200 insertions(+), 22 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/crash_report.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 63f74a069e..6019c2bc8b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,5 +1,5 @@ name: 🐞 Bug Report -description: File a bug report +description: Something behaves incorrectly while Orca Slicer keeps running labels: ["bug"] body: - type: markdown @@ -10,6 +10,8 @@ body: Please note that this is not the place to make feature requests or ask for help. For this, please use the [Feature request](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others. + If Orca Slicer closes on its own, freezes or stops responding, please use the [Crash report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=crash_report.yml) form instead. It asks for the logs a crash needs. + Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment. - type: checkboxes attributes: @@ -47,7 +49,7 @@ body: id: os_type attributes: label: "Operating System (OS)" - description: "What OSes are you are experiencing issues on?" + description: "What OSes are you experiencing issues on?" multiple: true options: - Linux @@ -86,7 +88,7 @@ body: id: reproduce_steps attributes: label: How to reproduce - description: Please described the detailed steps to reproduce this issue + description: Please describe the detailed steps to reproduce this issue placeholder: | 1. Go to '...' 2. Click on '...' @@ -108,28 +110,23 @@ body: description: What should happen after the above steps? validations: required: true - - type: markdown - id: file_required - attributes: - value: | - Please be sure to add the following files: - * Please upload a ZIP archive containing the **project file** used when the problem arise. Please export it just before or after the problem occurs. Even if you did nothing and/or there is no object, export it! (We need the configurations in project file). - You can export the project file from the application menu in `File`->`Save project as...`, then zip it - * A **log file** for crashes and similar issues. - You can find your log file here: - Windows: `%APPDATA%\OrcaSlicer\log` or usually `C:\Users\\AppData\Roaming\OrcaSlicer\log` - MacOS: `$HOME/Library/Application Support/OrcaSlicer/log` - Linux: `$HOME/.config/OrcaSlicer/log` - If Orca Slicer still starts, you can also reach this directory from the application menu in `Help` -> `Show Configuration Folder` - You can zip the log directory, or just select the newest logs when this issue happens, and zip them - type: textarea id: file_uploads attributes: label: Project file & Debug log uploads - description: Drop the project file and debug log here + description: | + Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB. + + * The **project file** used when the problem happened, zipped. Export it just before or after the problem occurs. Even if you did nothing and there is no object on the plate, export it, since we need the configuration it carries. `File` -> `Save project as...` + * The **log folder**, zipped. `Help` -> `Show Configuration Folder` opens it, or find it at: + * Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\\AppData\Roaming\OrcaSlicer\log` + * macOS: `$HOME/Library/Application Support/OrcaSlicer/log` + * Linux: `$HOME/.config/OrcaSlicer/log` + * Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log` + * If the zip comes out over 25 MB, attach the newest logs from that folder on their own instead. placeholder: | - Project File: `File` -> `Save project as...` then zip it & drop it here - Log File: `Help` -> `Show Configuration Folder`, then zip the log directory, or just select the newest logs in `log` when this issue happens and zip them, then drop the zip file here + Zipped project file + Zipped log folder validations: required: true - type: checkboxes @@ -144,7 +141,5 @@ body: label: Anything else? description: | Screenshots? References? Anything that will give us more context about the issue you are encountering! - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. validations: required: false diff --git a/.github/ISSUE_TEMPLATE/crash_report.yml b/.github/ISSUE_TEMPLATE/crash_report.yml new file mode 100644 index 0000000000..bcbee11d36 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/crash_report.yml @@ -0,0 +1,183 @@ +name: 💥 Crash Report +description: Orca Slicer closes on its own, freezes or stops responding +labels: ["crash"] +body: + - type: markdown + attributes: + value: | + **Thank you for taking the time to report a crash.** + + Use this form when Orca Slicer closes on its own, freezes, or stops responding. + If the application stays open and only produces a wrong result, please use the [Bug report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=bug_report.yml) form instead. + A printer whose toolhead collides with the print is also a bug report rather than a crash, since the application itself did not stop. + + Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment. + - type: checkboxes + attributes: + label: Is this crash reproducible in the latest nightly build? + description: > + Please verify this crash still happens in the latest nightly build first. It may already be fixed there: + [Nightly builds](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds). + options: + - label: I have checked the latest nightly build and the crash is still reproducible + required: true + - type: checkboxes + attributes: + label: Is there an existing issue for this crash? + description: Please search to see if an issue already exists for the crash you encountered. + options: + - label: I have searched the existing issues + required: true + - type: input + id: version + attributes: + label: OrcaSlicer Version + description: Which version of Orca Slicer are you running? You can see the full version in `Help` -> `About Orca Slicer`. + placeholder: e.g. 2.5.0 + validations: + required: true + - type: input + id: working_version + attributes: + label: Regression compared to a previous version + description: Did it work in a previous version? + placeholder: e.g. 2.3.2 + validations: + required: false + - type: dropdown + id: os_type + attributes: + label: "Operating System (OS)" + description: "What OSes are you seeing the crash on?" + multiple: true + options: + - Linux + - macOS + - Windows + validations: + required: true + - type: input + id: os_version + attributes: + label: "OS Version" + description: "What OS version does this relate to?" + placeholder: "i.e. OS: Windows 7/8/10/11 ..., Ubuntu 22.04/Fedora 36 ..., macOS 10.15/11.1/12.3 ..." + validations: + required: true + - type: input + id: printer + attributes: + label: Printer + description: Which printer was selected + placeholder: Voron 2.4/VzBot/Prusa MK4/Bambu Lab X1 series/Bambu Lab P1P/... + validations: + required: true + - type: dropdown + id: crash_moment + attributes: + label: When does the crash happen? + description: Pick the point where Orca Slicer stops working. + options: + - Not sure + - On startup, before the main window appears + - When opening or importing a project or model + - While changing printer, filament or process settings + - While slicing + - In the 3D view, Preview or Assembly view + - When exporting G-code or sending a print to the printer + - On the Device tab, or connecting to a printer (camera, sync, login) + - While using a specific tool, dialog or calibration + - After resuming from sleep or changing monitors + - When closing the application + - No clear pattern + validations: + required: true + - type: dropdown + id: crash_frequency + attributes: + label: How often does it happen? + options: + - Not sure + - Every time + - Often, but not every time + - Rarely + - It only happened once + validations: + required: true + - type: dropdown + id: fresh_config + attributes: + label: Does it still crash with a fresh configuration? + description: > + Close Orca Slicer and rename your configuration folder (`%APPDATA%\OrcaSlicer` on Windows, + `$HOME/Library/Application Support/OrcaSlicer` on macOS, `$HOME/.config/OrcaSlicer` on Linux), + then start it again. Renaming keeps your settings, so you can put the folder back afterwards. + options: + - I have not tried this + - Yes, it still crashes + - No, the crash goes away + validations: + required: true + - type: textarea + id: reproduce_steps + attributes: + label: How to reproduce + description: Please describe the detailed steps that lead to the crash. + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. Orca Slicer closes + validations: + required: true + - type: textarea + id: system_info + attributes: + label: Additional system information + description: > + Display card and driver version are worth adding for crashes on startup or in the 3D view. + CPU and memory are worth adding for crashes while slicing. + placeholder: | + CPU: 11th gen Intel r core tm i7-1185g7/AMD Ryzen 7 6800h/... + Memory: 32/16 GB... + Display Card: NVIDIA Quadro P400/... + validations: + required: false + - type: textarea + id: file_uploads + attributes: + label: Project file, logs and crash report uploads + description: | + A crash report without logs usually cannot be acted on. Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB. + + * The **project file** used when the crash happened, zipped. Export it just before or after the crash, even if the plate is empty, since we need the configuration it carries. `File` -> `Save project as...` + * The whole **log folder**, zipped rather than single files picked out of it. `Help` -> `Show Configuration Folder` opens it, or find it at: + * Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\\AppData\Roaming\OrcaSlicer\log` + * macOS: `$HOME/Library/Application Support/OrcaSlicer/log` + * Linux: `$HOME/.config/OrcaSlicer/log` + * Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log` + * On Windows the crash itself is written to a separate `crash_*.log` in there, and that is the file we need most. If the zip comes out over 25 MB GitHub will refuse it, so attach the newest log and any `crash_*.log` on their own instead. + * The **operating system crash report**, on macOS and Linux, where Orca Slicer cannot write its own crash log. It is often the only record of where it died: + * macOS: Console.app -> Crash Reports, or `$HOME/Library/Logs/DiagnosticReports/`. The file starts with `OrcaSlicer` and ends in `.ips`. Zip it before attaching, GitHub does not accept `.ips` files. + * Linux: run `orca-slicer` from a terminal (Flatpak: `flatpak run com.orcaslicer.OrcaSlicer`) and paste everything it prints when it dies. On systemd systems `coredumpctl info orca-slicer` gives a backtrace. + placeholder: | + Zipped project file + Zipped log folder + Zipped macOS .ips crash report, or the terminal output on Linux + validations: + required: true + - type: checkboxes + id: file_checklist + attributes: + label: Checklist of files to include + options: + - label: Log folder + - label: Project file + - label: Operating system crash report (macOS and Linux) + - type: textarea + attributes: + label: Anything else? + description: | + Screenshots? References? Anything that will give us more context about the crash you are encountering! + validations: + required: false From bb8c2ae5ce9db94a6262455a89112442e92991cb Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sat, 12 Sep 2026 13:52:05 -0500 Subject: [PATCH 116/162] build: enable -Werror with a documented exception list (#15660) --- CMakeLists.txt | 143 +++++++++++++++++++++++++++++++------------------ 1 file changed, 91 insertions(+), 52 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85ee9c4232..d2880a7d4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -557,59 +557,101 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR elseif (NOT MINGW) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" ) endif () - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder" ) - # On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error. - add_compile_options(-Werror=return-type) + # Every warning is an error unless it appears in one of the two lists below. + # disabled - never wanted. Off everywhere, so it never warns or errors. + # demoted - wanted, not cleared yet. Still warns, does not error. - # Since some portions of code are just commented out or put under conditional compilation, there are - # a bunch of warning related to unused functions and variables. Suppress those warnings to not pollute - # compilers diagnostics output with warnings we not going to look at - add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs) + # Disabled. + set(warnings_disabled + reorder # members initialised in an order we chose + sign-compare # signed/unsigned comparisons throughout + misleading-indentation # false positives on mixed tabs and spaces + switch # unhandled enum value in a switch + unused-function # commented-out or conditionally compiled code + unused-variable # commented-out or conditionally compiled code + unused-but-set-variable # commented-out or conditionally compiled code + unused-label # commented-out or conditionally compiled code + unused-local-typedefs # commented-out or conditionally compiled code + ) + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + list(APPEND warnings_disabled deprecated-declarations) # legacy OpenGL calls + endif () + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) + list(APPEND warnings_disabled ignored-attributes) # from Eigen headers marked SYSTEM + endif () + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + list(APPEND warnings_disabled unknown-pragmas) # igl pragmas, GCC bug 66943 + endif () + foreach (w IN LISTS warnings_disabled) + add_compile_options(-Wno-${w}) + endforeach () - # Ignore signed/unsigned comparison warnings - add_compile_options(-Wno-sign-compare) + # Turn everything else into an error. Dependency headers are exempt because the SYSTEM + # include flag (-imsvc on clang-cl, -isystem elsewhere) keeps their diagnostics out, + # apart from GCC's maybe-uninitialized, demoted below. + add_compile_options(-Werror) - # The mismatch of tabs and spaces throughout the project can sometimes - # cause this warning to appear even though the indentation is fine. - # Some includes also cause the warning - add_compile_options(-Wno-misleading-indentation) + # Demoted. Remove a name once its category is cleared on every compiler. + set(warnings_demoted) + if (APPLE) + list(APPEND warnings_demoted + # MacDarkMode.mm makes two calls to AppKit's private titlebarViewController + # and one to a wxWidgets category on NSTableColumn whose header is not + # imported. Clearing it means declaring the private selectors ourselves, which + # needs a macOS build to verify. + objc-method-access + ) + endif () + if (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + list(APPEND warnings_demoted + # About two dozen GetProcAddress casts, most in the vendored dark_mode.hpp, + # retype FARPROC to a real signature. The __stdcall typedefs are identical to + # FARPROC on x64, so only arm64 reports them. Clearing them is a separate + # sweep. + cast-function-type-mismatch + ) + endif () + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + list(APPEND warnings_demoted + # maybe-uninitialized runs after inlining and reports inside boost/variant, + # boost/tuple and the bundled clipper header even with -isystem. + maybe-uninitialized - # Disable warning if enum value does not have a corresponding case in switch statement - add_compile_options(-Wno-switch) + # array-bounds is reported once, where ConfigOptionVector::set_at inlines + # into OrcaSlicer.cpp on a branch the preceding type test rules out. + array-bounds - # removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1) - # https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221 - if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0) - add_compile_options(-Wno-ignored-attributes) # Tamas: Eigen include dirs are marked as SYSTEM - endif() + # template-id-cdtor is a GCC 14+ warning in the bundled Clipper2 headers. + template-id-cdtor + ) + endif () + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + list(APPEND warnings_demoted + # enum-constexpr-conversion is a Clang warning that defaults to an error, + # present through clang 20 and gone in clang 21. + enum-constexpr-conversion + ) + endif () - # Clang reports legacy OpenGL calls as deprecated. Turn off the warning for now - # to reduce the clutter, we know about this one. It should be reenabled after - # we finally get rid of the deprecated code. - if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - add_compile_options(-Wno-deprecated-declarations) - endif() - - if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15) - include(CheckCXXCompilerFlag) - check_cxx_compiler_flag(-Wno-error=enum-constexpr-conversion HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV) - if(HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV) - add_compile_options(-Wno-error=enum-constexpr-conversion) - endif() - endif() - - #GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431 - # We will turn the warning of for GCC for now: - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - # GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431 - # We will turn the warning of for GCC for now: - add_compile_options(-Wno-unknown-pragmas) - endif() + # The list mixes names not every compiler has, so add each exception only where the + # compiler knows the warning. Probe with the positive -W, which an unknown + # warning fails on both compilers (GCC errors, Clang reports unknown-warning-option). + # An option that takes a =N argument rejects the bare -W, so fall back to + # -W=1 and demote with the trailing =. + include(CheckCXXCompilerFlag) + foreach (category IN LISTS warnings_demoted) + string(MAKE_C_IDENTIFIER "ORCA_HAS_W_${category}" _orca_has_w) + check_cxx_compiler_flag("-W${category}" ${_orca_has_w}) + if (${_orca_has_w}) + add_compile_options(-Wno-error=${category}) + else () + check_cxx_compiler_flag("-W${category}=1" ${_orca_has_w}_arg) + if (${${_orca_has_w}_arg}) + add_compile_options(-Wno-error=${category}=) + endif () + endif () + endforeach () # Compress the debug info with zstd to save space in Flatpak CI builds if(FLATPAK) @@ -619,10 +661,6 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR endif() endif() - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=template-id-cdtor" ) - endif() - endif() if (SLIC3R_ASAN) @@ -1212,8 +1250,9 @@ endif () if (NOT SLIC3R_WARNINGS) add_compile_options(-w) elseif (MSVC AND NOT IS_CLANG_CL) - # /we4715 is C4715, no return from a non-void function, matching the - # -Werror=return-type the GNU/Clang builds apply. + # /we4715 is C4715, no return from a non-void function, an error on the GNU/Clang + # builds under -Werror. MSVC is not in that model, so this stays a single promoted + # warning. add_compile_options(/W3 /we4715) endif () From c21e48450c44fbf9b08d4ed2647d7921899f47dd Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:21:14 +0300 Subject: [PATCH 117/162] Fix single-instance activation maximizing OrcaSlicer (#15665) --- src/slic3r/GUI/InstanceCheck.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/InstanceCheck.cpp b/src/slic3r/GUI/InstanceCheck.cpp index bc68a3f788..28c5176cb1 100644 --- a/src/slic3r/GUI/InstanceCheck.cpp +++ b/src/slic3r/GUI/InstanceCheck.cpp @@ -114,7 +114,10 @@ namespace instance_check_internal if (my_instance_hash == other_instance_hash) { BOOST_LOG_TRIVIAL(debug) << "win enum - found correct instance"; orca_slicer_hwnd = hwnd; - ShowWindow(hwnd, SW_SHOWMAXIMIZED); + // Do not alter the window state when opening a file in the existing instance. + // A minimized window still needs restoring before it can receive focus. + if (IsIconic(hwnd)) + ShowWindow(hwnd, SW_RESTORE); SetForegroundWindow(hwnd); return false; } From a7775296b0861a6755f023db4cd550d5095bddeb Mon Sep 17 00:00:00 2001 From: TheLegendTubaGuy <95944177+thelegendtubaguy@users.noreply.github.com> Date: Sun, 13 Sep 2026 05:29:35 -0500 Subject: [PATCH 118/162] Fix macOS custom color accuracy (#15283) * Fix macOS custom color accuracy * Fix wxWidgets dependency patch command * Apply macOS color patch to current wxWidgets branch --- ...001-macos-use-srgb-colour-components.patch | 29 +++++++++++++++++++ deps/wxWidgets/wxWidgets.cmake | 10 +++++++ 2 files changed, 39 insertions(+) create mode 100644 deps/wxWidgets/0001-macos-use-srgb-colour-components.patch diff --git a/deps/wxWidgets/0001-macos-use-srgb-colour-components.patch b/deps/wxWidgets/0001-macos-use-srgb-colour-components.patch new file mode 100644 index 0000000000..decbee0ad9 --- /dev/null +++ b/deps/wxWidgets/0001-macos-use-srgb-colour-components.patch @@ -0,0 +1,29 @@ +diff --git a/src/osx/cocoa/colour.mm b/src/osx/cocoa/colour.mm +index 31515d146f..86b33e94a2 100644 +--- a/src/osx/cocoa/colour.mm ++++ b/src/osx/cocoa/colour.mm +@@ -125,3 +125,3 @@ + wxOSXEffectiveAppearanceSetter helper; +- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] ) ++ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] ) + return [colRGBA redComponent]; +@@ -134,3 +134,3 @@ + wxOSXEffectiveAppearanceSetter helper; +- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] ) ++ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] ) + return [colRGBA greenComponent]; +@@ -143,3 +143,3 @@ + wxOSXEffectiveAppearanceSetter helper; +- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] ) ++ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] ) + return [colRGBA blueComponent]; +@@ -152,3 +152,3 @@ + wxOSXEffectiveAppearanceSetter helper; +- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] ) ++ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] ) + return [colRGBA alphaComponent]; +@@ -160,3 +160,3 @@ + { +- return [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] != nil; ++ return [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] != nil; + } diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 1e2cc85f78..e57e82f3e9 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -21,12 +21,22 @@ else () set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF") endif () +set(_wx_patch_command "") +if (APPLE) + set(_wx_patch_command + ${GIT_EXECUTABLE} checkout -f -- src/osx/cocoa/colour.mm + COMMAND ${GIT_EXECUTABLE} apply --verbose + ${CMAKE_CURRENT_LIST_DIR}/0001-macos-use-srgb-colour-components.patch + ) +endif () + orcaslicer_add_cmake_project( wxWidgets GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets" GIT_TAG v3.3.2 GIT_SHALLOW ON GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp + PATCH_COMMAND ${_wx_patch_command} DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG} CMAKE_ARGS -DwxBUILD_PRECOMP=ON From 15ebdc379918be1e6302920ebbb24565ed5f11de Mon Sep 17 00:00:00 2001 From: yw4z Date: Sun, 13 Sep 2026 14:41:27 +0300 Subject: [PATCH 119/162] enable menu icons on macOS and Linux for plate / background menus (#15620) Update GUI_Factories.cpp --- src/slic3r/GUI/GUI_Factories.cpp | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index d8e54978fa..05248c38df 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1392,7 +1392,7 @@ void MenuFactory::create_default_menu() { wxMenu* sub_menu_primitives = append_submenu_add_generic(&m_default_menu, ModelVolumeType::INVALID); wxMenu* sub_menu_handy = append_submenu_add_handy_model(&m_default_menu, ModelVolumeType::INVALID); -#ifdef __WINDOWS__ + append_submenu(&m_default_menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", []() {return true; }, m_parent); append_submenu(&m_default_menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "menu_add_part", @@ -1400,15 +1400,6 @@ void MenuFactory::create_default_menu() append_menu_item(&m_default_menu, wxID_ANY, _L("Add Models"), "", // ORCA: Add Models [](wxCommandEvent&) { plater()->add_file(); }, "menu_add_part", &m_default_menu, []() {return wxGetApp().plater()->can_add_model(); }, m_parent); -#else - append_submenu(&m_default_menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "", - []() {return true; }, m_parent); - append_submenu(&m_default_menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "", - []() {return true; }, m_parent); - append_menu_item(&m_default_menu, wxID_ANY, _L("Add Models"), "", // ORCA: Add Models - [](wxCommandEvent&) { plater()->add_file(); }, "", &m_default_menu, - []() {return wxGetApp().plater()->can_add_model(); }, m_parent); -#endif m_default_menu.AppendSeparator(); @@ -1789,7 +1780,6 @@ void MenuFactory::create_plate_menu() wxMenu* sub_menu_primitives = append_submenu_add_generic(menu, ModelVolumeType::INVALID); wxMenu* sub_menu_handy = append_submenu_add_handy_model(menu, ModelVolumeType::INVALID); -#ifdef __WINDOWS__ append_submenu(menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "menu_add_part", []() {return true; }, m_parent); append_submenu(menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "menu_add_part", @@ -1797,15 +1787,7 @@ void MenuFactory::create_plate_menu() append_menu_item(menu, wxID_ANY, _L("Add Models"), "", // ORCA: Add Models [](wxCommandEvent&) { plater()->add_file(); }, "menu_add_part", menu, []() {return wxGetApp().plater()->can_add_model(); }, m_parent); -#else - append_submenu(menu, sub_menu_primitives, wxID_ANY, _L("Add Primitive"), "", "", - []() {return true; }, m_parent); - append_submenu(menu, sub_menu_handy, wxID_ANY, _L("Add Handy models"), "", "", - []() {return true; }, m_parent); - append_menu_item(menu, wxID_ANY, _L("Add Models"), "", // ORCA: Add Models - [](wxCommandEvent&) { plater()->add_file(); }, "", menu, - []() {return wxGetApp().plater()->can_add_model(); }, m_parent); -#endif + append_menu_item_replace_all_with_stl(menu); From 9e8fbc17dde6699650d9fd88e48bd53419b2d2bd Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sun, 13 Sep 2026 14:39:55 -0500 Subject: [PATCH 120/162] ci: clear the per-run annotations and revive the weekly doxygen job (#15659) --- .github/workflows/build_all.yml | 4 ++-- .github/workflows/build_orca.yml | 4 +++- .github/workflows/doxygen-docs.yml | 17 ++++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 570d3203ed..ae5231e784 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -100,7 +100,7 @@ jobs: matrix: include: ${{ fromJSON(vars.SELF_HOSTED && '[{"arch":"x64","os":"orca-win-server","compiler":"clang"}]' - || '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-arm","compiler":"clang"}]') }} + || '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-vs2026-arm","compiler":"clang"}]') }} needs: check_build_script # Don't run scheduled builds on forks: if: ${{ !cancelled() && needs.check_build_script.result == 'success' && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} @@ -169,7 +169,7 @@ jobs: if: ${{ !cancelled() && success() && !vars.SELF_HOSTED }} uses: ./.github/workflows/unit_tests.yml with: - os: windows-11-arm + os: windows-11-vs2026-arm artifact: ${{ github.sha }}-tests-windows-arm64 test-dir: build-arm64/tests unit_tests_macos_arm64: diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 1b7fd37a0f..4b53767d4f 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -96,12 +96,14 @@ jobs: id: ccache if: ${{ !inputs.macos-combine-only }} continue-on-error: true - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@v1.2.24 with: key: ${{ env.CCACHE_LEG }} max-size: 3G restore: false save: false + # ccache -s runs as its own step; no summary table per job. + job-summary: '' - name: Restore compiler cache if: ${{ steps.ccache.outcome == 'success' }} diff --git a/.github/workflows/doxygen-docs.yml b/.github/workflows/doxygen-docs.yml index 6af7255fa3..d7d2f982e7 100644 --- a/.github/workflows/doxygen-docs.yml +++ b/.github/workflows/doxygen-docs.yml @@ -19,11 +19,18 @@ jobs: permissions: contents: read steps: - - uses: thejerrybao/setup-swap-space@v1 - with: - swap-space-path: /swapfile - swap-size-gb: 8 - remove-existing-swap-files: true + # Doxygen with call graphs over all of src/ outgrows the runner's RAM; + # replace the runner's swapfile with an 8 GB one. + - name: Grow swap space + run: | + set -euo pipefail + sudo swapoff -a + sudo rm -f /swapfile + sudo fallocate -l 8G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + free -h - name: Checkout repository uses: actions/checkout@v7 From d643b10ac4495e81192136dbe69f55a80949ce23 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sun, 13 Sep 2026 15:46:03 -0500 Subject: [PATCH 121/162] build: expand PrintConfig.hpp option lists twice per class instead of five times (#15658) --- src/libslic3r/PrintConfig.hpp | 84 +++++++++++++++++---------------- tests/libslic3r/test_config.cpp | 55 +++++++++++++++++++++ 2 files changed, 98 insertions(+), 41 deletions(-) diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index f7cbe8b2e5..18e66adb34 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1011,41 +1011,46 @@ public: \ { PrintConfigDef::handle_legacy(opt_key, value); } #define PRINT_CONFIG_CLASS_ELEMENT_DEFINITION(r, data, elem) BOOST_PP_TUPLE_ELEM(0, elem) BOOST_PP_TUPLE_ELEM(1, elem); -#define PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION2(KEY) cache.opt_add(BOOST_PP_STRINGIZE(KEY), base_ptr, this->KEY); -#define PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION(r, data, elem) PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION2(BOOST_PP_TUPLE_ELEM(1, elem)) -#define PRINT_CONFIG_CLASS_ELEMENT_HASH(r, data, elem) boost::hash_combine(seed, BOOST_PP_TUPLE_ELEM(1, elem).hash()); -#define PRINT_CONFIG_CLASS_ELEMENT_EQUAL(r, data, elem) if (! (BOOST_PP_TUPLE_ELEM(1, elem) == rhs.BOOST_PP_TUPLE_ELEM(1, elem))) return false; -#define PRINT_CONFIG_CLASS_ELEMENT_LOWER(r, data, elem) \ - if (BOOST_PP_TUPLE_ELEM(1, elem) < rhs.BOOST_PP_TUPLE_ELEM(1, elem)) return true; \ - if (! (BOOST_PP_TUPLE_ELEM(1, elem) == rhs.BOOST_PP_TUPLE_ELEM(1, elem))) return false; +#define PRINT_CONFIG_CLASS_ELEMENT_VISIT(r, data, elem) if (! f(BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(1, elem)), this->BOOST_PP_TUPLE_ELEM(1, elem), rhs.BOOST_PP_TUPLE_ELEM(1, elem))) return; +// Each option list is expanded into the members and again into for_each_option_pair(), which calls +// f(key, this->option, rhs.option) in declaration order and stops when f returns false. hash(), +// operator==, operator< and initialize() iterate the options through that visitor. +#define PRINT_CONFIG_CLASS_COMMON_BODY(CLASS_NAME) \ + size_t hash() const throw() \ + { \ + size_t seed = 0; \ + this->for_each_option_pair(*this, [&seed](const char*, const auto &a, const auto&) { boost::hash_combine(seed, a.hash()); return true; }); \ + return seed; \ + } \ + bool operator==(const CLASS_NAME &rhs) const throw() \ + { \ + bool eq = true; \ + this->for_each_option_pair(rhs, [&eq](const char*, const auto &a, const auto &b) { eq = (a == b); return eq; }); \ + return eq; \ + } \ + bool operator!=(const CLASS_NAME &rhs) const throw() { return ! (*this == rhs); } \ + bool operator<(const CLASS_NAME &rhs) const throw() \ + { \ + int c = 0; \ + this->for_each_option_pair(rhs, [&c](const char*, const auto &a, const auto &b) { if (a < b) c = -1; else if (! (a == b)) c = 1; return c == 0; }); \ + return c < 0; \ + } \ +protected: \ + void initialize(StaticCacheBase &cache, const char *base_ptr) \ + { \ + this->for_each_option_pair(*this, [&cache, base_ptr](const char *key, const auto &a, const auto&) { cache.opt_add(key, base_ptr, a); return true; }); \ + } #define PRINT_CONFIG_CLASS_DEFINE(CLASS_NAME, PARAMETER_DEFINITION_SEQ) \ class CLASS_NAME : public StaticPrintConfig { \ STATIC_PRINT_CONFIG_CACHE(CLASS_NAME) \ public: \ BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_DEFINITION, _, PARAMETER_DEFINITION_SEQ) \ - size_t hash() const throw() \ + template void for_each_option_pair(const CLASS_NAME &rhs, F &&f) const \ { \ - size_t seed = 0; \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_HASH, _, PARAMETER_DEFINITION_SEQ) \ - return seed; \ - } \ - bool operator==(const CLASS_NAME &rhs) const throw() \ - { \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_EQUAL, _, PARAMETER_DEFINITION_SEQ) \ - return true; \ - } \ - bool operator!=(const CLASS_NAME &rhs) const throw() { return ! (*this == rhs); } \ - bool operator<(const CLASS_NAME &rhs) const throw() \ - { \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_LOWER, _, PARAMETER_DEFINITION_SEQ) \ - return false; \ - } \ -protected: \ - void initialize(StaticCacheBase &cache, const char *base_ptr) \ - { \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION, _, PARAMETER_DEFINITION_SEQ) \ + BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_VISIT, _, PARAMETER_DEFINITION_SEQ) \ } \ + PRINT_CONFIG_CLASS_COMMON_BODY(CLASS_NAME) \ }; #define PRINT_CONFIG_CLASS_DERIVED_CLASS_LIST_ITEM(r, data, i, elem) BOOST_PP_COMMA_IF(i) public elem @@ -1059,43 +1064,43 @@ protected: \ if (! (*static_cast(this) == static_cast(rhs))) return false; // Generic version, with or without new parameters. Don't use this directly. -#define PRINT_CONFIG_CLASS_DERIVED_DEFINE1(CLASS_NAME, CLASSES_PARENTS_TUPLE, PARAMETER_DEFINITION, PARAMETER_REGISTRATION, PARAMETER_HASHES, PARAMETER_EQUALS) \ +#define PRINT_CONFIG_CLASS_DERIVED_DEFINE1(CLASS_NAME, CLASSES_PARENTS_TUPLE, PARAMETER_DEFINITION, PARAMETER_VISIT) \ class CLASS_NAME : PRINT_CONFIG_CLASS_DERIVED_CLASS_LIST(CLASSES_PARENTS_TUPLE) { \ STATIC_PRINT_CONFIG_CACHE_DERIVED(CLASS_NAME) \ CLASS_NAME() : PRINT_CONFIG_CLASS_DERIVED_INITIALIZER(CLASSES_PARENTS_TUPLE, 0) { assert(s_cache_##CLASS_NAME.initialized()); *this = s_cache_##CLASS_NAME.defaults(); } \ public: \ PARAMETER_DEFINITION \ + template void for_each_option_pair(const CLASS_NAME &rhs, F &&f) const { PARAMETER_VISIT } \ size_t hash() const throw() \ { \ size_t seed = 0; \ BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_DERIVED_HASH, _, BOOST_PP_TUPLE_TO_SEQ(CLASSES_PARENTS_TUPLE)) \ - PARAMETER_HASHES \ + this->for_each_option_pair(*this, [&seed](const char*, const auto &a, const auto&) { boost::hash_combine(seed, a.hash()); return true; }); \ return seed; \ } \ bool operator==(const CLASS_NAME &rhs) const throw() \ { \ BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_DERIVED_EQUAL, _, BOOST_PP_TUPLE_TO_SEQ(CLASSES_PARENTS_TUPLE)) \ - PARAMETER_EQUALS \ - return true; \ + bool eq = true; \ + this->for_each_option_pair(rhs, [&eq](const char*, const auto &a, const auto &b) { eq = (a == b); return eq; }); \ + return eq; \ } \ bool operator!=(const CLASS_NAME &rhs) const throw() { return ! (*this == rhs); } \ protected: \ CLASS_NAME(int) : PRINT_CONFIG_CLASS_DERIVED_INITIALIZER(CLASSES_PARENTS_TUPLE, 1) {} \ void initialize(StaticCacheBase &cache, const char* base_ptr) { \ PRINT_CONFIG_CLASS_DERIVED_INITCACHE(CLASSES_PARENTS_TUPLE) \ - PARAMETER_REGISTRATION \ + this->for_each_option_pair(*this, [&cache, base_ptr](const char *key, const auto &a, const auto&) { cache.opt_add(key, base_ptr, a); return true; }); \ } \ }; // Variant without adding new parameters. #define PRINT_CONFIG_CLASS_DERIVED_DEFINE0(CLASS_NAME, CLASSES_PARENTS_TUPLE) \ - PRINT_CONFIG_CLASS_DERIVED_DEFINE1(CLASS_NAME, CLASSES_PARENTS_TUPLE, BOOST_PP_EMPTY(), BOOST_PP_EMPTY(), BOOST_PP_EMPTY(), BOOST_PP_EMPTY()) + PRINT_CONFIG_CLASS_DERIVED_DEFINE1(CLASS_NAME, CLASSES_PARENTS_TUPLE, BOOST_PP_EMPTY(), BOOST_PP_EMPTY()) // Variant with adding new parameters. #define PRINT_CONFIG_CLASS_DERIVED_DEFINE(CLASS_NAME, CLASSES_PARENTS_TUPLE, PARAMETER_DEFINITION_SEQ) \ PRINT_CONFIG_CLASS_DERIVED_DEFINE1(CLASS_NAME, CLASSES_PARENTS_TUPLE, \ BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_DEFINITION, _, PARAMETER_DEFINITION_SEQ), \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION, _, PARAMETER_DEFINITION_SEQ), \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_HASH, _, PARAMETER_DEFINITION_SEQ), \ - BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_EQUAL, _, PARAMETER_DEFINITION_SEQ)) + BOOST_PP_SEQ_FOR_EACH(PRINT_CONFIG_CLASS_ELEMENT_VISIT, _, PARAMETER_DEFINITION_SEQ)) // This object is mapped to Perl as Slic3r::Config::PrintObject. PRINT_CONFIG_CLASS_DEFINE( @@ -2148,11 +2153,8 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE0( #undef STATIC_PRINT_CONFIG_CACHE_BASE #undef STATIC_PRINT_CONFIG_CACHE_DERIVED #undef PRINT_CONFIG_CLASS_ELEMENT_DEFINITION -#undef PRINT_CONFIG_CLASS_ELEMENT_EQUAL -#undef PRINT_CONFIG_CLASS_ELEMENT_LOWER -#undef PRINT_CONFIG_CLASS_ELEMENT_HASH -#undef PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION -#undef PRINT_CONFIG_CLASS_ELEMENT_INITIALIZATION2 +#undef PRINT_CONFIG_CLASS_ELEMENT_VISIT +#undef PRINT_CONFIG_CLASS_COMMON_BODY #undef PRINT_CONFIG_CLASS_DEFINE #undef PRINT_CONFIG_CLASS_DERIVED_CLASS_LIST #undef PRINT_CONFIG_CLASS_DERIVED_CLASS_LIST_ITEM diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index 9a70ecbaeb..3813e2df3f 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -1161,3 +1161,58 @@ TEST_CASE("min_object_distance yields no floor when an FFF config lacks the opti CHECK_THAT(min_object_distance(c), Catch::Matchers::WithinAbs(12., 1e-9)); } } + +TEST_CASE("Static print configs compare, order and hash by their option values", "[Config]") +{ + // PrintObjectConfig comes from PRINT_CONFIG_CLASS_DEFINE; PrintConfig combines MachineEnvelopeConfig + // and GCodeConfig through PRINT_CONFIG_CLASS_DERIVED_DEFINE. Both generate hash(), operator==, + // operator< and the option registration from the same option list. The hash inequalities use fixed + // inputs, so they are deterministic; they check that hash() covers the changed option. + SECTION("default-constructed configs are equal and find their options by key") + { + PrintObjectConfig a, b; + REQUIRE(a == b); + REQUIRE(a.hash() == b.hash()); + REQUIRE_FALSE(a < b); + REQUIRE_FALSE(b < a); + REQUIRE(a.optptr("layer_height") == &a.layer_height); + REQUIRE(a.optptr("brim_object_gap") == &a.brim_object_gap); + } + + SECTION("one differing option makes the configs unequal and orders them") + { + PrintObjectConfig a, b; + b.layer_height.value = a.layer_height.value + 0.05; + REQUIRE(a != b); + REQUIRE(a.hash() != b.hash()); + REQUIRE(a < b); + REQUIRE_FALSE(b < a); + } + + SECTION("ordering is decided by the first option in declaration order that differs") + { + PrintObjectConfig a, b; + a.brim_object_gap.value = b.brim_object_gap.value + 1.0; // declared first + a.layer_height.value = b.layer_height.value - 0.05; // declared later, points the other way + REQUIRE(b < a); + REQUIRE_FALSE(a < b); + } + + SECTION("a derived config sees differences in its parents and in its own options") + { + PrintConfig a, b; + REQUIRE(a == b); + REQUIRE(a.hash() == b.hash()); + + b.gcode_flavor.value = b.gcode_flavor.value == gcfMarlinLegacy ? gcfKlipper : gcfMarlinLegacy; // GCodeConfig parent + REQUIRE(a != b); + REQUIRE(a.hash() != b.hash()); + + PrintConfig c, d; + d.skirt_distance.value = c.skirt_distance.value + 1.0; // PrintConfig's own list + REQUIRE(c != d); + REQUIRE(c.hash() != d.hash()); + REQUIRE(c.optptr("skirt_distance") == &c.skirt_distance); + REQUIRE(c.optptr("gcode_flavor") == &c.gcode_flavor); + } +} From 636b623cb7a9cefe6194e367354876531d1cb581 Mon Sep 17 00:00:00 2001 From: Daniel Williams <35799546+danielwoz@users.noreply.github.com> Date: Mon, 14 Sep 2026 04:55:42 +0800 Subject: [PATCH 122/162] tests: regression test that every PrintRegion/Object field is in a preset key list (#13466) Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> --- tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_preset_options.cpp | 70 +++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 tests/libslic3r/test_preset_options.cpp diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 5c10ab1496..2f859f46fe 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -19,6 +19,7 @@ add_executable(${_TEST_NAME}_tests test_preset_setting_id.cpp test_preset_diff.cpp test_vendor_cache.cpp + test_preset_options.cpp test_elephant_foot_compensation.cpp test_fill_corner_smoothing.cpp test_filament_mixer.cpp diff --git a/tests/libslic3r/test_preset_options.cpp b/tests/libslic3r/test_preset_options.cpp new file mode 100644 index 0000000000..1763f5fbc7 --- /dev/null +++ b/tests/libslic3r/test_preset_options.cpp @@ -0,0 +1,70 @@ +// Regression test for the "option in def + UI but missing from preset key list" +// crash class. +// +// The print preset's DynamicPrintConfig is seeded with only the keys returned by +// Preset::print_options() (PresetBundle.cpp). A field added to PrintRegionConfig +// or PrintObjectConfig and registered via print_config_def plus a TabPrint +// optgroup, but left out of print_options(), still gets its control built; on tab +// activation reload_config -> get_config_value dispatches to opt_bool/opt_int on a +// DynamicPrintConfig with no entry for the key, and the accessor null-derefs the +// result of option(key). +// +// The invariant asserted here is the inverse: every key declared on +// PrintRegionConfig and PrintObjectConfig appears in Preset::print_options() or +// Preset::filament_options(), the two preset key lists that seed a print preset's +// DynamicConfig. + +#include + +#include "libslic3r/Preset.hpp" +#include "libslic3r/PrintConfig.hpp" + +#include + +using namespace Slic3r; + +namespace { + +// Deprecated keys renamed in handle_legacy() (ironing_direction -> +// ironing_angle, wall_infill_order -> wall_sequence); neither is in a +// preset list. Register new options in a preset list, not here. +const std::set kDeprecatedRegionFields = { + "ironing_direction", + "wall_infill_order", +}; + +void check_keys_are_in_a_preset(const t_config_option_keys& keys, const std::string& class_name) +{ + REQUIRE_FALSE(keys.empty()); + const auto& print_options = Preset::print_options(); + const auto& filament_options = Preset::filament_options(); + const std::set in_print(print_options.begin(), print_options.end()); + const std::set in_filament(filament_options.begin(), filament_options.end()); + for (const std::string& key : keys) { + DYNAMIC_SECTION(class_name << "::" << key) + { + INFO("'" << key << "' on " << class_name + << " is missing from " + "Preset::print_options()/filament_options(); add it to " + "s_Preset_print_options (or s_Preset_filament_options) in Preset.cpp."); + const bool registered = in_print.count(key) || in_filament.count(key) || kDeprecatedRegionFields.count(key); + REQUIRE(registered); + } + } +} + +} // namespace + +// Bodies are laid out like the rest of the test suite rather than collapsed +// onto the brace line. +// clang-format off +TEST_CASE("Every PrintRegionConfig field is registered in a preset key list", "[Preset][Config]") +{ + check_keys_are_in_a_preset(PrintRegionConfig::defaults().keys(), "PrintRegionConfig"); +} + +TEST_CASE("Every PrintObjectConfig field is registered in a preset key list", "[Preset][Config]") +{ + check_keys_are_in_a_preset(PrintObjectConfig::defaults().keys(), "PrintObjectConfig"); +} +// clang-format on From 26fa1694d962a557d6681c9b74466069e279be4d Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Sun, 13 Sep 2026 17:08:08 -0500 Subject: [PATCH 123/162] ci: save the compiler cache from cancelled and failed builds too (#15668) --- .github/workflows/build_all.yml | 17 +++++++++++++---- .github/workflows/build_orca.yml | 20 +++++++++++++++----- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index ae5231e784..10edec5aaa 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -313,6 +313,7 @@ jobs: echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV" shell: bash - name: Restore compiler cache + id: ccache_restore uses: actions/cache/restore@v6 with: path: .flatpak-builder/ccache @@ -371,24 +372,31 @@ jobs: save-cache: false arch: ${{ matrix.variant.arch }} upload-artifact: false + # The build has just touched everything it can use, so an object untouched + # for a week is dead, usually orphaned by a flag change. - name: Compiler cache statistics if: always() run: | export CCACHE_DIR=$PWD/.flatpak-builder/ccache + ccache --evict-older-than 7d ccache -s -v || ccache -s shell: bash # Save the new entry first, then drop the older ones for this leg on this - # ref, so a failed save leaves the previous entry in place. + # ref, so a failed save leaves the previous entry in place. A cancelled or + # failed build saves too, since what it compiled is still valid; a restore + # that did not finish does not, since the directory may be a truncated copy. - name: Save compiler cache id: ccache_save - if: github.event_name != 'pull_request' + if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }} uses: actions/cache/save@v6 with: path: .flatpak-builder/ccache key: ${{ env.CCACHE_ENTRY }} - name: Drop older compiler cache entries - if: ${{ steps.ccache_save.outcome == 'success' }} + if: ${{ always() && steps.ccache_save.outcome == 'success' }} # The container has no gh, so this is the list and delete over the REST API. + # Older means a lower run id, so two runs finishing close together keep + # the newer entry whichever of them cleans up last. continue-on-error: true env: GH_TOKEN: ${{ github.token }} @@ -396,7 +404,8 @@ jobs: api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/caches" curl -sSf -H "Authorization: Bearer $GH_TOKEN" \ "$api?ref=$GITHUB_REF&key=ccache-$CCACHE_LEG-&per_page=100" \ - | jq -r --arg keep "$CCACHE_ENTRY" '.actions_caches[] | select(.key != $keep) | .id' \ + | jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \ + '.actions_caches[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \ | while read -r id; do curl -sSf -X DELETE -H "Authorization: Bearer $GH_TOKEN" "$api/$id" done diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 4b53767d4f..95ec52a65d 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -106,6 +106,7 @@ jobs: job-summary: '' - name: Restore compiler cache + id: ccache_restore if: ${{ steps.ccache.outcome == 'success' }} uses: actions/cache/restore@v6 with: @@ -724,31 +725,40 @@ jobs: asset_content_type: application/octet-stream max_releases: 1 + # The build has just touched everything it can use, so an object + # untouched for a week is dead, usually orphaned by a flag change. - name: Compiler cache statistics if: ${{ always() && steps.ccache.outcome == 'success' }} shell: bash - run: ccache -s -v || ccache -s + run: | + ccache --evict-older-than 7d + ccache -s -v || ccache -s # Entries are immutable, so the new one is saved first and the older # ones for this leg on this ref are dropped afterwards: a failed save - # leaves the previous entry in place. + # leaves the previous entry in place. A cancelled or failed build saves + # too, since what it compiled is still valid; a restore that did not + # finish does not, since the directory may be a truncated copy. - name: Save compiler cache id: ccache_save - if: ${{ steps.ccache.outcome == 'success' && github.event_name != 'pull_request' }} + if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }} uses: actions/cache/save@v6 with: path: ${{ github.workspace }}/.ccache key: ${{ env.CCACHE_ENTRY }} - name: Drop older compiler cache entries - if: ${{ steps.ccache_save.outcome == 'success' }} + if: ${{ always() && steps.ccache_save.outcome == 'success' }} # A read-only token (fork PRs) cannot delete; that only costs storage. + # Older means a lower run id, so two runs finishing close together keep + # the newer entry whichever of them cleans up last. continue-on-error: true shell: bash env: GH_TOKEN: ${{ github.token }} run: | gh cache list --ref "$GITHUB_REF" --key "ccache-$CCACHE_LEG-" --limit 100 --json id,key \ - | jq -r --arg keep "$CCACHE_ENTRY" '.[] | select(.key != $keep) | .id' \ + | jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \ + '.[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \ | tr -d '\r' \ | while read -r id; do gh cache delete "$id"; done From aef9ca2efb54df9a8ae020fc53d5a7bec359c229 Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Mon, 14 Sep 2026 01:42:49 +0300 Subject: [PATCH 124/162] Fix label object error for toolchanges without object instances (#15666) --- src/libslic3r/GCode.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index e9cdb620e0..4aa45a60ed 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -6308,8 +6308,13 @@ LayerResult GCode::process_layer( all_label_ids.insert(inst.label_object_id); break; } - std::vector filament_instances_id(all_label_ids.begin(), all_label_ids.end()); - m_filament_instances_code = _encode_label_ids_to_base64(filament_instances_id); + // Orca: A scheduled extruder may have no object instances on this layer. + // Clear any pending mask so it cannot be emitted for the wrong toolchange. + m_filament_instances_code.clear(); + if (!all_label_ids.empty()) { + std::vector filament_instances_id(all_label_ids.begin(), all_label_ids.end()); + m_filament_instances_code = _encode_label_ids_to_base64(filament_instances_id); + } } // The inline _extrude hook may already have taken the snapshot mid-extrusion on a From fd63164268bf6835612ee719cc77e124c687c974 Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Mon, 14 Sep 2026 03:03:45 +0300 Subject: [PATCH 125/162] Fix Printer Agent preset undo (#15645) Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> --- src/slic3r/GUI/OptionsGroup.cpp | 8 +++--- src/slic3r/GUI/Tab.cpp | 44 ++++----------------------------- 2 files changed, 8 insertions(+), 44 deletions(-) diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 7d63556eff..99151ca599 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -798,11 +798,9 @@ void ConfigOptionsGroup::back_to_config_value(const DynamicPrintConfig& config, #endif else if (opt_key == "printer_agent") { - // why: printer_agent is a coString kept out of m_opt_map. The generic non-opt_map revert - // below restores the edited config from get_value(), but a deregistered/"(missing)" saved - // id has no selectable row, so the field yields no value and the edited config keeps the - // user's interim pick -> stuck dirty. Restore the SAVED id straight into the edited config - // (displayable or not; config is the saved or system baseline), then repaint and notify. + // A deregistered/"(missing)" saved id has no selectable row, so the field yields no + // value. Restore the saved id directly instead of letting the generic revert path read + // the field value back into the edited config. const std::string saved_id = config.opt_string("printer_agent"); set_value(opt_key, saved_id); this->change_opt_value(opt_key, saved_id); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 2dedb23365..914e4cc7bb 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5029,28 +5029,12 @@ void TabPrinter::build_fff() auto registered_printer_agents = NetworkAgentFactory::get_registered_printer_agents(); if (!registered_printer_agents.empty()) { - ConfigOptionDef def; - def.type = coString; - def.gui_type = ConfigOptionDef::GUIType::printer_agent_select; - def.width = 3 * Field::def_width_wider() / 2; - def.label = L("Printer Agent"); - def.tooltip = L("Select the network agent implementation for printer communication. " + option = optgroup->get_option("printer_agent"); + option.opt.gui_type = ConfigOptionDef::GUIType::printer_agent_select; + option.opt.width = 3 * Field::def_width_wider() / 2; + option.opt.tooltip = L("Select the network agent implementation for printer communication. " "Available agents are registered at startup."); - def.mode = comAdvanced; - - // Create the field without get_option() so it is not registered in m_opt_map. - // ConfigOptionsGroup handles printer_agent before the generic mapped write path. - Line agent_line = optgroup->create_single_option_line(Option(def, "printer_agent")); - optgroup->append_line(agent_line); - if (Field* agent_field = get_field("printer_agent")) - { - if (auto* choice = dynamic_cast(agent_field); choice && choice->getWindow()) - choice->set_value(m_config->opt_string("printer_agent"), false); - } - - // Register by hand so the UnsavedChanges dialog can render a row for it. - wxGetApp().sidebar().get_searcher().add_key("printer_agent", m_type, optgroup->title, - optgroup->config_category()); + optgroup->append_single_option_line(option); } } @@ -5912,15 +5896,6 @@ void TabPrinter::reload_config() if (m_active_page && m_active_page->title() == "Multimaterial") m_active_page->set_value("extruders_count", int(m_extruders_count)); - // m_opt_map-driven reload does not cover printer_agent, so sync this custom field explicitly. - if (Field* agent_field = get_field("printer_agent")) - { - if (auto* choice = dynamic_cast(agent_field); choice && choice->getWindow()) - { - const std::string selected_agent = m_config->opt_string("printer_agent"); - choice->set_value(selected_agent, false); - } - } } void TabPrinter::activate_selected_page(std::function throw_if_canceled) @@ -5932,15 +5907,6 @@ void TabPrinter::activate_selected_page(std::function throw_if_canceled) if (m_active_page && m_active_page->title() == "Multimaterial") m_active_page->set_value("extruders_count", int(m_extruders_count)); - // m_opt_map-driven reload does not cover printer_agent, so sync this custom field explicitly. - if (Field* agent_field = get_field("printer_agent")) - { - if (auto* choice = dynamic_cast(agent_field); choice && choice->getWindow()) - { - const std::string selected_agent = m_config->opt_string("printer_agent"); - choice->set_value(selected_agent, false); - } - } } void TabPrinter::clear_pages() From c5b152b722245f96d6baad88830b38f4c4a3e167 Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Mon, 14 Sep 2026 05:37:05 +0200 Subject: [PATCH 126/162] CLI: record command-line overrides in different_settings_to_system (#15642) * CLI: record command-line overrides in different_settings_to_system Settings passed on the command line (--sparse-infill-density 25% ...) override the loaded presets when m_extra_config is applied to m_print_config, but nothing recorded them in different_settings_to_system. The exported project therefore carried the new value with no mark that it was modified, and re-opening it in the GUI reverted it to the system preset's value -- the same failure the preset-leaf diff fixes for user presets, via a different source of override. The key set comes from m_config, not m_extra_config. read_cli() puts only what the user typed into m_config and setup() adds nothing but CLI-own defaults (none of the keys run() materialises there is a preset option), whereas the CLI writes its own values into m_extra_config (has_filament_switcher, filament_colour, filament_map ...), which must not be reported as user overrides. Values are snapshotted just before the apply and only keys the override actually changed are recorded: a typed value equal to the loaded one modifies nothing, and listing it would read as a spurious difference against what the GUI writes. Each key lands in the column(s) whose preset type owns it -- process, every filament, printer -- and a key already present is not duplicated. Keys no preset owns (curr_bed_type, a project setting) land nowhere, as in the GUI. Follow-up to #15595, split out at review. * CLI: judge command-line overrides the way the value is read Review follow-ups on the override recording: - Lists were compared as whole serialized strings. read_cli() builds a fresh one-entry list, so --nozzle-temperature 245 against 245,245,245 on a three-filament project was recorded in every filament column although nothing changed. Lists are now compared entry by entry with a missing entry read as the first, as get_at() reads it (and as resize() pads). - The log line fired for every changed key, including ones no preset owns (curr_bed_type) and which therefore land in no column. It now fires only when a column took the key. - m_print_config.has(key) straight after apply(m_extra_config, true) was always true, both configs sharing print_config_def; removed. columns.size() >= 2 also always holds after the resize to filament_count + 2 -- different_settings_to_system is not a CLI option, so nothing in between can shrink it -- but that rests on code far away, so it stays a plain check rather than an assert: release builds compile asserts out, and a _GLIBCXX_ASSERTIONS build would abort on columns[0]. Deliberately NOT done: comparing a key the loaded config lacks against its built-in default. On reopen the GUI restores an unlisted key from the SYSTEM preset, not the default. A 3MF written before an option existed leaves it absent here, so --sparse-infill-density 20% (the default) against a Prusa system 15% would go unrecorded and be reverted to 15%. Absent keys stay always-recorded: over-recording is cosmetic, under-recording loses the value. Verified that such a key really is absent at this point, rather than filled from the system preset. Reported by HanifKoh and raistlin7447 in review of #15642. --- src/OrcaSlicer.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index d3e24437fb..499e73d073 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -3846,9 +3846,94 @@ int CLI::run(int argc, char **argv) } } + //ORCA: settings passed on the command line (--sparse-infill-density 25% ...) override the loaded + // presets right here, so they belong in different_settings_to_system just as a preset + // override does. Without them re-opening the exported project in the GUI shows nothing + // modified and reverts those values to the system presets'. + // + // The keys come from m_config, not m_extra_config: read_cli() puts only what the user typed + // into m_config (setup() adds nothing but CLI-own defaults), whereas the CLI writes its own + // values into m_extra_config. Only keys whose value the override actually changed are + // recorded -- a typed value equal to the loaded one modifies nothing -- and each lands in + // the column(s) whose preset type owns it: [0] process, [1..n-2] filaments, [n-1] printer. + // + // "Changed" is judged the way the value is read: a list is compared entry by entry with a + // missing entry read as the first, as get_at() does -- so --nozzle-temperature 245 against + // 245,245,245 is no change, although the two serialize differently. + // + // A key the loaded config does not carry at all is always recorded, even if the typed value + // equals the built-in default. On reopen the GUI restores an unlisted key from the SYSTEM + // preset, which need not match that default: a 3MF written before an option existed leaves + // it absent here, and --sparse-infill-density 20% (the default) against a Prusa system 15% + // would otherwise go unrecorded and be reverted. Over-recording is cosmetic; under-recording + // loses the value. + std::map> cli_override_before; + for (const std::string &key : m_config.keys()) { + if (!m_extra_config.has(key)) + continue; + const ConfigOption *loaded = m_print_config.option(key); + cli_override_before[key].reset(loaded != nullptr ? loaded->clone() : nullptr); // null: always recorded + } + // Apply command line options to a more specific DynamicPrintConfig which provides normalize() // (command line options override --load files) m_print_config.apply(m_extra_config, true); + + if (!cli_override_before.empty()) { + std::vector &columns = m_print_config.option("different_settings_to_system", true)->values; + auto owned_by = [](const std::vector &options, const std::string &key) { + return std::find(options.begin(), options.end(), key) != options.end(); + }; + auto add_to_column = [&columns](size_t index, const std::string &key) { + std::vector keys; + Slic3r::unescape_strings_cstyle(columns[index], keys); + if (std::find(keys.begin(), keys.end(), key) == keys.end()) { + keys.push_back(key); + columns[index] = Slic3r::escape_strings_cstyle(keys); + } + }; + auto same_value = [](const ConfigOption *a, const ConfigOption *b) { + if (a == nullptr || b == nullptr) + return false; + const auto *va = dynamic_cast(a); + const auto *vb = dynamic_cast(b); + if (va == nullptr || vb == nullptr) + return va == vb && a->serialize() == b->serialize(); + const std::vector ea = va->vserialize(), eb = vb->vserialize(); + if (ea.empty() || eb.empty()) + return ea.empty() && eb.empty(); + for (size_t i = 0; i < std::max(ea.size(), eb.size()); ++i) + if (ea[i < ea.size() ? i : 0] != eb[i < eb.size() ? i : 0]) + return false; + return true; + }; + //ORCA: always true after the resize to filament_count + 2 above, and nothing in between can + // shrink the column vector -- different_settings_to_system is not a CLI option. Kept as + // a check rather than an assert: release builds compile asserts out, so an assert would + // protect nothing, while a build with _GLIBCXX_ASSERTIONS would abort on columns[0]. + if (columns.size() >= 2) { + for (const auto &[key, before] : cli_override_before) { + if (same_value(before.get(), m_print_config.option(key))) + continue; + bool recorded = false; + if (owned_by(Preset::print_options(), key)) { + add_to_column(0, key); + recorded = true; + } + if (owned_by(Preset::filament_options(), key)) { + for (size_t i = 1; i + 1 < columns.size(); ++i) + add_to_column(i, key); + recorded = true; + } + if (owned_by(Preset::printer_options(), key)) { + add_to_column(columns.size() - 1, key); + recorded = true; + } + if (recorded) + BOOST_LOG_TRIVIAL(info) << boost::format("CLI: override %1% recorded in different_settings_to_system") % key; + } + } + } // Normalizing after importing the 3MFs / AMFs m_print_config.normalize_fdm(); From 4373bc36978d1ea58829360d7fc85fb89418482a Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Mon, 14 Sep 2026 13:38:51 +0800 Subject: [PATCH 127/162] Add a Nightly Parity Workflow Runs orca-test-repo's full override-sweep effect stage (two shards) and the GUI-vs-CLI parity harness every night against the latest successful build_all Linux AppImage, with sources checked out at that build's commit. Kept out of the per-build regression step, whose time budget it would exceed, and never gates a build. --- .github/workflows/parity_nightly.yml | 219 +++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 .github/workflows/parity_nightly.yml diff --git a/.github/workflows/parity_nightly.yml b/.github/workflows/parity_nightly.yml new file mode 100644 index 0000000000..79f5c9b514 --- /dev/null +++ b/.github/workflows/parity_nightly.yml @@ -0,0 +1,219 @@ +# Nightly parity checks from OrcaSlicer/orca-test-repo, kept out of the +# per-build "Run external slicer regression tests" step because they take far +# longer than that step's budget: +# effect - the CLI override sweep's full effect stage: every landed option +# re-sliced on its own to see whether it changes the G-code +# harness - the GUI-vs-CLI parity harness (metrics only, never fails) +# Both test the latest successful build_all.yml Linux AppImage from main, with +# sources checked out at the commit that build was made from. Nothing here +# gates a build or a PR. +name: Parity Nightly + +on: + schedule: + # build_all.yml starts at 17:00 UTC and has finished by ~20:00 + - cron: "0 21 * * *" + workflow_dispatch: + inputs: + test_repo_ref: + description: "orca-test-repo ref to run" + required: false + default: "main" + build_branch: + description: "branch whose latest successful build_all artifact to test" + required: false + default: "main" + fixtures: + description: "harness fixture ids, space-separated (empty = all)" + required: false + default: "" + cli_presets: + description: "harness lane C presets: flat = flatten inherits first, raw = leaf profile as-is" + required: false + default: "flat" + +permissions: + contents: read + actions: read + +jobs: + build: + name: Find the build to test + # Don't run scheduled checks on forks + if: github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer' + runs-on: ubuntu-24.04 + outputs: + run_id: ${{ steps.find.outputs.run_id }} + head_sha: ${{ steps.find.outputs.head_sha }} + steps: + - id: find + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: | + set -euo pipefail + gh run list --workflow build_all.yml \ + --branch "${{ inputs.build_branch || 'main' }}" \ + --status success --limit 1 --json databaseId,headSha \ + --jq '"run_id=\(.[0].databaseId)\nhead_sha=\(.[0].headSha)"' \ + >> "$GITHUB_OUTPUT" + cat "$GITHUB_OUTPUT" + + effect: + name: Override sweep effect stage (shard ${{ matrix.shard }}) + needs: build + runs-on: ubuntu-24.04 + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + # orca-test-repo's parity/effect_routing.json holds a 2-way split, + # ~12.5 min a shard on this runner + shard: [0, 1] + steps: + - &checkout-suite + name: Check out the test suite + uses: actions/checkout@v7 + with: + repository: OrcaSlicer/orca-test-repo + ref: ${{ inputs.test_repo_ref || 'main' }} + path: orca-test-repo + + # The AppImage ships only packed preset caches, so profiles and the CLI + # option surface come from the sources the build was made from + - &checkout-slicer + name: Check out OrcaSlicer at the build's commit + uses: actions/checkout@v7 + with: + ref: ${{ needs.build.outputs.head_sha }} + path: slicer + lfs: 'false' + + - &extract-appimage + name: Download and extract the Linux AppImage + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: | + set -euo pipefail + gh run download "${{ needs.build.outputs.run_id }}" --dir appimage \ + --pattern "OrcaSlicer_Linux_ubuntu_2404*" + appimage=$(find appimage -name "*.AppImage" ! -name "*aarch64*" | head -1) + [ -n "$appimage" ] || { echo "no x86_64 AppImage in run ${{ needs.build.outputs.run_id }}"; exit 1; } + chmod +x "$appimage" + "$appimage" --appimage-extract > /dev/null + # The bare binary cannot find the AppImage's bundled libraries; AppRun + # sets them up and execs it, so exit codes and signals pass through + [ -x squashfs-root/AppRun ] || { echo "no AppRun in the AppImage"; exit 1; } + echo "ORCA_BIN=$PWD/squashfs-root/AppRun" >> "$GITHUB_ENV" + echo "ORCA_SOURCE=$PWD/slicer" >> "$GITHUB_ENV" + + - name: Install the AppImage's host runtime dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + libopengl0 libglu1-mesa libgl1 libegl1 libwebkit2gtk-4.1-0 + + - uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: Install suite dependencies + run: pip install -r orca-test-repo/requirements.txt + + - name: Run the override sweep with the full effect stage + id: run + continue-on-error: true + working-directory: orca-test-repo + run: | + set -o pipefail + # -rA keeps the per-stage summaries, which pytest otherwise swallows + # for passing tests + python -m pytest test_cli_overrides.py -c pytest.ini -v -rA \ + --effect-full --effect-shard ${{ matrix.shard }}/2 \ + --orca-bin "$ORCA_BIN" --orca-source "$ORCA_SOURCE" \ + 2>&1 | tee ../sweep.log + + - name: Publish job summary + if: always() + run: | + { + echo "## Override sweep effect stage, shard ${{ matrix.shard }}/2" + echo "Build ${{ needs.build.outputs.head_sha }} (run ${{ needs.build.outputs.run_id }})" + echo '```' + grep -E "\[override sweep" sweep.log || echo "no stage summaries, see the log" + grep -E "^=+ .*(passed|failed)" sweep.log | tail -1 || true + echo '```' + } >> "$GITHUB_STEP_SUMMARY" + + - name: Upload the override report + if: always() + uses: actions/upload-artifact@v7 + with: + name: override-report-shard${{ matrix.shard }} + path: | + orca-test-repo/.pytest_cache/override_report.json + sweep.log + if-no-files-found: warn + retention-days: 30 + + # The sweep step continues on error so the summary and report still get + # published; this puts the failure back on the job + - name: Fail the job if the sweep failed + if: steps.run.outcome == 'failure' + run: | + echo "the override sweep failed, see the job summary and the uploaded report" >&2 + exit 1 + + harness: + name: GUI-vs-CLI parity harness + needs: build + runs-on: ubuntu-24.04 + timeout-minutes: 180 + steps: + - *checkout-suite + - *checkout-slicer + - *extract-appimage + + - name: Install display tooling and the AppImage's host runtime + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + xvfb xdotool imagemagick openbox mesa-utils \ + libopengl0 libglu1-mesa libgl1 libegl1 libwebkit2gtk-4.1-0 + + - name: Run the parity harness + run: | + set -euo pipefail + fixtures=() + for f in ${{ inputs.fixtures || '' }}; do + fixtures+=(--fixture "$f") + done + # 2 GUI displays: ~1.5 cores peak / ~1.9 GB on this 4-vCPU runner, + # and each fixture is fully isolated, so results match a serial run + python3 orca-test-repo/parity/run_parity.py \ + --slicer-root "$ORCA_SOURCE" --bin "$ORCA_BIN" \ + --cli-presets "${{ inputs.cli_presets || 'flat' }}" \ + --gui-workers 2 --out "$PWD/parity-out" "${fixtures[@]}" + + - name: Publish job summary + if: always() + run: | + if [ -f parity-out/report.md ]; then + cat parity-out/report.md >> "$GITHUB_STEP_SUMMARY" + else + echo "the harness produced no report, see the log" >> "$GITHUB_STEP_SUMMARY" + fi + + - name: Drop per-lane datadirs before upload + if: always() + run: rm -rf parity-out/*/seed parity-out/*/datadir-* || true + + - name: Upload the scorecard and evidence + if: always() + uses: actions/upload-artifact@v7 + with: + name: parity-scorecard + path: parity-out/ + if-no-files-found: warn + retention-days: 30 From ffb4f192c1bcab178e1eb25f74afbb630f0a9c61 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Mon, 14 Sep 2026 14:19:25 +0800 Subject: [PATCH 128/162] Fix macOS UI issue in publish dialog. Remove item_size helper in TabCtrl and its relevant setter --- src/slic3r/GUI/PublishSettingsDialog.cpp | 3 --- src/slic3r/GUI/Widgets/Button.cpp | 9 ++++++--- src/slic3r/GUI/Widgets/TabCtrl.cpp | 23 +++++++---------------- src/slic3r/GUI/Widgets/TabCtrl.hpp | 5 ----- 4 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 16b0b6201c..e63cec7615 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -1037,9 +1037,6 @@ size_t PublishSettingsDialog::section_group_for(Section kind) section.mixed_tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); section.mixed_tabs->SetFont(Label::Body_14); section.mixed_tabs->SetBackgroundColour(GetBackgroundColour()); - // The mixed tabs carry full swatch compositions: give them a touch more room than the - // filament tabs so neighbouring compositions stay distinguishable (must precede AppendItem). - section.mixed_tabs->SetItemSpace(FromDIP(3)); page_sizer->Add(section.mixed_tabs, 0, wxEXPAND | wxTOP, FromDIP(2)); section.mixed_tabs->Hide(); } diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 22b1c34cab..5f03636f18 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -311,8 +311,11 @@ void Button::render(wxDC& dc) } } auto szContent = textSize; + // Whether the measured content reserved the text/icon gap. macOS measures an empty label + // as 0-high, so the gap is skipped there; the dot must not advance past it in that case. + const bool gap_reserved = szContent.y > 0; if (icon.bmp().IsOk()) { - if (szContent.y > 0) { + if (gap_reserved) { //BBS norrow size between text and icon if (vertical) szContent.y += spacing; @@ -357,10 +360,10 @@ void Button::render(wxDC& dc) dc.DrawBitmap(icon.bmp(), pt); //BBS norrow size between text and icon if (vertical) { - pt.y += szIcon.y + spacing; + pt.y += szIcon.y + (gap_reserved ? spacing : 0); pt.x = rcContent.x; } else { - pt.x += szIcon.x + spacing; + pt.x += szIcon.x + (gap_reserved ? spacing : 0); pt.y = rcContent.y; } } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 34de109b8f..ef23e2c5e4 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -99,7 +99,7 @@ int TabCtrl::AppendItem(const wxString& item, int image, int selImage, void* cli btns.push_back(btn); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); - sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, item_space); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); sizer->AddStretchSpacer(1); relayout(); return btns.size() - 1; @@ -256,12 +256,12 @@ void TabCtrl::relayout() int item = sel + 1; int first = 0; for (int i = 0; i < item; ++i) - offset += btns[i]->GetMinSize().x + item_space * 2; + offset += btns[i]->GetMinSize().x; if (item < btns.size()) - offset += btns[item]->GetMinSize().x + item_space * 2; + offset += btns[item]->GetMinSize().x; int width = GetSize().x; for (int i = 0; i < btns.size(); ++i) { - auto size = btns[i]->GetMinSize().x + item_space * 2; + auto size = btns[i]->GetMinSize().x; if (i < sel && offset > width) { sizer->Show(i * 2 + 1, false); sizer->Show(i * 2 + 2, false); @@ -284,26 +284,17 @@ void TabCtrl::relayout() if (item >= btns.size()) --item; // Keep spacing 2 ~ 10 TAB_BUTTON_SPACE - int b = GetSize().x - offset - 10 - (item + 1 - first) * item_space * 8; + int b = GetSize().x - offset - 10 - (item + 1 - first) * 16; sizer->GetItem(item * 2 + 2)->SetMinSize({b > 0 ? b : 0, 0}); Layout(); } -void TabCtrl::SetItemSpace(int space) -{ - if (space < 0 || space == item_space) - return; - item_space = space; - relayout(); - Refresh(); -} - int TabCtrl::GetFullSize() const { - // Mirrors relayout(): a 10px leading spacer plus every button's min width and spacing. + // Mirrors relayout(): a 10px leading spacer plus every button's min width. int width = 10; for (const Button* btn : btns) - width += btn->GetMinSize().x + item_space * 2; + width += btn->GetMinSize().x; return width; } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 493c4edee5..d89da145af 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -14,7 +14,6 @@ class TabCtrl : public StaticBox int sel = -1; wxFont bold; - int item_space = 2; // space around each button, both sides (SetItemSpace) public: TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); @@ -64,10 +63,6 @@ public: int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; - // Extra space around each tab button (in px on both sides). Defaults to the control-wide - // standard; call before appending items so every button picks it up. - void SetItemSpace(int space); - int GetFullSize() const; private: From 31f6eb2718491ba34272786c826ba577a4410777 Mon Sep 17 00:00:00 2001 From: HanifKoh <76276251+HanifKoh@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:26:32 +0800 Subject: [PATCH 129/162] Keep the First Value When a Per-Filament Variant Option Is Too Short (#15639) update_values_to_printer_extruders_for_multiple_filaments picks each filament's value from the flattened (filament x variant) columns of every per-filament variant option. When a column index fell past the end of the option's values, it skipped that filament and left the zero the output vector was created with. The GUI always hands this function full columns, but the CLI does not: - a CLI override of a single value, such as --nozzle-temperature=211 on a four-filament project, came out as 211,0,0,0, so three filaments would print at 0 C; - loading fewer filament presets than the project has filaments left the remaining filaments' columns missing, so filament_cooling_before_tower came out as 10,10,0,0 and filament_ramming_volumetric_speed as -1,-1,0,0. An out-of-range column now keeps the option's first value, the fallback get_at() and the sibling gather step already use. The seven per-type copies of the loop are replaced by that same gather_option_values helper, moved above the function; it now takes its caller's name for its log lines. An empty option, which has no first value, is given one registered default per filament first; it used to be replaced with zeros. On a partial load a filament whose preset was not loaded takes the first filament's value rather than its own preset's, which the CLI does not load; for the options seen in practice those agree. --- src/libslic3r/PrintConfig.cpp | 215 ++++-------------- .../test_config_variant_expansion.cpp | 28 +++ 2 files changed, 67 insertions(+), 176 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 4c27995ba0..e8ac749bd3 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -10936,6 +10936,28 @@ std::vector DynamicPrintConfig::update_values_to_printer_extruders(DynamicP return variant_index; } +// Regathers a vector option's values through per-slot source indices (one input index per +// output slot). Out-of-range indices keep the first value, matching get_at's fallback. +template +static void gather_option_values(const char *caller, const std::string &key, OptType *opt, const std::vector &slot_param_indices) +{ + if (!opt || opt->values.empty()) { + BOOST_LOG_TRIVIAL(warning) << caller << boost::format(", Line %1%: option %2% not found or empty, skipping")%__LINE__%key; + return; + } + std::vector new_values; + new_values.reserve(slot_param_indices.size()); + for (int idx : slot_param_indices) { + if (idx < 0 || static_cast(idx) >= opt->values.size()) { + BOOST_LOG_TRIVIAL(warning) << caller << boost::format(", Line %1%: option %2% slot index %3% out of range, keeping first value")%__LINE__%key%idx; + new_values.emplace_back(opt->values.front()); + } + else + new_values.emplace_back(opt->values[idx]); + } + opt->values = std::move(new_values); +} + void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filaments(DynamicPrintConfig& printer_config, int extruder_count, int extruder_nozzle_volume_count, std::set& key_set, std::string id_name, std::string variant_name) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", Line %1%: extruder_count %2%, extruder_nozzle_volume_count %3%")%__LINE__ %extruder_count %extruder_nozzle_volume_count; @@ -11013,155 +11035,18 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: can not find opt define for %2%")%__LINE__%key; continue; } + // An empty option has no first value to fall back on; give it one registered default per filament. + if (auto *vec = dynamic_cast(this->option(key)); vec && vec->empty() && optdef->default_value) + vec->resize(filament_count, optdef->default_value.get()); switch (optdef->type) { - case coStrings: - { - ConfigOptionStrings * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coInts: - { - ConfigOptionInts * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coFloats: - { - ConfigOptionFloats * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coPercents: - { - ConfigOptionPercents * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coFloatsOrPercents: - { - ConfigOptionFloatsOrPercents * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coBools: - { - ConfigOptionBools * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } - case coEnums: - { - ConfigOptionEnumsGeneric * opt = this->option(key); - if (!opt) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; - break; - } - std::vector new_values; - - new_values.resize(filament_count); - for (int f_index = 0; f_index < filament_count; f_index++) - { - if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; - continue; - } - new_values[f_index] = opt->get_at(variant_index[f_index]); - } - opt->values = new_values; - break; - } + case coStrings: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coInts: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coFloats: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coPercents: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coFloatsOrPercents: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coBools: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; + case coEnums: gather_option_values(__FUNCTION__, key, this->option(key), variant_index); break; default: BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: unsupported option type for %2%")%__LINE__%key; break; @@ -11180,28 +11065,6 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen } } -// Regathers a vector option's values through per-slot source indices (one input index per -// output slot). Out-of-range indices keep the first value, matching get_at's fallback. -template -static void gather_option_values(const std::string &key, OptType *opt, const std::vector &slot_param_indices) -{ - if (!opt || opt->values.empty()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found or empty, skipping")%__LINE__%key; - return; - } - std::vector new_values; - new_values.reserve(slot_param_indices.size()); - for (int idx : slot_param_indices) { - if (idx < 0 || static_cast(idx) >= opt->values.size()) { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% slot index %3% out of range, keeping first value")%__LINE__%key%idx; - new_values.emplace_back(opt->values.front()); - } - else - new_values.emplace_back(opt->values[idx]); - } - opt->values = std::move(new_values); -} - void DynamicPrintConfig::update_filament_config_values_for_multiple_extruders(DynamicPrintConfig& printer_config, const std::unordered_map>& filament_variant_uses, int extruder_count, int extruder_nozzle_volume_count, @@ -11296,13 +11159,13 @@ void DynamicPrintConfig::update_filament_config_values_for_multiple_extruders(Dy continue; } switch (optdef->type) { - case coStrings: gather_option_values(key, this->option(key), slot_param_indices); break; - case coInts: gather_option_values(key, this->option(key), slot_param_indices); break; - case coFloats: gather_option_values(key, this->option(key), slot_param_indices); break; - case coPercents: gather_option_values(key, this->option(key), slot_param_indices); break; - case coFloatsOrPercents: gather_option_values(key, this->option(key), slot_param_indices); break; - case coBools: gather_option_values(key, this->option(key), slot_param_indices); break; - case coEnums: gather_option_values(key, this->option(key), slot_param_indices); break; + case coStrings: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coInts: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coFloats: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coPercents: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coFloatsOrPercents: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coBools: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; + case coEnums: gather_option_values(__FUNCTION__, key, this->option(key), slot_param_indices); break; default: BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: unsupported option type for %2%")%__LINE__%key; break; diff --git a/tests/libslic3r/test_config_variant_expansion.cpp b/tests/libslic3r/test_config_variant_expansion.cpp index 2469789d5b..d8e09539bb 100644 --- a/tests/libslic3r/test_config_variant_expansion.cpp +++ b/tests/libslic3r/test_config_variant_expansion.cpp @@ -484,6 +484,34 @@ TEST_CASE("update_values_to_printer_extruders_for_multiple_filaments resolves pe REQUIRE(config.option("filament_max_volumetric_speed")->values == std::vector({12., 21.})); REQUIRE(config.option("filament_self_index")->values == std::vector({1, 2})); } + + SECTION("a variant option shorter than the filament slots keeps its first value instead of zero") { + DynamicPrintConfig config; + config.option("extruder_type", true)->values = {etDirectDrive, etDirectDrive}; + config.option("nozzle_volume_type", true)->values = {nvtStandard, nvtHighFlow}; + config.option("extruder_variant_list", true)->values = {"Direct Drive Standard,Direct Drive High Flow", + "Direct Drive Standard,Direct Drive High Flow"}; + make_filament_arrays(config); + config.option("filament_map", true)->values = {1, 2}; + // no loaded preset carries the key, so only its single registered default is present + config.option("filament_cooling_before_tower", true)->values = {10.}; + // only the first filament's two variant columns were loaded + config.option("filament_ramming_volumetric_speed", true)->values = {-1., -2.}; + + std::vector> nozzle_volume_types; + int extruder_count = 2; + int count = config.get_extruder_nozzle_volume_count(extruder_count, nozzle_volume_types); + + config.update_values_to_printer_extruders_for_multiple_filaments(config, extruder_count, count, filament_keys, + "filament_self_index", "filament_extruder_variant"); + + // filament 2 resolves to column 3 (its extruder's High Flow column), past the end of both vectors + REQUIRE_THAT(config.option("filament_cooling_before_tower")->values, + Catch::Matchers::Approx(std::vector({10., 10.}))); + REQUIRE_THAT(config.option("filament_ramming_volumetric_speed")->values, + Catch::Matchers::Approx(std::vector({-1., -1.}))); + REQUIRE(config.option("filament_max_volumetric_speed")->values == std::vector({12., 21.})); + } } // update_values_from_multi_to_multi_2 walks the DESTINATION PRINTER's variant list while writing From 00429da73928550a88c5dc73c683a1d8078d61f5 Mon Sep 17 00:00:00 2001 From: HanifKoh <76276251+HanifKoh@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:28:08 +0800 Subject: [PATCH 130/162] Apply the GUI's Mixed Filament Rules on the CLI (#15636) A valid mixed filament already slices the same on the CLI as in the GUI; these are the places where the CLI still skipped a rule the GUI applies. - Keep the prime tower when a mixed filament is used, even if every --load-filaments preset is the same. A mixed filament swaps between its components every layer, so turning the tower off left the swaps with nothing to purge on. - Leave a mixed slot's row and column of the flush matrix at zero when --filament-colour triggers a recompute, as the GUI does; a mixed slot never reaches a nozzle. - Refuse a mixed slot that has no filament of its own. Feature filament ids aimed at it were past the filament count, got reset to filament 1 and the model silently printed in one colour. - Refuse a plate that uses a mixed filament whose components are different filament types, the type half of the GUI's Sidebar::has_broken_mixed_filament. Missing or out-of-range components are already rejected for the whole project by validate(). get_extruders_under_cli gains an expand_mixed_slots flag so the gate can see mixed slots rather than their components; existing callers keep the expanded list. Both refusals exit with the new CLI_MIXED_FILAMENT_INVALID (-69). --- src/OrcaSlicer.cpp | 68 +++++++++++++++++++++++++++++++++++- src/libslic3r/Utils.hpp | 1 + src/slic3r/GUI/PartPlate.cpp | 4 +-- src/slic3r/GUI/PartPlate.hpp | 3 +- 4 files changed, 72 insertions(+), 4 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 499e73d073..b75c653eda 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -53,6 +53,7 @@ using namespace nlohmann; #include "libslic3r/libslic3r.h" #include "libslic3r/Config.hpp" +#include "libslic3r/FilamentMixer.hpp" #include "libslic3r/Preset.hpp" #include "libslic3r/Geometry.hpp" #include "libslic3r/GCode.hpp" @@ -162,6 +163,7 @@ std::map cli_errors = { {CLI_FILAMENT_CAN_NOT_MAP, "Some filaments cannot be mapped to correct extruders for multi-extruder Printer."}, {CLI_ONLY_ONE_TPU_SUPPORTED, "Not support printing 2 or more TPU filaments."}, {CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER, "Some filaments cannot be printed on the extruder mapped to."}, + {CLI_MIXED_FILAMENT_INVALID, "A mixed filament is invalid: its components are different filament types, or it has no filament of its own."}, {CLI_SLICING_ERROR, "Failed slicing the model. Please verify the slicing of all plates on Orca Slicer before uploading."}, {CLI_GCODE_PATH_CONFLICTS, " G-code conflicts detected after slicing. Please make sure the 3mf file can be successfully sliced in the latest Orca Slicer. If the file slices normally in Orca Slicer, try moving the wipe tower further from other models, as we use more conservative parameters for it during upload."}, {CLI_GCODE_PATH_IN_UNPRINTABLE_AREA, "Found G-code in unprintable area of multi-extruder printers after slicing. Please make sure the 3mf file can be successfully sliced in the latest Orca Slicer."} @@ -3700,6 +3702,15 @@ int CLI::run(int argc, char **argv) } } + // A mixed slot never reaches a nozzle, so its row and column stay empty, as in the GUI. + // Command line options are not merged into m_print_config yet, so they win here. + const ConfigOptionBools *is_mixed_opt = m_extra_config.option("filament_is_mixed"); + if (!is_mixed_opt) + is_mixed_opt = m_print_config.option("filament_is_mixed"); + auto is_mixed_slot = [is_mixed_opt](int idx) { + return is_mixed_opt && idx < static_cast(is_mixed_opt->values.size()) && is_mixed_opt->values[idx]; + }; + for (size_t nozzle_id = 0; nozzle_id < new_extruder_count; ++nozzle_id) { std::vector flush_vol_mtx = get_flush_volumes_matrix(flush_vol_matrix, nozzle_id, new_extruder_count); for (int from_idx = 0; from_idx < project_filament_count; from_idx++) { @@ -3709,7 +3720,7 @@ int CLI::run(int argc, char **argv) bool is_from_support = filament_is_support->get_at(from_idx); for (int to_idx = 0; to_idx < project_filament_count; to_idx++) { bool is_to_support = filament_is_support->get_at(to_idx); - if (from_idx == to_idx) { + if (from_idx == to_idx || is_mixed_slot(from_idx) || is_mixed_slot(to_idx)) { flush_vol_mtx[project_filament_count * from_idx + to_idx] = 0.f; } else { int flushing_volume = 0; @@ -3937,6 +3948,22 @@ int CLI::run(int argc, char **argv) // Normalizing after importing the 3MFs / AMFs m_print_config.normalize_fdm(); + // A mixed slot is virtual but still needs a filament entry of its own. Without one, feature + // filament ids aimed at it fall outside the filament count, are reset to the first filament + // and the model silently prints in a single colour. + if (const auto *is_mixed_opt = m_print_config.option("filament_is_mixed")) { + const auto &is_mixed = is_mixed_opt->values; + for (size_t slot = static_cast(std::max(filament_count, 0)); slot < is_mixed.size(); ++slot) { + if (!is_mixed[slot]) + continue; + BOOST_LOG_TRIVIAL(error) << boost::format("mixed filament slot %1% has no filament of its own, only %2% filaments are loaded; " + "load one filament per slot, including each mixed one") + % (slot + 1) % filament_count; + record_exit_reson(outfile_dir, CLI_MIXED_FILAMENT_INVALID, 0, cli_errors[CLI_MIXED_FILAMENT_INVALID], sliced_info); + flush_and_exit(CLI_MIXED_FILAMENT_INVALID); + } + } + m_print_config.option>("printer_technology", true)->value = printer_technology; bool has_wipe_tower_position = m_print_config.option("wipe_tower_x") && m_print_config.option("wipe_tower_y"); @@ -3991,6 +4018,15 @@ int CLI::run(int argc, char **argv) bool is_smooth_timelapse = false; if (enable_timelapse && timelapse_type_opt && (timelapse_type_opt->getInt() == TimelapseType::tlSmooth)) is_smooth_timelapse = true; + // A mixed filament swaps between its components every layer, so it needs the tower even when + // every loaded preset is the same. + if (disable_wipe_tower_after_mapping) { + if (const auto *is_mixed_opt = m_print_config.option("filament_is_mixed"); + is_mixed_opt && has_any_mixed_filament(is_mixed_opt->values)) { + disable_wipe_tower_after_mapping = false; + BOOST_LOG_TRIVIAL(info) << boost::format("%1%, set disable_wipe_tower_after_mapping back to false due to a mixed filament")%__LINE__; + } + } if (disable_wipe_tower_after_mapping) { if (is_smooth_timelapse) { @@ -6197,6 +6233,36 @@ int CLI::run(int argc, char **argv) flush_and_exit(CLI_ONLY_ONE_TPU_SUPPORTED); } + // Same type gate as the GUI's Sidebar::has_broken_mixed_filament: refuse a plate that uses a + // mixed slot whose components are different filament types. Missing or out-of-range + // components never get here, validate() already rejects them for the whole project. + const auto *is_mixed_opt = m_print_config.option("filament_is_mixed"); + const auto *components_opt = m_print_config.option("filament_mixed_components"); + if (is_mixed_opt && components_opt && has_any_mixed_filament(is_mixed_opt->values)) { + const auto &is_mixed = is_mixed_opt->values; + const auto &components = components_opt->values; + const size_t num_physical = static_cast(filament_count) - static_cast(std::count(is_mixed.begin(), is_mixed.end(), true)); + std::vector physical_types(num_physical); + for (size_t f_index = 0; f_index < num_physical; ++f_index) { + std::string displayed_type; + physical_types[f_index] = m_print_config.get_filament_type(displayed_type, static_cast(f_index)); + if (physical_types[f_index].empty()) + physical_types[f_index] = "PLA"; + } + const std::vector mismatched_slots = check_mixed_filament_type_consistency(is_mixed, components, physical_types); + // plate_filaments has mixed slots expanded to their components; the gate needs the slots. + const std::vector plate_slots = mismatched_slots.empty() ? std::vector() : + part_plate->get_extruders_under_cli(true, m_print_config, false); + for (size_t slot : mismatched_slots) { + if (std::find(plate_slots.begin(), plate_slots.end(), static_cast(slot) + 1) == plate_slots.end()) + continue; + BOOST_LOG_TRIVIAL(error) << boost::format("plate %1%: mixed filament %2% mixes components of different filament types") + % (index + 1) % (slot + 1); + record_exit_reson(outfile_dir, CLI_MIXED_FILAMENT_INVALID, index + 1, cli_errors[CLI_MIXED_FILAMENT_INVALID], sliced_info); + flush_and_exit(CLI_MIXED_FILAMENT_INVALID); + } + } + if (new_extruder_count > 1) { std::vector> unprintable_filament_vec; for (const std::set& filamnt_ids : unprintable_filament_ids) { diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 797894442a..c364860531 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -70,6 +70,7 @@ #define CLI_FILAMENT_CAN_NOT_MAP -66 #define CLI_ONLY_ONE_TPU_SUPPORTED -67 #define CLI_FILAMENTS_NOT_SUPPORTED_BY_EXTRUDER -68 +#define CLI_MIXED_FILAMENT_INVALID -69 #define CLI_SLICING_ERROR -100 #define CLI_GCODE_PATH_CONFLICTS -101 diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index c9370cc282..893260f934 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1717,7 +1717,7 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode, const Dynam return plate_extruders; } -std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config) const +std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config, bool expand_mixed_slots) const { std::vector plate_extruders; @@ -1878,7 +1878,7 @@ std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D // Expand mixed filament slots to their physical components. A mixed slot is virtual and // is never loaded into a tray, so callers (AMS mapping, filament checks) must see the // physical filaments it resolves to instead. - { + if (expand_mixed_slots) { auto* is_mixed_opt = full_config.option("filament_is_mixed"); auto* comp_strs_opt = full_config.option("filament_mixed_components"); if (is_mixed_opt && comp_strs_opt && has_any_mixed_filament(is_mixed_opt->values)) { diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 6d7eb18beb..e913ebaabf 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -350,7 +350,8 @@ public: // get used filaments from config, 1 based idx std::vector get_extruders(bool conside_custom_gcode = false) const; std::vector get_extruders(bool conside_custom_gcode, const DynamicPrintConfig& glb_config, const DynamicPrintConfig& project_config) const; - std::vector get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config) const; + // expand_mixed_slots = false keeps mixed filament slots as slots instead of their components. + std::vector get_extruders_under_cli(bool conside_custom_gcode, DynamicPrintConfig& full_config, bool expand_mixed_slots = true) const; std::vector get_extruders_without_support(bool conside_custom_gcode = false) const; // get used filaments from gcode result, 1 based idx std::vector get_used_filaments(); From 5f01f21661d5bd4002a6b261464ec4cd13cb3c7d Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Mon, 14 Sep 2026 17:44:17 +0800 Subject: [PATCH 131/162] Load Each Vendor Tree Once When the CLI Resolves System Presets Resolving a system preset through its vendor manifest loaded the whole vendor tree and the filament library from JSON, and the CLI did that separately for every --load-settings and --load-filaments file. A run with machine, process and filament presets parsed BBL's 2,879 profile files and the library's 512 three times over, about a second each. Keep the library and vendor bundles loaded by the manifest path on the PresetBundle that resolved them, keyed by source root, vendor and substitution rule, and have the CLI resolve every system preset through one bundle for the whole run. A failed load is not kept, so errors are reported as before. On a cube slice with X1C machine, process and PLA presets: 2.42 s -> 0.93 s, BBL.json opened once instead of three times, identical G-code. --- src/OrcaSlicer.cpp | 10 ++-- src/libslic3r/PresetBundle.cpp | 58 ++++++++++++------- src/libslic3r/PresetBundle.hpp | 14 +++++ .../libslic3r/test_preset_bundle_loading.cpp | 44 ++++++++++++++ 4 files changed, 100 insertions(+), 26 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index b75c653eda..f2ce73e1f4 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -2010,19 +2010,21 @@ int CLI::run(int argc, char **argv) } }; - auto resolve_preset = [&ensure_cli_preset_bundle](const std::string &file, DynamicPrintConfig &config, + // One resolver for the whole run, so presets from the same vendor tree share its load. + std::unique_ptr system_preset_resolver; + auto resolve_preset = [&ensure_cli_preset_bundle, &system_preset_resolver](const std::string &file, DynamicPrintConfig &config, std::string &config_type, const std::string &config_from, bool probe_type, std::string &error) { const auto *inherits = config.option(BBL_JSON_KEY_INHERITS); if (!probe_type && (inherits == nullptr || inherits->value.empty())) return true; - std::unique_ptr source_bundle; PresetBundle *bundle = nullptr; bool allow_source_manifest = false; if (config_from == "system") { - source_bundle = std::make_unique(); - bundle = source_bundle.get(); + if (!system_preset_resolver) + system_preset_resolver = std::make_unique(); + bundle = system_preset_resolver.get(); allow_source_manifest = true; } else { bundle = ensure_cli_preset_bundle(error); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 4b8fb03a02..9cef965490 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -549,30 +549,11 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ continue; try { - PresetBundle library_bundle; - const PresetBundle *base_bundle = nullptr; - if (vendor_id != ORCA_FILAMENT_LIBRARY && - boost::filesystem::is_regular_file(root_dir / (std::string(ORCA_FILAMENT_LIBRARY) + ".json"))) { - library_bundle.m_preserve_vendor_source_paths = true; - library_bundle.load_vendor_configs_from_json(root_dir.string(), ORCA_FILAMENT_LIBRARY, LoadSystem, - compatibility_rule, nullptr, false); - if (library_bundle.error_count() != 0) { - error = "OrcaFilamentLibrary contains invalid presets"; - return false; - } - base_bundle = &library_bundle; - } - - PresetBundle source_bundle; - source_bundle.m_preserve_vendor_source_paths = true; - source_bundle.load_vendor_configs_from_json(root_dir.string(), vendor_id, LoadSystem, - compatibility_rule, base_bundle, false); - if (source_bundle.error_count() != 0) { - error = "Vendor bundle contains invalid presets"; + const SourceManifestBundles *loaded = load_source_manifest(root_dir, vendor_id, compatibility_rule, error); + if (loaded == nullptr) return false; - } - const Preset *resolved = find_loaded(source_bundle); + const Preset *resolved = find_loaded(*loaded->vendor); if (resolved == nullptr) { if (error.empty()) error = "Source file is not an instantiated preset in its vendor manifest"; @@ -591,6 +572,39 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ return false; } +const PresetBundle::SourceManifestBundles *PresetBundle::load_source_manifest(const boost::filesystem::path &root_dir, + const std::string &vendor_id, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error) +{ + auto key = std::make_tuple(root_dir.string(), vendor_id, static_cast(compatibility_rule)); + if (auto it = m_source_manifest_bundles.find(key); it != m_source_manifest_bundles.end()) + return &it->second; + + SourceManifestBundles loaded; + if (vendor_id != ORCA_FILAMENT_LIBRARY && + boost::filesystem::is_regular_file(root_dir / (std::string(ORCA_FILAMENT_LIBRARY) + ".json"))) { + loaded.library = std::make_unique(); + loaded.library->m_preserve_vendor_source_paths = true; + loaded.library->load_vendor_configs_from_json(root_dir.string(), ORCA_FILAMENT_LIBRARY, LoadSystem, + compatibility_rule, nullptr, false); + if (loaded.library->error_count() != 0) { + error = "OrcaFilamentLibrary contains invalid presets"; + return nullptr; + } + } + + loaded.vendor = std::make_unique(); + loaded.vendor->m_preserve_vendor_source_paths = true; + loaded.vendor->load_vendor_configs_from_json(root_dir.string(), vendor_id, LoadSystem, + compatibility_rule, loaded.library.get(), false); + if (loaded.vendor->error_count() != 0) { + error = "Vendor bundle contains invalid presets"; + return nullptr; + } + return &m_source_manifest_bundles.emplace(std::move(key), std::move(loaded)).first->second; +} + bool PresetBundle::resolve_preset_config_type(DynamicPrintConfig &config, Preset::Type &type, const std::string &source_file, ForwardCompatibilitySubstitutionRule compatibility_rule, diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 353b6dc07d..a0fceb332b 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -652,6 +653,19 @@ private: bool m_generate_vendor_caches { false }; bool m_preserve_vendor_source_paths { false }; + // Vendor trees loaded by resolve_preset_config's manifest path, so every preset + // resolved through this bundle shares one load per source root and vendor. + struct SourceManifestBundles { + std::unique_ptr library; + std::unique_ptr vendor; + }; + std::map, SourceManifestBundles> m_source_manifest_bundles; + + const SourceManifestBundles *load_source_manifest(const boost::filesystem::path &root_dir, + const std::string &vendor_id, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error); + // Orca: validation only - flag any printer with two or more compatible // filament presets sharing one filament_id (ambiguous AMS subtype match). bool check_duplicate_filament_subtypes() const; diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index ecdede7053..5341e6c621 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -987,6 +987,50 @@ TEST_CASE("Resolution terminates when no vendor manifest exists", "[Preset][Bund CHECK(error == "Preset was not found in the loaded bundle"); } +TEST_CASE("Manifest-backed resolution reuses the vendor tree it already loaded", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path process_dir = dir.path() / "Acme" / "process"; + fs::create_directories(process_dir); + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" + << R"({"name":"fdm_process_common","sub_path":"process/base.json"},)" + << R"({"name":"Acme First","sub_path":"process/first.json"},)" + << R"({"name":"Acme Second","sub_path":"process/second.json"}]})"; + auto write_base = [&](double travel_speed) { + std::ofstream((process_dir / "base.json").string()) + << R"({"type":"process","name":"fdm_process_common","from":"system",)" + << R"("instantiation":"false","travel_speed":[")" << travel_speed << R"("]})"; + }; + auto write_child = [&](const std::string &file, const std::string &name) { + std::ofstream((process_dir / file).string()) + << R"({"type":"process","name":")" << name << R"(","from":"system",)" + << R"("instantiation":"true","inherits":"fdm_process_common"})"; + }; + write_base(111.0); + write_child("first.json", "Acme First"); + write_child("second.json", "Acme Second"); + + auto travel_speed = [&](PresetBundle &bundle, const std::string &file) { + DynamicPrintConfig raw; + raw.option(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, (process_dir / file).string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + return raw.option("travel_speed")->values.front(); + }; + + PresetBundle bundle; + CHECK_THAT(travel_speed(bundle, "first.json"), Catch::Matchers::WithinAbs(111.0, 1e-6)); + + // Only a reload would see this change. + write_base(222.0); + CHECK_THAT(travel_speed(bundle, "second.json"), Catch::Matchers::WithinAbs(111.0, 1e-6)); + + PresetBundle fresh; + CHECK_THAT(travel_speed(fresh, "second.json"), Catch::Matchers::WithinAbs(222.0, 1e-6)); +} + // Orca: a filament in the Orca Filament Library that names its compatible printers has to hide the generic // library filament sharing its alias, the same way a vendor owned filament does. Otherwise both are compatible // with that printer and the plater combo box lists the shared alias twice. From d4840901fc2476e6d141ab46da51a8e361705516 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Mon, 14 Sep 2026 18:51:48 +0800 Subject: [PATCH 132/162] Test That Failed Vendor Loads Are Not Kept and the Library Base Is Reused Cover the two cache paths the first test left open: a vendor tree that fails to load is retried on the next resolution instead of being served from the cache, and a type-probed filament resolved through resolve_preset_config_type reuses the OrcaFilamentLibrary base already loaded for a sibling. --- .../libslic3r/test_preset_bundle_loading.cpp | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 5341e6c621..29c38395ac 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1031,6 +1031,93 @@ TEST_CASE("Manifest-backed resolution reuses the vendor tree it already loaded", CHECK_THAT(travel_speed(fresh, "second.json"), Catch::Matchers::WithinAbs(222.0, 1e-6)); } +TEST_CASE("Manifest-backed resolution does not keep a vendor tree that failed to load", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path child_file = dir.path() / "Acme" / "process" / "child.json"; + auto write_manifest = [&](const std::string &leading_entry) { + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","process_list":[)" << leading_entry + << R"({"name":"Acme Process","sub_path":"process/child.json"}]})"; + }; + write_manifest("123,"); + fs::create_directories(child_file.parent_path()); + std::ofstream(child_file.string()) + << R"({"type":"process","name":"Acme Process","from":"system",)" + << R"("instantiation":"true","layer_height":"0.2"})"; + + PresetBundle bundle; + auto resolve = [&](std::string &error) { + DynamicPrintConfig raw; + raw.option(BBL_JSON_KEY_INHERITS, true)->value = "fdm_process_common"; + return bundle.resolve_preset_config(raw, Preset::TYPE_PRINT, child_file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error); + }; + + std::string error; + CHECK_FALSE(resolve(error)); + CHECK_FALSE(error.empty()); + + write_manifest(""); + error.clear(); + CHECK(resolve(error)); + CHECK(error.empty()); +} + +TEST_CASE("Manifest-backed resolution reuses the library base for type-probed files", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path library_pet = dir.path() / PresetBundle::ORCA_FILAMENT_LIBRARY / "filament" / "pet.json"; + const fs::path filament_dir = dir.path() / "Acme" / "filament"; + + std::ofstream((dir.path() / (std::string(PresetBundle::ORCA_FILAMENT_LIBRARY) + ".json")).string()) + << R"({"version":"1.0.0","name":"OrcaFilamentLibrary","filament_list":[)" + << R"({"name":"fdm_filament_pet","sub_path":"filament/pet.json","filament_id":"GFL99"}]})"; + fs::create_directories(library_pet.parent_path()); + auto write_library_pet = [&](double density) { + std::ofstream(library_pet.string()) + << R"({"type":"filament","name":"fdm_filament_pet","from":"system",)" + << R"("filament_id":"GFL99","instantiation":"false",)" + << R"("filament_type":["PETG"],"filament_density":[")" << density << R"("]})"; + }; + write_library_pet(1.27); + + std::ofstream((dir.path() / "Acme.json").string()) + << R"({"version":"1.0.0","name":"Acme","filament_list":[)" + << R"({"name":"Acme PETG","sub_path":"filament/petg.json","filament_id":"GFA00"},)" + << R"({"name":"Acme PETG Matte","sub_path":"filament/petg_matte.json","filament_id":"GFA01"}]})"; + fs::create_directories(filament_dir); + auto write_child = [&](const std::string &file, const std::string &name, const std::string &filament_id) { + std::ofstream((filament_dir / file).string()) + << R"({"type":"filament","name":")" << name << R"(","from":"system",)" + << R"("filament_id":")" << filament_id << R"(","instantiation":"true","inherits":"fdm_filament_pet"})"; + }; + write_child("petg.json", "Acme PETG", "GFA00"); + write_child("petg_matte.json", "Acme PETG Matte", "GFA01"); + + auto density = [](const DynamicPrintConfig &config) { + return config.option("filament_density")->values.front(); + }; + + PresetBundle bundle; + DynamicPrintConfig first; + first.option(BBL_JSON_KEY_INHERITS, true)->value = "fdm_filament_pet"; + std::string error; + REQUIRE(bundle.resolve_preset_config(first, Preset::TYPE_FILAMENT, (filament_dir / "petg.json").string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK_THAT(density(first), Catch::Matchers::WithinAbs(1.27, 1e-6)); + + // Only a reload would see this change. + write_library_pet(1.5); + + DynamicPrintConfig second; + Preset::Type type = Preset::TYPE_INVALID; + REQUIRE(bundle.resolve_preset_config_type(second, type, (filament_dir / "petg_matte.json").string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + CHECK(type == Preset::TYPE_FILAMENT); + CHECK_THAT(density(second), Catch::Matchers::WithinAbs(1.27, 1e-6)); +} + // Orca: a filament in the Orca Filament Library that names its compatible printers has to hide the generic // library filament sharing its alias, the same way a vendor owned filament does. Otherwise both are compatible // with that printer and the plater combo box lists the shared alias twice. From 70247ad298a1087c5d507b27a9f0e95f6c236b09 Mon Sep 17 00:00:00 2001 From: Daniel Williams <35799546+danielwoz@users.noreply.github.com> Date: Mon, 14 Sep 2026 20:37:04 +0800 Subject: [PATCH 133/162] Extract Layer::choose_ironing_extruder for unit-testable ironing routing (#13467) * Extract Layer::choose_ironing_extruder for unit-testable ironing routing The ironing extruder selection in make_ironing() was a 5-line nested conditional inlined at the top of the loop, with no isolated test coverage. Pull the gating into a static helper so the routing decision is unit-testable without spinning up the slicing pipeline. Pure refactor: the helper preserves the original logic bit-for-bit (NoIroning -> -1; AllSolid always enabled; TopSurfaces and TopmostOnly require some top shells or, in spiral mode, more than one bottom shell; TopmostOnly additionally requires being on the topmost layer; enabled ironing routes to solid_infill_filament). Add tests/fff_print/test_choose_ironing_extruder.cpp covering: - AllSolid regardless of layer position - TopSurfaces with top_shell_layers > 0 - TopSurfaces with top_shell_layers=0 + spiral mode + bottom_shell_layers>1 - TopmostOnly + topmost layer - NoIroning short-circuit - TopSurfaces with top_shell_layers=0 (and not spiral) -> disabled - TopSurfaces, spiral, but bottom_shell_layers=1 -> disabled - TopmostOnly on a non-topmost layer -> disabled * Move ironing routing test into the Fill subsystem file Rename the test to tests/libslic3r/test_fill.cpp and tag it [Fill] to match the subsystem it covers, use flat behavioral test cases with GENERATE for the parameterized ones, and drop the history narration from the code comments. * tests: move ironing routing tests into fff_print/test_fill.cpp Keeps the Fill tests in one file, alongside the existing ironing rotation-template test. --- src/libslic3r/Fill/Fill.cpp | 36 ++++++++++++------- src/libslic3r/Layer.hpp | 6 ++++ tests/fff_print/test_fill.cpp | 68 +++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 13 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index f5386b085c..28fabed8af 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -1595,6 +1595,25 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc return sparse_infill_polylines; } +// Returns the filament id (1-based) the region is ironed with, or -1 when the +// region is not ironed. AllSolid always irons. TopSurfaces and TopmostOnly need +// either some top shells or, in spiral mode, more than one bottom shell, and +// TopmostOnly additionally needs the layer to be the topmost one. +int Layer::choose_ironing_extruder(const PrintRegionConfig &cfg, + bool spiral_mode, + bool is_topmost_layer) +{ + if (cfg.ironing_type == IroningType::NoIroning) + return -1; + const bool gate = (cfg.ironing_type == IroningType::AllSolid) + || ((cfg.top_shell_layers > 0 || (spiral_mode && cfg.bottom_shell_layers > 1)) + && (cfg.ironing_type == IroningType::TopSurfaces + || (cfg.ironing_type == IroningType::TopmostOnly && is_topmost_layer))); + if (!gate) + return -1; + return cfg.top_surface_filament_id; +} + // Create ironing extrusions over top surfaces. void Layer::make_ironing() { @@ -1664,19 +1683,10 @@ void Layer::make_ironing() if (! layerm->slices.empty()) { IroningParams ironing_params; const PrintRegionConfig &config = layerm->region().config(); - if (config.ironing_type != IroningType::NoIroning && - (config.ironing_type == IroningType::AllSolid || - ((config.top_shell_layers > 0 || (this->object()->print()->config().spiral_mode && config.bottom_shell_layers > 1)) && - (config.ironing_type == IroningType::TopSurfaces || - (config.ironing_type == IroningType::TopmostOnly && layerm->layer()->upper_layer == nullptr))))) { - if (config.outer_wall_filament_id == config.top_surface_filament_id || config.wall_loops == 0) { - // Iron the whole face. - ironing_params.extruder = config.top_surface_filament_id; - } else { - // Iron just the infill. - ironing_params.extruder = config.top_surface_filament_id; - } - } + ironing_params.extruder = Layer::choose_ironing_extruder( + config, + /*spiral_mode=*/this->object()->print()->config().spiral_mode, + /*is_topmost_layer=*/layerm->layer()->upper_layer == nullptr); if (ironing_params.extruder != -1) { //TODO just_infill is currently not used. ironing_params.just_infill = false; diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 8a5aa78036..9be6b86139 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -16,6 +16,7 @@ using LayerPtrs = std::vector; class LayerRegion; using LayerRegionPtrs = std::vector; class PrintRegion; +class PrintRegionConfig; class PrintObject; class Print; @@ -200,6 +201,11 @@ public: FillAdaptive::Octree *support_fill_octree, FillLightning::Generator* lightning_generator) const; void make_ironing(); + // Returns the filament id (1-based) the region is ironed with, or -1 when the + // region is not ironed. + static int choose_ironing_extruder(const PrintRegionConfig &cfg, + bool spiral_mode, + bool is_topmost_layer); void make_contour_z(const sla::IndexedMesh &mesh); void export_region_slices_to_svg(const char *path) const; diff --git a/tests/fff_print/test_fill.cpp b/tests/fff_print/test_fill.cpp index aa81570e56..a3696c47ad 100644 --- a/tests/fff_print/test_fill.cpp +++ b/tests/fff_print/test_fill.cpp @@ -15,6 +15,7 @@ #include "libslic3r/Geometry.hpp" #include "libslic3r/Layer.hpp" #include "libslic3r/Print.hpp" +#include "libslic3r/PrintConfig.hpp" #include "libslic3r/SVG.hpp" #include "libslic3r/libslic3r.h" @@ -676,6 +677,73 @@ TEST_CASE("Ironing follows the solid infill rotation template", "[Fill]") REQUIRE(compared > int(ironing.size()) / 2); } + +namespace { + +PrintRegionConfig ironing_config(IroningType type, + int top_surface_filament_id = 1, + int top_shell_layers = 3, + int bottom_shell_layers = 1) +{ + PrintRegionConfig cfg; + cfg.ironing_type.value = type; + cfg.top_surface_filament_id.value = top_surface_filament_id; + cfg.top_shell_layers.value = top_shell_layers; + cfg.bottom_shell_layers.value = bottom_shell_layers; + cfg.outer_wall_filament_id.value = 1; + cfg.wall_loops.value = 2; + return cfg; +} + +} // namespace + +TEST_CASE("Ironing an all-solid region uses the top surface filament on every layer", "[Fill]") +{ + const PrintRegionConfig cfg = ironing_config(IroningType::AllSolid, /*top_surface_filament_id=*/2); + const bool is_topmost_layer = GENERATE(false, true); + CAPTURE(is_topmost_layer); + REQUIRE(Layer::choose_ironing_extruder(cfg, /*spiral_mode=*/false, is_topmost_layer) == 2); +} + +TEST_CASE("Ironing top surfaces uses the top surface filament when the region has top shells", "[Fill]") +{ + const PrintRegionConfig cfg = ironing_config(IroningType::TopSurfaces, + /*top_surface_filament_id=*/3, + /*top_shell_layers=*/2); + REQUIRE(Layer::choose_ironing_extruder(cfg, /*spiral_mode=*/false, /*is_topmost_layer=*/false) == 3); +} + +TEST_CASE("Ironing top surfaces without top shells needs spiral mode and more than one bottom shell", "[Fill]") +{ + const PrintRegionConfig one_bottom_shell = ironing_config(IroningType::TopSurfaces, + /*top_surface_filament_id=*/1, + /*top_shell_layers=*/0, + /*bottom_shell_layers=*/1); + const PrintRegionConfig two_bottom_shells = ironing_config(IroningType::TopSurfaces, + /*top_surface_filament_id=*/1, + /*top_shell_layers=*/0, + /*bottom_shell_layers=*/2); + + REQUIRE(Layer::choose_ironing_extruder(two_bottom_shells, /*spiral_mode=*/true, /*is_topmost_layer=*/false) == 1); + REQUIRE(Layer::choose_ironing_extruder(one_bottom_shell, /*spiral_mode=*/true, /*is_topmost_layer=*/false) == -1); + REQUIRE(Layer::choose_ironing_extruder(two_bottom_shells, /*spiral_mode=*/false, /*is_topmost_layer=*/false) == -1); +} + +TEST_CASE("Ironing the topmost surface only applies to the topmost layer", "[Fill]") +{ + const PrintRegionConfig cfg = ironing_config(IroningType::TopmostOnly, /*top_surface_filament_id=*/4); + REQUIRE(Layer::choose_ironing_extruder(cfg, /*spiral_mode=*/false, /*is_topmost_layer=*/true) == 4); + REQUIRE(Layer::choose_ironing_extruder(cfg, /*spiral_mode=*/false, /*is_topmost_layer=*/false) == -1); +} + +TEST_CASE("A region with ironing turned off is never ironed", "[Fill]") +{ + const PrintRegionConfig cfg = ironing_config(IroningType::NoIroning); + const bool spiral_mode = GENERATE(false, true); + CAPTURE(spiral_mode); + REQUIRE(Layer::choose_ironing_extruder(cfg, spiral_mode, /*is_topmost_layer=*/true) == -1); +} + TEST_CASE("Solid infill direction offsets every layer when no template is set", "[Fill]") { auto angles_for = [](int direction) { From 31eb8a2bd1f402da52b4b81af82ef436b2a83705 Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Mon, 14 Sep 2026 19:35:29 +0200 Subject: [PATCH 134/162] CLI: let --export-settings - write the merged config to stdout --export-settings already writes the merged config as JSON at the right point in the CLI flow. Passing - writes the same document to stdout. - ConfigBase::save_to_json gains a stream overload. The file overload serializes through it before opening the file, so the format is unchanged and a config that cannot be serialized leaves an existing file untouched instead of truncating it. - On stdout, invalid UTF-8 in string values is written as U+FFFD instead of ending the process with an uncaught type_error; files keep the strict behaviour. - - is rejected up front when combined with an action or transform that can write to stdout or does real work, so stdout carries only the JSON. - The unconditional "skip locked instance" stdout write during arrange now goes to the log. - Tests in tests/libslic3r/test_config.cpp. --- src/OrcaSlicer.cpp | 27 ++++++++++++++-- src/libslic3r/Config.cpp | 21 +++++++++---- src/libslic3r/Config.hpp | 3 ++ src/libslic3r/PrintConfig.cpp | 2 +- tests/libslic3r/test_config.cpp | 55 +++++++++++++++++++++++++++++++++ 5 files changed, 99 insertions(+), 9 deletions(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index b75c653eda..07009ef46a 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1387,6 +1387,25 @@ int CLI::run(int argc, char **argv) if (downward_check_option) downward_check = downward_check_option->value; + // --export-settings - writes its JSON to stdout, so reject every action or transform that may write there + // too (--info, --help, --orient, slicing and exporting). The allowed ones do nothing when nothing is + // sliced or exported. + if (std::find(m_actions.begin(), m_actions.end(), "export_settings") != m_actions.end() && m_config.opt_string("export_settings") == "-") { + static const std::set stdout_compatible = { "export_settings", "uptodate", "load_defaultfila", "min_save", + "mtcpp", "mstpp", "no_check", "normative_check", "pipe" }; + for (const std::vector *opt_keys : { &m_actions, &m_transforms }) { + for (const std::string &opt_key : *opt_keys) { + if (stdout_compatible.count(opt_key) == 0) { + std::string flag = opt_key; + std::replace(flag.begin(), flag.end(), '_', '-'); + boost::nowide::cerr << "--export-settings - cannot be combined with --" << flag << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } + } + } + bool start_gui = m_actions.empty() && !downward_check; if (start_gui) { BOOST_LOG_TRIVIAL(info) << "no action, start gui directly" << std::endl; @@ -5348,7 +5367,7 @@ int CLI::run(int argc, char **argv) //skip this object due to be locked in plate ap.itemid = locked_aps.size(); locked_aps.emplace_back(ap); - boost::nowide::cout <<__FUNCTION__ << boost::format(": skip locked instance, obj_id %1%, instance_id %2%") % oidx % inst_idx; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": skip locked instance, obj_id %1%, instance_id %2%") % oidx % inst_idx; } } } @@ -5937,7 +5956,11 @@ int CLI::run(int argc, char **argv) //FIXME check for mixing the FFF / SLA parameters. // or better save fff_print_config vs. sla_print_config //m_print_config.save(m_config.opt_string("save")); - m_print_config.save_to_json(m_config.opt_string(opt_key), std::string("project_settings"), std::string("project"), std::string(SoftFever_VERSION)); + const std::string &settings_file = m_config.opt_string(opt_key); + if (settings_file == "-") + m_print_config.save_to_json(boost::nowide::cout, "project_settings", "project", SoftFever_VERSION, /*replace_invalid_utf8=*/true); + else + m_print_config.save_to_json(settings_file, std::string("project_settings"), std::string("project"), std::string(SoftFever_VERSION)); } else if (opt_key == "info") { // --info works on unrepaired model for (Model &model : m_models) { diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index 394cfb5b74..52a46dcacf 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -1515,6 +1516,19 @@ std::optional parse_capability_ref(const std::string& value //BBS: add json support void ConfigBase::save_to_json(const std::string &file, const std::string &name, const std::string &from, const std::string &version) const +{ + // Serialize first: if that throws (invalid UTF-8), the existing file stays untouched. + std::ostringstream ss; + this->save_to_json(ss, name, from, version); + boost::nowide::ofstream c; + c.open(file, std::ios::out | std::ios::trunc); + c << ss.str(); + c.close(); + + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format(", saved config to %1%\n")%file; +} + +void ConfigBase::save_to_json(std::ostream &os, const std::string &name, const std::string &from, const std::string &version, bool replace_invalid_utf8) const { json j; //record the headers @@ -1561,12 +1575,7 @@ void ConfigBase::save_to_json(const std::string &file, const std::string &name, j["plugins"] = unique_refs; } - boost::nowide::ofstream c; - c.open(file, std::ios::out | std::ios::trunc); - c << j.dump(1, '\t') << std::endl; - c.close(); - - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format(", saved config to %1%\n")%file; + os << j.dump(1, '\t', false, replace_invalid_utf8 ? json::error_handler_t::replace : json::error_handler_t::strict) << std::endl; } void ConfigBase::save(const std::string &file) const diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index ea85cda1e7..6d23ec3770 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -2825,6 +2825,9 @@ public: //BBS: add json support void save_to_json(const std::string &file, const std::string &name, const std::string &from, const std::string &version) const; + // Same document, written to a stream. Invalid UTF-8 in a string value throws nlohmann's type_error unless + // replace_invalid_utf8 is set, which writes U+FFFD instead (for callers such as stdout with no handler). + void save_to_json(std::ostream &os, const std::string &name, const std::string &from, const std::string &version, bool replace_invalid_utf8 = false) const; // Rebuild the in-memory "plugins" manifest (the "name;uuid;capability" references the plugin // dispatchers consume) from the plugin-backed options via the registered resolver. save_to_json() diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e8ac749bd3..0b0fe71dc0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -11916,7 +11916,7 @@ CLIActionsConfigDef::CLIActionsConfigDef() def = this->add("export_settings", coString); def->label = L("Export Settings"); - def->tooltip = L("This exports settings to a file."); + def->tooltip = L("This exports settings to a file. Use - to write them to stdout."); def->cli_params = "settings.json"; def->set_default_value(new ConfigOptionString("output.json")); diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index 3813e2df3f..208bbc6cf0 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -15,6 +15,8 @@ #include #include +#include + using namespace Slic3r; SCENARIO("Generic config validation performs as expected.", "[Config]") { @@ -488,6 +490,59 @@ TEST_CASE("save_to_json round-trips plugin capability references as strings", "[ CHECK(reloaded.option("slicing_pipeline_plugin")->values == refs); } +TEST_CASE("save_to_json writes the same document to a stream as to a file", "[Config]") { + DynamicPrintConfig config; + config.set_key_value("layer_height", new ConfigOptionFloat(0.2)); + config.set_key_value("wall_loops", new ConfigOptionInt(3)); + config.set_key_value("filament_type", new ConfigOptionStrings({ "PLA", "PETG" })); + config.set_key_value("machine_start_gcode", new ConfigOptionString("G28\nG1 Z5")); + + ScopedTemporaryFile tmp(".json"); + config.save_to_json(tmp.string(), "test_preset", "User", "1.0.0.0"); + std::string file_contents; + { + boost::nowide::ifstream ifs(tmp.string()); + file_contents.assign(std::istreambuf_iterator(ifs), std::istreambuf_iterator()); + } + // The file format: one tab per nesting level and a trailing newline. + REQUIRE_FALSE(file_contents.empty()); + CHECK(file_contents.rfind("{\n\t\"", 0) == 0); + CHECK(file_contents.back() == '\n'); + + std::ostringstream strict, replaced; + config.save_to_json(strict, "test_preset", "User", "1.0.0.0"); + config.save_to_json(replaced, "test_preset", "User", "1.0.0.0", true); + CHECK(strict.str() == file_contents); + CHECK(replaced.str() == file_contents); + CHECK(nlohmann::json::parse(strict.str())["machine_start_gcode"] == "G28\nG1 Z5"); +} + +TEST_CASE("save_to_json replaces invalid UTF-8 in a stream only when asked", "[Config]") { + DynamicPrintConfig config; + config.set_key_value("machine_start_gcode", new ConfigOptionString("G28 ; \xff")); + + std::ostringstream strict, replaced; + CHECK_THROWS_AS(config.save_to_json(strict, "test_preset", "User", "1.0.0.0"), nlohmann::json::type_error); + REQUIRE_NOTHROW(config.save_to_json(replaced, "test_preset", "User", "1.0.0.0", true)); + CHECK(nlohmann::json::parse(replaced.str())["machine_start_gcode"] == "G28 ; \xEF\xBF\xBD"); +} + +TEST_CASE("save_to_json leaves an existing file untouched when the config cannot be serialized", "[Config]") { + DynamicPrintConfig config; + config.set_key_value("machine_start_gcode", new ConfigOptionString("G28 ; \xff")); + + ScopedTemporaryFile tmp(".json"); + { + boost::nowide::ofstream ofs(tmp.string()); + ofs << "previous"; + } + CHECK_THROWS_AS(config.save_to_json(tmp.string(), "test_preset", "User", "1.0.0.0"), nlohmann::json::type_error); + + boost::nowide::ifstream ifs(tmp.string()); + const std::string contents((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); + CHECK(contents == "previous"); +} + TEST_CASE("plugin capability references survive string-map serialization", "[Config][plugins]") { const std::vector refs = { "master_plugin;;header-stamp", From 54968834932950f67596e70f64845c1a72ed252c Mon Sep 17 00:00:00 2001 From: Nopraz <12595433+Nopraz@users.noreply.github.com> Date: Mon, 14 Sep 2026 19:44:15 +0200 Subject: [PATCH 135/162] =?UTF-8?q?fix(profiles):=20Snapmaker=20U1=20?= =?UTF-8?q?=E2=80=94=20cap=20ABS/ASA/PPS=20bed=20temps=20at=20100=20=C2=B0?= =?UTF-8?q?C=20(#15483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The U1's heated bed tops out at 100 °C, but these profiles requested 105-110 °C, which leads to print errors unless the user modifies the printer's firmware configuration. Affected profiles: - Snapmaker ABS @U1 base (110/105 → 100) - Snapmaker ASA @U1 base (110 → 100) - Fiberon ASA-CF08 @Snapmaker U1 base (105 → 100) - Fiberon PPS-GF20 @Snapmaker U1 base (105 → 100) Bumps Snapmaker.json to 02.04.00.10. Co-authored-by: yw4z --- resources/profiles/Snapmaker.json | 2 +- .../Fiberon ASA-CF08 @Snapmaker U1 base.json | 10 +++++----- .../Fiberon PPS-GF20 @Snapmaker U1 base.json | 16 ++++++++-------- .../filament/Snapmaker ABS @U1 base.json | 4 ++-- .../filament/Snapmaker ASA @U1 base.json | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 0407dca2ec..393271d0e5 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.04.00.12", + "version": "02.04.00.13", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json index 693553bdcb..86648d6096 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon ASA-CF08 @Snapmaker U1 base.json @@ -15,13 +15,13 @@ "1" ], "cool_plate_temp": [ - "105" + "100" ], "cool_plate_temp_initial_layer": [ - "105" + "100" ], "eng_plate_temp": [ - "105" + "100" ], "eng_plate_temp_initial_layer": [ "100" @@ -48,7 +48,7 @@ "Polymaker" ], "hot_plate_temp": [ - "105" + "100" ], "hot_plate_temp_initial_layer": [ "100" @@ -72,7 +72,7 @@ "110.8" ], "textured_plate_temp": [ - "105" + "100" ], "textured_plate_temp_initial_layer": [ "100" diff --git a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json index 5e1cfa7c61..ee28c2b059 100644 --- a/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json +++ b/resources/profiles/Snapmaker/filament/Polymaker/Fiberon PPS-GF20 @Snapmaker U1 base.json @@ -15,16 +15,16 @@ "1" ], "cool_plate_temp": [ - "105" + "100" ], "cool_plate_temp_initial_layer": [ - "105" + "100" ], "eng_plate_temp": [ - "105" + "100" ], "eng_plate_temp_initial_layer": [ - "105" + "100" ], "fan_cooling_layer_time": [ "12" @@ -51,10 +51,10 @@ "Polymaker" ], "hot_plate_temp": [ - "105" + "100" ], "hot_plate_temp_initial_layer": [ - "105" + "100" ], "nozzle_temperature": [ "300" @@ -81,10 +81,10 @@ "110" ], "textured_plate_temp": [ - "105" + "100" ], "textured_plate_temp_initial_layer": [ - "105" + "100" ], "filament_type": [ "ABS" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json index 67754ade09..48740f94bc 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json @@ -9,10 +9,10 @@ "" ], "hot_plate_temp": [ - "110" + "100" ], "hot_plate_temp_initial_layer": [ - "105" + "100" ], "overhang_fan_speed": [ "20" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json index 413c14cebb..b75f8d84d3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json @@ -9,7 +9,7 @@ "" ], "hot_plate_temp": [ - "110" + "100" ], "hot_plate_temp_initial_layer": [ "100" From 5c635d5e504c5f88d45ff7f0d66b63a83382d0bc Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Mon, 14 Sep 2026 15:04:03 -0500 Subject: [PATCH 136/162] build: scope -Werror to the Clang family so GCC builds again (#15701) --- CMakeLists.txt | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2880a7d4b..6e713d8c88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -587,10 +587,15 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR add_compile_options(-Wno-${w}) endforeach () - # Turn everything else into an error. Dependency headers are exempt because the SYSTEM - # include flag (-imsvc on clang-cl, -isystem elsewhere) keeps their diagnostics out, - # apart from GCC's maybe-uninitialized, demoted below. - add_compile_options(-Werror) + # GCC is not built in CI, so don't throw errors CI won't catch. + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-Werror=return-type) + else () + # Turn everything else into an error. Dependency headers are exempt because the + # SYSTEM include flag (-imsvc on clang-cl, -isystem elsewhere) keeps their + # diagnostics out. + add_compile_options(-Werror) + endif () # Demoted. Remove a name once its category is cleared on every compiler. set(warnings_demoted) @@ -612,20 +617,6 @@ if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR cast-function-type-mismatch ) endif () - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND warnings_demoted - # maybe-uninitialized runs after inlining and reports inside boost/variant, - # boost/tuple and the bundled clipper header even with -isystem. - maybe-uninitialized - - # array-bounds is reported once, where ConfigOptionVector::set_at inlines - # into OrcaSlicer.cpp on a branch the preceding type test rules out. - array-bounds - - # template-id-cdtor is a GCC 14+ warning in the bundled Clipper2 headers. - template-id-cdtor - ) - endif () if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") list(APPEND warnings_demoted # enum-constexpr-conversion is a Clang warning that defaults to an error, From 292cf0095e698a6e0f96041bd142fd41afd6ccfb Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Mon, 14 Sep 2026 16:31:23 -0500 Subject: [PATCH 137/162] drop the per-frame mouse raycast that only a drag start reads (#15664) --- src/slic3r/GUI/GLCanvas3D.cpp | 11 +++-------- src/slic3r/GUI/GLCanvas3D.hpp | 1 - 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index e63501eec1..76192491bf 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2098,12 +2098,6 @@ void GLCanvas3D::render(bool only_init) _render_selection_center(); #endif // ENABLE_RENDER_SELECTION_CENTER - // we need to set the mouse's scene position here because the depth buffer - // could be invalidated by the following gizmo render methods - // this position is used later into on_mouse() to drag the objects - if (m_picking_enabled) - m_mouse.scene_position = _mouse_to_3d(m_mouse.position.cast()); - // sidebar hints need to be rendered before the gizmos because the depth buffer // could be invalidated by the following gizmo render methods _render_selection_sidebar_hints(); @@ -4491,12 +4485,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) BoundingBoxf3 volume_bbox = m_volumes.volumes[volume_idx]->transformed_bounding_box(); volume_bbox.offset(1.0); const bool is_cut_connector_selected = m_selection.is_any_connector(); - if ((!any_gizmo_active || !evt.CmdDown()) && volume_bbox.contains(m_mouse.scene_position) && !is_cut_connector_selected) { + const Vec3d scene_position = _mouse_to_3d(pos); + if ((!any_gizmo_active || !evt.CmdDown()) && volume_bbox.contains(scene_position) && !is_cut_connector_selected) { m_volumes.volumes[volume_idx]->hover = GLVolume::HS_None; // The dragging operation is initiated. m_mouse.drag.move_volume_idx = volume_idx; m_selection.setup_cache(); - m_mouse.drag.start_position_3D = m_mouse.scene_position; + m_mouse.drag.start_position_3D = scene_position; m_sequential_print_clearance_first_displacement = true; m_moving = true; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index b1dd674d96..c2962c3858 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -337,7 +337,6 @@ class GLCanvas3D bool dragging{ false }; Vec2d position{ DBL_MAX, DBL_MAX }; - Vec3d scene_position{ DBL_MAX, DBL_MAX, DBL_MAX }; bool ignore_left_up{ false }; Drag drag; bool ignore_right_up; From efc9f253ee2d3e16cfb95331ea5234d2b237dca1 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Mon, 14 Sep 2026 23:47:01 -0500 Subject: [PATCH 138/162] fix: resolve relative input paths given on the command line (#14803) Opening a model with a relative path, for example `orca-slicer ./some.3mf`, failed with "Loading of a model file failed." and "The file does not contain any geometry data.", while the same file opened by an absolute path or by drag and drop worked. GUI_App::init_app_config() changes the working directory to /log, and it runs from the GUI_App constructor because the app config is needed early for instance checking. The input files are opened much later, in post_init(), so a path still relative at that point resolved against the log directory instead of the directory OrcaSlicer was started from, and the 3MF reader failed to open it. Resolve the input paths in CLI::setup(), which runs before GUI_App is constructed and therefore before the working directory moves. Absolute paths are returned unchanged, so the forms that open today are unaffected, and custom open protocol URLs are passed through since post_init() hands those to the downloader rather than the file loader. The working directory change is left alone. It was added in #3248 so the TUTK logs land in the data directory instead of the working directory (#3209). --- src/OrcaSlicer.cpp | 7 ++++ src/libslic3r/Utils.hpp | 3 ++ src/libslic3r/utils.cpp | 13 +++++++ tests/libslic3r/test_utils.cpp | 64 ++++++++++++++++++++++++++++++++++ tests/test_utils.hpp | 18 ++++++++++ 5 files changed, 105 insertions(+) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index b75c653eda..24f218caa5 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -7715,6 +7715,13 @@ bool CLI::setup(int argc, char **argv) this->print_help(); return false; } + + // Orca: resolve here, while the process is still in the directory the user invoked it from. + // GUI_App's constructor moves the working directory to /log, long before the GUI + // opens these files in post_init(), and a relative path would then resolve against that. + for (std::string &input_file : m_input_files) + input_file = resolve_cli_input_path(input_file); + // Parse actions and transform options. for (auto const &opt_key : opt_order) { if (cli_actions_config_def.has(opt_key)) diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index c364860531..b21da72fc8 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -314,6 +314,9 @@ extern unsigned get_current_pid(); std::string per_user_temp_id(); // Per-user temp root under `base`; an empty `user_id` returns `base` unchanged. std::string per_user_temp_dir(const std::string &base, const std::string &user_id); +// Completes a relative command line input path against the current working directory. Absolute +// paths and custom open protocol URLs are returned unchanged. +std::string resolve_cli_input_path(const std::string &path); // BBS: backup & restore std::string get_process_name(int pid); diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 58323b29ce..9def5dad17 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -1339,6 +1339,19 @@ std::string per_user_temp_dir(const std::string &base, const std::string &user_i return base + "/orcaslicer_" + user_id; } +std::string resolve_cli_input_path(const std::string &path) +{ + const boost::filesystem::path input(path); + if (path.empty() || is_supported_open_protocol(path) || input.is_absolute()) + return path; + + boost::system::error_code ec; + const boost::filesystem::path resolved = boost::filesystem::system_complete(input, ec); + if (ec) + return path; + return resolved.lexically_normal().make_preferred().string(); +} + // BBS: backup & restore std::string get_process_name(int pid) { diff --git a/tests/libslic3r/test_utils.cpp b/tests/libslic3r/test_utils.cpp index 484438127c..7880b783f1 100644 --- a/tests/libslic3r/test_utils.cpp +++ b/tests/libslic3r/test_utils.cpp @@ -4,6 +4,8 @@ #include "test_utils.hpp" +#include + #include #include #include @@ -88,3 +90,65 @@ TEST_CASE("copy_file reports the OS error when the destination cannot be written REQUIRE(std::all_of(code.begin(), code.end(), [](unsigned char c) { return std::isdigit(c) != 0; })); #endif // _WIN32 } + +TEST_CASE("A resolved input path still names the same file after the working directory changes", "[utils]") { + ScopedTemporaryFile model(".3mf"); + { std::ofstream out(model.string()); out << "3mf"; } + const std::string name = model.path().filename().string(); + + // Resolve the bare name from the directory holding the file, then move away from it. The guard + // restores the directory the test started in, wherever this leaves it. + ScopedWorkingDirectory cwd(model.path().parent_path()); + const std::string resolved = resolve_cli_input_path(name); + boost::filesystem::current_path(boost::filesystem::path(TEST_DATA_DIR)); + + REQUIRE(boost::filesystem::exists(resolved)); + REQUIRE(boost::filesystem::equivalent(resolved, model.path())); + // Control: the bare name finds nothing from here, so resolving it this late would have failed. + REQUIRE_FALSE(boost::filesystem::exists(name)); +} + +TEST_CASE("resolve_cli_input_path completes a relative path against the working directory", "[utils]") { + ScopedWorkingDirectory cwd(boost::filesystem::temp_directory_path()); + // Read back rather than reusing temp_directory_path(): changing to it resolves any symlink. + const boost::filesystem::path here = boost::filesystem::current_path(); + + SECTION("a bare name") { + REQUIRE(resolve_cli_input_path("model.3mf") == (here / "model.3mf").make_preferred().string()); + } + SECTION("a ./ prefix is dropped") { + REQUIRE(resolve_cli_input_path("./model.3mf") == (here / "model.3mf").make_preferred().string()); + } + SECTION("a ../ traversal is collapsed") { + REQUIRE(resolve_cli_input_path("../model.3mf") == (here.parent_path() / "model.3mf").make_preferred().string()); + } +} + +TEST_CASE("resolve_cli_input_path leaves inputs that must not be completed unchanged", "[utils]") { + SECTION("an absolute path") { + const boost::filesystem::path absolute = (boost::filesystem::temp_directory_path() / "model.3mf").make_preferred(); + REQUIRE(resolve_cli_input_path(absolute.string()) == absolute.string()); + } +#ifdef _WIN32 + // Every absolute form Windows accepts opens today, so each must come back byte for byte: + // normalizing them would rewrite the forward slashes and rebuild the \\?\ and UNC prefixes. + SECTION("an absolute Windows path of any form") { + for (const std::string absolute : {R"(C:\models\model.3mf)", + R"(C:/models/model.3mf)", + R"(\\server\share\model.3mf)", + R"(\\?\C:\models\model.3mf)"}) + REQUIRE(resolve_cli_input_path(absolute) == absolute); + } +#endif + // These are downloaded rather than opened, and completing one would produce a path, not a URL. + SECTION("a custom open protocol URL") { + for (const std::string url : {"orcaslicer://open/?file=https://example.com/model.3mf", + "prusaslicer://open/?file=https://example.com/model.3mf", + "bambustudio://open/?file=https://example.com/model.3mf", + "cura://open/?file=https://example.com/model.3mf"}) + REQUIRE(resolve_cli_input_path(url) == url); + } + SECTION("an empty argument") { + REQUIRE(resolve_cli_input_path("").empty()); + } +} diff --git a/tests/test_utils.hpp b/tests/test_utils.hpp index e3fbbe8fab..0b04e6ad11 100644 --- a/tests/test_utils.hpp +++ b/tests/test_utils.hpp @@ -176,4 +176,22 @@ inline void write_debug_stream([[maybe_unused]] const std::string &name, [[maybe #endif } +// Changes the working directory and restores the previous one on scope exit, including when an +// assertion throws. It is process wide state shared with every other test. +class ScopedWorkingDirectory +{ +public: + explicit ScopedWorkingDirectory(const boost::filesystem::path &dir) + : m_previous(boost::filesystem::current_path()) + { + boost::filesystem::current_path(dir); + } + ~ScopedWorkingDirectory() { boost::system::error_code ec; boost::filesystem::current_path(m_previous, ec); } + ScopedWorkingDirectory(const ScopedWorkingDirectory &) = delete; + ScopedWorkingDirectory &operator=(const ScopedWorkingDirectory &) = delete; + +private: + boost::filesystem::path m_previous; +}; + #endif // SLIC3R_TEST_UTILS From d5cf1502c442b0b4860dedfa0b6d791d243f4299 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Tue, 15 Sep 2026 13:31:30 +0800 Subject: [PATCH 139/162] Share One Library Load Between Vendors in the CLI Preset Resolver The manifest resolver loaded OrcaFilamentLibrary once per vendor it resolved through, so a run that mixes vendors parsed the library tree again for each of them. The library is now cached like any other vendor tree, keyed on its root and substitution rule, and doubles as the base every vendor under that root loads against. A vendor bundle only reads from its base while loading, so sharing the instance is safe. The cache key carries the substitution rule as its enum, and the lookup lambdas take a const bundle since they only read. --- src/libslic3r/PresetBundle.cpp | 48 ++++++++-------- src/libslic3r/PresetBundle.hpp | 18 +++--- .../libslic3r/test_preset_bundle_loading.cpp | 56 +++++++++++++++++++ 3 files changed, 87 insertions(+), 35 deletions(-) diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 9cef965490..54e5db27e4 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -484,7 +484,7 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ else if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSilentDisableSystem) compatibility_rule = ForwardCompatibilitySubstitutionRule::Disable; - auto collection_for_type = [](PresetBundle &bundle, Preset::Type preset_type) -> PresetCollection * { + auto collection_for_type = [](const PresetBundle &bundle, Preset::Type preset_type) -> const PresetCollection * { switch (preset_type) { case Preset::TYPE_PRINT: return &bundle.prints; case Preset::TYPE_FILAMENT: return &bundle.filaments; @@ -493,15 +493,15 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ } }; - PresetCollection *collection = collection_for_type(*this, type); + const PresetCollection *collection = collection_for_type(*this, type); if (collection == nullptr) { error = "Unsupported preset type"; return false; } const boost::filesystem::path source_path = boost::filesystem::absolute(source_file).lexically_normal(); - auto find_loaded = [&](PresetBundle &bundle) -> const Preset * { - PresetCollection *loaded_collection = collection_for_type(bundle, type); + auto find_loaded = [&](const PresetBundle &bundle) -> const Preset * { + const PresetCollection *loaded_collection = collection_for_type(bundle, type); const Preset *resolved = nullptr; for (const Preset &preset : loaded_collection->get_presets()) { if (preset.file.empty()) @@ -549,11 +549,11 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ continue; try { - const SourceManifestBundles *loaded = load_source_manifest(root_dir, vendor_id, compatibility_rule, error); + const PresetBundle *loaded = load_source_vendor(root_dir, vendor_id, compatibility_rule, error); if (loaded == nullptr) return false; - const Preset *resolved = find_loaded(*loaded->vendor); + const Preset *resolved = find_loaded(*loaded); if (resolved == nullptr) { if (error.empty()) error = "Source file is not an instantiated preset in its vendor manifest"; @@ -572,37 +572,35 @@ bool PresetBundle::resolve_preset_config(DynamicPrintConfig &config, Preset::Typ return false; } -const PresetBundle::SourceManifestBundles *PresetBundle::load_source_manifest(const boost::filesystem::path &root_dir, - const std::string &vendor_id, - ForwardCompatibilitySubstitutionRule compatibility_rule, - std::string &error) +const PresetBundle *PresetBundle::load_source_vendor(const boost::filesystem::path &root_dir, + const std::string &vendor_id, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error) { - auto key = std::make_tuple(root_dir.string(), vendor_id, static_cast(compatibility_rule)); - if (auto it = m_source_manifest_bundles.find(key); it != m_source_manifest_bundles.end()) - return &it->second; + auto key = std::make_tuple(root_dir.string(), vendor_id, compatibility_rule); + if (auto it = m_source_vendor_bundles.find(key); it != m_source_vendor_bundles.end()) + return it->second.get(); - SourceManifestBundles loaded; + // The library loads with no base of its own, so the tree a vendor inherits from + // is the same one that resolves the library's own presets. + const PresetBundle *library = nullptr; if (vendor_id != ORCA_FILAMENT_LIBRARY && boost::filesystem::is_regular_file(root_dir / (std::string(ORCA_FILAMENT_LIBRARY) + ".json"))) { - loaded.library = std::make_unique(); - loaded.library->m_preserve_vendor_source_paths = true; - loaded.library->load_vendor_configs_from_json(root_dir.string(), ORCA_FILAMENT_LIBRARY, LoadSystem, - compatibility_rule, nullptr, false); - if (loaded.library->error_count() != 0) { + library = load_source_vendor(root_dir, ORCA_FILAMENT_LIBRARY, compatibility_rule, error); + if (library == nullptr) { error = "OrcaFilamentLibrary contains invalid presets"; return nullptr; } } - loaded.vendor = std::make_unique(); - loaded.vendor->m_preserve_vendor_source_paths = true; - loaded.vendor->load_vendor_configs_from_json(root_dir.string(), vendor_id, LoadSystem, - compatibility_rule, loaded.library.get(), false); - if (loaded.vendor->error_count() != 0) { + auto bundle = std::make_unique(); + bundle->m_preserve_vendor_source_paths = true; + bundle->load_vendor_configs_from_json(root_dir.string(), vendor_id, LoadSystem, compatibility_rule, library, false); + if (bundle->error_count() != 0) { error = "Vendor bundle contains invalid presets"; return nullptr; } - return &m_source_manifest_bundles.emplace(std::move(key), std::move(loaded)).first->second; + return m_source_vendor_bundles.emplace(std::move(key), std::move(bundle)).first->second.get(); } bool PresetBundle::resolve_preset_config_type(DynamicPrintConfig &config, Preset::Type &type, diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index a0fceb332b..88455fabf3 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -654,17 +654,15 @@ private: bool m_preserve_vendor_source_paths { false }; // Vendor trees loaded by resolve_preset_config's manifest path, so every preset - // resolved through this bundle shares one load per source root and vendor. - struct SourceManifestBundles { - std::unique_ptr library; - std::unique_ptr vendor; - }; - std::map, SourceManifestBundles> m_source_manifest_bundles; + // resolved through this bundle shares one load per source root and vendor. The + // filament library is one such tree, shared by every vendor under its root. + std::map, std::unique_ptr> + m_source_vendor_bundles; - const SourceManifestBundles *load_source_manifest(const boost::filesystem::path &root_dir, - const std::string &vendor_id, - ForwardCompatibilitySubstitutionRule compatibility_rule, - std::string &error); + const PresetBundle *load_source_vendor(const boost::filesystem::path &root_dir, + const std::string &vendor_id, + ForwardCompatibilitySubstitutionRule compatibility_rule, + std::string &error); // Orca: validation only - flag any printer with two or more compatible // filament presets sharing one filament_id (ambiguous AMS subtype match). diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 29c38395ac..73d244cf42 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -1118,6 +1118,62 @@ TEST_CASE("Manifest-backed resolution reuses the library base for type-probed fi CHECK_THAT(density(second), Catch::Matchers::WithinAbs(1.27, 1e-6)); } +TEST_CASE("Manifest-backed resolution shares the library between vendors under one root", "[Preset][Bundle][Regression]") +{ + ScopedTemporaryDir dir; + const fs::path library_dir = dir.path() / PresetBundle::ORCA_FILAMENT_LIBRARY / "filament"; + + std::ofstream((dir.path() / (std::string(PresetBundle::ORCA_FILAMENT_LIBRARY) + ".json")).string()) + << R"({"version":"1.0.0","name":"OrcaFilamentLibrary","filament_list":[)" + << R"({"name":"fdm_filament_pet","sub_path":"filament/pet.json","filament_id":"GFL99"},)" + << R"({"name":"Generic PETG","sub_path":"filament/generic_petg.json","filament_id":"GFL98"}]})"; + fs::create_directories(library_dir); + auto write_library_pet = [&](double density) { + std::ofstream((library_dir / "pet.json").string()) + << R"({"type":"filament","name":"fdm_filament_pet","from":"system",)" + << R"("filament_id":"GFL99","instantiation":"false",)" + << R"("filament_type":["PETG"],"filament_density":[")" << density << R"("]})"; + }; + write_library_pet(1.27); + std::ofstream((library_dir / "generic_petg.json").string()) + << R"({"type":"filament","name":"Generic PETG","from":"system",)" + << R"("filament_id":"GFL98","instantiation":"true","inherits":"fdm_filament_pet"})"; + + auto write_vendor = [&](const std::string &vendor, const std::string &filament_id) { + const fs::path filament_dir = dir.path() / vendor / "filament"; + fs::create_directories(filament_dir); + std::ofstream((dir.path() / (vendor + ".json")).string()) + << R"({"version":"1.0.0","name":")" << vendor << R"(","filament_list":[)" + << R"({"name":")" << vendor << R"( PETG","sub_path":"filament/petg.json","filament_id":")" << filament_id << R"("}]})"; + std::ofstream((filament_dir / "petg.json").string()) + << R"({"type":"filament","name":")" << vendor << R"( PETG","from":"system",)" + << R"("filament_id":")" << filament_id << R"(","instantiation":"true","inherits":"fdm_filament_pet"})"; + return filament_dir / "petg.json"; + }; + const fs::path acme_petg = write_vendor("Acme", "GFA00"); + const fs::path beta_petg = write_vendor("Beta", "GFB00"); + + auto density = [&](PresetBundle &bundle, const fs::path &file) { + DynamicPrintConfig raw; + raw.option(BBL_JSON_KEY_INHERITS, true)->value = "fdm_filament_pet"; + std::string error; + REQUIRE(bundle.resolve_preset_config(raw, Preset::TYPE_FILAMENT, file.string(), + ForwardCompatibilitySubstitutionRule::EnableSilent, error)); + return raw.option("filament_density")->values.front(); + }; + + PresetBundle bundle; + CHECK_THAT(density(bundle, acme_petg), Catch::Matchers::WithinAbs(1.27, 1e-6)); + + // Only a reload would see this change. + write_library_pet(1.5); + CHECK_THAT(density(bundle, beta_petg), Catch::Matchers::WithinAbs(1.27, 1e-6)); + CHECK_THAT(density(bundle, library_dir / "generic_petg.json"), Catch::Matchers::WithinAbs(1.27, 1e-6)); + + PresetBundle fresh; + CHECK_THAT(density(fresh, beta_petg), Catch::Matchers::WithinAbs(1.5, 1e-6)); +} + // Orca: a filament in the Orca Filament Library that names its compatible printers has to hide the generic // library filament sharing its alias, the same way a vendor owned filament does. Otherwise both are compatible // with that printer and the plater combo box lists the shared alias twice. From 2b6eb425e428df118326eba55f5b6f41fe84f2e5 Mon Sep 17 00:00:00 2001 From: Lam Wei Lun Date: Tue, 15 Sep 2026 18:04:06 +0800 Subject: [PATCH 140/162] Update YouTube URL for publish 3MF guide --- src/slic3r/GUI/PublishSettingsDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index e63cec7615..82de9fca68 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -665,7 +665,7 @@ PublishSettingsDialog::PublishSettingsDialog(wxWindow* parent, }; wxBoxSizer* links_sizer = new wxBoxSizer(wxVERTICAL); links_sizer->Add(make_link(_L("Publish 3MF Wiki"), "https://www.orcaslicer.com/wiki/publishing_3mf/publish_3mf.html"), 0, wxALIGN_LEFT); - links_sizer->Add(make_link(_L("Publish 3MF Video Guide"), "https://www.youtube.com/@OfficialOrcaSlicer/videos"), 0, + links_sizer->Add(make_link(_L("Publish 3MF Video Guide"), "https://www.youtube.com/watch?v=-xt1N29UIOg"), 0, wxTOP | wxALIGN_LEFT, FromDIP(4)); wxBoxSizer* footer = new wxBoxSizer(wxHORIZONTAL); From bd1304443cb417d39c7be7d4182d8d8c1f737908 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Tue, 15 Sep 2026 07:03:20 -0500 Subject: [PATCH 141/162] fix: guard per-filament array reads against short config arrays (#14789) * fix: guard H2C per-filament array reads against short config arrays The H2C tool-ordering, wipe-tower, and g-code export paths index per-filament config arrays by filament/tool id. A config with fewer entries than the filament count (partial or legacy projects, minimal test configs) makes these reads run past the end of the vector: silent under a normal STL, but UB that aborts under the flatpak build's bounds-checked STL (_GLIBCXX_ASSERTIONS). Route the reads through the existing clamping accessors (get_at, get_filament_category, is_in_same_extruder) and add a small clamp helper for filament_change_length. The guards are no-ops when the arrays are sized to the filament count, so correctly specified configs are unaffected. * fix: size the grouping context's filament_info to the filament count build_filament_group_context built model_info.filament_info by walking filament_type, so a config whose filament_type is shorter than the filament count produced a short vector. FilamentGroup indexes filament_info by filament id, so clamping the individual reads only moved the out-of-bounds access downstream. Loop to filament_nums and read all three fields through get_at, and drop filament_ids entries past the filament count, since the grouping code pairs filament_ids and filament_info by position. Adds a regression test with four filaments and one-entry filament_type / filament_is_support. Without the fix it throws bad_alloc from copying a garbage std::string read past the end. * fix: guard the carousel nozzle-change length reads too The carousel branch added in b90ac13d86/b0dddb4648 reads m_filaments_change_length by tool id without a bounds check, the same pattern this branch already routed through filament_change_length_at a few lines above in both plan_toolchange and plan_tower_new. * fix: guard WipeTower per-filament array reads against short config arrays The BambuStudio WipeTower sync reintroduced raw per-filament array indexing that reads out of bounds when a config leaves an array shorter than the filament count: m_physical_extruder_map in format_line_M104/M109 (indexed even when empty), and m_filament_categories in get_wall_skip_points and get_wall_filament_for_all_layer. Silent on a normal STL, a hard abort under the bounds-checked STL the Flatpak build uses. Bounds-check the physical extruder map before indexing (omitting the T token, as the existing -1 path already does), and route the two raw m_filament_categories reads through the clamping get_filament_category() accessor the surrounding code already uses. No change for correctly-sized configs. --- src/libslic3r/GCode.cpp | 4 +- src/libslic3r/GCode/ToolOrdering.cpp | 19 ++++---- src/libslic3r/GCode/WipeTower.cpp | 8 ++-- .../test_toolordering_nozzle_group.cpp | 44 +++++++++++++++++++ 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 4aa45a60ed..902786bf7d 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3555,7 +3555,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato auto used_filaments = print.get_slice_used_filaments(false); this->placeholder_parser().set("is_all_bbl_filament", std::all_of(used_filaments.begin(), used_filaments.end(), [&](auto idx) { - return m_config.filament_vendor.values[idx] == "Bambu Lab"; + return m_config.filament_vendor.get_at(idx) == "Bambu Lab"; })); //add during_print_exhaust_fan_speed @@ -3572,7 +3572,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato this->placeholder_parser().set("outer_wall_volumetric_speed", new ConfigOptionFloat(outer_wall_volumetric_speed)); auto first_layer_filaments = print.get_slice_used_filaments(true); - bool has_tpu_in_first_layer = std::any_of(first_layer_filaments.begin(), first_layer_filaments.end(), [&](unsigned int idx) { return m_config.filament_type.values[idx] == "TPU"; }); + bool has_tpu_in_first_layer = std::any_of(first_layer_filaments.begin(), first_layer_filaments.end(), [&](unsigned int idx) { return m_config.filament_type.get_at(idx) == "TPU"; }); this->placeholder_parser().set("has_tpu_in_first_layer", new ConfigOptionBool(has_tpu_in_first_layer)); if (print.calib_params().mode == CalibMode::Calib_PA_Line) { diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index c6517c6e65..e9be0171e4 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1488,10 +1488,10 @@ static FilamentGroupContext build_filament_group_context( auto machine_filament_info = build_machine_filaments(print->get_extruder_filament_info(), extruder_ams_counts, ignore_ext_filament); - std::vector filament_types = print_config.filament_type.values; - std::vector filament_colours = print_config.filament_colour.values; - std::vector filament_is_support = print_config.filament_is_support.values; - std::vector filament_ids = print_config.filament_ids.values; + // The grouping code walks filament_ids and indexes filament_info by the same position. + std::vector filament_ids = print_config.filament_ids.values; + if (filament_ids.size() > filament_nums) + filament_ids.resize(filament_nums); FGMode fg_mode = mode == FilamentMapMode::fmmAutoForMatch ? FGMode::MatchMode : FGMode::FlushMode; context.model_info.flush_matrix = std::move(nozzle_flush_mtx); @@ -1500,11 +1500,14 @@ static FilamentGroupContext build_filament_group_context( context.model_info.filament_ids = filament_ids; context.model_info.unprintable_volumes = unprintable_volumes; - for (size_t idx = 0; idx < filament_types.size(); ++idx) { + // Consumers index filament_info by filament id, so it must span the filament count: a partial + // or legacy config can leave any of these arrays short, and get_at clamps. + context.model_info.filament_info.reserve(filament_nums); + for (size_t idx = 0; idx < filament_nums; ++idx) { FilamentGroupUtils::FilamentInfo info; - info.color = filament_colours[idx]; - info.type = filament_types[idx]; - info.is_support = filament_is_support[idx]; + info.color = print_config.filament_colour.get_at(idx); + info.type = print_config.filament_type.get_at(idx); + info.is_support = print_config.filament_is_support.get_at(idx); context.model_info.filament_info.emplace_back(std::move(info)); } diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index 589ac14bad..e80433f4ae 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1349,7 +1349,7 @@ public: // flavor it reaches understands, not the zero dwell the other flavors flush with. buffer += "M400\n"; buffer += "M104"; - if (target_extruder != -1) + if (target_extruder != -1 && target_extruder < int(m_physical_extruder_map.size())) buffer += (" T" + std::to_string(m_physical_extruder_map[target_extruder])); buffer += " S" + std::to_string(target_temp) + " N0"; // N0 means the gcode is generated by slicer if (!comment.empty()) buffer += " ;" + comment; @@ -1361,7 +1361,7 @@ public: WipeTowerWriter &format_line_M109(int target_temp, int target_extruder, const std::string &comment = std::string()) { std::string buffer = "M109"; - if (target_extruder != -1) + if (target_extruder != -1 && target_extruder < int(m_physical_extruder_map.size())) buffer += (" T" + std::to_string(m_physical_extruder_map[target_extruder])); buffer += " S" + std::to_string(target_temp) + " N0"; // N0 means the gcode is generated by slicer if (!comment.empty()) buffer += " ;" + comment; @@ -3309,7 +3309,7 @@ void WipeTower::get_wall_skip_points(const WipeTowerInfo &layer, int layer_id) if (!cur_block_depth.count(m_filpar[new_filament].category)) cur_block_depth[m_filpar[new_filament].category] = block->start_depth; process_depth = cur_block_depth[m_filpar[new_filament].category]; if (is_need_ramming(new_filament, old_filament, layer_id)) { - if (m_filament_categories[new_filament] == m_filament_categories[old_filament]) + if (get_filament_category(new_filament) == get_filament_category(old_filament)) process_depth += nozzle_change_depth; else { if (!cur_block_depth.count(m_filpar[old_filament].category)) { @@ -4783,7 +4783,7 @@ int WipeTower::get_wall_filament_for_all_layer() int filament_id = -1; int filament_count = 0; for (auto iter = filament_counts.begin(); iter != filament_counts.end(); ++iter) { - if (m_filament_categories[iter->first] == selected_category && iter->second > filament_count) { + if (get_filament_category(iter->first) == selected_category && iter->second > filament_count) { filament_id = iter->first; filament_count = iter->second; } diff --git a/tests/libslic3r/test_toolordering_nozzle_group.cpp b/tests/libslic3r/test_toolordering_nozzle_group.cpp index 26e36c0dbf..d01ccf5856 100644 --- a/tests/libslic3r/test_toolordering_nozzle_group.cpp +++ b/tests/libslic3r/test_toolordering_nozzle_group.cpp @@ -163,6 +163,50 @@ TEST_CASE("H2C multi-nozzle: filaments get distinct nozzles on the 6-nozzle extr } } +TEST_CASE("Grouping context spans the filament count with mis-sized config arrays", "[ToolOrdering][H2C]") +{ + // FilamentGroup indexes the grouping context's filament_info by filament id, so a short + // per-filament array must not shorten it: the reads run off the end. + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + // Single 6-nozzle extruder: opens the grouping engine without needing a BBL multi-extruder. + config.option("nozzle_diameter", true)->values = {0.4}; + config.option("extruder_max_nozzle_count", true)->values = {6}; + config.option("extruder_nozzle_stats", true)->values = {"Standard#6"}; + + // Four filaments, with filament_type / filament_is_support left short on purpose. + config.option("filament_colour", true)->values = {"#FF0000", "#00FF00", "#0000FF", "#FFFF00"}; + config.option("filament_type", true)->values = {"PLA"}; + config.option("filament_is_support", true)->values = {0}; + config.option("filament_diameter", true)->values = {1.75, 1.75, 1.75, 1.75}; + config.option("filament_map", true)->values = {1, 1, 1, 1}; + config.option("flush_volumes_matrix", true)->values = std::vector(16, 140.); + config.option("flush_multiplier", true)->values = {1.}; + + Model model; + model.add_object("cube", "", make_cube(20, 20, 20))->add_instance(); + + Print print; + print.apply(model, config); + // apply() does not pad the per-filament arrays, so the mis-sizing survives into the engine. + REQUIRE(print.config().filament_type.values.size() < print.config().filament_colour.values.size()); + + std::vector> layer_filaments = {{0, 1}, {1, 2}, {2, 3}}; + + SECTION("short per-filament arrays still yield one entry per filament") { + auto result = ToolOrdering::get_recommended_filament_maps(layer_filaments, &print, FilamentMapMode::fmmAutoForFlush, {}, {}); + REQUIRE(result.get_extruder_map(false).size() == 4); + for (int f = 0; f < 4; ++f) + REQUIRE(result.get_extruder_id(f) == 0); + } + + SECTION("filament_ids longer than the filament count is truncated, not paired past the end") { + config.option("filament_ids", true)->values = {"a", "b", "c", "d", "e", "f"}; + print.apply(model, config); + auto result = ToolOrdering::get_recommended_filament_maps(layer_filaments, &print, FilamentMapMode::fmmAutoForFlush, {}, {}); + REQUIRE(result.get_extruder_map(false).size() == 4); + } +} + TEST_CASE("H2C dynamic selector: per-layer nozzle ids reach the g-code surface", "[ToolOrdering][H2C][Dynamic]") { // The per-layer regroup engine From ac3997c0d1920dc37ebb0a093e7e4ba423a4e7ea Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Tue, 15 Sep 2026 07:46:31 -0500 Subject: [PATCH 142/162] fix: bounds-check the toolchange flush-volume and HRC per-filament lookups (#15289) * fix: bounds-check the toolchange flush-volume and HRC per-filament lookups GCode::set_extruder's toolchange flush-volume lookup and GCodeProcessor::update_slice_warnings's HRC check index per-filament and per-extruder arrays (flush_volumes_matrix, the filament map, the nozzle list) by filament/extruder id. When a config leaves one of those arrays shorter than the filament count (partial or legacy multi-extruder projects, minimal configs), the reads run off the end: silent on a normal STL, a hard abort under _GLIBCXX_ASSERTIONS. Route both reads through bounds checks: the flush lookup falls back to no flush, matching the existing unknown-old-filament branch beside it, and the HRC check skips an unmapped filament, mirroring the required_nozzle_HRC guard on the line above. When the arrays are sized to the filament count the values are unchanged, so correctly-specified configs are unaffected. * ci: retrigger checks --- src/libslic3r/GCode.cpp | 6 ++++-- src/libslic3r/GCode/GCodeProcessor.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 902786bf7d..12a3a73e7c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -9474,12 +9474,14 @@ std::string GCode::set_extruder(unsigned int new_filament_id, double print_z, bo if (old_filament_id_in_new_extruder == -1) wipe_volume = 0; else { - wipe_volume = flush_matrix[old_filament_id_in_new_extruder * number_of_extruders + new_filament_id]; + size_t flush_idx = size_t(old_filament_id_in_new_extruder) * number_of_extruders + new_filament_id; + wipe_volume = flush_idx < flush_matrix.size() ? flush_matrix[flush_idx] : 0.f; wipe_volume *= m_config.flush_multiplier.get_at(new_extruder_id); } } else { - wipe_volume = flush_matrix[old_filament_id * number_of_extruders + new_filament_id]; + size_t flush_idx = size_t(old_filament_id) * number_of_extruders + new_filament_id; + wipe_volume = flush_idx < flush_matrix.size() ? flush_matrix[flush_idx] : 0.f; wipe_volume *= m_config.flush_multiplier.get_at(new_extruder_id); // if is multi_extruder only use the fist extruder matrix } wipe_volume = std::max(0.f, wipe_volume-grab_purge_volume); diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index e4da19cd73..6fc7717386 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -7596,8 +7596,8 @@ void GCodeProcessor::update_slice_warnings() if (used_filaments[idx] < m_result.required_nozzle_HRC.size()) filament_hrc = m_result.required_nozzle_HRC[used_filaments[idx]]; - int filament_extruder_id = m_filament_maps[used_filaments[idx]]; - int extruder_hrc = nozzle_hrc_lists[filament_extruder_id]; + int filament_extruder_id = used_filaments[idx] < m_filament_maps.size() ? m_filament_maps[used_filaments[idx]] : -1; + int extruder_hrc = (filament_extruder_id >= 0 && (size_t) filament_extruder_id < nozzle_hrc_lists.size()) ? nozzle_hrc_lists[filament_extruder_id] : 0; BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": Check HRC: filament:%1%, hrc=%2%, extruder:%3%, hrc:%4%") % used_filaments[idx] % filament_hrc % filament_extruder_id % extruder_hrc; From 7e545651bb6256e008517a26ca93e66450b97624 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Tue, 15 Sep 2026 09:55:11 -0500 Subject: [PATCH 143/162] deps: compile unicodectype.c unoptimised in the Windows arm64 Python (#15719) VS 2026's ARM64 code generator needs about 27 GB for _PyUnicode_ToNumeric, a switch with 1951 cases in Objects/unicodetype_db.h; the same file takes under 1 GB on x64. The 16 GB CI runner has an 18.9 GB commit limit and only gets through when Windows grows the pagefile on the temp disk in time, so cold arm64 dependency builds fail at random with C1002 "compiler is out of heap space". build_release_vs.bat returns 0 on failure, so the job still reports success and the incomplete dependencies are cached. A property sheet compiles that one file with optimisation off on arm64; the rest stays whole-program optimised and x64 is unchanged. MSBuild reads it from PCbuild/msbuild.rsp, which is now written at configure time and copied in, so a checkout path with spaces works too. --- deps/python3/arm64-unicodectype.props | 12 ++++++++++++ deps/python3/python3.cmake | 12 +++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 deps/python3/arm64-unicodectype.props diff --git a/deps/python3/arm64-unicodectype.props b/deps/python3/arm64-unicodectype.props new file mode 100644 index 0000000000..5f5727c842 --- /dev/null +++ b/deps/python3/arm64-unicodectype.props @@ -0,0 +1,12 @@ + + + + + + Disabled + false + + + diff --git a/deps/python3/python3.cmake b/deps/python3/python3.cmake index 2eae315d0b..3e063fac4e 100644 --- a/deps/python3/python3.cmake +++ b/deps/python3/python3.cmake @@ -88,8 +88,18 @@ if(WIN32) list(APPEND _python_env_args "PreferredToolArchitecture=${_python_tool_arch}") endif() + # MSBuild reads extra switches from PCbuild/msbuild.rsp. + set(_python_rsp "/p:PlatformToolset=${_python_platform_toolset}\n") + # VS 2026's ARM64 code generator needs about 27 GB for one function in + # Objects/unicodectype.c (python/cpython#153668); the property sheet compiles + # that file without optimisation. + if(_python_pcbuild_platform STREQUAL "ARM64") + file(TO_NATIVE_PATH "${CMAKE_CURRENT_LIST_DIR}/arm64-unicodectype.props" _python_arm64_props) + string(APPEND _python_rsp "/p:ForceImportAfterCppTargets=\"${_python_arm64_props}\"\n") + endif() + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/python3-msbuild.rsp" "${_python_rsp}") set(_conf_cmd - cmd /c "echo /p:PlatformToolset=${_python_platform_toolset}>PCbuild\\msbuild.rsp" + ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/python3-msbuild.rsp" /PCbuild/msbuild.rsp ) set(_build_cmd ${CMAKE_COMMAND} -E env ${_python_env_args} From 9409598c2a9c68ec571720799187bf7f02367487 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Tue, 15 Sep 2026 10:41:46 -0500 Subject: [PATCH 144/162] ci: run the unit-test suite under the flatpak build's bounds-checked STL (#14709) * ci(flatpak): run the unit suite in a separate job, mirroring the other arches Alternative to the in-job step: split build and test like the Linux/Windows/ macOS legs. The flatpak build now builds the test binaries in-sandbox (the action's run-tests fires the module's build-only test-commands), prunes the kept build tree to the test binaries + CTest metadata + data, and uploads it with /app as a test asset (size reported to the run summary). A new unit_tests_flatpak matrix job downloads that asset on a native runner, restores the module-build symlink, and runs the suite via flatpak-builder --run (which bind-mounts /run/build so TEST_DATA_DIR resolves) against the GNOME SDK's bounds-checked STL. Results feed publish_test_results. Costs a per-arch asset upload/download + a runtime install on the test runner; the trade-off vs the in-job step is a genuine separate graph box. * ci(flatpak): run tests via `flatpak build` to avoid rofiles-fuse `flatpak-builder --run` sets up a rofiles-fuse overlay that this CI container rejects (Failure spawning rofiles-fuse, exit_status: 256), even in a fresh job with a machine-id and the runtime installed, and --disable-rofiles-fuse is not accepted in --run mode. `flatpak build` enters the sandbox via bwrap directly, so it sidesteps rofiles-fuse; bind-mounting the build tree at /run/build gives the same path the compiled-in TEST_DATA_DIR expects. * ci(flatpak): slim the test asset (strip binaries, drop source tree) The first cut shipped ~1 GB: the test exes carried debug info (the SDK builds with -g and only the app gets stripped) and the packaged module dir included the whole copied source tree the tests never read at runtime. Strip the test binaries and keep only build_flatpak/tests, tests/ (TEST_DATA_DIR) and scripts/. The irreducible remainder is /app, which the exes link against. * ci(flatpak): extract the test run into a reusable unit_tests_flatpak workflow Move the flatpak test job out of build_all.yml into a reusable unit_tests_flatpak.yml, called once per arch (Flatpak x86_64 / aarch64) the same way the other arches call unit_tests.yml. build_all.yml keeps only the build + asset packaging; the reusable workflow downloads the asset, runs the suite via `flatpak build`, and uploads results as test-results- for publish_test_results. Drops the now-unused manifest checkout (flatpak build does not need it). * ci(flatpak): trim comments to the non-obvious No behavior change. * ci(flatpak): drop redundant caller comment * ci(flatpak): drop redundant trim comment * ci(flatpak): drop size-report scaffolding and redundant if-guards * ci(flatpak): force the app module to rebuild so the test asset always exists flatpak-builder caches modules by content hash and skips a hit, producing no build tree and no test asset, so a re-run of the same commit would leave the separate test job with nothing to download. Inject a per-run cache-buster into the OrcaSlicer module's build-options (part of its cache key) so it always rebuilds, mirroring how the other arches cache only deps and always rebuild the app and tests. The deps modules stay cached. * ci(flatpak): trim cache-buster comment, fix stale step name * fix: guard H2C per-filament array reads against short config arrays The H2C tool-ordering, wipe-tower, and g-code export paths index per-filament config arrays by filament/tool id. A config with fewer entries than the filament count (partial or legacy projects, minimal test configs) makes these reads run past the end of the vector: silent under a normal STL, but UB that aborts under the flatpak build's bounds-checked STL (_GLIBCXX_ASSERTIONS). Route the reads through the existing clamping accessors (get_at, get_filament_category, is_in_same_extruder) and add a small clamp helper for filament_change_length. The guards are no-ops when the arrays are sized to the filament count, so correctly specified configs are unaffected. * ci(flatpak): build filament_group_tests too The suite landed on main after this branch was cut and arrived via a later merge, so it was missing from the target list and ctest failed the leg with filament_group_tests_NOT_BUILT. Not tests/all, which build_linux.sh uses: that is a Ninja subdirectory target and this build configures with the default Makefile generator, where it does not exist. * ci(flatpak): give the embedded-interpreter tests a valid Python home python_test_support.hpp sets PyConfig.home to /python when that path resolves. WIN32/APPLE populate it with a copied bundled runtime; the flatpak leg had no such branch, so home resolved to a directory with no stdlib and all 21 embedded plugin tests failed at "failed to get the Python codec of the filesystem encoding". Symlink /python to the bundled /app/libpython that already ships in the flatpak (the test exe links libpython3.12.so from there via rpath), so the interpreter initializes without duplicating the runtime. * ci(flatpak): sync the ToolOrdering guard mirror with #14789 Match #14709's build_filament_group_context guard to the version on #14789 (size filament_info to filament_nums, truncate filament_ids) so the folded guard is a byte-identical mirror that drops cleanly when #14789 merges, instead of leaving a stale hunk that conflicts on rebase. * fix: guard WipeTower per-filament array reads against short config arrays The BambuStudio WipeTower sync reintroduced raw per-filament array indexing that reads out of bounds when a config leaves an array shorter than the filament count: m_physical_extruder_map in format_line_M104/M109 (indexed even when empty), and m_filament_categories in get_wall_skip_points and get_wall_filament_for_all_layer. Silent on a normal STL, a hard abort under the bounds-checked STL the Flatpak build uses. Bounds-check the physical extruder map before indexing (omitting the T token, as the existing -1 path already does), and route the two raw m_filament_categories reads through the clamping get_filament_category() accessor the surrounding code already uses. No change for correctly-sized configs. * fix: default-initialize WallToolPathsParams fields min_length_factor and is_top_or_bottom_layer had no default initializers, and the FillConcentric/FillConcentricInternal callers never set them, so WallToolPaths::removeSmallLines() thresholded on stack garbage. Which short extrusion lines it dropped then depended on memory layout, so concentric solid-infill output was nondeterministic between runs and across machines. Give every member a default, matching the adjacent FillParams. The perimeter path was already fine because it builds the struct via make_paths_params(). * fix: bounds-check the toolchange flush-volume and HRC per-filament lookups GCode::set_extruder's toolchange flush-volume lookup and GCodeProcessor::update_slice_warnings's HRC check index per-filament and per-extruder arrays (flush_volumes_matrix, the filament map, the nozzle list) by filament/extruder id. When a config leaves one of those arrays shorter than the filament count (partial or legacy multi-extruder projects, minimal configs), the reads run off the end: silent on a normal STL, a hard abort under _GLIBCXX_ASSERTIONS. Route both reads through bounds checks: the flush lookup falls back to no flush, matching the existing unknown-old-filament branch beside it, and the HRC check skips an unmapped filament, mirroring the required_nozzle_HRC guard on the line above. When the arrays are sized to the filament count the values are unchanged, so correctly-specified configs are unaffected. * ci: retrigger checks * ci: name the flatpak rebuild token after the cache it defeats Since #15650 the Flatpak job also has a compiler cache, so a bare "cache-buster" no longer says which cache is meant. Call it flatpak_builder_cache_buster, and name the build-dir trim step after the flatpak-builder cache save it keeps lean. * ci: ship resources/profiles and resources/printers in the flatpak test asset Two slic3rutils tests added in 4aa0e1d60b read resources/printers/bambu_filament_ids.json through PROFILES_DIR/.., and the asset dropped resources/ entirely, so both failed parsing an empty stream on each Flatpak leg. Keep the two subtrees the tests reach; test_gcodewriter's shipped-profile case stops skipping on this leg too. * ci: restore the CRLF line endings of build_all.yml The last merge from upstream/main rewrote the file with LF endings, which turns the 60-line change into a whole-file diff on GitHub. Upstream has had this file as CRLF since it was created, so put it back. * ci: trigger Build all on changes to the unit-test workflows The path filters only matched build_*.yml, so an edit to unit_tests.yml or unit_tests_flatpak.yml could merge without ever running. * ci: put a timeout on the flatpak unit-test step Matches the 20 minutes of the regular unit-test workflow; without it a hung test holds the runner for the six-hour job default. --- .github/workflows/build_all.yml | 62 ++++++++++++++++- .github/workflows/unit_tests_flatpak.yml | 67 +++++++++++++++++++ scripts/flatpak/com.orcaslicer.OrcaSlicer.yml | 18 +++++ tests/slic3rutils/CMakeLists.txt | 12 ++++ 4 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/unit_tests_flatpak.yml diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 10edec5aaa..f8d6bb8235 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -14,6 +14,7 @@ on: - 'localization/**' - 'resources/**' - ".github/workflows/build_*.yml" + - ".github/workflows/unit_tests*.yml" - 'scripts/build_preset_cache.*' - 'scripts/flatpak/**' - 'scripts/msix/**' @@ -30,6 +31,7 @@ on: - '**/CMakeLists.txt' - 'version.inc' - ".github/workflows/build_*.yml" + - ".github/workflows/unit_tests*.yml" - 'build_linux.sh' - 'build_release_vs.bat' - 'build_release_vs2022.bat' @@ -207,7 +209,7 @@ jobs: ./validator-bin/OrcaSlicer_profile_validator -p "${{ github.workspace }}/resources/profiles" -s -l 2 publish_test_results: name: Publish Test Results - needs: [unit_tests_linux_x86_64, unit_tests_linux_aarch64, unit_tests_windows_x64, unit_tests_windows_arm64, unit_tests_macos_arm64] + needs: [unit_tests_linux_x86_64, unit_tests_linux_aarch64, unit_tests_windows_x64, unit_tests_windows_arm64, unit_tests_macos_arm64, unit_tests_flatpak_x86_64, unit_tests_flatpak_aarch64] if: ${{ !cancelled() }} runs-on: ubuntu-latest steps: @@ -324,9 +326,16 @@ jobs: sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \ scripts/flatpak/com.orcaslicer.OrcaSlicer.yml shell: bash - - name: Inject git commit hash into Flatpak manifest + # flatpak-builder reuses a module from its cache when the definition and + # sources are unchanged, so a re-run of the same commit would skip the + # OrcaSlicer module and ship no test asset. A per-run value in that module's + # env keeps it rebuilding; orca_deps stays cached, and the compiler cache + # still serves the rebuild. + - name: Inject commit hash and flatpak-builder cache buster into Flatpak manifest + env: + flatpak_builder_cache_buster: ${{ github.run_id }}-${{ github.run_attempt }} run: | - sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \ + sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n flatpak_builder_cache_buster: \"$flatpak_builder_cache_buster\"\n git_commit_hash: \"$git_commit_hash\"|}" \ scripts/flatpak/com.orcaslicer.OrcaSlicer.yml shell: bash # flatpak-builder's --ccache only wraps cc and gcc, and the manifest builds @@ -372,6 +381,10 @@ jobs: save-cache: false arch: ${{ matrix.variant.arch }} upload-artifact: false + # run-tests fires the module's build-only test-commands; keep-build-dirs + # retains the binaries for the packaging step below. + run-tests: true + keep-build-dirs: true # The build has just touched everything it can use, so an object untouched # for a week is dead, usually orphaned by a flag change. - name: Compiler cache statistics @@ -425,3 +438,46 @@ jobs: asset_name: OrcaSlicer-Linux-flatpak_nightly${{ env.nightly_suffix }}_${{ matrix.variant.arch }}.flatpak asset_content_type: application/octet-stream max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted + # The asset is /app (the exes link it at runtime) plus the build tree + # slimmed to what ctest needs. + - name: Package flatpak test asset + shell: bash + run: | + d=$(ls -d .flatpak-builder/build/OrcaSlicer-* | tail -1) + find "$d/build_flatpak" -mindepth 1 -maxdepth 1 ! -name tests -exec rm -rf {} + + # Strip debug info (the SDK builds with -g, only the app gets stripped); + # the bounds checks are compiled in, so a stripped exe still catches them. + find "$d/build_flatpak/tests" -type f -perm -u+x -exec strip --strip-unneeded {} + 2>/dev/null || true + # At runtime the tests read tests/ (TEST_DATA_DIR), scripts/, and under + # resources/ the shipped profiles (PROFILES_DIR) and the printers/ maps. + find "$d" -mindepth 1 -maxdepth 1 -type d \ + ! -name tests ! -name build_flatpak ! -name scripts ! -name resources -exec rm -rf {} + + find "$d/resources" -mindepth 1 -maxdepth 1 ! -name profiles ! -name printers -exec rm -rf {} + + tar -cf flatpak-test-asset.tar flatpak_app "$d" + - name: Upload flatpak test asset + uses: actions/upload-artifact@v7 + with: + name: ${{ github.sha }}-flatpak-tests-${{ matrix.variant.arch }} + path: flatpak-test-asset.tar + retention-days: 1 + # keep-build-dirs would otherwise land in the flatpak-builder cache saved post-job. + - name: Drop the kept build dirs before the flatpak-builder cache saves + if: always() + shell: bash + run: rm -rf .flatpak-builder/build + unit_tests_flatpak_x86_64: + name: Flatpak x86_64 + needs: flatpak + if: ${{ !cancelled() && success() }} + uses: ./.github/workflows/unit_tests_flatpak.yml + with: + os: ubuntu-24.04 + artifact: ${{ github.sha }}-flatpak-tests-x86_64 + unit_tests_flatpak_aarch64: + name: Flatpak aarch64 + needs: flatpak + if: ${{ !cancelled() && success() }} + uses: ./.github/workflows/unit_tests_flatpak.yml + with: + os: ubuntu-24.04-arm + artifact: ${{ github.sha }}-flatpak-tests-aarch64 diff --git a/.github/workflows/unit_tests_flatpak.yml b/.github/workflows/unit_tests_flatpak.yml new file mode 100644 index 0000000000..ce261c210c --- /dev/null +++ b/.github/workflows/unit_tests_flatpak.yml @@ -0,0 +1,67 @@ +name: Flatpak Unit Tests + +# Run the flatpak build's test asset inside the sandbox, once per arch. The +# GNOME SDK's _GLIBCXX_ASSERTIONS gives a bounds-checked STL that catches +# out-of-bounds reads no other test leg does. +on: + workflow_call: + inputs: + os: + required: true + type: string + artifact: + description: Test asset uploaded by the flatpak build leg + required: true + type: string + +jobs: + unit_tests_flatpak: + name: Flatpak Unit Tests + runs-on: ${{ inputs.os }} + container: + image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-50 + options: --privileged + steps: + - name: Restore test asset + uses: actions/download-artifact@v8 + with: + name: ${{ inputs.artifact }} + - name: Run unit tests (bounds-checked sandbox) + timeout-minutes: 20 + shell: bash + run: | + tar -xf flatpak-test-asset.tar + # Recreate the stable module symlink so /run/build/OrcaSlicer resolves. + d=$(ls -d .flatpak-builder/build/OrcaSlicer-* | tail -1) + ln -sfn "$(basename "$d")" .flatpak-builder/build/OrcaSlicer + # The runtime + SDK + the llvm extension the app metadata references, + # which `flatpak build` mounts; best-effort, the image may have them. + flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install --user -y --noninteractive flathub \ + org.gnome.Platform//50 org.gnome.Sdk//50 org.freedesktop.Sdk.Extension.llvm21//25.08 || true + # `flatpak build` uses bwrap (no rofiles-fuse, which this container + # rejects); bind-mount the build tree so the baked TEST_DATA_DIR resolves. + flatpak build --die-with-parent --share=network \ + --bind-mount=/run/build="$PWD/.flatpak-builder/build" \ + flatpak_app \ + bash -c 'cd /run/build/OrcaSlicer && scripts/run_unit_tests.sh build_flatpak/tests' + - name: Collect test results + if: always() + shell: bash + run: | + d=$(ls -d .flatpak-builder/build/OrcaSlicer-* 2>/dev/null | tail -1 || true) + [ -n "$d" ] && [ -f "$d/ctest_results.xml" ] && cp "$d/ctest_results.xml" ctest_results.xml || true + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: test-results-${{ inputs.artifact }} + path: ctest_results.xml + retention-days: 5 + if-no-files-found: warn + - name: Delete Test Asset + if: success() + uses: geekyeggo/delete-artifact@v6 + with: + name: ${{ inputs.artifact }} + failOnError: false diff --git a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml index 00aa430f84..668f51334b 100644 --- a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml @@ -378,6 +378,17 @@ modules: - cmake --build build_flatpak --target generate_system_cache -j$FLATPAK_BUILDER_N_JOBS - ./scripts/build_preset_cache.sh -n -b build_flatpak /app/share/OrcaSlicer/profiles + # Built (not run) here via the action's run-tests, then shipped to a separate + # test job. Only the test sources compile; nothing installs to /app. + test-commands: + - cmake . -B build_flatpak -DBUILD_TESTS=ON + # A suite missing from this list fails the leg loudly, since ctest registers a + # _NOT_BUILT test for it. (tests/all is a Ninja subdirectory target and + # this build uses the default Makefile generator, so it is not available here.) + - cmake --build build_flatpak -j"${FLATPAK_BUILDER_N_JOBS:-$(nproc)}" --target + libslic3r_tests fff_print_tests sla_print_tests libnest2d_tests slic3rutils_tests + filament_group_tests + cleanup: - /include @@ -414,6 +425,10 @@ modules: - type: dir path: ../../localization dest: localization + # For the post-build unit-test step (BUILD_TESTS=ON); not built by the app. + - type: dir + path: ../../tests + dest: tests - type: file path: ../../CMakeLists.txt @@ -427,6 +442,9 @@ modules: - type: file path: ../build_preset_cache.sh dest: scripts + - type: file + path: ../run_unit_tests.sh + dest: scripts # AppData metainfo for GNOME Software & Co. - type: file diff --git a/tests/slic3rutils/CMakeLists.txt b/tests/slic3rutils/CMakeLists.txt index 2ab78f56de..3ddacc5a1b 100644 --- a/tests/slic3rutils/CMakeLists.txt +++ b/tests/slic3rutils/CMakeLists.txt @@ -55,6 +55,18 @@ elseif (APPLE) COMMENT "Copying Python runtime for macOS plugin host API tests" VERBATIM ) +elseif (FLATPAK) + # Same /python home as WIN32/APPLE; symlink since /app/libpython + # already ships in the flatpak (the test exe links libpython3.12.so from it). + add_custom_command(TARGET ${_TEST_NAME}_tests POST_BUILD + COMMAND ${CMAKE_COMMAND} -E rm -rf + "$/python" + COMMAND ${CMAKE_COMMAND} -E create_symlink + "${CMAKE_PREFIX_PATH}/libpython" + "$/python" + COMMENT "Linking Python runtime for flatpak plugin host API tests" + VERBATIM + ) endif() orcaslicer_discover_tests(${_TEST_NAME}_tests) From a0ada1aa882b1aa0ceb77d0a5e0684dcfd174100 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 16 Sep 2026 00:43:50 +0800 Subject: [PATCH 145/162] fix wiki links --- AGENTS.md | 6 +++--- resources/data/hints.ini | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4be195b40d..01402af3eb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -64,16 +64,16 @@ ctest --test-dir ./tests/fff_print - Keep code concise and clear. Manually simplify AI generated bloated codes before review. - Include targeted tests or documented verification for behavior changes, especially in slicing logic, profiles, formats, and GUI defaults. - For profile changes (`resources/profiles//**`), check that `version` in the sibling `resources/profiles/.json` was bumped. -- For translation changes (`localization/i18n/**/*.po`), check that recurring terms match the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) for that language. +- For translation changes (`localization/i18n/**/*.po`), check that recurring terms match the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/developer_reference/localization_glossary.md) for that language. ## Localization & translations Catalogs live in `localization/i18n//OrcaSlicer_.po`; the template is `OrcaSlicer.pot`. -See the [Localization guide](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_guide.md) for the human-facing version of these principles. +See the [Localization guide](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/developer_reference/localization_guide.md) for the human-facing version of these principles. ### Terminology -- Use the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) as the source of truth for recurring terms, so the same English term is always rendered the same way within a language, and terms that must stay in English (brand/product names, acronyms, materials, file formats, G-code tokens, macros/variables/identifiers) are not translated. +- Use the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/developer_reference/localization_glossary.md) as the source of truth for recurring terms, so the same English term is always rendered the same way within a language, and terms that must stay in English (brand/product names, acronyms, materials, file formats, G-code tokens, macros/variables/identifiers) are not translated. - If a term's established translation changes, update both the affected `.po` files and the glossary (`localization_glossary.tsv`, then regenerate) so they stay in sync. - Translate the *meaning*, not the words. Check what the string actually controls before translating it — English reuses one word for different things. `Flow ratio` (multiplier), `Flow Rate` (throughput) and `Flow Dynamics` (pressure compensation) are three different terms; `extruder` may mean the toolhead, the feeder motor, or the nozzle depending on the string. - Reuse one template per recurring message shape (`Failed to connect to …`, `Are you sure you want to …?`), even where the English wording varies. diff --git a/resources/data/hints.ini b/resources/data/hints.ini index 15d2758551..a71fb868f9 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -75,7 +75,7 @@ documentation_link = https://www.orcaslicer.com/wiki/material_temperatures#print [hint:Calibration] text = Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer. -documentation_link = https://www.orcaslicer.com/wiki/calibration +documentation_link = https://www.orcaslicer.com/wiki/calibration_guide [hint:Auxiliary fan] text = Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan? From 3e1daccd7c567a0a3d2b5721841d30845f21307e Mon Sep 17 00:00:00 2001 From: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com> Date: Wed, 16 Sep 2026 01:01:39 +0200 Subject: [PATCH 146/162] Feature: Add inward wipe for external perimeters (#15407) --- docs/HLSD/wipe-inward.md | 170 ++++ src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/GCode.cpp | 198 +++-- src/libslic3r/GCode.hpp | 13 +- src/libslic3r/GCode/WipePathHelpers.cpp | 920 ++++++++++++++++++++ src/libslic3r/GCode/WipePathHelpers.hpp | 96 +++ src/libslic3r/Preset.cpp | 2 + src/libslic3r/Print.cpp | 2 + src/libslic3r/PrintConfig.cpp | 29 + src/libslic3r/PrintConfig.hpp | 2 + src/libslic3r/PrintObject.cpp | 2 + src/slic3r/GUI/ConfigManipulation.cpp | 3 + src/slic3r/GUI/Plater.cpp | 2 + src/slic3r/GUI/Tab.cpp | 2 + src/slic3r/Utils/CalibUtils.cpp | 2 + tests/fff_print/CMakeLists.txt | 1 + tests/fff_print/test_wipe.cpp | 653 +++++++++++++++ tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_wipe_path.cpp | 1024 +++++++++++++++++++++++ 19 files changed, 3041 insertions(+), 83 deletions(-) create mode 100644 docs/HLSD/wipe-inward.md create mode 100644 src/libslic3r/GCode/WipePathHelpers.cpp create mode 100644 src/libslic3r/GCode/WipePathHelpers.hpp create mode 100644 tests/fff_print/test_wipe.cpp create mode 100644 tests/libslic3r/test_wipe_path.cpp diff --git a/docs/HLSD/wipe-inward.md b/docs/HLSD/wipe-inward.md new file mode 100644 index 0000000000..9f1c617cc3 --- /dev/null +++ b/docs/HLSD/wipe-inward.md @@ -0,0 +1,170 @@ +# Wipe inward — High Level Design + +## Purpose and scope + +Wipe inward reduces reheating of fresh plastic and visible seam artifacts by +moving the hot nozzle toward adjacent printed material during the external-wall +wipe. Wipe marks are especially visible at layer heights below 0.1 mm. +The option applies only to wipes after external walls, including walls around +holes. It does not offset wipes after inner walls, infill or supports. For an +outer contour the move is inward; for a hole it is away from the hole, toward +the surrounding material. The path must remain supported by material that is +already present when the wipe executes. + +The operation belongs to G-code generation. It uses extrusion paths, their actual +widths and their print order. Changing its settings invalidates G-code export +while preserving the sliced geometry. + +## Settings and eligibility + +`wipe_inward` defaults to disabled and requires Wipe while retracting to be +enabled for the active filament. `wipe_inward_distance` defaults to 50% of the +actual external-wall extrusion width; it also accepts an absolute distance in +millimeters. Using the path width makes Auto width and Arachne's variable widths +meaningful. The effective offset is limited by that width and the spacing to the +adjacent wall. A zero distance disables the offset. + +Only external perimeters with a suitable, previously printed inner perimeter +are eligible. A configured wall count alone cannot establish eligibility: +the local geometry may contain fewer walls, and walls scheduled later do not +provide support. Outer/Inner wall order therefore normally retains the regular +wipe path. + +Retraction and pressure advance calibrations disable inward wiping so it cannot +mask the behavior being measured. The calibration settings turn it off, and +G-code generation enforces this even if a profile or object override enables it. + +## Path selection and support + +The planner identifies an adjacent inner perimeter on the material side of the +outgoing wall. Contour winding and the distinction between outer contours and +holes establish a preferred direction; local printed geometry resolves ambiguous +or self-touching contours. + +Candidate paths offset or translate the portion needed for the configured wipe +distance. A wide seam gap can prevent a supported forward path; following the +incoming printed wall backwards is also a candidate. If translating that wall +cannot provide a complete wipe around a curve, the planner tries an offset of +the reversed wall. Direction checks allow coordinate-rounding error at a +perpendicular entry, while rejecting actual backtracking. The planner checks the +complete executable path, including its connector from the nozzle position, +against the current and earlier printed perimeters. Nearby endpoints alone do +not establish support across a gap. + +Each region accumulates its printed perimeter prefix once, in extrusion order. +Every entity contributes its geometry only after it is printed, and the prefix +is discarded when the region ends. This collection is skipped when inward wiping +is disabled or its configured distance is zero. A mixed inner-wall loop remains +an eligible target even when its first path is an overhang: ordinary inner-wall +paths elsewhere in the loop identify it. Likewise, an external loop with an +overhanging start remains eligible when other segments identify the external +wall. It is available for support checks but is not an inner-wall target. +Candidate-specific support filtering and AABB trees are built only for eligible +external loops, then reused across their candidate paths. + +Material-side validation applies with or without a seam gap. Along each +candidate, local wall normals point toward the adjacent printed inner wall; +samples on the opposite side are rejected even when they remain close enough +to the external wall to pass the support check. This uses the open wall geometry +without treating it as a closed polygon. Full paths at a zero-gap seam also +retain clearance from the external wall after their initial connector. At a +clipped corner, another branch can be closer than the requested offset, so +material-side and support checks apply without that additional clearance rule. + +An accepted candidate replaces the stored wipe path as a whole. A short direct +inward move is also eligible when longer candidates fail validation. It may +waive full wall clearance, but must pass the material-side check. Its initial +direction is checked from the actual nozzle position after any loop pre-move; +the original wall endpoint is retained separately for intersection checks. It takes +priority over the alternate offset when the preferred and translated paths +are unusable. A longer reversed path may replace the selected candidate only +when its distance to the target inner wall is no worse within tolerance. + +## Fallback to the regular wipe + +The original wipe path is retained when: + +- No suitable adjacent inner wall has already been printed near the seam. This + includes single-wall areas, locally missing inner walls and normally Outer/Inner + wall order. A distant wall or a wall on the air side does not qualify. +- The requested or available offset, or the configured wipe distance, is zero + or too small at the geometry's coordinate precision. +- Degenerate geometry prevents construction of a usable candidate, or all + candidates fail the checks for printed support, direction, wall clearance or + the connector from the actual nozzle position. This can occur at tight corners, + narrow features or seam gaps. + +Corners and seam gaps do not automatically trigger fallback: an offset, +translated, reversed or short direct inward path may still be valid. The regular +wipe is retained only when no candidate is accepted. + +Fallback uses the path and retraction rules for `wipe_inward` disabled. +Wipe while retracting must still be enabled for a wipe to occur; `wipe_on_loops` +remains controlled by its own setting. + +## Interaction with Wipe on loop + +`wipe_on_loops` is an independent option that makes a short move before leaving +an external loop. It can operate with `wipe_inward` disabled. When both options +are enabled, its destination is the starting position for the inward wipe. + +The loop move samples the outgoing and incoming paths by distance across path +boundaries. The sampling distance is bounded by the nozzle diameter and one +quarter of the total path length. It samples the outgoing path at up to 20% of +the nozzle diameter and rotates that point around the seam through one third +of the material-side corner angle. For a closed square outer contour, this +produces a move of 20% of the nozzle diameter at 30 degrees into the corner. +Coincident samples or degenerate angles suppress the move. + +The nozzle position stored by G-code generation must match the emitted loop +move. Both travel planning and wipe execution depend on this position, including +when Wipe inward is disabled. + +With a seam gap, a loop move may advance past the inward offset's original entry. +If that alone makes the connector backtrack, the entry advances to the nozzle's +projection on the offset. The planner extends the source as needed to preserve +the configured wipe length and validates the new connector and complete path. +Joins that already backtrack across the seam gap are not adjusted this way. + +## Execution and retraction + +The stored wipe path uses a sentinel first point. Execution starts from the +actual nozzle position and proceeds to the second stored point. Path selection, +support validation and wipe-length calculation must all use this same executable +geometry, especially after a Wipe on loop move. + +An accepted inward path executes at the end of the external loop, after any +Wipe on loop move, without retracting filament. It consumes the stored path and +updates the nozzle position before travel planning. A short travel to the next +wall cannot discard this wipe or force a retraction or Z-hop. Subsequent travel +uses the normal minimum-travel threshold and retraction/lift settings from the +new position. The regular wipe, including fallback, remains deferred until a +normal retraction uses it. + +Retraction is divided into portions before, during and after wiping. The amount +that can be retracted during the wipe depends on its executable length, wipe +speed and the active filament's retraction speed. Fractional retraction speeds +are retained in this calculation. For a 2 mm wipe at 100 mm/s and a retraction +speed of 25.5 mm/s, the wipe can retract 0.51 mm. With a total retraction of 0.8 mm +and both before/after percentages set to zero, the remaining 0.29 mm is retracted +before wiping. This split applies to regular deferred wipes, including fallback; +an accepted inward wipe executes separately without retraction. + +## Implementation and verification + +- [GCode.cpp](../../src/libslic3r/GCode.cpp) integrates path selection, nozzle + position and retraction; [Print.cpp](../../src/libslic3r/Print.cpp) controls + invalidation, and [PrintConfig.cpp](../../src/libslic3r/PrintConfig.cpp) defines + the settings. +- [WipePathHelpers](../../src/libslic3r/GCode/WipePathHelpers.hpp) implements path + sampling, offset selection and support checks. +- [Geometry tests](../../tests/libslic3r/test_wipe_path.cpp) cover support, + degenerate paths, contour and hole orientations, and exact loop-move geometry + across path subdivisions. +- [FFF tests](../../tests/fff_print/test_wipe.cpp) cover emitted trajectories, + fallback, minimum-travel retraction and Z-hop rules, and export invalidation. + With Wipe inward disabled, they check the loop move's direction and magnitude + for Classic and Arachne, the subsequent wipe's start and length, and fractional + retraction splitting in absolute and relative E modes. + Loop-move checks use reserved role/wipe markers and extrusion state, and run + with human-readable G-code comments both enabled and disabled. diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index ffc6b5cee6..202c317e7f 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -260,6 +260,8 @@ set(lisbslic3r_sources GCode/SmallAreaInfillFlowCompensator.hpp GCode/SpiralVase.cpp GCode/SpiralVase.hpp + GCode/WipePathHelpers.cpp + GCode/WipePathHelpers.hpp GCode/ThumbnailData.cpp GCode/ThumbnailData.hpp GCode/Thumbnails.cpp diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 12a3a73e7c..501b5d0264 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1,5 +1,6 @@ #include "BoundingBox.hpp" #include "Config.hpp" +#include "GCode/WipePathHelpers.hpp" #include "GCodeWriter.hpp" #include "Polygon.hpp" #include "PrintConfig.hpp" @@ -438,7 +439,6 @@ static std::vector get_path_of_change_filament(const Print& print) auto& writer = gcodegen.writer(); auto& config = gcodegen.config(); auto extruder = writer.filament(); - auto extruder_id = extruder->extruder_id(); auto last_pos = gcodegen.last_pos(); // Declare & initialize retraction lengths @@ -475,13 +475,13 @@ static std::vector get_path_of_change_filament(const Print& print) wipe_speed = std::max(wipe_speed, 10.0); // Process wipe path & calculate wipe path length - double wipe_dist = scale_(config.wipe_distance.get_at(extruder_id)); + double wipe_dist = scale_(config.wipe_distance.get_at(extruder->config_index())); Polyline wipe_path = {last_pos}; wipe_path.append(this->path.points.begin() + 1, this->path.points.end()); double wipe_path_length = std::min(wipe_path.length(), wipe_dist); // Calculate the maximum retraction amount during wipe - retraction_length_during_wipe = config.retraction_speed.get_at(extruder_id) * + retraction_length_during_wipe = config.retraction_speed.get_at(extruder->config_index()) * unscale_(wipe_path_length) / wipe_speed; // If the maximum retraction amount during wipe is too small, @@ -564,6 +564,16 @@ static std::vector get_path_of_change_filament(const Print& print) return default_value; } + // Orca: rebuild the stored wipe path while preserving Polyline's boundary deduplication. + void Wipe::update_path(const ExtrusionPaths &paths, bool reverse) + { + reset_path(); + for (const ExtrusionPath& extrusion_path : paths) + path.append(extrusion_path.polyline.to_polyline()); + if (reverse) + path.reverse(); + } + std::string Wipe::wipe(GCode& gcodegen,double length, bool toolchange, bool is_last) { std::string gcode; @@ -616,14 +626,11 @@ static std::vector get_path_of_change_filament(const Print& print) if (gcodegen.enable_cooling_markers() && !is_last) cooling_mark = /*gcodegen.config().role_based_wipe_speed ? ";_EXTERNAL_PERIMETER" : */";_WIPE"; + // Orca: set speed once because wipe_speed is constant for all segments. gcode += gcodegen.writer().set_speed(_wipe_speed * 60, "", cooling_mark); for (const Line& line : wipe_path.lines()) { double segment_length = line.length(); double dE = length * (segment_length / wipe_dist); - //BBS: fix this FIXME - //FIXME one shall not generate the unnecessary G1 Fxxx commands, here wipe_speed is a constant inside this cycle. - // Is it here for the cooling markers? Or should it be outside of the cycle? - //gcode += gcodegen.writer().set_speed(wipe_speed * 60, "", gcodegen.enable_cooling_markers() ? ";_WIPE" : ""); gcode += gcodegen.writer().extrude_to_xy( gcodegen.point_to_gcode(line.b), -dE, @@ -2901,6 +2908,19 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato const bool skip_config_block = print.config().gcode_skip_config_block; const WipeTowerType wipe_tower_type = print.wipe_tower_type(); m_calib_config.clear(); + // Orca: Calibration overrides are reapplied after object/region settings in _extrude(). + // Keep inward wiping from masking retraction and pressure advance artifacts. + switch (print.calib_mode()) { + case CalibMode::Calib_PA_Line: + case CalibMode::Calib_PA_Pattern: + case CalibMode::Calib_PA_Tower: + case CalibMode::Calib_Auto_PA_Line: + case CalibMode::Calib_Retraction_tower: + m_calib_config.set_key_value("wipe_inward", new ConfigOptionBool(false)); + break; + default: + break; + } // resets analyzer's tracking data m_last_height = 0.f; m_last_layer_z = 0.f; @@ -7204,7 +7224,8 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref, const std::string& description, double speed, const ExtrusionEntitiesPtr& region_perimeters, - const Point* start_point) + const Point* start_point, + const WipeInwardSupport* wipe_support) { // get a copy; don't modify the orientation of the original loop object otherwise // next copies (if any) would not detect the correct orientation @@ -7434,63 +7455,80 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref, m_processor.result().print_statistics.total_seam_scarf_distance += static_cast(seam_scarf_distance_mm); } - // BBS + // Orca: share the post-extrusion nozzle position between wipe_inward and wipe_on_loops. + const bool is_ccw = loop.is_counter_clockwise(); + + std::optional wipe_on_loops_dest; + if (m_config.wipe_on_loops.value && paths.back().role() == erExternalPerimeter && + m_layer != nullptr && m_config.wall_loops.value > 1 && paths.front().size() >= 2 && + paths.back().polyline.points.size() >= 2) + wipe_on_loops_dest = wipe_on_loops_destination(paths, scale_(nozzle_diameter), is_ccw, is_hole); + + bool wipe_inward_applied = false; + // Orca: store loop paths in print order because inward offsets use this orientation. if (m_wipe.enable && FILAMENT_CONFIG(wipe)) { - m_wipe.path = Polyline(); - for (ExtrusionPath &path : paths) { - //BBS: Don't need to save duplicated point into wipe path - if (!m_wipe.path.empty() && !path.empty() && - m_wipe.path.last_point() == Point(path.first_point().x(), path.first_point().y())) { - // Convert Points3 to Points - for (auto it = path.polyline.points.begin() + 1; it != path.polyline.points.end(); ++it) - m_wipe.path.append(Point(it->x(), it->y())); - } else - m_wipe.path.append(path.polyline.to_polyline()); // TODO: don't limit wipe to last path + m_wipe.update_path(paths); + + // Orca: loop wipe paths retain print direction. Their material side is + // therefore left for CCW contours and right for CW contours, with the + // result inverted for holes. Only external perimeters are eligible. + // Calibration overrides are applied during extrusion, after the region + // context was created. Check the effective setting again at execution. + if (m_config.wipe_inward && m_config.wipe_inward_distance.value > 0. && + wipe_support != nullptr && !wipe_support->inner_lines.empty() && + // A loop's role is its first path's role. An overhanging start must + // not hide ordinary external-wall segments elsewhere in the loop. + std::any_of(paths.begin(), paths.end(), + [](const ExtrusionPath &path) { return is_external_perimeter(path.role()); }) && + m_wipe.path.points.size() >= 2) { + // Orca: use the actual extrusion width from the path, not the config + // value — outer_wall_line_width=0 (Auto) would make get_abs_value + // return 0 and silently disable the feature, and Arachne may produce + // a different width than the config default. + const double outer_wall_line_width = paths.front().width; + const double requested_offset = m_config.wipe_inward_distance.get_abs_value(outer_wall_line_width); + const double offset_dist = scale_(std::min(requested_offset, outer_wall_line_width)); + if (offset_dist > SCALED_EPSILON) { + const Point seam_start = paths.front().first_point(); + const Point seam_end = paths.back().last_point(); + const Point wipe_start = wipe_on_loops_dest.value_or(seam_end); + const double max_wipe_length = scale_(FILAMENT_CONFIG(wipe_distance)); + // Orca: Wipe::wipe() replaces points[0] with last_pos and executes + // from points[1]. The helper preserves that sentinel and atomically + // replaces the remaining points, or leaves the path untouched. + // Orca: a configured wall count does not guarantee that Arachne + // generated an adjacent wall for this particular loop. Only + // earlier entities are considered because later walls have + // not been printed yet (for example with Outer/Inner order). + // Inner walls determine the material side; every earlier wall + // remains available to validate the executable wipe path. + const double support_distance = scale_(std::max(nozzle_diameter, outer_wall_line_width)); + Polyline inward_path = m_wipe.path; + if (offset_wipe_path_toward_support( + inward_path, seam_start, seam_end, wipe_start, + wipe_offset_direction(is_ccw, is_hole), offset_dist, max_wipe_length, + wipe_support->inner_lines, wipe_support->printed_lines, + m_wipe.path.lines(), support_distance)) { + m_wipe.path = std::move(inward_path); + wipe_inward_applied = true; + } + } } } - // make a little move inwards before leaving loop - if (m_config.wipe_on_loops.value && paths.back().role() == erExternalPerimeter && m_layer != NULL && m_config.wall_loops.value > 1 && paths.front().size() >= 2 && paths.back().polyline.points.size() >= 3) { - // detect angle between last and first segment - // the side depends on the original winding order of the polygon (inwards for contours, outwards for holes) - //FIXME improve the algorithm in case the loop is tiny. - //FIXME improve the algorithm in case the loop is split into segments with a low number of points (see the Point b query). - const Point3 &a3 = paths.front().polyline.points[1]; // second point - Point a = Point(a3.x(), a3.y()); - const Point3 &b3 = *(paths.back().polyline.points.end()-3); // second to last point - Point b = Point(b3.x(), b3.y()); - if (is_hole == loop.is_counter_clockwise()) { - // swap points - Point c = a; a = b; b = c; - } - - double angle = paths.front().first_point().ccw_angle(a, b) / 3; - - // turn inwards if contour, turn outwards if hole - if (is_hole == loop.is_counter_clockwise()) angle *= -1; - - // create the destination point along the first segment and rotate it - // we make sure we don't exceed the segment length because we don't know - // the rotation of the second segment so we might cross the object boundary - Vec2d p1 = paths.front().polyline.points.front().cast().head<2>(); - Vec2d p2 = paths.front().polyline.points[1].cast().head<2>(); - Vec2d v = p2 - p1; - double nd = scale_(EXTRUDER_CONFIG(nozzle_diameter)); - double l2 = v.squaredNorm(); - // Shift by no more than a nozzle diameter. - //FIXME Hiding the seams will not work nicely for very densely discretized contours! - //BBS. shorten the travel distant before the wipe path - double threshold = 0.2; - Point pt = (p1 + v * threshold).cast(); - if (nd * nd < l2) - pt = (p1 + threshold * v * (nd / sqrt(l2))).cast(); - //Point pt = ((nd * nd >= l2) ? (p1+v*0.4): (p1 + 0.2 * v * (nd / sqrt(l2)))).cast(); - const Point3 ¢er3 = paths.front().polyline.points.front(); - pt.rotate(angle, Point(center3.x(), center3.y())); - // generate the travel move - gcode += m_writer.extrude_to_xy(this->point_to_gcode(pt), 0, "move inwards before travel", true); + // Orca: make the configured inward move before leaving the loop. + if (wipe_on_loops_dest) { + gcode += m_writer.extrude_to_xy( + this->point_to_gcode(*wipe_on_loops_dest), 0, "move inwards before travel", true); + this->set_last_pos(*wipe_on_loops_dest); } + // Execute the accepted path before another extrusion replaces it. Wiping + // must not force retraction or Z-hop across a short travel to the next wall. + // Ordinary travel planning decides whether to retract from the new position. + if (wipe_inward_applied) + gcode += m_wipe.wipe(*this, 0.); + return gcode; } @@ -7524,21 +7562,9 @@ std::string GCode::extrude_multi_path(const ExtrusionMultiPath& multipath, const m_multi_flow_segment_path_pa_set = true; } - // BBS - if (m_wipe.enable && FILAMENT_CONFIG(wipe)) { - m_wipe.path = Polyline(); - for (const ExtrusionPath &path : multipath.paths) { - //BBS: Don't need to save duplicated point into wipe path - if (!m_wipe.path.empty() && !path.empty() && - m_wipe.path.last_point() == Point(path.first_point().x(), path.first_point().y())) { - // Convert Points3 to Points - for (auto it = path.polyline.points.begin() + 1; it != path.polyline.points.end(); ++it) - m_wipe.path.append(Point(it->x(), it->y())); - } else - m_wipe.path.append(path.polyline.to_polyline()); // TODO: don't limit wipe to last path - } - m_wipe.path.reverse(); - } + // Orca: multipath wipes retrace the extrusion in reverse order. + if (m_wipe.enable && FILAMENT_CONFIG(wipe)) + m_wipe.update_path(multipath.paths, true); return gcode; } @@ -7546,14 +7572,15 @@ std::string GCode::extrude_multi_path(const ExtrusionMultiPath& multipath, const std::string GCode::extrude_entity(const ExtrusionEntity& entity, const std::string& description, double speed, - const ExtrusionEntitiesPtr& region_perimeters) + const ExtrusionEntitiesPtr& region_perimeters, + const WipeInwardSupport* wipe_support) { if (const ExtrusionPath* path = dynamic_cast(&entity)) return this->extrude_path(*path, description, speed); else if (const ExtrusionMultiPath* multipath = dynamic_cast(&entity)) return this->extrude_multi_path(*multipath, description, speed); else if (const ExtrusionLoop* loop = dynamic_cast(&entity)) - return this->extrude_loop(*loop, description, speed, region_perimeters); + return this->extrude_loop(*loop, description, speed, region_perimeters, nullptr, wipe_support); else throw Slic3r::InvalidArgument("Invalid argument supplied to extrude()"); return ""; @@ -7567,6 +7594,7 @@ std::string GCode::extrude_path(const ExtrusionPath& path, const std::string& de // description += ExtrusionEntity::role_to_string(path.role()); std::string gcode = this->_extrude(path, description, speed); if (m_wipe.enable && FILAMENT_CONFIG(wipe)) { + m_wipe.reset_path(); m_wipe.path = path.polyline.to_polyline(); if (is_tree(this->config().support_type) && is_support(path.role())) { if ((m_wipe.path.first_point() - m_wipe.path.last_point()).cast().norm() > scale_(0.2)) { @@ -7599,8 +7627,19 @@ std::string GCode::extrude_perimeters(const Print &print, const std::vectorextrude_entity(*ee, "perimeter", -1., region.perimeters); + // Build the printed prefix once in emission order, scoped to this + // region. Disabled or zero-length wipes need no support geometry. + std::optional wipe_support; + if (m_wipe.enable && FILAMENT_CONFIG(wipe) && m_config.wipe_inward && + m_config.wipe_inward_distance.value > 0. && + scale_(FILAMENT_CONFIG(wipe_distance)) > SCALED_EPSILON) + wipe_support.emplace(); + for (const ExtrusionEntity* ee : region.perimeters) { + gcode += this->extrude_entity(*ee, "perimeter", -1., region.perimeters, + wipe_support ? &*wipe_support : nullptr); + if (wipe_support) + wipe_support->append(*ee); + } } return gcode; } @@ -7841,7 +7880,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, // path is 2D. But in slope lift case, lift z is done in travel_to function. // Add m_need_change_layer_lift_z when change_layer in case of no lift if m_last_pos is equal to path.first_point() by chance Point first_point = path.first_point(); - if (!m_last_pos_defined || m_last_pos.to_point() != first_point || m_need_change_layer_lift_z || slope_need_z_travel) { + if (!m_last_pos_defined || m_last_pos.to_point() != first_point || m_need_change_layer_lift_z || + slope_need_z_travel) { const bool _last_pos_undefined = !m_last_pos_defined; double z = DBL_MAX; diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 990bf0fee7..29e4638a94 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -39,6 +39,7 @@ namespace Slic3r { // Forward declarations. class GCode; +struct WipeInwardSupport; namespace CustomGCode{ struct Item; } struct PrintInstance; @@ -61,7 +62,7 @@ public: bool enable; Polyline path; - // Orca: + // Orca: retraction portions emitted before, during, and after the wipe move. struct RetractionValues{ double retraction_length_before_wipe = 0.; double retraction_length_during_wipe = 0.; @@ -73,8 +74,10 @@ public: void reset_path() { this->path = Polyline(); } std::string wipe(GCode &gcodegen, double length, bool toolchange = false, bool is_last = false); - // Orca: + // Orca: calculate the retraction portions that can be emitted at wipe speed. RetractionValues calculateWipeRetractionLengths(GCode& gcodegen, bool toolchange); + // Orca: rebuild the stored path while deduplicating shared path boundaries. + void update_path(const ExtrusionPaths &paths, bool reverse = false); }; class WipeTowerIntegration { @@ -430,14 +433,16 @@ private: std::string extrude_entity(const ExtrusionEntity& entity, const std::string& description = "", double speed = -1., - const ExtrusionEntitiesPtr& region_perimeters = ExtrusionEntitiesPtr()); + const ExtrusionEntitiesPtr& region_perimeters = ExtrusionEntitiesPtr(), + const WipeInwardSupport* wipe_support = nullptr); // Orca: pass the complete collection of region perimeters to the extrude loop to check whether the wipe before external loop // should be executed std::string extrude_loop(const ExtrusionLoop& loop, const std::string& description, double speed = -1., const ExtrusionEntitiesPtr& region_perimeters = ExtrusionEntitiesPtr(), - const Point* start_point = nullptr); + const Point* start_point = nullptr, + const WipeInwardSupport* wipe_support = nullptr); std::string extrude_multi_path(const ExtrusionMultiPath& multipath, const std::string& description = "", double speed = -1.); std::string extrude_path(const ExtrusionPath& path, const std::string& description = "", double speed = -1.); diff --git a/src/libslic3r/GCode/WipePathHelpers.cpp b/src/libslic3r/GCode/WipePathHelpers.cpp new file mode 100644 index 0000000000..d785a16a8c --- /dev/null +++ b/src/libslic3r/GCode/WipePathHelpers.cpp @@ -0,0 +1,920 @@ +#include "WipePathHelpers.hpp" + +#include "../AABBTreeLines.hpp" + +#include +#include +#include +#include +#include + +namespace Slic3r { + +void WipeInwardSupport::append(const ExtrusionEntity &entity) +{ + const ExtrusionPaths *paths = nullptr; + if (const auto *loop = dynamic_cast(&entity)) + paths = &loop->paths; + else if (const auto *multipath = dynamic_cast(&entity)) + paths = &multipath->paths; + + // A loop's role is its first path's role. An overhanging start must not + // hide the ordinary inner-wall segments elsewhere in the same loop. + const bool is_inner = paths ? std::any_of(paths->begin(), paths->end(), + [](const ExtrusionPath &path) { return is_internal_perimeter(path.role()); }) : + is_internal_perimeter(entity.role()); + const Lines lines = entity.as_polyline().lines(); + printed_lines.insert(printed_lines.end(), lines.begin(), lines.end()); + if (is_inner) + inner_lines.insert(inner_lines.end(), lines.begin(), lines.end()); +} + +// Orca: miter limit ratio. Matches DefaultMiterLimit from ClipperUtils.hpp. +// When the miter join extends more than miter_limit * offset_dist from the +// original vertex, the miter is replaced by a bevel join. +static constexpr double miter_limit = 3.0; + +// Orca: threshold for detecting near-reversal (backtracking spike). +// Normalized dot product below this means the segments point in nearly +// opposite directions (angle > ~172°). Offsetting such a path is unsafe. +static constexpr double reversal_dot_threshold = -0.99; + +// Orca: candidates pointing more than 60 degrees away from the selected inner +// wall are too tangent to distinguish the material side reliably at a cusp. +static constexpr double min_support_alignment = 0.5; + +// Keep a scaled-coordinate rounding floor while allowing the tolerance to +// follow the relevant offset or path length. Clearance allows a larger fraction. +static double wipe_tolerance(double distance, double relative_tolerance = 0.1) +{ + return std::max(4. * SCALED_EPSILON, relative_tolerance * distance); +} + +Point sample_path_at_distance(const ExtrusionPaths &paths, bool forward, double target) +{ + assert(!paths.empty()); + if (paths.empty()) + return Point(0, 0); + + double remaining = target; + Point result = forward ? paths.front().first_point() : paths.back().last_point(); + for (int pi = forward ? 0 : (int)paths.size() - 1; + pi >= 0 && pi < (int)paths.size() && remaining > 0.; + pi += forward ? 1 : -1) { + const Points3 &pts = paths[pi].polyline.points; + for (int i = forward ? 0 : (int)pts.size() - 1; + remaining > 0. && (forward ? i + 1 < (int)pts.size() : i > 0); + i += forward ? 1 : -1) { + const int j = forward ? i + 1 : i - 1; + const Point cur(pts[i].x(), pts[i].y()); + const Point next(pts[j].x(), pts[j].y()); + const double segment_length = (next - cur).cast().norm(); + if (segment_length < SCALED_EPSILON) + continue; + if (remaining <= segment_length) { + const double ratio = remaining / segment_length; + return Point(coord_t(cur.x() + ratio * (next.x() - cur.x())), + coord_t(cur.y() + ratio * (next.y() - cur.y()))); + } + remaining -= segment_length; + result = next; + } + } + return result; +} + +// Orca: consecutive duplicates carry no path length and can be removed safely. +// A reversal, however, is real travelled distance: removing its vertex would +// replace a long backtracking wipe with a short, unrelated shortcut. +static bool prepare_source(Points &pts) +{ + pts.erase(std::unique(pts.begin(), pts.end()), pts.end()); + + if (pts.size() < 2) + return false; + + for (size_t i = 1; i + 1 < pts.size(); ++i) { + const Vec2d v_prev = (pts[i] - pts[i - 1]).cast(); + const Vec2d v_next = (pts[i + 1] - pts[i]).cast(); + const double dot = v_prev.dot(v_next) / (v_prev.norm() * v_next.norm()); + if (dot < reversal_dot_threshold) + return false; + } + return true; +} + +static bool build_offset_polyline(const Points &original, int dir, double offset_dist, + Points &result, size_t &first_join_index) +{ + if (original.size() < 2) + return false; + + // Orca: collapse all consecutive duplicates first, then reject any + // backtracking in the cleaned path instead of replacing travelled distance + // with a shortcut. + Points source = original; + if (! prepare_source(source)) + return false; + + const size_t n = source.size(); + + // Orca: compute the perpendicular offset for segment i->i+1 as an infinite Line. + auto offset_segment = [dir, offset_dist](const Point &a, const Point &b) -> Line { + Vec2d v = (b - a).cast(); + double len = v.norm(); + Vec2d perp(0, 0); + if (len > SCALED_EPSILON) + perp = Vec2d(-v.y(), v.x()) * (dir * offset_dist / len); + return Line(Point(coord_t(a.x() + perp.x()), coord_t(a.y() + perp.y())), + Point(coord_t(b.x() + perp.x()), coord_t(b.y() + perp.y()))); + }; + + result.clear(); + result.reserve(n); + first_join_index = 0; + + // Orca: the first point is perpendicular to the first segment. + Line l_prev = offset_segment(source[0], source[1]); + result.push_back(l_prev.a); + + // Orca: use the analytic intersection of adjacent offset segments for a + // miter join. Intersecting the already rounded Line endpoints amplifies + // coordinate quantization when the source segments are nearly parallel. + for (size_t i = 1; i + 1 < n; ++i) { + Line l_next = offset_segment(source[i], source[i + 1]); + const Vec2d previous = (source[i] - source[i - 1]).cast().normalized(); + const Vec2d next = (source[i + 1] - source[i]).cast().normalized(); + const double denominator = 1. + previous.dot(next); + + bool need_bevel = denominator <= EPSILON; + Point pt; + if (! need_bevel) { + const Vec2d previous_normal(-previous.y(), previous.x()); + const Vec2d next_normal(-next.y(), next.x()); + const Vec2d miter = (previous_normal + next_normal) * (dir * offset_dist / denominator); + if (miter.norm() > miter_limit * offset_dist) { + need_bevel = true; + } else { + pt = Point(coord_t(source[i].x() + miter.x()), + coord_t(source[i].y() + miter.y())); + } + } + + if (need_bevel) { + result.push_back(l_prev.b); + if (l_next.a != result.back()) + result.push_back(l_next.a); + } else { + result.push_back(pt); + } + if (i == 1) + first_join_index = result.size() - 1; + l_prev = l_next; + } + + // Orca: the last point is perpendicular to the last segment. + result.push_back(l_prev.b); + + return true; +} + +int wipe_offset_direction(bool is_ccw, bool is_hole) +{ + const int loop_inside = is_ccw ? +1 : -1; + return is_hole ? -loop_inside : loop_inside; +} + +static bool starts_by_backtracking(const Polyline &path, Point actual_start) +{ + if (path.points.size() < 3) + return false; + // Orca: points[0] is only a storage sentinel; use the nozzle position for + // the executable connector, particularly after a wipe_on_loops pre-move. + const Vec2d connector = (path.points[1] - actual_start).cast(); + const Vec2d outgoing = (path.points[2] - path.points[1]).cast(); + // An inward connector may be perpendicular to the outgoing offset edge. + // Rounded joins must not turn that right angle into a false backtrack. + return connector.dot(outgoing) < -4. * SCALED_EPSILON * outgoing.norm(); +} + +// Orca: sample the outgoing perimeter without copying or clipping its full loop. +static Point sample_polyline_at_distance(const Polyline &polyline, double target) +{ + assert(! polyline.points.empty()); + Point result = polyline.first_point(); + for (size_t i = 1; i < polyline.points.size() && target > 0.; ++i) { + const Vec2d segment = (polyline.points[i] - result).cast(); + const double length = segment.norm(); + if (length <= SCALED_EPSILON) + continue; + if (target <= length) + return (result.cast() + segment * (target / length)).cast(); + target -= length; + result = polyline.points[i]; + } + return result; +} + +// Orca: convert an executable path into Wipe::wipe()'s stored representation. +// The first point is a dummy replaced by the actual nozzle position, while the +// remaining points are clipped to the configured wipe distance. +static bool store_wipe_path(Polyline &destination, Point seam_start, + Polyline actual_path, double max_wipe_length) +{ + if (actual_path.points.size() < 2 || max_wipe_length <= SCALED_EPSILON) + return false; + + const double actual_length = actual_path.length(); + if (actual_length <= SCALED_EPSILON) + return false; + if (actual_length - max_wipe_length > SCALED_EPSILON) + actual_path.clip_end(actual_length - max_wipe_length); + if (actual_path.points.size() < 2) + return false; + for (size_t i = 1; i < actual_path.points.size(); ++i) + if (actual_path.points[i - 1] == actual_path.points[i]) + return false; + + Polyline stored_path; + stored_path.points.reserve(actual_path.points.size()); + stored_path.points.push_back(seam_start); + stored_path.points.insert(stored_path.points.end(), actual_path.points.begin() + 1, actual_path.points.end()); + stored_path.reset_to_linear_move(); + destination = std::move(stored_path); + return true; +} + +bool offset_wipe_path(Polyline &polyline, Point seam_start, Point seam_end, Point wipe_start, + int dir, double offset_dist, double max_wipe_length) +{ + assert(dir == +1 || dir == -1); + assert(offset_dist > 0); + if (polyline.points.empty() || polyline.first_point() != seam_start || + max_wipe_length <= SCALED_EPSILON) + return false; + + const Polyline original = polyline; + const double original_length = original.length(); + if (original_length <= SCALED_EPSILON) + return false; + + double source_length = std::min(original_length, max_wipe_length); + for (;;) { + Polyline source = original; + const double clip_distance = original_length - source_length; + if (clip_distance > SCALED_EPSILON) + source.clip_end(clip_distance); + + Points wrapped_source; + wrapped_source.reserve(source.points.size() + 1); + if (seam_start == seam_end) { + // Orca: the stored loop is open at seam_start even when the seam gap is + // zero. Prepend the closing edge so build_offset_polyline() creates + // the proper join between that edge and the first outgoing edge, + // instead of leaving the first offset point on the closing wall. + size_t closing_index = original.points.size(); + while (closing_index > 0 && original.points[closing_index - 1] == seam_start) + --closing_index; + if (closing_index == 0) + return false; // Orca: the entire path is a single point. + wrapped_source.push_back(original.points[closing_index - 1]); + } else { + // Orca: use the unextruded seam-gap edge to determine the incoming + // direction at the seam. Its offset is construction geometry only; + // wiping along it would create a Z-shaped detour before the outgoing + // perimeter offset. + wrapped_source.push_back(seam_end); + } + wrapped_source.insert(wrapped_source.end(), source.points.begin(), source.points.end()); + + Points offset_points; + size_t first_join_index = 0; + if (! build_offset_polyline(wrapped_source, dir, offset_dist, offset_points, first_join_index) || + first_join_index == 0 || first_join_index >= offset_points.size()) + return false; + // Orca: discard the offset of the prepended edge and, for a bevel, its + // incoming endpoint. The executable wipe starts at the seam join and + // then follows only the already printed outgoing perimeter. + offset_points.erase(offset_points.begin(), offset_points.begin() + first_join_index); + + Polyline actual_path; + actual_path.points.reserve(offset_points.size() + 1); + actual_path.points.push_back(wipe_start); + actual_path.points.insert(actual_path.points.end(), offset_points.begin(), offset_points.end()); + + // A loop pre-move may advance past an otherwise valid offset join. + // Enter at the nozzle's projection instead of returning to the join. + // Do not repair a join that already backtracks across the seam gap; + // the caller must still validate wall crossings, material side and support. + if (seam_start != seam_end && wipe_start != seam_start && wipe_start != seam_end && + starts_by_backtracking(actual_path, wipe_start) && ! starts_by_backtracking(actual_path, seam_end)) { + size_t entry = 1; + while (entry + 1 < actual_path.points.size()) { + const Vec2d edge = (actual_path.points[entry + 1] - actual_path.points[entry]).cast(); + const double projection = (wipe_start - actual_path.points[entry]).cast().dot(edge); + if (projection <= 0.) + break; + if (projection < edge.squaredNorm()) { + actual_path.points[entry] = (actual_path.points[entry].cast() + + edge * (projection / edge.squaredNorm())).cast(); + break; + } + ++entry; + } + actual_path.points.erase(actual_path.points.begin() + 1, actual_path.points.begin() + entry); + } + + if (seam_start != seam_end && wipe_start == seam_end && + starts_by_backtracking(actual_path, wipe_start)) { + // Orca: a wide seam gap or a sharp cusp may put the first miter + // behind its outgoing edge. Reject this offset candidate so the + // caller can try the opposite side or the translated fallback. + return false; + } + + const double actual_length = actual_path.length(); + const bool source_exhausted = original_length - source_length <= SCALED_EPSILON; + if (actual_length + SCALED_EPSILON < max_wipe_length && ! source_exhausted) { + // Orca: offset joins may shorten the path at every corner. Grow the + // source until the executable offset path, not a heuristic source + // margin, reaches the configured wipe distance. + const double deficit = max_wipe_length - actual_length; + const double next_length = std::min(original_length, + source_length + std::max(deficit, 2. * SCALED_EPSILON)); + if (next_length - source_length <= SCALED_EPSILON) + return false; + source_length = next_length; + continue; + } + + // Orca: unlike an extruded offset, a wipe may safely cross or retrace the + // just-printed perimeter. The caller validates the complete executable + // path against current and earlier printed perimeter geometry. + return store_wipe_path(polyline, seam_start, std::move(actual_path), max_wipe_length); + } +} + +static bool translated_wipe_path(Polyline &polyline, Point seam_start, Point seam_end, Point wipe_start, + const Vec2d &translation, double max_wipe_length) +{ + if (translation.norm() <= SCALED_EPSILON || max_wipe_length <= SCALED_EPSILON) + return false; + + const Polyline original = polyline; + Polyline actual_path; + actual_path.points.reserve(original.points.size() + 2); + actual_path.points.push_back(wipe_start); + + const auto append_translated = [&actual_path, &translation](const Point &point) { + const Point translated = (point.cast() + translation).cast(); + if (translated != actual_path.points.back()) + actual_path.points.push_back(translated); + }; + + // Orca: translate the seam join directly. Translating seam_end and then + // following the unextruded gap back to seam_start makes the wipe double + // back whenever a gap ends near a sharp corner. + append_translated(seam_start); + for (const Point &point : original.points) + append_translated(point); + + if (seam_start != seam_end && wipe_start == seam_end && + starts_by_backtracking(actual_path, wipe_start)) { + // Orca: at a wide gap next to a cusp, the translated seam join may + // lie behind the outgoing edge. Prefer a shorter local inward move + // at the actual extrusion end over a longer lightning-shaped wipe. + actual_path.points.resize(1); + append_translated(seam_end); + } + + return store_wipe_path(polyline, seam_start, std::move(actual_path), max_wipe_length); +} + +// A segment whose endpoints lie within one line's distance capsule is fully +// supported, since that capsule is convex. Subdivide only when support changes +// between lines; fixed-distance sampling can miss an unsupported gap. +static bool segment_is_supported(Point start, Point end, + const AABBTreeLines::LinesDistancer &distancer, + double max_distance) +{ + const Point midpoint = ((start.cast() + end.cast()) * 0.5).cast(); + const auto [distance, line_index, nearest] = distancer.distance_from_lines_extra(midpoint); + if (distance > max_distance) + return false; + + const Line &line = distancer.get_line(line_index); + if (line.distance_to(start) <= max_distance && line.distance_to(end) <= max_distance) + return true; + if (distancer.distance_from_lines(start) > max_distance || + distancer.distance_from_lines(end) > max_distance) + return false; + + // Conservatively reject an unresolved transition at coordinate precision. + if ((end - start).cast().norm() <= SCALED_EPSILON) + return false; + return segment_is_supported(start, midpoint, distancer, max_distance) && + segment_is_supported(midpoint, end, distancer, max_distance); +} + +std::optional wipe_path_support_score( + const Polyline &polyline, Point wipe_start, + const AABBTreeLines::LinesDistancer &target_distancer, + const AABBTreeLines::LinesDistancer &all_support_distancer, + double max_distance) +{ + if (polyline.points.size() < 2 || target_distancer.get_lines().empty() || max_distance <= 0) + return std::nullopt; + + // Orca: require a local neighbour, not merely an earlier perimeter elsewhere in + // the region. At a convex corner, an inner wall's miter is farther from the + // external seam than its normal wall spacing, so allow the same bounded miter + // reach as the offset construction without accepting a remote island. + if (target_distancer.distance_from_lines(wipe_start) > + miter_limit * max_distance + 4. * SCALED_EPSILON) + return std::nullopt; + + Point previous = wipe_start; + for (size_t i = 1; i < polyline.points.size(); ++i) { + // Orca: a tightly curved inward path may cross back over the current wall. + // This is safe for a non-extruding wipe as long as the complete path + // remains over current or earlier printed perimeter geometry. + // Allow the same coordinate-rounding tolerance at every point, including + // the actual start substituted for the stored sentinel. + if (! segment_is_supported(previous, polyline.points[i], all_support_distancer, + max_distance + 4. * SCALED_EPSILON)) + return std::nullopt; + previous = polyline.points[i]; + } + + // Orca: decide direction at the seam. Scoring the complete path may select + // the wrong initial side when two contours converge and the later prefix + // happens to run closer to unrelated support. + return target_distancer.distance_from_lines(polyline.points[1]); +} + +static bool initial_connector_is_clear( + const Polyline &polyline, Point wipe_start, Point seam_start, + AABBTreeLines::LinesDistancer ¤t_perimeter_distancer, + double contact_tolerance) +{ + if (polyline.points.size() < 2 || polyline.points[1] == wipe_start) + return false; + + // Orca: without a seam gap, the connector necessarily starts at the wall + // and a self-touching cusp may share that same endpoint on several edges. + if (seam_start == wipe_start) + return true; + + const Line connector(wipe_start, polyline.points[1]); + const auto intersections = current_perimeter_distancer.intersections_with_line(connector); + for (const auto &intersection : intersections) { + if ((intersection.first - wipe_start).cast().norm() > contact_tolerance) + return false; + } + + Point closest; + // Orca: integer offset joins may miss the exact seam-start coordinate by + // a few microns. Treat a close pass through that point as retracing the + // external wall, but keep the unavoidable contact at the actual start. + if (connector.distance_to_squared(seam_start, &closest) <= contact_tolerance * contact_tolerance && + (closest - wipe_start).cast().norm() > contact_tolerance) + return false; + + return true; +} + +static std::optional support_offset_at_start( + const Polyline &source, Point local_origin, bool disambiguate_branch, + AABBTreeLines::LinesDistancer &support_distancer, + double max_support_distance) +{ + if (source.points.size() < 2) + return std::nullopt; + + // Orca: a nonzero gap may put the seam beside the wrong branch of a cusp. + // Sample farther along the path to identify its actual neighbouring wall. + const Point support_query = disambiguate_branch ? + sample_polyline_at_distance(source, 2. * max_support_distance) : source.first_point(); + const auto nearest_result = support_distancer.distance_from_lines_extra(support_query); + const Line &nearest_line = support_distancer.get_line(std::get<1>(nearest_result)); + Vec2d sampled_offset = std::get<2>(nearest_result) - support_query.cast(); + + if (disambiguate_branch) { + // Orca: an endpoint projection also contains distance along the support + // segment. Remove that tangent component before comparing wall sides. + const Vec2d support_edge = (nearest_line.b - nearest_line.a).cast(); + if (support_edge.norm() > SCALED_EPSILON) { + const Vec2d support_tangent = support_edge.normalized(); + sampled_offset -= support_tangent * sampled_offset.dot(support_tangent); + } + } + if (sampled_offset.norm() <= SCALED_EPSILON) + return std::nullopt; + + if (! disambiguate_branch) + return sampled_offset; + + // Orca: find the local point on the same material-side branch. Using the + // sampled point itself would add the distance already travelled along the + // perimeter and turn a normal transition into a long diagonal move. + const Vec2d sampled_direction = sampled_offset.normalized(); + Vec2d local_offset = sampled_offset; + double best_local_score = std::numeric_limits::infinity(); + for (size_t line_index : support_distancer.all_lines_in_radius( + local_origin, 2. * max_support_distance + 4. * SCALED_EPSILON)) { + Point local_support; + const Line &line = support_distancer.get_line(line_index); + const double distance_squared = line.distance_to_squared(local_origin, &local_support); + const Vec2d candidate_offset = local_support.cast() - local_origin.cast(); + const double candidate_distance = std::sqrt(distance_squared); + if (candidate_distance <= SCALED_EPSILON) + continue; + const double alignment = candidate_offset.normalized().dot(sampled_direction); + if (alignment < min_support_alignment) + continue; + const double score = candidate_distance / alignment; + if (score < best_local_score) { + best_local_score = score; + local_offset = candidate_offset; + } + } + return local_offset; +} + +static double executable_path_length(const Polyline &stored_path, Point wipe_start) +{ + if (stored_path.points.size() < 2) + return 0.; + + // Orca: points[0] is the storage sentinel, so measure the first segment + // from the actual nozzle position and the remaining stored segments normally. + double length = (stored_path.points[1] - wipe_start).cast().norm(); + for (size_t index = 2; index < stored_path.points.size(); ++index) + length += (stored_path.points[index] - stored_path.points[index - 1]).cast().norm(); + return length; +} + +static Lines material_side_support_lines(const Polyline &path, Point seam, int preferred_dir, + const Lines &support_lines) +{ + if (path.points.size() < 4 || path.first_point() != path.last_point()) + return {}; + + // Orca: the bisector of the incoming and outgoing material-side normals is + // a local side test that remains valid for globally self-touching Arachne + // contours. Ignore repeated seam points when obtaining both tangents. + const auto outgoing_it = std::find_if( + path.points.begin() + 1, path.points.end(), [seam](const Point &point) { return point != seam; }); + const auto incoming_it = std::find_if( + path.points.rbegin() + 1, path.points.rend(), [seam](const Point &point) { return point != seam; }); + if (outgoing_it == path.points.end() || incoming_it == path.points.rend()) + return {}; + + const Vec2d outgoing = (*outgoing_it - seam).cast().normalized(); + const Vec2d incoming = (seam - *incoming_it).cast().normalized(); + const Vec2d material_direction = + (Vec2d(-outgoing.y(), outgoing.x()) + Vec2d(-incoming.y(), incoming.x())) * preferred_dir; + if (material_direction.norm() <= EPSILON) + return {}; + + Lines result; + result.reserve(support_lines.size()); + for (const Line &line : support_lines) { + Point closest; + line.distance_to_squared(seam, &closest); + if ((closest - seam).cast().dot(material_direction) > SCALED_EPSILON) + result.push_back(line); + } + return result; +} + +bool wipe_path_stays_on_material_side( + const Polyline &path, Point path_start, const Vec2d &support_direction, + const AABBTreeLines::LinesDistancer &target_perimeter_distancer, + const AABBTreeLines::LinesDistancer ¤t_perimeter_distancer, + double effective_offset, bool require_clearance) +{ + if (path.points.size() < 2 || support_direction.norm() <= EPSILON || + target_perimeter_distancer.get_lines().empty() || current_perimeter_distancer.get_lines().empty() || + effective_offset <= SCALED_EPSILON) + return false; + + const Vec2d initial_offset = (path.points[1] - path_start).cast(); + if (initial_offset.norm() <= SCALED_EPSILON || + initial_offset.normalized().dot(support_direction.normalized()) < min_support_alignment) + return false; + // Orca: after the connector has left the extrusion endpoint, an inward + // offset must retain most of its requested clearance from the current + // external wall. Otherwise a tight turn may send an initially correct path + // back onto that wall, or make the opposite-side candidate look supported. + const double clearance_tolerance = wipe_tolerance(effective_offset, 0.25); + const double minimum_clearance = effective_offset - clearance_tolerance; + const Lines &lines = current_perimeter_distancer.get_lines(); + const auto left_normal = [](const Line &line) -> Vec2d { + const Vec2d edge = (line.b - line.a).cast(); + if (edge.norm() <= SCALED_EPSILON) + return Vec2d::Zero(); + return Vec2d(-edge.y(), edge.x()).normalized(); + }; + const auto on_material_side = [&](const Point &point, bool check_clearance) { + const auto [distance, line_index, nearest] = + current_perimeter_distancer.distance_from_lines_extra(point); + if (line_index >= lines.size()) + return false; + const Line &line = lines[line_index]; + Vec2d normal = left_normal(line); + // At a shared vertex use both incident edges, so the result does not + // depend on which equally close edge the AABB query happens to return. + const Line &previous = lines[(line_index + lines.size() - 1) % lines.size()]; + const Line &next = lines[(line_index + 1) % lines.size()]; + if ((nearest - line.a.cast()).norm() <= SCALED_EPSILON && previous.b == line.a) + normal += left_normal(previous); + if ((nearest - line.b.cast()).norm() <= SCALED_EPSILON && next.a == line.b) + normal += left_normal(next); + if (normal.norm() <= EPSILON) + return false; + + // An open or self-touching wall has no reliable polygon-wide sign. + // Orient its local normal toward the neighbouring printed inner wall, + // then test the candidate on that side at every sample. + normal.normalize(); + const Point wall_point = nearest.cast(); + const Vec2d support_point = std::get<2>( + target_perimeter_distancer.distance_from_lines_extra(wall_point)); + const double support_side = (support_point - nearest).dot(normal); + if (std::abs(support_side) <= 4. * SCALED_EPSILON) + return false; + const double side = (point.cast() - nearest).dot(normal) * (support_side > 0. ? 1. : -1.); + return side >= -4. * SCALED_EPSILON && + (! check_clearance || distance + 4. * SCALED_EPSILON >= minimum_clearance); + }; + + Point previous = path.points[1]; + if (! on_material_side(previous, require_clearance)) + return false; + for (size_t index = 2; index < path.points.size(); ++index) { + const Vec2d segment = (path.points[index] - previous).cast(); + const size_t samples = std::max(1, size_t(std::ceil(segment.norm() / effective_offset))); + for (size_t sample = 1; sample <= samples; ++sample) { + const Point point = (previous.cast() + + segment * (double(sample) / double(samples))).cast(); + if (! on_material_side(point, require_clearance)) + return false; + } + previous = path.points[index]; + } + return true; +} + +bool offset_wipe_path_toward_support(Polyline &polyline, Point seam_start, Point seam_end, Point wipe_start, + int preferred_dir, double offset_dist, double max_wipe_length, + const Lines &target_perimeter_lines, const Lines &printed_perimeter_lines, + const Lines ¤t_perimeter_lines, + double max_support_distance) +{ + assert(preferred_dir == +1 || preferred_dir == -1); + if (polyline.points.size() < 2 || target_perimeter_lines.empty() || current_perimeter_lines.empty() || + offset_dist <= SCALED_EPSILON || + max_wipe_length <= SCALED_EPSILON || max_support_distance <= SCALED_EPSILON) + return false; + + Lines material_support_lines; + const Lines *candidate_support_lines = &target_perimeter_lines; + if (seam_start == seam_end) { + // Orca: another contour may have a geometrically closer inner wall on + // this loop's air side. Restrict zero-gap support using the local seam + // normals before choosing the nearest wall. + material_support_lines = material_side_support_lines( + polyline, seam_start, preferred_dir, target_perimeter_lines); + if (material_support_lines.empty()) + return false; + candidate_support_lines = &material_support_lines; + } + + AABBTreeLines::LinesDistancer support_distancer(*candidate_support_lines); + const std::optional support_offset = support_offset_at_start( + polyline, seam_end, seam_start != seam_end, + support_distancer, max_support_distance); + if (! support_offset) + return false; + const Vec2d toward_support = *support_offset; + const double local_support_distance = toward_support.norm(); + const double effective_offset = std::min(offset_dist, local_support_distance); + if (effective_offset <= SCALED_EPSILON) + return false; + const Vec2d support_direction = toward_support / local_support_distance; + + // Orca: every candidate is validated against the same generated geometry. + // Build these AABB trees once per loop instead of rebuilding them for each + // preferred, alternate, translated, direct, or reversed candidate. + Lines all_support_lines = printed_perimeter_lines; + all_support_lines.insert(all_support_lines.end(), current_perimeter_lines.begin(), current_perimeter_lines.end()); + AABBTreeLines::LinesDistancer all_support_distancer(std::move(all_support_lines)); + AABBTreeLines::LinesDistancer current_perimeter_distancer(current_perimeter_lines); + + // Orca: allow only the contact needed to leave the extrusion endpoint. A + // connector that meets the current wall again is a seam-gap retrace, even + // if the rest of the non-extruding wipe remains over printed material. + const double contact_tolerance = wipe_tolerance(effective_offset); + + struct Candidate { + Polyline path; + // Orca: support score chooses the material-side path; length is used + // only to replace a corner-truncated path with the reverse fallback. + double support_score; + double path_length; + }; + + // Direction and wall contact have different origins after a loop pre-move. + // Keep the construction's wall endpoint for intersection checks even when + // the candidate's direction must be checked from the current nozzle position. + const auto validate_candidate = [&](Polyline path, Point path_start, Point direction_start, + double path_contact_tolerance, + const Vec2d &candidate_support_direction, + double candidate_offset, + bool require_clearance = true) -> std::optional { + // Orca: backtracking indicates a wrong join only across a nonzero gap. + // A closed zero-gap offset may initially turn back at its miter while + // still remaining on the supported material side of the perimeter. + const bool backtracks_across_gap = seam_start != seam_end && starts_by_backtracking(path, wipe_start); + // At a clipped corner another branch of the current wall may be closer + // than the requested offset. Preserve the zero-gap clearance rule, but + // check direction and local material side independently for every gap. + const bool material_side = wipe_path_stays_on_material_side( + path, direction_start, candidate_support_direction, + support_distancer, current_perimeter_distancer, candidate_offset, + require_clearance && seam_start == seam_end); + const bool connector_clear = initial_connector_is_clear( + path, wipe_start, path_start, current_perimeter_distancer, path_contact_tolerance); + if (backtracks_across_gap || ! material_side || ! connector_clear) + return std::nullopt; + const std::optional score = wipe_path_support_score( + path, wipe_start, support_distancer, all_support_distancer, max_support_distance); + if (! score) + return std::nullopt; + const double path_length = executable_path_length(path, wipe_start); + return Candidate{std::move(path), *score, path_length}; + }; + + const auto offset_candidate = [&](int dir) -> std::optional { + Polyline path = polyline; + if (! offset_wipe_path(path, seam_start, seam_end, wipe_start, dir, + effective_offset, max_wipe_length)) + return std::nullopt; + return validate_candidate(std::move(path), seam_start, seam_start, + contact_tolerance, support_direction, effective_offset); + }; + + std::optional preferred = offset_candidate(preferred_dir); + std::optional alternate = offset_candidate(-preferred_dir); + + // Orca: forward and reverse fallbacks share the same clamping, translation, + // connector tolerance, and complete-path validation. + const auto translated_candidate = [&](Polyline source, Point source_start, Point source_end, + const Vec2d &candidate_support_offset) -> std::optional { + const double support_distance = candidate_support_offset.norm(); + const double candidate_offset = std::min(offset_dist, support_distance); + if (candidate_offset <= SCALED_EPSILON) + return std::nullopt; + + const Vec2d candidate_translation = candidate_support_offset * (candidate_offset / support_distance); + if (! translated_wipe_path(source, source_start, source_end, wipe_start, + candidate_translation, max_wipe_length)) + return std::nullopt; + const double candidate_tolerance = wipe_tolerance(candidate_offset); + return validate_candidate(std::move(source), source_start, source_start, candidate_tolerance, + candidate_support_offset / support_distance, candidate_offset); + }; + + std::optional translated = translated_candidate(polyline, seam_start, seam_end, toward_support); + + // Orca: if every full-length construction folds back onto the external + // wall, retain a short direct inward move instead of accepting an outward + // candidate or falling back to the standard wipe along the outer wall. + const auto direct_candidate = [&](Point origin, const Vec2d &candidate_support_offset) -> std::optional { + const double support_distance = candidate_support_offset.norm(); + const double candidate_offset = std::min(offset_dist, support_distance); + if (candidate_offset <= SCALED_EPSILON) + return std::nullopt; + const Vec2d direction = candidate_support_offset / support_distance; + const Point destination = (origin.cast() + direction * candidate_offset).cast(); + if (destination == wipe_start) + return std::nullopt; + + Polyline path; + if (! store_wipe_path(path, seam_start, Polyline{wipe_start, destination}, max_wipe_length)) + return std::nullopt; + const double candidate_tolerance = wipe_tolerance(candidate_offset); + // Check the executed direction from the nozzle after any loop pre-move, + // but retain the wall origin for the connector's intersection checks. + return validate_candidate(std::move(path), origin, wipe_start, + candidate_tolerance, direction, candidate_offset, false); + }; + std::optional direct = direct_candidate(seam_end, toward_support); + + const double length_margin = wipe_tolerance(max_wipe_length); + std::optional reversed; + if (seam_start != seam_end && polyline.last_point() == seam_end) { + // Orca: when a large gap straddles a sharp corner, connecting the + // extrusion end to the forward offset may either reverse or leave only + // a short local move. The already printed incoming wall is equally safe: + // follow it backwards and determine its own material-side support. + Polyline reversed_source = polyline; + reversed_source.reverse(); + const std::optional reversed_support_offset = support_offset_at_start( + reversed_source, seam_end, true, support_distancer, max_support_distance); + if (reversed_support_offset) { + reversed = translated_candidate(reversed_source, seam_end, seam_end, *reversed_support_offset); + // A translated reverse path can backtrack or leave the material on + // a curved wall. Offset the incoming wall itself when translation + // cannot supply a complete wipe, retaining all candidate checks. + if (! reversed || reversed->path_length + length_margin < max_wipe_length) { + const double reverse_offset = std::min(offset_dist, reversed_support_offset->norm()); + if (reverse_offset > SCALED_EPSILON && + offset_wipe_path(reversed_source, seam_end, seam_start, wipe_start, + -preferred_dir, reverse_offset, max_wipe_length)) { + reversed_source.points.front() = seam_start; + auto candidate = validate_candidate(std::move(reversed_source), seam_end, seam_end, + wipe_tolerance(reverse_offset), reversed_support_offset->normalized(), reverse_offset); + if (candidate && (! reversed || + (candidate->path_length > reversed->path_length + length_margin && + candidate->support_score <= reversed->support_score + wipe_tolerance(reverse_offset)))) + reversed = std::move(candidate); + } + } + } + } + + // Orca: conventional offsets at a narrow cusp may form a bevel across the + // cusp. Candidates pointing away from the actual inner wall are rejected + // during validation; among the remaining paths, prefer the one whose first + // point is materially closer to that wall. + const double direction_change_margin = wipe_tolerance(effective_offset); + std::optional selected = std::move(preferred); + if (translated) { + if (! selected || translated->support_score + direction_change_margin < selected->support_score) + selected = std::move(translated); + } + if (! selected) + selected = std::move(direct); + // Prefer a direct inward move when the normal offset cannot be used. + // An alternate offset is eligible only after the same material-side checks. + if (! selected) + selected = std::move(alternate); + + // Orca: prefer a complete reverse wipe over a forward fallback that had to + // stop at the corner. Equal-length paths keep the normal forward behavior. + if (reversed && (! selected || + (reversed->path_length > selected->path_length + length_margin && + reversed->support_score <= selected->support_score + direction_change_margin))) + selected = std::move(reversed); + if (! selected) + return false; + + polyline = std::move(selected->path); + return true; +} + +std::optional wipe_on_loops_destination(const ExtrusionPaths &paths, double nozzle_diam_scaled, + bool is_ccw, bool is_hole) +{ + assert(!paths.empty()); + assert(nozzle_diam_scaled > 0); + if (paths.empty() || nozzle_diam_scaled <= 0) + return std::nullopt; + + // Orca: clamp sample distance to L/4 so forward/backward samples cannot meet. + double total_length = 0.; + for (const ExtrusionPath &path : paths) + total_length += path.length(); + const double sample_distance = std::min(nozzle_diam_scaled, total_length * 0.25); + + Point a = sample_path_at_distance(paths, true, sample_distance); + Point b = sample_path_at_distance(paths, false, sample_distance); + + const Point seam_start = paths.front().first_point(); + + // Orca: skip the inward move for degenerate geometry. + if (a == b || a == seam_start || b == seam_start) + return std::nullopt; + + const bool reverse_turn = is_hole == is_ccw; + if (reverse_turn) + std::swap(a, b); + + double angle = seam_start.ccw_angle(a, b) / 3; + + // Orca: reject degenerate angles near 0 or 2π. + static constexpr double angle_epsilon = 0.01; + if (angle < angle_epsilon || angle > 2 * PI / 3 - angle_epsilon) + return std::nullopt; + + if (reverse_turn) + angle *= -1; + + Point pt = sample_path_at_distance(paths, true, std::min(0.2 * nozzle_diam_scaled, sample_distance)); + pt.rotate(angle, seam_start); + return pt; +} + +} // namespace Slic3r diff --git a/src/libslic3r/GCode/WipePathHelpers.hpp b/src/libslic3r/GCode/WipePathHelpers.hpp new file mode 100644 index 0000000000..616e5dc88b --- /dev/null +++ b/src/libslic3r/GCode/WipePathHelpers.hpp @@ -0,0 +1,96 @@ +#pragma once + +#include + +#include "../ExtrusionEntity.hpp" +#include "../Polyline.hpp" +#include "../Line.hpp" + +namespace Slic3r { + +// Printed prefix of one region's perimeter sequence. Append each entity only +// after extrusion; later walls and other regions cannot support an inward wipe. +struct WipeInwardSupport { + Lines printed_lines; + Lines inner_lines; + void append(const ExtrusionEntity &entity); +}; + +namespace AABBTreeLines { +template class LinesDistancer; +} + +// Orca: sample a point at a given distance along ExtrusionPaths, walking +// across segment boundaries. forward=true walks from paths.front, false from +// paths.back. For tiny loops the walk stops early and returns the last +// reachable point. Returns the start point if target is zero. +// Precondition: paths must be non-empty. +Point sample_path_at_distance(const ExtrusionPaths &paths, bool forward, double target); + +// Orca: return the side of the printed path on which the material lies. +// dir +1 is left and -1 is right, matching the offset-builder convention. +int wipe_offset_direction(bool is_ccw, bool is_hole); + +// Orca: atomically offset a stored wipe path. The seam-gap or closing edge +// determines the join with the first outgoing perimeter edge, but its offset +// is not part of the executable wipe. Only the prefix needed by Wipe::wipe() +// is offset. Returns false and leaves polyline unchanged if that path cannot +// be constructed without degenerate segments. This only constructs a candidate; +// offset_wipe_path_toward_support() validates its support, material side and +// connector before accepting it. The first stored point +// remains a dummy preserving Wipe::wipe()'s convention of skipping points[0]. +// Precondition: polyline starts at seam_start, dir is +1 or -1, and +// offset_dist > 0. A non-positive max_wipe_length returns false. +bool offset_wipe_path(Polyline &polyline, Point seam_start, Point seam_end, Point wipe_start, + int dir, double offset_dist, double max_wipe_length); + +// Orca: score a candidate's first destination by distance to the target inner +// walls. Return nullopt if no target wall is near wipe_start or any executable +// segment lacks support. target_distancer contains eligible earlier walls; +// all_support_distancer includes the current wall and all earlier walls. +// The stored first point is a dummy: the first segment starts at wipe_start. +// This checks support only; material-side and connector checks belong to +// offset_wipe_path_toward_support(). Trees are reused across its candidates. +std::optional wipe_path_support_score( + const Polyline &polyline, Point wipe_start, + const AABBTreeLines::LinesDistancer &target_distancer, + const AABBTreeLines::LinesDistancer &all_support_distancer, + double max_distance); + +// Validate the initial inward direction and the local material side along the +// executable path, using the inner wall to orient the open current wall's +// normals. Clearance is optional for clipped corners and short direct fallbacks; +// the material-side check is mandatory. The straight connector is checked by +// its initial direction and separately by support and intersection validation. +// path_start is the construction origin; points[0] is only a storage sentinel. +bool wipe_path_stays_on_material_side( + const Polyline &path, Point path_start, const Vec2d &support_direction, + const AABBTreeLines::LinesDistancer &target_perimeter_distancer, + const AABBTreeLines::LinesDistancer ¤t_perimeter_distancer, + double effective_offset, bool require_clearance); + +// Orca: identify the adjacent inner perimeter from the outgoing wall, excluding +// support on the air side of a closed zero-gap loop. Clamp the requested offset +// to the distance from the seam end to that support, then select the safest +// supported offset or translated path. If a wide seam gap at a corner truncates +// every forward candidate, the incoming printed wall may be followed backwards +// instead. All earlier printed perimeters still participate in the complete-path +// safety check. This handles converging, locally ambiguous, or self-touching +// contours whose global winding alone does not identify the material side. +// Returns false and leaves polyline unchanged when no candidate is supported. +// Precondition: preferred_dir is +1 or -1. Distances must be positive. +bool offset_wipe_path_toward_support(Polyline &polyline, Point seam_start, Point seam_end, Point wipe_start, + int preferred_dir, double offset_dist, double max_wipe_length, + const Lines &target_perimeter_lines, const Lines &printed_perimeter_lines, + const Lines ¤t_perimeter_lines, + double max_support_distance); + +// Orca: compute the inward destination point for wipe_on_loops, or +// std::nullopt when the geometry is degenerate (tiny loop, coincident samples, +// angle near 0 or 2π). Returns the rotated destination or nullopt to skip the +// inward move entirely. +// Precondition: paths non-empty, nozzle_diam_scaled > 0. +std::optional wipe_on_loops_destination(const ExtrusionPaths &paths, double nozzle_diam_scaled, + bool is_ccw, bool is_hole); + +} // namespace Slic3r diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index e974ffd7f8..d4209abe1f 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1282,6 +1282,8 @@ static std::vector s_Preset_print_options{ "accel_to_decel_enable", "accel_to_decel_factor", "wipe_on_loops", + "wipe_inward", + "wipe_inward_distance", "wipe_before_external_loop", "bridge_density", "internal_bridge_density", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 60f747ce04..9c4edabfdb 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -233,6 +233,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "accel_to_decel_enable", "accel_to_decel_factor", "wipe_on_loops", + "wipe_inward", + "wipe_inward_distance", "gcode_comments", "gcode_label_objects", "exclude_object", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 0b0fe71dc0..7c34fb9542 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -6267,6 +6267,35 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); + def = this->add("wipe_inward", coBool); + def->label = L("Wipe inward"); + def->category = L("Quality"); + def->tooltip = L("Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed " + "inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n\n" + "Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n\n" + "Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or " + "Outer/Inner wall order), or if no supported inward path can be found, for example at tight " + "corners or seam gaps."); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBool(false)); + + def = this->add("wipe_inward_distance", coFloatOrPercent); + def->label = L("Wipe inward distance"); + def->category = L("Quality"); + def->tooltip = L("The distance the wipe path is shifted away from the external perimeter, specified in millimeters " + "or as a percentage of the actual outer-wall extrusion width.\n\n" + "For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited " + "by both the actual outer-wall width and the available spacing to the adjacent wall, so values " + "above 100% or an equivalent absolute distance have no additional effect. " + "Set to 0 to disable the offset."); + def->sidetext = L("mm or %"); + def->ratio_over = "outer_wall_line_width"; + def->min = 0; + def->max = 100; + def->max_literal = 2; // Orca: G-code generation also clamps literal values to the actual outer-wall width. + def->mode = comExpert; + def->set_default_value(new ConfigOptionFloatOrPercent(50, true)); + def = this->add("wipe_before_external_loop", coBool); def->label = L("Wipe before external loop"); def->category = L("Quality"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 18e66adb34..6beaeed104 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1391,6 +1391,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionBool, role_based_wipe_speed)) ((ConfigOptionFloatOrPercent, wipe_speed)) ((ConfigOptionBool, wipe_on_loops)) + ((ConfigOptionBool, wipe_inward)) + ((ConfigOptionFloatOrPercent, wipe_inward_distance)) ((ConfigOptionBool, wipe_before_external_loop)) ((ConfigOptionEnum, wall_infill_order)) ((ConfigOptionBool, precise_outer_wall)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 54378b3b16..bb2a355daa 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1574,6 +1574,8 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "brim_flow_ratio" || opt_key == "filament_flow_ratio" || opt_key == "scarf_joint_flow_ratio" + || opt_key == "wipe_inward" + || opt_key == "wipe_inward_distance" || opt_key == "spiral_starting_flow_ratio" || opt_key == "spiral_finishing_flow_ratio") { invalidated |= m_print->invalidate_step(psGCodeExport); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 5bd74e107d..ba91ffb7c2 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -1104,6 +1104,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in auto is_role_based_wipe_speed = config->opt_bool("role_based_wipe_speed"); toggle_field("wipe_speed",!is_role_based_wipe_speed); + const bool have_wipe_inward = config->opt_bool("wipe_inward"); + toggle_line("wipe_inward_distance", have_wipe_inward); + for (auto el : {"accel_to_decel_enable", "accel_to_decel_factor"}) toggle_line(el, gcf_is_klipper); if(gcf_is_klipper) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0fdb9dcd94..06d953aa25 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -15755,6 +15755,7 @@ void Plater::calib_pa(const Calib_Params& params) auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; print_config->set_key_value("overhang_reverse", new ConfigOptionBool(false)); print_config->set_key_value("precise_z_height", new ConfigOptionBool(false)); + print_config->set_key_value("wipe_inward", new ConfigOptionBool(false)); printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); switch (params.mode) { case CalibMode::Calib_PA_Line: @@ -16440,6 +16441,7 @@ void Plater::calib_retraction(const Calib_Params& params) auto obj = model().objects[0]; print_config->set_key_value("enable_wrapping_detection", new ConfigOptionBool(false)); + print_config->set_key_value("wipe_inward", new ConfigOptionBool(false)); float nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); float layer_height; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 914e4cc7bb..c0f78ee9c5 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2669,6 +2669,8 @@ void TabPrint::build() optgroup->append_single_option_line("role_based_wipe_speed","quality_settings_seam#role-based-wipe-speed"); optgroup->append_single_option_line("wipe_speed", "quality_settings_seam#wipe-speed"); optgroup->append_single_option_line("wipe_on_loops","quality_settings_seam#wipe-on-loop-inward-movement"); + optgroup->append_single_option_line("wipe_inward", "quality_settings_seam#wipe-inward"); + optgroup->append_single_option_line("wipe_inward_distance", "quality_settings_seam#wipe-inward"); optgroup->append_single_option_line("wipe_before_external_loop","quality_settings_seam#wipe-before-external"); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 25aad85d2f..e432ccc152 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -1096,6 +1096,7 @@ bool CalibUtils::calib_generic_PA(const CalibInfo &calib_info, wxString &error_m calib_pa_pattern(calib_info, model); DynamicPrintConfig print_config = calib_info.print_prest->config; + print_config.set_key_value("wipe_inward", new ConfigOptionBool(false)); DynamicPrintConfig filament_config = calib_info.filament_prest->config; DynamicPrintConfig printer_config = calib_info.printer_prest->config; @@ -1357,6 +1358,7 @@ void CalibUtils::calib_retraction(const CalibInfo &calib_info, wxString &error_m read_model_from_file(input_file, model); DynamicPrintConfig print_config = calib_info.print_prest->config; + print_config.set_key_value("wipe_inward", new ConfigOptionBool(false)); DynamicPrintConfig filament_config = calib_info.filament_prest->config; DynamicPrintConfig printer_config = calib_info.printer_prest->config; diff --git a/tests/fff_print/CMakeLists.txt b/tests/fff_print/CMakeLists.txt index 3247bfda66..60e1721817 100644 --- a/tests/fff_print/CMakeLists.txt +++ b/tests/fff_print/CMakeLists.txt @@ -21,6 +21,7 @@ add_executable(${_TEST_NAME}_tests test_support_material.cpp test_tree_support.cpp test_trianglemesh.cpp + test_wipe.cpp test_wipe_tower.cpp ) target_link_libraries(${_TEST_NAME}_tests test_common libslic3r Catch2::Catch2WithMain) diff --git a/tests/fff_print/test_wipe.cpp b/tests/fff_print/test_wipe.cpp new file mode 100644 index 0000000000..46ee0d6441 --- /dev/null +++ b/tests/fff_print/test_wipe.cpp @@ -0,0 +1,653 @@ +#include + +#include +#include +#include +#include +#include +#include + +#include "libslic3r/GCode/GCodeProcessor.hpp" +#include "libslic3r/GCodeReader.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "libslic3r/Layer.hpp" + +#include "test_helpers.hpp" + +using namespace Slic3r; +using namespace Slic3r::Test; + +namespace { + +DynamicPrintConfig wipe_config(const char *wall_generator, bool wipe_inward, + const char *wipe_inward_distance = "50%", + const char *seam_gap = "10%", bool wipe_on_loops = false, + const char *wall_loops = "2", + const char *wall_sequence = "inner wall/outer wall", + bool alternate_extra_wall = false, + const char *sparse_infill_density = "0%", + const char *seam_position = "aligned") +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ + { "nozzle_diameter", "0.4" }, + { "layer_height", "0.2" }, + { "initial_layer_print_height", "0.2" }, + { "line_width", "0.45" }, + { "outer_wall_line_width", "0" }, // Orca: Auto must use the actual path width. + { "wall_loops", wall_loops }, + { "wall_generator", wall_generator }, + { "wall_sequence", wall_sequence }, + { "top_shell_layers", "0" }, + { "bottom_shell_layers", "0" }, + { "sparse_infill_density", sparse_infill_density }, + { "seam_position", seam_position }, + { "seam_gap", seam_gap }, + { "wipe", "1" }, + { "wipe_distance", "2" }, + { "retraction_length", "0.8" }, + { "retract_when_changing_layer", "1" }, + { "wipe_inward", wipe_inward ? "1" : "0" }, + { "wipe_inward_distance", wipe_inward_distance }, + { "wipe_on_loops", wipe_on_loops ? "1" : "0" }, + { "alternate_extra_wall", alternate_extra_wall ? "1" : "0" }, + { "gcode_comments", "1" }, + { "machine_start_gcode", "" }, + { "machine_end_gcode", "" }, + }); + return config; +} + +struct WipeTrajectory { + Vec2d start; + double z; + std::vector destinations; +}; + +std::vector wipe_trajectories(const std::string &gcode) +{ + const std::string &start_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start); + const std::string &end_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_End); + std::vector trajectories; + bool in_wipe = false; + + GCodeReader parser; + parser.parse_buffer(gcode, [&](GCodeReader &self, const GCodeReader::GCodeLine &line) { + const std::string_view comment = line.comment(); + if (comment.find(start_tag) != std::string_view::npos) { + in_wipe = true; + trajectories.push_back({Vec2d(self.x(), self.y()), self.z(), {}}); + return; + } + if (comment.find(end_tag) != std::string_view::npos) { + in_wipe = false; + return; + } + if (in_wipe && line.dist_XY(self) > EPSILON) + trajectories.back().destinations.emplace_back(line.new_X(self), line.new_Y(self)); + }); + return trajectories; +} + +std::vector wipe_destinations(const std::string &gcode) +{ + std::vector destinations; + for (const WipeTrajectory &trajectory : wipe_trajectories(gcode)) + destinations.insert(destinations.end(), trajectory.destinations.begin(), trajectory.destinations.end()); + return destinations; +} + +bool trajectories_differ(const std::vector &lhs, const std::vector &rhs) +{ + if (lhs.size() != rhs.size()) + return true; + for (size_t i = 0; i < lhs.size(); ++i) + if ((lhs[i] - rhs[i]).norm() > 0.01) + return true; + return false; +} + +double trajectory_length(const WipeTrajectory &trajectory) +{ + double length = 0.; + Vec2d previous = trajectory.start; + for (const Vec2d &destination : trajectory.destinations) { + length += (destination - previous).norm(); + previous = destination; + } + return length; +} + +} // namespace + +TEST_CASE("Wipe retraction preserves fractional speed with inward wipe disabled", "[Wipe][Regression]") +{ + const char *retraction_speed = GENERATE("25.25", "25.5", "25.75"); + const char *relative_e = GENERATE("0", "1"); + INFO("retraction speed: " << retraction_speed); + INFO("relative E: " << relative_e); + DynamicPrintConfig config = wipe_config("classic", false); + config.set_deserialize_strict({ + {"gcode_flavor", "marlin2"}, + {"use_relative_e_distances", relative_e}, + {"retraction_speed", retraction_speed}, + {"retraction_length", "0.8"}, + {"retract_before_wipe", "0%"}, + {"retract_after_wipe", "0%"}, + {"role_based_wipe_speed", "0"}, + {"wipe_speed", "100"}, + {"wipe_distance", "2"}, + }); + const std::string output = slice({make_cube(10., 10., 1.)}, config); + const auto &start_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start); + const auto &end_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_End); + double before_wipe = 0.; + double during_wipe = 0.; + bool in_wipe = false; + bool complete = false; + GCodeReader parser; + parser.apply_config(config); + parser.parse_buffer(output, [&](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (complete) + return; + if (line.comment().find(start_tag) != std::string_view::npos) { + in_wipe = true; + } else if (in_wipe && line.comment().find(end_tag) != std::string_view::npos) { + complete = true; + } else if (line.retracting(self)) { + (in_wipe ? during_wipe : before_wipe) -= line.dist_E(self); + } else if (line.extruding(self)) { + before_wipe = 0.; + } + }); + + REQUIRE(complete); + // At 100 mm/s, the 2 mm wipe lasts 0.02 seconds. The remaining part of + // the configured 0.8 mm retraction must be emitted before that wipe. + const double expected_during = std::stod(retraction_speed) * 2. / 100.; + CHECK_THAT(during_wipe, Catch::Matchers::WithinAbs(expected_during, 0.00005)); + CHECK_THAT(before_wipe, Catch::Matchers::WithinAbs(0.8 - expected_during, 0.00005)); +} + +TEST_CASE("Inward wipe respects the minimum travel for retraction and Z hop", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + const char *relative_e = GENERATE("0", "1"); + const char *reduce_crossing_wall = GENERATE("0", "1"); + const char *minimum_travel = GENERATE("5", "0"); + CAPTURE(wall_generator, relative_e, reduce_crossing_wall, minimum_travel); + DynamicPrintConfig config = wipe_config( + wall_generator, true, "50%", "10%", false, "3", "inner-outer-inner wall"); + config.set_deserialize_strict({ + {"gcode_flavor", "marlin2"}, + {"use_relative_e_distances", relative_e}, + {"reduce_crossing_wall", reduce_crossing_wall}, + {"retraction_minimum_travel", minimum_travel}, + {"retract_when_changing_layer", "0"}, + {"use_firmware_retraction", "0"}, + {"retract_before_wipe", "0%"}, + {"retract_after_wipe", "0%"}, + {"retraction_speed", "25.5"}, + {"role_based_wipe_speed", "0"}, + {"wipe_speed", "100"}, + {"z_hop", "0.4"}, + {"retract_lift_above", "0"}, + {"retract_lift_below", "0"}, + }); + config.set_key_value("z_hop_types", new ConfigOptionEnumsGeneric{zhtNormal}); + config.set_key_value("retract_lift_enforce", new ConfigOptionEnumsGeneric{rletAllSurfaces}); + const std::string output = slice({make_cube(10., 10., 1.)}, config); + const auto &role_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role); + const auto &start_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start); + const auto &end_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_End); + ExtrusionRole role = erNone; + bool after_outer_wall = false; + bool in_wipe = false; + size_t transitions = 0; + size_t same_layer_transitions = 0; + size_t inward_wipes = 0; + double retraction = 0.; + double lift = 0.; + double outer_z = 0.; + GCodeReader parser; + parser.apply_config(config); + parser.parse_buffer(output, [&](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (line.comment().find(role_tag) == 0) + role = ExtrusionEntity::string_to_role(line.comment().substr(role_tag.size())); + if (line.comment().find(start_tag) == 0) { + in_wipe = true; + if (after_outer_wall) + ++inward_wipes; + } else if (line.comment().find(end_tag) == 0) { + in_wipe = false; + } + if (line.extruding(self) && line.dist_XY(self) > EPSILON) { + if (role == erExternalPerimeter) { + after_outer_wall = true; + retraction = lift = 0.; + outer_z = line.new_Z(self); + } else if (after_outer_wall) { + REQUIRE(role == erPerimeter); + ++transitions; + const double layer_rise = std::max(0., double(self.z()) - outer_z); + if (layer_rise < EPSILON) + ++same_layer_transitions; + // A 5 mm threshold suppresses retraction across a few wall widths. + // A zero threshold still permits the ordinary retract and lift. + const bool retract = std::stod(minimum_travel) == 0.; + CHECK_THAT(retraction, Catch::Matchers::WithinAbs(retract ? 0.8 : 0., 0.00005)); + // Exclude an ordinary layer change from the accumulated upward motion. + CHECK_THAT(lift - layer_rise, Catch::Matchers::WithinAbs(retract ? 0.4 : 0., 0.001)); + after_outer_wall = false; + } + } else if (after_outer_wall) { + if (line.retracting(self)) + retraction -= line.dist_E(self); + lift += std::max(0., double(line.dist_Z(self))); + if (in_wipe) + CHECK_THAT(line.dist_E(self), Catch::Matchers::WithinAbs(0., 0.00005)); + } + }); + // The 1 mm cube has five 0.2 mm layers: every outer wall must still wipe. + REQUIRE(transitions == 5); + REQUIRE(same_layer_transitions >= 4); + REQUIRE(inward_wipes == transitions); +} + +TEST_CASE("Changing inward wipe settings preserves the sliced geometry", "[Wipe][Regression]") +{ + const char *key = GENERATE("wipe_inward", "wipe_inward_distance"); + DynamicPrintConfig config = wipe_config("classic", false); + Print print; + Model model; + init_print({make_cube(10., 10., 1.)}, print, model, config); + gcode(print); + const PrintObject &object = *print.objects().front(); + REQUIRE(object.is_step_done(posPerimeters)); + REQUIRE(object.is_step_done(posInfill)); + REQUIRE(print.is_step_done(psWipeTower)); + REQUIRE(print.is_step_done(psGCodeExport)); + + DynamicPrintConfig changed = config; + changed.set_deserialize_strict({{key, std::string(key) == "wipe_inward" ? "1" : "75%"}}); + print.apply(model, changed); + + CHECK(print.objects().front()->is_step_done(posPerimeters)); + CHECK(print.objects().front()->is_step_done(posInfill)); + CHECK(print.is_step_done(psWipeTower)); + CHECK_FALSE(print.is_step_done(psGCodeExport)); +} + +TEST_CASE("Retraction and pressure advance calibration suppress inward wipe overrides", "[Wipe][Regression]") +{ + const auto mode = GENERATE(CalibMode::Calib_None, CalibMode::Calib_PA_Tower, + CalibMode::Calib_Auto_PA_Line, CalibMode::Calib_Retraction_tower, + CalibMode::Calib_Flow_Rate); + const char *wall_generator = GENERATE("classic", "arachne"); + const bool per_object = GENERATE(false, true); + INFO("calibration mode: " << int(mode) << ", wall generator: " << wall_generator + << ", per-object override: " << per_object); + + const auto trajectories = [&](bool inward) { + DynamicPrintConfig config = wipe_config(wall_generator, inward && !per_object); + const std::vector> overrides{ + {{"wipe_inward", inward ? "1" : "0"}} + }; + Print print; + Model model; + init_print({make_cube(10., 10., 1.)}, print, model, config, per_object ? &overrides : nullptr); + Calib_Params params; + params.mode = mode; + params.start = 0.2; + params.end = 0.4; + params.step = 0.1; + print.set_calib_params(params); + return wipe_destinations(gcode(print)); + }; + + const auto regular = trajectories(false); + const auto inward = trajectories(true); + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(inward.empty()); + // Other calibration modes and ordinary prints must still honor the option. + const bool should_differ = mode == CalibMode::Calib_None || mode == CalibMode::Calib_Flow_Rate; + CHECK(trajectories_differ(regular, inward) == should_differ); +} + +TEST_CASE("Inactive inward wipe settings preserve the exported trajectory", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + const bool disable_wiping = GENERATE(false, true); + DynamicPrintConfig regular = wipe_config(wall_generator, false); + DynamicPrintConfig inward = wipe_config(wall_generator, true, disable_wiping ? "50%" : "0"); + if (disable_wiping) { + regular.set_deserialize_strict({{"wipe", "0"}}); + inward.set_deserialize_strict({{"wipe", "0"}}); + } + const auto regular_paths = wipe_destinations(slice({make_cube(10., 10., 1.)}, regular)); + const auto inward_paths = wipe_destinations(slice({make_cube(10., 10., 1.)}, inward)); + if (!disable_wiping) + REQUIRE_FALSE(regular_paths.empty()); + CHECK_FALSE(trajectories_differ(regular_paths, inward_paths)); +} + +TEST_CASE("Inward wipe changes the exported trajectory when outer wall width is Auto", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, false))); + const std::vector inward = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, true))); + + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(inward.empty()); + REQUIRE(trajectories_differ(regular, inward)); +} + +TEST_CASE("Inward wipe recognizes an external wall starting on an overhang", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + const bool inward = GENERATE(false, true); + CAPTURE(wall_generator, inward); + const auto config = wipe_config(wall_generator, inward, "50%", "0%", false, + "3", "inner-outer-inner wall", false, "0%", "back"); + Print print; + Model model; + init_print({make_cube(10., 10., 1.)}, print, model, config); + print.process(); + size_t mixed_loops = 0; + const auto mark_overhangs = [&](auto &&self, ExtrusionEntity *entity) -> void { + if (auto *collection = dynamic_cast(entity)) { + for (ExtrusionEntity *child : collection->entities) + self(self, child); + } else if (auto *loop = dynamic_cast(entity); loop && is_external_perimeter(loop->role())) { + // Keep the printed geometry intact and give the back seam overhang + // roles. The front edge remains an ordinary external-wall segment. + ExtrusionPaths paths; + bool has_overhang = false; + bool has_external = false; + for (const ExtrusionPath &source : loop->paths) { + for (size_t i = 1; i < source.polyline.points.size(); ++i) { + ExtrusionPath path = source; + path.polyline.points = {source.polyline.points[i - 1], source.polyline.points[i]}; + const bool overhang = path.polyline.points.front().y() > 0 || path.polyline.points.back().y() > 0; + path.set_extrusion_role(overhang ? erOverhangPerimeter : erExternalPerimeter); + has_overhang |= overhang; + has_external |= !overhang; + paths.push_back(std::move(path)); + } + } + REQUIRE(has_overhang); + REQUIRE(has_external); + loop->paths = std::move(paths); + ++mixed_loops; + } + }; + for (const PrintObject *object : print.objects()) + for (Layer *layer : object->layers()) + for (LayerRegion *region : layer->regions()) + mark_overhangs(mark_overhangs, ®ion->perimeters); + REQUIRE(mixed_loops > 0); + + bool has_inward_wipe = false; + for (const WipeTrajectory &trajectory : wipe_trajectories(gcode(print))) { + if (trajectory.destinations.empty()) + continue; + const Vec2d move = trajectory.destinations.front() - trajectory.start; + if (trajectory.start.x() > 4. && trajectory.start.y() > 4. && move.x() < -0.05 && move.y() < -0.05) + has_inward_wipe = true; + } + CHECK(has_inward_wipe == inward); +} + +TEST_CASE("Inward wipe keeps its offset when seam gap is zero", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, false, "50%", "0%"))); + const std::vector inward = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, true, "50%", "0%"))); + + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(inward.empty()); + REQUIRE(trajectories_differ(regular, inward)); +} + +TEST_CASE("Inward wipe is retained across layers with a back seam", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const DynamicPrintConfig inward_config = wipe_config( + wall_generator, true, "50%", "0%", false, "3", "inner-outer-inner wall", false, "0%", "back"); + const std::vector inward = wipe_trajectories(slice({make_cube(27., 27., 1.)}, inward_config)); + + REQUIRE_FALSE(inward.empty()); + std::map inward_wipe_by_layer; + for (const WipeTrajectory &trajectory : inward) { + bool &has_inward_wipe = inward_wipe_by_layer[trajectory.z]; + if (trajectory.destinations.empty()) + continue; + const Vec2d first_move = trajectory.destinations.front() - trajectory.start; + // Orca: a back seam lands on the cube's positive-X/positive-Y corner. + // Its inward wipe must move diagonally away from both external faces. + has_inward_wipe = has_inward_wipe || + (trajectory.start.x() > 13. && trajectory.start.y() > 13. && + first_move.x() < -0.05 && first_move.y() < -0.05); + } + REQUIRE(inward_wipe_by_layer.size() == 5); + for (const auto &[z, has_inward_wipe] : inward_wipe_by_layer) { + INFO("layer Z: " << z); + REQUIRE(has_inward_wipe); + } +} + +TEST_CASE("Literal inward wipe distance is clamped to the outer wall width", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, false))); + const std::vector full_width = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, true, "100%"))); + const std::vector oversized = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, true, "2"))); + + REQUIRE_FALSE(full_width.empty()); + REQUIRE(trajectories_differ(regular, full_width)); + REQUIRE(oversized.size() == full_width.size()); + for (size_t i = 0; i < full_width.size(); ++i) + REQUIRE_THAT((oversized[i] - full_width[i]).norm(), Catch::Matchers::WithinAbs(0., 0.01)); +} + +TEST_CASE("Inward wipe is not applied without an adjacent wall", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, false, "50%", "10%", false, "1"))); + const std::vector inward = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config(wall_generator, true, "50%", "10%", false, "1"))); + + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(trajectories_differ(regular, inward)); +} + +TEST_CASE("Inward wipe uses an alternate extra wall when the configured wall count is one", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const DynamicPrintConfig regular_config = wipe_config( + wall_generator, false, "50%", "10%", false, "1", "inner wall/outer wall", true, "15%"); + const DynamicPrintConfig inward_config = wipe_config( + wall_generator, true, "50%", "10%", false, "1", "inner wall/outer wall", true, "15%"); + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, regular_config)); + const std::vector inward = wipe_destinations( + slice({make_cube(10., 10., 1.)}, inward_config)); + + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(inward.empty()); + REQUIRE(trajectories_differ(regular, inward)); +} + +TEST_CASE("Inward wipe is not applied before the adjacent wall is printed", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + INFO("wall generator: " << wall_generator); + + const std::vector regular = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config( + wall_generator, false, "50%", "10%", false, "2", "outer wall/inner wall"))); + const std::vector inward = wipe_destinations( + slice({make_cube(10., 10., 1.)}, wipe_config( + wall_generator, true, "50%", "10%", false, "2", "outer wall/inner wall"))); + + REQUIRE_FALSE(regular.empty()); + REQUIRE_FALSE(trajectories_differ(regular, inward)); +} + +TEST_CASE("Wipe on loops preserves the corner move with inward wipe disabled", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + const char *nozzle_diameter = GENERATE("0.4", "0.8"); + const char *comments = GENERATE("0", "1"); + CAPTURE(comments); + INFO("wall generator: " << wall_generator << ", nozzle diameter: " << nozzle_diameter); + // A closed square gives a 90-degree material-side corner at the seam. + DynamicPrintConfig config = wipe_config(wall_generator, false, "50%", "0", true); + config.set_deserialize_strict({{"nozzle_diameter", nozzle_diameter}, {"seam_position", "nearest"}, + {"gcode_comments", comments}}); + const std::string output = slice({make_cube(10., 10., 1.)}, config); + const auto &role_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role); + const auto &wipe_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start); + ExtrusionRole role = erNone; + std::vector loop; + bool after_extrusion = false; + size_t moves = 0; + GCodeReader parser; + parser.apply_config(config); + parser.parse_buffer(output, [&](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (line.comment().find(role_tag) == 0) { + role = ExtrusionEntity::string_to_role(line.comment().substr(role_tag.size())); + loop.clear(); + after_extrusion = false; + } + if (line.comment().find(wipe_tag) == 0) + after_extrusion = false; + if (role != erExternalPerimeter) + return; + if (line.extruding(self) && line.dist_XY(self) > EPSILON) { + if (loop.empty()) + loop.emplace_back(self.x(), self.y()); + loop.emplace_back(line.new_X(self), line.new_Y(self)); + after_extrusion = true; + return; + } + // The loop move is the first non-extruding XY move after the external + // wall and before the reserved wipe marker, regardless of comment text. + if (!after_extrusion || line.dist_XY(self) <= EPSILON) + return; + after_extrusion = false; + + ++moves; + INFO("layer Z: " << self.z()); + REQUIRE(loop.size() >= 4); + const Vec2d seam = loop.front(); + REQUIRE_THAT((loop.back() - seam).norm(), Catch::Matchers::WithinAbs(0., 0.003)); + const Vec2d outgoing = (loop[1] - seam).normalized(); + const Vec2d into_corner = (loop[loop.size() - 2] - seam).normalized(); + REQUIRE_THAT(outgoing.dot(into_corner), Catch::Matchers::WithinAbs(0., 0.01)); + const Vec2d move = Vec2d(line.new_X(self), line.new_Y(self)) - seam; + // The legacy corner move is 20% of the nozzle diameter, turned 30 degrees + // from the outgoing edge into the square. Check both components independently. + const double distance = 0.2 * std::stod(nozzle_diameter); + CHECK_THAT(move.dot(outgoing), Catch::Matchers::WithinAbs(distance * std::sqrt(3.) / 2., 0.003)); + CHECK_THAT(move.dot(into_corner), Catch::Matchers::WithinAbs(distance / 2., 0.003)); + }); + REQUIRE(moves == 5); +} + +TEST_CASE("Inward wipe remains valid after wipe on loops moves the nozzle", "[Wipe][Regression]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + const char *comments = GENERATE("0", "1"); + CAPTURE(comments); + INFO("wall generator: " << wall_generator); + + DynamicPrintConfig config = wipe_config(wall_generator, false, "50%", "10%", true); + config.set_deserialize_strict({{"gcode_comments", comments}}); + const std::string loop_move = slice({make_cube(10., 10., 1.)}, config); + config.set_deserialize_strict({{"wipe_inward", "1"}}); + const std::string combined = slice({make_cube(10., 10., 1.)}, config); + config.set_deserialize_strict({{"wipe_on_loops", "0"}}); + const std::string inward_only = slice({make_cube(10., 10., 1.)}, config); + + for (const std::string *output : {&loop_move, &combined}) { + INFO("wipe_inward: " << (output == &combined)); + std::map> loop_moves_by_layer; + const auto &role_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role); + const auto &wipe_tag = GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Wipe_Start); + ExtrusionRole role = erNone; + bool after_extrusion = false; + GCodeReader parser; + parser.apply_config(config); + parser.parse_buffer(*output, [&](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (line.comment().find(role_tag) == 0) { + role = ExtrusionEntity::string_to_role(line.comment().substr(role_tag.size())); + after_extrusion = false; + } + if (line.comment().find(wipe_tag) == 0) + after_extrusion = false; + if (role != erExternalPerimeter || line.dist_XY(self) <= EPSILON) + return; + if (line.extruding(self)) { + after_extrusion = true; + } else if (after_extrusion) { + loop_moves_by_layer[line.new_Z(self)].emplace_back(line.new_X(self), line.new_Y(self)); + after_extrusion = false; + } + }); + + // The 1 mm cube at 0.2 mm layer height has one external loop on each of five layers. + const auto trajectories = wipe_trajectories(*output); + REQUIRE(loop_moves_by_layer.size() == 5); + for (size_t layer = 1; layer <= 5; ++layer) { + const double z = layer * 0.2; + const auto moves = std::find_if(loop_moves_by_layer.begin(), loop_moves_by_layer.end(), + [z](const auto &entry) { return std::abs(entry.first - z) < 0.001; }); + REQUIRE(moves != loop_moves_by_layer.end()); + REQUIRE(moves->second.size() == 1); + const auto wipe = std::find_if(trajectories.begin(), trajectories.end(), [&](const WipeTrajectory &trajectory) { + return std::abs(trajectory.z - z) < 0.001 && + (trajectory.start - moves->second.front()).norm() < 0.001; + }); + REQUIRE(wipe != trajectories.end()); + // The configured 2 mm wipe must be measured from the inward move's + // endpoint, including when wipe_inward is off (set_last_pos regression). + CHECK_THAT(trajectory_length(*wipe), Catch::Matchers::WithinAbs(2., 0.003)); + } + } + + const std::vector combined_trajectories = wipe_trajectories(combined); + const std::vector inward_trajectories = wipe_trajectories(inward_only); + REQUIRE_FALSE(combined_trajectories.empty()); + REQUIRE(combined_trajectories.size() == inward_trajectories.size()); + REQUIRE(trajectories_differ(wipe_destinations(combined), wipe_destinations(loop_move))); + + bool start_changed = false; + for (size_t i = 0; i < combined_trajectories.size(); ++i) { + start_changed = start_changed || + (combined_trajectories[i].start - inward_trajectories[i].start).norm() > 0.01; + REQUIRE_THAT(trajectory_length(combined_trajectories[i]), + Catch::Matchers::WithinAbs(trajectory_length(inward_trajectories[i]), 0.01)); + } + REQUIRE(start_changed); +} diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 2f859f46fe..bc5a0a1e80 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -43,6 +43,7 @@ add_executable(${_TEST_NAME}_tests test_voronoi.cpp test_wipe_tower_estimate.cpp test_wipe_tower.cpp + test_wipe_path.cpp test_optimizers.cpp test_ordering_strategies.cpp # test_png_io.cpp diff --git a/tests/libslic3r/test_wipe_path.cpp b/tests/libslic3r/test_wipe_path.cpp new file mode 100644 index 0000000000..b637ad2b87 --- /dev/null +++ b/tests/libslic3r/test_wipe_path.cpp @@ -0,0 +1,1024 @@ +#include + +#include "libslic3r/GCode/WipePathHelpers.hpp" +#include "libslic3r/AABBTreeLines.hpp" +#include "libslic3r/Polyline.hpp" +#include "libslic3r/Point.hpp" +#include "libslic3r/Line.hpp" +#include "libslic3r/libslic3r.h" + +#include +#include +#include + +using namespace Slic3r; +using Slic3r::AABBTreeLines::LinesDistancer; + +TEST_CASE("Stored wipe path retains its length around a curved wall after a seam gap", "[WipePath][Regression]") +{ + const int mirror = GENERATE(1, -1); + const double wipe_length = GENERATE(0.8, 1.0); + CAPTURE(mirror, wipe_length); + // A 0.02 mm seam gap on a curved 0.24 mm wall leaves a short outgoing + // segment whose inward offset backtracks. Coordinates use internal scaling + // from the affected loop; the adjacent inner wall is already printed. + const auto point = [mirror](coord_t x, coord_t y) { return Point(mirror * x, y); }; + const Polyline original{ + point(671861, 7772276), point(688586, 7765098), point(781082, 7687014), + point(852059, 7608861), point(889773, 7556912), point(958919, 7382963), + point(977048, 7259018), point(977325, 7173839), point(944250, 7039370), + point(911230, 6952087), point(880323, 6894944), point(760243, 6763860), + point(598587, 6641719), point(492626, 6593610), point(362533, 6543938), + point(170173, 6513482), point(114917, 6509380), point(18418, 6513666), + point(-145550, 6537251), point(-259087, 6580797), point(-413987, 6690495), + point(-485220, 6767022), point(-561189, 6893573), point(-576897, 6965717), + point(-595201, 7089303), point(-597977, 7164172), point(-590614, 7239553), + point(-574031, 7305533), point(-539668, 7383293), point(-442552, 7550465), + point(-332173, 7659644), point(-257819, 7717153), point(-209522, 7749563), + point(-121695, 7793438), point(399, 7844160), point(228137, 7880068), + point(363721, 7881585), point(431909, 7865985), point(569648, 7816149), + point(653482, 7780164), + }; + const Polyline inner{ + point(739251, 7241332), point(739377, 7202281), point(716708, 7110113), + point(694416, 7051190), point(685088, 7033943), point(599527, 6940541), + point(476243, 6847393), point(400952, 6813209), point(300851, 6774988), + point(142724, 6749952), point(111379, 6747625), point(40681, 6750765), + point(-85281, 6768883), point(-146010, 6792175), point(-256555, 6870462), + point(-295251, 6912034), point(-336173, 6978125), point(-357996, 7111200), + point(-359693, 7156985), point(-355612, 7198777), point(-348288, 7227916), + point(-327412, 7275156), point(-252784, 7403618), point(-175201, 7480358), + point(-89616, 7543582), point(-22802, 7576960), point(65459, 7613627), + point(248096, 7642423), point(338175, 7643431), point(364673, 7637369), + point(482204, 7594844), point(562221, 7560499), point(615604, 7515433), + point(679764, 7441323), point(727601, 7320981), point(739251, 7241332), + }; + const Point seam_start = original.first_point(); + const Point seam_end = original.last_point(); + const double offset = scale_(0.239999); + Polyline forward = original; + REQUIRE_FALSE(offset_wipe_path(forward, seam_start, seam_end, seam_end, + -mirror, offset, scale_(wipe_length))); + + Polyline path = original; + REQUIRE(offset_wipe_path_toward_support(path, seam_start, seam_end, seam_end, + -mirror, offset, scale_(wipe_length), inner.lines(), inner.lines(), original.lines(), offset)); + REQUIRE(path.first_point() == seam_start); + REQUIRE(path.points.size() > 2); + // Wipe::wipe replaces the sentinel with the actual extrusion endpoint. + path.points.front() = seam_end; + CHECK_THAT(unscale_(path.length()), Catch::Matchers::WithinAbs(wipe_length, 0.0004)); + CHECK(mirror * (path.points[1].x() - seam_end.x()) < 0); + CHECK(path.points[1].y() < seam_end.y()); + Lines support = inner.lines(); + const Lines current = original.lines(); + support.insert(support.end(), current.begin(), current.end()); + REQUIRE(wipe_path_support_score(path, seam_end, LinesDistancer(inner.lines()), + LinesDistancer(support), offset).has_value()); +} + +TEST_CASE("Stored wipe path retains its length after a loop pre-move at a curved seam", "[WipePath][Regression]") +{ + const int mirror = GENERATE(1, -1); + const bool pre_move = GENERATE(false, true); + CAPTURE(mirror, pre_move); + const auto point = [mirror](coord_t x, coord_t y) { return Point(mirror * x, y); }; + // A 0.02 mm seam gap on a curved 0.24 mm wall, with the adjacent inner + // wall already printed. The loop pre-move advances the nozzle near the seam. + const Polyline original{ + point(686772, 7813199), point(516334, 7887188), point(411017, 7915098), + point(346190, 7926015), point(246957, 7925330), point(-16945, 7881611), + point(-116443, 7842513), point(-255907, 7773886), point(-378126, 7681053), + point(-499258, 7552879), point(-574414, 7438250), point(-613558, 7370259), + point(-626313, 7341394), point(-650774, 7263424), point(-669964, 7169919), + point(-666798, 7058662), point(-631336, 6876547), point(-624410, 6852946), + point(-577832, 6762704), point(-517493, 6693143), point(-455794, 6631765), + point(-315549, 6531304), point(-169627, 6468424), point(-1908, 6443726), + point(143562, 6438395), point(314277, 6465470), point(380448, 6480795), + point(519922, 6526617), point(673990, 6611110), point(801581, 6705610), + point(927505, 6840928), point(969616, 6912718), point(1004269, 7009155), + point(1044144, 7171737), point(1046617, 7228598), point(1028598, 7358360), + point(950280, 7560914), point(867133, 7675444), point(732946, 7788889), + point(706168, 7804780), point(705118, 7805235), + }; + const Polyline inner{ + point(808905, 7211140), point(796801, 7298317), point(739603, 7446245), + point(691575, 7512401), point(595745, 7593416), point(438069, 7661865), + point(360694, 7682370), point(327119, 7688024), point(266586, 7687607), + point(53302, 7653657), point(-20276, 7624745), point(-130307, 7570601), + point(-218687, 7503470), point(-311907, 7404832), point(-371722, 7313599), + point(-401113, 7262547), point(-420207, 7203763), point(-431422, 7149118), + point(-429596, 7084952), point(-401187, 6939055), point(-379519, 6897073), + point(-343546, 6855603), point(-301665, 6813940), point(-197879, 6739595), + point(-104131, 6699197), point(19838, 6680942), point(129154, 6676936), + point(268758, 6699077), point(316366, 6710103), point(424812, 6745731), + point(545430, 6811879), point(642396, 6883697), point(735572, 6983824), + point(753259, 7013976), point(776223, 7077887), point(808905, 7211140), + }; + const Point seam_start = original.first_point(); + const Point seam_end = original.last_point(); + const Point wipe_start = pre_move ? point(652751, 7792162) : seam_end; + const double offset = scale_(0.239999); + Polyline path = original; + REQUIRE(offset_wipe_path_toward_support(path, seam_start, seam_end, wipe_start, + mirror, offset, scale_(0.8), inner.lines(), inner.lines(), original.lines(), offset)); + REQUIRE(path.first_point() == seam_start); + path.points.front() = wipe_start; + CHECK_THAT(unscale_(path.length()), Catch::Matchers::WithinAbs(0.8, 0.0004)); + Lines support = inner.lines(); + const Lines current = original.lines(); + support.insert(support.end(), current.begin(), current.end()); + REQUIRE(wipe_path_support_score(path, wipe_start, LinesDistancer(inner.lines()), + LinesDistancer(support), offset).has_value()); +} + +// Orca: helpers for constructing the extrusion geometry used by wipe tests. + +static ExtrusionPath make_path(const std::vector &pts, ExtrusionRole role = erExternalPerimeter, + float width = 0.4f, float height = 0.2f) +{ + ExtrusionPath p(role, 0.5, width, height); + for (const Point &pt : pts) + p.polyline.append(Point3(pt.x(), pt.y(), coord_t(0))); + return p; +} + +static ExtrusionPaths make_paths(const std::vector &pts, ExtrusionRole role = erExternalPerimeter, + float width = 0.4f) +{ + ExtrusionPaths paths; + paths.push_back(make_path(pts, role, width)); + return paths; +} + +TEST_CASE("Inward wipe support recognizes an inner wall starting on an overhang", "[WipePath][Regression]") +{ + const bool overhang_first = GENERATE(false, true); + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + ExtrusionPaths paths{ + make_path({point(0.4, 0.4), point(0.4, 2.)}, erOverhangPerimeter), + make_path({point(0.4, 2.), point(0.4, 9.6), point(5.6, 9.6), point(5.6, 0.4), point(0.4, 0.4)}, erPerimeter) + }; + if (!overhang_first) + std::rotate(paths.begin(), paths.begin() + 1, paths.end()); + const ExtrusionLoop inner(paths); + REQUIRE(inner.role() == (overhang_first ? erOverhangPerimeter : erPerimeter)); + + WipeInwardSupport support; + support.append(inner); + REQUIRE(support.inner_lines.size() == inner.as_polyline().lines().size()); + // The overhanging portion itself is already printed and can support the wipe. + const LinesDistancer inner_distancer(support.inner_lines); + CHECK_THAT(inner_distancer.distance_from_lines(point(0.4, 1.)), + Catch::Matchers::WithinAbs(0., SCALED_EPSILON)); + const Polyline original{point(0., 0.), point(0., 10.), point(6., 10.), point(6., 0.), point(0., 0.)}; + Polyline wipe = original; + REQUIRE(offset_wipe_path_toward_support(wipe, original.first_point(), original.first_point(), + original.first_point(), -1, scale_(0.2), scale_(2.), support.inner_lines, + support.printed_lines, original.lines(), scale_(0.6))); + CHECK(wipe.points[1].x() > original.first_point().x()); +} + +TEST_CASE("Inward wipe support accumulates earlier walls without treating outer walls as targets", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + WipeInwardSupport support; + const ExtrusionPath inner = make_path({point(0.4, 0.), point(0.4, 5.)}, erPerimeter); + support.append(inner); + const ExtrusionLoop outer(ExtrusionPaths{ + make_path({point(0., 0.), point(0., 5.)}, erOverhangPerimeter), + make_path({point(0., 5.), point(-5., 5.), point(-5., 0.), point(0., 0.)}) + }); + support.append(outer); + REQUIRE(support.inner_lines.size() == 1); + REQUIRE(support.printed_lines.size() == 5); + const LinesDistancer targets(support.inner_lines); + CHECK_THAT(targets.distance_from_lines(point(0., 2.)), + Catch::Matchers::WithinAbs(scale_(0.4), SCALED_EPSILON)); +} + +static ExtrusionPaths make_loop_paths(const std::vector &contour_pts, float width = 0.4f) +{ + ExtrusionPaths paths; + size_t mid = contour_pts.size() / 2; + ExtrusionPath first(erExternalPerimeter, 0.5, width, 0.2f); + for (size_t i = 0; i <= mid; ++i) + first.polyline.append(Point3(contour_pts[i].x(), contour_pts[i].y(), coord_t(0))); + ExtrusionPath second(erExternalPerimeter, 0.5, width, 0.2f); + for (size_t i = mid; i < contour_pts.size(); ++i) + second.polyline.append(Point3(contour_pts[i].x(), contour_pts[i].y(), coord_t(0))); + second.polyline.append(Point3(contour_pts[0].x(), contour_pts[0].y(), coord_t(0))); + paths.push_back(std::move(first)); + paths.push_back(std::move(second)); + return paths; +} + +// Orca: sample_path_at_distance coverage. + +TEST_CASE("sample_path_at_distance forward returns start for zero target", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s)}); + REQUIRE(sample_path_at_distance(paths, true, 0.0) == Point(0, 0)); +} + +TEST_CASE("sample_path_at_distance forward samples along path", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s)}); + + Point result = sample_path_at_distance(paths, true, 50 * s); + REQUIRE_THAT(result.x(), Catch::Matchers::WithinAbs(50 * s, 2)); + REQUIRE_THAT(result.y(), Catch::Matchers::WithinAbs(0, 2)); +} + +TEST_CASE("sample_path_at_distance forward crosses segment boundary", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s)}); + + Point result = sample_path_at_distance(paths, true, 150 * s); + REQUIRE_THAT(result.x(), Catch::Matchers::WithinAbs(100 * s, 2)); + REQUIRE_THAT(result.y(), Catch::Matchers::WithinAbs(50 * s, 2)); +} + +TEST_CASE("sample_path_at_distance backward from end", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s)}); + + Point result = sample_path_at_distance(paths, false, 50 * s); + REQUIRE_THAT(result.x(), Catch::Matchers::WithinAbs(100 * s, 2)); + REQUIRE_THAT(result.y(), Catch::Matchers::WithinAbs(50 * s, 2)); +} + +TEST_CASE("sample_path_at_distance on short path returns reachable point", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(0, 0), Point(10 * s, 0)}); + + Point result = sample_path_at_distance(paths, true, 1000 * s); + REQUIRE(result == Point(10 * s, 0)); +} + +TEST_CASE("sample_path_at_distance on zero-length path returns start", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(50 * s, 50 * s)}); + + REQUIRE(sample_path_at_distance(paths, true, 100 * s) == Point(50 * s, 50 * s)); + REQUIRE(sample_path_at_distance(paths, false, 100 * s) == Point(50 * s, 50 * s)); +} + +TEST_CASE("Wipe offset direction follows the material side", "[WipePath]") +{ + REQUIRE(wipe_offset_direction(true, false) == +1); + REQUIRE(wipe_offset_direction(false, false) == -1); + REQUIRE(wipe_offset_direction(true, true) == -1); + REQUIRE(wipe_offset_direction(false, true) == +1); +} + +TEST_CASE("Stored wipe path leaves source crossings to support validation", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(10 * s, 0), Point(100 * s, 0), Point(coord_t(13.4 * s), coord_t(50 * s))}; + + // Orca: crossing the just-printed wall is harmless for a non-extruding wipe. + // The caller decides whether the result is supported by printed geometry. + REQUIRE(offset_wipe_path(path, Point(10 * s, 0), Point(0, 0), Point(0, 0), +1, 5 * s, 1000 * s)); +} + +TEST_CASE("Stored wipe path builds the join after a nonzero seam gap", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(10 * s, 0), Point(10 * s, 0), Point(10 * s, 100 * s)}; + + REQUIRE(offset_wipe_path(path, Point(10 * s, 0), Point(0, 0), Point(0, 0), +1, 5 * s, 1000 * s)); + REQUIRE(path.points.size() == 3); + REQUIRE(path.points[1] == Point(5 * s, 5 * s)); + REQUIRE(path.points[2] == Point(5 * s, 100 * s)); + REQUIRE(path.fitting_result.size() == 1); + REQUIRE(path.fitting_result.front().end_point_index == path.points.size() - 1); +} + +TEST_CASE("Stored wipe path rejects an offset seam join that turns backward", "[WipePath][Regression]") +{ + const coord_t s = scale_(1.0); + const Point seam_start(s, s); + const Point seam_end(0, 0); + Polyline path{seam_start, Point(s, -10 * s), Point(s, -20 * s)}; + const Polyline original = path; + + REQUIRE_FALSE(offset_wipe_path(path, seam_start, seam_end, seam_end, +1, s, 5 * s)); + REQUIRE(path.points == original.points); +} + +TEST_CASE("Stored wipe path continues after an inward pre-move", "[WipePath][Regression]") +{ + const coord_t s = scale_(1.0); + const Point seam_start(s, s); + const Point seam_end(0, 0); + const Point wipe_start(2 * s, 2 * s); + Polyline path{seam_start, Point(s, -10 * s), Point(s, -20 * s)}; + + REQUIRE(offset_wipe_path(path, seam_start, seam_end, wipe_start, +1, s, 5 * s)); + REQUIRE(path.points.size() >= 3); + path.points.front() = wipe_start; // Orca: reproduce Wipe::wipe()'s executable representation. + CHECK_THAT(path.length(), Catch::Matchers::WithinAbs(5. * s, 2.)); +} + +TEST_CASE("Stored wipe path does not retrace a translated seam gap", "[WipePath][Regression]") +{ + const coord_t s = scale_(1.0); + const Point seam_start(s, 0); + const Point seam_end(0, 0); + Polyline path{seam_start, seam_end, Point(-10 * s, 0)}; + const Polyline original = path; + const Lines support{Line(Point(-10 * s, s), Point(10 * s, s))}; + + // Orca: the exact reversal at seam_start forces the translated fallback. + // The seam gap supplies its incoming direction but must not become an + // inward-outward-inward detour in the executable path. + REQUIRE(offset_wipe_path_toward_support( + path, seam_start, seam_end, seam_end, +1, s, 5 * s, + support, support, original.lines(), s)); + REQUIRE(path.points.size() == 2); + CHECK(path.points[1].y() > seam_end.y()); +} + +TEST_CASE("Stored wipe path keeps its first offset point when seam gap is zero", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s), + Point(0, 100 * s), Point(0, 0)}; + + REQUIRE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), +1, 5 * s, 20 * s)); + REQUIRE(path.points.size() >= 3); + REQUIRE(path.points[0] == Point(0, 0)); + REQUIRE_THAT(path.points[1].x(), Catch::Matchers::WithinAbs(5 * s, 2)); + REQUIRE_THAT(path.points[1].y(), Catch::Matchers::WithinAbs(5 * s, 2)); +} + +TEST_CASE("Stored wipe path ignores unsafe geometry beyond the used prefix", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(1000 * s, 0), Point(1000 * s, 20 * s), + Point(900 * s, 20 * s), Point(0, 20 * s), Point(0, 0)}; + + REQUIRE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), +1, 30 * s, 10 * s)); + REQUIRE(path.points.size() == 2); + REQUIRE_THAT(path.length(), Catch::Matchers::WithinAbs(10 * s, 2)); +} + +TEST_CASE("Stored wipe path grows its source until the offset reaches the requested length", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s), Point(0, 100 * s)}; + const double wipe_length = 250 * s; + + // Orca: two inward corners shorten this offset by more than 2 * offset_dist. + REQUIRE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), + +1, 10 * s, wipe_length)); + REQUIRE_THAT(path.length(), Catch::Matchers::WithinAbs(wipe_length, 2)); +} + +TEST_CASE("Stored wipe path is unchanged when wipe distance is zero", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(100 * s, 0)}; + const Polyline orig = path; + + REQUIRE_FALSE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), +1, 5 * s, 0)); + REQUIRE(path.points == orig.points); +} + +TEST_CASE("Stored wipe path defers actual-start crossings to support validation", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(100 * s, 0), Point(100 * s, 100 * s), + Point(0, 100 * s), Point(0, 0)}; + const Lines current = path.lines(); + const Lines remote{Line(Point(0, 50 * s), Point(100 * s, 50 * s))}; + const Point wipe_start(50 * s, -10 * s); + + REQUIRE(offset_wipe_path(path, Point(0, 0), Point(0, 0), wipe_start, +1, 5 * s, 100 * s)); + Lines all_support = remote; + all_support.insert(all_support.end(), current.begin(), current.end()); + REQUIRE_FALSE(wipe_path_support_score(path, wipe_start, + LinesDistancer(remote), LinesDistancer(all_support), 5 * s).has_value()); +} + +TEST_CASE("Stored wipe path keeps the closing join when its prefix ends at the closing vertex", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(0, 100 * s), Point(100 * s, 100 * s), + Point(100 * s, 0), Point(0, 0)}; + + REQUIRE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), + +1, 5 * s, 300 * s)); + REQUIRE(path.points.size() >= 2); + REQUIRE(path.points[1] == Point(-5 * s, -5 * s)); +} + +TEST_CASE("Stored wipe path rejects a two-point zero-gap loop", "[WipePath]") +{ + const coord_t s = scale_(1.0); + Polyline path{Point(0, 0), Point(100 * s, 0), Point(0, 0)}; + const Polyline original = path; + + REQUIRE_FALSE(offset_wipe_path(path, Point(0, 0), Point(0, 0), Point(0, 0), + +1, 5 * s, 100 * s)); + REQUIRE(path.points == original.points); +} + +TEST_CASE("Stored wipe path tolerates quantized contact at its actual start", "[WipePath]") +{ + const coord_t s = scale_(1.0); + const coord_t quantization = coord_t(SCALED_EPSILON / 2); + Polyline path{Point(0, quantization), Point(100 * s, quantization), + Point(100 * s, 100 * s + quantization), Point(0, 100 * s + quantization), + Point(0, quantization)}; + + // Orca: the executable transition starts within the geometry epsilon of the + // source endpoint. Treat this as the allowed start contact, while contacts + // farther along the transition remain unsafe. + REQUIRE(offset_wipe_path(path, Point(0, quantization), Point(0, quantization), + Point(0, 0), +1, 5 * s, 20 * s)); +} + +TEST_CASE("Stored wipe path requires nearby generated perimeter geometry", "[WipePath]") +{ + const coord_t s = scale_(1.0); + const Polyline path{Point(0, 0), Point(0, 2 * s), Point(10 * s, 2 * s)}; + const Lines adjacent{Line(Point(0, 4 * s), Point(10 * s, 4 * s))}; + const Lines remote{Line(Point(0, 20 * s), Point(10 * s, 20 * s))}; + const Lines current = path.lines(); + + const LinesDistancer adjacent_distancer(adjacent); + const LinesDistancer remote_distancer(remote); + Lines all_support = remote; + all_support.insert(all_support.end(), current.begin(), current.end()); + const LinesDistancer all_support_distancer(all_support); + + const auto score = wipe_path_support_score(path, Point(0, 2 * s), adjacent_distancer, adjacent_distancer, 3 * s); + REQUIRE(score.has_value()); + CHECK_THAT(*score, Catch::Matchers::WithinAbs(2. * s, 2.)); + REQUIRE_FALSE(wipe_path_support_score(path, Point(0, 2 * s), adjacent_distancer, adjacent_distancer, 0).has_value()); + REQUIRE_FALSE(wipe_path_support_score(path, Point(0, 2 * s), remote_distancer, remote_distancer, 3 * s).has_value()); + REQUIRE_FALSE(wipe_path_support_score(path, Point(0, 2 * s), remote_distancer, all_support_distancer, 3 * s).has_value()); + REQUIRE_FALSE(wipe_path_support_score(path, Point(0, 2 * s), LinesDistancer(Lines{}), + all_support_distancer, 3 * s).has_value()); +} + +TEST_CASE("Stored wipe path checks the first segment from its actual start", "[WipePath]") +{ + const coord_t s = scale_(1.0); + const Polyline path{Point(0, 0), Point(10 * s, 0)}; + const Lines support_near_ends{ + Line(Point(0, -s), Point(0, s)), + Line(Point(10 * s, -s), Point(10 * s, s)) + }; + + // Orca: both endpoints are supported, but the middle of the executable segment + // from wipe_start is not. The dummy path[0] must not hide that segment. + const LinesDistancer support_distancer(support_near_ends); + REQUIRE_FALSE(wipe_path_support_score(path, Point(0, 0), support_distancer, support_distancer, 2 * s).has_value()); +} + +TEST_CASE("Stored wipe path rejects unsupported gaps between nearby samples", "[WipePath][Regression]") +{ + const Point start = Point::new_scale(0., 0.); + const Point end = Point::new_scale(0.8, 0.); + const Polyline path{start, end}; + const double support_y = GENERATE(0.8, 0.95); + const Lines support{ + Line(Point::new_scale(0., support_y), Point::new_scale(0., 2.)), + Line(Point::new_scale(0.8, support_y), Point::new_scale(0.8, 2.)) + }; + + // Both endpoints are within 1 mm of support and the move is shorter than + // the old sampling interval. Only the 0.8 mm case supports its midpoint. + const LinesDistancer support_distancer(support); + const bool supported = wipe_path_support_score(path, start, support_distancer, support_distancer, scale_(1.)).has_value(); + CHECK(supported == (support_y < 0.9)); +} + +TEST_CASE("Stored wipe path checks support at the actual nozzle position", "[WipePath][Regression]") +{ + const Point end = Point::new_scale(0., 0.); + const Polyline path{end, end}; + const Lines support{Line(Point::new_scale(-1., 0.), Point::new_scale(1., 0.))}; + + const LinesDistancer support_distancer(support); + REQUIRE_FALSE(wipe_path_support_score(path, Point::new_scale(0., -2.), + support_distancer, support_distancer, scale_(1.)).has_value()); +} + +TEST_CASE("Direct inward fallback respects a short wipe distance before validation", "[WipePath][Regression]") +{ + const Point seam = Point::new_scale(0., 0.); + Polyline path{seam, Point::new_scale(10., 0.), Point::new_scale(10., 10.), + Point::new_scale(0., 10.), seam}; + const Lines current = path.lines(); + const Lines support{Line(Point::new_scale(0.4, 0.4), Point::new_scale(9.6, 0.4))}; + const bool pre_move = GENERATE(false, true); + const Point wipe_start = pre_move ? Point::new_scale(0.02, 0.02) : seam; + const double wipe_length = scale_(0.05); + + REQUIRE(offset_wipe_path_toward_support( + path, seam, seam, wipe_start, +1, scale_(0.2), wipe_length, + support, support, current, scale_(0.4))); + REQUIRE(path.points.size() == 2); + path.points.front() = wipe_start; + CHECK_THAT(path.length(), Catch::Matchers::WithinAbs(wipe_length, 2.)); + CHECK(path.last_point().x() > wipe_start.x()); + CHECK(path.last_point().y() > wipe_start.y()); +} + +TEST_CASE("Stored wipe path uses a stable zero-gap join for nearly parallel segments", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(58.777, 61.985); + Polyline path{ + seam, point(58.822, 61.918), point(58.900, 61.789), point(58.980, 61.641), + point(59.054, 61.480), point(59.260, 60.980), point(58.412, 62.485), + point(58.631, 62.202), seam, + }; + + REQUIRE(offset_wipe_path(path, seam, seam, seam, -1, scale_(0.23), scale_(0.8))); + REQUIRE(path.points.size() >= 3); + + const Vec2d first = (path.points[1] - seam).cast(); + const Vec2d second = (path.points[2] - path.points[1]).cast(); + CHECK(first.dot(second) >= 0.); +} + +TEST_CASE("Stored wipe path follows the inner wall at a narrow external cusp", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(55.139, 60.077); + Polyline path{ + seam, point(55.156, 60.010), point(55.205, 59.961), point(55.237, 59.934), + point(55.304, 59.907), point(55.392, 59.872), point(55.630, 59.791), + point(56.564, 59.430), point(55.061, 59.956), point(55.108, 60.008), seam, + }; + const Polyline original = path; + const Lines target_support{ + Line(point(54.983, 59.648), point(55.121, 59.745)), + }; + Lines printed_support = target_support; + printed_support.emplace_back(point(54.75, 60.25), point(55.50, 60.10)); + + REQUIRE(offset_wipe_path_toward_support( + path, seam, seam, seam, -1, scale_(0.270341), scale_(0.8), + target_support, printed_support, original.lines(), scale_(0.4))); + REQUIRE(path.points.size() >= 2); + CHECK(path.points[1].y() < seam.y() - scale_(0.2)); + CHECK(std::abs(path.points[1].x() - seam.x()) < scale_(0.1)); +} + +TEST_CASE("Stored wipe path keeps a supported zero-gap join that initially backtracks", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(56.737, 62.049); + Polyline path{ + seam, point(56.759, 62.142), point(56.727, 62.294), point(56.682, 62.447), + point(56.631, 62.570), point(56.581, 62.669), point(56.512, 62.776), + point(54.0, 64.0), point(50.0, 60.0), point(54.0, 58.0), + point(56.773, 62.031), seam, + }; + const Polyline original = path; + const Lines target_support{ + Line(point(56.546, 62.012), point(56.534, 62.104)), + Line(point(56.534, 62.104), point(56.506, 62.238)), + Line(point(56.506, 62.238), point(56.467, 62.371)), + Line(point(56.467, 62.371), point(56.424, 62.474)), + Line(point(56.424, 62.474), point(56.382, 62.556)), + }; + + Polyline inward = path; + REQUIRE(offset_wipe_path(inward, seam, seam, seam, +1, scale_(0.23), scale_(0.8))); + REQUIRE(inward.points.size() >= 3); + const Vec2d connector = (inward.points[1] - seam).cast(); + const Vec2d outgoing = (inward.points[2] - inward.points[1]).cast(); + REQUIRE(connector.dot(outgoing) < 0.); + + REQUIRE(offset_wipe_path_toward_support( + path, seam, seam, seam, +1, scale_(0.23), scale_(0.8), + target_support, target_support, original.lines(), scale_(0.4))); + CHECK(path.points[1].x() < seam.x() - scale_(0.1)); +} + +TEST_CASE("Stored wipe path leaves a narrow cusp directly after a seam gap", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam_start = point(55.139, 60.077); + const Point seam_end = point(55.141, 60.067); + Polyline path{ + seam_start, point(55.107, 60.008), point(55.061, 59.956), point(55.027, 59.943), + point(54.982, 59.924), point(54.922, 59.879), point(54.868, 59.845), + point(54.754, 59.783), point(54.391, 59.635), point(54.053, 59.471), + }; + const Polyline original = path; + const Lines target_support{ + Line(point(55.132, 59.744), point(55.121, 59.745)), + Line(point(55.121, 59.745), point(54.983, 59.648)), + Line(point(54.983, 59.648), point(54.938, 59.623)), + Line(point(54.938, 59.623), point(54.866, 59.584)), + Line(point(54.866, 59.584), point(54.483, 59.427)), + Line(point(54.483, 59.427), point(54.157, 59.268)), + }; + + REQUIRE(offset_wipe_path_toward_support( + path, seam_start, seam_end, seam_end, -1, scale_(0.270341), scale_(0.8), + target_support, target_support, original.lines(), scale_(0.4))); + REQUIRE(path.points.size() >= 2); + CHECK(path.points[1].y() < seam_end.y() - scale_(0.2)); + CHECK(std::abs(path.points[1].x() - seam_end.x()) < scale_(0.05)); + + // Orca: the inward connector must not run back through the first extruded + // point after the gap, which would put the wipe on the external wall. + const Line connector(seam_end, path.points[1]); + CHECK(connector.distance_to(original.points[1]) > scale_(0.02)); +} + +TEST_CASE("Stored wipe path does not reverse after an inward pre-move at a wide gap", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam_start = point(55.139, 60.077); + const Point seam_end = point(55.163, 60.002); + const Point wipe_start = point(55.142, 60.037); + Polyline path{ + seam_start, point(55.107, 60.008), point(55.061, 59.956), point(55.027, 59.943), + point(54.982, 59.924), point(54.922, 59.879), point(54.868, 59.845), + point(54.754, 59.783), point(54.391, 59.635), point(54.053, 59.471), + point(50.2, 55.0), point(50.2, 50.0), point(60.8, 50.0), point(60.8, 55.0), + point(56.564, 59.430), point(55.824, 59.708), point(55.392, 59.872), + point(55.237, 59.934), point(55.205, 59.961), seam_end, + }; + const Polyline original = path; + const Lines target_support{ + Line(point(55.132, 59.744), point(55.121, 59.745)), + Line(point(55.121, 59.745), point(54.983, 59.648)), + Line(point(54.983, 59.648), point(54.866, 59.584)), + Line(point(54.866, 59.584), point(54.483, 59.427)), + Line(point(54.483, 59.427), point(54.157, 59.268)), + }; + + REQUIRE(offset_wipe_path_toward_support( + path, seam_start, seam_end, wipe_start, -1, scale_(0.270341), scale_(0.8), + target_support, target_support, original.lines(), scale_(0.4))); + REQUIRE(path.points.size() >= 3); + + const Vec2d connector = (path.points[1] - wipe_start).cast(); + const Vec2d outgoing = (path.points[2] - path.points[1]).cast(); + CHECK(connector.dot(outgoing) >= 0.); + path.points.front() = wipe_start; + CHECK_THAT(path.length(), Catch::Matchers::WithinAbs(scale_(0.8), 2.)); +} + +TEST_CASE("Stored wipe path follows the incoming wall when a corner gap truncates the forward path", + "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam_start = point(46.047, 61.988); + const Point seam_end = point(46.118, 61.917); + Polyline path{ + seam_start, point(39.139, 55.080), point(46.047, 48.171), + point(52.956, 55.080), seam_end, + }; + const Polyline original = path; + const Lines target_support{ + Line(point(46.047, 61.672), point(39.461, 55.080)), + Line(point(39.461, 55.080), point(46.047, 48.493)), + Line(point(46.047, 48.493), point(52.633, 55.080)), + Line(point(52.633, 55.080), point(46.047, 61.672)), + }; + + REQUIRE(offset_wipe_path_toward_support( + path, seam_start, seam_end, seam_end, +1, scale_(0.23), scale_(0.8), + target_support, target_support, original.lines(), scale_(0.4))); + path.points.front() = seam_end; + CHECK_THAT(path.length(), Catch::Matchers::WithinAbs(scale_(0.8), 2.)); + REQUIRE(path.points.size() >= 3); + CHECK(path.points[1].x() < seam_end.x()); + CHECK(path.points[1].y() < seam_end.y()); +} + +TEST_CASE("Stored wipe path prefers support on the material side of a seam gap", "[WipePath][Regression]") +{ + const coord_t s = scale_(1.0); + const Point seam_start(s, 0); + const Point seam_end(0, 0); + Polyline path{seam_start, Point(s, 10 * s), Point(s, 20 * s)}; + const Polyline original = path; + const Lines target_support{ + Line(Point(0, s), Point(0, 3 * s)), + Line(Point(s / 2, -s / 10), Point(3 * s / 2, -s / 10)), + }; + + // Orca: the lower line is closest at the cusp and the preferred winding + // points toward it, but the outgoing wall is adjacent to the upper line. + REQUIRE(offset_wipe_path_toward_support( + path, seam_start, seam_end, seam_end, -1, s, 5 * s, + target_support, target_support, original.lines(), 2 * s)); + CHECK(path.points[1].y() > seam_end.y()); +} + +TEST_CASE("Stored wipe path rejects an outward offset at a reflex seam gap", "[WipePath][Regression]") +{ + const double offset = GENERATE(0.2, 0.4); // 50% and 100% of a 0.4 mm wall. + const double mirror = GENERATE(1., -1.); + CAPTURE(offset, mirror); + const auto point = [mirror](double x, double y) { return Point::new_scale(mirror * x, y); }; + const Point seam_start = point(0., 0.); + const double gap_component = 0.04 / std::sqrt(2.); // Default 10% seam gap for a 0.4 mm nozzle. + const Point seam_end = point(-gap_component, -gap_component); + const Polyline original{seam_start, point(0., -10.)}; + const Lines support{Line(point(0.4, -10.), point(0.4, 1.))}; + const int preferred_dir = mirror > 0. ? +1 : -1; + + // The inward miter backtracks. The opposite offset can still be supported + // by the outer bead, so support alone must not make it an inward candidate. + Polyline outward = original; + REQUIRE(offset_wipe_path(outward, seam_start, seam_end, seam_end, + -preferred_dir, scale_(offset), scale_(2.))); + Lines all_support = support; + const Lines current = original.lines(); + all_support.insert(all_support.end(), current.begin(), current.end()); + REQUIRE(wipe_path_support_score(outward, seam_end, + LinesDistancer(support), LinesDistancer(all_support), scale_(0.4)).has_value()); + REQUIRE(mirror * outward.points[1].x() < 0.); + + Polyline path = original; + if (offset_wipe_path_toward_support(path, seam_start, seam_end, seam_end, + preferred_dir, scale_(offset), scale_(2.), support, support, current, scale_(0.4))) { + REQUIRE(path.points.size() >= 2); + CHECK(mirror * path.points[1].x() > 0.); + } else { + CHECK(path.points == original.points); + } + + // An inward pre-move provides a clear connector to the direct fallback. + // The fix must retain this usable inward path, rather than reject all wipes. + const Point wipe_start = point(0.05, -0.04); + path = original; + REQUIRE(offset_wipe_path_toward_support(path, seam_start, seam_end, wipe_start, + preferred_dir, scale_(offset), scale_(2.), support, support, current, scale_(0.4))); + REQUIRE(path.points.size() == 2); + CHECK(mirror * path.points[1].x() > mirror * wipe_start.x()); +} + +TEST_CASE("Direct inward wipes respect the nozzle position and intervening walls", "[WipePath][Regression]") +{ + const int mirror = GENERATE(1, -1); + const bool crossing_wall = GENERATE(false, true); + CAPTURE(mirror, crossing_wall); + const auto point = [mirror](double x, double y) { return Point::new_scale(mirror * x, y); }; + const Point seam_start = point(0., 0.); + const double gap_component = 0.04 / std::sqrt(2.); + const Point seam_end = point(-gap_component, -gap_component); + const Polyline original{seam_start, point(0., -10.)}; + const Lines support{Line(point(0.4, -10.), point(0.4, 1.))}; + Lines current = original.lines(); + // The direct destination is near x=0.172. A nozzle already farther inward + // must not return toward the wall. An inward connector from x=0.05 must + // still be rejected when another wall lies between it and the destination. + const Point wipe_start = point(crossing_wall ? 0.05 : 0.3, -0.04); + if (crossing_wall) + current.emplace_back(point(0.1, -0.2), point(0.1, 0.2)); + Polyline path = original; + REQUIRE_FALSE(offset_wipe_path_toward_support(path, seam_start, seam_end, wipe_start, + mirror, scale_(0.2), scale_(2.), support, support, current, scale_(0.4))); + CHECK(path.points == original.points); +} + +TEST_CASE("Inward wipe checks the material side after leaving an open wall endpoint", "[WipePath][Regression]") +{ + const bool require_clearance = GENERATE(false, true); + CAPTURE(require_clearance); + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(0., 0.); + const LinesDistancer current(Lines{Line(seam, point(2., 0.))}); + const LinesDistancer support(Lines{Line(point(0., 0.4), point(2., 0.4))}); + Polyline path{seam, point(0.1, 0.2), point(0.5, 0.2), point(-0.2, 0.2)}; + REQUIRE(wipe_path_stays_on_material_side( + path, seam, Vec2d(0., 1.), support, current, scale_(0.2), require_clearance)); + + // Rounding the open endpoint keeps 0.2 mm of unsigned clearance while + // moving to the air side. Checking only the first direction cannot catch it. + path.points.push_back(point(-0.2, -0.2)); + path.points.push_back(point(0.5, -0.2)); + REQUIRE_FALSE(wipe_path_stays_on_material_side( + path, seam, Vec2d(0., 1.), support, current, scale_(0.2), require_clearance)); +} + +TEST_CASE("Direct inward fallbacks check the material side without requiring clearance", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(0., 0.); + const LinesDistancer current(Lines{Line(point(-2., 0.), point(2., 0.))}); + const LinesDistancer support(Lines{Line(point(-2., 0.4), point(2., 0.4))}); + REQUIRE(wipe_path_stays_on_material_side( + Polyline{seam, point(0., 0.05)}, seam, Vec2d(0., 1.), support, current, scale_(0.2), false)); + + // Even if the construction's initial direction points outward, the nearby + // inner wall still identifies the material side independently of that hint. + REQUIRE_FALSE(wipe_path_stays_on_material_side( + Polyline{seam, point(0., -0.05)}, seam, Vec2d(0., -1.), support, current, scale_(0.2), false)); +} + +TEST_CASE("Stored wipe path may return to the current wall after reaching an earlier wall", "[WipePath]") +{ + const coord_t s = scale_(1.0); + const Polyline path{Point(0, 0), Point(0, 2 * s), Point(10 * s, 0)}; + const Lines earlier{Line(Point(0, 2 * s), Point(10 * s, 2 * s))}; + const Lines current{Line(Point(0, 0), Point(10 * s, 0))}; + + Lines all_support = earlier; + all_support.insert(all_support.end(), current.begin(), current.end()); + REQUIRE(wipe_path_support_score(path, Point(0, 0), + LinesDistancer(earlier), LinesDistancer(all_support), s).has_value()); +} + +TEST_CASE("Stored wipe path tolerates compounded coordinate quantization", "[WipePath]") +{ + const coord_t s = scale_(1.0); + const coord_t rounding = coord_t(3.5 * SCALED_EPSILON); + const Point destination(0, 2 * s + rounding); + const Polyline path{Point(0, 0), destination}; + const Lines earlier{Line(Point(-s, 0), Point(s, 0))}; + + const LinesDistancer support_distancer(earlier); + REQUIRE(wipe_path_support_score(path, destination, support_distancer, support_distancer, 2 * s).has_value()); +} + +TEST_CASE("Stored wipe path stays on the inner side of a short external loop", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(55.270, 41.666); + Polyline path{ + seam, point(55.241, 41.568), point(55.210, 41.518), point(55.195, 41.506), + point(55.173, 41.496), point(55.141, 41.479), point(55.126, 41.473), + point(55.068, 41.421), point(55.055, 41.416), point(55.006, 41.382), + point(54.808, 41.231), point(54.687, 41.153), point(54.590, 41.069), + point(54.529, 41.027), point(54.441, 40.949), point(54.299, 40.803), + point(54.219, 40.674), point(54.183, 40.581), point(54.172, 40.511), + point(54.182, 40.450), point(54.225, 40.358), point(54.256, 40.318), + point(54.341, 40.251), point(54.418, 40.211), point(54.499, 40.176), + point(54.675, 40.124), point(54.797, 40.106), point(54.978, 40.092), + point(55.245, 40.093), point(55.443, 40.103), point(55.591, 40.128), + point(55.771, 40.164), point(55.962, 40.217), point(56.103, 40.264), + point(56.167, 40.295), point(56.246, 40.341), point(56.338, 40.412), + point(56.382, 40.469), point(56.396, 40.527), point(56.386, 40.609), + point(56.313, 40.740), point(56.208, 40.867), point(56.071, 40.991), + point(55.946, 41.094), point(55.812, 41.198), point(55.722, 41.262), + point(55.665, 41.294), point(55.556, 41.398), point(55.520, 41.414), + point(55.495, 41.424), point(55.478, 41.437), point(55.442, 41.469), + point(55.407, 41.505), point(55.386, 41.510), point(55.367, 41.516), + point(55.335, 41.535), point(55.292, 41.575), seam, + }; + const Polyline original = path; + const Polyline inner{ + point(55.111, 41.176), point(54.946, 41.050), point(54.824, 40.970), + point(54.733, 40.892), point(54.668, 40.846), point(54.598, 40.784), + point(54.480, 40.662), point(54.424, 40.572), point(54.403, 40.516), + point(54.420, 40.479), point(54.465, 40.443), point(54.577, 40.390), + point(54.723, 40.347), point(54.823, 40.333), point(54.986, 40.320), + point(55.239, 40.321), point(55.418, 40.330), point(55.550, 40.352), + point(55.718, 40.386), point(55.896, 40.435), point(56.017, 40.476), + point(56.061, 40.497), point(56.118, 40.530), point(56.154, 40.558), + point(56.124, 40.611), point(56.043, 40.709), point(55.921, 40.819), + point(55.804, 40.916), point(55.676, 41.015), point(55.600, 41.069), + point(55.526, 41.114), point(55.426, 41.207), point(55.379, 41.235), + point(55.349, 41.259), point(55.291, 41.317), point(55.252, 41.293), + point(55.192, 41.238), point(55.111, 41.176), + }; + Lines target_support = inner.lines(); + // Orca: a different contour has a slightly closer inner wall on the air + // side of this short loop. It must not override the loop's material side. + target_support.emplace_back(point(55.159, 42.147), point(55.299, 42.011)); + + REQUIRE(offset_wipe_path_toward_support( + path, seam, seam, seam, +1, scale_(0.293166), scale_(0.8), + target_support, target_support, original.lines(), scale_(0.4))); + REQUIRE(path.points.size() >= 2); + + // Orca: the nearest inner wall is below the seam; accepting the opposite + // offset would send the wipe into air outside this small contour. + CHECK(path.points[1].y() < seam.y()); +} + +TEST_CASE("Stored wipe path does not return to the external wall after moving inward", "[WipePath][Regression]") +{ + const auto point = [](double x, double y) { return Point::new_scale(x, y); }; + const Point seam = point(47.451, 54.647); + Polyline path{ + seam, point(47.370, 54.634), point(47.345, 54.619), point(47.333, 54.604), + point(47.322, 54.572), point(47.312, 54.518), point(47.315, 54.445), + point(47.345, 54.257), point(47.357, 54.206), point(47.380, 54.135), + point(47.418, 54.065), point(47.514, 53.917), point(47.537, 53.886), + point(47.597, 53.834), point(47.705, 53.769), point(47.747, 53.748), + point(47.785, 53.734), point(47.825, 53.735), point(47.862, 53.746), + point(47.889, 53.763), point(47.939, 53.817), point(47.964, 53.856), + point(47.979, 53.897), point(47.986, 53.943), point(47.986, 54.005), + point(47.977, 54.075), point(47.949, 54.188), point(47.902, 54.321), + point(47.871, 54.388), point(47.835, 54.444), point(47.765, 54.521), + point(47.741, 54.542), point(47.675, 54.589), point(47.615, 54.620), + point(47.518, 54.642), seam, + }; + const Polyline original = path; + const Polyline inner{ + point(47.541, 54.281), point(47.545, 54.258), point(47.560, 54.212), + point(47.577, 54.181), point(47.682, 54.017), point(47.707, 53.995), + point(47.789, 53.946), point(47.791, 53.958), point(47.791, 53.992), + point(47.785, 54.039), point(47.762, 54.132), point(47.721, 54.249), + point(47.700, 54.294), point(47.680, 54.324), point(47.628, 54.382), + point(47.574, 54.422), point(47.548, 54.435), point(47.513, 54.443), + point(47.541, 54.281), + }; + const double offset = scale_(0.229999); + + REQUIRE(offset_wipe_path_toward_support( + path, seam, seam, seam, +1, offset, scale_(0.8), + inner.lines(), inner.lines(), original.lines(), scale_(0.4))); + + // Orca: after reaching the inner wall, a full-width inward wipe must not + // collapse back onto the external perimeter at a tight turn. + for (size_t index = 1; index < path.points.size(); ++index) { + double clearance = std::numeric_limits::infinity(); + for (const Line &line : original.lines()) + clearance = std::min(clearance, line.distance_to(path.points[index])); + CHECK(clearance >= 0.75 * offset); + } +} + +// Orca: wipe_on_loops_destination coverage for every orientation. + +TEST_CASE("wipe_on_loops destination is on the material side for every orientation", "[WipePath]") +{ + const auto [is_ccw, is_hole] = GENERATE( + table({{true, false}, {false, false}, {false, true}, {true, true}})); + INFO("is_ccw=" << is_ccw << ", is_hole=" << is_hole); + const double nozzle_diameter = GENERATE(0.4, 0.8); + const bool subdivided = GENERATE(false, true); + INFO("nozzle diameter=" << nozzle_diameter << ", subdivided=" << subdivided); + + const coord_t s = scale_(1.0); + std::vector contour = {Point(0, 0), Point(20 * s, 0), Point(20 * s, 20 * s), Point(0, 20 * s)}; + if (subdivided) { + // The same square, with path boundaries inside both sampling distances near the seam. + contour = {Point(0, 0), Point(scale_(0.03), 0.), Point(scale_(0.2), 0.), + Point(20 * s, 0), Point(20 * s, 20 * s), Point(0, 20 * s), + Point(0., scale_(0.2)), Point(0., scale_(0.03))}; + } + if (!is_ccw) + for (Point &point : contour) + std::swap(point.x(), point.y()); + ExtrusionPaths paths; + if (subdivided) { + for (size_t i = 0; i < contour.size(); ++i) + paths.push_back(make_path({contour[i], contour[(i + 1) % contour.size()]})); + } else { + paths = make_loop_paths(contour); + } + + const std::optional destination = + wipe_on_loops_destination(paths, scale_(nozzle_diameter), is_ccw, is_hole); + REQUIRE(destination.has_value()); + + const Point seam_start = paths.front().first_point(); + const Vec2d first_edge = (paths.front().polyline.points[1].to_point() - seam_start).cast(); + Vec2d material_normal(-first_edge.y(), first_edge.x()); + if (is_ccw == is_hole) + material_normal = -material_normal; + + // Orca: contours use their winding's inside; holes use the opposite side. + const Vec2d move = destination->cast() - seam_start.cast(); + REQUIRE(move.dot(material_normal) > 0.); + // Move 20% of the nozzle diameter, turning through one third of the material-side + // corner: 90 degrees for a contour, 270 degrees for a hole. + const double distance = scale_(0.2 * nozzle_diameter); + const double angle = is_hole ? PI / 2. : PI / 6.; + CHECK_THAT(move.dot(first_edge.normalized()), Catch::Matchers::WithinAbs(distance * std::cos(angle), 2.)); + CHECK_THAT(move.dot(material_normal.normalized()), Catch::Matchers::WithinAbs(distance * std::sin(angle), 2.)); +} + +TEST_CASE("wipe_on_loops returns destination for small but nonzero loop", "[WipePath]") +{ + // Orca: a 0.5 mm square is tight for a 0.4 mm nozzle but remains valid. + const coord_t s = scale_(1.0); + auto paths = make_loop_paths({Point(0, 0), Point(s / 2, 0), Point(s / 2, s / 2), Point(0, s / 2)}); + + auto dest = wipe_on_loops_destination(paths, scale_(0.4), true, false); + REQUIRE(dest.has_value()); +} + +TEST_CASE("wipe_on_loops destination is nullopt for degenerate single-point path", "[WipePath]") +{ + const coord_t s = scale_(1.0); + auto paths = make_paths({Point(50 * s, 50 * s)}); + + auto dest = wipe_on_loops_destination(paths, scale_(0.4), true, false); + REQUIRE_FALSE(dest.has_value()); +} From 9321f24959297e3414bc6b6de17caba7100b9e67 Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Wed, 16 Sep 2026 06:54:48 +0200 Subject: [PATCH 147/162] CLI: --strict, and a warnings array in result.json (#14601) # Description Add `--strict` for CI and scripted pipelines, and a structured `warnings` array in `result.json`. ## `--strict` A NON_CRITICAL slicing warning is logged and the slice succeeds: return code `0`, G-code written. That suits interactive use, but a pipeline then ships a slice with a warning nobody saw. With `--strict`, such a warning fails the run with `CLI_SLICING_ERROR` before the G-code is exported. Without the flag, nothing changes. In FFF the warning that reaches this path is "support needed but disabled" (`PrintObject::generate_support_material`). `--no-check` skips that check, so `--strict --no-check` is rejected with `CLI_INVALID_PARAMS`. `--strict` is read before any work, so it doesn't depend on argument order and `result.json` reports it for early failures as well. ## `result.json` Two new top-level fields: - `warnings`: `[{"class", ...details}]`. One class is wired: `slicing_warning_non_critical` with `plate_id` and `text`, recorded whenever such a warning fires, with or without `--strict`. The array also fills on runs that succeed, so `return_code` stays the verdict. - `strict_mode`: whether `--strict` was on. `record_exit_reson` writes `result.json` on Linux only, so both fields exist only there. The non-zero exit works on every platform. ## Tests - `tests/fff_print/test_support_material.cpp` (all platforms): an overhang sliced with support off raises the NON_CRITICAL support-needed status, and the no-check flag suppresses it. - `tests/cli/test_cli_strict.sh` (Linux only): runs `orca-slicer` without flags, with `--strict`, and with `--strict --no-check`, and checks the shell status and `result.json` of each. It runs the built binary, so it carries the `RequiresApp` label, which `scripts/run_unit_tests.sh` excludes because the unit-test job only receives `build/tests`. Run it with `ctest --test-dir build/tests -C Release -L RequiresApp`. - CI: `unit_tests.yml` now passes `Release` on Linux too. `build_linux.sh` configures Ninja Multi-Config, and without a config ctest drops the labels of plain `add_test()` tests, so this test ran as "Not Run" instead of being excluded. The docs that assumed Linux was single-config are corrected too. Built and run locally on Linux (GCC 14) on current `main`: both tests pass, and the touched files compile clean under Clang with `-Werror`. --- .github/workflows/unit_tests.yml | 6 +- AGENTS.md | 6 +- scripts/run_unit_tests.sh | 10 +- src/OrcaSlicer.cpp | 42 ++++++ src/libslic3r/PrintConfig.cpp | 13 ++ tests/AGENTS.md | 5 +- tests/CMakeLists.txt | 5 + tests/cli/CMakeLists.txt | 17 +++ tests/cli/test_cli_strict.sh | 153 ++++++++++++++++++++++ tests/fff_print/test_support_material.cpp | 44 +++++++ 10 files changed, 290 insertions(+), 11 deletions(-) create mode 100644 tests/cli/CMakeLists.txt create mode 100644 tests/cli/test_cli_strict.sh diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 5f54f6581d..f5850d9fd7 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -54,8 +54,10 @@ jobs: shell: bash run: | tar -xvf build_tests.tar - # Multi-config generators (Windows/macOS) need a config; Linux is single-config. - scripts/run_unit_tests.sh "${{ inputs.test-dir }}" "${{ runner.os != 'Linux' && 'Release' || '' }}" + # Every platform builds with a multi-config generator (build_linux.sh uses Ninja + # Multi-Config), so ctest needs the config: without it, plain add_test() tests + # lose their labels and report "Not Run". + scripts/run_unit_tests.sh "${{ inputs.test-dir }}" Release - name: Upload Test Logs if: ${{ failure() }} uses: actions/upload-artifact@v7 diff --git a/AGENTS.md b/AGENTS.md index 01402af3eb..3d0a61b303 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,9 +20,9 @@ cmake --build . --config %build_type% --target ALL_BUILD -- -m Catch2 framework. Tests in `tests/`; see [tests/AGENTS.md](tests/AGENTS.md) for where a new test belongs and the conventions to follow. ```bash -cd build && ctest --output-on-failure # all tests -ctest --test-dir ./tests/libslic3r # individual suite -ctest --test-dir ./tests/fff_print +cd build && ctest -C Release --output-on-failure # all tests +ctest --test-dir ./tests/libslic3r -C Release # individual suite +ctest --test-dir ./tests/fff_print -C Release ``` ## Documentation diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index f6a01dd3e0..1d3f0046fd 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -7,8 +7,9 @@ # # Usage: run_unit_tests.sh [TEST_DIR] [BUILD_CONFIG] # TEST_DIR directory containing the built tests (default: build/tests) -# BUILD_CONFIG configuration to run; required for multi-config generators -# (Windows/macOS), harmless/omitted for single-config (Linux). +# BUILD_CONFIG configuration to run; required for multi-config generators, which all +# build scripts use (build_linux.sh too: Ninja Multi-Config). Without it, +# tests registered with plain add_test() lose their labels and report "Not Run". ROOT_DIR="$(dirname "$0")/.." @@ -17,8 +18,9 @@ cd "${ROOT_DIR}" || exit 1 TEST_DIR="${1:-build/tests}" BUILD_CONFIG="${2:-}" -# Run the whole suite, excluding tests tagged [NotWorking]. +# Run the whole suite, excluding tests tagged [NotWorking] and tests labelled RequiresApp, +# which run the built orca-slicer binary that this directory does not contain. # --no-tests=error fails the job if the filter matches nothing (instead of passing green). -args=(--test-dir "${TEST_DIR}" -LE "NotWorking" --no-tests=error --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j) +args=(--test-dir "${TEST_DIR}" -LE "NotWorking|RequiresApp" --no-tests=error --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j) [ -n "${BUILD_CONFIG}" ] && args+=(--build-config "${BUILD_CONFIG}") ctest "${args[@]}" diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 218070fa61..47b56bc350 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -189,6 +189,9 @@ typedef struct _sliced_info { int wall_loops{0}; std::vector upward_machines; std::vector downward_machines; + // Structured slicing warnings for result.json, and whether --strict was on. + nlohmann::json warnings = nlohmann::json::array(); + bool strict_mode {false}; }sliced_info_t; std::vector g_slicing_warnings; @@ -424,6 +427,21 @@ static PrinterTechnology get_printer_technology(const DynamicConfig &config) return(ret);} #endif +// Records a structured slicing warning so a CI or scripted consumer can branch on +// a stable `class` string instead of matching stderr. Warnings are kept on the +// run's sliced_info and emitted as the top-level "warnings" array of result.json; +// a non-empty array does not by itself mean the run failed. Under --strict a +// NON_CRITICAL warning additionally ends the run non-zero. +// +// result.json is written on Linux only (see the guard in record_exit_reson), so +// neither "warnings" nor "strict_mode" reaches Windows or macOS. +static void cli_record_warning(sliced_info_t &sliced_info, const std::string &cls, + nlohmann::json details = nlohmann::json::object()) +{ + details["class"] = cls; + sliced_info.warnings.push_back(std::move(details)); +} + void record_exit_reson(std::string outputdir, int code, int plate_id, std::string error_message, sliced_info_t& sliced_info, std::map key_values = std::map()) { #if defined(__linux__) || defined(__LINUX__) @@ -462,6 +480,9 @@ void record_exit_reson(std::string outputdir, int code, int plate_id, std::strin for (auto& iter: key_values) j[iter.first] = iter.second; + j["warnings"] = sliced_info.warnings; + j["strict_mode"] = sliced_info.strict_mode; + boost::nowide::ofstream c; c.open(result_file, std::ios::out | std::ios::trunc); c << j.dump(1, '\t') << std::endl; @@ -1381,6 +1402,16 @@ int CLI::run(int argc, char **argv) bool need_skip = (skip_objects.size() > 0)?true:false; long long global_begin_time = 0, global_current_time; sliced_info_t sliced_info; + // Read up front so result.json reports it for early failures too. + sliced_info.strict_mode = m_config.opt_bool("strict"); + // --no-check skips the check behind the only NON_CRITICAL warning --strict acts on + // (support needed but disabled), from the point it appears among the actions. The pair + // would make --strict a no-op or depend on argument order, so refuse it. + if (sliced_info.strict_mode && m_config.opt_bool("no_check")) { + boost::nowide::cerr << "--strict cannot be combined with --no-check" << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } std::map record_key_values; ConfigOptionBool* downward_check_option = m_config.option("downward_check"); @@ -6009,6 +6040,8 @@ int CLI::run(int argc, char **argv) export_3mf_file = m_config.opt_string(opt_key); }else if(opt_key=="no_check"){ no_check = m_config.opt_bool(opt_key); + }else if(opt_key=="strict"){ + //already read into sliced_info at the start of run() //} else if (opt_key == "export_gcode" || opt_key == "export_sla" || opt_key == "slice") { } else if (opt_key == "normative_check") { //already processed before @@ -6717,6 +6750,15 @@ int CLI::run(int argc, char **argv) if (status.warning_level == PrintStateBase::WarningLevel::NON_CRITICAL) { BOOST_LOG_TRIVIAL(warning) << "plate "<< index+1<< ": found NON_CRITICAL slicing warnings: "<tooltip = L("Do not run any validity checks, such as G-code path conflicts check."); def->set_default_value(new ConfigOptionBool(false)); + // --strict turns the non-critical slicing warnings the CLI otherwise only logs into a + // failed run, and records strict_mode in result.json so consumers can tell the modes apart. + def = this->add("strict", coBool); + def->label = L("Strict mode"); + def->tooltip = L("Exit non-zero when slicing raises a non-critical warning that is " + "otherwise only logged, such as a model that needs support while " + "support is disabled. Use this in CI or scripted pipelines that should " + "never ship a subtly broken slice. Each such warning is also listed " + "with a stable class in the `warnings` array of result.json, which is " + "written on Linux only. Cannot be combined with --no-check, which skips " + "the support check."); + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("normative_check", coBool); def->label = L("Normative check"); def->tooltip = L("Check the normative items."); diff --git a/tests/AGENTS.md b/tests/AGENTS.md index c62a1d12ec..50ea40cafc 100644 --- a/tests/AGENTS.md +++ b/tests/AGENTS.md @@ -10,6 +10,7 @@ Rules for writing tests under `tests/`. [CATCH2.md](CATCH2.md) is the Catch2 ref - `libnest2d`: 2D nesting and packing. - `slic3rutils`: the Python plugin system and its slicing-pipeline bindings. - `filament_group`: filament-to-extruder grouping, checked against golden files. +- `cli`: end-to-end runs of the built `orca-slicer` binary, Linux only. These tests carry the `RequiresApp` label, which the CI unit-test job excludes because it receives only `build/tests`; run them with `ctest --test-dir build/tests -C Release -L RequiresApp`. ## Building and running @@ -17,9 +18,9 @@ Tests are off by default, so the build has to be told to include them. - Windows: `build_release_vs.bat tests`, then `ctest --test-dir build/tests -C Release` - macOS: `./build_release_macos.sh -s -a arm64 -T`, which builds and runs them -- Linux: `./build_linux.sh -t`, then `ctest --test-dir build/tests` +- Linux: `./build_linux.sh -t`, then `ctest --test-dir build/tests -C Release` -Rebuild a single suite with `cmake --build build --config Release --target _tests`. Visual Studio and Xcode are multi-configuration generators, so `ctest` needs `-C` there; on Linux it does not. +Rebuild a single suite with `cmake --build build --config Release --target _tests`. Visual Studio, Xcode and the Ninja Multi-Config generator that `build_linux.sh` uses are all multi-configuration, so `ctest` needs `-C` on every platform; without it, tests registered with plain `add_test()` lose their labels and report "Not Run". ## Where a test goes diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c403152c4e..f79a3c54c2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -85,4 +85,9 @@ add_subdirectory(fff_print) add_subdirectory(sla_print) add_subdirectory(filament_group) +# End-to-end checks of the orca-slicer binary. Linux only: they read result.json, which the CLI +# writes on Linux only. src/ is added before tests/, so the target is known here. +if (UNIX AND NOT APPLE AND TARGET OrcaSlicer) + add_subdirectory(cli) +endif () diff --git a/tests/cli/CMakeLists.txt b/tests/cli/CMakeLists.txt new file mode 100644 index 0000000000..6707159fb2 --- /dev/null +++ b/tests/cli/CMakeLists.txt @@ -0,0 +1,17 @@ +# Runs the real orca-slicer binary, so it needs the built app and resources/, not just build/tests. +# The CI unit-test job only receives build/tests, so the test carries the RequiresApp label that +# scripts/run_unit_tests.sh excludes. Run it with `ctest -C Release -L RequiresApp`. It also exits 77 +# (skipped) when the binary is missing. + +find_program(ORCA_CLI_TEST_PYTHON NAMES python3) +if (NOT ORCA_CLI_TEST_PYTHON) + message(STATUS "python3 not found, not registering the CLI tests") + return() +endif () + +add_test(NAME cli_strict_mode + COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test_cli_strict.sh $ ${ORCA_CLI_TEST_PYTHON}) +set_tests_properties(cli_strict_mode PROPERTIES + LABELS "CLI;RequiresApp" + SKIP_RETURN_CODE 77 + TIMEOUT 900) diff --git a/tests/cli/test_cli_strict.sh b/tests/cli/test_cli_strict.sh new file mode 100644 index 0000000000..6051511f23 --- /dev/null +++ b/tests/cli/test_cli_strict.sh @@ -0,0 +1,153 @@ +#!/usr/bin/env bash +# End-to-end check of the CLI --strict option against the real orca-slicer binary. +# +# A model with a large unsupported overhang, sliced with support off, raises the NON_CRITICAL +# "support needed" slicing warning. The CLI lists it in result.json's "warnings" array, and with +# --strict it also fails the run with CLI_SLICING_ERROR. --strict with --no-check is rejected up +# front, because --no-check skips that check. +# +# usage: test_cli_strict.sh +set -u + +BIN="${1:-}" +PY="${2:-python3}" +# 77 is the test's SKIP_RETURN_CODE. +[ -x "$BIN" ] || { echo "SKIP: orca-slicer binary not found: $BIN"; exit 77; } + +# From src/libslic3r/Utils.hpp. main() returns them, so the shell sees them modulo 256. +CLI_SUCCESS=0 +CLI_INVALID_PARAMS=-2 +CLI_SLICING_ERROR=-100 + +WORK="$(mktemp -d "${TMPDIR:-/tmp}/orca-cli-strict.XXXXXX")" +trap 'rm -rf "$WORK"' EXIT +mkdir -p "$WORK/datadir" + +# Standalone presets: without "inherits" the CLI loads them as-is, with no preset bundle. +cat > "$WORK/machine.json" <<'EOF' +{ + "type": "machine", + "from": "User", + "name": "CLI strict test printer", + "printable_area": ["0x0", "200x0", "200x200", "0x200"], + "printable_height": "100", + "layer_change_gcode": "G92 E0" +} +EOF +cat > "$WORK/process.json" <<'EOF' +{ + "type": "process", + "from": "User", + "name": "CLI strict test process", + "enable_support": "0", + "enforce_support_layers": "0" +} +EOF + +# A 40x40mm cap on an 8x8mm stem: the cap reaches ~22mm past the stem, beyond the 6mm +# cantilever limit of PrintObject::is_support_necessary(). +"$PY" - "$WORK/capital.stl" <<'EOF' +import sys + +def box(x0, y0, z0, x1, y1, z1): + v = [(x, y, z) for z in (z0, z1) for y in (y0, y1) for x in (x0, x1)] + # Faces wound counter-clockwise seen from outside: -z, +z, -y, +y, -x, +x. + for a, b, c, d in ((0, 2, 3, 1), (4, 5, 7, 6), (0, 1, 5, 4), (2, 6, 7, 3), (0, 4, 6, 2), (1, 3, 7, 5)): + yield v[a], v[b], v[c] + yield v[a], v[c], v[d] + +with open(sys.argv[1], "w") as f: + f.write("solid capital\n") + for tri in (*box(16, 16, 0, 24, 24, 13), *box(0, 0, 12, 40, 40, 14)): + f.write("facet normal 0 0 0\nouter loop\n") + for p in tri: + f.write("vertex %g %g %g\n" % p) + f.write("endloop\nendfacet\n") + f.write("endsolid capital\n") +EOF + +fails=0 +fail() { echo "FAIL: $*"; fails=$((fails + 1)); } + +# run [option...]: slice into $WORK/, keeping the log and the shell status there. +run() { + local out="$WORK/$1"; shift + mkdir -p "$out" + timeout 300 "$BIN" --datadir "$WORK/datadir" --load-settings "$WORK/machine.json;$WORK/process.json" \ + "$@" --slice 0 --outputdir "$out" "$WORK/capital.stl" > "$out/log" 2>&1 + echo $? > "$out/status" +} + +# expect_status +expect_status() { + local got; got="$(cat "$WORK/$1/status")" + [ "$got" -eq $(( $2 & 255 )) ] || fail "$1: shell status $got, want $(( $2 & 255 )) (code $2)" +} + +# expect_gcode yes|no +expect_gcode() { + if compgen -G "$WORK/$1/*.gcode" > /dev/null; then + [ "$2" = yes ] || fail "$1: G-code was exported" + else + [ "$2" = no ] || fail "$1: no G-code was exported" + fi +} + +# expect_result +expect_result() { + "$PY" - "$WORK/$1/result.json" "$2" "$3" "$4" <<'EOF' || fail "$1: result.json" +import json, sys + +path, want_rc, want_strict, want_warning = sys.argv[1], int(sys.argv[2]), sys.argv[3] == "true", sys.argv[4] +try: + with open(path) as f: + result = json.load(f) +except (OSError, ValueError) as e: + sys.exit("cannot read %s: %s" % (path, e)) + +errors = [] +if result.get("return_code") != want_rc: + errors.append("return_code %r, want %d" % (result.get("return_code"), want_rc)) +if result.get("strict_mode") is not want_strict: + errors.append("strict_mode %r, want %r" % (result.get("strict_mode"), want_strict)) +warnings = result.get("warnings") +if not isinstance(warnings, list): + errors.append("warnings %r is not a list" % (warnings,)) +else: + found = any(isinstance(w, dict) and w.get("class") == "slicing_warning_non_critical" for w in warnings) + if found != (want_warning == "some"): + errors.append("warnings %r, want %s slicing_warning_non_critical" % (warnings, want_warning)) +for e in errors: + print(e) +sys.exit(1 if errors else 0) +EOF +} + +echo "== without --strict the warning is listed and the slice succeeds" +run plain +expect_status plain $CLI_SUCCESS +expect_result plain $CLI_SUCCESS false some +expect_gcode plain yes + +echo "== --strict fails the run on the same warning, before G-code export" +run strict --strict +expect_status strict $CLI_SLICING_ERROR +expect_result strict $CLI_SLICING_ERROR true some +expect_gcode strict no + +echo "== --strict with --no-check is rejected before slicing" +run conflict --strict --no-check +expect_status conflict $CLI_INVALID_PARAMS +expect_result conflict $CLI_INVALID_PARAMS true none +expect_gcode conflict no +grep -q -- "--strict cannot be combined with --no-check" "$WORK/conflict/log" \ + || fail "conflict: error message missing" + +if [ "$fails" -ne 0 ]; then + for log in "$WORK"/*/log; do + echo "--- $log" + tail -n 40 "$log" + done + exit 1 +fi +echo "PASS" diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index 4564c0b034..97a9cea9e1 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -128,6 +129,49 @@ TEST_CASE("Enforced support layers are generated", "[SupportMaterial]") REQUIRE(enforced.objects().front()->support_layers().size() > 0); } +// Support-needed statuses raised while slicing support_capital() with support off. The CLI lists these +// in result.json and fails on them under --strict. Collected under a lock: generate_support_material() +// runs on TBB workers. +static std::vector support_needed_statuses(bool no_check) +{ + Slic3r::Print print; + Slic3r::Model model; + Slic3r::Test::init_print({ support_capital() }, print, model, { + { "enable_support", 0 }, + { "enforce_support_layers", 0 } + }); + print.set_no_check_flag(no_check); + + std::mutex mutex; + std::vector statuses; + print.set_status_callback([&mutex, &statuses](const PrintBase::SlicingStatus &status) { + if (status.message_type != PrintStateBase::SlicingNeedSupportOn) + return; + std::lock_guard lock(mutex); + statuses.push_back(status); + }); + print.process(); + return statuses; +} + +TEST_CASE("An overhang sliced with support off reports that support is needed", "[SupportMaterial]") +{ + // The 40mm cap reaches ~22mm past its 8mm stem, beyond the 6mm cantilever limit of + // PrintObject::is_support_necessary(). + const std::vector statuses = support_needed_statuses(false); + REQUIRE(! statuses.empty()); + for (const PrintBase::SlicingStatus &status : statuses) { + // The CLI only considers step warnings (warning_step != -1), and --strict only NON_CRITICAL ones. + CHECK(status.warning_level == PrintStateBase::WarningLevel::NON_CRITICAL); + CHECK(status.warning_step != -1); + } +} + +TEST_CASE("The no-check flag skips the support-needed check", "[SupportMaterial]") +{ + CHECK(support_needed_statuses(true).empty()); +} + SCENARIO("Support layer Z honors contact distance", "[SupportMaterial]") { // Box h = 20mm, hole bottom at 5mm, hole height 10mm (top edge at 15mm). From 93c8b3f2b029f09552a31a8a51308a3893088df9 Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Wed, 16 Sep 2026 06:56:46 +0200 Subject: [PATCH 148/162] CLI: --ground-* orientation from the Lay on Face planes, and --inspect-mesh (#15073) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CLI: --ground-face-* / --lay-flat / --center-on-bed orientation primitives Adds the CLI counterparts to the GUI's lay-flat / face-pick gizmos. Scripted / CI / AI pipelines can now set orientation without rendering a wxWidgets frame; today the only way is a GUI round-trip. New CLI actions (all operate in the mesh-local frame so they compose with prior --rotate-* / --orient flags): --ground-largest-face 1 Auto-detect the largest planar-face or --lay-flat 1 cluster (area-weighted), rotate so its normal points -Z. Covers "this part has one obvious flat side" cases. --ground-face-normal NX,NY,NZ Pick the face whose mesh-local normal best matches the given vector; ground it. e.g. `--ground-face-normal 1,0,0` stands a part on its +X side. --ground-face-point X,Y,Z Find the triangle containing the given mesh-local point; ground its face. Disambiguates when several faces share a normal (largest containing triangle wins). --center-on-bed 1 Translate so the XY bounding-box centroid lands at the bed center (derived from printable_area). New file `src/slic3r/Utils/MeshOrient.{hpp,cpp}`: - collect_triangles_object / compute_face_clusters — quantize per-triangle normals (0.001, ~0.06°) and area-weighted-average within clusters. Same clustering logic used by lay-flat. - apply_ground_rotation — same math as Selection::flattening_rotate in the GUI (Selection.cpp:1432): world-space quaternion from the transformed normal to -Z, applied as offset * new_rot * old_no_offset on every instance of every object, then a per-instance Z-lift so the grounded face lands at exactly 0 (avoids "No layers were detected" from FP-error z≈-1e-9). - ground_face_point uses a top-N cluster search + point-in-triangle test in local space; largest-area triangle wins on ambiguity. Rationale: without these, any CLI pipeline that needs a specific face on the bed must either encode custom rotation math per part or break out of the pipeline into the GUI. Both are bad for reproducibility. The --ground-face-* triple + the largest-face auto-mode cover essentially every orientation intent expressible in a slicing wizard. Scope: - `src/slic3r/Utils/MeshOrient.{hpp,cpp}` — new, ~420 lines - `src/slic3r/CMakeLists.txt` — 2-line registration - `src/libslic3r/PrintConfig.cpp` — 5 new CLIMiscConfigDef entries - `src/OrcaSlicer.cpp` — 58-line handler block + 1 include No behaviour change when the flags are absent. (cherry picked from commit c45a9795e1665db0c53a1ccbff9445fac36ea095) * CLI grounding: choose among the Lay on Face planes, per object Addresses review: - Move the geometry of GLGizmoFlatten::update_planes() into libslic3r/LayOnFace and use it from the gizmo and the CLI, so the --ground-* options pick convex-hull faces per object and instance, with part transformations (--rotate-x/y) applied. - Drop --center-on-bed, the --lay-flat alias and MeshOrient; make --ground-largest-face a coBool. - Parse --ground-face-normal and --ground-face-point strictly. A point that only some objects contain grounds those and leaves the others. - Fold in --inspect-mesh from #14603, reporting the same planes. - Tests in tests/libslic3r/test_lay_on_face.cpp: bounding boxes before and after, rotate then ground, two objects, and a ribbed part whose parallel inner faces outsum its base. * CLI --inspect-mesh, --ground-face-*: reject missing input and empty values - Without an input file or --load-assemble-list, --inspect-mesh printed nothing and exited 0. Reject it up front with CLI_INVALID_PARAMS. - An explicit empty --ground-face-normal or --ground-face-point was silently ignored. Only options given on the command line reach the transforms loop, so an empty value now fails the strict parse like any other malformed value. --- src/OrcaSlicer.cpp | 106 +++++++++++ src/libslic3r/CMakeLists.txt | 2 + src/libslic3r/LayOnFace.cpp | 221 +++++++++++++++++++++++ src/libslic3r/LayOnFace.hpp | 48 +++++ src/libslic3r/PrintConfig.cpp | 35 ++++ src/slic3r/CMakeLists.txt | 2 + src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp | 149 ++------------- src/slic3r/Utils/MeshInspect.cpp | 61 +++++++ src/slic3r/Utils/MeshInspect.hpp | 20 ++ tests/libslic3r/CMakeLists.txt | 1 + tests/libslic3r/test_lay_on_face.cpp | 205 +++++++++++++++++++++ 11 files changed, 717 insertions(+), 133 deletions(-) create mode 100644 src/libslic3r/LayOnFace.cpp create mode 100644 src/libslic3r/LayOnFace.hpp create mode 100644 src/slic3r/Utils/MeshInspect.cpp create mode 100644 src/slic3r/Utils/MeshInspect.hpp create mode 100644 tests/libslic3r/test_lay_on_face.cpp diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 47b56bc350..29c81caa41 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -73,6 +73,7 @@ using namespace nlohmann; #include "libslic3r/Thread.hpp" #include "libslic3r/BlacklistedLibraryCheck.hpp" #include "libslic3r/FlushVolCalc.hpp" +#include "libslic3r/LayOnFace.hpp" #include "libslic3r/Orient.hpp" #include "libslic3r/PNGReadWrite.hpp" @@ -85,6 +86,7 @@ using namespace nlohmann; #ifdef WIN32 #include "dev-utils/BaseException.h" #endif +#include "slic3r/Utils/MeshInspect.hpp" #include "slic3r/GUI/PartPlate.hpp" #include "slic3r/GUI/BitmapCache.hpp" #include "slic3r/GUI/OpenGLManager.hpp" @@ -1418,6 +1420,29 @@ int CLI::run(int argc, char **argv) if (downward_check_option) downward_check = downward_check_option->value; + // --inspect-mesh prints its JSON and exits, so any action that does work of its + // own (slicing, exporting) would be skipped without notice. Reject those up front; + // only options that merely tune how the input is loaded may come along. + if (std::find(m_actions.begin(), m_actions.end(), "inspect_mesh") != m_actions.end()) { + static const std::set inspect_compatible = { "inspect_mesh", "uptodate", "load_defaultfila", "min_save", + "mtcpp", "mstpp", "no_check", "normative_check", "pipe" }; + for (const std::string &action : m_actions) { + if (inspect_compatible.count(action) == 0) { + std::string flag = action; + std::replace(flag.begin(), flag.end(), '_', '-'); + boost::nowide::cerr << "--inspect-mesh cannot be combined with --" << flag << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } + // Without input there is nothing to inspect; fail rather than print nothing and exit 0. + if (m_input_files.empty() && m_config.opt_string("load_assemble_list").empty()) { + boost::nowide::cerr << "--inspect-mesh needs an input file or --load-assemble-list" << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } + // --export-settings - writes its JSON to stdout, so reject every action or transform that may write there // too (--info, --help, --orient, slicing and exporting). The allowed ones do nothing when nothing is // sliced or exported. @@ -4841,6 +4866,64 @@ int CLI::run(int argc, char **argv) for (auto &o : model.objects) // this affects volumes: o->rotate(Geometry::deg2rad(m_config.opt_float(opt_key)), Y); + } else if (opt_key == "ground_largest_face" || opt_key == "ground_face_normal" || opt_key == "ground_face_point") { + // Each instance is laid on one of its lay-on-face planes, which are computed from the current part + // transformations, so the rotations given before this option are respected. A direction or point is in + // object coordinates, so it names the same face for every instance of an object. + std::function&, const Transform3d&)> pick; + if (opt_key == "ground_largest_face") { + if (m_config.opt_bool(opt_key)) + pick = [](const std::vector& planes, const Transform3d&) { return find_largest_plane(planes); }; + } else { + // Only options given on the command line reach this loop, so an empty value is malformed input too. + const std::string& value = m_config.opt_string(opt_key); + Vec3d v; + int consumed = 0; + if (sscanf(value.c_str(), "%lf,%lf,%lf%n", &v.x(), &v.y(), &v.z(), &consumed) != 3 || consumed != int(value.size()) || + !v.allFinite() || (opt_key == "ground_face_normal" && v.norm() < EPSILON)) { + BOOST_LOG_TRIVIAL(error) << boost::format("Invalid params: %1% expects three comma-separated numbers, got \"%2%\"") % opt_key % value; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + if (opt_key == "ground_face_normal") + pick = [v](const std::vector& planes, const Transform3d&) { return find_plane_by_normal(planes, v); }; + else + pick = [v](const std::vector& planes, const Transform3d& inst_matrix) { + return find_plane_at_point(planes, inst_matrix, v, 0.01); + }; + } + if (pick) { + size_t laid = 0, missed = 0; + for (auto& model : m_models) { + model.add_default_instances(); + for (ModelObject* o : model.objects) + for (size_t i = 0; i < o->instances.size(); ++i) { + const Transform3d inst_matrix = o->instances[i]->get_matrix_no_offset(); + const std::vector planes = lay_on_face_planes(*o, inst_matrix); + if (planes.empty()) { + // Small or smooth parts (e.g. a sphere) have no face to rest on; the gizmo offers none either. + BOOST_LOG_TRIVIAL(warning) << boost::format("%1%: object %2% has no face large enough to lay on, left as it is") % opt_key % o->name; + continue; + } + const int idx = pick(planes, inst_matrix); + if (idx < 0) { + // Only a point can miss: with several objects it usually belongs to one of them. + BOOST_LOG_TRIVIAL(warning) << boost::format("%1%: no face of object %2% contains the point, left as it is") % opt_key % o->name; + ++missed; + continue; + } + BOOST_LOG_TRIVIAL(info) << boost::format("%1%: object %2% instance %3% laid on the %4% mm2 face with normal %5%") + % opt_key % o->name % i % planes[idx].area % planes[idx].normal.transpose(); + lay_on_face(*o, i, planes[idx].normal); + ++laid; + } + } + if (laid == 0 && missed > 0) { + BOOST_LOG_TRIVIAL(error) << boost::format("Invalid params: %1%: no face of any object contains the point") % opt_key; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } } else if (opt_key == "scale") { float ratio = m_config.opt_float(opt_key); if (ratio <= 0.f) { @@ -6000,6 +6083,29 @@ int CLI::run(int argc, char **argv) model.add_default_instances(); model.print_info(); } + } else if (opt_key == "inspect_mesh") { + // Machine-readable alternative to --info. Registered as an action so it satisfies the + // "needs an action" check and bypasses the GUI fallback, then exits once the JSON is out. + for (Model &model : m_models) { + model.add_default_instances(); + Slic3r::MeshInspect::inspect_to_json(model, m_input_files, boost::nowide::cout); + } + boost::nowide::cout.flush(); + // Conflicting actions were rejected before loading. Finish like the end of run(). + // flush_and_exit() is not usable here: it prints "found error ..." to stdout, + // which would corrupt the JSON. +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{100, "All done, Success"}; + cli_status_callback(slicing_status); + } + g_cli_callback_mgr.stop(); +#endif + for (Model &m : m_models) + m.remove_backup_path_if_exist(); + record_exit_reson(outfile_dir, CLI_SUCCESS, plate_to_slice, cli_errors[CLI_SUCCESS], sliced_info); + boost::nowide::cerr.flush(); + return CLI_SUCCESS; } else if (opt_key == "uptodate") { //already processed before } else if (opt_key == "min_save") { diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 202c317e7f..1d68db497d 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -304,6 +304,8 @@ set(lisbslic3r_sources Layer.cpp Layer.hpp LayerRegion.cpp + LayOnFace.cpp + LayOnFace.hpp libslic3r.cpp libslic3r.h Line.cpp diff --git a/src/libslic3r/LayOnFace.cpp b/src/libslic3r/LayOnFace.cpp new file mode 100644 index 0000000000..1112f9d2fe --- /dev/null +++ b/src/libslic3r/LayOnFace.cpp @@ -0,0 +1,221 @@ +#include "LayOnFace.hpp" + +#include "Geometry.hpp" +#include "Geometry/ConvexHull.hpp" +#include "Model.hpp" +#include "TriangleMesh.hpp" + +#include +#include +#include + +namespace Slic3r { + +std::vector lay_on_face_planes(const ModelObject &object, const Transform3d &inst_matrix) +{ + // An object can only rest on its convex hull, so candidate faces are taken from the hull of all model parts. + TriangleMesh ch; + for (const ModelVolume* vol : object.volumes) { + if (vol->type() != ModelVolumeType::MODEL_PART) + continue; + TriangleMesh vol_ch = vol->get_convex_hull(); + vol_ch.transform(vol->get_matrix()); + ch.merge(vol_ch); + } + ch = ch.convex_hull_3d(); + std::vector planes; + + // Following constants are used for discarding too small polygons. + const float minimal_area = 5.f; // in square mm (world coordinates) + const float minimal_side = 1.f; // mm + const float minimal_angle = 1.f; // degree, initial value was 10, but cause bugs + + // Now we'll go through all the facets and append Points of facets sharing the same normal. + // This part is still performed in mesh coordinate system. + const int num_of_facets = ch.facets_count(); + const std::vector face_normals = its_face_normals(ch.its); + const std::vector face_neighbors = its_face_neighbors(ch.its); + std::vector facet_queue(num_of_facets, 0); + std::vector facet_visited(num_of_facets, false); + int facet_queue_cnt = 0; + const stl_normal* normal_ptr = nullptr; + int facet_idx = 0; + while (1) { + // Find next unvisited triangle: + for (; facet_idx < num_of_facets; ++ facet_idx) + if (!facet_visited[facet_idx]) { + facet_queue[facet_queue_cnt ++] = facet_idx; + facet_visited[facet_idx] = true; + normal_ptr = &face_normals[facet_idx]; + planes.emplace_back(); + break; + } + if (facet_idx == num_of_facets) + break; // Everything was visited already + + while (facet_queue_cnt > 0) { + int facet_idx = facet_queue[-- facet_queue_cnt]; + const stl_normal& this_normal = face_normals[facet_idx]; + if (std::abs(this_normal(0) - (*normal_ptr)(0)) < 0.001 && std::abs(this_normal(1) - (*normal_ptr)(1)) < 0.001 && std::abs(this_normal(2) - (*normal_ptr)(2)) < 0.001) { + const Vec3i32 face = ch.its.indices[facet_idx]; + for (int j=0; j<3; ++j) + planes.back().outline.emplace_back(ch.its.vertices[face[j]].cast()); + + facet_visited[facet_idx] = true; + for (int j = 0; j < 3; ++ j) + if (int neighbor_idx = face_neighbors[facet_idx][j]; neighbor_idx >= 0 && ! facet_visited[neighbor_idx]) + facet_queue[facet_queue_cnt ++] = neighbor_idx; + } + } + planes.back().normal = normal_ptr->cast(); + + Pointf3s& verts = planes.back().outline; + // Now we'll transform all the points into world coordinates, so that the areas, angles and distances + // make real sense. + verts = transform(verts, inst_matrix); + + // if this is a just a very small triangle, remove it to speed up further calculations (it would be rejected later anyway): + if (verts.size() == 3 && + ((verts[0] - verts[1]).norm() < minimal_side + || (verts[0] - verts[2]).norm() < minimal_side + || (verts[1] - verts[2]).norm() < minimal_side)) + planes.pop_back(); + } + + // Let's prepare transformation of the normal vector from mesh to instance coordinates. + const Matrix3d normal_matrix = inst_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); + + // Now we'll go through all the polygons, transform the points into xy plane to process them: + for (unsigned int polygon_id=0; polygon_id < planes.size(); ++polygon_id) { + Pointf3s& polygon = planes[polygon_id].outline; + const Vec3d& normal = planes[polygon_id].normal; + + // transform the normal according to the instance matrix: + const Vec3d normal_transformed = normal_matrix * normal; + + // We are going to rotate about z and y to flatten the plane + Eigen::Quaterniond q; + Transform3d& m = planes[polygon_id].to_plane_frame; + m = Transform3d::Identity(); + m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(normal_transformed, Vec3d::UnitZ()).toRotationMatrix(); + polygon = transform(polygon, m); + + // Now to remove the inner points. We'll misuse Geometry::convex_hull for that, but since + // it works in fixed point representation, we will rescale the polygon to avoid overflows. + // And yes, it is a nasty thing to do. Whoever has time is free to refactor. + Vec3d bb_size = BoundingBoxf3(polygon).size(); + float sf = std::min(1./bb_size(0), 1./bb_size(1)); + Transform3d tr = Geometry::scale_transform({ sf, sf, 1.f }); + polygon = transform(polygon, tr); + polygon = Slic3r::Geometry::convex_hull(polygon); + polygon = transform(polygon, tr.inverse()); + + // Calculate area of the polygons and discard ones that are too small + float& area = planes[polygon_id].area; + area = 0.f; + for (unsigned int i = 0; i < polygon.size(); i++) // Shoelace formula + area += polygon[i](0)*polygon[i + 1 < polygon.size() ? i + 1 : 0](1) - polygon[i + 1 < polygon.size() ? i + 1 : 0](0)*polygon[i](1); + area = 0.5f * std::abs(area); + + bool discard = false; + if (area < minimal_area) + discard = true; + else { + // We also check the inner angles and discard polygons with angles smaller than the following threshold + const double angle_threshold = ::cos(minimal_angle * (double)PI / 180.0); + + for (unsigned int i = 0; i < polygon.size(); ++i) { + const Vec3d& prec = polygon[(i == 0) ? polygon.size() - 1 : i - 1]; + const Vec3d& curr = polygon[i]; + const Vec3d& next = polygon[(i == polygon.size() - 1) ? 0 : i + 1]; + + if ((prec - curr).normalized().dot((next - curr).normalized()) > angle_threshold) { + discard = true; + break; + } + } + } + + if (discard) { + planes[polygon_id--] = std::move(planes.back()); + planes.pop_back(); + continue; + } + + const Vec3d centroid = std::accumulate(polygon.begin(), polygon.end(), Vec3d(0.0, 0.0, 0.0)) / double(polygon.size()); + planes[polygon_id].center = inst_matrix.inverse() * (m.inverse() * centroid); + } + + std::sort(planes.rbegin(), planes.rend(), [](const LayOnFacePlane& a, const LayOnFacePlane& b) { return a.area < b.area; }); + return planes; +} + +int find_largest_plane(const std::vector &planes) +{ + // The plane frame maps the instance normal to +Z, so the normal's z in instance coordinates is element (2, 2). + auto downward = [](const LayOnFacePlane &plane) { return -plane.to_plane_frame.linear()(2, 2); }; + // Areas are floats from rounded geometry, so faces within 0.1% count as equal. + int best = -1; + for (size_t i = 0; i < planes.size() && planes[i].area >= planes.front().area * (1. - 1e-3); ++i) + if (best < 0 || downward(planes[i]) > downward(planes[best])) + best = int(i); + return best; +} + +int find_plane_by_normal(const std::vector &planes, const Vec3d &direction) +{ + const Vec3d dir = direction.normalized(); + int best = -1; + double best_dot = -2.; + for (size_t i = 0; i < planes.size(); ++i) + if (const double dot = planes[i].normal.dot(dir); dot > best_dot) { + best_dot = dot; + best = int(i); + } + return best; +} + +int find_plane_at_point(const std::vector &planes, const Transform3d &instance_matrix_no_offset, + const Vec3d &point, double tolerance) +{ + const Vec3d instance_point = instance_matrix_no_offset * point; + for (size_t i = 0; i < planes.size(); ++i) { + const Pointf3s &outline = planes[i].outline; + if (outline.empty()) + continue; + const Vec3d p = planes[i].to_plane_frame * instance_point; + // Facets with slightly different normals are merged into one face, so the outline is not exactly flat. + const double z = std::accumulate(outline.begin(), outline.end(), 0., [](double sum, const Vec3d &v) { return sum + v.z(); }) / double(outline.size()); + if (std::abs(p.z() - z) > tolerance) + continue; + // The outline is convex: the point is inside when it is not on both sides of its edges. + bool left = false, right = false; + for (size_t j = 0; j < outline.size(); ++j) { + const Vec2d a = outline[j].head<2>(); + const Vec2d edge = outline[(j + 1) % outline.size()].head<2>() - a; + const double len = edge.norm(); + if (len < EPSILON) + continue; + const double side = cross2(edge, Vec2d(p.head<2>() - a)) / len; + left |= side > tolerance; + right |= side < -tolerance; + } + if (!(left && right)) + return int(i); + } + return -1; +} + +void lay_on_face(ModelObject &object, size_t instance_idx, const Vec3d &normal) +{ + ModelInstance &instance = *object.instances[instance_idx]; + const Geometry::Transformation &trafo = instance.get_transformation(); + // Same rotation as Selection::flattening_rotate(): turn the transformed normal to point down. + const Vec3d tnormal = trafo.get_matrix().matrix().block(0, 0, 3, 3).inverse().transpose() * normal; + const Transform3d rotation = Transform3d(Eigen::Quaterniond().setFromTwoVectors(tnormal, -Vec3d::UnitZ())); + instance.set_transformation(Geometry::Transformation(trafo.get_offset_matrix() * rotation * trafo.get_matrix_no_offset())); + // Drop this instance only: ensure_on_bed() skips instances without auto_drop and measures the first instance. + object.translate_instance(instance_idx, -object.instance_bounding_box(instance_idx).min.z() * Vec3d::UnitZ()); +} + +} // namespace Slic3r diff --git a/src/libslic3r/LayOnFace.hpp b/src/libslic3r/LayOnFace.hpp new file mode 100644 index 0000000000..1a5e92a15e --- /dev/null +++ b/src/libslic3r/LayOnFace.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include "Point.hpp" + +#include + +namespace Slic3r { + +class ModelObject; + +// A face of an object's convex hull that the object can rest on. These are the faces the +// "Lay on Face" gizmo offers and the ones the CLI --ground-* options choose from. +// +// Frames: "object" coordinates have the volume transformations applied but not the instance +// transformation. "Instance" coordinates additionally have the instance rotation, scale and +// mirror applied, but not its offset. +struct LayOnFacePlane +{ + Vec3d normal; // outward unit normal, object coordinates + Vec3d center; // centroid of the outline, object coordinates; on the face's mean plane + float area; // mm², instance coordinates + Pointf3s outline; // convex outline in the plane frame, where the face is horizontal + Transform3d to_plane_frame; // rotation from instance coordinates to the plane frame +}; + +// Candidate faces of the object's model parts, largest first. The instance transformation +// (without offset) is applied before measuring, so faces too small to rest on are dropped +// by their printed size: under 5 mm², a side under 1 mm, or an inner angle under 1°. +std::vector lay_on_face_planes(const ModelObject &object, const Transform3d &instance_matrix_no_offset); + +// Index of the largest plane, or -1 if `planes` is empty. Of planes with the same area, such as +// the top and bottom of a box, the one already facing down the most wins, so flat parts stay put. +int find_largest_plane(const std::vector &planes); + +// Index of the plane whose normal is closest to `direction` (object coordinates), +// or -1 if `planes` is empty. +int find_plane_by_normal(const std::vector &planes, const Vec3d &direction); + +// Index of the plane whose face contains `point` (object coordinates) within `tolerance` mm, or -1 +// if there is none. `instance_matrix_no_offset` is the one the planes were computed with. +int find_plane_at_point(const std::vector &planes, const Transform3d &instance_matrix_no_offset, + const Vec3d &point, double tolerance); + +// Rotates the instance so that `normal` (object coordinates) points down, the same rotation as +// the gizmo applies, then drops the instance so its lowest point is at z = 0. +void lay_on_face(ModelObject &object, size_t instance_idx, const Vec3d &normal); + +} // namespace Slic3r diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index c334c1bca1..77aaeb694a 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -11956,6 +11956,13 @@ CLIActionsConfigDef::CLIActionsConfigDef() def->tooltip = L("This outputs the model\u2019s information."); def->set_default_value(new ConfigOptionBool(false)); + def = this->add("inspect_mesh", coBool); + def->label = L("Inspect mesh (JSON to stdout)"); + def->tooltip = L("Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the " + "convex hull faces it can be laid on, with their normals, areas and centers. These are the faces " + "the --ground-* options choose from. Machine-readable alternative to --info."); + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("export_settings", coString); def->label = L("Export Settings"); def->tooltip = L("This exports settings to a file. Use - to write them to stdout."); @@ -12075,6 +12082,34 @@ CLITransformConfigDef::CLITransformConfigDef() def->sidetext = u8"°"; // degrees, don't need translation def->set_default_value(new ConfigOptionFloat(0)); + // The --ground-* options choose from the faces the "Lay on Face" gizmo offers. Like the other + // transforms they run in command-line order, so they see the rotations given before them. + def = this->add("ground_largest_face", coBool); + def->label = L("Ground largest face"); + def->tooltip = L("Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large " + "faces, the one already facing down is kept. Objects without a face large enough to rest on are left " + "as they are. Transforms run in command-line order, so rotations given before this option are respected. " + "--orient 1 runs after all transforms and replaces the orientation."); + def->set_default_value(new ConfigOptionBool(false)); + + def = this->add("ground_face_normal", coString); + def->label = L("Ground face by normal"); + def->tooltip = L("Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ " + "and drop it onto the bed. The direction is in object coordinates, which include the rotations given " + "before this option and match the plate axes unless the input file rotates the object. For example, " + "1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation."); + def->cli_params = "NX,NY,NZ"; + def->set_default_value(new ConfigOptionString("")); + + def = this->add("ground_face_point", coString); + def->label = L("Ground face at point"); + def->tooltip = L("Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. " + "The point is in object coordinates, which include the rotations given before this option; " + "--inspect-mesh reports face centers in them. Objects without such a face are left as they are, and " + "the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation."); + def->cli_params = "X,Y,Z"; + def->set_default_value(new ConfigOptionString("")); + def = this->add("scale", coFloat); def->label = L("Scale"); def->tooltip = L("Scale the model by a float factor."); diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 691675a452..ca26b80da2 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -680,6 +680,8 @@ set(SLIC3R_GUI_SOURCES Utils/bambu_networking.hpp Utils/Bonjour.cpp Utils/Bonjour.hpp + Utils/MeshInspect.cpp + Utils/MeshInspect.hpp Utils/CalibUtils.cpp Utils/CalibUtils.hpp Utils/ColorSpaceConvert.cpp diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp index a040d96bd5..e9d8598423 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -4,7 +4,7 @@ #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GLGizmosCommon.hpp" -#include "libslic3r/Geometry/ConvexHull.hpp" +#include "libslic3r/LayOnFace.hpp" #include "libslic3r/Model.hpp" #include @@ -45,10 +45,10 @@ void GLGizmoFlatten::data_changed(bool is_serializing) const ModelObject *model_object = nullptr; int instance_id = -1; if (selection.is_single_full_instance() || - selection.is_from_single_object() ) { + selection.is_from_single_object() ) { model_object = selection.get_model()->objects[selection.get_object_idx()]; instance_id = selection.get_instance_idx(); - } + } set_flattening_data(model_object, instance_id); } @@ -86,7 +86,7 @@ void GLGizmoFlatten::on_render() GLShaderProgram* shader = wxGetApp().get_shader("flat"); if (shader == nullptr) return; - + shader->start_using(); glsafe(::glClear(GL_DEPTH_BUFFER_BIT)); @@ -152,134 +152,18 @@ void GLGizmoFlatten::set_flattening_data(const ModelObject* model_object, int in void GLGizmoFlatten::update_planes() { const ModelObject* mo = m_c->selection_info()->model_object(); - TriangleMesh ch; - for (const ModelVolume* vol : mo->volumes) { - if (vol->type() != ModelVolumeType::MODEL_PART) - continue; - TriangleMesh vol_ch = vol->get_convex_hull(); - vol_ch.transform(vol->get_matrix()); - ch.merge(vol_ch); - } - ch = ch.convex_hull_3d(); + const Transform3d &inst_matrix = mo->instances.front()->get_matrix_no_offset(); + // The candidate faces are shared with the CLI --ground-* options, the rest only prepares them for rendering. + std::vector planes = lay_on_face_planes(*mo, inst_matrix); m_planes.clear(); on_unregister_raycasters_for_picking(); - const Transform3d &inst_matrix = mo->instances.front()->get_matrix_no_offset(); - // Following constants are used for discarding too small polygons. - const float minimal_area = 5.f; // in square mm (world coordinates) - const float minimal_side = 1.f; // mm - const float minimal_angle = 1.f; // degree, initial value was 10, but cause bugs + // We only keep the 254 largest planes (because of the picking pass limitations): + planes.resize(std::min((int)planes.size(), 254)); - // Now we'll go through all the facets and append Points of facets sharing the same normal. - // This part is still performed in mesh coordinate system. - const int num_of_facets = ch.facets_count(); - const std::vector face_normals = its_face_normals(ch.its); - const std::vector face_neighbors = its_face_neighbors(ch.its); - std::vector facet_queue(num_of_facets, 0); - std::vector facet_visited(num_of_facets, false); - int facet_queue_cnt = 0; - const stl_normal* normal_ptr = nullptr; - int facet_idx = 0; - while (1) { - // Find next unvisited triangle: - for (; facet_idx < num_of_facets; ++ facet_idx) - if (!facet_visited[facet_idx]) { - facet_queue[facet_queue_cnt ++] = facet_idx; - facet_visited[facet_idx] = true; - normal_ptr = &face_normals[facet_idx]; - m_planes.emplace_back(); - break; - } - if (facet_idx == num_of_facets) - break; // Everything was visited already - - while (facet_queue_cnt > 0) { - int facet_idx = facet_queue[-- facet_queue_cnt]; - const stl_normal& this_normal = face_normals[facet_idx]; - if (std::abs(this_normal(0) - (*normal_ptr)(0)) < 0.001 && std::abs(this_normal(1) - (*normal_ptr)(1)) < 0.001 && std::abs(this_normal(2) - (*normal_ptr)(2)) < 0.001) { - const Vec3i32 face = ch.its.indices[facet_idx]; - for (int j=0; j<3; ++j) - m_planes.back().vertices.emplace_back(ch.its.vertices[face[j]].cast()); - - facet_visited[facet_idx] = true; - for (int j = 0; j < 3; ++ j) - if (int neighbor_idx = face_neighbors[facet_idx][j]; neighbor_idx >= 0 && ! facet_visited[neighbor_idx]) - facet_queue[facet_queue_cnt ++] = neighbor_idx; - } - } - m_planes.back().normal = normal_ptr->cast(); - - Pointf3s& verts = m_planes.back().vertices; - // Now we'll transform all the points into world coordinates, so that the areas, angles and distances - // make real sense. - verts = transform(verts, inst_matrix); - - // if this is a just a very small triangle, remove it to speed up further calculations (it would be rejected later anyway): - if (verts.size() == 3 && - ((verts[0] - verts[1]).norm() < minimal_side - || (verts[0] - verts[2]).norm() < minimal_side - || (verts[1] - verts[2]).norm() < minimal_side)) - m_planes.pop_back(); - } - - // Let's prepare transformation of the normal vector from mesh to instance coordinates. - const Matrix3d normal_matrix = inst_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); - - // Now we'll go through all the polygons, transform the points into xy plane to process them: - for (unsigned int polygon_id=0; polygon_id < m_planes.size(); ++polygon_id) { - Pointf3s& polygon = m_planes[polygon_id].vertices; - const Vec3d& normal = m_planes[polygon_id].normal; - - // transform the normal according to the instance matrix: - const Vec3d normal_transformed = normal_matrix * normal; - - // We are going to rotate about z and y to flatten the plane - Eigen::Quaterniond q; - Transform3d m = Transform3d::Identity(); - m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(normal_transformed, Vec3d::UnitZ()).toRotationMatrix(); - polygon = transform(polygon, m); - - // Now to remove the inner points. We'll misuse Geometry::convex_hull for that, but since - // it works in fixed point representation, we will rescale the polygon to avoid overflows. - // And yes, it is a nasty thing to do. Whoever has time is free to refactor. - Vec3d bb_size = BoundingBoxf3(polygon).size(); - float sf = std::min(1./bb_size(0), 1./bb_size(1)); - Transform3d tr = Geometry::scale_transform({ sf, sf, 1.f }); - polygon = transform(polygon, tr); - polygon = Slic3r::Geometry::convex_hull(polygon); - polygon = transform(polygon, tr.inverse()); - - // Calculate area of the polygons and discard ones that are too small - float& area = m_planes[polygon_id].area; - area = 0.f; - for (unsigned int i = 0; i < polygon.size(); i++) // Shoelace formula - area += polygon[i](0)*polygon[i + 1 < polygon.size() ? i + 1 : 0](1) - polygon[i + 1 < polygon.size() ? i + 1 : 0](0)*polygon[i](1); - area = 0.5f * std::abs(area); - - bool discard = false; - if (area < minimal_area) - discard = true; - else { - // We also check the inner angles and discard polygons with angles smaller than the following threshold - const double angle_threshold = ::cos(minimal_angle * (double)PI / 180.0); - - for (unsigned int i = 0; i < polygon.size(); ++i) { - const Vec3d& prec = polygon[(i == 0) ? polygon.size() - 1 : i - 1]; - const Vec3d& curr = polygon[i]; - const Vec3d& next = polygon[(i == polygon.size() - 1) ? 0 : i + 1]; - - if ((prec - curr).normalized().dot((next - curr).normalized()) > angle_threshold) { - discard = true; - break; - } - } - } - - if (discard) { - m_planes[polygon_id--] = std::move(m_planes.back()); - m_planes.pop_back(); - continue; - } + for (LayOnFacePlane& plane : planes) { + // The outline is convex and lies in the plane frame, where the plane is horizontal. + Pointf3s& polygon = plane.outline; // We will shrink the polygon a little bit so it does not touch the object edges: Vec3d centroid = std::accumulate(polygon.begin(), polygon.end(), Vec3d(0.0, 0.0, 0.0)); @@ -332,13 +216,12 @@ void GLGizmoFlatten::update_planes() b(2) += 0.1f; // Transform back to 3D (and also back to mesh coordinates) - polygon = transform(polygon, inst_matrix.inverse() * m.inverse()); + m_planes.emplace_back(); + m_planes.back().normal = plane.normal; + m_planes.back().area = plane.area; + m_planes.back().vertices = transform(polygon, inst_matrix.inverse() * plane.to_plane_frame.inverse()); } - // We'll sort the planes by area and only keep the 254 largest ones (because of the picking pass limitations): - std::sort(m_planes.rbegin(), m_planes.rend(), [](const PlaneData& a, const PlaneData& b) { return a.area < b.area; }); - m_planes.resize(std::min((int)m_planes.size(), 254)); - // Planes are finished - let's save what we calculated it from: m_volumes_matrices.clear(); m_volumes_types.clear(); diff --git a/src/slic3r/Utils/MeshInspect.cpp b/src/slic3r/Utils/MeshInspect.cpp new file mode 100644 index 0000000000..0a60358278 --- /dev/null +++ b/src/slic3r/Utils/MeshInspect.cpp @@ -0,0 +1,61 @@ +#include "MeshInspect.hpp" + +#include "libslic3r/LayOnFace.hpp" +#include "libslic3r/Model.hpp" + +#include + +#include +#include +#include + +namespace Slic3r { +namespace MeshInspect { + +using json = nlohmann::json; + +static json to_json(const Vec3d &v) { return json::array({ v.x(), v.y(), v.z() }); } + +static json to_json(const BoundingBoxf3 &bb) +{ + return { { "min", to_json(bb.min) }, { "max", to_json(bb.max) }, { "size", to_json(bb.size()) } }; +} + +void inspect_to_json(const Model &model, const std::vector &source_paths, std::ostream &out, size_t max_planes) +{ + json objects = json::array(); + for (const ModelObject *mo : model.objects) { + json obj = { { "name", mo->name }, + { "triangle_count", mo->facets_count() }, + { "instance_count", mo->instances.size() }, + { "bbox_object", to_json(mo->raw_mesh_bounding_box()) } }; + if (!mo->instances.empty()) { + const std::vector planes = lay_on_face_planes(*mo, mo->instances.front()->get_matrix_no_offset()); + json planes_json = json::array(); + for (size_t i = 0; i < std::min(planes.size(), max_planes); ++i) + planes_json.push_back({ { "normal", to_json(planes[i].normal) }, + { "area_mm2", std::round(double(planes[i].area) * 1000.) / 1000. }, + { "center", to_json(planes[i].center) } }); + obj["bbox_world"] = to_json(mo->instance_bounding_box(0)); + obj["instance_offset"] = to_json(mo->instances.front()->get_offset()); + obj["plane_count"] = planes.size(); + obj["planes"] = std::move(planes_json); + } + objects.push_back(std::move(obj)); + } + + const json root = { + { "sources", source_paths }, + { "note", "Lengths in mm. bbox_object and the plane normals and centers are in object coordinates: the parts as " + "currently transformed, without the instance transformation. --ground-face-normal and " + "--ground-face-point take values in these coordinates. area_mm2 uses instance 0's scale, " + "bbox_world is instance 0 on the plate." }, + { "objects", std::move(objects) }, + }; + // Object names and file paths are arbitrary bytes, and dump() throws on invalid UTF-8 by default. + // Replace such sequences with U+FFFD so the output is always valid JSON. + out << root.dump(2, ' ', false, json::error_handler_t::replace) << std::endl; +} + +} // namespace MeshInspect +} // namespace Slic3r diff --git a/src/slic3r/Utils/MeshInspect.hpp b/src/slic3r/Utils/MeshInspect.hpp new file mode 100644 index 0000000000..0f53b41c4a --- /dev/null +++ b/src/slic3r/Utils/MeshInspect.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include +#include + +namespace Slic3r { + +class Model; + +namespace MeshInspect { + +// Writes the --inspect-mesh JSON for `model` to `out`: per object its bounding boxes and the faces +// it can be laid on, taken from lay_on_face_planes() so they are the faces the --ground-* options +// choose from, in the frame those options take. At most `max_planes` faces are listed per object, +// largest first. `source_paths` lists every input file; the CLI merges them into one model. +void inspect_to_json(const Model &model, const std::vector &source_paths, std::ostream &out, size_t max_planes = 8); + +} // namespace MeshInspect +} // namespace Slic3r diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index bc5a0a1e80..b3c74335cc 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -37,6 +37,7 @@ add_executable(${_TEST_NAME}_tests test_triangle_selector.cpp test_meshboolean.cpp test_marchingsquares.cpp + test_lay_on_face.cpp test_model.cpp test_utils.cpp test_timeutils.cpp diff --git a/tests/libslic3r/test_lay_on_face.cpp b/tests/libslic3r/test_lay_on_face.cpp new file mode 100644 index 0000000000..60226a9aab --- /dev/null +++ b/tests/libslic3r/test_lay_on_face.cpp @@ -0,0 +1,205 @@ +#include + +#include "libslic3r/LayOnFace.hpp" +#include "libslic3r/Model.hpp" + +using namespace Slic3r; +using Catch::Matchers::WithinAbs; + +namespace { + +// Adds a box part spanning `origin` to `origin + size`, in object coordinates. +void add_box(ModelObject &object, const Vec3d &size, const Vec3d &origin = Vec3d::Zero()) +{ + TriangleMesh mesh = make_cube(size.x(), size.y(), size.z()); + mesh.translate(origin.cast()); + object.add_volume(std::move(mesh), ModelVolumeType::MODEL_PART, false); +} + +ModelObject &add_box_object(Model &model, const Vec3d &size) +{ + ModelObject *object = model.add_object(); + add_box(*object, size); + object->add_instance(); + return *object; +} + +// A 30 x 30 x 2 plate with three 1 mm thick, 20 mm tall ribs along Y. The rib sides facing -X add up +// to more area than the plate's bottom, but only the bottom is a face of the convex hull. +ModelObject &add_ribbed_plate(Model &model) +{ + ModelObject *object = model.add_object(); + add_box(*object, { 30, 30, 2 }); + for (double x : { 5., 14.5, 24. }) + add_box(*object, { 1, 30, 20 }, { x, 0, 2 }); + object->add_instance(); + return *object; +} + +std::vector instance_planes(const ModelObject &object) +{ + return lay_on_face_planes(object, object.instances.front()->get_matrix_no_offset()); +} + +void lay_on_largest_face(ModelObject &object) +{ + const std::vector planes = instance_planes(object); + const int idx = find_largest_plane(planes); + REQUIRE(idx >= 0); + lay_on_face(object, 0, planes[idx].normal); +} + +void check_size(const ModelObject &object, const Vec3d &expected) +{ + const Vec3d size = object.instance_bounding_box(0).size(); + CHECK_THAT(size.x(), WithinAbs(expected.x(), 1e-3)); + CHECK_THAT(size.y(), WithinAbs(expected.y(), 1e-3)); + CHECK_THAT(size.z(), WithinAbs(expected.z(), 1e-3)); +} + +void check_on_bed(const ModelObject &object) { CHECK_THAT(object.instance_bounding_box(0).min.z(), WithinAbs(0., 1e-3)); } + +} // namespace + +TEST_CASE("A tilted box is laid on its largest face and dropped onto the bed", "[LayOnFace]") +{ + Model model; + ModelObject &box = add_box_object(model, { 40, 20, 10 }); // the 40 x 20 faces are the largest + box.instances.front()->set_rotation({ 0.3, 0.5, 0.2 }); + box.instances.front()->set_offset({ 0, 0, 50 }); + REQUIRE(box.instance_bounding_box(0).size().z() > 11.); + + const std::vector planes = instance_planes(box); + REQUIRE(planes.size() == 6); + CHECK_THAT(planes.front().area, WithinAbs(40. * 20., 1e-2)); + + lay_on_largest_face(box); + CHECK_THAT(box.instance_bounding_box(0).size().z(), WithinAbs(10., 1e-3)); + check_on_bed(box); +} + +TEST_CASE("A box lying on one of its equally large faces is not flipped", "[LayOnFace]") +{ + // A half turn about X puts the other large face down, so the two cases expect different faces + // and neither can pass on the order in which the hull lists them. + const double rotation_x = GENERATE(0., PI); + Model model; + ModelObject &box = add_box_object(model, { 40, 20, 10 }); // the bottom and top are both 40 x 20 + box.instances.front()->set_rotation({ rotation_x, 0, 0 }); + const Transform3d before = box.instances.front()->get_matrix_no_offset(); + + const std::vector planes = instance_planes(box); + const int idx = find_largest_plane(planes); + REQUIRE(idx >= 0); + // The face down on the plate is the object's -Z face, or its +Z face after the half turn. + CHECK_THAT(planes[idx].normal.z(), WithinAbs(rotation_x == 0. ? -1. : 1., 1e-6)); + + lay_on_face(box, 0, planes[idx].normal); + CHECK(box.instances.front()->get_matrix_no_offset().isApprox(before, 1e-9)); +} + +TEST_CASE("Faces are chosen from the orientation left by an earlier part rotation", "[LayOnFace]") +{ + Model model; + ModelObject &box = add_box_object(model, { 40, 20, 10 }); + box.rotate(PI / 2., X); // what --rotate-x 90 does: rotates the parts, not the instance + check_size(box, { 40, 10, 20 }); + + SECTION("the largest face") { + lay_on_largest_face(box); + check_size(box, { 40, 20, 10 }); + check_on_bed(box); + } + + SECTION("the face pointing along +X") { + const std::vector planes = instance_planes(box); + const int idx = find_plane_by_normal(planes, { 1, 0, 0 }); + REQUIRE(idx >= 0); + CHECK_THAT(planes[idx].normal.x(), WithinAbs(1., 1e-6)); + lay_on_face(box, 0, planes[idx].normal); + check_size(box, { 20, 10, 40 }); + check_on_bed(box); + } +} + +TEST_CASE("Objects are laid on their own faces independently", "[LayOnFace]") +{ + Model model; + // Standing on end through its instance rotation. + ModelObject &standing = add_box_object(model, { 40, 20, 10 }); + standing.instances.front()->set_rotation({ 0, PI / 2., 0 }); + // Standing on edge through a part rotation, lifted above the bed. + ModelObject &on_edge = add_box_object(model, { 30, 20, 5 }); + on_edge.rotate(PI / 2., X); + on_edge.instances.front()->set_offset({ 100, 0, 30 }); + check_size(standing, { 10, 20, 40 }); + check_size(on_edge, { 30, 5, 20 }); + + for (ModelObject *object : model.objects) + lay_on_largest_face(*object); + + check_size(standing, { 40, 20, 10 }); + check_on_bed(standing); + check_size(on_edge, { 30, 20, 5 }); + check_on_bed(on_edge); +} + +TEST_CASE("A part rests on its largest hull face even when parallel inner faces add up to more area", "[LayOnFace]") +{ + Model model; + ModelObject &plate = add_ribbed_plate(model); + + double area_facing_minus_x = 0.; + for (const ModelVolume *volume : plate.volumes) { + const indexed_triangle_set &its = volume->mesh().its; + for (const Vec3i32 &face : its.indices) { + const Vec3d cross = (its.vertices[face[1]] - its.vertices[face[0]]).cast().cross( + (its.vertices[face[2]] - its.vertices[face[0]]).cast()); + if (cross.normalized().x() < -0.999) + area_facing_minus_x += 0.5 * cross.norm(); + } + } + // Summing triangle area per normal would pick a rib side over the 900 mm² bottom. + REQUIRE(area_facing_minus_x > 30. * 30.); + + plate.instances.front()->set_rotation({ 0, PI / 2., 0 }); // stand the plate on its side + check_size(plate, { 22, 30, 30 }); + + const std::vector planes = instance_planes(plate); + const int idx = find_largest_plane(planes); + REQUIRE(idx >= 0); + CHECK_THAT(planes[idx].area, WithinAbs(30. * 30., 1e-2)); + CHECK_THAT(planes[idx].normal.z(), WithinAbs(-1., 1e-6)); + + lay_on_face(plate, 0, planes[idx].normal); + check_size(plate, { 30, 30, 22 }); + check_on_bed(plate); +} + +TEST_CASE("Faces are selected in object coordinates whatever the instance rotation", "[LayOnFace]") +{ + Model model; + ModelObject &plate = add_ribbed_plate(model); + plate.instances.front()->set_rotation({ 0, 0, PI / 2. }); + const Transform3d instance_matrix = plate.instances.front()->get_matrix_no_offset(); + const std::vector planes = lay_on_face_planes(plate, instance_matrix); + REQUIRE_FALSE(planes.empty()); + + // Every face center, as --inspect-mesh reports it, selects its own face. + for (size_t i = 0; i < planes.size(); ++i) + CHECK(find_plane_at_point(planes, instance_matrix, planes[i].center, 0.01) == int(i)); + + const int bottom = find_plane_at_point(planes, instance_matrix, { 15, 15, 0 }, 0.01); + REQUIRE(bottom >= 0); + CHECK_THAT(planes[bottom].normal.z(), WithinAbs(-1., 1e-6)); + CHECK(find_plane_by_normal(planes, { 0, 0, -1 }) == bottom); + // Above the bottom plane, and on a rib side that lies inside the hull. + CHECK(find_plane_at_point(planes, instance_matrix, { 15, 15, 0.5 }, 0.01) == -1); + CHECK(find_plane_at_point(planes, instance_matrix, { 14.5, 15, 12 }, 0.01) == -1); +} + +TEST_CASE("A part too small to rest on offers no faces", "[LayOnFace]") +{ + Model model; + CHECK(instance_planes(add_box_object(model, { 2, 2, 2 })).empty()); // every face is 4 mm², under the 5 mm² minimum +} From ade9e77b6bc0dc3f234b2504fd22af5ed434a18e Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 16 Sep 2026 19:53:23 +0800 Subject: [PATCH 149/162] Run every profile maintenance job from one tool (#15726) * Run every profile maintenance job from one tool orca_id_tool.py becomes orca_profile_tool.py, and orca_extra_profile_check.py and orca_filament_lib.py fold into it as subcommands: check, generate-id, fix, trim, update-index and update-snapshot. The three scripts already overlapped -- the checker imported half of its rules from the id tool, which in turn kept a copy-pasted set of output helpers to avoid the resulting import cycle -- while disagreeing on how a vendor is enumerated, how a JSON file is read and what the exit code means. One file settles all three. check, normalize, trim and update-index reproduce their predecessors exactly; normalize and update-index were diffed byte-for-byte against the old scripts over a copy of the whole tree. Deliberate changes: the compatible-printers check no longer switches itself off when --check-materials is passed, an error exits 1 rather than -1, update-index honours --profile-type and reports a profile it cannot place instead of dropping it from the index, fix and update-index gained --dry-run, trim keeps an unindexed file some surviving profile still inherits from, and vendors are enumerated as directories with an index -- which is why blacklist.json, a data file that an unscoped index rebuild once wrote four empty list sections into, loses them here and will not collect them again. The dead rename_filament_system() helper is gone. The suite under scripts/tests now covers the maintenance commands too, and CI runs it; nothing there ran in CI before. No shipped profile data changes apart from those four keys. * update vendor index files with "python3 ./scripts/orca_profile_tool.py update-index" and "python3 ./scripts/orca_profile_tool.py normalize" --- .github/workflows/check_profiles.yml | 37 +- docs/HLSD/filament_id.md | 149 +- resources/profiles/Anycubic.json | 840 ++- resources/profiles/BBL.json | 2922 +++++----- .../filament/addnorth/addnorth ABS rABS.json | 3 +- .../addnorth/addnorth PA Adura FDA.json | 3 +- .../filament/addnorth/addnorth PA Adura.json | 3 +- .../addnorth/addnorth PA-CF Adura X.json | 3 +- .../addnorth/addnorth PA6 Addlantis.json | 3 +- .../addnorth/addnorth PC BLend HT LCF.json | 3 +- .../filament/addnorth/addnorth PETG Base.json | 3 +- .../filament/addnorth/addnorth PETG ESD.json | 3 +- .../addnorth/addnorth PETG Economy.json | 3 +- .../addnorth/addnorth PETG Flame v0.json | 3 +- .../addnorth/addnorth PETG PRO Matte.json | 3 +- .../addnorth/addnorth PETG rPETG Matte.json | 3 +- .../addnorth/addnorth PETG-CF Rigid X.json | 3 +- .../filament/addnorth/addnorth PLA E-PLA.json | 3 +- .../addnorth/addnorth PLA Economy.json | 3 +- .../addnorth PLA HT-PLA PRO Matte.json | 3 +- .../addnorth/addnorth PLA Premium Silk.json | 3 +- .../addnorth/addnorth PLA Textura.json | 3 +- .../filament/addnorth/addnorth PLA Wood.json | 3 +- .../addnorth PLA X-PLA High Speed.json | 3 +- .../filament/addnorth/addnorth PLA X-PLA.json | 3 +- .../addnorth/addnorth PLA rPLA RE-ADD.json | 3 +- .../addnorth PLA-CF Carbon Fiber.json | 3 +- .../addnorth/addnorth PVDF Adamant S1.json | 3 +- .../addnorth/addnorth TPU EasyFlex.json | 3 +- .../addnorth/addnorth TPU Pro Matte 85A.json | 3 +- .../addnorth/addnorth TPU Pro Matte 95A.json | 3 +- resources/profiles/Chuanying.json | 8 +- resources/profiles/CoLiDo.json | 24 +- resources/profiles/Creality.json | 3456 +++++------ .../filament/CR-ABS @Ender-5 Max-all.json | 160 - .../filament/CR-Nylon @Ender-5 Max-all.json | 185 - .../filament/CR-PETG @Ender-5 Max-all.json | 163 - .../filament/CR-PLA @Ender-5 Max-all.json | 157 - .../filament/CR-Silk @Ender-5 Max-all.json | 157 - .../Generic ABS @Ender-5 Max-all.json | 163 - .../Generic ASA @Ender-5 Max-all.json | 175 - .../Generic PETG @Ender-5 Max-all.json | 163 - .../Generic PLA @Ender-5 Max-all.json | 161 - .../Generic PLA-CF @Ender-5 Max-all.json | 161 - .../Generic PLA-Silk @Ender-5 Max-all.json | 155 - .../Generic TPU @Ender-5 Max-all.json | 166 - .../filament/HP-ASA @Ender-5 Max-all.json | 175 - .../filament/HP-TPU @Ender-5 Max-all.json | 168 - .../filament/Hyper ABS @Ender-5 Max-all.json | 166 - .../filament/Hyper PETG @Ender-5 Max-all.json | 163 - .../filament/Hyper PLA @Ender-5 Max-all.json | 160 - .../Hyper PLA-CF @Ender-5 Max-all.json | 163 - resources/profiles/Elegoo.json | 5090 ++++++++--------- .../Elegoo/filament/fdm_filament_paht.json | 91 - ...30mm Standard @Elegoo Giga 0.6 nozzle.json | 3 +- .../process/fdm_process_elegoo_02010.json | 1 - resources/profiles/FLSun.json | 32 +- resources/profiles/Flashforge.json | 748 +-- resources/profiles/InfiMech.json | 6 +- .../machine/HSN/fdm_klipper_common.json | 201 - .../machine/HSN/fdm_machine_common.json | 197 - .../InfiMech/machine/fdm_klipper_common.json | 2 +- .../InfiMech/machine/fdm_machine_common.json | 2 +- resources/profiles/OrcaFilamentLibrary.json | 744 +-- resources/profiles/Phrozen.json | 2 +- .../Phrozen/machine/_fdm_machine_common.json | 139 - resources/profiles/Prusa.json | 672 +-- resources/profiles/Qidi.json | 2828 ++++----- resources/profiles/Ratrig.json | 60 +- resources/profiles/SeeMeCNC.json | 262 +- .../SeeMeCNC/filament/SeeMeCNC_ABS_0_4mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_ABS_0_5mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_ABS_0_7mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_ABS_1_0mm.json | 65 - .../filament/SeeMeCNC_PA_CF_0_4mm.json | 65 - .../filament/SeeMeCNC_PA_CF_0_5mm.json | 65 - .../filament/SeeMeCNC_PA_CF_0_7mm.json | 65 - .../filament/SeeMeCNC_PA_CF_1_0mm.json | 65 - .../filament/SeeMeCNC_PETG_0_4mm.json | 65 - .../filament/SeeMeCNC_PETG_0_5mm.json | 65 - .../filament/SeeMeCNC_PETG_0_7mm.json | 65 - .../filament/SeeMeCNC_PETG_1_0mm.json | 65 - .../filament/SeeMeCNC_PETG_CF_0_4mm.json | 65 - .../filament/SeeMeCNC_PETG_CF_0_5mm.json | 65 - .../filament/SeeMeCNC_PETG_CF_0_7mm.json | 65 - .../filament/SeeMeCNC_PETG_CF_1_0mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_PLA_0_4mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_PLA_0_5mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_PLA_0_7mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_PLA_1_0mm.json | 65 - .../SeeMeCNC/filament/SeeMeCNC_TPU_0_7mm.json | 51 - resources/profiles/Snapmaker.json | 704 +-- resources/profiles/Sovol.json | 156 +- resources/profiles/Tiertime.json | 72 +- resources/profiles/TwoTrees.json | 8 +- resources/profiles/blacklist.json | 6 +- resources/profiles/iQ.json | 24 +- resources/profiles/re3D.json | 396 +- scripts/check_profile.ps1 | 27 +- scripts/check_profile.sh | 28 +- scripts/orca_extra_profile_check.py | 660 --- scripts/orca_filament_lib.py | 310 - scripts/orca_id_tool.py | 1429 ----- scripts/orca_profile_tool.py | 2618 +++++++++ scripts/tests/test_filament_id.py | 166 +- scripts/tests/test_profile_tool.py | 854 +++ scripts/tests/test_setting_id.py | 14 +- scripts/update_bambu_filament_ids.py | 4 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Preset.hpp | 4 +- src/libslic3r/PresetBundle.cpp | 2 +- tests/libslic3r/test_preset_setting_id.cpp | 4 +- 112 files changed, 13257 insertions(+), 17140 deletions(-) delete mode 100644 resources/profiles/Creality/filament/CR-ABS @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/CR-Nylon @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/CR-PETG @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/CR-PLA @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/CR-Silk @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic ABS @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic ASA @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic PETG @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic PLA @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic PLA-CF @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic PLA-Silk @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Generic TPU @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/HP-ASA @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/HP-TPU @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Hyper ABS @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Hyper PETG @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Hyper PLA @Ender-5 Max-all.json delete mode 100644 resources/profiles/Creality/filament/Hyper PLA-CF @Ender-5 Max-all.json delete mode 100644 resources/profiles/Elegoo/filament/fdm_filament_paht.json delete mode 100644 resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json delete mode 100644 resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json delete mode 100644 resources/profiles/Phrozen/machine/_fdm_machine_common.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_4mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_5mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_7mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_1_0mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_4mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_5mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_7mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_1_0mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_4mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_5mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_7mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_1_0mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_4mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_5mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_7mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_1_0mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_4mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_5mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_7mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_1_0mm.json delete mode 100644 resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU_0_7mm.json delete mode 100644 scripts/orca_extra_profile_check.py delete mode 100644 scripts/orca_filament_lib.py delete mode 100755 scripts/orca_id_tool.py create mode 100755 scripts/orca_profile_tool.py create mode 100644 scripts/tests/test_profile_tool.py diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index b855d09da7..7e714e2def 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -9,8 +9,9 @@ on: - release/* paths: - 'resources/profiles/**' - # The extra JSON check also validates resources/printers/bambu_filament_ids.json, - # and lives in scripts/, so a PR touching only those must still run this workflow. + # orca_profile_tool.py also validates resources/printers/bambu_filament_ids.json, and + # both it and its tests live in scripts/, so a PR touching only those must still run + # this workflow. - 'resources/printers/**' - 'scripts/**' - ".github/workflows/check_profiles.yml" @@ -36,12 +37,23 @@ jobs: - name: Checkout repository uses: actions/checkout@v7 - - name: Run extra JSON check - id: extra_json_check + # Deliberately not continue-on-error, unlike every check below: if the tool itself is + # broken, nothing it then reports about the profiles is worth reading. + - name: Run the profile tool's own unit tests + run: python3 -m unittest discover -s scripts/tests -t scripts + + # What the validator below cannot see. It loads the tree the way the slicer does, so + # it never notices a profile no .json indexes, a preset name two files claim, + # an id that is not the mint of its own triple, or a file that normalize and + # update-index would still rewrite. + # The step id is the handle the PR comment and the failure gate below use; renaming it + # silently disables them. + - name: Check profiles (orca_profile_tool.py) + id: profile_tool continue-on-error: true run: | set +e - python3 ./scripts/orca_extra_profile_check.py 2>&1 | tee ${{ runner.temp }}/extra_json_check.log + python3 ./scripts/orca_profile_tool.py check 2>&1 | tee ${{ runner.temp }}/profile_tool.log exit ${PIPESTATUS[0]} # download @@ -186,7 +198,7 @@ jobs: echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt - name: Prepare comment artifact - if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} + if: ${{ always() && github.event_name == 'pull_request' && (steps.profile_tool.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | { # Marker matched by check_profiles_comment.yml to delete prior comments. @@ -194,11 +206,11 @@ jobs: echo "## :x: Profile Validation Errors" echo "" - if [ "${{ steps.extra_json_check.outcome }}" = "failure" ]; then - echo "### Extra JSON Check Failed" + if [ "${{ steps.profile_tool.outcome }}" = "failure" ]; then + echo "### Profile Check Failed (orca_profile_tool.py)" echo "" echo '```' - head -c 30000 ${{ runner.temp }}/extra_json_check.log || echo "No output captured" + head -c 30000 ${{ runner.temp }}/profile_tool.log || echo "No output captured" echo '```' echo "" fi @@ -240,7 +252,7 @@ jobs: fi echo "---" - echo "*Please fix the above errors and push a new commit.*" + echo '*Fix the errors above and push a new commit. To reproduce this run locally: `scripts/check_profile.sh`, or `scripts\check_profile.bat` on Windows.*' } > ${{ runner.temp }}/profile-check-results/pr_comment.md - name: Upload comment artifact @@ -252,7 +264,8 @@ jobs: retention-days: 1 - name: Fail if any check failed - if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} + if: ${{ always() && (steps.profile_tool.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | - echo "One or more profile checks failed. See above for details." + echo "One or more profile checks failed; see the step logs above." + echo 'Reproduce the whole run locally with scripts/check_profile.sh (scripts\check_profile.bat on Windows).' exit 1 diff --git a/docs/HLSD/filament_id.md b/docs/HLSD/filament_id.md index 0aaf845909..3f8827f720 100644 --- a/docs/HLSD/filament_id.md +++ b/docs/HLSD/filament_id.md @@ -9,7 +9,7 @@ OrcaFilamentLibrary (OFL), Qidi, or Snapmaker bundle. The granularity is the nam not the brand behind it: `AAA PLA Lite` and `AAA PLA Pro` are two filaments with two ids, not variants of one. -**How it is generated:** an id is computed, never invented. `scripts/orca_id_tool.py` +**How it is generated:** an id is computed, never invented. `scripts/orca_profile_tool.py` mints it as a deterministic hash of the product's identity — the triple `(filament_vendor, filament_type, filament name)`, where the filament name is the preset name with its `@...` variant suffix stripped — producing an 8-character `OF*` code that is the @@ -34,7 +34,7 @@ This page is the rule for authoring `filament_id` in system profiles > [!IMPORTANT] > **Never write a `filament_id` value by hand.** A new filament gets its id from -> `python scripts/orca_id_tool.py --generate`; one already in the tree has one — inherit it. +> `python scripts/orca_profile_tool.py generate-id`; one already in the tree has one — inherit it. ## The design, in two pieces @@ -160,8 +160,8 @@ key needed). Tuning a generic material → **join the OrcaFilamentLibrary filame different product by rule 5, so it then needs its own id. 5. **Ids follow the product identity.** The id is a pure function of the product triple `(filament_vendor, filament_type, filament name)`, so correcting any of them re-mints the id - **by design**, applied by `--generate` (preview with `--dry-run`, confine with `--vendor`) and - gated by the `--update-snapshot` diff; the exact sequence is in the FAQ. Nothing forwards + **by design**, applied by `generate-id` (preview with `--dry-run`, confine with `--vendor`) + and gated by the `update-snapshot` diff; the exact sequence is in the FAQ. Nothing forwards the old value, so anything outside the tree that stored it — a device tray, a calibration record, a saved project — falls back to matching by filament type until the user re-selects the filament. Re-mint deliberately, and only to fix a genuinely wrong identity. @@ -170,7 +170,7 @@ key needed). Tuning a generic material → **join the OrcaFilamentLibrary filame ## Minting — nobody invents ids New ids are deterministic, computed exactly like the `setting_id` precedent -(the `setting_id` half of `scripts/orca_id_tool.py`): +(the `setting_id` half of `scripts/orca_profile_tool.py generate-id`): ```text FILAMENT_ID_NAMESPACE = uuid5(setting-id NAMESPACE, "filament_id") @@ -199,10 +199,10 @@ purely through inheritance from the OFL preset. Nothing but the triple feeds the mint — not the rest of the tree, not the snapshot, not what another preset of the product happens to carry. Determined triple, determined id: one product carries one id and there is no second acceptable value for it, so any other value on a preset -is a mismatch `--check` reports and `--generate` pulls back. Two *different* products whose +is a mismatch `check` reports and `generate-id` pulls back. Two *different* products whose triples mint the same base62 value would be a collision (a roughly 36-bit id space against a -few thousand products); nothing salts past it: `--check` reports it naming both products, -`--generate` refuses to write it, and the remedy is a rename so their triples differ. Where +few thousand products); nothing salts past it: `check` reports it naming both products, +`generate-id` refuses to write it, and the remedy is a rename so their triples differ. Where two presets of one product would be AMS-ambiguous on a printer, the fix is likewise in the profiles — make their `compatible_printers` disjoint (structure rule 3), retire the redundant preset, or, if they really are different products, give them different names so their triples @@ -212,15 +212,14 @@ Workflow for a new filament: ```bash # 1. Author the filament with NO filament_id key anywhere. -python scripts/orca_id_tool.py --dry-run # 2. preview the ids — writes nothing -python scripts/orca_id_tool.py --generate # 3. apply them to the profile file(s) -python scripts/orca_id_tool.py --update-snapshot # 4. record the new claims in the snapshot -python scripts/orca_id_tool.py --check # 5. validate the filament_id state -python scripts/orca_extra_profile_check.py # 6. ...and everything else CI checks -# 7. Commit the profile edits together with scripts/filament_id_snapshot.json, for review. +python scripts/orca_profile_tool.py generate-id --dry-run # 2. preview the ids — writes nothing +python scripts/orca_profile_tool.py generate-id # 3. apply them to the profile file(s) +python scripts/orca_profile_tool.py update-snapshot # 4. record the new claims in the snapshot +python scripts/orca_profile_tool.py check # 5. validate — everything CI checks +# 6. Commit the profile edits together with scripts/filament_id_snapshot.json, for review. ``` -`--generate` makes every filament's id equal the mint of its own +`generate-id` makes every filament's id equal the mint of its own `(filament_vendor, filament_type, filament name)` triple: it inserts one where an instantiated filament resolves none, and re-derives one that does not match. A preset that *inherits* a mismatching id is the one case left to the author — check 3b names it, and the fix is to inherit @@ -232,60 +231,63 @@ and machine preset of every vendor except BBL, which keeps its authoritative `G* `setting_id` from base profiles, and fixes the misspelled `settings_id` key — dropped, or, for BBL, whose ids have no formula to fall back on, restored under the correct name. It is idempotent and byte-preserving (indentation, BOM, and line endings intact, every edited file re-parsed to fail -loudly), and a no-op on a tree that already passes `scripts/orca_extra_profile_check.py` — the -check CI runs over both id kinds, of which `--check` is the `filament_id` half. +loudly), and a no-op on a tree that already passes `check`. - `--filament-id` limits the run to `filament_id`. - `--setting-id` limits the run to `setting_id`. The two exclude each other; pass neither to write both. - `--vendor VENDOR` confines the run to that bundle; repeatable. The id is a function of the - triple alone, so a narrowed run writes exactly what a full one would; `--check` reports + triple alone, so a narrowed run writes exactly what a full one would; `check` reports whatever it left outside. -- `--dry-run` reports what `--generate` would do and writes nothing; with no mode of its own it - implies `--generate`, so `--dry-run --vendor ` previews just that bundle. +- `--dry-run` reports what the run would do and writes nothing, so + `generate-id --dry-run --vendor ` previews just that bundle. - `--profiles DIR` points the tooling at a different profile tree (default - `resources/profiles`). `--check` and `--update-snapshot` read and write the sanctioned state of + `resources/profiles`). `check` and `update-snapshot` read and write the sanctioned state of the tree they are given, so pointing them elsewhere needs `--snapshot PATH` for that tree too — `scripts/filament_id_snapshot.json` describes `resources/profiles` and no other tree. -**Identity fixes need no separate mode.** `--generate` re-derives an id that no longer matches its -triple exactly the way it fills in a missing one, so a rename or a `filament_vendor` / -`filament_type` correction is just: fix the config, run `--generate` (confine it with `--vendor`, -preview it with `--dry-run`), then `--update-snapshot` and review the diff. +The tool's other commands maintain the tree around the ids: `fix` normalises profile files, +`trim` drops files no `.json` list references, and `update-index` rebuilds those lists. +They do not touch ids; `--help` documents them. + +**Identity fixes need no separate command.** `generate-id` re-derives an id that no longer matches +its triple exactly the way it fills in a missing one, so a rename or a `filament_vendor` / +`filament_type` correction is just: fix the config, run `generate-id` (confine it with +`--vendor`, preview it with `--dry-run`), then `update-snapshot` and review the diff. If you skip the tooling, CI fails and prints the remedy: the expected id for your filament and -the instruction to run `python scripts/orca_id_tool.py --generate`; once the id is minted, the -snapshot checks likewise point at `--update-snapshot` and tell you to commit the resulting +the instruction to run `python scripts/orca_profile_tool.py generate-id`; once the id is minted, +the snapshot checks likewise point at `update-snapshot` and tell you to commit the resulting diff. -## Reserved namespaces — never mint or hand-write into +## Ids other systems compose -A **reserved namespace** is an id space no system profile may declare, because an external -catalog or a device protocol owns the values. None of them has an owning vendor: there is no -bundle — not even the one whose printers use the catalog — that may write one into a profile. +Every filament profile carries a minted id, with no exceptions and no spellings held back for +anyone. There is therefore no reserved namespace to respect and no bundle that owns one: an id +some other system composes for its own purposes is simply not the mint of a triple, so it +cannot be a system profile's `filament_id`, and the format check rejects it for that reason +alone — same error, same remedy, whoever wrote it. -| Space | Status | Rule | -| --- | --- | --- | -| `GF*` | Bambu AMS/RFID catalog | declarable by **nobody**, BBL included: Bambu's own ids live in the generated catalog map, never in a profile | -| `QD_*` | Qidi device protocol | declarable by **nobody**, Qidi included: the box composes these ids at runtime and they are not preset ids | -| `P` + 7 hex chars (case-insensitive), `"null"` | user-created custom filaments (`CreatePresetsDialog.cpp`) | never appears in system profiles | +Three such spaces exist around us, and are worth recognising so nobody mistakes one for an id +to copy into a profile: -The two device namespaces, in detail: - -- **Bambu (`GF*`).** Bambu's device/RFID/cloud catalog is external and opaque, which is a - reason to keep it out of the profiles rather than to let one bundle own it. Every BBL filament - mints an `OF` id from its triple like every other vendor's, and the correspondence to Bambu's - catalog ids lives in one generated file the app applies at the printer boundary — the next - section. Nothing under `resources/profiles/**` carries a `GF*` id today and nothing can be - exempted, so a `GF*` id appearing anywhere in the tree is a mistake, whoever wrote it. -- **Qidi (`QD_*`).** `QD_*` is a device-*protocol* namespace, not a preset id space: the - Qidi box path composes `QD___` ids at runtime (slot vendor and - type indices reported by the device, the series digit inferred client-side from the printer - model/name). Qidi presets carry ordinary minted `OF*` ids (generics share the OFL ids), so - a composed id matches no preset and the slot falls back to filament type; translating it to - the filament's id belongs in `QidiPrinterAgent`. The alternative — treating per-series - protocol ids as preset ids — would put one product under five ids (`QIDI PLA Rapido` would - be `QD_0_1_1` through `QD_4_1_1`), exactly the fragmentation the mint rule removes. +- **Bambu's `GF*` catalog.** Bambu's device / RFID / cloud catalog is external and opaque. Every + BBL filament mints an `OF` id from its triple like every other vendor's, and the + correspondence to Bambu's catalog ids lives in one generated file the app applies at the + printer boundary — the next section. Note that `GF` is a *prefix*, not a namespace the tree + avoids: BBL's authoritative `setting_id` values include `GF`-prefixed ones, and + `resources/profiles/blacklist.json` and `BBL/filament/filaments_color_codes.json` both + reference Bambu catalog ids by design. The rule is about `filament_id` and nothing else. +- **Qidi's `QD_*` protocol ids.** The Qidi box composes `QD___` at + runtime (slot vendor and type indices reported by the device, the series digit inferred + client-side from the printer model/name). Qidi presets carry ordinary minted `OF*` ids + (generics share the OFL ids), so a composed id matches no preset and the slot falls back to + filament type; translating it to the filament's id belongs in `QidiPrinterAgent`. Treating + per-series protocol ids as preset ids would put one product under five ids + (`QIDI PLA Rapido` would be `QD_0_1_1` through `QD_4_1_1`) — exactly the fragmentation the + mint rule removes. +- **`P` + 7 hex chars, and `"null"`.** What `CreatePresetsDialog.cpp` gives a filament a *user* + creates. Those are user presets, not system profiles, and the two never meet in the tree. ## The Bambu catalog map @@ -337,7 +339,7 @@ OrcaFilamentLibrary. **135 is the number to expect at every regeneration** — 1 one-off size of the transition and stopped being computable from the tree once the BBL bundle was re-minted, so do not "fix" the report to print it. -**Check 6** lives in `check_filament_ids`, so profile CI runs it alongside the other five. It +**Check 5** lives in `check_filament_ids`, so profile CI runs it alongside the other four. It holds the file to its contract: it parses, carries `source` / `bambustudio_commit` / `generated`, keys only `OF`-format ids, maps each Bambu id at most once, and — for every row whose key the tree actually claims — agrees with the tree on that id's `(vendor, type, name)` @@ -426,11 +428,11 @@ map would silently reproduce the bug. ## How CI enforces this Profile CI (`check_profiles.yml`) runs `check_filament_ids()` tree-wide via -`scripts/orca_extra_profile_check.py`. Its ground truth is +`scripts/orca_profile_tool.py check`. Its ground truth is **`scripts/filament_id_snapshot.json` — the sanctioned state**: the id state derived from the tree must equal the snapshot exactly, in both directions. Any change to the id landscape therefore surfaces as a diff to that file, and **that snapshot diff is what maintainers review -and gate in a PR**. Never edit the snapshot by hand — `--update-snapshot` regenerates it +and gate in a PR**. Never edit the snapshot by hand — `update-snapshot` regenerates it deterministically (running it twice changes nothing). The snapshot holds one map, `ids`: each entry is the product the id is minted from (`filament_vendor`, `filament_type`, `name`) and the `filaments` claiming it (`Vendor/Filament`), and it sanctions *state*, never exceptions: no check @@ -450,8 +452,6 @@ The checks, in brief: system filament must resolve an effective id at all (recall: an id-less one is a hard load error in C++ that discards the whole vendor bundle); and no two products mint one id (a base62 collision, resolved by renaming one of them). The errors print the expected id. -- **Reserved namespaces** — `GF*`, `QD_*`, `P<7-hex>` or `"null"` claimed by any vendor, - BBL and Qidi included. - **Triple integrity** — every declarer must resolve a non-empty `filament_vendor` and `filament_type` (generics use `"Generic"`), and all declarers of one filament within a bundle must agree on the triple. @@ -461,16 +461,15 @@ The checks, in brief: tree claims. See [The Bambu catalog map](#the-bambu-catalog-map); the remedy is always to regenerate, never to hand-edit. -A profile that declares a **reserved-namespace** id — `GF*`, `QD_*` or `P<7-hex>`, whatever -its vendor — cannot pass the format check, so `--update-snapshot` refuses to sanction it -rather than hide the mistake until CI. For a Bambu-cataloged product, the catalog map is where -the correspondence belongs. Any other new sharing via a *declared* id is caught by the identity -check; sharing through inheritance carries no declaration to check and surfaces only as a new -claim in the snapshot diff — which is exactly why that diff is the gate. +A profile that declares an id no triple mints — a Bambu catalog id, a composed Qidi one, a +hand-typed value, whatever its vendor — fails the format check. For a Bambu-cataloged product +the catalog map is where the correspondence belongs. New sharing via a *declared* id is caught +by the identity check; sharing through inheritance carries no declaration to check and surfaces +only as a new claim in the snapshot diff — which is exactly why that diff is the gate. -`orca_extra_profile_check.py` separately holds every declared id to the AMS 8-character limit, -tree-wide and for every vendor alike, scoped to the presets a vendor's index actually -references (a file the index never loads cannot break AMS matching). +The same `check` run holds every declared id to the AMS 8-character limit, tree-wide and for +every vendor alike, scoped to the presets a vendor's index actually references (a file the index +never loads cannot break AMS matching). Complementing the Python checks, CI also runs the C++ profile validator with `-f` (`check_filament_subtypes`): it loads the bundle exactly as the app does and flags any printer @@ -488,21 +487,21 @@ ambiguity check behind structure rule 3. `Generic PLA` base name, set `compatible_printers`; no id key needed. - **A branded filament that borrows a generic's settings?** Fine — inherit `Generic X @System` (or any real filament) for the settings and declare the id of your own filament; run - `python scripts/orca_id_tool.py --generate` to mint it. Inheritance never changes the id. + `python scripts/orca_profile_tool.py generate-id` to mint it. Inheritance never changes the id. - **I need to fix a filament's `filament_vendor` or `filament_type`.** Fix the config, run - `--generate --vendor ` (preview with `--dry-run`), then `--update-snapshot`, and commit + `generate-id --vendor ` (preview with `--dry-run`), then `update-snapshot`, and commit the profile and snapshot diffs together. The id re-derives from the corrected identity, and nothing forwards the old value, so a tray or record still holding it falls back to matching by filament type. - **I need to rename a filament.** Rename the presets (adding `renamed_from`, which keeps the - preset *name* resolving), then `--generate --vendor ` (preview with `--dry-run`), then - `--update-snapshot`. The id follows the new filament name; as with any identity fix, the old id + preset *name* resolving), then `generate-id --vendor ` (preview with `--dry-run`), then + `update-snapshot`. The id follows the new filament name; as with any identity fix, the old id is not forwarded. -- **Can I reuse a `QD_*` id for a Qidi profile?** No — nobody can. It is the device protocol's - own id space: the box composes those values at runtime and no preset carries one. Author - Qidi filaments like any other vendor's. -- **CI says my filament needs an id.** Run `python scripts/orca_id_tool.py --generate`, then - `--update-snapshot`, and commit both diffs. Do not type an id by hand. +- **Can I reuse a `QD_*` id for a Qidi profile?** No — it is not a mint, so it is not a + `filament_id`. Those values are composed by the box at runtime, and no preset carries one. + Author Qidi filaments like any other vendor's. +- **CI says my filament needs an id.** Run `python scripts/orca_profile_tool.py generate-id`, then + `update-snapshot`, and commit both diffs. Do not type an id by hand. For general profile authoring, see the profile development guide on the [OrcaSlicer wiki](https://www.orcaslicer.com/wiki). diff --git a/resources/profiles/Anycubic.json b/resources/profiles/Anycubic.json index 205fd359d8..1c44d6ec69 100644 --- a/resources/profiles/Anycubic.json +++ b/resources/profiles/Anycubic.json @@ -64,10 +64,10 @@ "name": "Anycubic Kobra S1", "sub_path": "machine/Anycubic Kobra S1.json" }, - { - "name": "Anycubic Kobra S1 Max", - "sub_path": "machine/Anycubic Kobra S1 Max.json" - }, + { + "name": "Anycubic Kobra S1 Max", + "sub_path": "machine/Anycubic Kobra S1 Max.json" + }, { "name": "Anycubic Kobra X", "sub_path": "machine/Anycubic Kobra X.json" @@ -90,6 +90,10 @@ "name": "fdm_process_common", "sub_path": "process/fdm_process_common.json" }, + { + "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, { "name": "0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle", "sub_path": "process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json" @@ -98,6 +102,14 @@ "name": "0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" }, + { + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.08mm Standard @Anycubic Kobra X", "sub_path": "process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json" @@ -106,6 +118,10 @@ "name": "0.10mm Detail @Anycubic Kobra 3 0.2 nozzle", "sub_path": "process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json" }, + { + "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, { "name": "0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle", "sub_path": "process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json" @@ -126,10 +142,22 @@ "name": "0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json" }, + { + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.12mm Standard @Anycubic Kobra X", "sub_path": "process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json" }, + { + "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, { "name": "0.15mm Optimal @Anycubic 4MaxPro2", "sub_path": "process/0.15mm Optimal @Anycubic 4MaxPro2.json" @@ -162,6 +190,10 @@ "name": "0.15mm Optimal @Anycubic i3MegaS", "sub_path": "process/0.15mm Optimal @Anycubic i3MegaS.json" }, + { + "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.16mm High Quality @Anycubic Kobra X", "sub_path": "process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json" @@ -186,6 +218,10 @@ "name": "0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle", "sub_path": "process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" }, + { + "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.16mm Standard @Anycubic Kobra X", "sub_path": "process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json" @@ -194,6 +230,14 @@ "name": "0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", "sub_path": "process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" }, + { + "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.20mm High Quality @Anycubic Kobra X", "sub_path": "process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json" @@ -250,6 +294,10 @@ "name": "0.20mm Standard @Anycubic Kobra S1 0.4 nozzle", "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.20mm Standard @Anycubic Kobra X", "sub_path": "process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json" @@ -294,6 +342,18 @@ "name": "0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", "sub_path": "process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "0.24mm Standard @Anycubic Kobra X", "sub_path": "process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json" @@ -314,6 +374,10 @@ "name": "0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle", "sub_path": "process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json" }, + { + "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "0.28mm Standard @Anycubic Kobra X", "sub_path": "process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json" @@ -362,14 +426,26 @@ "name": "0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", "sub_path": "process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, { "name": "0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", "sub_path": "process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" }, + { + "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", "sub_path": "process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" }, + { + "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, { "name": "0.40mm Standard @Anycubic Kobra 3 0.8 nozzle", "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json" @@ -378,110 +454,30 @@ "name": "0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", "sub_path": "process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle", "sub_path": "process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json" }, + { + "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, { "name": "0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle", "sub_path": "process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json" }, - { - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - - { - "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - - { - "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" + { + "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" }, - { - "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - - { - "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" - } - + { + "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json" + } ], "filament_list": [ { @@ -536,6 +532,22 @@ "name": "Anycubic ABS @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic ABS @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic ABS @Anycubic Kobra X 0.4 nozzle.json" @@ -556,6 +568,22 @@ "name": "Anycubic ASA @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic ASA @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic ASA @Anycubic Kobra X 0.4 nozzle.json" @@ -564,6 +592,46 @@ "name": "Generic ASA @Anycubic", "sub_path": "filament/Generic ASA @Anycubic.json" }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Fiberon PA6-CF20 @Anycubic Kobra S1", + "sub_path": "filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json" + }, { "name": "Generic PA @Anycubic", "sub_path": "filament/Generic PA @Anycubic.json" @@ -573,16 +641,56 @@ "sub_path": "filament/Generic PA-CF @Anycubic.json" }, { - "name": "Fiberon PA6-CF20 @Anycubic Kobra S1", - "sub_path": "filament/Polymaker/Fiberon PA6-CF20 @Anycubic Kobra S1.json" + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json" }, { "name": "Generic PC @Anycubic", "sub_path": "filament/Generic PC @Anycubic.json" }, { - "name": "Generic PETG @Anycubic", - "sub_path": "filament/Generic PETG @Anycubic.json" + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" }, { "name": "Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle", @@ -600,10 +708,46 @@ "name": "Anycubic PETG @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PETG @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PETG @Anycubic Kobra X 0.4 nozzle.json" }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Generic PETG @Anycubic", + "sub_path": "filament/Generic PETG @Anycubic.json" + }, + { + "name": "Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "Generic PETG @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Generic PETG @Anycubic Kobra X 0.4 nozzle.json" @@ -612,14 +756,6 @@ "name": "Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json" }, - { - "name": "Generic PLA @Anycubic", - "sub_path": "filament/Generic PLA @Anycubic.json" - }, - { - "name": "Generic PLA-CF @Anycubic", - "sub_path": "filament/Generic PLA-CF @Anycubic.json" - }, { "name": "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json" @@ -636,6 +772,22 @@ "name": "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PLA @Anycubic Kobra X 0.4 nozzle.json" @@ -652,6 +804,18 @@ "name": "Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle.json" @@ -664,6 +828,18 @@ "name": "Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json" }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle.json" @@ -676,10 +852,26 @@ "name": "Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle.json" }, + { + "name": "Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, { "name": "Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json" @@ -688,10 +880,30 @@ "name": "Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle.json" }, + { + "name": "Generic PLA @Anycubic", + "sub_path": "filament/Generic PLA @Anycubic.json" + }, + { + "name": "Generic PLA-CF @Anycubic", + "sub_path": "filament/Generic PLA-CF @Anycubic.json" + }, { "name": "Panchroma PLA @Anycubic Kobra S1", "sub_path": "filament/Polymaker/Panchroma PLA @Anycubic Kobra S1.json" @@ -705,21 +917,53 @@ "sub_path": "filament/Polymaker/Polymaker PLA Pro Metallic @Anycubic Kobra S1.json" }, { - "name": "Generic PVA @Anycubic", - "sub_path": "filament/Generic PVA @Anycubic.json" + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json" }, { "name": "Anycubic PVA @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic PVA @Anycubic Kobra X 0.4 nozzle.json" }, { - "name": "Generic TPU @Anycubic", - "sub_path": "filament/Generic TPU @Anycubic.json" + "name": "Generic PVA @Anycubic", + "sub_path": "filament/Generic PVA @Anycubic.json" }, { "name": "Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle", "sub_path": "filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json" }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle.json" @@ -740,10 +984,26 @@ "name": "Anycubic TPU @Anycubic Kobra S1 0.4 nozzle", "sub_path": "filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json" }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle", "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle.json" }, + { + "name": "Generic TPU @Anycubic", + "sub_path": "filament/Generic TPU @Anycubic.json" + }, { "name": "Generic ABS @Anycubic Kobra 3 0.4 nozzle", "sub_path": "filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json" @@ -796,6 +1056,18 @@ "name": "Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle", "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json" }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle", "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json" @@ -816,302 +1088,22 @@ "name": "Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle", "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json" }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Generic TPU @Anycubic Kobra 3 0.4 nozzle", "sub_path": "filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Generic PETG @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "filament/Anycubic PLA Translucent @Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - - { - "name": "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PETG @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ABS @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic ASA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PA6-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PAHT-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PC-GF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PEBA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PET-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PETG-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Glow @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA High Speed @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Matte @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA Silk @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA+ @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PLA-CF @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic PVA @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic TPU 95A @Anycubic Kobra S1 Max 0.8 nozzle.json" - }, - { - "name": "Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "filament/Anycubic TPU for ACE @Anycubic Kobra S1 Max 0.8 nozzle.json" - } - + } ], "machine_list": [ { @@ -1198,22 +1190,22 @@ "name": "Anycubic Kobra S1 0.4 nozzle", "sub_path": "machine/Anycubic Kobra S1 0.4 nozzle.json" }, - { - "name": "Anycubic Kobra S1 Max 0.4 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.4 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.25 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.25 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.6 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.6 nozzle.json" - }, - { - "name": "Anycubic Kobra S1 Max 0.8 nozzle", - "sub_path": "machine/Anycubic Kobra S1 Max 0.8 nozzle.json" - }, + { + "name": "Anycubic Kobra S1 Max 0.25 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.25 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.4 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.4 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.6 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.6 nozzle.json" + }, + { + "name": "Anycubic Kobra S1 Max 0.8 nozzle", + "sub_path": "machine/Anycubic Kobra S1 Max 0.8 nozzle.json" + }, { "name": "Anycubic Kobra X 0.4 nozzle", "sub_path": "machine/Anycubic Kobra X 0.4 nozzle.json" diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 9641788cf7..d7ee1e6b6c 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.01.00.24", + "version": "02.01.00.25", "force_update": "0", "description": "BBL configurations", "machine_model_list": [ @@ -251,6 +251,10 @@ "name": "0.08mm Extra Fine @BBL H2DP 0.2 nozzle", "sub_path": "process/0.08mm Extra Fine @BBL H2DP 0.2 nozzle.json" }, + { + "name": "0.08mm High Quality @BBL H2C 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL H2C 0.2 nozzle.json" + }, { "name": "0.08mm High Quality @BBL X2D 0.2 nozzle", "sub_path": "process/0.08mm High Quality @BBL X2D 0.2 nozzle.json" @@ -263,10 +267,18 @@ "name": "0.08mm Extra Fine @BBL H2DP", "sub_path": "process/0.08mm Extra Fine @BBL H2DP.json" }, + { + "name": "0.08mm High Quality @BBL H2C", + "sub_path": "process/0.08mm High Quality @BBL H2C.json" + }, { "name": "0.08mm High Quality @BBL X2D", "sub_path": "process/0.08mm High Quality @BBL X2D.json" }, + { + "name": "0.10mm Standard @BBL H2C 0.2 nozzle", + "sub_path": "process/0.10mm Standard @BBL H2C 0.2 nozzle.json" + }, { "name": "0.10mm Standard @BBL H2D 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL H2D 0.2 nozzle.json" @@ -279,6 +291,10 @@ "name": "0.10mm Standard @BBL X2D 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL X2D 0.2 nozzle.json" }, + { + "name": "0.12mm Balanced Quality @BBL H2C 0.2 nozzle", + "sub_path": "process/0.12mm Balanced Quality @BBL H2C 0.2 nozzle.json" + }, { "name": "0.12mm Balanced Quality @BBL H2D 0.2 nozzle", "sub_path": "process/0.12mm Balanced Quality @BBL H2D 0.2 nozzle.json" @@ -299,6 +315,10 @@ "name": "0.12mm Fine @BBL H2DP", "sub_path": "process/0.12mm Fine @BBL H2DP.json" }, + { + "name": "0.12mm High Quality @BBL H2C", + "sub_path": "process/0.12mm High Quality @BBL H2C.json" + }, { "name": "0.12mm High Quality @BBL X2D", "sub_path": "process/0.12mm High Quality @BBL X2D.json" @@ -311,10 +331,18 @@ "name": "0.16mm Balanced Quality @BBL H2DP", "sub_path": "process/0.16mm Balanced Quality @BBL H2DP.json" }, + { + "name": "0.16mm High Quality @BBL H2C", + "sub_path": "process/0.16mm High Quality @BBL H2C.json" + }, { "name": "0.16mm High Quality @BBL X2D", "sub_path": "process/0.16mm High Quality @BBL X2D.json" }, + { + "name": "0.16mm Standard @BBL H2C", + "sub_path": "process/0.16mm Standard @BBL H2C.json" + }, { "name": "0.16mm Standard @BBL H2D", "sub_path": "process/0.16mm Standard @BBL H2D.json" @@ -327,6 +355,10 @@ "name": "0.16mm Standard @BBL X2D", "sub_path": "process/0.16mm Standard @BBL X2D.json" }, + { + "name": "0.18mm Balanced Quality @BBL H2C 0.6 nozzle", + "sub_path": "process/0.18mm Balanced Quality @BBL H2C 0.6 nozzle.json" + }, { "name": "0.18mm Balanced Quality @BBL H2D 0.6 nozzle", "sub_path": "process/0.18mm Balanced Quality @BBL H2D 0.6 nozzle.json" @@ -347,10 +379,18 @@ "name": "0.20mm Balanced Strength @BBL H2DP", "sub_path": "process/0.20mm Balanced Strength @BBL H2DP.json" }, + { + "name": "0.20mm High Quality @BBL H2C", + "sub_path": "process/0.20mm High Quality @BBL H2C.json" + }, { "name": "0.20mm High Quality @BBL X2D", "sub_path": "process/0.20mm High Quality @BBL X2D.json" }, + { + "name": "0.20mm Standard @BBL H2C", + "sub_path": "process/0.20mm Standard @BBL H2C.json" + }, { "name": "0.20mm Standard @BBL H2D", "sub_path": "process/0.20mm Standard @BBL H2D.json" @@ -363,6 +403,10 @@ "name": "0.20mm Standard @BBL X2D", "sub_path": "process/0.20mm Standard @BBL X2D.json" }, + { + "name": "0.24mm Standard @BBL H2C", + "sub_path": "process/0.24mm Standard @BBL H2C.json" + }, { "name": "0.24mm Standard @BBL H2D", "sub_path": "process/0.24mm Standard @BBL H2D.json" @@ -379,6 +423,10 @@ "name": "0.24mm Balanced Quality @BBL X2D 0.6 nozzle", "sub_path": "process/0.24mm Balanced Quality @BBL X2D 0.6 nozzle.json" }, + { + "name": "0.24mm Balanced Strength @BBL H2C 0.6 nozzle", + "sub_path": "process/0.24mm Balanced Strength @BBL H2C 0.6 nozzle.json" + }, { "name": "0.24mm Balanced Strength @BBL H2D 0.6 nozzle", "sub_path": "process/0.24mm Balanced Strength @BBL H2D 0.6 nozzle.json" @@ -387,6 +435,10 @@ "name": "0.24mm Balanced Strength @BBL H2DP 0.6 nozzle", "sub_path": "process/0.24mm Balanced Strength @BBL H2DP 0.6 nozzle.json" }, + { + "name": "0.24mm Balanced Quality @BBL H2C 0.8 nozzle", + "sub_path": "process/0.24mm Balanced Quality @BBL H2C 0.8 nozzle.json" + }, { "name": "0.24mm Balanced Quality @BBL H2D 0.8 nozzle", "sub_path": "process/0.24mm Balanced Quality @BBL H2D 0.8 nozzle.json" @@ -399,6 +451,10 @@ "name": "0.24mm Balanced Quality @BBL X2D 0.8 nozzle", "sub_path": "process/0.24mm Balanced Quality @BBL X2D 0.8 nozzle.json" }, + { + "name": "0.30mm Standard @BBL H2C 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL H2C 0.6 nozzle.json" + }, { "name": "0.30mm Standard @BBL H2D 0.6 nozzle", "sub_path": "process/0.30mm Standard @BBL H2D 0.6 nozzle.json" @@ -415,6 +471,10 @@ "name": "0.32mm Balanced Quality @BBL X2D 0.8 nozzle", "sub_path": "process/0.32mm Balanced Quality @BBL X2D 0.8 nozzle.json" }, + { + "name": "0.32mm Balanced Strength @BBL H2C 0.8 nozzle", + "sub_path": "process/0.32mm Balanced Strength @BBL H2C 0.8 nozzle.json" + }, { "name": "0.32mm Balanced Strength @BBL H2D 0.8 nozzle", "sub_path": "process/0.32mm Balanced Strength @BBL H2D 0.8 nozzle.json" @@ -423,6 +483,10 @@ "name": "0.32mm Balanced Strength @BBL H2DP 0.8 nozzle", "sub_path": "process/0.32mm Balanced Strength @BBL H2DP 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @BBL H2C 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL H2C 0.8 nozzle.json" + }, { "name": "0.40mm Standard @BBL H2D 0.8 nozzle", "sub_path": "process/0.40mm Standard @BBL H2D 0.8 nozzle.json" @@ -491,6 +555,10 @@ "name": "0.08mm High Quality @BBL A1M", "sub_path": "process/0.08mm High Quality @BBL A1M.json" }, + { + "name": "0.08mm High Quality @BBL A2L", + "sub_path": "process/0.08mm High Quality @BBL A2L.json" + }, { "name": "0.08mm High Quality @BBL H2S", "sub_path": "process/0.08mm High Quality @BBL H2S.json" @@ -515,6 +583,10 @@ "name": "0.08mm High Quality @BBL A1M 0.2 nozzle", "sub_path": "process/0.08mm High Quality @BBL A1M 0.2 nozzle.json" }, + { + "name": "0.08mm High Quality @BBL A2L 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL A2L 0.2 nozzle.json" + }, { "name": "0.08mm High Quality @BBL H2S 0.2 nozzle", "sub_path": "process/0.08mm High Quality @BBL H2S 0.2 nozzle.json" @@ -571,6 +643,10 @@ "name": "0.10mm Standard @BBL A1M 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL A1M 0.2 nozzle.json" }, + { + "name": "0.10mm Standard @BBL A2L 0.2 nozzle", + "sub_path": "process/0.10mm Standard @BBL A2L 0.2 nozzle.json" + }, { "name": "0.10mm Standard @BBL H2S 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL H2S 0.2 nozzle.json" @@ -611,6 +687,10 @@ "name": "0.12mm High Quality @BBL A1M", "sub_path": "process/0.12mm High Quality @BBL A1M.json" }, + { + "name": "0.12mm High Quality @BBL A2L", + "sub_path": "process/0.12mm High Quality @BBL A2L.json" + }, { "name": "0.12mm High Quality @BBL H2S", "sub_path": "process/0.12mm High Quality @BBL H2S.json" @@ -627,6 +707,10 @@ "name": "0.12mm High Quality @BBL X1C", "sub_path": "process/0.12mm High Quality @BBL X1C.json" }, + { + "name": "0.12mm Balanced Quality @BBL A2L 0.2 nozzle", + "sub_path": "process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json" + }, { "name": "0.12mm Balanced Quality @BBL H2S 0.2 nozzle", "sub_path": "process/0.12mm Balanced Quality @BBL H2S 0.2 nozzle.json" @@ -675,6 +759,10 @@ "name": "0.16mm High Quality @BBL A1M", "sub_path": "process/0.16mm High Quality @BBL A1M.json" }, + { + "name": "0.16mm High Quality @BBL A2L", + "sub_path": "process/0.16mm High Quality @BBL A2L.json" + }, { "name": "0.16mm High Quality @BBL H2S", "sub_path": "process/0.16mm High Quality @BBL H2S.json" @@ -707,6 +795,10 @@ "name": "0.16mm Optimal @BBL X1C", "sub_path": "process/0.16mm Optimal @BBL X1C.json" }, + { + "name": "0.16mm Standard @BBL A2L", + "sub_path": "process/0.16mm Standard @BBL A2L.json" + }, { "name": "0.16mm Standard @BBL H2S", "sub_path": "process/0.16mm Standard @BBL H2S.json" @@ -715,6 +807,10 @@ "name": "0.16mm Standard @BBL P2S", "sub_path": "process/0.16mm Standard @BBL P2S.json" }, + { + "name": "0.18mm Balanced Quality @BBL A2L 0.6 nozzle", + "sub_path": "process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json" + }, { "name": "0.18mm Balanced Quality @BBL H2S 0.6 nozzle", "sub_path": "process/0.18mm Balanced Quality @BBL H2S 0.6 nozzle.json" @@ -739,6 +835,10 @@ "name": "0.18mm Standard @BBL X1C 0.6 nozzle", "sub_path": "process/0.18mm Standard @BBL X1C 0.6 nozzle.json" }, + { + "name": "0.20mm High Quality @BBL A2L", + "sub_path": "process/0.20mm High Quality @BBL A2L.json" + }, { "name": "0.20mm High Quality @BBL H2S", "sub_path": "process/0.20mm High Quality @BBL H2S.json" @@ -755,6 +855,10 @@ "name": "0.20mm Standard @BBL A1M", "sub_path": "process/0.20mm Standard @BBL A1M.json" }, + { + "name": "0.20mm Standard @BBL A2L", + "sub_path": "process/0.20mm Standard @BBL A2L.json" + }, { "name": "0.20mm Standard @BBL H2S", "sub_path": "process/0.20mm Standard @BBL H2S.json" @@ -771,6 +875,10 @@ "name": "0.20mm Standard @BBL X1C", "sub_path": "process/0.20mm Standard @BBL X1C.json" }, + { + "name": "0.20mm Steady @BBL A2L", + "sub_path": "process/0.20mm Steady @BBL A2L.json" + }, { "name": "0.20mm Strength @BBL A1", "sub_path": "process/0.20mm Strength @BBL A1.json" @@ -803,6 +911,10 @@ "name": "0.24mm Draft @BBL X1C", "sub_path": "process/0.24mm Draft @BBL X1C.json" }, + { + "name": "0.24mm Standard @BBL A2L", + "sub_path": "process/0.24mm Standard @BBL A2L.json" + }, { "name": "0.24mm Standard @BBL H2S", "sub_path": "process/0.24mm Standard @BBL H2S.json" @@ -811,6 +923,10 @@ "name": "0.24mm Standard @BBL P2S", "sub_path": "process/0.24mm Standard @BBL P2S.json" }, + { + "name": "0.24mm Balanced Quality @BBL A2L 0.6 nozzle", + "sub_path": "process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json" + }, { "name": "0.24mm Balanced Quality @BBL H2S 0.6 nozzle", "sub_path": "process/0.24mm Balanced Quality @BBL H2S 0.6 nozzle.json" @@ -835,6 +951,10 @@ "name": "0.24mm Standard @BBL X1C 0.6 nozzle", "sub_path": "process/0.24mm Standard @BBL X1C 0.6 nozzle.json" }, + { + "name": "0.24mm Balanced Quality @BBL A2L 0.8 nozzle", + "sub_path": "process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json" + }, { "name": "0.24mm Balanced Quality @BBL H2S 0.8 nozzle", "sub_path": "process/0.24mm Balanced Quality @BBL H2S 0.8 nozzle.json" @@ -883,6 +1003,10 @@ "name": "0.30mm Standard @BBL A1M 0.6 nozzle", "sub_path": "process/0.30mm Standard @BBL A1M 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @BBL A2L 0.6 nozzle", + "sub_path": "process/0.30mm Standard @BBL A2L 0.6 nozzle.json" + }, { "name": "0.30mm Standard @BBL H2S 0.6 nozzle", "sub_path": "process/0.30mm Standard @BBL H2S 0.6 nozzle.json" @@ -919,6 +1043,10 @@ "name": "0.30mm Strength @BBL X1C 0.6 nozzle", "sub_path": "process/0.30mm Strength @BBL X1C 0.6 nozzle.json" }, + { + "name": "0.32mm Balanced Quality @BBL A2L 0.8 nozzle", + "sub_path": "process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json" + }, { "name": "0.32mm Balanced Quality @BBL H2S 0.8 nozzle", "sub_path": "process/0.32mm Balanced Quality @BBL H2S 0.8 nozzle.json" @@ -967,6 +1095,10 @@ "name": "0.40mm Standard @BBL A1M 0.8 nozzle", "sub_path": "process/0.40mm Standard @BBL A1M 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @BBL A2L 0.8 nozzle", + "sub_path": "process/0.40mm Standard @BBL A2L 0.8 nozzle.json" + }, { "name": "0.40mm Standard @BBL H2S 0.8 nozzle", "sub_path": "process/0.40mm Standard @BBL H2S 0.8 nozzle.json" @@ -1034,138 +1166,6 @@ { "name": "0.56mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.56mm Standard @BBL X1C 0.8 nozzle.json" - }, - { - "name": "0.08mm High Quality @BBL A2L", - "sub_path": "process/0.08mm High Quality @BBL A2L.json" - }, - { - "name": "0.08mm High Quality @BBL A2L 0.2 nozzle", - "sub_path": "process/0.08mm High Quality @BBL A2L 0.2 nozzle.json" - }, - { - "name": "0.08mm High Quality @BBL H2C", - "sub_path": "process/0.08mm High Quality @BBL H2C.json" - }, - { - "name": "0.08mm High Quality @BBL H2C 0.2 nozzle", - "sub_path": "process/0.08mm High Quality @BBL H2C 0.2 nozzle.json" - }, - { - "name": "0.10mm Standard @BBL A2L 0.2 nozzle", - "sub_path": "process/0.10mm Standard @BBL A2L 0.2 nozzle.json" - }, - { - "name": "0.10mm Standard @BBL H2C 0.2 nozzle", - "sub_path": "process/0.10mm Standard @BBL H2C 0.2 nozzle.json" - }, - { - "name": "0.12mm Balanced Quality @BBL A2L 0.2 nozzle", - "sub_path": "process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json" - }, - { - "name": "0.12mm Balanced Quality @BBL H2C 0.2 nozzle", - "sub_path": "process/0.12mm Balanced Quality @BBL H2C 0.2 nozzle.json" - }, - { - "name": "0.12mm High Quality @BBL A2L", - "sub_path": "process/0.12mm High Quality @BBL A2L.json" - }, - { - "name": "0.12mm High Quality @BBL H2C", - "sub_path": "process/0.12mm High Quality @BBL H2C.json" - }, - { - "name": "0.16mm High Quality @BBL A2L", - "sub_path": "process/0.16mm High Quality @BBL A2L.json" - }, - { - "name": "0.16mm High Quality @BBL H2C", - "sub_path": "process/0.16mm High Quality @BBL H2C.json" - }, - { - "name": "0.16mm Standard @BBL A2L", - "sub_path": "process/0.16mm Standard @BBL A2L.json" - }, - { - "name": "0.16mm Standard @BBL H2C", - "sub_path": "process/0.16mm Standard @BBL H2C.json" - }, - { - "name": "0.18mm Balanced Quality @BBL A2L 0.6 nozzle", - "sub_path": "process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json" - }, - { - "name": "0.18mm Balanced Quality @BBL H2C 0.6 nozzle", - "sub_path": "process/0.18mm Balanced Quality @BBL H2C 0.6 nozzle.json" - }, - { - "name": "0.20mm High Quality @BBL A2L", - "sub_path": "process/0.20mm High Quality @BBL A2L.json" - }, - { - "name": "0.20mm High Quality @BBL H2C", - "sub_path": "process/0.20mm High Quality @BBL H2C.json" - }, - { - "name": "0.20mm Standard @BBL A2L", - "sub_path": "process/0.20mm Standard @BBL A2L.json" - }, - { - "name": "0.20mm Standard @BBL H2C", - "sub_path": "process/0.20mm Standard @BBL H2C.json" - }, - { - "name": "0.20mm Steady @BBL A2L", - "sub_path": "process/0.20mm Steady @BBL A2L.json" - }, - { - "name": "0.24mm Balanced Quality @BBL A2L 0.6 nozzle", - "sub_path": "process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json" - }, - { - "name": "0.24mm Balanced Quality @BBL A2L 0.8 nozzle", - "sub_path": "process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json" - }, - { - "name": "0.24mm Balanced Quality @BBL H2C 0.8 nozzle", - "sub_path": "process/0.24mm Balanced Quality @BBL H2C 0.8 nozzle.json" - }, - { - "name": "0.24mm Balanced Strength @BBL H2C 0.6 nozzle", - "sub_path": "process/0.24mm Balanced Strength @BBL H2C 0.6 nozzle.json" - }, - { - "name": "0.24mm Standard @BBL A2L", - "sub_path": "process/0.24mm Standard @BBL A2L.json" - }, - { - "name": "0.24mm Standard @BBL H2C", - "sub_path": "process/0.24mm Standard @BBL H2C.json" - }, - { - "name": "0.30mm Standard @BBL A2L 0.6 nozzle", - "sub_path": "process/0.30mm Standard @BBL A2L 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @BBL H2C 0.6 nozzle", - "sub_path": "process/0.30mm Standard @BBL H2C 0.6 nozzle.json" - }, - { - "name": "0.32mm Balanced Quality @BBL A2L 0.8 nozzle", - "sub_path": "process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json" - }, - { - "name": "0.32mm Balanced Strength @BBL H2C 0.8 nozzle", - "sub_path": "process/0.32mm Balanced Strength @BBL H2C 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @BBL A2L 0.8 nozzle", - "sub_path": "process/0.40mm Standard @BBL A2L 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @BBL H2C 0.8 nozzle", - "sub_path": "process/0.40mm Standard @BBL H2C 0.8 nozzle.json" } ], "filament_list": [ @@ -1733,6 +1733,10 @@ "name": "Bambu PLA Metal @base", "sub_path": "filament/Bambu PLA Metal @base.json" }, + { + "name": "Bambu PLA Pure @base", + "sub_path": "filament/Bambu PLA Pure @base.json" + }, { "name": "Bambu PLA Silk @base", "sub_path": "filament/Bambu PLA Silk @base.json" @@ -2077,6 +2081,22 @@ "name": "Bambu ABS @BBL A1 0.2 nozzle", "sub_path": "filament/Bambu ABS @BBL A1 0.2 nozzle.json" }, + { + "name": "Bambu ABS @BBL H2C", + "sub_path": "filament/Bambu ABS @BBL H2C.json" + }, + { + "name": "Bambu ABS @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu ABS @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu ABS @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu ABS @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu ABS @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu ABS @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu ABS @BBL H2D", "sub_path": "filament/Bambu ABS @BBL H2D.json" @@ -2193,6 +2213,14 @@ "name": "Bambu ABS-GF @BBL A1", "sub_path": "filament/Bambu ABS-GF @BBL A1.json" }, + { + "name": "Bambu ABS-GF @BBL H2C", + "sub_path": "filament/Bambu ABS-GF @BBL H2C.json" + }, + { + "name": "Bambu ABS-GF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu ABS-GF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu ABS-GF @BBL H2D", "sub_path": "filament/Bambu ABS-GF @BBL H2D.json" @@ -2229,6 +2257,14 @@ "name": "Bambu Support for ABS @BBL A1", "sub_path": "filament/Bambu Support for ABS @BBL A1.json" }, + { + "name": "Bambu Support for ABS @BBL H2C", + "sub_path": "filament/Bambu Support for ABS @BBL H2C.json" + }, + { + "name": "Bambu Support for ABS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support for ABS @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support for ABS @BBL H2D", "sub_path": "filament/Bambu Support for ABS @BBL H2D.json" @@ -2273,6 +2309,18 @@ "name": "Generic ABS @BBL A1 0.2 nozzle", "sub_path": "filament/Generic ABS @BBL A1 0.2 nozzle.json" }, + { + "name": "Generic ABS @BBL H2C", + "sub_path": "filament/Generic ABS @BBL H2C.json" + }, + { + "name": "Generic ABS @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic ABS @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic ABS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic ABS @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic ABS @BBL H2D", "sub_path": "filament/Generic ABS @BBL H2D.json" @@ -2385,6 +2433,22 @@ "name": "Bambu ASA @BBL A1 0.6 nozzle", "sub_path": "filament/Bambu ASA @BBL A1 0.6 nozzle.json" }, + { + "name": "Bambu ASA @BBL H2C", + "sub_path": "filament/Bambu ASA @BBL H2C.json" + }, + { + "name": "Bambu ASA @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu ASA @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu ASA @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu ASA @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu ASA @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu ASA @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu ASA @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu ASA @BBL H2D 0.2 nozzle.json" @@ -2497,6 +2561,14 @@ "name": "Bambu ASA-Aero @BBL A1", "sub_path": "filament/Bambu ASA-Aero @BBL A1.json" }, + { + "name": "Bambu ASA-Aero @BBL H2C", + "sub_path": "filament/Bambu ASA-Aero @BBL H2C.json" + }, + { + "name": "Bambu ASA-Aero @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu ASA-Aero @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu ASA-Aero @BBL H2D", "sub_path": "filament/Bambu ASA-Aero @BBL H2D.json" @@ -2537,6 +2609,14 @@ "name": "Bambu ASA-CF @BBL A1 0.6 nozzle", "sub_path": "filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json" }, + { + "name": "Bambu ASA-CF @BBL H2C", + "sub_path": "filament/Bambu ASA-CF @BBL H2C.json" + }, + { + "name": "Bambu ASA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu ASA-CF @BBL H2D 0.4 nozzle", "sub_path": "filament/Bambu ASA-CF @BBL H2D 0.4 nozzle.json" @@ -2605,6 +2685,18 @@ "name": "Generic ASA @BBL A1 0.2 nozzle", "sub_path": "filament/Generic ASA @BBL A1 0.2 nozzle.json" }, + { + "name": "Generic ASA @BBL H2C", + "sub_path": "filament/Generic ASA @BBL H2C.json" + }, + { + "name": "Generic ASA @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic ASA @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic ASA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic ASA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic ASA @BBL H2D", "sub_path": "filament/Generic ASA @BBL H2D.json" @@ -2693,6 +2785,18 @@ "name": "Generic BVOH @BBL A1M", "sub_path": "filament/Generic BVOH @BBL A1M.json" }, + { + "name": "Generic BVOH @BBL A2L", + "sub_path": "filament/Generic BVOH @BBL A2L.json" + }, + { + "name": "Generic BVOH @BBL H2C", + "sub_path": "filament/Generic BVOH @BBL H2C.json" + }, + { + "name": "Generic BVOH @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic BVOH @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic BVOH @BBL H2D", "sub_path": "filament/Generic BVOH @BBL H2D.json" @@ -2729,6 +2833,18 @@ "name": "Generic EVA @BBL A1M", "sub_path": "filament/Generic EVA @BBL A1M.json" }, + { + "name": "Generic EVA @BBL A2L", + "sub_path": "filament/Generic EVA @BBL A2L.json" + }, + { + "name": "Generic EVA @BBL H2C", + "sub_path": "filament/Generic EVA @BBL H2C.json" + }, + { + "name": "Generic EVA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic EVA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic EVA @BBL H2D", "sub_path": "filament/Generic EVA @BBL H2D.json" @@ -2781,6 +2897,26 @@ "name": "Generic HIPS @BBL A1M 0.2 nozzle", "sub_path": "filament/Generic HIPS @BBL A1M 0.2 nozzle.json" }, + { + "name": "Generic HIPS @BBL A2L", + "sub_path": "filament/Generic HIPS @BBL A2L.json" + }, + { + "name": "Generic HIPS @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic HIPS @BBL H2C", + "sub_path": "filament/Generic HIPS @BBL H2C.json" + }, + { + "name": "Generic HIPS @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic HIPS @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic HIPS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic HIPS @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic HIPS @BBL H2D", "sub_path": "filament/Generic HIPS @BBL H2D.json" @@ -2849,6 +2985,14 @@ "name": "Bambu PA-CF @BBL A1", "sub_path": "filament/Bambu PA-CF @BBL A1.json" }, + { + "name": "Bambu PA-CF @BBL H2C", + "sub_path": "filament/Bambu PA-CF @BBL H2C.json" + }, + { + "name": "Bambu PA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PA-CF @BBL H2D", "sub_path": "filament/Bambu PA-CF @BBL H2D.json" @@ -2889,6 +3033,14 @@ "name": "Bambu PA6-CF @BBL A1", "sub_path": "filament/Bambu PA6-CF @BBL A1.json" }, + { + "name": "Bambu PA6-CF @BBL H2C", + "sub_path": "filament/Bambu PA6-CF @BBL H2C.json" + }, + { + "name": "Bambu PA6-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PA6-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PA6-CF @BBL H2D", "sub_path": "filament/Bambu PA6-CF @BBL H2D.json" @@ -2925,6 +3077,14 @@ "name": "Bambu PA6-GF @BBL A1", "sub_path": "filament/Bambu PA6-GF @BBL A1.json" }, + { + "name": "Bambu PA6-GF @BBL H2C", + "sub_path": "filament/Bambu PA6-GF @BBL H2C.json" + }, + { + "name": "Bambu PA6-GF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PA6-GF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PA6-GF @BBL H2D", "sub_path": "filament/Bambu PA6-GF @BBL H2D.json" @@ -2961,6 +3121,14 @@ "name": "Bambu PAHT-CF @BBL A1", "sub_path": "filament/Bambu PAHT-CF @BBL A1.json" }, + { + "name": "Bambu PAHT-CF @BBL H2C", + "sub_path": "filament/Bambu PAHT-CF @BBL H2C.json" + }, + { + "name": "Bambu PAHT-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PAHT-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PAHT-CF @BBL H2D", "sub_path": "filament/Bambu PAHT-CF @BBL H2D.json" @@ -2997,6 +3165,14 @@ "name": "Bambu Support For PA/PET @BBL A1", "sub_path": "filament/Bambu Support For PA PET @BBL A1.json" }, + { + "name": "Bambu Support For PA/PET @BBL H2C", + "sub_path": "filament/Bambu Support For PA PET @BBL H2C.json" + }, + { + "name": "Bambu Support For PA/PET @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support For PA PET @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support For PA/PET @BBL H2D", "sub_path": "filament/Bambu Support For PA PET @BBL H2D.json" @@ -3033,6 +3209,14 @@ "name": "Bambu Support G @BBL A1", "sub_path": "filament/Bambu Support G @BBL A1.json" }, + { + "name": "Bambu Support G @BBL H2C", + "sub_path": "filament/Bambu Support G @BBL H2C.json" + }, + { + "name": "Bambu Support G @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support G @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support G @BBL H2D", "sub_path": "filament/Bambu Support G @BBL H2D.json" @@ -3121,6 +3305,14 @@ "name": "Generic PA", "sub_path": "filament/Generic PA.json" }, + { + "name": "Generic PA @BBL H2C", + "sub_path": "filament/Generic PA @BBL H2C.json" + }, + { + "name": "Generic PA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PA @BBL H2D", "sub_path": "filament/Generic PA @BBL H2D.json" @@ -3201,6 +3393,22 @@ "name": "Bambu PC @BBL A1 0.2 nozzle", "sub_path": "filament/Bambu PC @BBL A1 0.2 nozzle.json" }, + { + "name": "Bambu PC @BBL H2C", + "sub_path": "filament/Bambu PC @BBL H2C.json" + }, + { + "name": "Bambu PC @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PC @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PC @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu PC @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu PC @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu PC @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu PC @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu PC @BBL H2D 0.2 nozzle.json" @@ -3321,6 +3529,18 @@ "name": "Bambu PC FR @BBL A1 0.2 nozzle", "sub_path": "filament/Bambu PC FR @BBL A1 0.2 nozzle.json" }, + { + "name": "Bambu PC FR @BBL H2C", + "sub_path": "filament/Bambu PC FR @BBL H2C.json" + }, + { + "name": "Bambu PC FR @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PC FR @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PC FR @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PC FR @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PC FR @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu PC FR @BBL H2D 0.2 nozzle.json" @@ -3457,6 +3677,18 @@ "name": "Generic PC @BBL A1 0.2 nozzle", "sub_path": "filament/Generic PC @BBL A1 0.2 nozzle.json" }, + { + "name": "Generic PC @BBL H2C", + "sub_path": "filament/Generic PC @BBL H2C.json" + }, + { + "name": "Generic PC @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PC @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PC @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PC @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PC @BBL H2D", "sub_path": "filament/Generic PC @BBL H2D.json" @@ -3505,6 +3737,18 @@ "name": "Generic PCTG @BBL A1M", "sub_path": "filament/Generic PCTG @BBL A1M.json" }, + { + "name": "Generic PCTG @BBL A2L", + "sub_path": "filament/Generic PCTG @BBL A2L.json" + }, + { + "name": "Generic PCTG @BBL H2C", + "sub_path": "filament/Generic PCTG @BBL H2C.json" + }, + { + "name": "Generic PCTG @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PCTG @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PCTG @BBL H2D", "sub_path": "filament/Generic PCTG @BBL H2D.json" @@ -3541,6 +3785,18 @@ "name": "Generic PE @BBL A1M", "sub_path": "filament/Generic PE @BBL A1M.json" }, + { + "name": "Generic PE @BBL A2L", + "sub_path": "filament/Generic PE @BBL A2L.json" + }, + { + "name": "Generic PE @BBL H2C", + "sub_path": "filament/Generic PE @BBL H2C.json" + }, + { + "name": "Generic PE @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PE @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PE @BBL H2D", "sub_path": "filament/Generic PE @BBL H2D.json" @@ -3577,6 +3833,18 @@ "name": "Generic PE-CF @BBL A1M", "sub_path": "filament/Generic PE-CF @BBL A1M.json" }, + { + "name": "Generic PE-CF @BBL A2L", + "sub_path": "filament/Generic PE-CF @BBL A2L.json" + }, + { + "name": "Generic PE-CF @BBL H2C", + "sub_path": "filament/Generic PE-CF @BBL H2C.json" + }, + { + "name": "Generic PE-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PE-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PE-CF @BBL H2D", "sub_path": "filament/Generic PE-CF @BBL H2D.json" @@ -3841,6 +4109,14 @@ "name": "Bambu PET-CF @BBL A1", "sub_path": "filament/Bambu PET-CF @BBL A1.json" }, + { + "name": "Bambu PET-CF @BBL H2C", + "sub_path": "filament/Bambu PET-CF @BBL H2C.json" + }, + { + "name": "Bambu PET-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PET-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PET-CF @BBL H2D", "sub_path": "filament/Bambu PET-CF @BBL H2D.json" @@ -3901,6 +4177,34 @@ "name": "Bambu PETG Basic @BBL A1M 0.8 nozzle", "sub_path": "filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json" }, + { + "name": "Bambu PETG Basic @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL H2C", + "sub_path": "filament/Bambu PETG Basic @BBL H2C.json" + }, + { + "name": "Bambu PETG Basic @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Basic @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PETG Basic @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PETG Basic @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu PETG Basic @BBL H2D 0.2 nozzle.json" @@ -3997,6 +4301,38 @@ "name": "Bambu PETG HF @BBL A1M 0.8 nozzle", "sub_path": "filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json" }, + { + "name": "Bambu PETG HF @BBL A2L", + "sub_path": "filament/Bambu PETG HF @BBL A2L.json" + }, + { + "name": "Bambu PETG HF @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL H2C", + "sub_path": "filament/Bambu PETG HF @BBL H2C.json" + }, + { + "name": "Bambu PETG HF @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu PETG HF @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu PETG HF @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu PETG HF @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu PETG HF @BBL H2D 0.2 nozzle.json" @@ -4105,6 +4441,34 @@ "name": "Bambu PETG Translucent @BBL A1M 0.8 nozzle", "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json" }, + { + "name": "Bambu PETG Translucent @BBL A2L", + "sub_path": "filament/Bambu PETG Translucent @BBL A2L.json" + }, + { + "name": "Bambu PETG Translucent @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL H2C", + "sub_path": "filament/Bambu PETG Translucent @BBL H2C.json" + }, + { + "name": "Bambu PETG Translucent @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PETG Translucent @BBL H2D 0.2 nozzle", "sub_path": "filament/Bambu PETG Translucent @BBL H2D 0.2 nozzle.json" @@ -4189,6 +4553,26 @@ "name": "Bambu PETG-CF @BBL A1M", "sub_path": "filament/Bambu PETG-CF @BBL A1M.json" }, + { + "name": "Bambu PETG-CF @BBL A2L", + "sub_path": "filament/Bambu PETG-CF @BBL A2L.json" + }, + { + "name": "Bambu PETG-CF @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PETG-CF @BBL H2C", + "sub_path": "filament/Bambu PETG-CF @BBL H2C.json" + }, + { + "name": "Bambu PETG-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PETG-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PETG-CF @BBL H2D 0.4 nozzle", "sub_path": "filament/Bambu PETG-CF @BBL H2D 0.4 nozzle.json" @@ -4305,6 +4689,26 @@ "name": "Generic PETG @BBL A1M 0.2 nozzle", "sub_path": "filament/Generic PETG @BBL A1M 0.2 nozzle.json" }, + { + "name": "Generic PETG @BBL A2L", + "sub_path": "filament/Generic PETG @BBL A2L.json" + }, + { + "name": "Generic PETG @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic PETG @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic PETG @BBL H2C", + "sub_path": "filament/Generic PETG @BBL H2C.json" + }, + { + "name": "Generic PETG @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PETG @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PETG @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PETG @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PETG @BBL H2D", "sub_path": "filament/Generic PETG @BBL H2D.json" @@ -4397,6 +4801,26 @@ "name": "Generic PETG HF @BBL A1M 0.2 nozzle", "sub_path": "filament/Generic PETG HF @BBL A1M 0.2 nozzle.json" }, + { + "name": "Generic PETG HF @BBL A2L", + "sub_path": "filament/Generic PETG HF @BBL A2L.json" + }, + { + "name": "Generic PETG HF @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL H2C", + "sub_path": "filament/Generic PETG HF @BBL H2C.json" + }, + { + "name": "Generic PETG HF @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PETG HF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PETG HF @BBL H2D", "sub_path": "filament/Generic PETG HF @BBL H2D.json" @@ -4469,6 +4893,18 @@ "name": "Generic PETG-CF @BBL A1M", "sub_path": "filament/P1P/Generic PETG-CF @BBL A1M.json" }, + { + "name": "Generic PETG-CF @BBL A2L", + "sub_path": "filament/Generic PETG-CF @BBL A2L.json" + }, + { + "name": "Generic PETG-CF @BBL H2C", + "sub_path": "filament/Generic PETG-CF @BBL H2C.json" + }, + { + "name": "Generic PETG-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PETG-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PETG-CF @BBL H2D", "sub_path": "filament/Generic PETG-CF @BBL H2D.json" @@ -4593,6 +5029,18 @@ "name": "Generic PHA @BBL A1M", "sub_path": "filament/Generic PHA @BBL A1M.json" }, + { + "name": "Generic PHA @BBL A2L", + "sub_path": "filament/Generic PHA @BBL A2L.json" + }, + { + "name": "Generic PHA @BBL H2C", + "sub_path": "filament/Generic PHA @BBL H2C.json" + }, + { + "name": "Generic PHA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PHA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PHA @BBL H2D", "sub_path": "filament/Generic PHA @BBL H2D.json" @@ -5049,6 +5497,26 @@ "name": "Bambu PLA Aero @BBL A1M", "sub_path": "filament/Bambu PLA Aero @BBL A1M.json" }, + { + "name": "Bambu PLA Aero @BBL A2L", + "sub_path": "filament/Bambu PLA Aero @BBL A2L.json" + }, + { + "name": "Bambu PLA Aero @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Aero @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Aero @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Aero @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Aero @BBL H2C", + "sub_path": "filament/Bambu PLA Aero @BBL H2C.json" + }, + { + "name": "Bambu PLA Aero @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Aero @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Aero @BBL H2D", "sub_path": "filament/Bambu PLA Aero @BBL H2D.json" @@ -5101,6 +5569,38 @@ "name": "Bambu PLA Basic @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Basic @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL H2C", + "sub_path": "filament/Bambu PLA Basic @BBL H2C.json" + }, + { + "name": "Bambu PLA Basic @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Basic @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu PLA Basic @BBL H2D", "sub_path": "filament/Bambu PLA Basic @BBL H2D.json" @@ -5217,6 +5717,34 @@ "name": "Bambu PLA Dynamic @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Dynamic @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Dynamic @BBL A2L", + "sub_path": "filament/Bambu PLA Dynamic @BBL A2L.json" + }, + { + "name": "Bambu PLA Dynamic @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Dynamic @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Dynamic @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Dynamic @BBL H2C", + "sub_path": "filament/Bambu PLA Dynamic @BBL H2C.json" + }, + { + "name": "Bambu PLA Dynamic @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Dynamic @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Dynamic @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Dynamic @BBL H2D", "sub_path": "filament/Bambu PLA Dynamic @BBL H2D.json" @@ -5309,6 +5837,34 @@ "name": "Bambu PLA Galaxy @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Galaxy @BBL A2L", + "sub_path": "filament/Bambu PLA Galaxy @BBL A2L.json" + }, + { + "name": "Bambu PLA Galaxy @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Galaxy @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Galaxy @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Galaxy @BBL H2C", + "sub_path": "filament/Bambu PLA Galaxy @BBL H2C.json" + }, + { + "name": "Bambu PLA Galaxy @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Galaxy @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Galaxy @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Galaxy @BBL H2D", "sub_path": "filament/Bambu PLA Galaxy @BBL H2D.json" @@ -5401,6 +5957,26 @@ "name": "Bambu PLA Glow @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Glow @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Glow @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Glow @BBL H2C", + "sub_path": "filament/Bambu PLA Glow @BBL H2C.json" + }, + { + "name": "Bambu PLA Glow @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Glow @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Glow @BBL H2D", "sub_path": "filament/Bambu PLA Glow @BBL H2D.json" @@ -5477,6 +6053,34 @@ "name": "Bambu PLA Lite @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Lite @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Lite @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Lite @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Lite @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Lite @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Lite @BBL H2C", + "sub_path": "filament/Bambu PLA Lite @BBL H2C.json" + }, + { + "name": "Bambu PLA Lite @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Lite @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Lite @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Lite @BBL H2D", "sub_path": "filament/Bambu PLA Lite @BBL H2D.json" @@ -5569,6 +6173,26 @@ "name": "Bambu PLA Marble @BBL A1M", "sub_path": "filament/Bambu PLA Marble @BBL A1M.json" }, + { + "name": "Bambu PLA Marble @BBL A2L", + "sub_path": "filament/Bambu PLA Marble @BBL A2L.json" + }, + { + "name": "Bambu PLA Marble @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Marble @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Marble @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Marble @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Marble @BBL H2C", + "sub_path": "filament/Bambu PLA Marble @BBL H2C.json" + }, + { + "name": "Bambu PLA Marble @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Marble @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Marble @BBL H2D", "sub_path": "filament/Bambu PLA Marble @BBL H2D.json" @@ -5625,6 +6249,38 @@ "name": "Bambu PLA Matte @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Matte @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL H2C", + "sub_path": "filament/Bambu PLA Matte @BBL H2C.json" + }, + { + "name": "Bambu PLA Matte @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Matte @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu PLA Matte @BBL H2D", "sub_path": "filament/Bambu PLA Matte @BBL H2D.json" @@ -5741,6 +6397,34 @@ "name": "Bambu PLA Metal @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Metal @BBL A2L", + "sub_path": "filament/Bambu PLA Metal @BBL A2L.json" + }, + { + "name": "Bambu PLA Metal @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Metal @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Metal @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Metal @BBL H2C", + "sub_path": "filament/Bambu PLA Metal @BBL H2C.json" + }, + { + "name": "Bambu PLA Metal @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Metal @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Metal @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Metal @BBL H2D", "sub_path": "filament/Bambu PLA Metal @BBL H2D.json" @@ -5813,6 +6497,62 @@ "name": "Bambu PLA Metal @BBL X2D 0.4 nozzle", "sub_path": "filament/Bambu PLA Metal @BBL X2D 0.4 nozzle.json" }, + { + "name": "Bambu PLA Pure @BBL A2L", + "sub_path": "filament/Bambu PLA Pure @BBL A2L.json" + }, + { + "name": "Bambu PLA Pure @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2C", + "sub_path": "filament/Bambu PLA Pure @BBL H2C.json" + }, + { + "name": "Bambu PLA Pure @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2D", + "sub_path": "filament/Bambu PLA Pure @BBL H2D.json" + }, + { + "name": "Bambu PLA Pure @BBL H2D 0.2 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2D 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2D 0.8 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2D 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2DP", + "sub_path": "filament/Bambu PLA Pure @BBL H2DP.json" + }, + { + "name": "Bambu PLA Pure @BBL H2DP 0.2 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2DP 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2DP 0.8 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2DP 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Pure @BBL H2S", + "sub_path": "filament/Bambu PLA Pure @BBL H2S.json" + }, + { + "name": "Bambu PLA Pure @BBL H2S 0.2 nozzle", + "sub_path": "filament/Bambu PLA Pure @BBL H2S 0.2 nozzle.json" + }, { "name": "Bambu PLA Silk @BBL A1", "sub_path": "filament/Bambu PLA Silk @BBL A1.json" @@ -5829,6 +6569,34 @@ "name": "Bambu PLA Silk @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Silk @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL H2C", + "sub_path": "filament/Bambu PLA Silk @BBL H2C.json" + }, + { + "name": "Bambu PLA Silk @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Silk @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Silk @BBL H2D", "sub_path": "filament/Bambu PLA Silk @BBL H2D.json" @@ -5917,6 +6685,34 @@ "name": "Bambu PLA Silk+ @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Silk+ @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Silk+ @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL H2C", + "sub_path": "filament/Bambu PLA Silk+ @BBL H2C.json" + }, + { + "name": "Bambu PLA Silk+ @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Silk+ @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Silk+ @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Silk+ @BBL H2D", "sub_path": "filament/Bambu PLA Silk+ @BBL H2D.json" @@ -5997,6 +6793,26 @@ "name": "Bambu PLA Sparkle @BBL A1M", "sub_path": "filament/Bambu PLA Sparkle @BBL A1M.json" }, + { + "name": "Bambu PLA Sparkle @BBL A2L", + "sub_path": "filament/Bambu PLA Sparkle @BBL A2L.json" + }, + { + "name": "Bambu PLA Sparkle @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Sparkle @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Sparkle @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Sparkle @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Sparkle @BBL H2C", + "sub_path": "filament/Bambu PLA Sparkle @BBL H2C.json" + }, + { + "name": "Bambu PLA Sparkle @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Sparkle @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Sparkle @BBL H2D", "sub_path": "filament/Bambu PLA Sparkle @BBL H2D.json" @@ -6057,6 +6873,26 @@ "name": "Bambu PLA Tough @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Tough @BBL A2L", + "sub_path": "filament/Bambu PLA Tough @BBL A2L.json" + }, + { + "name": "Bambu PLA Tough @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough @BBL H2C", + "sub_path": "filament/Bambu PLA Tough @BBL H2C.json" + }, + { + "name": "Bambu PLA Tough @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Tough @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Tough @BBL H2D", "sub_path": "filament/Bambu PLA Tough @BBL H2D.json" @@ -6137,6 +6973,38 @@ "name": "Bambu PLA Tough+ @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PLA Tough+ @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PLA Tough+ @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL A2L 0.4 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.4 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL H2C", + "sub_path": "filament/Bambu PLA Tough+ @BBL H2C.json" + }, + { + "name": "Bambu PLA Tough+ @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL H2C 0.6 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Tough+ @BBL H2C 0.8 nozzle", + "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.8 nozzle.json" + }, { "name": "Bambu PLA Tough+ @BBL H2D", "sub_path": "filament/Bambu PLA Tough+ @BBL H2D.json" @@ -6261,6 +7129,30 @@ "name": "Bambu PLA Translucent @BBL A1M 0.8 nozzle", "sub_path": "filament/Bambu PLA Translucent @BBL A1M 0.8 nozzle.json" }, + { + "name": "Bambu PLA Translucent @BBL A2L", + "sub_path": "filament/Bambu PLA Translucent @BBL A2L.json" + }, + { + "name": "Bambu PLA Translucent @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu PLA Translucent @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Translucent @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Translucent @BBL H2C", + "sub_path": "filament/Bambu PLA Translucent @BBL H2C.json" + }, + { + "name": "Bambu PLA Translucent @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu PLA Translucent @BBL H2C 0.2 nozzle.json" + }, { "name": "Bambu PLA Translucent @BBL H2D", "sub_path": "filament/Bambu PLA Translucent @BBL H2D.json" @@ -6357,6 +7249,26 @@ "name": "Bambu PLA Wood @BBL A1M", "sub_path": "filament/Bambu PLA Wood @BBL A1M.json" }, + { + "name": "Bambu PLA Wood @BBL A2L", + "sub_path": "filament/Bambu PLA Wood @BBL A2L.json" + }, + { + "name": "Bambu PLA Wood @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA Wood @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA Wood @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA Wood @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA Wood @BBL H2C", + "sub_path": "filament/Bambu PLA Wood @BBL H2C.json" + }, + { + "name": "Bambu PLA Wood @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA Wood @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA Wood @BBL H2D", "sub_path": "filament/Bambu PLA Wood @BBL H2D.json" @@ -6429,6 +7341,26 @@ "name": "Bambu PLA-CF @BBL A1M 0.8 nozzle", "sub_path": "filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json" }, + { + "name": "Bambu PLA-CF @BBL A2L", + "sub_path": "filament/Bambu PLA-CF @BBL A2L.json" + }, + { + "name": "Bambu PLA-CF @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu PLA-CF @BBL H2C", + "sub_path": "filament/Bambu PLA-CF @BBL H2C.json" + }, + { + "name": "Bambu PLA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PLA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PLA-CF @BBL H2D 0.4 nozzle", "sub_path": "filament/Bambu PLA-CF @BBL H2D 0.4 nozzle.json" @@ -6497,6 +7429,34 @@ "name": "Bambu Support For PLA @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu Support For PLA @BBL A2L", + "sub_path": "filament/Bambu Support For PLA @BBL A2L.json" + }, + { + "name": "Bambu Support For PLA @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL H2C", + "sub_path": "filament/Bambu Support For PLA @BBL H2C.json" + }, + { + "name": "Bambu Support For PLA @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support For PLA @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support For PLA @BBL H2D", "sub_path": "filament/Bambu Support For PLA @BBL H2D.json" @@ -6573,6 +7533,26 @@ "name": "Bambu Support For PLA/PETG @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu Support For PLA/PETG @BBL A2L", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A2L.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL H2C", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu Support For PLA/PETG @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support For PLA/PETG @BBL H2D", "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2D.json" @@ -6649,6 +7629,26 @@ "name": "Bambu Support W @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu Support W @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu Support W @BBL A2L", + "sub_path": "filament/Bambu Support W @BBL A2L.json" + }, + { + "name": "Bambu Support W @BBL A2L 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL H2C", + "sub_path": "filament/Bambu Support W @BBL H2C.json" + }, + { + "name": "Bambu Support W @BBL H2C 0.2 nozzle", + "sub_path": "filament/Bambu Support W @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Bambu Support W @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu Support W @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu Support W @BBL H2D", "sub_path": "filament/Bambu Support W @BBL H2D.json" @@ -6737,6 +7737,26 @@ "name": "Generic PLA @BBL A1M 0.2 nozzle", "sub_path": "filament/Generic PLA @BBL A1M 0.2 nozzle.json" }, + { + "name": "Generic PLA @BBL A2L", + "sub_path": "filament/Generic PLA @BBL A2L.json" + }, + { + "name": "Generic PLA @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic PLA @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic PLA @BBL H2C", + "sub_path": "filament/Generic PLA @BBL H2C.json" + }, + { + "name": "Generic PLA @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PLA @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PLA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PLA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PLA @BBL H2D", "sub_path": "filament/Generic PLA @BBL H2D.json" @@ -6829,6 +7849,26 @@ "name": "Generic PLA High Speed @BBL A1M", "sub_path": "filament/Generic PLA High Speed @BBL A1M.json" }, + { + "name": "Generic PLA High Speed @BBL A2L", + "sub_path": "filament/Generic PLA High Speed @BBL A2L.json" + }, + { + "name": "Generic PLA High Speed @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL H2C", + "sub_path": "filament/Generic PLA High Speed @BBL H2C.json" + }, + { + "name": "Generic PLA High Speed @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PLA High Speed @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PLA High Speed @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PLA High Speed @BBL H2D", "sub_path": "filament/Generic PLA High Speed @BBL H2D.json" @@ -6893,6 +7933,18 @@ "name": "Generic PLA Silk @BBL A1M", "sub_path": "filament/Generic PLA Silk @BBL A1M.json" }, + { + "name": "Generic PLA Silk @BBL A2L", + "sub_path": "filament/Generic PLA Silk @BBL A2L.json" + }, + { + "name": "Generic PLA Silk @BBL H2C", + "sub_path": "filament/Generic PLA Silk @BBL H2C.json" + }, + { + "name": "Generic PLA Silk @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PLA Silk @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PLA Silk @BBL H2D", "sub_path": "filament/Generic PLA Silk @BBL H2D.json" @@ -6937,6 +7989,18 @@ "name": "Generic PLA-CF @BBL A1M", "sub_path": "filament/Generic PLA-CF @BBL A1M.json" }, + { + "name": "Generic PLA-CF @BBL A2L", + "sub_path": "filament/Generic PLA-CF @BBL A2L.json" + }, + { + "name": "Generic PLA-CF @BBL H2C", + "sub_path": "filament/Generic PLA-CF @BBL H2C.json" + }, + { + "name": "Generic PLA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PLA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PLA-CF @BBL H2D", "sub_path": "filament/Generic PLA-CF @BBL H2D.json" @@ -8401,6 +9465,18 @@ "name": "Generic PP @BBL A1M", "sub_path": "filament/Generic PP @BBL A1M.json" }, + { + "name": "Generic PP @BBL A2L", + "sub_path": "filament/Generic PP @BBL A2L.json" + }, + { + "name": "Generic PP @BBL H2C", + "sub_path": "filament/Generic PP @BBL H2C.json" + }, + { + "name": "Generic PP @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PP @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PP @BBL H2D", "sub_path": "filament/Generic PP @BBL H2D.json" @@ -8433,6 +9509,14 @@ "name": "Generic PP-CF @BBL A1", "sub_path": "filament/Generic PP-CF @BBL A1.json" }, + { + "name": "Generic PP-CF @BBL H2C", + "sub_path": "filament/Generic PP-CF @BBL H2C.json" + }, + { + "name": "Generic PP-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PP-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PP-CF @BBL H2D", "sub_path": "filament/Generic PP-CF @BBL H2D.json" @@ -8465,6 +9549,14 @@ "name": "Generic PP-GF @BBL A1", "sub_path": "filament/Generic PP-GF @BBL A1.json" }, + { + "name": "Generic PP-GF @BBL H2C", + "sub_path": "filament/Generic PP-GF @BBL H2C.json" + }, + { + "name": "Generic PP-GF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PP-GF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PP-GF @BBL H2D", "sub_path": "filament/Generic PP-GF @BBL H2D.json" @@ -8493,6 +9585,14 @@ "name": "Generic PP-GF @BBL X2D 0.4 nozzle", "sub_path": "filament/Generic PP-GF @BBL X2D 0.4 nozzle.json" }, + { + "name": "Bambu PPA-CF @BBL H2C", + "sub_path": "filament/Bambu PPA-CF @BBL H2C.json" + }, + { + "name": "Bambu PPA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PPA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PPA-CF @BBL H2D", "sub_path": "filament/Bambu PPA-CF @BBL H2D.json" @@ -8525,6 +9625,14 @@ "name": "Bambu PPA-CF @BBL X2D 0.4 nozzle", "sub_path": "filament/Bambu PPA-CF @BBL X2D 0.4 nozzle.json" }, + { + "name": "Generic PPA-CF @BBL H2C", + "sub_path": "filament/Generic PPA-CF @BBL H2C.json" + }, + { + "name": "Generic PPA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PPA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PPA-CF @BBL H2D", "sub_path": "filament/Generic PPA-CF @BBL H2D.json" @@ -8557,6 +9665,14 @@ "name": "Generic PPA-CF @BBL X2D 0.4 nozzle", "sub_path": "filament/Generic PPA-CF @BBL X2D 0.4 nozzle.json" }, + { + "name": "Generic PPA-GF @BBL H2C", + "sub_path": "filament/Generic PPA-GF @BBL H2C.json" + }, + { + "name": "Generic PPA-GF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PPA-GF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PPA-GF @BBL H2D", "sub_path": "filament/Generic PPA-GF @BBL H2D.json" @@ -8589,6 +9705,14 @@ "name": "Generic PPA-GF @BBL X2D 0.4 nozzle", "sub_path": "filament/Generic PPA-GF @BBL X2D 0.4 nozzle.json" }, + { + "name": "Bambu PPS-CF @BBL H2C", + "sub_path": "filament/Bambu PPS-CF @BBL H2C.json" + }, + { + "name": "Bambu PPS-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PPS-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PPS-CF @BBL H2D", "sub_path": "filament/Bambu PPS-CF @BBL H2D.json" @@ -8605,6 +9729,14 @@ "name": "Bambu PPS-CF @BBL X1E", "sub_path": "filament/Bambu PPS-CF @BBL X1E.json" }, + { + "name": "Generic PPS @BBL H2C", + "sub_path": "filament/Generic PPS @BBL H2C.json" + }, + { + "name": "Generic PPS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PPS @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PPS @BBL H2D", "sub_path": "filament/Generic PPS @BBL H2D.json" @@ -8621,6 +9753,14 @@ "name": "Generic PPS @BBL X1E", "sub_path": "filament/Generic PPS @BBL X1E.json" }, + { + "name": "Generic PPS-CF @BBL H2C", + "sub_path": "filament/Generic PPS-CF @BBL H2C.json" + }, + { + "name": "Generic PPS-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PPS-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PPS-CF @BBL H2D", "sub_path": "filament/Generic PPS-CF @BBL H2D.json" @@ -8653,6 +9793,18 @@ "name": "Bambu PVA @BBL A1M 0.2 nozzle", "sub_path": "filament/Bambu PVA @BBL A1M 0.2 nozzle.json" }, + { + "name": "Bambu PVA @BBL A2L", + "sub_path": "filament/Bambu PVA @BBL A2L.json" + }, + { + "name": "Bambu PVA @BBL H2C", + "sub_path": "filament/Bambu PVA @BBL H2C.json" + }, + { + "name": "Bambu PVA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu PVA @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu PVA @BBL H2D", "sub_path": "filament/Bambu PVA @BBL H2D.json" @@ -8717,6 +9869,26 @@ "name": "Generic PVA @BBL A1M 0.2 nozzle", "sub_path": "filament/Generic PVA @BBL A1M 0.2 nozzle.json" }, + { + "name": "Generic PVA @BBL A2L", + "sub_path": "filament/Generic PVA @BBL A2L.json" + }, + { + "name": "Generic PVA @BBL A2L 0.2 nozzle", + "sub_path": "filament/Generic PVA @BBL A2L 0.2 nozzle.json" + }, + { + "name": "Generic PVA @BBL H2C", + "sub_path": "filament/Generic PVA @BBL H2C.json" + }, + { + "name": "Generic PVA @BBL H2C 0.2 nozzle", + "sub_path": "filament/Generic PVA @BBL H2C 0.2 nozzle.json" + }, + { + "name": "Generic PVA @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PVA @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PVA @BBL H2D", "sub_path": "filament/Generic PVA @BBL H2D.json" @@ -8861,6 +10033,18 @@ "name": "BETA TPU Matte @BBL X1C", "sub_path": "filament/BETA/BETA TPU Matte @BBL X1C.json" }, + { + "name": "Bambu TPU 85A @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu TPU 85A @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu TPU 85A @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu TPU 85A @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu TPU 85A @BBL H2C", + "sub_path": "filament/Bambu TPU 85A @BBL H2C.json" + }, { "name": "Bambu TPU 85A @BBL H2D", "sub_path": "filament/Bambu TPU 85A @BBL H2D.json" @@ -8921,6 +10105,26 @@ "name": "Bambu TPU 90A @BBL A1M", "sub_path": "filament/Bambu TPU 90A @BBL A1M.json" }, + { + "name": "Bambu TPU 90A @BBL A2L", + "sub_path": "filament/Bambu TPU 90A @BBL A2L.json" + }, + { + "name": "Bambu TPU 90A @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu TPU 90A @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu TPU 90A @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu TPU 90A @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu TPU 90A @BBL H2C", + "sub_path": "filament/Bambu TPU 90A @BBL H2C.json" + }, + { + "name": "Bambu TPU 90A @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu TPU 90A @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu TPU 90A @BBL H2D", "sub_path": "filament/Bambu TPU 90A @BBL H2D.json" @@ -8997,6 +10201,18 @@ "name": "Bambu TPU 95A @BBL A1M", "sub_path": "filament/Bambu TPU 95A @BBL A1M.json" }, + { + "name": "Bambu TPU 95A @BBL A2L", + "sub_path": "filament/Bambu TPU 95A @BBL A2L.json" + }, + { + "name": "Bambu TPU 95A @BBL H2C", + "sub_path": "filament/Bambu TPU 95A @BBL H2C.json" + }, + { + "name": "Bambu TPU 95A @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu TPU 95A @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu TPU 95A @BBL H2D", "sub_path": "filament/Bambu TPU 95A @BBL H2D.json" @@ -9041,22 +10257,34 @@ "name": "Bambu TPU 95A HF @BBL A1M", "sub_path": "filament/Bambu TPU 95A HF @BBL A1M.json" }, + { + "name": "Bambu TPU 95A HF @BBL A2L", + "sub_path": "filament/Bambu TPU 95A HF @BBL A2L.json" + }, + { + "name": "Bambu TPU 95A HF @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu TPU 95A HF @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu TPU 95A HF @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu TPU 95A HF @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu TPU 95A HF @BBL H2C", + "sub_path": "filament/Bambu TPU 95A HF @BBL H2C.json" + }, + { + "name": "Bambu TPU 95A HF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu TPU 95A HF @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu TPU 95A HF @BBL H2D", "sub_path": "filament/Bambu TPU 95A HF @BBL H2D.json" }, - { - "name": "Bambu TPU 95A HF @BBL H2D 0.4 nozzle", - "sub_path": "filament/Bambu TPU 95A HF @BBL H2D 0.4 nozzle.json" - }, { "name": "Bambu TPU 95A HF @BBL H2DP", "sub_path": "filament/Bambu TPU 95A HF @BBL H2DP.json" }, - { - "name": "Bambu TPU 95A HF @BBL H2DP 0.4 nozzle", - "sub_path": "filament/Bambu TPU 95A HF @BBL H2DP 0.4 nozzle.json" - }, { "name": "Bambu TPU 95A HF @BBL H2S", "sub_path": "filament/Bambu TPU 95A HF @BBL H2S.json" @@ -9101,6 +10329,26 @@ "name": "Bambu TPU for AMS @BBL A1M", "sub_path": "filament/Bambu TPU for AMS @BBL A1M.json" }, + { + "name": "Bambu TPU for AMS @BBL A2L", + "sub_path": "filament/Bambu TPU for AMS @BBL A2L.json" + }, + { + "name": "Bambu TPU for AMS @BBL A2L 0.6 nozzle", + "sub_path": "filament/Bambu TPU for AMS @BBL A2L 0.6 nozzle.json" + }, + { + "name": "Bambu TPU for AMS @BBL A2L 0.8 nozzle", + "sub_path": "filament/Bambu TPU for AMS @BBL A2L 0.8 nozzle.json" + }, + { + "name": "Bambu TPU for AMS @BBL H2C", + "sub_path": "filament/Bambu TPU for AMS @BBL H2C.json" + }, + { + "name": "Bambu TPU for AMS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Bambu TPU for AMS @BBL H2C 0.4 nozzle.json" + }, { "name": "Bambu TPU for AMS @BBL H2D", "sub_path": "filament/Bambu TPU for AMS @BBL H2D.json" @@ -9137,6 +10385,14 @@ "name": "Generic TPU", "sub_path": "filament/Generic TPU.json" }, + { + "name": "Generic TPU @BBL H2C", + "sub_path": "filament/Generic TPU @BBL H2C.json" + }, + { + "name": "Generic TPU @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic TPU @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic TPU @BBL H2D", "sub_path": "filament/Generic TPU @BBL H2D.json" @@ -9181,6 +10437,18 @@ "name": "Generic TPU for AMS @BBL A1M", "sub_path": "filament/Generic TPU for AMS @BBL A1M.json" }, + { + "name": "Generic TPU for AMS @BBL A2L", + "sub_path": "filament/Generic TPU for AMS @BBL A2L.json" + }, + { + "name": "Generic TPU for AMS @BBL H2C", + "sub_path": "filament/Generic TPU for AMS @BBL H2C.json" + }, + { + "name": "Generic TPU for AMS @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic TPU for AMS @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic TPU for AMS @BBL H2D", "sub_path": "filament/Generic TPU for AMS @BBL H2D.json" @@ -9273,6 +10541,14 @@ "name": "Generic PA-CF @BBL A1", "sub_path": "filament/Generic PA-CF @BBL A1.json" }, + { + "name": "Generic PA-CF @BBL H2C", + "sub_path": "filament/Generic PA-CF @BBL H2C.json" + }, + { + "name": "Generic PA-CF @BBL H2C 0.4 nozzle", + "sub_path": "filament/Generic PA-CF @BBL H2C 0.4 nozzle.json" + }, { "name": "Generic PA-CF @BBL H2D", "sub_path": "filament/Generic PA-CF @BBL H2D.json" @@ -9425,6 +10701,14 @@ "name": "PolyTerra PLA @BBL X1C 0.2 nozzle", "sub_path": "filament/Polymaker/PolyTerra PLA @BBL X1C 0.2 nozzle.json" }, + { + "name": "Bambu TPU 95A HF @BBL H2D 0.4 nozzle", + "sub_path": "filament/Bambu TPU 95A HF @BBL H2D 0.4 nozzle.json" + }, + { + "name": "Bambu TPU 95A HF @BBL H2DP 0.4 nozzle", + "sub_path": "filament/Bambu TPU 95A HF @BBL H2DP 0.4 nozzle.json" + }, { "name": "Generic TPU @BBL A1", "sub_path": "filament/Generic TPU @BBL A1.json" @@ -9433,6 +10717,10 @@ "name": "Generic TPU @BBL A1M", "sub_path": "filament/Generic TPU @BBL A1M.json" }, + { + "name": "Generic TPU @BBL A2L", + "sub_path": "filament/Generic TPU @BBL A2L.json" + }, { "name": "Generic TPU @BBL H2S", "sub_path": "filament/Generic TPU @BBL H2S.json" @@ -9992,1294 +11280,6 @@ { "name": "fdm_filament_dual_common", "sub_path": "filament/fdm_filament_dual_common.json" - }, - { - "name": "Bambu ABS @BBL H2C", - "sub_path": "filament/Bambu ABS @BBL H2C.json" - }, - { - "name": "Bambu ABS @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu ABS @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu ABS @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu ABS @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu ABS @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu ABS @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu ABS-GF @BBL H2C", - "sub_path": "filament/Bambu ABS-GF @BBL H2C.json" - }, - { - "name": "Bambu ABS-GF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu ABS-GF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu ASA @BBL H2C", - "sub_path": "filament/Bambu ASA @BBL H2C.json" - }, - { - "name": "Bambu ASA @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu ASA @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu ASA @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu ASA @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu ASA @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu ASA @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu ASA-Aero @BBL H2C", - "sub_path": "filament/Bambu ASA-Aero @BBL H2C.json" - }, - { - "name": "Bambu ASA-Aero @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu ASA-Aero @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu ASA-CF @BBL H2C", - "sub_path": "filament/Bambu ASA-CF @BBL H2C.json" - }, - { - "name": "Bambu ASA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu ASA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PA-CF @BBL H2C", - "sub_path": "filament/Bambu PA-CF @BBL H2C.json" - }, - { - "name": "Bambu PA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PA6-CF @BBL H2C", - "sub_path": "filament/Bambu PA6-CF @BBL H2C.json" - }, - { - "name": "Bambu PA6-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PA6-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PA6-GF @BBL H2C", - "sub_path": "filament/Bambu PA6-GF @BBL H2C.json" - }, - { - "name": "Bambu PA6-GF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PA6-GF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PAHT-CF @BBL H2C", - "sub_path": "filament/Bambu PAHT-CF @BBL H2C.json" - }, - { - "name": "Bambu PAHT-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PAHT-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PC @BBL H2C", - "sub_path": "filament/Bambu PC @BBL H2C.json" - }, - { - "name": "Bambu PC @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PC @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PC @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu PC @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu PC @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu PC @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu PC FR @BBL H2C", - "sub_path": "filament/Bambu PC FR @BBL H2C.json" - }, - { - "name": "Bambu PC FR @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PC FR @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PC FR @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PC FR @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PET-CF @BBL H2C", - "sub_path": "filament/Bambu PET-CF @BBL H2C.json" - }, - { - "name": "Bambu PET-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PET-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL H2C", - "sub_path": "filament/Bambu PETG Basic @BBL H2C.json" - }, - { - "name": "Bambu PETG Basic @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Basic @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PETG Basic @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL A2L", - "sub_path": "filament/Bambu PETG HF @BBL A2L.json" - }, - { - "name": "Bambu PETG HF @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL H2C", - "sub_path": "filament/Bambu PETG HF @BBL H2C.json" - }, - { - "name": "Bambu PETG HF @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu PETG HF @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu PETG HF @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A2L", - "sub_path": "filament/Bambu PETG Translucent @BBL A2L.json" - }, - { - "name": "Bambu PETG Translucent @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL H2C", - "sub_path": "filament/Bambu PETG Translucent @BBL H2C.json" - }, - { - "name": "Bambu PETG Translucent @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PETG Translucent @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PETG Translucent @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL A2L", - "sub_path": "filament/Bambu PETG-CF @BBL A2L.json" - }, - { - "name": "Bambu PETG-CF @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PETG-CF @BBL H2C", - "sub_path": "filament/Bambu PETG-CF @BBL H2C.json" - }, - { - "name": "Bambu PETG-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PETG-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Aero @BBL A2L", - "sub_path": "filament/Bambu PLA Aero @BBL A2L.json" - }, - { - "name": "Bambu PLA Aero @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Aero @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Aero @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Aero @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Aero @BBL H2C", - "sub_path": "filament/Bambu PLA Aero @BBL H2C.json" - }, - { - "name": "Bambu PLA Aero @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Aero @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL H2C", - "sub_path": "filament/Bambu PLA Basic @BBL H2C.json" - }, - { - "name": "Bambu PLA Basic @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Basic @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Basic @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A2L", - "sub_path": "filament/Bambu PLA Dynamic @BBL A2L.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL H2C", - "sub_path": "filament/Bambu PLA Dynamic @BBL H2C.json" - }, - { - "name": "Bambu PLA Dynamic @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Dynamic @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Dynamic @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A2L", - "sub_path": "filament/Bambu PLA Galaxy @BBL A2L.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL H2C", - "sub_path": "filament/Bambu PLA Galaxy @BBL H2C.json" - }, - { - "name": "Bambu PLA Galaxy @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Galaxy @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Galaxy @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Glow @BBL H2C", - "sub_path": "filament/Bambu PLA Glow @BBL H2C.json" - }, - { - "name": "Bambu PLA Glow @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Glow @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL H2C", - "sub_path": "filament/Bambu PLA Lite @BBL H2C.json" - }, - { - "name": "Bambu PLA Lite @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Lite @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Lite @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Marble @BBL A2L", - "sub_path": "filament/Bambu PLA Marble @BBL A2L.json" - }, - { - "name": "Bambu PLA Marble @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Marble @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Marble @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Marble @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Marble @BBL H2C", - "sub_path": "filament/Bambu PLA Marble @BBL H2C.json" - }, - { - "name": "Bambu PLA Marble @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Marble @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL H2C", - "sub_path": "filament/Bambu PLA Matte @BBL H2C.json" - }, - { - "name": "Bambu PLA Matte @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Matte @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Matte @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Metal @BBL A2L", - "sub_path": "filament/Bambu PLA Metal @BBL A2L.json" - }, - { - "name": "Bambu PLA Metal @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Metal @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Metal @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Metal @BBL H2C", - "sub_path": "filament/Bambu PLA Metal @BBL H2C.json" - }, - { - "name": "Bambu PLA Metal @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Metal @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Metal @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Pure @base", - "sub_path": "filament/Bambu PLA Pure @base.json" - }, - { - "name": "Bambu PLA Pure @BBL A2L", - "sub_path": "filament/Bambu PLA Pure @BBL A2L.json" - }, - { - "name": "Bambu PLA Pure @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2C", - "sub_path": "filament/Bambu PLA Pure @BBL H2C.json" - }, - { - "name": "Bambu PLA Pure @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2D", - "sub_path": "filament/Bambu PLA Pure @BBL H2D.json" - }, - { - "name": "Bambu PLA Pure @BBL H2D 0.2 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2D 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2D 0.8 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2D 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2DP", - "sub_path": "filament/Bambu PLA Pure @BBL H2DP.json" - }, - { - "name": "Bambu PLA Pure @BBL H2DP 0.2 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2DP 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2DP 0.8 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2DP 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Pure @BBL H2S", - "sub_path": "filament/Bambu PLA Pure @BBL H2S.json" - }, - { - "name": "Bambu PLA Pure @BBL H2S 0.2 nozzle", - "sub_path": "filament/Bambu PLA Pure @BBL H2S 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL H2C", - "sub_path": "filament/Bambu PLA Silk @BBL H2C.json" - }, - { - "name": "Bambu PLA Silk @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Silk @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL H2C", - "sub_path": "filament/Bambu PLA Silk+ @BBL H2C.json" - }, - { - "name": "Bambu PLA Silk+ @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Silk+ @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Silk+ @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Sparkle @BBL A2L", - "sub_path": "filament/Bambu PLA Sparkle @BBL A2L.json" - }, - { - "name": "Bambu PLA Sparkle @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Sparkle @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Sparkle @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Sparkle @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Sparkle @BBL H2C", - "sub_path": "filament/Bambu PLA Sparkle @BBL H2C.json" - }, - { - "name": "Bambu PLA Sparkle @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Sparkle @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Tough @BBL A2L", - "sub_path": "filament/Bambu PLA Tough @BBL A2L.json" - }, - { - "name": "Bambu PLA Tough @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Tough @BBL H2C", - "sub_path": "filament/Bambu PLA Tough @BBL H2C.json" - }, - { - "name": "Bambu PLA Tough @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Tough @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Tough @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL A2L 0.4 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.4 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL H2C", - "sub_path": "filament/Bambu PLA Tough+ @BBL H2C.json" - }, - { - "name": "Bambu PLA Tough+ @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL H2C 0.6 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Tough+ @BBL H2C 0.8 nozzle", - "sub_path": "filament/Bambu PLA Tough+ @BBL H2C 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Translucent @BBL A2L", - "sub_path": "filament/Bambu PLA Translucent @BBL A2L.json" - }, - { - "name": "Bambu PLA Translucent @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Translucent @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Translucent @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Translucent @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Translucent @BBL H2C", - "sub_path": "filament/Bambu PLA Translucent @BBL H2C.json" - }, - { - "name": "Bambu PLA Translucent @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu PLA Translucent @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu PLA Wood @BBL A2L", - "sub_path": "filament/Bambu PLA Wood @BBL A2L.json" - }, - { - "name": "Bambu PLA Wood @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA Wood @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA Wood @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA Wood @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA Wood @BBL H2C", - "sub_path": "filament/Bambu PLA Wood @BBL H2C.json" - }, - { - "name": "Bambu PLA Wood @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA Wood @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL A2L", - "sub_path": "filament/Bambu PLA-CF @BBL A2L.json" - }, - { - "name": "Bambu PLA-CF @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu PLA-CF @BBL H2C", - "sub_path": "filament/Bambu PLA-CF @BBL H2C.json" - }, - { - "name": "Bambu PLA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PLA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PPA-CF @BBL H2C", - "sub_path": "filament/Bambu PPA-CF @BBL H2C.json" - }, - { - "name": "Bambu PPA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PPA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PPS-CF @BBL H2C", - "sub_path": "filament/Bambu PPS-CF @BBL H2C.json" - }, - { - "name": "Bambu PPS-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PPS-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu PVA @BBL A2L", - "sub_path": "filament/Bambu PVA @BBL A2L.json" - }, - { - "name": "Bambu PVA @BBL H2C", - "sub_path": "filament/Bambu PVA @BBL H2C.json" - }, - { - "name": "Bambu PVA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu PVA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support For PA/PET @BBL H2C", - "sub_path": "filament/Bambu Support For PA PET @BBL H2C.json" - }, - { - "name": "Bambu Support For PA/PET @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support For PA PET @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL A2L", - "sub_path": "filament/Bambu Support For PLA @BBL A2L.json" - }, - { - "name": "Bambu Support For PLA @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL H2C", - "sub_path": "filament/Bambu Support For PLA @BBL H2C.json" - }, - { - "name": "Bambu Support For PLA @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support For PLA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A2L", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A2L.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL H2C", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu Support For PLA/PETG @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support For PLA-PETG @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support G @BBL H2C", - "sub_path": "filament/Bambu Support G @BBL H2C.json" - }, - { - "name": "Bambu Support G @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support G @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support W @BBL A2L", - "sub_path": "filament/Bambu Support W @BBL A2L.json" - }, - { - "name": "Bambu Support W @BBL A2L 0.2 nozzle", - "sub_path": "filament/Bambu Support W @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Bambu Support W @BBL H2C", - "sub_path": "filament/Bambu Support W @BBL H2C.json" - }, - { - "name": "Bambu Support W @BBL H2C 0.2 nozzle", - "sub_path": "filament/Bambu Support W @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Bambu Support W @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support W @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Support for ABS @BBL H2C", - "sub_path": "filament/Bambu Support for ABS @BBL H2C.json" - }, - { - "name": "Bambu Support for ABS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu Support for ABS @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu TPU 85A @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu TPU 85A @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu TPU 85A @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu TPU 85A @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu TPU 85A @BBL H2C", - "sub_path": "filament/Bambu TPU 85A @BBL H2C.json" - }, - { - "name": "Bambu TPU 90A @BBL A2L", - "sub_path": "filament/Bambu TPU 90A @BBL A2L.json" - }, - { - "name": "Bambu TPU 90A @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu TPU 90A @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu TPU 90A @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu TPU 90A @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu TPU 90A @BBL H2C", - "sub_path": "filament/Bambu TPU 90A @BBL H2C.json" - }, - { - "name": "Bambu TPU 90A @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu TPU 90A @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu TPU 95A @BBL A2L", - "sub_path": "filament/Bambu TPU 95A @BBL A2L.json" - }, - { - "name": "Bambu TPU 95A @BBL H2C", - "sub_path": "filament/Bambu TPU 95A @BBL H2C.json" - }, - { - "name": "Bambu TPU 95A @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu TPU 95A @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu TPU 95A HF @BBL A2L", - "sub_path": "filament/Bambu TPU 95A HF @BBL A2L.json" - }, - { - "name": "Bambu TPU 95A HF @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu TPU 95A HF @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu TPU 95A HF @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu TPU 95A HF @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu TPU 95A HF @BBL H2C", - "sub_path": "filament/Bambu TPU 95A HF @BBL H2C.json" - }, - { - "name": "Bambu TPU 95A HF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu TPU 95A HF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Bambu TPU for AMS @BBL A2L", - "sub_path": "filament/Bambu TPU for AMS @BBL A2L.json" - }, - { - "name": "Bambu TPU for AMS @BBL A2L 0.6 nozzle", - "sub_path": "filament/Bambu TPU for AMS @BBL A2L 0.6 nozzle.json" - }, - { - "name": "Bambu TPU for AMS @BBL A2L 0.8 nozzle", - "sub_path": "filament/Bambu TPU for AMS @BBL A2L 0.8 nozzle.json" - }, - { - "name": "Bambu TPU for AMS @BBL H2C", - "sub_path": "filament/Bambu TPU for AMS @BBL H2C.json" - }, - { - "name": "Bambu TPU for AMS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Bambu TPU for AMS @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic ABS @BBL H2C", - "sub_path": "filament/Generic ABS @BBL H2C.json" - }, - { - "name": "Generic ABS @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic ABS @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic ABS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic ABS @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic ASA @BBL H2C", - "sub_path": "filament/Generic ASA @BBL H2C.json" - }, - { - "name": "Generic ASA @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic ASA @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic ASA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic ASA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic BVOH @BBL A2L", - "sub_path": "filament/Generic BVOH @BBL A2L.json" - }, - { - "name": "Generic BVOH @BBL H2C", - "sub_path": "filament/Generic BVOH @BBL H2C.json" - }, - { - "name": "Generic BVOH @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic BVOH @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic EVA @BBL A2L", - "sub_path": "filament/Generic EVA @BBL A2L.json" - }, - { - "name": "Generic EVA @BBL H2C", - "sub_path": "filament/Generic EVA @BBL H2C.json" - }, - { - "name": "Generic EVA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic EVA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic HIPS @BBL A2L", - "sub_path": "filament/Generic HIPS @BBL A2L.json" - }, - { - "name": "Generic HIPS @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic HIPS @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic HIPS @BBL H2C", - "sub_path": "filament/Generic HIPS @BBL H2C.json" - }, - { - "name": "Generic HIPS @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic HIPS @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic HIPS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic HIPS @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PA @BBL H2C", - "sub_path": "filament/Generic PA @BBL H2C.json" - }, - { - "name": "Generic PA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PA-CF @BBL H2C", - "sub_path": "filament/Generic PA-CF @BBL H2C.json" - }, - { - "name": "Generic PA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PC @BBL H2C", - "sub_path": "filament/Generic PC @BBL H2C.json" - }, - { - "name": "Generic PC @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PC @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PC @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PC @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PCTG @BBL A2L", - "sub_path": "filament/Generic PCTG @BBL A2L.json" - }, - { - "name": "Generic PCTG @BBL H2C", - "sub_path": "filament/Generic PCTG @BBL H2C.json" - }, - { - "name": "Generic PCTG @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PCTG @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PE @BBL A2L", - "sub_path": "filament/Generic PE @BBL A2L.json" - }, - { - "name": "Generic PE @BBL H2C", - "sub_path": "filament/Generic PE @BBL H2C.json" - }, - { - "name": "Generic PE @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PE @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PE-CF @BBL A2L", - "sub_path": "filament/Generic PE-CF @BBL A2L.json" - }, - { - "name": "Generic PE-CF @BBL H2C", - "sub_path": "filament/Generic PE-CF @BBL H2C.json" - }, - { - "name": "Generic PE-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PE-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PETG @BBL A2L", - "sub_path": "filament/Generic PETG @BBL A2L.json" - }, - { - "name": "Generic PETG @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic PETG @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic PETG @BBL H2C", - "sub_path": "filament/Generic PETG @BBL H2C.json" - }, - { - "name": "Generic PETG @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PETG @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PETG @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PETG @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PETG HF @BBL A2L", - "sub_path": "filament/Generic PETG HF @BBL A2L.json" - }, - { - "name": "Generic PETG HF @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic PETG HF @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic PETG HF @BBL H2C", - "sub_path": "filament/Generic PETG HF @BBL H2C.json" - }, - { - "name": "Generic PETG HF @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PETG HF @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PETG HF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PETG HF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PETG-CF @BBL A2L", - "sub_path": "filament/Generic PETG-CF @BBL A2L.json" - }, - { - "name": "Generic PETG-CF @BBL H2C", - "sub_path": "filament/Generic PETG-CF @BBL H2C.json" - }, - { - "name": "Generic PETG-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PETG-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PHA @BBL A2L", - "sub_path": "filament/Generic PHA @BBL A2L.json" - }, - { - "name": "Generic PHA @BBL H2C", - "sub_path": "filament/Generic PHA @BBL H2C.json" - }, - { - "name": "Generic PHA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PHA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PLA @BBL A2L", - "sub_path": "filament/Generic PLA @BBL A2L.json" - }, - { - "name": "Generic PLA @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic PLA @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic PLA @BBL H2C", - "sub_path": "filament/Generic PLA @BBL H2C.json" - }, - { - "name": "Generic PLA @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PLA @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PLA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PLA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL A2L", - "sub_path": "filament/Generic PLA High Speed @BBL A2L.json" - }, - { - "name": "Generic PLA High Speed @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL H2C", - "sub_path": "filament/Generic PLA High Speed @BBL H2C.json" - }, - { - "name": "Generic PLA High Speed @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PLA High Speed @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PLA High Speed @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PLA Silk @BBL A2L", - "sub_path": "filament/Generic PLA Silk @BBL A2L.json" - }, - { - "name": "Generic PLA Silk @BBL H2C", - "sub_path": "filament/Generic PLA Silk @BBL H2C.json" - }, - { - "name": "Generic PLA Silk @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PLA Silk @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PLA-CF @BBL A2L", - "sub_path": "filament/Generic PLA-CF @BBL A2L.json" - }, - { - "name": "Generic PLA-CF @BBL H2C", - "sub_path": "filament/Generic PLA-CF @BBL H2C.json" - }, - { - "name": "Generic PLA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PLA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PP @BBL A2L", - "sub_path": "filament/Generic PP @BBL A2L.json" - }, - { - "name": "Generic PP @BBL H2C", - "sub_path": "filament/Generic PP @BBL H2C.json" - }, - { - "name": "Generic PP @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PP @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PP-CF @BBL H2C", - "sub_path": "filament/Generic PP-CF @BBL H2C.json" - }, - { - "name": "Generic PP-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PP-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PP-GF @BBL H2C", - "sub_path": "filament/Generic PP-GF @BBL H2C.json" - }, - { - "name": "Generic PP-GF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PP-GF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PPA-CF @BBL H2C", - "sub_path": "filament/Generic PPA-CF @BBL H2C.json" - }, - { - "name": "Generic PPA-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PPA-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PPA-GF @BBL H2C", - "sub_path": "filament/Generic PPA-GF @BBL H2C.json" - }, - { - "name": "Generic PPA-GF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PPA-GF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PPS @BBL H2C", - "sub_path": "filament/Generic PPS @BBL H2C.json" - }, - { - "name": "Generic PPS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PPS @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PPS-CF @BBL H2C", - "sub_path": "filament/Generic PPS-CF @BBL H2C.json" - }, - { - "name": "Generic PPS-CF @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PPS-CF @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic PVA @BBL A2L", - "sub_path": "filament/Generic PVA @BBL A2L.json" - }, - { - "name": "Generic PVA @BBL A2L 0.2 nozzle", - "sub_path": "filament/Generic PVA @BBL A2L 0.2 nozzle.json" - }, - { - "name": "Generic PVA @BBL H2C", - "sub_path": "filament/Generic PVA @BBL H2C.json" - }, - { - "name": "Generic PVA @BBL H2C 0.2 nozzle", - "sub_path": "filament/Generic PVA @BBL H2C 0.2 nozzle.json" - }, - { - "name": "Generic PVA @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic PVA @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic TPU @BBL A2L", - "sub_path": "filament/Generic TPU @BBL A2L.json" - }, - { - "name": "Generic TPU @BBL H2C", - "sub_path": "filament/Generic TPU @BBL H2C.json" - }, - { - "name": "Generic TPU @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic TPU @BBL H2C 0.4 nozzle.json" - }, - { - "name": "Generic TPU for AMS @BBL A2L", - "sub_path": "filament/Generic TPU for AMS @BBL A2L.json" - }, - { - "name": "Generic TPU for AMS @BBL H2C", - "sub_path": "filament/Generic TPU for AMS @BBL H2C.json" - }, - { - "name": "Generic TPU for AMS @BBL H2C 0.4 nozzle", - "sub_path": "filament/Generic TPU for AMS @BBL H2C 0.4 nozzle.json" } ], "machine_list": [ @@ -11303,6 +11303,10 @@ "name": "Bambu Lab A1 mini 0.4 nozzle", "sub_path": "machine/Bambu Lab A1 mini 0.4 nozzle.json" }, + { + "name": "Bambu Lab A2L 0.4 nozzle", + "sub_path": "machine/Bambu Lab A2L 0.4 nozzle.json" + }, { "name": "Bambu Lab H2S 0.4 nozzle", "sub_path": "machine/Bambu Lab H2S 0.4 nozzle.json" @@ -11331,6 +11335,10 @@ "name": "Bambu Lab X1E 0.4 nozzle", "sub_path": "machine/Bambu Lab X1E 0.4 nozzle.json" }, + { + "name": "Bambu Lab H2C 0.4 nozzle", + "sub_path": "machine/Bambu Lab H2C 0.4 nozzle.json" + }, { "name": "Bambu Lab H2D 0.4 nozzle", "sub_path": "machine/Bambu Lab H2D 0.4 nozzle.json" @@ -11367,6 +11375,18 @@ "name": "Bambu Lab A1 mini 0.8 nozzle", "sub_path": "machine/Bambu Lab A1 mini 0.8 nozzle.json" }, + { + "name": "Bambu Lab A2L 0.2 nozzle", + "sub_path": "machine/Bambu Lab A2L 0.2 nozzle.json" + }, + { + "name": "Bambu Lab A2L 0.6 nozzle", + "sub_path": "machine/Bambu Lab A2L 0.6 nozzle.json" + }, + { + "name": "Bambu Lab A2L 0.8 nozzle", + "sub_path": "machine/Bambu Lab A2L 0.8 nozzle.json" + }, { "name": "Bambu Lab H2S 0.2 nozzle", "sub_path": "machine/Bambu Lab H2S 0.2 nozzle.json" @@ -11451,6 +11471,18 @@ "name": "Bambu Lab X1E 0.8 nozzle", "sub_path": "machine/Bambu Lab X1E 0.8 nozzle.json" }, + { + "name": "Bambu Lab H2C 0.2 nozzle", + "sub_path": "machine/Bambu Lab H2C 0.2 nozzle.json" + }, + { + "name": "Bambu Lab H2C 0.6 nozzle", + "sub_path": "machine/Bambu Lab H2C 0.6 nozzle.json" + }, + { + "name": "Bambu Lab H2C 0.8 nozzle", + "sub_path": "machine/Bambu Lab H2C 0.8 nozzle.json" + }, { "name": "Bambu Lab H2D 0.2 nozzle", "sub_path": "machine/Bambu Lab H2D 0.2 nozzle.json" @@ -11486,38 +11518,6 @@ { "name": "Bambu Lab X2D 0.8 nozzle", "sub_path": "machine/Bambu Lab X2D 0.8 nozzle.json" - }, - { - "name": "Bambu Lab A2L 0.4 nozzle", - "sub_path": "machine/Bambu Lab A2L 0.4 nozzle.json" - }, - { - "name": "Bambu Lab A2L 0.2 nozzle", - "sub_path": "machine/Bambu Lab A2L 0.2 nozzle.json" - }, - { - "name": "Bambu Lab A2L 0.6 nozzle", - "sub_path": "machine/Bambu Lab A2L 0.6 nozzle.json" - }, - { - "name": "Bambu Lab A2L 0.8 nozzle", - "sub_path": "machine/Bambu Lab A2L 0.8 nozzle.json" - }, - { - "name": "Bambu Lab H2C 0.4 nozzle", - "sub_path": "machine/Bambu Lab H2C 0.4 nozzle.json" - }, - { - "name": "Bambu Lab H2C 0.2 nozzle", - "sub_path": "machine/Bambu Lab H2C 0.2 nozzle.json" - }, - { - "name": "Bambu Lab H2C 0.6 nozzle", - "sub_path": "machine/Bambu Lab H2C 0.6 nozzle.json" - }, - { - "name": "Bambu Lab H2C 0.8 nozzle", - "sub_path": "machine/Bambu Lab H2C 0.8 nozzle.json" } ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json index ecc4aa62f4..cb237f18d4 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "105" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json index 3d4fbe9c88..b97552d7be 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json index 5486b65d44..a9af61a692 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json index 1881e454f5..2c0ba3a07d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json index e0696d14fe..70c9d23c7e 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json index d64bb0629e..cf406059c4 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json index 6a4af4f908..0bc31baa96 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "75" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json index ff647879dc..af7b7a58ce 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "70" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json index fdbaa361f2..1a2f3fc199 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "75" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json index 12849a851d..d39f99b6a1 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "70" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json index bdbecc7722..b4bf97f5ef 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "80" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json index a466f88b0a..b93d234c7d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "75" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json index a5c78fe215..a67766a158 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "80" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json index f32705ba65..230487e7b9 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json index fa2c0e9ae0..d127ef80bb 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json index 1dc1796d4b..1a4b6ce91b 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "75" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json index f64767d1e3..d149f1cccd 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json index 1bbfb305b2..50d8e0f6ca 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json index 99ec158160..219c0d4384 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "60" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json index ffe91af773..5e4796c0e4 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json index 073b96a224..9d852517a2 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json index b6a2695235..8cd0d62151 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "65" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json index 7910e3c772..3c542ea4d7 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json @@ -315,6 +315,5 @@ ], "textured_plate_temp_initial_layer": [ "55" - ], - "version": "2.0.0.87" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json index 13604f5832..0213bc0680 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "100" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json index d8a9ca5ca3..0fd00bee84 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "35" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json index f4d1beac7d..d04dd869fd 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json @@ -334,6 +334,5 @@ ], "textured_plate_temp_initial_layer": [ "35" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json index 61d6100a71..e3460d0353 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json @@ -335,6 +335,5 @@ ], "textured_plate_temp_initial_layer": [ "35" - ], - "version": "2.0.0.77" + ] } diff --git a/resources/profiles/Chuanying.json b/resources/profiles/Chuanying.json index f32b4f84ae..9ce88c574c 100644 --- a/resources/profiles/Chuanying.json +++ b/resources/profiles/Chuanying.json @@ -89,14 +89,14 @@ "name": "Generic PETG @Chuanying X1 0.25 Nozzle", "sub_path": "filament/Generic PETG @Chuanying X1 0.25 Nozzle.json" }, - { - "name": "Generic PVA @Chuanying", - "sub_path": "filament/Generic PVA @Chuanying.json" - }, { "name": "Generic PLA @Chuanying X1 0.25 Nozzle", "sub_path": "filament/Generic PLA @Chuanying X1 0.25 Nozzle.json" }, + { + "name": "Generic PVA @Chuanying", + "sub_path": "filament/Generic PVA @Chuanying.json" + }, { "name": "Generic PLA-Silk @Chuanying X1 0.25 Nozzle", "sub_path": "filament/Generic PLA-Silk @Chuanying X1 0.25 Nozzle.json" diff --git a/resources/profiles/CoLiDo.json b/resources/profiles/CoLiDo.json index d0c395b348..31d1812a06 100644 --- a/resources/profiles/CoLiDo.json +++ b/resources/profiles/CoLiDo.json @@ -196,6 +196,10 @@ "name": "Generic ABS @CoLiDo X16", "sub_path": "filament/Generic ABS @CoLiDo X16.json" }, + { + "name": "CoLiDo PETG @CoLiDo SR1", + "sub_path": "filament/CoLiDo PETG @CoLiDo SR1.json" + }, { "name": "Generic PETG @CoLiDo DIY 4.0", "sub_path": "filament/Generic PETG @CoLiDo DIY 4.0.json" @@ -204,18 +208,6 @@ "name": "Generic PETG @CoLiDo X16", "sub_path": "filament/Generic PETG @CoLiDo X16.json" }, - { - "name": "CoLiDo PETG @CoLiDo SR1", - "sub_path": "filament/CoLiDo PETG @CoLiDo SR1.json" - }, - { - "name": "Generic PLA @CoLiDo DIY 4.0", - "sub_path": "filament/Generic PLA @CoLiDo DIY 4.0.json" - }, - { - "name": "Generic PLA @CoLiDo X16", - "sub_path": "filament/Generic PLA @CoLiDo X16.json" - }, { "name": "CoLiDo PLA @CoLiDo SR1", "sub_path": "filament/CoLiDo PLA @CoLiDo SR1.json" @@ -228,6 +220,14 @@ "name": "CoLiDo PLA+ @CoLiDo DIY 4.0 V2", "sub_path": "filament/CoLiDo PLA+ @CoLiDo DIY 4.0 V2.json" }, + { + "name": "Generic PLA @CoLiDo DIY 4.0", + "sub_path": "filament/Generic PLA @CoLiDo DIY 4.0.json" + }, + { + "name": "Generic PLA @CoLiDo X16", + "sub_path": "filament/Generic PLA @CoLiDo X16.json" + }, { "name": "Generic TPU @CoLiDo DIY 4.0", "sub_path": "filament/Generic TPU @CoLiDo DIY 4.0.json" diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 23b8b3799b..13221d752c 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1,6 +1,6 @@ { "name": "Creality", - "version": "02.03.02.77", + "version": "02.03.02.78", "force_update": "0", "description": "Creality configurations", "machine_model_list": [ @@ -116,10 +116,6 @@ "name": "Creality K1", "sub_path": "machine/Creality K1.json" }, - { - "name": "Creality K1_CFS-C", - "sub_path": "machine/Creality K1_CFS-C.json" - }, { "name": "Creality K1 Max", "sub_path": "machine/Creality K1 Max.json" @@ -145,12 +141,12 @@ "sub_path": "machine/Creality K1C_CFS-C.json" }, { - "name": "Creality K2", - "sub_path": "machine/Creality K2.json" + "name": "Creality K1_CFS-C", + "sub_path": "machine/Creality K1_CFS-C.json" }, { - "name": "Creality K2 SE", - "sub_path": "machine/Creality K2 SE.json" + "name": "Creality K2", + "sub_path": "machine/Creality K2.json" }, { "name": "Creality K2 Plus", @@ -160,6 +156,10 @@ "name": "Creality K2 Pro", "sub_path": "machine/Creality K2 Pro.json" }, + { + "name": "Creality K2 SE", + "sub_path": "machine/Creality K2 SE.json" + }, { "name": "Creality SPARKX i7", "sub_path": "machine/Creality SPARKX i7.json" @@ -178,10 +178,82 @@ "name": "fdm_process_creality_common", "sub_path": "process/fdm_process_creality_common.json" }, + { + "name": "0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.08mm HueForge @Creality Hi 0.4 nozzle", + "sub_path": "process/0.08mm HueForge @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.08mm HueForge @Creality K2 0.4 nozzle", + "sub_path": "process/0.08mm HueForge @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.08mm HueForge @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.08mm HueForge @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.08mm HueForge @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json" + }, { "name": "0.08mm SuperDetail @Creality CR-6 0.2", "sub_path": "process/0.08mm SuperDetail @Creality CR-6 0.2.json" }, + { + "name": "0.08mm SuperDetail @Creality Hi", + "sub_path": "process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K1 (0.4 nozzle)", + "sub_path": "process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json" + }, + { + "name": "0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K1C 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K1Max (0.4 nozzle)", + "sub_path": "process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json" + }, + { + "name": "0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K2 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json" + }, { "name": "0.10mm HighDetail @Creality 0.4 CR-6 0.4", "sub_path": "process/0.10mm HighDetail @Creality CR-6 0.4.json" @@ -190,6 +262,14 @@ "name": "0.10mm HighDetail @Creality CR-M4", "sub_path": "process/0.10mm HighDetail @Creality CR-M4.json" }, + { + "name": "0.10mm HighDetail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle", + "sub_path": "process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json" + }, { "name": "0.12mm Detail @Creality 0.4 CR-6", "sub_path": "process/0.12mm Detail @Creality CR-6 0.4.json" @@ -198,6 +278,22 @@ "name": "0.12mm Detail @Creality CR-6 0.2", "sub_path": "process/0.12mm Detail @Creality CR-6 0.2.json" }, + { + "name": "0.12mm Detail @Creality K2 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.12mm Detail @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.12mm Detail @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json" + }, { "name": "0.12mm Fine @Creality CR10Max", "sub_path": "process/0.12mm Fine @Creality CR10Max.json" @@ -262,6 +358,18 @@ "name": "0.12mm Fine @Creality Ender5Pro (2019)", "sub_path": "process/0.12mm Fine @Creality Ender5Pro (2019).json" }, + { + "name": "0.12mm Fine @Creality Hi", + "sub_path": "process/0.12mm Fine @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json" + }, + { + "name": "0.14mm Optimal @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json" + }, { "name": "0.15mm Detail @Creality CR-M4", "sub_path": "process/0.15mm Detail @Creality CR-M4.json" @@ -278,6 +386,10 @@ "name": "0.15mm Optimal @Creality Ender5Pro (2019)", "sub_path": "process/0.15mm Optimal @Creality Ender5Pro (2019).json" }, + { + "name": "0.16mm Fine @Creality Ender-3 V4 0.4 nozzle", + "sub_path": "process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json" + }, { "name": "0.16mm Optimal @Creality CR-6 0.2", "sub_path": "process/0.16mm Optimal @Creality CR-6 0.2.json" @@ -390,10 +502,78 @@ "name": "0.16mm Optimal @Creality Ender6", "sub_path": "process/0.16mm Optimal @Creality Ender6.json" }, + { + "name": "0.16mm Optimal @Creality Hi", + "sub_path": "process/0.16mm Optimal @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1 (0.4 nozzle)", + "sub_path": "process/0.16mm Optimal @Creality K1 (0.4 nozzle).json" + }, + { + "name": "0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1 SE", + "sub_path": "process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1C", + "sub_path": "process/0.16mm Optimal @Creality K1C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K1Max (0.4 nozzle)", + "sub_path": "process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json" + }, + { + "name": "0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K2 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json" + }, { "name": "0.16mm Optimal @Creality Sermoon V1", "sub_path": "process/0.16mm Optimal @Creality Sermoon V1.json" }, + { + "name": "0.16mm Standard @Creality K2 SE 0.4 nozzle", + "sub_path": "process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json" + }, + { + "name": "0.18mm Detail @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.1mm Standard @Creality Hi 0.2 nozzle", + "sub_path": "process/0.1mm Standard @Creality Hi 0.2 nozzle.json" + }, + { + "name": "0.20mm High Quality @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json" + }, { "name": "0.20mm Standard @Creality CR-6 0.4", "sub_path": "process/0.20mm Standard @Creality CR-6 0.4.json" @@ -422,6 +602,10 @@ "name": "0.20mm Standard @Creality CR10V3 0.6", "sub_path": "process/0.20mm Standard @Creality CR10V3 0.6.json" }, + { + "name": "0.20mm Standard @Creality Ender-3 V4 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json" + }, { "name": "0.20mm Standard @Creality Ender3", "sub_path": "process/0.20mm Standard @Creality Ender3.json" @@ -530,14 +714,74 @@ "name": "0.20mm Standard @Creality Ender6", "sub_path": "process/0.20mm Standard @Creality Ender6.json" }, + { + "name": "0.20mm Standard @Creality Hi", + "sub_path": "process/0.20mm Standard @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K1 (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @Creality K1 (0.4 nozzle).json" + }, + { + "name": "0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K1 SE", + "sub_path": "process/0.20mm Standard @Creality K1 SE 0.4.json" + }, + { + "name": "0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K1C", + "sub_path": "process/0.20mm Standard @Creality K1C 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K1Max (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @Creality K1Max (0.4 nozzle).json" + }, + { + "name": "0.20mm Standard @Creality K1_CFS-C 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json" + }, { "name": "0.20mm Standard @Creality K2 0.4 nozzle", "sub_path": "process/0.20mm Standard @Creality K2 0.4 nozzle.json" }, + { + "name": "0.20mm Standard @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality K2 SE 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json" + }, { "name": "0.20mm Standard @Creality Sermoon V1", "sub_path": "process/0.20mm Standard @Creality Sermoon V1.json" }, + { + "name": "0.20mm Strength @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Detail @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.24mm Draft @Creality CR-6 0.4", "sub_path": "process/0.24mm Draft @Creality CR-6 0.4.json" @@ -550,6 +794,10 @@ "name": "0.24mm Draft @Creality CR10Max", "sub_path": "process/0.24mm Draft @Creality CR10Max.json" }, + { + "name": "0.24mm Draft @Creality Ender-3 V4 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json" + }, { "name": "0.24mm Draft @Creality Ender3 0.2", "sub_path": "process/0.24mm Draft @Creality Ender3 0.2.json" @@ -626,10 +874,70 @@ "name": "0.24mm Draft @Creality Ender5Pro (2019)", "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019).json" }, + { + "name": "0.24mm Draft @Creality Hi", + "sub_path": "process/0.24mm Draft @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1 (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @Creality K1 (0.4 nozzle).json" + }, + { + "name": "0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1 SE", + "sub_path": "process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1C", + "sub_path": "process/0.24mm Draft @Creality K1C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K1Max (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @Creality K1Max (0.4 nozzle).json" + }, + { + "name": "0.24mm Draft @Creality K1_CFS-C 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K2 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json" + }, { "name": "0.24mm Optimal @Creality CR-6 0.8", "sub_path": "process/0.24mm Optimal @Creality CR-6 0.8.json" }, + { + "name": "0.24mm Optimal @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.24mm Standard @Creality K2 SE 0.4 nozzle", + "sub_path": "process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json" + }, { "name": "0.28mm Draft @Creality Ender3 0.2", "sub_path": "process/0.28mm SuperDraft @Creality Ender3 0.2.json" @@ -674,18 +982,98 @@ "name": "0.28mm SuperDraft @Creality CR-6 0.6", "sub_path": "process/0.28mm SuperDraft @Creality CR-6 0.6.json" }, + { + "name": "0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Creality Hi 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Creality K2 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json" + }, + { + "name": "0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json" + }, + { + "name": "0.2mm Standard @Creality Ender-5 Max 0.4 nozzle", + "sub_path": "process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json" + }, + { + "name": "0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle", + "sub_path": "process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality Ender-5 Max 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality Hi", + "sub_path": "process/0.30mm Standard @Creality Hi 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality K1 (0.6 nozzle)", + "sub_path": "process/0.30mm Standard @Creality K1 (0.6 nozzle).json" + }, + { + "name": "0.30mm Standard @Creality K1 SE 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality K1C", + "sub_path": "process/0.30mm Standard @Creality K1C 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality K1Max (0.6 nozzle)", + "sub_path": "process/0.30mm Standard @Creality K1Max (0.6 nozzle).json" + }, { "name": "0.30mm Standard @Creality K2 0.6 nozzle", "sub_path": "process/0.30mm Standard @Creality K2 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality K2 Pro 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality SPARKX i7 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json" + }, { "name": "0.32mm Chunky @Creality CR-6 0.6", "sub_path": "process/0.32mm Chunky @Creality CR-6 0.6.json" }, + { + "name": "0.32mm Optimal @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.32mm Standard @Creality CR-6 0.8", "sub_path": "process/0.32mm Standard @Creality CR-6 0.8.json" }, + { + "name": "0.36mm Draft @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json" + }, { "name": "0.36mm SuperChunky @Creality CR-6 0.6", "sub_path": "process/0.36mm SuperChunky @Creality CR-6 0.6.json" @@ -694,10 +1082,54 @@ "name": "0.40mm Draft @Creality CR-6 0.8", "sub_path": "process/0.40mm Draft @Creality CR-6 0.8.json" }, + { + "name": "0.40mm Standard @Creality Ender-5 Max 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality Hi 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality Hi 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality K1 (0.8 nozzle)", + "sub_path": "process/0.40mm Standard @Creality K1 (0.8 nozzle).json" + }, + { + "name": "0.40mm Standard @Creality K1 SE 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality K1C", + "sub_path": "process/0.40mm Standard @Creality K1C 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality K1Max (0.8 nozzle)", + "sub_path": "process/0.40mm Standard @Creality K1Max (0.8 nozzle).json" + }, { "name": "0.40mm Standard @Creality K2 0.8 nozzle", "sub_path": "process/0.40mm Standard @Creality K2 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality K2 Pro 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality SPARKX i7 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json" + }, + { + "name": "0.40mm Strength @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json" + }, + { + "name": "0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json" + }, { "name": "0.44mm SuperExtraChunky @Creality CR-6 0.6", "sub_path": "process/0.44mm SuperExtraChunky @Creality CR-6 0.6.json" @@ -710,10 +1142,18 @@ "name": "0.48mm Draft @Creality CR-6 0.8", "sub_path": "process/0.48mm Draft @Creality CR-6 0.8.json" }, + { + "name": "0.48mm Draft @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.56mm SuperChunky @Creality CR-6 0.8", "sub_path": "process/0.56mm SuperChunky @Creality CR-6 0.8.json" }, + { + "name": "0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "fdm_process_common_klipper", "sub_path": "process/fdm_process_common_klipper.json" @@ -746,46 +1186,18 @@ "name": "fdm_process_creality_common_1_0", "sub_path": "process/fdm_process_creality_common_1_0.json" }, - { - "name": "0.08mm SuperDetail @Creality Hi", - "sub_path": "process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json" - }, { "name": "0.08mm SuperDetail @Creality K2 0.2 nozzle", "sub_path": "process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json" }, - { - "name": "0.08mm SuperDetail @Creality K2 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle", - "sub_path": "process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json" - }, { "name": "0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle", "sub_path": "process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json" }, - { - "name": "0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.10mm HighDetail @Creality K2 0.2 nozzle", "sub_path": "process/0.10mm HighDetail @Creality K2 0.2 nozzle.json" }, - { - "name": "0.10mm HighDetail @Creality K2 Plus 0.2 nozzle", - "sub_path": "process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json" - }, { "name": "0.10mm HighDetail @Creality K2 Pro 0.2 nozzle", "sub_path": "process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json" @@ -794,26 +1206,10 @@ "name": "0.12mm Detail @Creality K2 0.2 nozzle", "sub_path": "process/0.12mm Detail @Creality K2 0.2 nozzle.json" }, - { - "name": "0.12mm Detail @Creality K2 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.12mm Detail @Creality K2 Plus 0.2 nozzle", - "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json" - }, - { - "name": "0.12mm Detail @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json" - }, { "name": "0.12mm Detail @Creality K2 Pro 0.2 nozzle", "sub_path": "process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json" }, - { - "name": "0.12mm Detail @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.12mm Fine @Creality CR10SE 0.2", "sub_path": "process/0.12mm Fine @Creality CR10SE 0.2.json" @@ -842,10 +1238,6 @@ "name": "0.12mm Fine @Creality Ender3V3KE", "sub_path": "process/0.12mm Fine @Creality Ender3V3KE.json" }, - { - "name": "0.12mm Fine @Creality Hi", - "sub_path": "process/0.12mm Fine @Creality Hi 0.4 nozzle.json" - }, { "name": "0.12mm Fine @Creality K1 (0.4 nozzle)", "sub_path": "process/0.12mm Fine @Creality K1 (0.4 nozzle).json" @@ -866,10 +1258,6 @@ "name": "0.14mm Optimal @Creality K2 0.2 nozzle", "sub_path": "process/0.14mm Optimal @Creality K2 0.2 nozzle.json" }, - { - "name": "0.14mm Optimal @Creality K2 Plus 0.2 nozzle", - "sub_path": "process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json" - }, { "name": "0.14mm Optimal @Creality K2 Pro 0.2 nozzle", "sub_path": "process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json" @@ -902,46 +1290,10 @@ "name": "0.16mm Optimal @Creality Ender3V3KE", "sub_path": "process/0.16mm Optimal @Creality Ender3V3KE.json" }, - { - "name": "0.16mm Optimal @Creality Hi", - "sub_path": "process/0.16mm Optimal @Creality Hi 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1 (0.4 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality K1 (0.4 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality K1 SE", - "sub_path": "process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1C", - "sub_path": "process/0.16mm Optimal @Creality K1C 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1Max (0.4 nozzle)", - "sub_path": "process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json" - }, - { - "name": "0.16mm Optimal @Creality K2 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.18mm Detail @Creality K2 0.6 nozzle", "sub_path": "process/0.18mm Detail @Creality K2 0.6 nozzle.json" }, - { - "name": "0.18mm Detail @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json" - }, { "name": "0.18mm Detail @Creality K2 Pro 0.6 nozzle", "sub_path": "process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json" @@ -978,34 +1330,6 @@ "name": "0.20mm Standard @Creality Ender3V3KE", "sub_path": "process/0.20mm Standard @Creality Ender3V3KE.json" }, - { - "name": "0.20mm Standard @Creality Hi", - "sub_path": "process/0.20mm Standard @Creality Hi 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K1 (0.4 nozzle)", - "sub_path": "process/0.20mm Standard @Creality K1 (0.4 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality K1 SE", - "sub_path": "process/0.20mm Standard @Creality K1 SE 0.4.json" - }, - { - "name": "0.20mm Standard @Creality K1C", - "sub_path": "process/0.20mm Standard @Creality K1C 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K1Max (0.4 nozzle)", - "sub_path": "process/0.20mm Standard @Creality K1Max (0.4 nozzle).json" - }, - { - "name": "0.20mm Standard @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle", "sub_path": "process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json" @@ -1014,10 +1338,6 @@ "name": "0.24mm Detail @Creality K2 0.8 nozzle", "sub_path": "process/0.24mm Detail @Creality K2 0.8 nozzle.json" }, - { - "name": "0.24mm Detail @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json" - }, { "name": "0.24mm Detail @Creality K2 Pro 0.8 nozzle", "sub_path": "process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json" @@ -1050,38 +1370,6 @@ "name": "0.24mm Draft @Creality Ender3V3KE", "sub_path": "process/0.24mm Draft @Creality Ender3V3KE.json" }, - { - "name": "0.24mm Draft @Creality Hi", - "sub_path": "process/0.24mm Draft @Creality Hi 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1 (0.4 nozzle)", - "sub_path": "process/0.24mm Draft @Creality K1 (0.4 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality K1 SE", - "sub_path": "process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1C", - "sub_path": "process/0.24mm Draft @Creality K1C 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1Max (0.4 nozzle)", - "sub_path": "process/0.24mm Draft @Creality K1Max (0.4 nozzle).json" - }, - { - "name": "0.24mm Draft @Creality K2 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.24mm Optimal @Creality Ender-3 V3", "sub_path": "process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json" @@ -1110,26 +1398,10 @@ "name": "0.24mm Optimal @Creality K2 0.6 nozzle", "sub_path": "process/0.24mm Optimal @Creality K2 0.6 nozzle.json" }, - { - "name": "0.24mm Optimal @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json" - }, { "name": "0.24mm Optimal @Creality K2 Pro 0.6 nozzle", "sub_path": "process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json" }, - { - "name": "0.28mm SuperDraft @Creality K2 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json" - }, { "name": "0.30mm Standard @Creality Ender-3 V3", "sub_path": "process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json" @@ -1138,30 +1410,6 @@ "name": "0.30mm Standard @Creality Ender-3 V3 Plus", "sub_path": "process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json" }, - { - "name": "0.30mm Standard @Creality Hi", - "sub_path": "process/0.30mm Standard @Creality Hi 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality K1 (0.6 nozzle)", - "sub_path": "process/0.30mm Standard @Creality K1 (0.6 nozzle).json" - }, - { - "name": "0.30mm Standard @Creality K1C", - "sub_path": "process/0.30mm Standard @Creality K1C 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality K1Max (0.6 nozzle)", - "sub_path": "process/0.30mm Standard @Creality K1Max (0.6 nozzle).json" - }, - { - "name": "0.30mm Standard @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality K2 Pro 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json" - }, { "name": "0.32mm Optimal @Creality K1 (0.8 nozzle)", "sub_path": "process/0.32mm Optimal @Creality K1 (0.8 nozzle).json" @@ -1178,10 +1426,6 @@ "name": "0.32mm Optimal @Creality K2 0.8 nozzle", "sub_path": "process/0.32mm Optimal @Creality K2 0.8 nozzle.json" }, - { - "name": "0.32mm Optimal @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json" - }, { "name": "0.32mm Optimal @Creality K2 Pro 0.8 nozzle", "sub_path": "process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json" @@ -1214,46 +1458,14 @@ "name": "0.36mm Draft @Creality K2 0.6 nozzle", "sub_path": "process/0.36mm Draft @Creality K2 0.6 nozzle.json" }, - { - "name": "0.36mm Draft @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json" - }, { "name": "0.36mm Draft @Creality K2 Pro 0.6 nozzle", "sub_path": "process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json" }, - { - "name": "0.40mm Standard @Creality K1 (0.8 nozzle)", - "sub_path": "process/0.40mm Standard @Creality K1 (0.8 nozzle).json" - }, - { - "name": "0.40mm Standard @Creality K1C", - "sub_path": "process/0.40mm Standard @Creality K1C 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality K1 SE 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality K1Max (0.8 nozzle)", - "sub_path": "process/0.40mm Standard @Creality K1Max (0.8 nozzle).json" - }, - { - "name": "0.40mm Standard @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality K2 Pro 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json" - }, { "name": "0.42mm SuperDraft @Creality K2 0.6 nozzle", "sub_path": "process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json" }, - { - "name": "0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json" - }, { "name": "0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle", "sub_path": "process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json" @@ -1274,10 +1486,6 @@ "name": "0.48mm Draft @Creality K2 0.8 nozzle", "sub_path": "process/0.48mm Draft @Creality K2 0.8 nozzle.json" }, - { - "name": "0.48mm Draft @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json" - }, { "name": "0.48mm Draft @Creality K2 Pro 0.8 nozzle", "sub_path": "process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json" @@ -1286,10 +1494,6 @@ "name": "0.56mm SuperDraft @Creality K2 0.8 nozzle", "sub_path": "process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json" }, - { - "name": "0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json" - }, { "name": "0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle", "sub_path": "process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json" @@ -1421,210 +1625,6 @@ { "name": "0.36mm Chunky @Creality Ender5Pro (2019) 1.0", "sub_path": "process/0.36mm Chunky @Creality Ender5Pro (2019) 1.0.json" - }, - { - "name": "0.20mm Standard @Creality K1_CFS-C 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality K1 SE 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality SPARKX i7 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality SPARKX i7 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json" - }, - { - "name": "0.08mm HueForge @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.08mm HueForge @Creality K2 0.4 nozzle", - "sub_path": "process/0.08mm HueForge @Creality K2 0.4 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality Hi 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality Hi 0.8 nozzle.json" - }, - { - "name": "0.08mm HueForge @Creality Hi 0.4 nozzle", - "sub_path": "process/0.08mm HueForge @Creality Hi 0.4 nozzle.json" - }, - { - "name": "0.1mm Standard @Creality Hi 0.2 nozzle", - "sub_path": "process/0.1mm Standard @Creality Hi 0.2 nozzle.json" - }, - { - "name": "0.16mm Standard @Creality K2 SE 0.4 nozzle", - "sub_path": "process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality K2 SE 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json" - }, - { - "name": "0.24mm Standard @Creality K2 SE 0.4 nozzle", - "sub_path": "process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json" - }, - { - "name": "0.08mm HueForge @Creality K2 Pro 0.4 nozzle", - "sub_path": "process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Creality Ender-3 V4 0.4 nozzle", - "sub_path": "process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json" - }, - { - "name": "0.40mm Strength @Creality K2 Plus 0.8 nozzle", - "sub_path": "process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json" - }, - { - "name": "0.30mm Strength @Creality K2 Plus 0.6 nozzle", - "sub_path": "process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json" - }, - { - "name": "0.08mm HueForge @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm High Quality @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Creality K2 Plus 0.4 nozzle", - "sub_path": "process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json" - }, - { - "name": "0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle", - "sub_path": "process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K1 (0.4 nozzle)", - "sub_path": "process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json" - }, - { - "name": "0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K1C 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.08mm SuperDetail @Creality K1Max (0.4 nozzle)", - "sub_path": "process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json" - }, - { - "name": "0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle", - "sub_path": "process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.16mm Fine @Creality Ender-3 V4 0.4 nozzle", - "sub_path": "process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle", - "sub_path": "process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality Ender-3 V4 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Creality K1_CFS-C 0.4 nozzle", - "sub_path": "process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json" - }, - { - "name": "0.28mm SuperDraft @Creality Hi 0.4 nozzle", - "sub_path": "process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json" - }, - { - "name": "0.2mm Standard @Creality Ender-5 Max 0.4 nozzle", - "sub_path": "process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json" - }, - { - "name": "0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle", - "sub_path": "process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json" - }, - { - "name": "0.30mm Standard @Creality Ender-5 Max 0.6 nozzle", - "sub_path": "process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Creality Ender-5 Max 0.8 nozzle", - "sub_path": "process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json" } ], "filament_list": [ @@ -1633,28 +1633,20 @@ "sub_path": "filament/fdm_filament_common.json" }, { - "name": "Generic ABS @Creality Ender-5Max-all", - "sub_path": "filament/Generic ABS @Creality Ender-5Max-all.json" + "name": "fdm_filament_hips", + "sub_path": "filament/fdm_filament_hips.json" }, { - "name": "Generic ASA @Creality Ender-5Max-all", - "sub_path": "filament/Generic ASA @Creality Ender-5Max-all.json" + "name": "fdm_filament_petg", + "sub_path": "filament/fdm_filament_petg.json" }, { - "name": "Generic PA @Creality Ender-5Max-all", - "sub_path": "filament/Generic PA @Creality Ender-5Max-all.json" + "name": "fdm_filament_pp", + "sub_path": "filament/fdm_filament_pp.json" }, { - "name": "Generic PETG @Creality Ender-5Max-all", - "sub_path": "filament/Generic PETG @Creality Ender-5Max-all.json" - }, - { - "name": "Generic PLA @Creality Ender-5Max-all", - "sub_path": "filament/Generic PLA @Creality Ender-5Max-all.json" - }, - { - "name": "Generic TPU @Creality Ender-5Max-all", - "sub_path": "filament/Generic TPU @Creality Ender-5Max-all.json" + "name": "fdm_filament_pps", + "sub_path": "filament/fdm_filament_pps.json" }, { "name": "Creality Hyper ABS @Ender-5Max-all", @@ -1672,6 +1664,138 @@ "name": "Creality Silk PLA @Ender-5Max-all", "sub_path": "filament/Creality Silk PLA @Ender-5Max-all.json" }, + { + "name": "Generic ABS @Creality Ender-5Max-all", + "sub_path": "filament/Generic ABS @Creality Ender-5Max-all.json" + }, + { + "name": "Generic ASA @Creality Ender-5Max-all", + "sub_path": "filament/Generic ASA @Creality Ender-5Max-all.json" + }, + { + "name": "Generic ASA-CF @K2 Plus-all", + "sub_path": "filament/Generic ASA-CF @K2 Plus-all.json" + }, + { + "name": "Generic BVOH @Hi-all", + "sub_path": "filament/Generic BVOH @Hi-all.json" + }, + { + "name": "Generic BVOH @K1 Max_CFS-C-all", + "sub_path": "filament/Generic BVOH @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic BVOH @K1C-all", + "sub_path": "filament/Generic BVOH @K1C-all.json" + }, + { + "name": "Generic BVOH @K1C_CFS-C-all", + "sub_path": "filament/Generic BVOH @K1C_CFS-C-all.json" + }, + { + "name": "Generic BVOH @K1_CFS-C-all", + "sub_path": "filament/Generic BVOH @K1_CFS-C-all.json" + }, + { + "name": "Generic BVOH @K2 Plus-all", + "sub_path": "filament/Generic BVOH @K2 Plus-all.json" + }, + { + "name": "Generic BVOH @K2 Pro-all", + "sub_path": "filament/Generic BVOH @K2 Pro-all.json" + }, + { + "name": "Generic BVOH @K2-all", + "sub_path": "filament/Generic BVOH @K2-all.json" + }, + { + "name": "Generic PA @Creality Ender-5Max-all", + "sub_path": "filament/Generic PA @Creality Ender-5Max-all.json" + }, + { + "name": "Generic PA6-GF @K2 Plus-all", + "sub_path": "filament/Generic PA6-GF @K2 Plus-all.json" + }, + { + "name": "Generic PCTG @K2 Plus-all", + "sub_path": "filament/Generic PCTG @K2 Plus-all.json" + }, + { + "name": "Generic PETG @Creality Ender-5Max-all", + "sub_path": "filament/Generic PETG @Creality Ender-5Max-all.json" + }, + { + "name": "Generic PETG-GF @K2 Plus-all", + "sub_path": "filament/Generic PETG-GF @K2 Plus-all.json" + }, + { + "name": "Generic PETG-GF @K2 Pro-all", + "sub_path": "filament/Generic PETG-GF @K2 Pro-all.json" + }, + { + "name": "Generic PETG-GF @K2-all", + "sub_path": "filament/Generic PETG-GF @K2-all.json" + }, + { + "name": "Generic PLA @Creality Ender-5Max-all", + "sub_path": "filament/Generic PLA @Creality Ender-5Max-all.json" + }, + { + "name": "Generic PP-CF @K2 Plus-all", + "sub_path": "filament/Generic PP-CF @K2 Plus-all.json" + }, + { + "name": "Generic PVA @Hi-all", + "sub_path": "filament/Generic PVA @Hi-all.json" + }, + { + "name": "Generic PVA @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PVA @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PVA @K1C-all", + "sub_path": "filament/Generic PVA @K1C-all.json" + }, + { + "name": "Generic PVA @K1C_CFS-C-all", + "sub_path": "filament/Generic PVA @K1C_CFS-C-all.json" + }, + { + "name": "Generic PVA @K1_CFS-C-all", + "sub_path": "filament/Generic PVA @K1_CFS-C-all.json" + }, + { + "name": "Generic PVA @K2 Plus-all", + "sub_path": "filament/Generic PVA @K2 Plus-all.json" + }, + { + "name": "Generic PVA @K2 Pro-all", + "sub_path": "filament/Generic PVA @K2 Pro-all.json" + }, + { + "name": "Generic PVA @K2-all", + "sub_path": "filament/Generic PVA @K2-all.json" + }, + { + "name": "Generic TPU @Creality Ender-5Max-all", + "sub_path": "filament/Generic TPU @Creality Ender-5Max-all.json" + }, + { + "name": "Hyper PETG-GF @K1C-all", + "sub_path": "filament/Hyper PETG-GF @K1C-all.json" + }, + { + "name": "Hyper PETG-GF @K2 Plus-all", + "sub_path": "filament/Hyper PETG-GF @K2 Plus-all.json" + }, + { + "name": "Hyper PETG-GF @K2 Pro-all", + "sub_path": "filament/Hyper PETG-GF @K2 Pro-all.json" + }, + { + "name": "Hyper PETG-GF @K2-all", + "sub_path": "filament/Hyper PETG-GF @K2-all.json" + }, { "name": "fdm_filament_abs", "sub_path": "filament/fdm_filament_abs.json" @@ -1701,300 +1825,24 @@ "sub_path": "filament/fdm_filament_tpu.json" }, { - "name": "Generic ABS @Creality", - "sub_path": "filament/Generic ABS @Creality.json" + "name": "Generic HIPS @K1 Max_CFS-C-all", + "sub_path": "filament/Generic HIPS @K1 Max_CFS-C-all.json" }, { - "name": "Generic ASA @Creality", - "sub_path": "filament/Generic ASA @Creality.json" + "name": "Generic HIPS @K1C-all", + "sub_path": "filament/Generic HIPS @K1C-all.json" }, { - "name": "Generic PA-CF @Creality", - "sub_path": "filament/Generic PA-CF @Creality.json" + "name": "Generic HIPS @K1C_CFS-C-all", + "sub_path": "filament/Generic HIPS @K1C_CFS-C-all.json" }, { - "name": "Generic PC @Creality", - "sub_path": "filament/Generic PC @Creality.json" + "name": "Generic HIPS @K1_CFS-C-all", + "sub_path": "filament/Generic HIPS @K1_CFS-C-all.json" }, { - "name": "Generic PETG @Creality", - "sub_path": "filament/Generic PETG @Creality.json" - }, - { - "name": "Generic PLA @Creality", - "sub_path": "filament/Generic PLA @Creality.json" - }, - { - "name": "Generic PLA-CF @Creality", - "sub_path": "filament/Generic PLA-CF @Creality.json" - }, - { - "name": "Generic PLA HF @Creality", - "sub_path": "filament/Generic PLA HF @Creality.json" - }, - { - "name": "Generic Speed PLA @Creality HF", - "sub_path": "filament/Generic Speed PLA @Creality HF.json" - }, - { - "name": "Generic TPU @Creality", - "sub_path": "filament/Generic TPU @Creality.json" - }, - { - "name": "Generic ABS @Creality Ender-3V3-all", - "sub_path": "filament/Generic ABS @Creality Ender-3V3-all.json" - }, - { - "name": "Generic ABS @Creality Hi-all", - "sub_path": "filament/Generic ABS @Creality Hi-all.json" - }, - { - "name": "Generic ABS @Creality K1-all", - "sub_path": "filament/Generic ABS @Creality K1-all.json" - }, - { - "name": "Generic ABS @Creality K2-all", - "sub_path": "filament/Generic ABS @Creality K2-all.json" - }, - { - "name": "Generic ASA @Creality Ender-3V3-all", - "sub_path": "filament/Generic ASA @Creality Ender-3V3-all.json" - }, - { - "name": "Generic ASA @Creality Hi-all", - "sub_path": "filament/Generic ASA @Creality Hi-all.json" - }, - { - "name": "Generic ASA @Creality K1-all", - "sub_path": "filament/Generic ASA @Creality K1-all.json" - }, - { - "name": "Generic ASA @Creality K2-all", - "sub_path": "filament/Generic ASA @Creality K2-all.json" - }, - { - "name": "Generic PA-CF @Creality Ender-3V3-all", - "sub_path": "filament/Generic PA-CF @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PA-CF @Creality K1-all", - "sub_path": "filament/Generic PA-CF @Creality K1-all.json" - }, - { - "name": "Generic PA-CF @Creality K2-all", - "sub_path": "filament/Generic PA-CF @Creality K2-all.json" - }, - { - "name": "Generic PC @Creality K1-all", - "sub_path": "filament/Generic PC @Creality K1-all.json" - }, - { - "name": "Generic PETG @Creality Ender-3V3-all", - "sub_path": "filament/Generic PETG @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PETG @Creality Hi-all", - "sub_path": "filament/Generic PETG @Creality Hi-all.json" - }, - { - "name": "Generic PETG @Creality K1-all", - "sub_path": "filament/Generic PETG @Creality K1-all.json" - }, - { - "name": "Generic PETG @Creality K2-all", - "sub_path": "filament/Generic PETG @Creality K2-all.json" - }, - { - "name": "Generic PLA @Creality Ender-3V3-all", - "sub_path": "filament/Generic PLA @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PLA @Creality Hi-all", - "sub_path": "filament/Generic PLA @Creality Hi-all.json" - }, - { - "name": "Generic PLA @Creality K1-all", - "sub_path": "filament/Generic PLA @Creality K1-all.json" - }, - { - "name": "Generic PLA @Creality K2-all", - "sub_path": "filament/Generic PLA @Creality K2-all.json" - }, - { - "name": "Generic PLA-CF @Creality Hi-all", - "sub_path": "filament/Generic PLA-CF @Creality Hi-all.json" - }, - { - "name": "Generic PLA-CF @Creality K1-all", - "sub_path": "filament/Generic PLA-CF @Creality K1-all.json" - }, - { - "name": "Generic PLA-CF @Creality K2-all", - "sub_path": "filament/Generic PLA-CF @Creality K2-all.json" - }, - { - "name": "Generic TPU @Creality Ender-3V3-all", - "sub_path": "filament/Generic TPU @Creality Ender-3V3-all.json" - }, - { - "name": "Generic TPU @Creality Hi-all", - "sub_path": "filament/Generic TPU @Creality Hi-all.json" - }, - { - "name": "Generic TPU @Creality K1-all", - "sub_path": "filament/Generic TPU @Creality K1-all.json" - }, - { - "name": "Generic TPU @Creality K2-all", - "sub_path": "filament/Generic TPU @Creality K2-all.json" - }, - { - "name": "Generic ASA-CF @Creality Hi-all", - "sub_path": "filament/Generic ASA-CF @Creality Hi-all.json" - }, - { - "name": "Generic PETG-CF @Creality Hi-all", - "sub_path": "filament/Generic PETG-CF @Creality Hi-all.json" - }, - { - "name": "Generic PLA High Speed @Creality Ender-3V3-all", - "sub_path": "filament/Generic PLA High Speed @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PLA Matte @Creality Ender-3V3-all", - "sub_path": "filament/Generic PLA Matte @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PLA Silk @Creality Ender-3V3-all", - "sub_path": "filament/Generic PLA Silk @Creality Ender-3V3-all.json" - }, - { - "name": "Generic PLA High Speed @Creality Hi-all", - "sub_path": "filament/Generic PLA High Speed @Creality Hi-all.json" - }, - { - "name": "Generic PLA Matte @Creality Hi-all", - "sub_path": "filament/Generic PLA Matte @Creality Hi-all.json" - }, - { - "name": "Generic PLA Silk @Creality Hi-all", - "sub_path": "filament/Generic PLA Silk @Creality Hi-all.json" - }, - { - "name": "Generic PLA Wood @Creality Hi-all", - "sub_path": "filament/Generic PLA Wood @Creality Hi-all.json" - }, - { - "name": "Generic PLA High Speed @Creality K1-all", - "sub_path": "filament/Generic PLA High Speed @Creality K1-all.json" - }, - { - "name": "Generic PLA Matte @Creality K1-all", - "sub_path": "filament/Generic PLA Matte @Creality K1-all.json" - }, - { - "name": "Generic PLA Silk @Creality K1-all", - "sub_path": "filament/Generic PLA Silk @Creality K1-all.json" - }, - { - "name": "Generic PLA High Speed @Creality K2-all", - "sub_path": "filament/Generic PLA High Speed @Creality K2-all.json" - }, - { - "name": "Generic PLA Matte @Creality K2-all", - "sub_path": "filament/Generic PLA Matte @Creality K2-all.json" - }, - { - "name": "Generic PLA Silk @Creality K2-all", - "sub_path": "filament/Generic PLA Silk @Creality K2-all.json" - }, - { - "name": "fdm_filament_pp", - "sub_path": "filament/fdm_filament_pp.json" - }, - { - "name": "fdm_filament_pps", - "sub_path": "filament/fdm_filament_pps.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_petg", - "sub_path": "filament/fdm_filament_petg.json" - }, - { - "name": "fdm_filament_hips", - "sub_path": "filament/fdm_filament_hips.json" - }, - { - "name": "CR-ABS @Ender-3 V4-all", - "sub_path": "filament/CR-ABS @Ender-3 V4-all.json" - }, - { - "name": "CR-ABS @Hi-all", - "sub_path": "filament/CR-ABS @Hi-all.json" - }, - { - "name": "CR-ABS @K1 Max_CFS-C-all", - "sub_path": "filament/CR-ABS @K1 Max_CFS-C-all.json" - }, - { - "name": "CR-ABS @K1 SE-all", - "sub_path": "filament/CR-ABS @K1 SE-all.json" - }, - { - "name": "CR-ABS @K1 SE_CFS-C-all", - "sub_path": "filament/CR-ABS @K1 SE_CFS-C-all.json" - }, - { - "name": "CR-ABS @K1C-all", - "sub_path": "filament/CR-ABS @K1C-all.json" - }, - { - "name": "CR-ABS @K1C_CFS-C-all", - "sub_path": "filament/CR-ABS @K1C_CFS-C-all.json" - }, - { - "name": "CR-ABS @K1_CFS-C-all", - "sub_path": "filament/CR-ABS @K1_CFS-C-all.json" - }, - { - "name": "CR-ABS @K2 Plus-all", - "sub_path": "filament/CR-ABS @K2 Plus-all.json" - }, - { - "name": "CR-ABS @K2 Pro-all", - "sub_path": "filament/CR-ABS @K2 Pro-all.json" - }, - { - "name": "CR-ABS @K2 SE-all", - "sub_path": "filament/CR-ABS @K2 SE-all.json" - }, - { - "name": "CR-ABS @K2-all", - "sub_path": "filament/CR-ABS @K2-all.json" - }, - { - "name": "CR-Nylon @K1 Max_CFS-C-all", - "sub_path": "filament/CR-Nylon @K1 Max_CFS-C-all.json" - }, - { - "name": "CR-Nylon @K1C-all", - "sub_path": "filament/CR-Nylon @K1C-all.json" - }, - { - "name": "CR-Nylon @K1C_CFS-C-all", - "sub_path": "filament/CR-Nylon @K1C_CFS-C-all.json" - }, - { - "name": "CR-Nylon @K1_CFS-C-all", - "sub_path": "filament/CR-Nylon @K1_CFS-C-all.json" - }, - { - "name": "CR-Nylon @K2 Plus-all", - "sub_path": "filament/CR-Nylon @K2 Plus-all.json" + "name": "Generic HIPS @K2 Plus-all", + "sub_path": "filament/Generic HIPS @K2 Plus-all.json" }, { "name": "CR-PETG @Ender-3 V4-all", @@ -2048,6 +1896,798 @@ "name": "CR-PETG @SPARKX i7-all", "sub_path": "filament/CR-PETG @SPARKX i7-all.json" }, + { + "name": "Generic PETG @Ender-3 V4-all", + "sub_path": "filament/Generic PETG @Ender-3 V4-all.json" + }, + { + "name": "Generic PETG @Hi-all", + "sub_path": "filament/Generic PETG @Hi-all.json" + }, + { + "name": "Generic PETG @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PETG @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PETG @K1 SE-all", + "sub_path": "filament/Generic PETG @K1 SE-all.json" + }, + { + "name": "Generic PETG @K1 SE_CFS-C-all", + "sub_path": "filament/Generic PETG @K1 SE_CFS-C-all.json" + }, + { + "name": "Generic PETG @K1C-all", + "sub_path": "filament/Generic PETG @K1C-all.json" + }, + { + "name": "Generic PETG @K1C_CFS-C-all", + "sub_path": "filament/Generic PETG @K1C_CFS-C-all.json" + }, + { + "name": "Generic PETG @K1_CFS-C-all", + "sub_path": "filament/Generic PETG @K1_CFS-C-all.json" + }, + { + "name": "Generic PETG @K2 Plus-all", + "sub_path": "filament/Generic PETG @K2 Plus-all.json" + }, + { + "name": "Generic PETG @K2 Pro-all", + "sub_path": "filament/Generic PETG @K2 Pro-all.json" + }, + { + "name": "Generic PETG @K2 SE-all", + "sub_path": "filament/Generic PETG @K2 SE-all.json" + }, + { + "name": "Generic PETG @K2-all", + "sub_path": "filament/Generic PETG @K2-all.json" + }, + { + "name": "Generic PETG @SPARKX i7-all", + "sub_path": "filament/Generic PETG @SPARKX i7-all.json" + }, + { + "name": "Generic PETG-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PETG-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PETG-CF @K1C-all", + "sub_path": "filament/Generic PETG-CF @K1C-all.json" + }, + { + "name": "Generic PETG-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PETG-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PETG-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PETG-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PETG-CF @K2 Plus-all", + "sub_path": "filament/Generic PETG-CF @K2 Plus-all.json" + }, + { + "name": "Generic PETG-CF @K2 Pro-all", + "sub_path": "filament/Generic PETG-CF @K2 Pro-all.json" + }, + { + "name": "Generic PETG-CF @K2-all", + "sub_path": "filament/Generic PETG-CF @K2-all.json" + }, + { + "name": "Generic PETG-CF @SPARKX i7-all", + "sub_path": "filament/Generic PETG-CF @SPARKX i7-all.json" + }, + { + "name": "Hyper PETG @Ender-3 V4-all", + "sub_path": "filament/Hyper PETG @Ender-3 V4-all.json" + }, + { + "name": "Hyper PETG @Hi-all", + "sub_path": "filament/Hyper PETG @Hi-all.json" + }, + { + "name": "Hyper PETG @K1 Max_CFS-C-all", + "sub_path": "filament/Hyper PETG @K1 Max_CFS-C-all.json" + }, + { + "name": "Hyper PETG @K1 SE-all", + "sub_path": "filament/Hyper PETG @K1 SE-all.json" + }, + { + "name": "Hyper PETG @K1 SE_CFS-C-all", + "sub_path": "filament/Hyper PETG @K1 SE_CFS-C-all.json" + }, + { + "name": "Hyper PETG @K1C-all", + "sub_path": "filament/Hyper PETG @K1C-all.json" + }, + { + "name": "Hyper PETG @K1C_CFS-C-all", + "sub_path": "filament/Hyper PETG @K1C_CFS-C-all.json" + }, + { + "name": "Hyper PETG @K1_CFS-C-all", + "sub_path": "filament/Hyper PETG @K1_CFS-C-all.json" + }, + { + "name": "Hyper PETG @K2 Plus-all", + "sub_path": "filament/Hyper PETG @K2 Plus-all.json" + }, + { + "name": "Hyper PETG @K2 Pro-all", + "sub_path": "filament/Hyper PETG @K2 Pro-all.json" + }, + { + "name": "Hyper PETG @K2 SE-all", + "sub_path": "filament/Hyper PETG @K2 SE-all.json" + }, + { + "name": "Hyper PETG @K2-all", + "sub_path": "filament/Hyper PETG @K2-all.json" + }, + { + "name": "Hyper PETG @SPARKX i7-all", + "sub_path": "filament/Hyper PETG @SPARKX i7-all.json" + }, + { + "name": "Hyper PETG-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Hyper PETG-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Hyper PETG-CF @K1C-all", + "sub_path": "filament/Hyper PETG-CF @K1C-all.json" + }, + { + "name": "Hyper PETG-CF @K1C_CFS-C-all", + "sub_path": "filament/Hyper PETG-CF @K1C_CFS-C-all.json" + }, + { + "name": "Hyper PETG-CF @K1_CFS-C-all", + "sub_path": "filament/Hyper PETG-CF @K1_CFS-C-all.json" + }, + { + "name": "Hyper PETG-CF @K2 Plus-all", + "sub_path": "filament/Hyper PETG-CF @K2 Plus-all.json" + }, + { + "name": "Hyper PETG-CF @K2 Pro-all", + "sub_path": "filament/Hyper PETG-CF @K2 Pro-all.json" + }, + { + "name": "Hyper PETG-CF @K2-all", + "sub_path": "filament/Hyper PETG-CF @K2-all.json" + }, + { + "name": "Hyper PETG-CF @SPARKX i7-all", + "sub_path": "filament/Hyper PETG-CF @SPARKX i7-all.json" + }, + { + "name": "Soleyin Basic PETG @Hi-all", + "sub_path": "filament/Soleyin Basic PETG @Hi-all.json" + }, + { + "name": "Soleyin Basic PETG @K1C-all", + "sub_path": "filament/Soleyin Basic PETG @K1C-all.json" + }, + { + "name": "Soleyin Basic PETG @K2 Plus-all", + "sub_path": "filament/Soleyin Basic PETG @K2 Plus-all.json" + }, + { + "name": "Soleyin Basic PETG @K2 Pro-all", + "sub_path": "filament/Soleyin Basic PETG @K2 Pro-all.json" + }, + { + "name": "Soleyin Basic PETG @K2-all", + "sub_path": "filament/Soleyin Basic PETG @K2-all.json" + }, + { + "name": "Soleyin Basic PETG @SPARKX i7-all", + "sub_path": "filament/Soleyin Basic PETG @SPARKX i7-all.json" + }, + { + "name": "eSUN PETG @K2 Plus-all", + "sub_path": "filament/eSUN PETG @K2 Plus-all.json" + }, + { + "name": "eSUN PETG+HS @K2 Plus-all", + "sub_path": "filament/eSUN PETG+HS @K2 Plus-all.json" + }, + { + "name": "eSUN PETG-Basic @K2 Plus-all", + "sub_path": "filament/eSUN PETG-Basic @K2 Plus-all.json" + }, + { + "name": "Generic PP @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PP @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PP @K1C-all", + "sub_path": "filament/Generic PP @K1C-all.json" + }, + { + "name": "Generic PP @K1C_CFS-C-all", + "sub_path": "filament/Generic PP @K1C_CFS-C-all.json" + }, + { + "name": "Generic PP @K1_CFS-C-all", + "sub_path": "filament/Generic PP @K1_CFS-C-all.json" + }, + { + "name": "Generic PP @K2 Plus-all", + "sub_path": "filament/Generic PP @K2 Plus-all.json" + }, + { + "name": "Generic PP @K2 Pro-all", + "sub_path": "filament/Generic PP @K2 Pro-all.json" + }, + { + "name": "Generic PP @K2-all", + "sub_path": "filament/Generic PP @K2-all.json" + }, + { + "name": "Generic PPS @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PPS @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PPS @K1C-all", + "sub_path": "filament/Generic PPS @K1C-all.json" + }, + { + "name": "Generic PPS @K1C_CFS-C-all", + "sub_path": "filament/Generic PPS @K1C_CFS-C-all.json" + }, + { + "name": "Generic PPS @K1_CFS-C-all", + "sub_path": "filament/Generic PPS @K1_CFS-C-all.json" + }, + { + "name": "Generic PPS @K2 Plus-all", + "sub_path": "filament/Generic PPS @K2 Plus-all.json" + }, + { + "name": "Generic PPS-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PPS-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PPS-CF @K1C-all", + "sub_path": "filament/Generic PPS-CF @K1C-all.json" + }, + { + "name": "Generic PPS-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PPS-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PPS-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PPS-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PPS-CF @K2 Plus-all", + "sub_path": "filament/Generic PPS-CF @K2 Plus-all.json" + }, + { + "name": "CR-ABS @Ender-3 V4-all", + "sub_path": "filament/CR-ABS @Ender-3 V4-all.json" + }, + { + "name": "CR-ABS @Hi-all", + "sub_path": "filament/CR-ABS @Hi-all.json" + }, + { + "name": "CR-ABS @K1 Max_CFS-C-all", + "sub_path": "filament/CR-ABS @K1 Max_CFS-C-all.json" + }, + { + "name": "CR-ABS @K1 SE-all", + "sub_path": "filament/CR-ABS @K1 SE-all.json" + }, + { + "name": "CR-ABS @K1 SE_CFS-C-all", + "sub_path": "filament/CR-ABS @K1 SE_CFS-C-all.json" + }, + { + "name": "CR-ABS @K1C-all", + "sub_path": "filament/CR-ABS @K1C-all.json" + }, + { + "name": "CR-ABS @K1C_CFS-C-all", + "sub_path": "filament/CR-ABS @K1C_CFS-C-all.json" + }, + { + "name": "CR-ABS @K1_CFS-C-all", + "sub_path": "filament/CR-ABS @K1_CFS-C-all.json" + }, + { + "name": "CR-ABS @K2 Plus-all", + "sub_path": "filament/CR-ABS @K2 Plus-all.json" + }, + { + "name": "CR-ABS @K2 Pro-all", + "sub_path": "filament/CR-ABS @K2 Pro-all.json" + }, + { + "name": "CR-ABS @K2 SE-all", + "sub_path": "filament/CR-ABS @K2 SE-all.json" + }, + { + "name": "CR-ABS @K2-all", + "sub_path": "filament/CR-ABS @K2-all.json" + }, + { + "name": "Generic ABS @Creality", + "sub_path": "filament/Generic ABS @Creality.json" + }, + { + "name": "Generic ABS @Ender-3 V4-all", + "sub_path": "filament/Generic ABS @Ender-3 V4-all.json" + }, + { + "name": "Generic ABS @Hi-all", + "sub_path": "filament/Generic ABS @Hi-all.json" + }, + { + "name": "Generic ABS @K1 Max_CFS-C-all", + "sub_path": "filament/Generic ABS @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic ABS @K1 SE-all", + "sub_path": "filament/Generic ABS @K1 SE-all.json" + }, + { + "name": "Generic ABS @K1 SE_CFS-C-all", + "sub_path": "filament/Generic ABS @K1 SE_CFS-C-all.json" + }, + { + "name": "Generic ABS @K1C-all", + "sub_path": "filament/Generic ABS @K1C-all.json" + }, + { + "name": "Generic ABS @K1C_CFS-C-all", + "sub_path": "filament/Generic ABS @K1C_CFS-C-all.json" + }, + { + "name": "Generic ABS @K1_CFS-C-all", + "sub_path": "filament/Generic ABS @K1_CFS-C-all.json" + }, + { + "name": "Generic ABS @K2 Plus-all", + "sub_path": "filament/Generic ABS @K2 Plus-all.json" + }, + { + "name": "Generic ABS @K2 Pro-all", + "sub_path": "filament/Generic ABS @K2 Pro-all.json" + }, + { + "name": "Generic ABS @K2 SE-all", + "sub_path": "filament/Generic ABS @K2 SE-all.json" + }, + { + "name": "Generic ABS @K2-all", + "sub_path": "filament/Generic ABS @K2-all.json" + }, + { + "name": "Hyper ABS @Ender-3 V4-all", + "sub_path": "filament/Hyper ABS @Ender-3 V4-all.json" + }, + { + "name": "Hyper ABS @Hi-all", + "sub_path": "filament/Hyper ABS @Hi-all.json" + }, + { + "name": "Hyper ABS @K1 Max_CFS-C-all", + "sub_path": "filament/Hyper ABS @K1 Max_CFS-C-all.json" + }, + { + "name": "Hyper ABS @K1 SE-all", + "sub_path": "filament/Hyper ABS @K1 SE-all.json" + }, + { + "name": "Hyper ABS @K1 SE_CFS-C-all", + "sub_path": "filament/Hyper ABS @K1 SE_CFS-C-all.json" + }, + { + "name": "Hyper ABS @K1C-all", + "sub_path": "filament/Hyper ABS @K1C-all.json" + }, + { + "name": "Hyper ABS @K1C_CFS-C-all", + "sub_path": "filament/Hyper ABS @K1C_CFS-C-all.json" + }, + { + "name": "Hyper ABS @K1_CFS-C-all", + "sub_path": "filament/Hyper ABS @K1_CFS-C-all.json" + }, + { + "name": "Hyper ABS @K2 Plus-all", + "sub_path": "filament/Hyper ABS @K2 Plus-all.json" + }, + { + "name": "Hyper ABS @K2 Pro-all", + "sub_path": "filament/Hyper ABS @K2 Pro-all.json" + }, + { + "name": "Hyper ABS @K2 SE-all", + "sub_path": "filament/Hyper ABS @K2 SE-all.json" + }, + { + "name": "Hyper ABS @K2-all", + "sub_path": "filament/Hyper ABS @K2-all.json" + }, + { + "name": "eSUN ABS+ @K2 Plus-all", + "sub_path": "filament/eSUN ABS+ @K2 Plus-all.json" + }, + { + "name": "Generic ASA @Creality", + "sub_path": "filament/Generic ASA @Creality.json" + }, + { + "name": "Generic ASA @K1 Max_CFS-C-all", + "sub_path": "filament/Generic ASA @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic ASA @K1 SE-all", + "sub_path": "filament/Generic ASA @K1 SE-all.json" + }, + { + "name": "Generic ASA @K1 SE_CFS-C-all", + "sub_path": "filament/Generic ASA @K1 SE_CFS-C-all.json" + }, + { + "name": "Generic ASA @K1C-all", + "sub_path": "filament/Generic ASA @K1C-all.json" + }, + { + "name": "Generic ASA @K1C_CFS-C-all", + "sub_path": "filament/Generic ASA @K1C_CFS-C-all.json" + }, + { + "name": "Generic ASA @K1_CFS-C-all", + "sub_path": "filament/Generic ASA @K1_CFS-C-all.json" + }, + { + "name": "Generic ASA @K2 Plus-all", + "sub_path": "filament/Generic ASA @K2 Plus-all.json" + }, + { + "name": "Generic ASA @K2 Pro-all", + "sub_path": "filament/Generic ASA @K2 Pro-all.json" + }, + { + "name": "Generic ASA @K2 SE-all", + "sub_path": "filament/Generic ASA @K2 SE-all.json" + }, + { + "name": "Generic ASA @K2-all", + "sub_path": "filament/Generic ASA @K2-all.json" + }, + { + "name": "HP-ASA @K1 Max_CFS-C-all", + "sub_path": "filament/HP-ASA @K1 Max_CFS-C-all.json" + }, + { + "name": "HP-ASA @K1C-all", + "sub_path": "filament/HP-ASA @K1C-all.json" + }, + { + "name": "HP-ASA @K1C_CFS-C-all", + "sub_path": "filament/HP-ASA @K1C_CFS-C-all.json" + }, + { + "name": "HP-ASA @K1_CFS-C-all", + "sub_path": "filament/HP-ASA @K1_CFS-C-all.json" + }, + { + "name": "HP-ASA @K2 Plus-all", + "sub_path": "filament/HP-ASA @K2 Plus-all.json" + }, + { + "name": "HP-ASA @K2 Pro-all", + "sub_path": "filament/HP-ASA @K2 Pro-all.json" + }, + { + "name": "HP-ASA @K2 SE-all", + "sub_path": "filament/HP-ASA @K2 SE-all.json" + }, + { + "name": "HP-ASA @K2-all", + "sub_path": "filament/HP-ASA @K2-all.json" + }, + { + "name": "eSUN ASA+ @K2 Plus-all", + "sub_path": "filament/eSUN ASA+ @K2 Plus-all.json" + }, + { + "name": "CR-Nylon @K1 Max_CFS-C-all", + "sub_path": "filament/CR-Nylon @K1 Max_CFS-C-all.json" + }, + { + "name": "CR-Nylon @K1C-all", + "sub_path": "filament/CR-Nylon @K1C-all.json" + }, + { + "name": "CR-Nylon @K1C_CFS-C-all", + "sub_path": "filament/CR-Nylon @K1C_CFS-C-all.json" + }, + { + "name": "CR-Nylon @K1_CFS-C-all", + "sub_path": "filament/CR-Nylon @K1_CFS-C-all.json" + }, + { + "name": "CR-Nylon @K2 Plus-all", + "sub_path": "filament/CR-Nylon @K2 Plus-all.json" + }, + { + "name": "Generic PA @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PA @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PA @K1C-all", + "sub_path": "filament/Generic PA @K1C-all.json" + }, + { + "name": "Generic PA @K1C_CFS-C-all", + "sub_path": "filament/Generic PA @K1C_CFS-C-all.json" + }, + { + "name": "Generic PA @K1_CFS-C-all", + "sub_path": "filament/Generic PA @K1_CFS-C-all.json" + }, + { + "name": "Generic PA @K2 Plus-all", + "sub_path": "filament/Generic PA @K2 Plus-all.json" + }, + { + "name": "Generic PA @K2 Pro-all", + "sub_path": "filament/Generic PA @K2 Pro-all.json" + }, + { + "name": "Generic PA @K2-all", + "sub_path": "filament/Generic PA @K2-all.json" + }, + { + "name": "Generic PA-CF @Creality", + "sub_path": "filament/Generic PA-CF @Creality.json" + }, + { + "name": "Generic PA-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PA-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PA-CF @K1C-all", + "sub_path": "filament/Generic PA-CF @K1C-all.json" + }, + { + "name": "Generic PA-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PA-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PA-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PA-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PA-CF @K2 Plus-all", + "sub_path": "filament/Generic PA-CF @K2 Plus-all.json" + }, + { + "name": "Generic PA12-CF @K2 Plus-all", + "sub_path": "filament/Generic PA12-CF @K2 Plus-all.json" + }, + { + "name": "Generic PA6-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PA6-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PA6-CF @K1C-all", + "sub_path": "filament/Generic PA6-CF @K1C-all.json" + }, + { + "name": "Generic PA6-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PA6-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PA6-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PA6-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PA6-CF @K2 Plus-all", + "sub_path": "filament/Generic PA6-CF @K2 Plus-all.json" + }, + { + "name": "Generic PA6-CF @K2 Pro-all", + "sub_path": "filament/Generic PA6-CF @K2 Pro-all.json" + }, + { + "name": "Generic PA612-CF @K2 Plus-all", + "sub_path": "filament/Generic PA612-CF @K2 Plus-all.json" + }, + { + "name": "Generic PA612-CF @K2 Pro-all", + "sub_path": "filament/Generic PA612-CF @K2 Pro-all.json" + }, + { + "name": "Generic PAHT-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PAHT-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PAHT-CF @K1C-all", + "sub_path": "filament/Generic PAHT-CF @K1C-all.json" + }, + { + "name": "Generic PAHT-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PAHT-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PAHT-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PAHT-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PAHT-CF @K2 Plus-all", + "sub_path": "filament/Generic PAHT-CF @K2 Plus-all.json" + }, + { + "name": "Generic PAHT-CF @K2 Pro-all", + "sub_path": "filament/Generic PAHT-CF @K2 Pro-all.json" + }, + { + "name": "Generic PAHT-CF @K2-all", + "sub_path": "filament/Generic PAHT-CF @K2-all.json" + }, + { + "name": "Generic Support for PA @K2 Plus-all", + "sub_path": "filament/Generic Support for PA @K2 Plus-all.json" + }, + { + "name": "Hyper PA6-CF @K2 Plus-all", + "sub_path": "filament/Hyper PA6-CF @K2 Plus-all.json" + }, + { + "name": "Hyper PA6-CF @K2 Pro-all", + "sub_path": "filament/Hyper PA6-CF @K2 Pro-all.json" + }, + { + "name": "Hyper PA612-CF @K2 Plus-all", + "sub_path": "filament/Hyper PA612-CF @K2 Plus-all.json" + }, + { + "name": "Hyper PA612-CF @K2 Pro-all", + "sub_path": "filament/Hyper PA612-CF @K2 Pro-all.json" + }, + { + "name": "Hyper PAHT-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Hyper PAHT-CF @K1C-all", + "sub_path": "filament/Hyper PAHT-CF @K1C-all.json" + }, + { + "name": "Hyper PAHT-CF @K1C_CFS-C-all", + "sub_path": "filament/Hyper PAHT-CF @K1C_CFS-C-all.json" + }, + { + "name": "Hyper PAHT-CF @K1_CFS-C-all", + "sub_path": "filament/Hyper PAHT-CF @K1_CFS-C-all.json" + }, + { + "name": "Hyper PAHT-CF @K2 Plus-all", + "sub_path": "filament/Hyper PAHT-CF @K2 Plus-all.json" + }, + { + "name": "Hyper PAHT-CF @K2 Pro-all", + "sub_path": "filament/Hyper PAHT-CF @K2 Pro-all.json" + }, + { + "name": "Hyper PAHT-CF @K2-all", + "sub_path": "filament/Hyper PAHT-CF @K2-all.json" + }, + { + "name": "Hyper PPA-CF @K2 Plus-all", + "sub_path": "filament/Hyper PPA-CF @K2 Plus-all.json" + }, + { + "name": "Hyper PPA-CF @K2 Pro-all", + "sub_path": "filament/Hyper PPA-CF @K2 Pro-all.json" + }, + { + "name": "Generic PC @Creality", + "sub_path": "filament/Generic PC @Creality.json" + }, + { + "name": "Generic PC @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PC @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PC @K1C-all", + "sub_path": "filament/Generic PC @K1C-all.json" + }, + { + "name": "Generic PC @K1C_CFS-C-all", + "sub_path": "filament/Generic PC @K1C_CFS-C-all.json" + }, + { + "name": "Generic PC @K1_CFS-C-all", + "sub_path": "filament/Generic PC @K1_CFS-C-all.json" + }, + { + "name": "Generic PC @K2 Plus-all", + "sub_path": "filament/Generic PC @K2 Plus-all.json" + }, + { + "name": "Generic PC @K2 Pro-all", + "sub_path": "filament/Generic PC @K2 Pro-all.json" + }, + { + "name": "Hyper PC @K2 Plus-all", + "sub_path": "filament/Hyper PC @K2 Plus-all.json" + }, + { + "name": "Hyper PC @K2 Pro-all", + "sub_path": "filament/Hyper PC @K2 Pro-all.json" + }, + { + "name": "Generic PET @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PET @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PET @K1C-all", + "sub_path": "filament/Generic PET @K1C-all.json" + }, + { + "name": "Generic PET @K1C_CFS-C-all", + "sub_path": "filament/Generic PET @K1C_CFS-C-all.json" + }, + { + "name": "Generic PET @K1_CFS-C-all", + "sub_path": "filament/Generic PET @K1_CFS-C-all.json" + }, + { + "name": "Generic PET @K2 Plus-all", + "sub_path": "filament/Generic PET @K2 Plus-all.json" + }, + { + "name": "Generic PET @K2 Pro-all", + "sub_path": "filament/Generic PET @K2 Pro-all.json" + }, + { + "name": "Generic PET @K2-all", + "sub_path": "filament/Generic PET @K2-all.json" + }, + { + "name": "Generic PET-CF @K1 Max_CFS-C-all", + "sub_path": "filament/Generic PET-CF @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic PET-CF @K1C-all", + "sub_path": "filament/Generic PET-CF @K1C-all.json" + }, + { + "name": "Generic PET-CF @K1C_CFS-C-all", + "sub_path": "filament/Generic PET-CF @K1C_CFS-C-all.json" + }, + { + "name": "Generic PET-CF @K1_CFS-C-all", + "sub_path": "filament/Generic PET-CF @K1_CFS-C-all.json" + }, + { + "name": "Generic PET-CF @K2 Plus-all", + "sub_path": "filament/Generic PET-CF @K2 Plus-all.json" + }, + { + "name": "Generic PET-CF @K2 Pro-all", + "sub_path": "filament/Generic PET-CF @K2 Pro-all.json" + }, + { + "name": "Generic PETG @Creality", + "sub_path": "filament/Generic PETG @Creality.json" + }, + { + "name": "eSUN PET-Basic @K2 Plus-all", + "sub_path": "filament/eSUN PET-Basic @K2 Plus-all.json" + }, { "name": "CR-PLA @Ender-3 V4-all", "sub_path": "filament/CR-PLA @Ender-3 V4-all.json" @@ -2240,38 +2880,6 @@ "name": "CR-Silk @SPARKX i7-all", "sub_path": "filament/CR-Silk @SPARKX i7-all.json" }, - { - "name": "CR-TPU @K1 Max_CFS-C-all", - "sub_path": "filament/CR-TPU @K1 Max_CFS-C-all.json" - }, - { - "name": "CR-TPU @K1C-all", - "sub_path": "filament/CR-TPU @K1C-all.json" - }, - { - "name": "CR-TPU @K1C_CFS-C-all", - "sub_path": "filament/CR-TPU @K1C_CFS-C-all.json" - }, - { - "name": "CR-TPU @K1_CFS-C-all", - "sub_path": "filament/CR-TPU @K1_CFS-C-all.json" - }, - { - "name": "CR-TPU @K2 Plus-all", - "sub_path": "filament/CR-TPU @K2 Plus-all.json" - }, - { - "name": "CR-TPU @K2 Pro-all", - "sub_path": "filament/CR-TPU @K2 Pro-all.json" - }, - { - "name": "CR-TPU @K2-all", - "sub_path": "filament/CR-TPU @K2-all.json" - }, - { - "name": "CR-TPU @SPARKX i7-all", - "sub_path": "filament/CR-TPU @SPARKX i7-all.json" - }, { "name": "CR-Wood @K1 Max_CFS-C-all", "sub_path": "filament/CR-Wood @K1 Max_CFS-C-all.json" @@ -2385,440 +2993,8 @@ "sub_path": "filament/Ender-PLA @SPARKX i7-all.json" }, { - "name": "Generic ABS @Ender-3 V4-all", - "sub_path": "filament/Generic ABS @Ender-3 V4-all.json" - }, - { - "name": "Generic ABS @Hi-all", - "sub_path": "filament/Generic ABS @Hi-all.json" - }, - { - "name": "Generic ABS @K1 Max_CFS-C-all", - "sub_path": "filament/Generic ABS @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic ABS @K1 SE-all", - "sub_path": "filament/Generic ABS @K1 SE-all.json" - }, - { - "name": "Generic ABS @K1 SE_CFS-C-all", - "sub_path": "filament/Generic ABS @K1 SE_CFS-C-all.json" - }, - { - "name": "Generic ABS @K1C-all", - "sub_path": "filament/Generic ABS @K1C-all.json" - }, - { - "name": "Generic ABS @K1C_CFS-C-all", - "sub_path": "filament/Generic ABS @K1C_CFS-C-all.json" - }, - { - "name": "Generic ABS @K1_CFS-C-all", - "sub_path": "filament/Generic ABS @K1_CFS-C-all.json" - }, - { - "name": "Generic ABS @K2 Plus-all", - "sub_path": "filament/Generic ABS @K2 Plus-all.json" - }, - { - "name": "Generic ABS @K2 Pro-all", - "sub_path": "filament/Generic ABS @K2 Pro-all.json" - }, - { - "name": "Generic ABS @K2 SE-all", - "sub_path": "filament/Generic ABS @K2 SE-all.json" - }, - { - "name": "Generic ABS @K2-all", - "sub_path": "filament/Generic ABS @K2-all.json" - }, - { - "name": "Generic ASA @K1 Max_CFS-C-all", - "sub_path": "filament/Generic ASA @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic ASA @K1 SE-all", - "sub_path": "filament/Generic ASA @K1 SE-all.json" - }, - { - "name": "Generic ASA @K1 SE_CFS-C-all", - "sub_path": "filament/Generic ASA @K1 SE_CFS-C-all.json" - }, - { - "name": "Generic ASA @K1C-all", - "sub_path": "filament/Generic ASA @K1C-all.json" - }, - { - "name": "Generic ASA @K1C_CFS-C-all", - "sub_path": "filament/Generic ASA @K1C_CFS-C-all.json" - }, - { - "name": "Generic ASA @K1_CFS-C-all", - "sub_path": "filament/Generic ASA @K1_CFS-C-all.json" - }, - { - "name": "Generic ASA @K2 Plus-all", - "sub_path": "filament/Generic ASA @K2 Plus-all.json" - }, - { - "name": "Generic ASA @K2 Pro-all", - "sub_path": "filament/Generic ASA @K2 Pro-all.json" - }, - { - "name": "Generic ASA @K2 SE-all", - "sub_path": "filament/Generic ASA @K2 SE-all.json" - }, - { - "name": "Generic ASA @K2-all", - "sub_path": "filament/Generic ASA @K2-all.json" - }, - { - "name": "Generic ASA-CF @K2 Plus-all", - "sub_path": "filament/Generic ASA-CF @K2 Plus-all.json" - }, - { - "name": "Generic BVOH @Hi-all", - "sub_path": "filament/Generic BVOH @Hi-all.json" - }, - { - "name": "Generic BVOH @K1 Max_CFS-C-all", - "sub_path": "filament/Generic BVOH @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic BVOH @K1C-all", - "sub_path": "filament/Generic BVOH @K1C-all.json" - }, - { - "name": "Generic BVOH @K1C_CFS-C-all", - "sub_path": "filament/Generic BVOH @K1C_CFS-C-all.json" - }, - { - "name": "Generic BVOH @K1_CFS-C-all", - "sub_path": "filament/Generic BVOH @K1_CFS-C-all.json" - }, - { - "name": "Generic BVOH @K2 Plus-all", - "sub_path": "filament/Generic BVOH @K2 Plus-all.json" - }, - { - "name": "Generic BVOH @K2 Pro-all", - "sub_path": "filament/Generic BVOH @K2 Pro-all.json" - }, - { - "name": "Generic BVOH @K2-all", - "sub_path": "filament/Generic BVOH @K2-all.json" - }, - { - "name": "Generic HIPS @K1 Max_CFS-C-all", - "sub_path": "filament/Generic HIPS @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic HIPS @K1C-all", - "sub_path": "filament/Generic HIPS @K1C-all.json" - }, - { - "name": "Generic HIPS @K1C_CFS-C-all", - "sub_path": "filament/Generic HIPS @K1C_CFS-C-all.json" - }, - { - "name": "Generic HIPS @K1_CFS-C-all", - "sub_path": "filament/Generic HIPS @K1_CFS-C-all.json" - }, - { - "name": "Generic HIPS @K2 Plus-all", - "sub_path": "filament/Generic HIPS @K2 Plus-all.json" - }, - { - "name": "Generic PA @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PA @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PA @K1C-all", - "sub_path": "filament/Generic PA @K1C-all.json" - }, - { - "name": "Generic PA @K1C_CFS-C-all", - "sub_path": "filament/Generic PA @K1C_CFS-C-all.json" - }, - { - "name": "Generic PA @K1_CFS-C-all", - "sub_path": "filament/Generic PA @K1_CFS-C-all.json" - }, - { - "name": "Generic PA @K2 Plus-all", - "sub_path": "filament/Generic PA @K2 Plus-all.json" - }, - { - "name": "Generic PA @K2 Pro-all", - "sub_path": "filament/Generic PA @K2 Pro-all.json" - }, - { - "name": "Generic PA @K2-all", - "sub_path": "filament/Generic PA @K2-all.json" - }, - { - "name": "Generic PA-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PA-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PA-CF @K1C-all", - "sub_path": "filament/Generic PA-CF @K1C-all.json" - }, - { - "name": "Generic PA-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PA-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PA-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PA-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PA-CF @K2 Plus-all", - "sub_path": "filament/Generic PA-CF @K2 Plus-all.json" - }, - { - "name": "Generic PA12-CF @K2 Plus-all", - "sub_path": "filament/Generic PA12-CF @K2 Plus-all.json" - }, - { - "name": "Generic PA6-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PA6-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PA6-CF @K1C-all", - "sub_path": "filament/Generic PA6-CF @K1C-all.json" - }, - { - "name": "Generic PA6-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PA6-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PA6-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PA6-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PA6-CF @K2 Plus-all", - "sub_path": "filament/Generic PA6-CF @K2 Plus-all.json" - }, - { - "name": "Generic PA6-CF @K2 Pro-all", - "sub_path": "filament/Generic PA6-CF @K2 Pro-all.json" - }, - { - "name": "Generic PA6-GF @K2 Plus-all", - "sub_path": "filament/Generic PA6-GF @K2 Plus-all.json" - }, - { - "name": "Generic PA612-CF @K2 Plus-all", - "sub_path": "filament/Generic PA612-CF @K2 Plus-all.json" - }, - { - "name": "Generic PA612-CF @K2 Pro-all", - "sub_path": "filament/Generic PA612-CF @K2 Pro-all.json" - }, - { - "name": "Generic PAHT-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PAHT-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PAHT-CF @K1C-all", - "sub_path": "filament/Generic PAHT-CF @K1C-all.json" - }, - { - "name": "Generic PAHT-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PAHT-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PAHT-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PAHT-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PAHT-CF @K2 Plus-all", - "sub_path": "filament/Generic PAHT-CF @K2 Plus-all.json" - }, - { - "name": "Generic PAHT-CF @K2 Pro-all", - "sub_path": "filament/Generic PAHT-CF @K2 Pro-all.json" - }, - { - "name": "Generic PAHT-CF @K2-all", - "sub_path": "filament/Generic PAHT-CF @K2-all.json" - }, - { - "name": "Generic PC @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PC @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PC @K1C-all", - "sub_path": "filament/Generic PC @K1C-all.json" - }, - { - "name": "Generic PC @K1C_CFS-C-all", - "sub_path": "filament/Generic PC @K1C_CFS-C-all.json" - }, - { - "name": "Generic PC @K1_CFS-C-all", - "sub_path": "filament/Generic PC @K1_CFS-C-all.json" - }, - { - "name": "Generic PC @K2 Plus-all", - "sub_path": "filament/Generic PC @K2 Plus-all.json" - }, - { - "name": "Generic PC @K2 Pro-all", - "sub_path": "filament/Generic PC @K2 Pro-all.json" - }, - { - "name": "Generic PCTG @K2 Plus-all", - "sub_path": "filament/Generic PCTG @K2 Plus-all.json" - }, - { - "name": "Generic PET @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PET @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PET @K1C-all", - "sub_path": "filament/Generic PET @K1C-all.json" - }, - { - "name": "Generic PET @K1C_CFS-C-all", - "sub_path": "filament/Generic PET @K1C_CFS-C-all.json" - }, - { - "name": "Generic PET @K1_CFS-C-all", - "sub_path": "filament/Generic PET @K1_CFS-C-all.json" - }, - { - "name": "Generic PET @K2 Plus-all", - "sub_path": "filament/Generic PET @K2 Plus-all.json" - }, - { - "name": "Generic PET @K2 Pro-all", - "sub_path": "filament/Generic PET @K2 Pro-all.json" - }, - { - "name": "Generic PET @K2-all", - "sub_path": "filament/Generic PET @K2-all.json" - }, - { - "name": "Generic PET-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PET-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PET-CF @K1C-all", - "sub_path": "filament/Generic PET-CF @K1C-all.json" - }, - { - "name": "Generic PET-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PET-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PET-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PET-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PET-CF @K2 Plus-all", - "sub_path": "filament/Generic PET-CF @K2 Plus-all.json" - }, - { - "name": "Generic PET-CF @K2 Pro-all", - "sub_path": "filament/Generic PET-CF @K2 Pro-all.json" - }, - { - "name": "Generic PETG @Ender-3 V4-all", - "sub_path": "filament/Generic PETG @Ender-3 V4-all.json" - }, - { - "name": "Generic PETG @Hi-all", - "sub_path": "filament/Generic PETG @Hi-all.json" - }, - { - "name": "Generic PETG @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PETG @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PETG @K1 SE-all", - "sub_path": "filament/Generic PETG @K1 SE-all.json" - }, - { - "name": "Generic PETG @K1 SE_CFS-C-all", - "sub_path": "filament/Generic PETG @K1 SE_CFS-C-all.json" - }, - { - "name": "Generic PETG @K1C-all", - "sub_path": "filament/Generic PETG @K1C-all.json" - }, - { - "name": "Generic PETG @K1C_CFS-C-all", - "sub_path": "filament/Generic PETG @K1C_CFS-C-all.json" - }, - { - "name": "Generic PETG @K1_CFS-C-all", - "sub_path": "filament/Generic PETG @K1_CFS-C-all.json" - }, - { - "name": "Generic PETG @K2 Plus-all", - "sub_path": "filament/Generic PETG @K2 Plus-all.json" - }, - { - "name": "Generic PETG @K2 Pro-all", - "sub_path": "filament/Generic PETG @K2 Pro-all.json" - }, - { - "name": "Generic PETG @K2 SE-all", - "sub_path": "filament/Generic PETG @K2 SE-all.json" - }, - { - "name": "Generic PETG @K2-all", - "sub_path": "filament/Generic PETG @K2-all.json" - }, - { - "name": "Generic PETG @SPARKX i7-all", - "sub_path": "filament/Generic PETG @SPARKX i7-all.json" - }, - { - "name": "Generic PETG-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PETG-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PETG-CF @K1C-all", - "sub_path": "filament/Generic PETG-CF @K1C-all.json" - }, - { - "name": "Generic PETG-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PETG-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PETG-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PETG-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PETG-CF @K2 Plus-all", - "sub_path": "filament/Generic PETG-CF @K2 Plus-all.json" - }, - { - "name": "Generic PETG-CF @K2 Pro-all", - "sub_path": "filament/Generic PETG-CF @K2 Pro-all.json" - }, - { - "name": "Generic PETG-CF @K2-all", - "sub_path": "filament/Generic PETG-CF @K2-all.json" - }, - { - "name": "Generic PETG-CF @SPARKX i7-all", - "sub_path": "filament/Generic PETG-CF @SPARKX i7-all.json" - }, - { - "name": "Generic PETG-GF @K2 Plus-all", - "sub_path": "filament/Generic PETG-GF @K2 Plus-all.json" - }, - { - "name": "Generic PETG-GF @K2 Pro-all", - "sub_path": "filament/Generic PETG-GF @K2 Pro-all.json" - }, - { - "name": "Generic PETG-GF @K2-all", - "sub_path": "filament/Generic PETG-GF @K2-all.json" + "name": "Generic PLA @Creality", + "sub_path": "filament/Generic PLA @Creality.json" }, { "name": "Generic PLA @Ender-3 V4-all", @@ -2872,6 +3048,14 @@ "name": "Generic PLA @SPARKX i7-all", "sub_path": "filament/Generic PLA @SPARKX i7-all.json" }, + { + "name": "Generic PLA HF @Creality", + "sub_path": "filament/Generic PLA HF @Creality.json" + }, + { + "name": "Generic PLA-CF @Creality", + "sub_path": "filament/Generic PLA-CF @Creality.json" + }, { "name": "Generic PLA-CF @Ender-3 V4-all", "sub_path": "filament/Generic PLA-CF @Ender-3 V4-all.json" @@ -2973,173 +3157,13 @@ "sub_path": "filament/Generic PLA-Silk @SPARKX i7-all.json" }, { - "name": "Generic PP @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PP @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PP @K1C-all", - "sub_path": "filament/Generic PP @K1C-all.json" - }, - { - "name": "Generic PP @K1C_CFS-C-all", - "sub_path": "filament/Generic PP @K1C_CFS-C-all.json" - }, - { - "name": "Generic PP @K1_CFS-C-all", - "sub_path": "filament/Generic PP @K1_CFS-C-all.json" - }, - { - "name": "Generic PP @K2 Plus-all", - "sub_path": "filament/Generic PP @K2 Plus-all.json" - }, - { - "name": "Generic PP @K2 Pro-all", - "sub_path": "filament/Generic PP @K2 Pro-all.json" - }, - { - "name": "Generic PP @K2-all", - "sub_path": "filament/Generic PP @K2-all.json" - }, - { - "name": "Generic PP-CF @K2 Plus-all", - "sub_path": "filament/Generic PP-CF @K2 Plus-all.json" - }, - { - "name": "Generic PPS @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PPS @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PPS @K1C-all", - "sub_path": "filament/Generic PPS @K1C-all.json" - }, - { - "name": "Generic PPS @K1C_CFS-C-all", - "sub_path": "filament/Generic PPS @K1C_CFS-C-all.json" - }, - { - "name": "Generic PPS @K1_CFS-C-all", - "sub_path": "filament/Generic PPS @K1_CFS-C-all.json" - }, - { - "name": "Generic PPS @K2 Plus-all", - "sub_path": "filament/Generic PPS @K2 Plus-all.json" - }, - { - "name": "Generic PPS-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PPS-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PPS-CF @K1C-all", - "sub_path": "filament/Generic PPS-CF @K1C-all.json" - }, - { - "name": "Generic PPS-CF @K1C_CFS-C-all", - "sub_path": "filament/Generic PPS-CF @K1C_CFS-C-all.json" - }, - { - "name": "Generic PPS-CF @K1_CFS-C-all", - "sub_path": "filament/Generic PPS-CF @K1_CFS-C-all.json" - }, - { - "name": "Generic PPS-CF @K2 Plus-all", - "sub_path": "filament/Generic PPS-CF @K2 Plus-all.json" - }, - { - "name": "Generic PVA @Hi-all", - "sub_path": "filament/Generic PVA @Hi-all.json" - }, - { - "name": "Generic PVA @K1 Max_CFS-C-all", - "sub_path": "filament/Generic PVA @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic PVA @K1C-all", - "sub_path": "filament/Generic PVA @K1C-all.json" - }, - { - "name": "Generic PVA @K1C_CFS-C-all", - "sub_path": "filament/Generic PVA @K1C_CFS-C-all.json" - }, - { - "name": "Generic PVA @K1_CFS-C-all", - "sub_path": "filament/Generic PVA @K1_CFS-C-all.json" - }, - { - "name": "Generic PVA @K2 Plus-all", - "sub_path": "filament/Generic PVA @K2 Plus-all.json" - }, - { - "name": "Generic PVA @K2 Pro-all", - "sub_path": "filament/Generic PVA @K2 Pro-all.json" - }, - { - "name": "Generic PVA @K2-all", - "sub_path": "filament/Generic PVA @K2-all.json" - }, - { - "name": "Generic Support for PA @K2 Plus-all", - "sub_path": "filament/Generic Support for PA @K2 Plus-all.json" + "name": "Generic Speed PLA @Creality HF", + "sub_path": "filament/Generic Speed PLA @Creality HF.json" }, { "name": "Generic Support for PLA @K2 Plus-all", "sub_path": "filament/Generic Support for PLA @K2 Plus-all.json" }, - { - "name": "Generic TPU 64D @K2 Plus-all", - "sub_path": "filament/Generic TPU 64D @K2 Plus-all.json" - }, - { - "name": "Generic TPU 64D @SPARKX i7-all", - "sub_path": "filament/Generic TPU 64D @SPARKX i7-all.json" - }, - { - "name": "Generic TPU @Ender-3 V4-all", - "sub_path": "filament/Generic TPU @Ender-3 V4-all.json" - }, - { - "name": "Generic TPU @K1 Max_CFS-C-all", - "sub_path": "filament/Generic TPU @K1 Max_CFS-C-all.json" - }, - { - "name": "Generic TPU @K1 SE-all", - "sub_path": "filament/Generic TPU @K1 SE-all.json" - }, - { - "name": "Generic TPU @K1 SE_CFS-C-all", - "sub_path": "filament/Generic TPU @K1 SE_CFS-C-all.json" - }, - { - "name": "Generic TPU @K1C-all", - "sub_path": "filament/Generic TPU @K1C-all.json" - }, - { - "name": "Generic TPU @K1C_CFS-C-all", - "sub_path": "filament/Generic TPU @K1C_CFS-C-all.json" - }, - { - "name": "Generic TPU @K1_CFS-C-all", - "sub_path": "filament/Generic TPU @K1_CFS-C-all.json" - }, - { - "name": "Generic TPU @K2 Plus-all", - "sub_path": "filament/Generic TPU @K2 Plus-all.json" - }, - { - "name": "Generic TPU @K2 Pro-all", - "sub_path": "filament/Generic TPU @K2 Pro-all.json" - }, - { - "name": "Generic TPU @K2 SE-all", - "sub_path": "filament/Generic TPU @K2 SE-all.json" - }, - { - "name": "Generic TPU @K2-all", - "sub_path": "filament/Generic TPU @K2-all.json" - }, - { - "name": "Generic TPU @SPARKX i7-all", - "sub_path": "filament/Generic TPU @SPARKX i7-all.json" - }, { "name": "HP Ultra PLA @K1 Max_CFS-C-all", "sub_path": "filament/HP Ultra PLA @K1 Max_CFS-C-all.json" @@ -3160,138 +3184,6 @@ "name": "HP Ultra PLA @K2 Plus-all", "sub_path": "filament/HP Ultra PLA @K2 Plus-all.json" }, - { - "name": "HP-ASA @K1 Max_CFS-C-all", - "sub_path": "filament/HP-ASA @K1 Max_CFS-C-all.json" - }, - { - "name": "HP-ASA @K1C-all", - "sub_path": "filament/HP-ASA @K1C-all.json" - }, - { - "name": "HP-ASA @K1C_CFS-C-all", - "sub_path": "filament/HP-ASA @K1C_CFS-C-all.json" - }, - { - "name": "HP-ASA @K1_CFS-C-all", - "sub_path": "filament/HP-ASA @K1_CFS-C-all.json" - }, - { - "name": "HP-ASA @K2 Plus-all", - "sub_path": "filament/HP-ASA @K2 Plus-all.json" - }, - { - "name": "HP-ASA @K2 Pro-all", - "sub_path": "filament/HP-ASA @K2 Pro-all.json" - }, - { - "name": "HP-ASA @K2 SE-all", - "sub_path": "filament/HP-ASA @K2 SE-all.json" - }, - { - "name": "HP-ASA @K2-all", - "sub_path": "filament/HP-ASA @K2-all.json" - }, - { - "name": "HP-TPU @Ender-3 V4-all", - "sub_path": "filament/HP-TPU @Ender-3 V4-all.json" - }, - { - "name": "HP-TPU @Hi-all", - "sub_path": "filament/HP-TPU @Hi-all.json" - }, - { - "name": "HP-TPU @K1 Max_CFS-C-all", - "sub_path": "filament/HP-TPU @K1 Max_CFS-C-all.json" - }, - { - "name": "HP-TPU @K1 SE-all", - "sub_path": "filament/HP-TPU @K1 SE-all.json" - }, - { - "name": "HP-TPU @K1 SE_CFS-C-all", - "sub_path": "filament/HP-TPU @K1 SE_CFS-C-all.json" - }, - { - "name": "HP-TPU @K1C-all", - "sub_path": "filament/HP-TPU @K1C-all.json" - }, - { - "name": "HP-TPU @K1C_CFS-C-all", - "sub_path": "filament/HP-TPU @K1C_CFS-C-all.json" - }, - { - "name": "HP-TPU @K1_CFS-C-all", - "sub_path": "filament/HP-TPU @K1_CFS-C-all.json" - }, - { - "name": "HP-TPU @K2 Plus-all", - "sub_path": "filament/HP-TPU @K2 Plus-all.json" - }, - { - "name": "HP-TPU @K2 Pro-all", - "sub_path": "filament/HP-TPU @K2 Pro-all.json" - }, - { - "name": "HP-TPU @K2 SE-all", - "sub_path": "filament/HP-TPU @K2 SE-all.json" - }, - { - "name": "HP-TPU @K2-all", - "sub_path": "filament/HP-TPU @K2-all.json" - }, - { - "name": "HP-TPU @SPARKX i7-all", - "sub_path": "filament/HP-TPU @SPARKX i7-all.json" - }, - { - "name": "Hyper ABS @Ender-3 V4-all", - "sub_path": "filament/Hyper ABS @Ender-3 V4-all.json" - }, - { - "name": "Hyper ABS @Hi-all", - "sub_path": "filament/Hyper ABS @Hi-all.json" - }, - { - "name": "Hyper ABS @K1 Max_CFS-C-all", - "sub_path": "filament/Hyper ABS @K1 Max_CFS-C-all.json" - }, - { - "name": "Hyper ABS @K1 SE-all", - "sub_path": "filament/Hyper ABS @K1 SE-all.json" - }, - { - "name": "Hyper ABS @K1 SE_CFS-C-all", - "sub_path": "filament/Hyper ABS @K1 SE_CFS-C-all.json" - }, - { - "name": "Hyper ABS @K1C-all", - "sub_path": "filament/Hyper ABS @K1C-all.json" - }, - { - "name": "Hyper ABS @K1C_CFS-C-all", - "sub_path": "filament/Hyper ABS @K1C_CFS-C-all.json" - }, - { - "name": "Hyper ABS @K1_CFS-C-all", - "sub_path": "filament/Hyper ABS @K1_CFS-C-all.json" - }, - { - "name": "Hyper ABS @K2 Plus-all", - "sub_path": "filament/Hyper ABS @K2 Plus-all.json" - }, - { - "name": "Hyper ABS @K2 Pro-all", - "sub_path": "filament/Hyper ABS @K2 Pro-all.json" - }, - { - "name": "Hyper ABS @K2 SE-all", - "sub_path": "filament/Hyper ABS @K2 SE-all.json" - }, - { - "name": "Hyper ABS @K2-all", - "sub_path": "filament/Hyper ABS @K2-all.json" - }, { "name": "Hyper L-W PLA @Hi-all", "sub_path": "filament/Hyper L-W PLA @Hi-all.json" @@ -3396,158 +3288,6 @@ "name": "Hyper Marble @SPARKX i7-all", "sub_path": "filament/Hyper Marble @SPARKX i7-all.json" }, - { - "name": "Hyper PA6-CF @K2 Plus-all", - "sub_path": "filament/Hyper PA6-CF @K2 Plus-all.json" - }, - { - "name": "Hyper PA6-CF @K2 Pro-all", - "sub_path": "filament/Hyper PA6-CF @K2 Pro-all.json" - }, - { - "name": "Hyper PA612-CF @K2 Plus-all", - "sub_path": "filament/Hyper PA612-CF @K2 Plus-all.json" - }, - { - "name": "Hyper PA612-CF @K2 Pro-all", - "sub_path": "filament/Hyper PA612-CF @K2 Pro-all.json" - }, - { - "name": "Hyper PAHT-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Hyper PAHT-CF @K1C-all", - "sub_path": "filament/Hyper PAHT-CF @K1C-all.json" - }, - { - "name": "Hyper PAHT-CF @K1C_CFS-C-all", - "sub_path": "filament/Hyper PAHT-CF @K1C_CFS-C-all.json" - }, - { - "name": "Hyper PAHT-CF @K1_CFS-C-all", - "sub_path": "filament/Hyper PAHT-CF @K1_CFS-C-all.json" - }, - { - "name": "Hyper PAHT-CF @K2 Plus-all", - "sub_path": "filament/Hyper PAHT-CF @K2 Plus-all.json" - }, - { - "name": "Hyper PAHT-CF @K2 Pro-all", - "sub_path": "filament/Hyper PAHT-CF @K2 Pro-all.json" - }, - { - "name": "Hyper PAHT-CF @K2-all", - "sub_path": "filament/Hyper PAHT-CF @K2-all.json" - }, - { - "name": "Hyper PC @K2 Plus-all", - "sub_path": "filament/Hyper PC @K2 Plus-all.json" - }, - { - "name": "Hyper PC @K2 Pro-all", - "sub_path": "filament/Hyper PC @K2 Pro-all.json" - }, - { - "name": "Hyper PETG @Ender-3 V4-all", - "sub_path": "filament/Hyper PETG @Ender-3 V4-all.json" - }, - { - "name": "Hyper PETG @Hi-all", - "sub_path": "filament/Hyper PETG @Hi-all.json" - }, - { - "name": "Hyper PETG @K1 Max_CFS-C-all", - "sub_path": "filament/Hyper PETG @K1 Max_CFS-C-all.json" - }, - { - "name": "Hyper PETG @K1 SE-all", - "sub_path": "filament/Hyper PETG @K1 SE-all.json" - }, - { - "name": "Hyper PETG @K1 SE_CFS-C-all", - "sub_path": "filament/Hyper PETG @K1 SE_CFS-C-all.json" - }, - { - "name": "Hyper PETG @K1C-all", - "sub_path": "filament/Hyper PETG @K1C-all.json" - }, - { - "name": "Hyper PETG @K1C_CFS-C-all", - "sub_path": "filament/Hyper PETG @K1C_CFS-C-all.json" - }, - { - "name": "Hyper PETG @K1_CFS-C-all", - "sub_path": "filament/Hyper PETG @K1_CFS-C-all.json" - }, - { - "name": "Hyper PETG @K2 Plus-all", - "sub_path": "filament/Hyper PETG @K2 Plus-all.json" - }, - { - "name": "Hyper PETG @K2 Pro-all", - "sub_path": "filament/Hyper PETG @K2 Pro-all.json" - }, - { - "name": "Hyper PETG @K2 SE-all", - "sub_path": "filament/Hyper PETG @K2 SE-all.json" - }, - { - "name": "Hyper PETG @K2-all", - "sub_path": "filament/Hyper PETG @K2-all.json" - }, - { - "name": "Hyper PETG @SPARKX i7-all", - "sub_path": "filament/Hyper PETG @SPARKX i7-all.json" - }, - { - "name": "Hyper PETG-CF @K1 Max_CFS-C-all", - "sub_path": "filament/Hyper PETG-CF @K1 Max_CFS-C-all.json" - }, - { - "name": "Hyper PETG-CF @K1C-all", - "sub_path": "filament/Hyper PETG-CF @K1C-all.json" - }, - { - "name": "Hyper PETG-CF @K1C_CFS-C-all", - "sub_path": "filament/Hyper PETG-CF @K1C_CFS-C-all.json" - }, - { - "name": "Hyper PETG-CF @K1_CFS-C-all", - "sub_path": "filament/Hyper PETG-CF @K1_CFS-C-all.json" - }, - { - "name": "Hyper PETG-CF @K2 Plus-all", - "sub_path": "filament/Hyper PETG-CF @K2 Plus-all.json" - }, - { - "name": "Hyper PETG-CF @K2 Pro-all", - "sub_path": "filament/Hyper PETG-CF @K2 Pro-all.json" - }, - { - "name": "Hyper PETG-CF @K2-all", - "sub_path": "filament/Hyper PETG-CF @K2-all.json" - }, - { - "name": "Hyper PETG-CF @SPARKX i7-all", - "sub_path": "filament/Hyper PETG-CF @SPARKX i7-all.json" - }, - { - "name": "Hyper PETG-GF @K1C-all", - "sub_path": "filament/Hyper PETG-GF @K1C-all.json" - }, - { - "name": "Hyper PETG-GF @K2 Plus-all", - "sub_path": "filament/Hyper PETG-GF @K2 Plus-all.json" - }, - { - "name": "Hyper PETG-GF @K2 Pro-all", - "sub_path": "filament/Hyper PETG-GF @K2 Pro-all.json" - }, - { - "name": "Hyper PETG-GF @K2-all", - "sub_path": "filament/Hyper PETG-GF @K2-all.json" - }, { "name": "Hyper PLA @Ender-3 V4-all", "sub_path": "filament/Hyper PLA @Ender-3 V4-all.json" @@ -3652,14 +3392,6 @@ "name": "Hyper PLA-CF @SPARKX i7-all", "sub_path": "filament/Hyper PLA-CF @SPARKX i7-all.json" }, - { - "name": "Hyper PPA-CF @K2 Plus-all", - "sub_path": "filament/Hyper PPA-CF @K2 Plus-all.json" - }, - { - "name": "Hyper PPA-CF @K2 Pro-all", - "sub_path": "filament/Hyper PPA-CF @K2 Pro-all.json" - }, { "name": "Hyper Stardust @Hi-all", "sub_path": "filament/Hyper Stardust @Hi-all.json" @@ -3716,30 +3448,6 @@ "name": "PolySonic PLA Pro @K2 Plus-all", "sub_path": "filament/PolySonic PLA Pro @K2 Plus-all.json" }, - { - "name": "Soleyin Basic PETG @Hi-all", - "sub_path": "filament/Soleyin Basic PETG @Hi-all.json" - }, - { - "name": "Soleyin Basic PETG @K1C-all", - "sub_path": "filament/Soleyin Basic PETG @K1C-all.json" - }, - { - "name": "Soleyin Basic PETG @K2 Plus-all", - "sub_path": "filament/Soleyin Basic PETG @K2 Plus-all.json" - }, - { - "name": "Soleyin Basic PETG @K2 Pro-all", - "sub_path": "filament/Soleyin Basic PETG @K2 Pro-all.json" - }, - { - "name": "Soleyin Basic PETG @K2-all", - "sub_path": "filament/Soleyin Basic PETG @K2-all.json" - }, - { - "name": "Soleyin Basic PETG @SPARKX i7-all", - "sub_path": "filament/Soleyin Basic PETG @SPARKX i7-all.json" - }, { "name": "Soleyin Ultra PLA @Ender-3 V4-all", "sub_path": "filament/Soleyin Ultra PLA @Ender-3 V4-all.json" @@ -3784,30 +3492,6 @@ "name": "Soleyin Ultra PLA @SPARKX i7-all", "sub_path": "filament/Soleyin Ultra PLA @SPARKX i7-all.json" }, - { - "name": "eSUN ABS+ @K2 Plus-all", - "sub_path": "filament/eSUN ABS+ @K2 Plus-all.json" - }, - { - "name": "eSUN ASA+ @K2 Plus-all", - "sub_path": "filament/eSUN ASA+ @K2 Plus-all.json" - }, - { - "name": "eSUN PET-Basic @K2 Plus-all", - "sub_path": "filament/eSUN PET-Basic @K2 Plus-all.json" - }, - { - "name": "eSUN PETG @K2 Plus-all", - "sub_path": "filament/eSUN PETG @K2 Plus-all.json" - }, - { - "name": "eSUN PETG+HS @K2 Plus-all", - "sub_path": "filament/eSUN PETG+HS @K2 Plus-all.json" - }, - { - "name": "eSUN PETG-Basic @K2 Plus-all", - "sub_path": "filament/eSUN PETG-Basic @K2 Plus-all.json" - }, { "name": "eSUN PLA+ @K2 Plus-all", "sub_path": "filament/eSUN PLA+ @K2 Plus-all.json" @@ -3835,6 +3519,322 @@ { "name": "eSUN PLA-Silk @K2 Plus-all", "sub_path": "filament/eSUN PLA-Silk @K2 Plus-all.json" + }, + { + "name": "CR-TPU @K1 Max_CFS-C-all", + "sub_path": "filament/CR-TPU @K1 Max_CFS-C-all.json" + }, + { + "name": "CR-TPU @K1C-all", + "sub_path": "filament/CR-TPU @K1C-all.json" + }, + { + "name": "CR-TPU @K1C_CFS-C-all", + "sub_path": "filament/CR-TPU @K1C_CFS-C-all.json" + }, + { + "name": "CR-TPU @K1_CFS-C-all", + "sub_path": "filament/CR-TPU @K1_CFS-C-all.json" + }, + { + "name": "CR-TPU @K2 Plus-all", + "sub_path": "filament/CR-TPU @K2 Plus-all.json" + }, + { + "name": "CR-TPU @K2 Pro-all", + "sub_path": "filament/CR-TPU @K2 Pro-all.json" + }, + { + "name": "CR-TPU @K2-all", + "sub_path": "filament/CR-TPU @K2-all.json" + }, + { + "name": "CR-TPU @SPARKX i7-all", + "sub_path": "filament/CR-TPU @SPARKX i7-all.json" + }, + { + "name": "Generic TPU 64D @K2 Plus-all", + "sub_path": "filament/Generic TPU 64D @K2 Plus-all.json" + }, + { + "name": "Generic TPU 64D @SPARKX i7-all", + "sub_path": "filament/Generic TPU 64D @SPARKX i7-all.json" + }, + { + "name": "Generic TPU @Creality", + "sub_path": "filament/Generic TPU @Creality.json" + }, + { + "name": "Generic TPU @Ender-3 V4-all", + "sub_path": "filament/Generic TPU @Ender-3 V4-all.json" + }, + { + "name": "Generic TPU @K1 Max_CFS-C-all", + "sub_path": "filament/Generic TPU @K1 Max_CFS-C-all.json" + }, + { + "name": "Generic TPU @K1 SE-all", + "sub_path": "filament/Generic TPU @K1 SE-all.json" + }, + { + "name": "Generic TPU @K1 SE_CFS-C-all", + "sub_path": "filament/Generic TPU @K1 SE_CFS-C-all.json" + }, + { + "name": "Generic TPU @K1C-all", + "sub_path": "filament/Generic TPU @K1C-all.json" + }, + { + "name": "Generic TPU @K1C_CFS-C-all", + "sub_path": "filament/Generic TPU @K1C_CFS-C-all.json" + }, + { + "name": "Generic TPU @K1_CFS-C-all", + "sub_path": "filament/Generic TPU @K1_CFS-C-all.json" + }, + { + "name": "Generic TPU @K2 Plus-all", + "sub_path": "filament/Generic TPU @K2 Plus-all.json" + }, + { + "name": "Generic TPU @K2 Pro-all", + "sub_path": "filament/Generic TPU @K2 Pro-all.json" + }, + { + "name": "Generic TPU @K2 SE-all", + "sub_path": "filament/Generic TPU @K2 SE-all.json" + }, + { + "name": "Generic TPU @K2-all", + "sub_path": "filament/Generic TPU @K2-all.json" + }, + { + "name": "Generic TPU @SPARKX i7-all", + "sub_path": "filament/Generic TPU @SPARKX i7-all.json" + }, + { + "name": "HP-TPU @Ender-3 V4-all", + "sub_path": "filament/HP-TPU @Ender-3 V4-all.json" + }, + { + "name": "HP-TPU @Hi-all", + "sub_path": "filament/HP-TPU @Hi-all.json" + }, + { + "name": "HP-TPU @K1 Max_CFS-C-all", + "sub_path": "filament/HP-TPU @K1 Max_CFS-C-all.json" + }, + { + "name": "HP-TPU @K1 SE-all", + "sub_path": "filament/HP-TPU @K1 SE-all.json" + }, + { + "name": "HP-TPU @K1 SE_CFS-C-all", + "sub_path": "filament/HP-TPU @K1 SE_CFS-C-all.json" + }, + { + "name": "HP-TPU @K1C-all", + "sub_path": "filament/HP-TPU @K1C-all.json" + }, + { + "name": "HP-TPU @K1C_CFS-C-all", + "sub_path": "filament/HP-TPU @K1C_CFS-C-all.json" + }, + { + "name": "HP-TPU @K1_CFS-C-all", + "sub_path": "filament/HP-TPU @K1_CFS-C-all.json" + }, + { + "name": "HP-TPU @K2 Plus-all", + "sub_path": "filament/HP-TPU @K2 Plus-all.json" + }, + { + "name": "HP-TPU @K2 Pro-all", + "sub_path": "filament/HP-TPU @K2 Pro-all.json" + }, + { + "name": "HP-TPU @K2 SE-all", + "sub_path": "filament/HP-TPU @K2 SE-all.json" + }, + { + "name": "HP-TPU @K2-all", + "sub_path": "filament/HP-TPU @K2-all.json" + }, + { + "name": "HP-TPU @SPARKX i7-all", + "sub_path": "filament/HP-TPU @SPARKX i7-all.json" + }, + { + "name": "Generic ABS @Creality Ender-3V3-all", + "sub_path": "filament/Generic ABS @Creality Ender-3V3-all.json" + }, + { + "name": "Generic ABS @Creality Hi-all", + "sub_path": "filament/Generic ABS @Creality Hi-all.json" + }, + { + "name": "Generic ABS @Creality K1-all", + "sub_path": "filament/Generic ABS @Creality K1-all.json" + }, + { + "name": "Generic ABS @Creality K2-all", + "sub_path": "filament/Generic ABS @Creality K2-all.json" + }, + { + "name": "Generic ASA @Creality Ender-3V3-all", + "sub_path": "filament/Generic ASA @Creality Ender-3V3-all.json" + }, + { + "name": "Generic ASA @Creality Hi-all", + "sub_path": "filament/Generic ASA @Creality Hi-all.json" + }, + { + "name": "Generic ASA @Creality K1-all", + "sub_path": "filament/Generic ASA @Creality K1-all.json" + }, + { + "name": "Generic ASA @Creality K2-all", + "sub_path": "filament/Generic ASA @Creality K2-all.json" + }, + { + "name": "Generic PA-CF @Creality Ender-3V3-all", + "sub_path": "filament/Generic PA-CF @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PA-CF @Creality K1-all", + "sub_path": "filament/Generic PA-CF @Creality K1-all.json" + }, + { + "name": "Generic PA-CF @Creality K2-all", + "sub_path": "filament/Generic PA-CF @Creality K2-all.json" + }, + { + "name": "Generic PC @Creality K1-all", + "sub_path": "filament/Generic PC @Creality K1-all.json" + }, + { + "name": "Generic PETG @Creality Ender-3V3-all", + "sub_path": "filament/Generic PETG @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PETG @Creality Hi-all", + "sub_path": "filament/Generic PETG @Creality Hi-all.json" + }, + { + "name": "Generic PETG @Creality K1-all", + "sub_path": "filament/Generic PETG @Creality K1-all.json" + }, + { + "name": "Generic PETG @Creality K2-all", + "sub_path": "filament/Generic PETG @Creality K2-all.json" + }, + { + "name": "Generic PLA @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PLA @Creality Hi-all", + "sub_path": "filament/Generic PLA @Creality Hi-all.json" + }, + { + "name": "Generic PLA @Creality K1-all", + "sub_path": "filament/Generic PLA @Creality K1-all.json" + }, + { + "name": "Generic PLA @Creality K2-all", + "sub_path": "filament/Generic PLA @Creality K2-all.json" + }, + { + "name": "Generic PLA-CF @Creality Hi-all", + "sub_path": "filament/Generic PLA-CF @Creality Hi-all.json" + }, + { + "name": "Generic PLA-CF @Creality K1-all", + "sub_path": "filament/Generic PLA-CF @Creality K1-all.json" + }, + { + "name": "Generic PLA-CF @Creality K2-all", + "sub_path": "filament/Generic PLA-CF @Creality K2-all.json" + }, + { + "name": "Generic TPU @Creality Ender-3V3-all", + "sub_path": "filament/Generic TPU @Creality Ender-3V3-all.json" + }, + { + "name": "Generic TPU @Creality Hi-all", + "sub_path": "filament/Generic TPU @Creality Hi-all.json" + }, + { + "name": "Generic TPU @Creality K1-all", + "sub_path": "filament/Generic TPU @Creality K1-all.json" + }, + { + "name": "Generic TPU @Creality K2-all", + "sub_path": "filament/Generic TPU @Creality K2-all.json" + }, + { + "name": "Generic ASA-CF @Creality Hi-all", + "sub_path": "filament/Generic ASA-CF @Creality Hi-all.json" + }, + { + "name": "Generic PETG-CF @Creality Hi-all", + "sub_path": "filament/Generic PETG-CF @Creality Hi-all.json" + }, + { + "name": "Generic PLA High Speed @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA High Speed @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PLA Matte @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA Matte @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PLA Silk @Creality Ender-3V3-all", + "sub_path": "filament/Generic PLA Silk @Creality Ender-3V3-all.json" + }, + { + "name": "Generic PLA High Speed @Creality Hi-all", + "sub_path": "filament/Generic PLA High Speed @Creality Hi-all.json" + }, + { + "name": "Generic PLA Matte @Creality Hi-all", + "sub_path": "filament/Generic PLA Matte @Creality Hi-all.json" + }, + { + "name": "Generic PLA Silk @Creality Hi-all", + "sub_path": "filament/Generic PLA Silk @Creality Hi-all.json" + }, + { + "name": "Generic PLA Wood @Creality Hi-all", + "sub_path": "filament/Generic PLA Wood @Creality Hi-all.json" + }, + { + "name": "Generic PLA High Speed @Creality K1-all", + "sub_path": "filament/Generic PLA High Speed @Creality K1-all.json" + }, + { + "name": "Generic PLA Matte @Creality K1-all", + "sub_path": "filament/Generic PLA Matte @Creality K1-all.json" + }, + { + "name": "Generic PLA Silk @Creality K1-all", + "sub_path": "filament/Generic PLA Silk @Creality K1-all.json" + }, + { + "name": "Generic PLA High Speed @Creality K2-all", + "sub_path": "filament/Generic PLA High Speed @Creality K2-all.json" + }, + { + "name": "Generic PLA Matte @Creality K2-all", + "sub_path": "filament/Generic PLA Matte @Creality K2-all.json" + }, + { + "name": "Generic PLA Silk @Creality K2-all", + "sub_path": "filament/Generic PLA Silk @Creality K2-all.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" } ], "machine_list": [ @@ -4122,10 +4122,6 @@ "name": "Creality K1 (0.8 nozzle)", "sub_path": "machine/Creality K1 (0.8 nozzle).json" }, - { - "name": "Creality K1_CFS-C 0.4 nozzle", - "sub_path": "machine/Creality K1_CFS-C 0.4 nozzle.json" - }, { "name": "Creality K1 Max (0.4 nozzle)", "sub_path": "machine/Creality K1 Max (0.4 nozzle).json" @@ -4174,6 +4170,10 @@ "name": "Creality K1C_CFS-C 0.4 nozzle", "sub_path": "machine/Creality K1C_CFS-C 0.4 nozzle.json" }, + { + "name": "Creality K1_CFS-C 0.4 nozzle", + "sub_path": "machine/Creality K1_CFS-C 0.4 nozzle.json" + }, { "name": "Creality K2 0.2 nozzle", "sub_path": "machine/Creality K2 0.2 nozzle.json" @@ -4226,10 +4226,6 @@ "name": "Creality K2 SE 0.4 nozzle", "sub_path": "machine/Creality K2 SE 0.4 nozzle.json" }, - { - "name": "Creality Sermoon V1 0.4 nozzle", - "sub_path": "machine/Creality Sermoon V1 0.4 nozzle.json" - }, { "name": "Creality SPARKX i7 0.2 nozzle", "sub_path": "machine/Creality SPARKX i7 0.2 nozzle.json" @@ -4245,6 +4241,10 @@ { "name": "Creality SPARKX i7 0.8 nozzle", "sub_path": "machine/Creality SPARKX i7 0.8 nozzle.json" + }, + { + "name": "Creality Sermoon V1 0.4 nozzle", + "sub_path": "machine/Creality Sermoon V1 0.4 nozzle.json" } ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/filament/CR-ABS @Ender-5 Max-all.json b/resources/profiles/Creality/filament/CR-ABS @Ender-5 Max-all.json deleted file mode 100644 index 53d18bfeda..0000000000 --- a/resources/profiles/Creality/filament/CR-ABS @Ender-5 Max-all.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "type": "filament", - "name": "CR-ABS @Ender-5 Max-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "iCeI2obXsgQdrmmd", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "30" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "60" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[5.0,250],[10.0,260]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Nylon @Ender-5 Max-all.json b/resources/profiles/Creality/filament/CR-Nylon @Ender-5 Max-all.json deleted file mode 100644 index e4e5cad0e8..0000000000 --- a/resources/profiles/Creality/filament/CR-Nylon @Ender-5 Max-all.json +++ /dev/null @@ -1,185 +0,0 @@ -{ - "type": "filament", - "name": "CR-Nylon @Ender-5 Max-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "HHnHotIUIBzTdckU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "100" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.9" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "5" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PETG @Ender-5 Max-all.json b/resources/profiles/Creality/filament/CR-PETG @Ender-5 Max-all.json deleted file mode 100644 index 0514484af8..0000000000 --- a/resources/profiles/Creality/filament/CR-PETG @Ender-5 Max-all.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "type": "filament", - "name": "CR-PETG @Ender-5 Max-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "jMfevCqhjSPahBHJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,220],[5.0,240],[10.0,250]]", - "pressure_advance": "0.05", - "filament_id": "06101", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle", - "Creality Ender-5 Max 0.6 nozzle", - "Creality Ender-5 Max 0.8 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-PLA @Ender-5 Max-all.json b/resources/profiles/Creality/filament/CR-PLA @Ender-5 Max-all.json deleted file mode 100644 index 68fa08da55..0000000000 --- a/resources/profiles/Creality/filament/CR-PLA @Ender-5 Max-all.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "type": "filament", - "name": "CR-PLA @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "sU0HCPjQoOLHPmPc", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "1", - "material_flow_temp_graph": "[[0.5,190],[1.0,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/CR-Silk @Ender-5 Max-all.json b/resources/profiles/Creality/filament/CR-Silk @Ender-5 Max-all.json deleted file mode 100644 index 41047d385c..0000000000 --- a/resources/profiles/Creality/filament/CR-Silk @Ender-5 Max-all.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "type": "filament", - "name": "CR-Silk @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "vFgKdtdiuqqrL9rk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "55", - "epoxy_resin_plate_temp_initial_layer": "55", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ABS @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic ABS @Ender-5 Max-all.json deleted file mode 100644 index ca7518e9b3..0000000000 --- a/resources/profiles/Creality/filament/Generic ABS @Ender-5 Max-all.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "type": "filament", - "name": "Generic ABS @Ender-5 Max-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "3BjyaE4hGrz7tqnk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "30" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "60" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[5.0,250],[10.0,260]]", - "pressure_advance": "0.034", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic ASA @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic ASA @Ender-5 Max-all.json deleted file mode 100644 index 85251468b0..0000000000 --- a/resources/profiles/Creality/filament/Generic ASA @Ender-5 Max-all.json +++ /dev/null @@ -1,175 +0,0 @@ -{ - "type": "filament", - "name": "Generic ASA @Ender-5 Max-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "1cOFjktr0dBTbYS4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "70" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "55", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,240],[8.0,250],[12.0,260]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PETG @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic PETG @Ender-5 Max-all.json deleted file mode 100644 index 229ac91f2b..0000000000 --- a/resources/profiles/Creality/filament/Generic PETG @Ender-5 Max-all.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "type": "filament", - "name": "Generic PETG @Ender-5 Max-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "yNgF407ERXuU7LHE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,230],[1.0,240]]", - "pressure_advance": "0.064", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic PLA @Ender-5 Max-all.json deleted file mode 100644 index 54783f5efc..0000000000 --- a/resources/profiles/Creality/filament/Generic PLA @Ender-5 Max-all.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "type": "filament", - "name": "Generic PLA @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ubfcxetXGj6agAoi", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "55", - "epoxy_resin_plate_temp_initial_layer": "55", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190],[1.0,210]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Ender-5 Max-all.json deleted file mode 100644 index ed024bf161..0000000000 --- a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-5 Max-all.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "type": "filament", - "name": "Generic PLA-CF @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "AHrCSGRui6sRCmQx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-5 Max-all.json deleted file mode 100644 index 250c387982..0000000000 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-5 Max-all.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "type": "filament", - "name": "Generic PLA-Silk @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zIrKl9P6Aer6sbiS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "55", - "epoxy_resin_plate_temp_initial_layer": "55", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190],[1.0,220]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Generic TPU @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Generic TPU @Ender-5 Max-all.json deleted file mode 100644 index 940f0bdb03..0000000000 --- a/resources/profiles/Creality/filament/Generic TPU @Ender-5 Max-all.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "type": "filament", - "name": "Generic TPU @Ender-5 Max-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "KPUcdZyegXYeyHOL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-ASA @Ender-5 Max-all.json b/resources/profiles/Creality/filament/HP-ASA @Ender-5 Max-all.json deleted file mode 100644 index b2d283fae0..0000000000 --- a/resources/profiles/Creality/filament/HP-ASA @Ender-5 Max-all.json +++ /dev/null @@ -1,175 +0,0 @@ -{ - "type": "filament", - "name": "HP-ASA @Ender-5 Max-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "JzsojF2Um23vm2qT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.88" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "55", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,240],[8.0,250],[12.0,260]]", - "pressure_advance": "0.032", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/HP-TPU @Ender-5 Max-all.json b/resources/profiles/Creality/filament/HP-TPU @Ender-5 Max-all.json deleted file mode 100644 index c25294789b..0000000000 --- a/resources/profiles/Creality/filament/HP-TPU @Ender-5 Max-all.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "type": "filament", - "name": "HP-TPU @Ender-5 Max-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "7Y7KjqVEXrce3jKO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2.5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle", - "Creality Ender-5 Max 0.6 nozzle", - "Creality Ender-5 Max 0.8 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper ABS @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Hyper ABS @Ender-5 Max-all.json deleted file mode 100644 index 097434bdc4..0000000000 --- a/resources/profiles/Creality/filament/Hyper ABS @Ender-5 Max-all.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "type": "filament", - "name": "Hyper ABS @Ender-5 Max-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "jPfMyNBquP31h2Eb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "20" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.92" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "60" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "20" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "5" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[5.0,250],[10.0,260]]", - "pressure_advance": "0.025", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle", - "Creality Ender-5 Max 0.6 nozzle", - "Creality Ender-5 Max 0.8 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PETG @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Hyper PETG @Ender-5 Max-all.json deleted file mode 100644 index fe1f0fbded..0000000000 --- a/resources/profiles/Creality/filament/Hyper PETG @Ender-5 Max-all.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "type": "filament", - "name": "Hyper PETG @Ender-5 Max-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "nr57CpZ5PwPmcOCR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220],[1.0,240]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Hyper PLA @Ender-5 Max-all.json deleted file mode 100644 index 6c5bac864d..0000000000 --- a/resources/profiles/Creality/filament/Hyper PLA @Ender-5 Max-all.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "type": "filament", - "name": "Hyper PLA @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Nb1H9jKg8CPQXLVI", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "45", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "55", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.5,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle", - "Creality Ender-5 Max 0.6 nozzle", - "Creality Ender-5 Max 0.8 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-5 Max-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-5 Max-all.json deleted file mode 100644 index 7592840259..0000000000 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-5 Max-all.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "type": "filament", - "name": "Hyper PLA-CF @Ender-5 Max-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "pW3AHx1VemLWSa7q", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "45" - ], - "cool_plate_temp_initial_layer": [ - "45" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-5 Max 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index f85e19bb76..9d2da9692c 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,2546 +1,2546 @@ { - "name": "Elegoo", - "version": "02.04.00.07", - "force_update": "0", - "description": "Elegoo configurations", - "machine_model_list": [ - { - "name": "Elegoo Centauri Carbon 2", - "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2.json" - }, - { - "name": "Elegoo Centauri 2", - "sub_path": "machine/EC2/Elegoo Centauri 2.json" - }, - { - "name": "Elegoo Centauri Carbon", - "sub_path": "machine/ECC/Elegoo Centauri Carbon.json" - }, - { - "name": "Elegoo Centauri", - "sub_path": "machine/EC/Elegoo Centauri.json" - }, - { - "name": "Elegoo OrangeStorm Giga", - "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga.json" - }, - { - "name": "Elegoo Neptune 4 Max", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max.json" - }, - { - "name": "Elegoo Neptune 4 Plus", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus.json" - }, - { - "name": "Elegoo Neptune 4 Pro", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro.json" - }, - { - "name": "Elegoo Neptune 4", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4.json" - }, - { - "name": "Elegoo Neptune 3 Max", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max.json" - }, - { - "name": "Elegoo Neptune 3 Plus", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus.json" - }, - { - "name": "Elegoo Neptune 3 Pro", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro.json" - }, - { - "name": "Elegoo Neptune 3", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 3.json" - }, - { - "name": "Elegoo Neptune X", - "sub_path": "machine/EN2SERIES/Elegoo Neptune X.json" - }, - { - "name": "Elegoo Neptune 2S", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S.json" - }, - { - "name": "Elegoo Neptune 2D", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D.json" - }, - { - "name": "Elegoo Neptune 2", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2.json" - }, - { - "name": "Elegoo Neptune", - "sub_path": "machine/EN2SERIES/Elegoo Neptune.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "fdm_process_elegoo_common", - "sub_path": "process/fdm_process_elegoo_common.json" - }, - { - "name": "fdm_process_elegoo_02010", - "sub_path": "process/fdm_process_elegoo_02010.json" - }, - { - "name": "fdm_process_elegoo_04020", - "sub_path": "process/fdm_process_elegoo_04020.json" - }, - { - "name": "fdm_process_elegoo_06030", - "sub_path": "process/fdm_process_elegoo_06030.json" - }, - { - "name": "fdm_process_elegoo_08040", - "sub_path": "process/fdm_process_elegoo_08040.json" - }, - { - "name": "fdm_process_elegoo_10050", - "sub_path": "process/fdm_process_elegoo_10050.json" - }, - { - "name": "0.20mm Standard @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.20mm Standard @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.20mm Standard @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo CC2 0.2 nozzle", - "sub_path": "process/ECC2/0.10mm Standard @Elegoo CC2 0.2 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo C2 0.2 nozzle", - "sub_path": "process/EC2/0.10mm Standard @Elegoo C2 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.30mm Standard @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.30mm Standard @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo CC2 0.8 nozzle", - "sub_path": "process/ECC2/0.40mm Standard @Elegoo CC2 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo C2 0.8 nozzle", - "sub_path": "process/EC2/0.40mm Standard @Elegoo C2 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo CC2 0.8 nozzle", - "sub_path": "process/ECC2/0.48mm Draft @Elegoo CC2 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo C2 0.8 nozzle", - "sub_path": "process/EC2/0.48mm Draft @Elegoo C2 0.8 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.42mm Extra Draft @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.42mm Extra Draft @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.36mm Draft @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.36mm Draft @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo CC2 0.8 nozzle", - "sub_path": "process/ECC2/0.32mm Optimal @Elegoo CC2 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo C2 0.8 nozzle", - "sub_path": "process/EC2/0.32mm Optimal @Elegoo C2 0.8 nozzle.json" - }, - { - "name": "0.30mm Strength @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.30mm Strength @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.30mm Strength @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.30mm Strength @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.28mm Extra Draft @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.28mm Extra Draft @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.24mm Optimal @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.24mm Optimal @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo CC2 0.8 nozzle", - "sub_path": "process/ECC2/0.24mm Fine @Elegoo CC2 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo C2 0.8 nozzle", - "sub_path": "process/EC2/0.24mm Fine @Elegoo C2 0.8 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.24mm Draft @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.24mm Draft @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.20mm Strength @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.20mm Strength @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.18mm Fine @Elegoo CC2 0.6 nozzle", - "sub_path": "process/ECC2/0.18mm Fine @Elegoo CC2 0.6 nozzle.json" - }, - { - "name": "0.18mm Fine @Elegoo C2 0.6 nozzle", - "sub_path": "process/EC2/0.18mm Fine @Elegoo C2 0.6 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.16mm Optimal @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.16mm Optimal @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.16mm Extra Fine @Elegoo CC2 0.8 nozzle", - "sub_path": "process/ECC2/0.16mm Extra Fine @Elegoo CC2 0.8 nozzle.json" - }, - { - "name": "0.16mm Extra Fine @Elegoo C2 0.8 nozzle", - "sub_path": "process/EC2/0.16mm Extra Fine @Elegoo C2 0.8 nozzle.json" - }, - { - "name": "0.14mm Extra Draft @Elegoo CC2 0.2 nozzle", - "sub_path": "process/ECC2/0.14mm Extra Draft @Elegoo CC2 0.2 nozzle.json" - }, - { - "name": "0.14mm Extra Draft @Elegoo C2 0.2 nozzle", - "sub_path": "process/EC2/0.14mm Extra Draft @Elegoo C2 0.2 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo CC2 0.4 nozzle", - "sub_path": "process/ECC2/0.12mm Fine @Elegoo CC2 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo C2 0.4 nozzle", - "sub_path": "process/EC2/0.12mm Fine @Elegoo C2 0.4 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo CC2 0.2 nozzle", - "sub_path": "process/ECC2/0.12mm Draft @Elegoo CC2 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo C2 0.2 nozzle", - "sub_path": "process/EC2/0.12mm Draft @Elegoo C2 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo CC2 0.2 nozzle", - "sub_path": "process/ECC2/0.08mm Optimal @Elegoo CC2 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo C2 0.2 nozzle", - "sub_path": "process/EC2/0.08mm Optimal @Elegoo C2 0.2 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", - "sub_path": "process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", - "sub_path": "process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", - "sub_path": "process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", - "sub_path": "process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json" - }, - { - "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", - "sub_path": "process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", - "sub_path": "process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", - "sub_path": "process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json" - }, - { - "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", - "sub_path": "process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", - "sub_path": "process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", - "sub_path": "process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", - "sub_path": "process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo C 0.2 nozzle", - "sub_path": "process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo C 0.8 nozzle", - "sub_path": "process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo C 0.8 nozzle", - "sub_path": "process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", - "sub_path": "process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json" - }, - { - "name": "0.30mm Strength @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo C 0.8 nozzle", - "sub_path": "process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.18mm Fine @Elegoo C 0.6 nozzle", - "sub_path": "process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", - "sub_path": "process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json" - }, - { - "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", - "sub_path": "process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo C 0.4 nozzle", - "sub_path": "process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo C 0.2 nozzle", - "sub_path": "process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", - "sub_path": "process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N4 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N4 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N4 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N4 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N4 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N4 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N4 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N4 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N4 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N4 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N4 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N4 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N4 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N4 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N4 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N4 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N4Pro 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Pro 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N4Pro 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Pro 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N4Pro 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Pro 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N4Pro 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Pro 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N4Pro 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Pro 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N4Pro 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Pro 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N4Pro 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Pro 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N4Pro 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Pro 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N4Pro 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Pro 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N4Pro 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Pro 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N4Pro 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Pro 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N4Pro 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Pro 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N4Pro 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Pro 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N4Pro 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Pro 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N4Pro 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Pro 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N4Pro 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Pro 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N4Plus 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Plus 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N4Plus 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Plus 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N4Plus 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Plus 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N4Plus 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Plus 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N4Plus 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Plus 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N4Plus 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Plus 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N4Plus 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Plus 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N4Plus 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Plus 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N4Plus 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Plus 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N4Plus 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Plus 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N4Plus 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Plus 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N4Plus 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Plus 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N4Plus 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Plus 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N4Plus 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Plus 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N4Plus 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Plus 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N4Plus 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Plus 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N4Max 0.4 nozzle", - "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Max 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N4Max 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Max 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N4Max 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Max 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N4Max 0.2 nozzle", - "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Max 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N4Max 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Max 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N4Max 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Max 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N4Max 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Max 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N4Max 0.6 nozzle", - "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Max 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N4Max 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Max 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N4Max 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Max 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N4Max 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Max 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N4Max 0.8 nozzle", - "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Max 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N4Max 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Max 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N4Max 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Max 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N4Max 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Max 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N4Max 1.0 nozzle", - "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Max 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N3Pro 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Pro 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N3Pro 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Pro 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N3Pro 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Pro 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N3Pro 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Pro 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N3Pro 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Pro 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N3Pro 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Pro 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N3Pro 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Pro 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N3Pro 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Pro 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N3Pro 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Pro 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N3Pro 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Pro 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N3Pro 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Pro 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N3Pro 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Pro 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N3Pro 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Pro 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N3Pro 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Pro 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N3Pro 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Pro 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N3Pro 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Pro 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N3Plus 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Plus 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N3Plus 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Plus 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N3Plus 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Plus 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N3Plus 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Plus 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N3Plus 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Plus 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N3Plus 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Plus 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N3Plus 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Plus 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N3Plus 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Plus 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N3Plus 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Plus 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N3Plus 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Plus 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N3Plus 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Plus 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N3Plus 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Plus 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N3Plus 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Plus 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N3Plus 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Plus 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N3Plus 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Plus 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N3Plus 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Plus 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo N3Max 0.4 nozzle", - "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Max 0.4 nozzle.json" - }, - { - "name": "0.10mm Standard @Elegoo N3Max 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Max 0.2 nozzle.json" - }, - { - "name": "0.08mm Optimal @Elegoo N3Max 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Max 0.2 nozzle.json" - }, - { - "name": "0.12mm Draft @Elegoo N3Max 0.2 nozzle", - "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Max 0.2 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo N3Max 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Max 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo N3Max 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Max 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo N3Max 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Max 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo N3Max 0.6 nozzle", - "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Max 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo N3Max 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Max 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo N3Max 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Max 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo N3Max 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Max 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo N3Max 0.8 nozzle", - "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Max 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo N3Max 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Max 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo N3Max 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Max 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo N3Max 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Max 1.0 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo N3Max 1.0 nozzle", - "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Max 1.0 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.20mm Standard @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.12mm Fine @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.12mm Fine @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.16mm Optimal @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.20mm Strength @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.24mm Draft @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo Neptune 0.4 nozzle", - "sub_path": "process/EN2SERIES/0.28mm Extra Draft @Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo Neptune 0.6 nozzle", - "sub_path": "process/EN2SERIES/0.30mm Standard @Elegoo Neptune 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo Neptune 0.6 nozzle", - "sub_path": "process/EN2SERIES/0.24mm Optimal @Elegoo Neptune 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo Neptune 0.6 nozzle", - "sub_path": "process/EN2SERIES/0.36mm Draft @Elegoo Neptune 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo Neptune 0.6 nozzle", - "sub_path": "process/EN2SERIES/0.42mm Extra Draft @Elegoo Neptune 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo Neptune 0.8 nozzle", - "sub_path": "process/EN2SERIES/0.40mm Standard @Elegoo Neptune 0.8 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo Neptune 0.8 nozzle", - "sub_path": "process/EN2SERIES/0.24mm Fine @Elegoo Neptune 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo Neptune 0.8 nozzle", - "sub_path": "process/EN2SERIES/0.32mm Optimal @Elegoo Neptune 0.8 nozzle.json" - }, - { - "name": "0.20mm Standard @Elegoo Giga 0.4 nozzle", - "sub_path": "process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json" - }, - { - "name": "0.30mm Standard @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.40mm Standard @Elegoo Giga 0.8 nozzle", - "sub_path": "process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json" - }, - { - "name": "0.50mm Standard @Elegoo Giga 1.0 nozzle", - "sub_path": "process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json" - }, - { - "name": "0.20mm Strength @Elegoo Giga 0.4 nozzle", - "sub_path": "process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json" - }, - { - "name": "0.16mm Optimal @Elegoo Giga 0.4 nozzle", - "sub_path": "process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json" - }, - { - "name": "0.24mm Draft @Elegoo Giga 0.4 nozzle", - "sub_path": "process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json" - }, - { - "name": "0.28mm Extra Draft @Elegoo Giga 0.4 nozzle", - "sub_path": "process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json" - }, - { - "name": "0.30mm Strength @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.18mm Fine @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.24mm Optimal @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.36mm Draft @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.42mm Extra Draft @Elegoo Giga 0.6 nozzle", - "sub_path": "process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json" - }, - { - "name": "0.24mm Fine @Elegoo Giga 0.8 nozzle", - "sub_path": "process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json" - }, - { - "name": "0.32mm Optimal @Elegoo Giga 0.8 nozzle", - "sub_path": "process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json" - }, - { - "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle", - "sub_path": "process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json" - }, - { - "name": "0.56mm Extra Draft @Elegoo Giga 0.8 nozzle", - "sub_path": "process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json" - }, - { - "name": "0.60mm Draft @Elegoo Giga 1.0 nozzle", - "sub_path": "process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json" - }, - { - "name": "0.40mm Optimal @Elegoo Giga 1.0 nozzle", - "sub_path": "process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json" - }, - { - "name": "0.30mm Fine @Elegoo Giga 1.0 nozzle", - "sub_path": "process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json" - } - ], - "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": "fdm_filament_hips", - "sub_path": "filament/fdm_filament_hips.json" - }, - { - "name": "fdm_filament_pps", - "sub_path": "filament/fdm_filament_pps.json" - }, - { - "name": "fdm_filament_ppa", - "sub_path": "filament/fdm_filament_ppa.json" - }, - { - "name": "Generic ABS @base", - "sub_path": "filament/BASE/Generic ABS @base.json" - }, - { - "name": "Generic PA @base", - "sub_path": "filament/BASE/Generic PA @base.json" - }, - { - "name": "Generic PETG @base", - "sub_path": "filament/BASE/Generic PETG @base.json" - }, - { - "name": "Generic PET @base", - "sub_path": "filament/BASE/Generic PET @base.json" - }, - { - "name": "Generic PLA @base", - "sub_path": "filament/BASE/Generic PLA @base.json" - }, - { - "name": "Generic PC @base", - "sub_path": "filament/BASE/Generic PC @base.json" - }, - { - "name": "Generic ASA @base", - "sub_path": "filament/BASE/Generic ASA @base.json" - }, - { - "name": "Elegoo TPU 95A @base", - "sub_path": "filament/BASE/Elegoo TPU 95A @base.json" - }, - { - "name": "Elegoo PETG @base", - "sub_path": "filament/BASE/Elegoo PETG @base.json" - }, - { - "name": "Elegoo PLA @base", - "sub_path": "filament/BASE/Elegoo PLA @base.json" - }, - { - "name": "Elegoo ASA @base", - "sub_path": "filament/BASE/Elegoo ASA @base.json" - }, - { - "name": "Elegoo ABS @base", - "sub_path": "filament/BASE/Elegoo ABS @base.json" - }, - { - "name": "Elegoo PAHT-CF @base", - "sub_path": "filament/BASE/Elegoo PAHT-CF @base.json" - }, - { - "name": "Elegoo PC @base", - "sub_path": "filament/BASE/Elegoo PC @base.json" - }, - { - "name": "Elegoo ASA @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo ASA @0.2 nozzle.json" - }, - { - "name": "Elegoo PETG @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG @0.2 nozzle.json" - }, - { - "name": "Elegoo PETG PRO @base", - "sub_path": "filament/BASE/Elegoo PETG PRO @base.json" - }, - { - "name": "Elegoo PETG PRO @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA Matte @base", - "sub_path": "filament/BASE/Elegoo PLA Matte @base.json" - }, - { - "name": "Elegoo PLA Matte @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA PRO @base", - "sub_path": "filament/BASE/Elegoo PLA PRO @base.json" - }, - { - "name": "Elegoo PLA PRO @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA Silk @base", - "sub_path": "filament/BASE/Elegoo PLA Silk @base.json" - }, - { - "name": "Elegoo PLA Silk @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA+ @base", - "sub_path": "filament/BASE/Elegoo PLA+ @base.json" - }, - { - "name": "Elegoo PLA+ @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json" - }, - { - "name": "Elegoo Rapid PLA+ @base", - "sub_path": "filament/BASE/Elegoo Rapid PLA+ @base.json" - }, - { - "name": "Elegoo Rapid PLA+ @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json" - }, - { - "name": "Elegoo Rapid PETG @base", - "sub_path": "filament/BASE/Elegoo Rapid PETG @base.json" - }, - { - "name": "Elegoo Rapid PETG @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json" - }, - { - "name": "Elegoo ABS @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo ABS @0.2 nozzle.json" - }, - { - "name": "Elegoo PC @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC @0.2 nozzle.json" - }, - { - "name": "Elegoo PC-FR @base", - "sub_path": "filament/BASE/Elegoo PC-FR @base.json" - }, - { - "name": "Elegoo PC-FR @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA Basic @base", - "sub_path": "filament/BASE/Elegoo PLA Basic @base.json" - }, - { - "name": "Elegoo PLA Basic @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json" - }, - { - "name": "Elegoo PETG Translucent @base", - "sub_path": "filament/BASE/Elegoo PETG Translucent @base.json" - }, - { - "name": "Elegoo PETG Translucent @0.2 nozzle", - "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json" - }, - { - "name": "Elegoo PLA @ECC", - "sub_path": "filament/ECC/Elegoo PLA @ECC.json" - }, - { - "name": "Elegoo PLA PRO @ECC", - "sub_path": "filament/ECC/Elegoo PLA PRO @ECC.json" - }, - { - "name": "Elegoo PLA+ @ECC", - "sub_path": "filament/ECC/Elegoo PLA+ @ECC.json" - }, - { - "name": "Elegoo Rapid PLA+ @ECC", - "sub_path": "filament/ECC/Elegoo Rapid PLA+ @ECC.json" - }, - { - "name": "Elegoo PLA Silk @ECC", - "sub_path": "filament/ECC/Elegoo PLA Silk @ECC.json" - }, - { - "name": "Elegoo PLA Matte @ECC", - "sub_path": "filament/ECC/Elegoo PLA Matte @ECC.json" - }, - { - "name": "Elegoo PLA-CF @base", - "sub_path": "filament/BASE/Elegoo PLA-CF @base.json" - }, - { - "name": "Elegoo PLA-CF @ECC", - "sub_path": "filament/ECC/Elegoo PLA-CF @ECC.json" - }, - { - "name": "Elegoo PETG @ECC", - "sub_path": "filament/ECC/Elegoo PETG @ECC.json" - }, - { - "name": "Elegoo PETG PRO @ECC", - "sub_path": "filament/ECC/Elegoo PETG PRO @ECC.json" - }, - { - "name": "Elegoo Rapid PETG @ECC", - "sub_path": "filament/ECC/Elegoo Rapid PETG @ECC.json" - }, - { - "name": "Elegoo TPU 95A @ECC", - "sub_path": "filament/ECC/Elegoo TPU 95A @ECC.json" - }, - { - "name": "Elegoo ASA @ECC", - "sub_path": "filament/ECC/Elegoo ASA @ECC.json" - }, - { - "name": "Elegoo ABS @ECC", - "sub_path": "filament/ECC/Elegoo ABS @ECC.json" - }, - { - "name": "Elegoo PLA Galaxy @base", - "sub_path": "filament/BASE/Elegoo PLA Galaxy @base.json" - }, - { - "name": "Elegoo PLA Galaxy @ECC", - "sub_path": "filament/ECC/Elegoo PLA Galaxy @ECC.json" - }, - { - "name": "Elegoo PLA Basic @ECC", - "sub_path": "filament/ECC/Elegoo PLA Basic @ECC.json" - }, - { - "name": "Elegoo PLA Marble @base", - "sub_path": "filament/BASE/Elegoo PLA Marble @base.json" - }, - { - "name": "Elegoo PLA Marble @ECC", - "sub_path": "filament/ECC/Elegoo PLA Marble @ECC.json" - }, - { - "name": "Elegoo PLA Sparkle @base", - "sub_path": "filament/BASE/Elegoo PLA Sparkle @base.json" - }, - { - "name": "Elegoo PLA Sparkle @ECC", - "sub_path": "filament/ECC/Elegoo PLA Sparkle @ECC.json" - }, - { - "name": "Elegoo PLA Wood @base", - "sub_path": "filament/BASE/Elegoo PLA Wood @base.json" - }, - { - "name": "Elegoo PLA Wood @ECC", - "sub_path": "filament/ECC/Elegoo PLA Wood @ECC.json" - }, - { - "name": "Elegoo PAHT-CF @ECC", - "sub_path": "filament/ECC/Elegoo PAHT-CF @ECC.json" - }, - { - "name": "Elegoo PC @ECC", - "sub_path": "filament/ECC/Elegoo PC @ECC.json" - }, - { - "name": "Elegoo PC-FR @ECC", - "sub_path": "filament/ECC/Elegoo PC-FR @ECC.json" - }, - { - "name": "Elegoo PETG-CF @base", - "sub_path": "filament/BASE/Elegoo PETG-CF @base.json" - }, - { - "name": "Elegoo PETG-CF @ECC", - "sub_path": "filament/ECC/Elegoo PETG-CF @ECC.json" - }, - { - "name": "Elegoo PETG-GF @base", - "sub_path": "filament/BASE/Elegoo PETG-GF @base.json" - }, - { - "name": "Elegoo PETG-GF @ECC", - "sub_path": "filament/ECC/Elegoo PETG-GF @ECC.json" - }, - { - "name": "Elegoo PETG Translucent @ECC", - "sub_path": "filament/ECC/Elegoo PETG Translucent @ECC.json" - }, - { - "name": "Elegoo Rapid TPU 95A @base", - "sub_path": "filament/BASE/Elegoo Rapid TPU 95A @base.json" - }, - { - "name": "Elegoo Rapid TPU 95A @ECC", - "sub_path": "filament/ECC/Elegoo Rapid TPU 95A @ECC.json" - }, - { - "name": "Elegoo PLA @EC", - "sub_path": "filament/EC/Elegoo PLA @EC.json" - }, - { - "name": "Elegoo PLA PRO @EC", - "sub_path": "filament/EC/Elegoo PLA PRO @EC.json" - }, - { - "name": "Elegoo PLA+ @EC", - "sub_path": "filament/EC/Elegoo PLA+ @EC.json" - }, - { - "name": "Elegoo Rapid PLA+ @EC", - "sub_path": "filament/EC/Elegoo Rapid PLA+ @EC.json" - }, - { - "name": "Elegoo PLA Silk @EC", - "sub_path": "filament/EC/Elegoo PLA Silk @EC.json" - }, - { - "name": "Elegoo PLA Matte @EC", - "sub_path": "filament/EC/Elegoo PLA Matte @EC.json" - }, - { - "name": "Elegoo PETG @EC", - "sub_path": "filament/EC/Elegoo PETG @EC.json" - }, - { - "name": "Elegoo PETG PRO @EC", - "sub_path": "filament/EC/Elegoo PETG PRO @EC.json" - }, - { - "name": "Elegoo Rapid PETG @EC", - "sub_path": "filament/EC/Elegoo Rapid PETG @EC.json" - }, - { - "name": "Elegoo TPU 95A @EC", - "sub_path": "filament/EC/Elegoo TPU 95A @EC.json" - }, - { - "name": "Elegoo ASA @EC", - "sub_path": "filament/EC/Elegoo ASA @EC.json" - }, - { - "name": "Elegoo ABS @EC", - "sub_path": "filament/EC/Elegoo ABS @EC.json" - }, - { - "name": "Elegoo PLA Galaxy @EC", - "sub_path": "filament/EC/Elegoo PLA Galaxy @EC.json" - }, - { - "name": "Elegoo PLA Basic @EC", - "sub_path": "filament/EC/Elegoo PLA Basic @EC.json" - }, - { - "name": "Elegoo PLA Marble @EC", - "sub_path": "filament/EC/Elegoo PLA Marble @EC.json" - }, - { - "name": "Elegoo PLA Sparkle @EC", - "sub_path": "filament/EC/Elegoo PLA Sparkle @EC.json" - }, - { - "name": "Elegoo PLA Wood @EC", - "sub_path": "filament/EC/Elegoo PLA Wood @EC.json" - }, - { - "name": "Elegoo PAHT-CF @EC", - "sub_path": "filament/EC/Elegoo PAHT-CF @EC.json" - }, - { - "name": "Elegoo PC @EC", - "sub_path": "filament/EC/Elegoo PC @EC.json" - }, - { - "name": "Elegoo PC-FR @EC", - "sub_path": "filament/EC/Elegoo PC-FR @EC.json" - }, - { - "name": "Elegoo PETG-CF @EC", - "sub_path": "filament/EC/Elegoo PETG-CF @EC.json" - }, - { - "name": "Elegoo PETG-GF @EC", - "sub_path": "filament/EC/Elegoo PETG-GF @EC.json" - }, - { - "name": "Elegoo PETG Translucent @EC", - "sub_path": "filament/EC/Elegoo PETG Translucent @EC.json" - }, - { - "name": "Elegoo Rapid TPU 95A @EC", - "sub_path": "filament/EC/Elegoo Rapid TPU 95A @EC.json" - }, - { - "name": "Elegoo PLA @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA @ECC2.json" - }, - { - "name": "Elegoo PLA @EC2", - "sub_path": "filament/EC2/Elegoo PLA @EC2.json" - }, - { - "name": "Elegoo PLA PRO @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA PRO @ECC2.json" - }, - { - "name": "Elegoo PLA PRO @EC2", - "sub_path": "filament/EC2/Elegoo PLA PRO @EC2.json" - }, - { - "name": "Elegoo PLA+ @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA+ @ECC2.json" - }, - { - "name": "Elegoo PLA+ @EC2", - "sub_path": "filament/EC2/Elegoo PLA+ @EC2.json" - }, - { - "name": "Elegoo Rapid PLA+ @ECC2", - "sub_path": "filament/ECC2/Elegoo Rapid PLA+ @ECC2.json" - }, - { - "name": "Elegoo Rapid PLA+ @EC2", - "sub_path": "filament/EC2/Elegoo Rapid PLA+ @EC2.json" - }, - { - "name": "Elegoo PLA Silk @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Silk @ECC2.json" - }, - { - "name": "Elegoo PLA Silk @EC2", - "sub_path": "filament/EC2/Elegoo PLA Silk @EC2.json" - }, - { - "name": "Elegoo PLA Matte @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Matte @ECC2.json" - }, - { - "name": "Elegoo PLA Matte @EC2", - "sub_path": "filament/EC2/Elegoo PLA Matte @EC2.json" - }, - { - "name": "Elegoo PLA-CF @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA-CF @ECC2.json" - }, - { - "name": "Elegoo PLA-CF @EC2", - "sub_path": "filament/EC2/Elegoo PLA-CF @EC2.json" - }, - { - "name": "Elegoo PETG @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG @ECC2.json" - }, - { - "name": "Elegoo PETG @EC2", - "sub_path": "filament/EC2/Elegoo PETG @EC2.json" - }, - { - "name": "Elegoo PETG PRO @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG PRO @ECC2.json" - }, - { - "name": "Elegoo PETG PRO @EC2", - "sub_path": "filament/EC2/Elegoo PETG PRO @EC2.json" - }, - { - "name": "Elegoo Rapid PETG @ECC2", - "sub_path": "filament/ECC2/Elegoo Rapid PETG @ECC2.json" - }, - { - "name": "Elegoo Rapid PETG @EC2", - "sub_path": "filament/EC2/Elegoo Rapid PETG @EC2.json" - }, - { - "name": "Elegoo TPU 95A @ECC2", - "sub_path": "filament/ECC2/Elegoo TPU 95A @ECC2.json" - }, - { - "name": "Elegoo TPU 95A @EC2", - "sub_path": "filament/EC2/Elegoo TPU 95A @EC2.json" - }, - { - "name": "Elegoo ASA @ECC2", - "sub_path": "filament/ECC2/Elegoo ASA @ECC2.json" - }, - { - "name": "Elegoo ASA @EC2", - "sub_path": "filament/EC2/Elegoo ASA @EC2.json" - }, - { - "name": "Elegoo ABS @ECC2", - "sub_path": "filament/ECC2/Elegoo ABS @ECC2.json" - }, - { - "name": "Elegoo ABS @EC2", - "sub_path": "filament/EC2/Elegoo ABS @EC2.json" - }, - { - "name": "Elegoo PLA Galaxy @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Galaxy @ECC2.json" - }, - { - "name": "Elegoo PLA Galaxy @EC2", - "sub_path": "filament/EC2/Elegoo PLA Galaxy @EC2.json" - }, - { - "name": "Elegoo PLA Basic @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Basic @ECC2.json" - }, - { - "name": "Elegoo PLA Basic @EC2", - "sub_path": "filament/EC2/Elegoo PLA Basic @EC2.json" - }, - { - "name": "Elegoo PLA Marble @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Marble @ECC2.json" - }, - { - "name": "Elegoo PLA Marble @EC2", - "sub_path": "filament/EC2/Elegoo PLA Marble @EC2.json" - }, - { - "name": "Elegoo PLA Sparkle @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Sparkle @ECC2.json" - }, - { - "name": "Elegoo PLA Sparkle @EC2", - "sub_path": "filament/EC2/Elegoo PLA Sparkle @EC2.json" - }, - { - "name": "Elegoo PLA Wood @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Wood @ECC2.json" - }, - { - "name": "Elegoo PLA Wood @EC2", - "sub_path": "filament/EC2/Elegoo PLA Wood @EC2.json" - }, - { - "name": "Elegoo PAHT-CF @ECC2", - "sub_path": "filament/ECC2/Elegoo PAHT-CF @ECC2.json" - }, - { - "name": "Elegoo PAHT-CF @EC2", - "sub_path": "filament/EC2/Elegoo PAHT-CF @EC2.json" - }, - { - "name": "Elegoo PC @ECC2", - "sub_path": "filament/ECC2/Elegoo PC @ECC2.json" - }, - { - "name": "Elegoo PC @EC2", - "sub_path": "filament/EC2/Elegoo PC @EC2.json" - }, - { - "name": "Elegoo PC-FR @ECC2", - "sub_path": "filament/ECC2/Elegoo PC-FR @ECC2.json" - }, - { - "name": "Elegoo PC-FR @EC2", - "sub_path": "filament/EC2/Elegoo PC-FR @EC2.json" - }, - { - "name": "Elegoo PETG-CF @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG-CF @ECC2.json" - }, - { - "name": "Elegoo PETG-CF @EC2", - "sub_path": "filament/EC2/Elegoo PETG-CF @EC2.json" - }, - { - "name": "Elegoo PETG-GF @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG-GF @ECC2.json" - }, - { - "name": "Elegoo PETG-GF @EC2", - "sub_path": "filament/EC2/Elegoo PETG-GF @EC2.json" - }, - { - "name": "Elegoo PETG Translucent @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG Translucent @ECC2.json" - }, - { - "name": "Elegoo PETG Translucent @EC2", - "sub_path": "filament/EC2/Elegoo PETG Translucent @EC2.json" - }, - { - "name": "Elegoo ASA-CF @base", - "sub_path": "filament/BASE/Elegoo ASA-CF @base.json" - }, - { - "name": "Elegoo ASA-CF @ECC2", - "sub_path": "filament/ECC2/Elegoo ASA-CF @ECC2.json" - }, - { - "name": "Elegoo ASA-CF @EC2", - "sub_path": "filament/EC2/Elegoo ASA-CF @EC2.json" - }, - { - "name": "Elegoo PET-CF @base", - "sub_path": "filament/BASE/Elegoo PET-CF @base.json" - }, - { - "name": "Elegoo PET-CF @ECC2", - "sub_path": "filament/ECC2/Elegoo PET-CF @ECC2.json" - }, - { - "name": "Elegoo PET-CF @EC2", - "sub_path": "filament/EC2/Elegoo PET-CF @EC2.json" - }, - { - "name": "Elegoo PETG HF @base", - "sub_path": "filament/BASE/Elegoo PETG HF @base.json" - }, - { - "name": "Elegoo PETG HF @ECC2", - "sub_path": "filament/ECC2/Elegoo PETG HF @ECC2.json" - }, - { - "name": "Elegoo PETG HF @EC2", - "sub_path": "filament/EC2/Elegoo PETG HF @EC2.json" - }, - { - "name": "Elegoo PLA Glow @base", - "sub_path": "filament/BASE/Elegoo PLA Glow @base.json" - }, - { - "name": "Elegoo PLA Glow @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Glow @ECC2.json" - }, - { - "name": "Elegoo PLA Glow @EC2", - "sub_path": "filament/EC2/Elegoo PLA Glow @EC2.json" - }, - { - "name": "Elegoo PLA Translucent2 @base", - "sub_path": "filament/BASE/Elegoo PLA Translucent2 @base.json" - }, - { - "name": "Elegoo PLA Translucent2 @ECC2", - "sub_path": "filament/ECC2/Elegoo PLA Translucent2 @ECC2.json" - }, - { - "name": "Elegoo PLA Translucent2 @EC2", - "sub_path": "filament/EC2/Elegoo PLA Translucent2 @EC2.json" - }, - { - "name": "Elegoo Rapid TPU 95A @ECC2", - "sub_path": "filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json" - }, - { - "name": "Elegoo Rapid TPU 95A @EC2", - "sub_path": "filament/EC2/Elegoo Rapid TPU 95A @EC2.json" - }, - { - "name": "Elegoo PLA @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA @EN4 Series.json" - }, - { - "name": "Elegoo PLA PRO @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json" - }, - { - "name": "Elegoo PLA+ @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json" - }, - { - "name": "Elegoo Rapid PLA+ @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json" - }, - { - "name": "Elegoo PLA Silk @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json" - }, - { - "name": "Elegoo PLA Matte @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json" - }, - { - "name": "Elegoo PLA-CF @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json" - }, - { - "name": "Elegoo PETG @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PETG @EN4 Series.json" - }, - { - "name": "Elegoo PETG PRO @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json" - }, - { - "name": "Elegoo Rapid PETG @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json" - }, - { - "name": "Elegoo TPU 95A @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json" - }, - { - "name": "Elegoo ASA @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo ASA @EN4 Series.json" - }, - { - "name": "Elegoo PLA Galaxy @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json" - }, - { - "name": "Elegoo PLA Basic @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json" - }, - { - "name": "Elegoo PLA Marble @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json" - }, - { - "name": "Elegoo PLA Sparkle @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json" - }, - { - "name": "Elegoo PLA Wood @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json" - }, - { - "name": "Elegoo PETG-CF @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json" - }, - { - "name": "Elegoo PETG-GF @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json" - }, - { - "name": "Elegoo PETG Translucent @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json" - }, - { - "name": "Elegoo Rapid TPU 95A @EN4 Series", - "sub_path": "filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json" - }, - { - "name": "Elegoo PLA @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA @EN3 Series.json" - }, - { - "name": "Elegoo PLA PRO @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json" - }, - { - "name": "Elegoo PLA+ @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json" - }, - { - "name": "Elegoo Rapid PLA+ @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json" - }, - { - "name": "Elegoo PLA Silk @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json" - }, - { - "name": "Elegoo PLA Matte @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json" - }, - { - "name": "Elegoo PLA-CF @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json" - }, - { - "name": "Elegoo PETG @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PETG @EN3 Series.json" - }, - { - "name": "Elegoo PETG PRO @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json" - }, - { - "name": "Elegoo Rapid PETG @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json" - }, - { - "name": "Elegoo TPU 95A @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json" - }, - { - "name": "Elegoo ASA @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo ASA @EN3 Series.json" - }, - { - "name": "Elegoo PLA Galaxy @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json" - }, - { - "name": "Elegoo PLA Basic @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json" - }, - { - "name": "Elegoo PLA Marble @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json" - }, - { - "name": "Elegoo PLA Sparkle @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json" - }, - { - "name": "Elegoo PLA Wood @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json" - }, - { - "name": "Elegoo PETG-CF @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json" - }, - { - "name": "Elegoo PETG-GF @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json" - }, - { - "name": "Elegoo PETG Translucent @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json" - }, - { - "name": "Elegoo Rapid TPU 95A @EN3 Series", - "sub_path": "filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json" - }, - { - "name": "Elegoo PLA @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA @EN2 Series.json" - }, - { - "name": "Elegoo PLA PRO @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json" - }, - { - "name": "Elegoo PLA+ @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json" - }, - { - "name": "Elegoo Rapid PLA+ @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json" - }, - { - "name": "Elegoo PLA Silk @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json" - }, - { - "name": "Elegoo PLA Matte @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json" - }, - { - "name": "Elegoo PLA-CF @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json" - }, - { - "name": "Elegoo PETG @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PETG @EN2 Series.json" - }, - { - "name": "Elegoo PETG PRO @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json" - }, - { - "name": "Elegoo Rapid PETG @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json" - }, - { - "name": "Elegoo ASA @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo ASA @EN2 Series.json" - }, - { - "name": "Elegoo PLA Galaxy @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json" - }, - { - "name": "Elegoo PLA Basic @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json" - }, - { - "name": "Elegoo PLA Marble @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json" - }, - { - "name": "Elegoo PLA Sparkle @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json" - }, - { - "name": "Elegoo PLA Wood @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json" - }, - { - "name": "Elegoo PETG-CF @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json" - }, - { - "name": "Elegoo PETG-GF @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json" - }, - { - "name": "Elegoo PETG Translucent @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json" - }, - { - "name": "Elegoo Rapid TPU 95A @EN2 Series", - "sub_path": "filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json" - }, - { - "name": "Elegoo ASA @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo ASA @Elegoo Giga.json" - }, - { - "name": "Elegoo PETG @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PETG @Elegoo Giga.json" - }, - { - "name": "Elegoo PETG PRO @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Matte @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json" - }, - { - "name": "Elegoo Rapid PETG @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json" - }, - { - "name": "Elegoo Rapid PLA+ @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Galaxy @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Basic @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Marble @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Sparkle @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json" - }, - { - "name": "Elegoo PLA Wood @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json" - }, - { - "name": "Elegoo PETG-CF @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json" - }, - { - "name": "Elegoo PETG-GF @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json" - }, - { - "name": "Elegoo PETG Translucent @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json" - }, - { - "name": "Elegoo Rapid TPU 95A @Elegoo Giga", - "sub_path": "filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json" - }, - { - "name": "Generic ABS @Elegoo Centauri", - "sub_path": "filament/Generic/Generic ABS @Elegoo Centauri.json" - }, - { - "name": "Generic ABS @Elegoo", - "sub_path": "filament/Generic/Generic ABS @Elegoo.json" - }, - { - "name": "Generic ABS-CF @Elegoo Centauri", - "sub_path": "filament/Generic/Generic ABS-CF @Elegoo Centauri.json" - }, - { - "name": "Generic ASA @Elegoo", - "sub_path": "filament/Generic/Generic ASA @Elegoo.json" - }, - { - "name": "Generic ASA-CF @Elegoo Centauri", - "sub_path": "filament/Generic/Generic ASA-CF @Elegoo Centauri.json" - }, - { - "name": "Generic PA @Elegoo", - "sub_path": "filament/Generic/Generic PA @Elegoo.json" - }, - { - "name": "Generic PA6-CF @Elegoo", - "sub_path": "filament/Generic/Generic PA6-CF @Elegoo.json" - }, - { - "name": "Generic PC @Elegoo", - "sub_path": "filament/Generic/Generic PC @Elegoo.json" - }, - { - "name": "Generic PC-CF @Elegoo", - "sub_path": "filament/Generic/Generic PC-CF @Elegoo.json" - }, - { - "name": "Generic PET @Elegoo Centauri", - "sub_path": "filament/Generic/Generic PET @Elegoo Centauri.json" - }, - { - "name": "Generic PET-CF @Elegoo Centauri", - "sub_path": "filament/Generic/Generic PET-CF @Elegoo Centauri.json" - }, - { - "name": "Generic PETG @Elegoo", - "sub_path": "filament/Generic/Generic PETG @Elegoo.json" - }, - { - "name": "Generic PETG PRO @Elegoo", - "sub_path": "filament/Generic/Generic PETG PRO @Elegoo.json" - }, - { - "name": "Generic PETG-CF @Elegoo Centauri", - "sub_path": "filament/Generic/Generic PETG-CF @Elegoo Centauri.json" - }, - { - "name": "Generic PLA @Elegoo Centauri", - "sub_path": "filament/Generic/Generic PLA @Elegoo Centauri.json" - }, - { - "name": "Generic PLA @Elegoo", - "sub_path": "filament/Generic/Generic PLA @Elegoo.json" - }, - { - "name": "Generic PLA Matte @Elegoo", - "sub_path": "filament/Generic/Generic PLA Matte @Elegoo.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "fdm_elegoo_common", - "sub_path": "machine/fdm_elegoo_common.json" - }, - { - "name": "fdm_elegoo_3dp_001_common", - "sub_path": "machine/fdm_elegoo_3dp_001_common.json" - }, - { - "name": "Elegoo Centauri Carbon 0.4 nozzle", - "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 0.2 nozzle", - "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 0.6 nozzle", - "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 0.8 nozzle", - "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json" - }, - { - "name": "Elegoo Centauri 0.4 nozzle", - "sub_path": "machine/EC/Elegoo Centauri 0.4 nozzle.json" - }, - { - "name": "Elegoo Centauri 0.2 nozzle", - "sub_path": "machine/EC/Elegoo Centauri 0.2 nozzle.json" - }, - { - "name": "Elegoo Centauri 0.6 nozzle", - "sub_path": "machine/EC/Elegoo Centauri 0.6 nozzle.json" - }, - { - "name": "Elegoo Centauri 0.8 nozzle", - "sub_path": "machine/EC/Elegoo Centauri 0.8 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 2 0.4 nozzle", - "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json" - }, - { - "name": "Elegoo Centauri 2 0.4 nozzle", - "sub_path": "machine/EC2/Elegoo Centauri 2 0.4 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 2 0.2 nozzle", - "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.2 nozzle.json" - }, - { - "name": "Elegoo Centauri 2 0.2 nozzle", - "sub_path": "machine/EC2/Elegoo Centauri 2 0.2 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 2 0.6 nozzle", - "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.6 nozzle.json" - }, - { - "name": "Elegoo Centauri 2 0.6 nozzle", - "sub_path": "machine/EC2/Elegoo Centauri 2 0.6 nozzle.json" - }, - { - "name": "Elegoo Centauri Carbon 2 0.8 nozzle", - "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.8 nozzle.json" - }, - { - "name": "Elegoo Centauri 2 0.8 nozzle", - "sub_path": "machine/EC2/Elegoo Centauri 2 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 0.4 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 0.2 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 0.6 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 0.8 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 1.0 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Pro 0.4 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Pro 0.2 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Pro 0.6 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Pro 0.8 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Pro 1.0 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Plus 0.4 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Plus 0.2 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Plus 0.6 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Plus 0.8 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Plus 1.0 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Max 0.4 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Max 0.2 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Max 0.6 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Max 0.8 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 4 Max 1.0 nozzle", - "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 1.0 nozzle.json" - }, - { - "name": "Elegoo OrangeStorm Giga 0.4 nozzle", - "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.4 nozzle.json" - }, - { - "name": "Elegoo OrangeStorm Giga 0.6 nozzle", - "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.6 nozzle.json" - }, - { - "name": "Elegoo OrangeStorm Giga 0.8 nozzle", - "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.8 nozzle.json" - }, - { - "name": "Elegoo OrangeStorm Giga 1.0 nozzle", - "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Pro 0.4 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Pro 0.2 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Pro 0.6 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Pro 0.8 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Pro 1.0 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Plus 0.4 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Plus 0.2 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Plus 0.6 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Plus 0.8 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Plus 1.0 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Max 0.4 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Max 0.2 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.2 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Max 0.6 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Max 0.8 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 Max 1.0 nozzle", - "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 1.0 nozzle.json" - }, - { - "name": "Elegoo Neptune 2 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 2 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 2 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 3 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune X 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune X 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune X 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 2S 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 2S 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 2S 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 2D 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 2D 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 2D 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.8 nozzle.json" - }, - { - "name": "Elegoo Neptune 0.4 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.4 nozzle.json" - }, - { - "name": "Elegoo Neptune 0.6 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.6 nozzle.json" - }, - { - "name": "Elegoo Neptune 0.8 nozzle", - "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.8 nozzle.json" - } - ] -} \ No newline at end of file + "name": "Elegoo", + "version": "02.04.00.08", + "force_update": "0", + "description": "Elegoo configurations", + "machine_model_list": [ + { + "name": "Elegoo Centauri", + "sub_path": "machine/EC/Elegoo Centauri.json" + }, + { + "name": "Elegoo Centauri 2", + "sub_path": "machine/EC2/Elegoo Centauri 2.json" + }, + { + "name": "Elegoo Centauri Carbon", + "sub_path": "machine/ECC/Elegoo Centauri Carbon.json" + }, + { + "name": "Elegoo Centauri Carbon 2", + "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2.json" + }, + { + "name": "Elegoo Neptune", + "sub_path": "machine/EN2SERIES/Elegoo Neptune.json" + }, + { + "name": "Elegoo Neptune 2", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2.json" + }, + { + "name": "Elegoo Neptune 2D", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D.json" + }, + { + "name": "Elegoo Neptune 2S", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S.json" + }, + { + "name": "Elegoo Neptune 3", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 3.json" + }, + { + "name": "Elegoo Neptune 3 Max", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max.json" + }, + { + "name": "Elegoo Neptune 3 Plus", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus.json" + }, + { + "name": "Elegoo Neptune 3 Pro", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro.json" + }, + { + "name": "Elegoo Neptune 4", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4.json" + }, + { + "name": "Elegoo Neptune 4 Max", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max.json" + }, + { + "name": "Elegoo Neptune 4 Plus", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus.json" + }, + { + "name": "Elegoo Neptune 4 Pro", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro.json" + }, + { + "name": "Elegoo Neptune X", + "sub_path": "machine/EN2SERIES/Elegoo Neptune X.json" + }, + { + "name": "Elegoo OrangeStorm Giga", + "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "fdm_process_elegoo_common", + "sub_path": "process/fdm_process_elegoo_common.json" + }, + { + "name": "fdm_process_elegoo_02010", + "sub_path": "process/fdm_process_elegoo_02010.json" + }, + { + "name": "fdm_process_elegoo_04020", + "sub_path": "process/fdm_process_elegoo_04020.json" + }, + { + "name": "fdm_process_elegoo_06030", + "sub_path": "process/fdm_process_elegoo_06030.json" + }, + { + "name": "fdm_process_elegoo_08040", + "sub_path": "process/fdm_process_elegoo_08040.json" + }, + { + "name": "fdm_process_elegoo_10050", + "sub_path": "process/fdm_process_elegoo_10050.json" + }, + { + "name": "0.10mm Standard @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo C2 0.2 nozzle", + "sub_path": "process/EC2/0.10mm Standard @Elegoo C2 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo CC2 0.2 nozzle", + "sub_path": "process/ECC2/0.10mm Standard @Elegoo CC2 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N3Max 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Max 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N3Plus 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Plus 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N3Pro 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.10mm Standard @Elegoo N3Pro 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N4 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N4Max 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Max 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N4Plus 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Plus 0.2 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo N4Pro 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.10mm Standard @Elegoo N4Pro 0.2 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.20mm Standard @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.20mm Standard @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo Giga 0.4 nozzle", + "sub_path": "process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Standard @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Standard @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.20mm Standard @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.30mm Standard @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.30mm Standard @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N3Max 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Max 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N3Plus 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Plus 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N3Pro 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Standard @Elegoo N3Pro 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N4 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N4Max 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Max 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N4Plus 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Plus 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo N4Pro 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Standard @Elegoo N4Pro 0.6 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo Neptune 0.6 nozzle", + "sub_path": "process/EN2SERIES/0.30mm Standard @Elegoo Neptune 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo C2 0.8 nozzle", + "sub_path": "process/EC2/0.40mm Standard @Elegoo C2 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo CC2 0.8 nozzle", + "sub_path": "process/ECC2/0.40mm Standard @Elegoo CC2 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo Giga 0.8 nozzle", + "sub_path": "process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N3Max 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Max 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N3Plus 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Plus 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N3Pro 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Standard @Elegoo N3Pro 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N4 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N4Max 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Max 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N4Plus 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Plus 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo N4Pro 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Standard @Elegoo N4Pro 0.8 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo Neptune 0.8 nozzle", + "sub_path": "process/EN2SERIES/0.40mm Standard @Elegoo Neptune 0.8 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo Giga 1.0 nozzle", + "sub_path": "process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N3Max 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Max 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N3Plus 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Plus 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N3Pro 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.50mm Standard @Elegoo N3Pro 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N4 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N4Max 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Max 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N4Plus 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Plus 1.0 nozzle.json" + }, + { + "name": "0.50mm Standard @Elegoo N4Pro 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.50mm Standard @Elegoo N4Pro 1.0 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo C2 0.2 nozzle", + "sub_path": "process/EC2/0.08mm Optimal @Elegoo C2 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo C2 0.2 nozzle", + "sub_path": "process/EC2/0.12mm Draft @Elegoo C2 0.2 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo C2 0.2 nozzle", + "sub_path": "process/EC2/0.14mm Extra Draft @Elegoo C2 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo CC2 0.2 nozzle", + "sub_path": "process/ECC2/0.08mm Optimal @Elegoo CC2 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo CC2 0.2 nozzle", + "sub_path": "process/ECC2/0.12mm Draft @Elegoo CC2 0.2 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo CC2 0.2 nozzle", + "sub_path": "process/ECC2/0.14mm Extra Draft @Elegoo CC2 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N3Max 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Max 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N3Max 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Max 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N3Plus 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Plus 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N3Plus 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Plus 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N3Pro 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.08mm Optimal @Elegoo N3Pro 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N3Pro 0.2 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Draft @Elegoo N3Pro 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N4 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N4 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N4Max 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Max 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N4Max 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Max 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N4Plus 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Plus 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N4Plus 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Plus 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo N4Pro 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.08mm Optimal @Elegoo N4Pro 0.2 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo N4Pro 0.2 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Draft @Elegoo N4Pro 0.2 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.12mm Fine @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.16mm Optimal @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.20mm Strength @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.24mm Draft @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo C2 0.4 nozzle", + "sub_path": "process/EC2/0.28mm Extra Draft @Elegoo C2 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.12mm Fine @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.16mm Optimal @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.20mm Strength @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.24mm Draft @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo CC2 0.4 nozzle", + "sub_path": "process/ECC2/0.28mm Extra Draft @Elegoo CC2 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo Giga 0.4 nozzle", + "sub_path": "process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo Giga 0.4 nozzle", + "sub_path": "process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo Giga 0.4 nozzle", + "sub_path": "process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo Giga 0.4 nozzle", + "sub_path": "process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N3Max 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Max 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N3Plus 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Plus 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.12mm Fine @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.16mm Optimal @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.20mm Strength @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Draft @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N3Pro 0.4 nozzle", + "sub_path": "process/EN3SERIES/0.28mm Extra Draft @Elegoo N3Pro 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N4 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N4Max 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Max 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N4Plus 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Plus 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.12mm Fine @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.16mm Optimal @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.20mm Strength @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Draft @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo N4Pro 0.4 nozzle", + "sub_path": "process/EN4SERIES/0.28mm Extra Draft @Elegoo N4Pro 0.4 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.12mm Fine @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.16mm Optimal @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.20mm Strength @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.24mm Draft @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo Neptune 0.4 nozzle", + "sub_path": "process/EN2SERIES/0.28mm Extra Draft @Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.18mm Fine @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.24mm Optimal @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.30mm Strength @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.36mm Draft @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo C2 0.6 nozzle", + "sub_path": "process/EC2/0.42mm Extra Draft @Elegoo C2 0.6 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.18mm Fine @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.24mm Optimal @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.30mm Strength @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.36mm Draft @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo CC2 0.6 nozzle", + "sub_path": "process/ECC2/0.42mm Extra Draft @Elegoo CC2 0.6 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo Giga 0.6 nozzle", + "sub_path": "process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N3Max 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Max 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N3Max 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Max 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N3Max 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Max 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N3Plus 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Plus 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N3Plus 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Plus 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N3Plus 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Plus 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N3Pro 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Optimal @Elegoo N3Pro 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N3Pro 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.36mm Draft @Elegoo N3Pro 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N3Pro 0.6 nozzle", + "sub_path": "process/EN3SERIES/0.42mm Extra Draft @Elegoo N3Pro 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N4 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N4 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N4 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N4Max 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Max 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N4Max 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Max 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N4Max 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Max 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N4Plus 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Plus 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N4Plus 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Plus 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N4Plus 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Plus 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo N4Pro 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Optimal @Elegoo N4Pro 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo N4Pro 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.36mm Draft @Elegoo N4Pro 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo N4Pro 0.6 nozzle", + "sub_path": "process/EN4SERIES/0.42mm Extra Draft @Elegoo N4Pro 0.6 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo Neptune 0.6 nozzle", + "sub_path": "process/EN2SERIES/0.24mm Optimal @Elegoo Neptune 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo Neptune 0.6 nozzle", + "sub_path": "process/EN2SERIES/0.36mm Draft @Elegoo Neptune 0.6 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo Neptune 0.6 nozzle", + "sub_path": "process/EN2SERIES/0.42mm Extra Draft @Elegoo Neptune 0.6 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo C2 0.8 nozzle", + "sub_path": "process/EC2/0.16mm Extra Fine @Elegoo C2 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo C2 0.8 nozzle", + "sub_path": "process/EC2/0.24mm Fine @Elegoo C2 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo C2 0.8 nozzle", + "sub_path": "process/EC2/0.32mm Optimal @Elegoo C2 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo C2 0.8 nozzle", + "sub_path": "process/EC2/0.48mm Draft @Elegoo C2 0.8 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo CC2 0.8 nozzle", + "sub_path": "process/ECC2/0.16mm Extra Fine @Elegoo CC2 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo CC2 0.8 nozzle", + "sub_path": "process/ECC2/0.24mm Fine @Elegoo CC2 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo CC2 0.8 nozzle", + "sub_path": "process/ECC2/0.32mm Optimal @Elegoo CC2 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo CC2 0.8 nozzle", + "sub_path": "process/ECC2/0.48mm Draft @Elegoo CC2 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo Giga 0.8 nozzle", + "sub_path": "process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo Giga 0.8 nozzle", + "sub_path": "process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle", + "sub_path": "process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json" + }, + { + "name": "0.56mm Extra Draft @Elegoo Giga 0.8 nozzle", + "sub_path": "process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N3Max 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Max 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N3Max 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Max 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N3Max 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Max 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N3Plus 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Plus 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N3Plus 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Plus 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N3Plus 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Plus 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N3Pro 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.24mm Fine @Elegoo N3Pro 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N3Pro 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.32mm Optimal @Elegoo N3Pro 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N3Pro 0.8 nozzle", + "sub_path": "process/EN3SERIES/0.48mm Draft @Elegoo N3Pro 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N4 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N4 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N4 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N4Max 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Max 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N4Max 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Max 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N4Max 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Max 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N4Plus 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Plus 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N4Plus 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Plus 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N4Plus 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Plus 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo N4Pro 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.24mm Fine @Elegoo N4Pro 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo N4Pro 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.32mm Optimal @Elegoo N4Pro 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo N4Pro 0.8 nozzle", + "sub_path": "process/EN4SERIES/0.48mm Draft @Elegoo N4Pro 0.8 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo Neptune 0.8 nozzle", + "sub_path": "process/EN2SERIES/0.24mm Fine @Elegoo Neptune 0.8 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo Neptune 0.8 nozzle", + "sub_path": "process/EN2SERIES/0.32mm Optimal @Elegoo Neptune 0.8 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo Giga 1.0 nozzle", + "sub_path": "process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo Giga 1.0 nozzle", + "sub_path": "process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo Giga 1.0 nozzle", + "sub_path": "process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N3Max 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Max 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N3Max 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Max 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N3Max 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Max 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N3Plus 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Plus 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N3Plus 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Plus 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N3Plus 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Plus 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N3Pro 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.30mm Fine @Elegoo N3Pro 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N3Pro 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.40mm Optimal @Elegoo N3Pro 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N3Pro 1.0 nozzle", + "sub_path": "process/EN3SERIES/0.60mm Draft @Elegoo N3Pro 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N4 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N4 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N4 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N4Max 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Max 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N4Max 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Max 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N4Max 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Max 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N4Plus 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Plus 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N4Plus 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Plus 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N4Plus 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Plus 1.0 nozzle.json" + }, + { + "name": "0.30mm Fine @Elegoo N4Pro 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.30mm Fine @Elegoo N4Pro 1.0 nozzle.json" + }, + { + "name": "0.40mm Optimal @Elegoo N4Pro 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.40mm Optimal @Elegoo N4Pro 1.0 nozzle.json" + }, + { + "name": "0.60mm Draft @Elegoo N4Pro 1.0 nozzle", + "sub_path": "process/EN4SERIES/0.60mm Draft @Elegoo N4Pro 1.0 nozzle.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_hips", + "sub_path": "filament/fdm_filament_hips.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_ppa", + "sub_path": "filament/fdm_filament_ppa.json" + }, + { + "name": "fdm_filament_pps", + "sub_path": "filament/fdm_filament_pps.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Elegoo ABS @base", + "sub_path": "filament/BASE/Elegoo ABS @base.json" + }, + { + "name": "Generic ABS @base", + "sub_path": "filament/BASE/Generic ABS @base.json" + }, + { + "name": "Elegoo ASA @base", + "sub_path": "filament/BASE/Elegoo ASA @base.json" + }, + { + "name": "Generic ASA @base", + "sub_path": "filament/BASE/Generic ASA @base.json" + }, + { + "name": "Elegoo PAHT-CF @base", + "sub_path": "filament/BASE/Elegoo PAHT-CF @base.json" + }, + { + "name": "Generic PA @base", + "sub_path": "filament/BASE/Generic PA @base.json" + }, + { + "name": "Elegoo PC @base", + "sub_path": "filament/BASE/Elegoo PC @base.json" + }, + { + "name": "Generic PC @base", + "sub_path": "filament/BASE/Generic PC @base.json" + }, + { + "name": "Elegoo PETG @base", + "sub_path": "filament/BASE/Elegoo PETG @base.json" + }, + { + "name": "Generic PET @base", + "sub_path": "filament/BASE/Generic PET @base.json" + }, + { + "name": "Generic PETG @base", + "sub_path": "filament/BASE/Generic PETG @base.json" + }, + { + "name": "Elegoo PLA @base", + "sub_path": "filament/BASE/Elegoo PLA @base.json" + }, + { + "name": "Generic PLA @base", + "sub_path": "filament/BASE/Generic PLA @base.json" + }, + { + "name": "Elegoo TPU 95A @base", + "sub_path": "filament/BASE/Elegoo TPU 95A @base.json" + }, + { + "name": "Elegoo ABS @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo ABS @0.2 nozzle.json" + }, + { + "name": "Elegoo ABS @EC", + "sub_path": "filament/EC/Elegoo ABS @EC.json" + }, + { + "name": "Elegoo ABS @EC2", + "sub_path": "filament/EC2/Elegoo ABS @EC2.json" + }, + { + "name": "Elegoo ABS @ECC", + "sub_path": "filament/ECC/Elegoo ABS @ECC.json" + }, + { + "name": "Elegoo ABS @ECC2", + "sub_path": "filament/ECC2/Elegoo ABS @ECC2.json" + }, + { + "name": "Generic ABS @Elegoo", + "sub_path": "filament/Generic/Generic ABS @Elegoo.json" + }, + { + "name": "Generic ABS @Elegoo Centauri", + "sub_path": "filament/Generic/Generic ABS @Elegoo Centauri.json" + }, + { + "name": "Generic ABS-CF @Elegoo Centauri", + "sub_path": "filament/Generic/Generic ABS-CF @Elegoo Centauri.json" + }, + { + "name": "Elegoo ASA @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo ASA @0.2 nozzle.json" + }, + { + "name": "Elegoo ASA @EC", + "sub_path": "filament/EC/Elegoo ASA @EC.json" + }, + { + "name": "Elegoo ASA @EC2", + "sub_path": "filament/EC2/Elegoo ASA @EC2.json" + }, + { + "name": "Elegoo ASA @ECC", + "sub_path": "filament/ECC/Elegoo ASA @ECC.json" + }, + { + "name": "Elegoo ASA @ECC2", + "sub_path": "filament/ECC2/Elegoo ASA @ECC2.json" + }, + { + "name": "Elegoo ASA @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo ASA @EN2 Series.json" + }, + { + "name": "Elegoo ASA @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo ASA @EN3 Series.json" + }, + { + "name": "Elegoo ASA @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo ASA @EN4 Series.json" + }, + { + "name": "Elegoo ASA @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo ASA @Elegoo Giga.json" + }, + { + "name": "Elegoo ASA-CF @base", + "sub_path": "filament/BASE/Elegoo ASA-CF @base.json" + }, + { + "name": "Generic ASA @Elegoo", + "sub_path": "filament/Generic/Generic ASA @Elegoo.json" + }, + { + "name": "Generic ASA-CF @Elegoo Centauri", + "sub_path": "filament/Generic/Generic ASA-CF @Elegoo Centauri.json" + }, + { + "name": "Elegoo PAHT-CF @EC", + "sub_path": "filament/EC/Elegoo PAHT-CF @EC.json" + }, + { + "name": "Elegoo PAHT-CF @EC2", + "sub_path": "filament/EC2/Elegoo PAHT-CF @EC2.json" + }, + { + "name": "Elegoo PAHT-CF @ECC", + "sub_path": "filament/ECC/Elegoo PAHT-CF @ECC.json" + }, + { + "name": "Elegoo PAHT-CF @ECC2", + "sub_path": "filament/ECC2/Elegoo PAHT-CF @ECC2.json" + }, + { + "name": "Generic PA @Elegoo", + "sub_path": "filament/Generic/Generic PA @Elegoo.json" + }, + { + "name": "Generic PA6-CF @Elegoo", + "sub_path": "filament/Generic/Generic PA6-CF @Elegoo.json" + }, + { + "name": "Elegoo PC @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC @0.2 nozzle.json" + }, + { + "name": "Elegoo PC @EC", + "sub_path": "filament/EC/Elegoo PC @EC.json" + }, + { + "name": "Elegoo PC @EC2", + "sub_path": "filament/EC2/Elegoo PC @EC2.json" + }, + { + "name": "Elegoo PC @ECC", + "sub_path": "filament/ECC/Elegoo PC @ECC.json" + }, + { + "name": "Elegoo PC @ECC2", + "sub_path": "filament/ECC2/Elegoo PC @ECC2.json" + }, + { + "name": "Elegoo PC-FR @base", + "sub_path": "filament/BASE/Elegoo PC-FR @base.json" + }, + { + "name": "Generic PC @Elegoo", + "sub_path": "filament/Generic/Generic PC @Elegoo.json" + }, + { + "name": "Generic PC-CF @Elegoo", + "sub_path": "filament/Generic/Generic PC-CF @Elegoo.json" + }, + { + "name": "Elegoo PET-CF @base", + "sub_path": "filament/BASE/Elegoo PET-CF @base.json" + }, + { + "name": "Elegoo PETG @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG @0.2 nozzle.json" + }, + { + "name": "Elegoo PETG @EC", + "sub_path": "filament/EC/Elegoo PETG @EC.json" + }, + { + "name": "Elegoo PETG @EC2", + "sub_path": "filament/EC2/Elegoo PETG @EC2.json" + }, + { + "name": "Elegoo PETG @ECC", + "sub_path": "filament/ECC/Elegoo PETG @ECC.json" + }, + { + "name": "Elegoo PETG @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG @ECC2.json" + }, + { + "name": "Elegoo PETG @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PETG @EN2 Series.json" + }, + { + "name": "Elegoo PETG @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PETG @EN3 Series.json" + }, + { + "name": "Elegoo PETG @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PETG @EN4 Series.json" + }, + { + "name": "Elegoo PETG @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PETG @Elegoo Giga.json" + }, + { + "name": "Elegoo PETG HF @base", + "sub_path": "filament/BASE/Elegoo PETG HF @base.json" + }, + { + "name": "Elegoo PETG PRO @base", + "sub_path": "filament/BASE/Elegoo PETG PRO @base.json" + }, + { + "name": "Elegoo PETG Translucent @base", + "sub_path": "filament/BASE/Elegoo PETG Translucent @base.json" + }, + { + "name": "Elegoo PETG-CF @base", + "sub_path": "filament/BASE/Elegoo PETG-CF @base.json" + }, + { + "name": "Elegoo PETG-GF @base", + "sub_path": "filament/BASE/Elegoo PETG-GF @base.json" + }, + { + "name": "Elegoo Rapid PETG @base", + "sub_path": "filament/BASE/Elegoo Rapid PETG @base.json" + }, + { + "name": "Generic PET @Elegoo Centauri", + "sub_path": "filament/Generic/Generic PET @Elegoo Centauri.json" + }, + { + "name": "Generic PET-CF @Elegoo Centauri", + "sub_path": "filament/Generic/Generic PET-CF @Elegoo Centauri.json" + }, + { + "name": "Generic PETG @Elegoo", + "sub_path": "filament/Generic/Generic PETG @Elegoo.json" + }, + { + "name": "Generic PETG PRO @Elegoo", + "sub_path": "filament/Generic/Generic PETG PRO @Elegoo.json" + }, + { + "name": "Generic PETG-CF @Elegoo Centauri", + "sub_path": "filament/Generic/Generic PETG-CF @Elegoo Centauri.json" + }, + { + "name": "Elegoo PLA @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA @EC", + "sub_path": "filament/EC/Elegoo PLA @EC.json" + }, + { + "name": "Elegoo PLA @EC2", + "sub_path": "filament/EC2/Elegoo PLA @EC2.json" + }, + { + "name": "Elegoo PLA @ECC", + "sub_path": "filament/ECC/Elegoo PLA @ECC.json" + }, + { + "name": "Elegoo PLA @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA @ECC2.json" + }, + { + "name": "Elegoo PLA @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA @EN2 Series.json" + }, + { + "name": "Elegoo PLA @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA @EN3 Series.json" + }, + { + "name": "Elegoo PLA @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA @EN4 Series.json" + }, + { + "name": "Elegoo PLA @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Basic @base", + "sub_path": "filament/BASE/Elegoo PLA Basic @base.json" + }, + { + "name": "Elegoo PLA Galaxy @base", + "sub_path": "filament/BASE/Elegoo PLA Galaxy @base.json" + }, + { + "name": "Elegoo PLA Glow @base", + "sub_path": "filament/BASE/Elegoo PLA Glow @base.json" + }, + { + "name": "Elegoo PLA Marble @base", + "sub_path": "filament/BASE/Elegoo PLA Marble @base.json" + }, + { + "name": "Elegoo PLA Matte @base", + "sub_path": "filament/BASE/Elegoo PLA Matte @base.json" + }, + { + "name": "Elegoo PLA PRO @base", + "sub_path": "filament/BASE/Elegoo PLA PRO @base.json" + }, + { + "name": "Elegoo PLA Silk @base", + "sub_path": "filament/BASE/Elegoo PLA Silk @base.json" + }, + { + "name": "Elegoo PLA Sparkle @base", + "sub_path": "filament/BASE/Elegoo PLA Sparkle @base.json" + }, + { + "name": "Elegoo PLA Translucent2 @base", + "sub_path": "filament/BASE/Elegoo PLA Translucent2 @base.json" + }, + { + "name": "Elegoo PLA Wood @base", + "sub_path": "filament/BASE/Elegoo PLA Wood @base.json" + }, + { + "name": "Elegoo PLA+ @base", + "sub_path": "filament/BASE/Elegoo PLA+ @base.json" + }, + { + "name": "Elegoo PLA-CF @base", + "sub_path": "filament/BASE/Elegoo PLA-CF @base.json" + }, + { + "name": "Elegoo Rapid PLA+ @base", + "sub_path": "filament/BASE/Elegoo Rapid PLA+ @base.json" + }, + { + "name": "Generic PLA @Elegoo", + "sub_path": "filament/Generic/Generic PLA @Elegoo.json" + }, + { + "name": "Generic PLA @Elegoo Centauri", + "sub_path": "filament/Generic/Generic PLA @Elegoo Centauri.json" + }, + { + "name": "Generic PLA Matte @Elegoo", + "sub_path": "filament/Generic/Generic PLA Matte @Elegoo.json" + }, + { + "name": "Elegoo Rapid TPU 95A @base", + "sub_path": "filament/BASE/Elegoo Rapid TPU 95A @base.json" + }, + { + "name": "Elegoo TPU 95A @EC", + "sub_path": "filament/EC/Elegoo TPU 95A @EC.json" + }, + { + "name": "Elegoo TPU 95A @EC2", + "sub_path": "filament/EC2/Elegoo TPU 95A @EC2.json" + }, + { + "name": "Elegoo TPU 95A @ECC", + "sub_path": "filament/ECC/Elegoo TPU 95A @ECC.json" + }, + { + "name": "Elegoo TPU 95A @ECC2", + "sub_path": "filament/ECC2/Elegoo TPU 95A @ECC2.json" + }, + { + "name": "Elegoo TPU 95A @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo TPU 95A @EN3 Series.json" + }, + { + "name": "Elegoo TPU 95A @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo TPU 95A @EN4 Series.json" + }, + { + "name": "Elegoo ASA-CF @EC2", + "sub_path": "filament/EC2/Elegoo ASA-CF @EC2.json" + }, + { + "name": "Elegoo ASA-CF @ECC2", + "sub_path": "filament/ECC2/Elegoo ASA-CF @ECC2.json" + }, + { + "name": "Elegoo PC-FR @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PC-FR @0.2 nozzle.json" + }, + { + "name": "Elegoo PC-FR @EC", + "sub_path": "filament/EC/Elegoo PC-FR @EC.json" + }, + { + "name": "Elegoo PC-FR @EC2", + "sub_path": "filament/EC2/Elegoo PC-FR @EC2.json" + }, + { + "name": "Elegoo PC-FR @ECC", + "sub_path": "filament/ECC/Elegoo PC-FR @ECC.json" + }, + { + "name": "Elegoo PC-FR @ECC2", + "sub_path": "filament/ECC2/Elegoo PC-FR @ECC2.json" + }, + { + "name": "Elegoo PET-CF @EC2", + "sub_path": "filament/EC2/Elegoo PET-CF @EC2.json" + }, + { + "name": "Elegoo PET-CF @ECC2", + "sub_path": "filament/ECC2/Elegoo PET-CF @ECC2.json" + }, + { + "name": "Elegoo PETG HF @EC2", + "sub_path": "filament/EC2/Elegoo PETG HF @EC2.json" + }, + { + "name": "Elegoo PETG HF @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG HF @ECC2.json" + }, + { + "name": "Elegoo PETG PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PETG PRO @EC", + "sub_path": "filament/EC/Elegoo PETG PRO @EC.json" + }, + { + "name": "Elegoo PETG PRO @EC2", + "sub_path": "filament/EC2/Elegoo PETG PRO @EC2.json" + }, + { + "name": "Elegoo PETG PRO @ECC", + "sub_path": "filament/ECC/Elegoo PETG PRO @ECC.json" + }, + { + "name": "Elegoo PETG PRO @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG PRO @ECC2.json" + }, + { + "name": "Elegoo PETG PRO @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PETG PRO @EN2 Series.json" + }, + { + "name": "Elegoo PETG PRO @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PETG PRO @EN3 Series.json" + }, + { + "name": "Elegoo PETG PRO @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PETG PRO @EN4 Series.json" + }, + { + "name": "Elegoo PETG PRO @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PETG PRO @Elegoo Giga.json" + }, + { + "name": "Elegoo PETG Translucent @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PETG Translucent @0.2 nozzle.json" + }, + { + "name": "Elegoo PETG Translucent @EC", + "sub_path": "filament/EC/Elegoo PETG Translucent @EC.json" + }, + { + "name": "Elegoo PETG Translucent @EC2", + "sub_path": "filament/EC2/Elegoo PETG Translucent @EC2.json" + }, + { + "name": "Elegoo PETG Translucent @ECC", + "sub_path": "filament/ECC/Elegoo PETG Translucent @ECC.json" + }, + { + "name": "Elegoo PETG Translucent @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG Translucent @ECC2.json" + }, + { + "name": "Elegoo PETG Translucent @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PETG Translucent @EN2 Series.json" + }, + { + "name": "Elegoo PETG Translucent @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PETG Translucent @EN3 Series.json" + }, + { + "name": "Elegoo PETG Translucent @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PETG Translucent @EN4 Series.json" + }, + { + "name": "Elegoo PETG Translucent @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PETG Translucent @Elegoo Giga.json" + }, + { + "name": "Elegoo PETG-CF @EC", + "sub_path": "filament/EC/Elegoo PETG-CF @EC.json" + }, + { + "name": "Elegoo PETG-CF @EC2", + "sub_path": "filament/EC2/Elegoo PETG-CF @EC2.json" + }, + { + "name": "Elegoo PETG-CF @ECC", + "sub_path": "filament/ECC/Elegoo PETG-CF @ECC.json" + }, + { + "name": "Elegoo PETG-CF @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG-CF @ECC2.json" + }, + { + "name": "Elegoo PETG-CF @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PETG-CF @EN2 Series.json" + }, + { + "name": "Elegoo PETG-CF @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PETG-CF @EN3 Series.json" + }, + { + "name": "Elegoo PETG-CF @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PETG-CF @EN4 Series.json" + }, + { + "name": "Elegoo PETG-CF @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PETG-CF @Elegoo Giga.json" + }, + { + "name": "Elegoo PETG-GF @EC", + "sub_path": "filament/EC/Elegoo PETG-GF @EC.json" + }, + { + "name": "Elegoo PETG-GF @EC2", + "sub_path": "filament/EC2/Elegoo PETG-GF @EC2.json" + }, + { + "name": "Elegoo PETG-GF @ECC", + "sub_path": "filament/ECC/Elegoo PETG-GF @ECC.json" + }, + { + "name": "Elegoo PETG-GF @ECC2", + "sub_path": "filament/ECC2/Elegoo PETG-GF @ECC2.json" + }, + { + "name": "Elegoo PETG-GF @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PETG-GF @EN2 Series.json" + }, + { + "name": "Elegoo PETG-GF @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PETG-GF @EN3 Series.json" + }, + { + "name": "Elegoo PETG-GF @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PETG-GF @EN4 Series.json" + }, + { + "name": "Elegoo PETG-GF @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PETG-GF @Elegoo Giga.json" + }, + { + "name": "Elegoo Rapid PETG @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PETG @0.2 nozzle.json" + }, + { + "name": "Elegoo Rapid PETG @EC", + "sub_path": "filament/EC/Elegoo Rapid PETG @EC.json" + }, + { + "name": "Elegoo Rapid PETG @EC2", + "sub_path": "filament/EC2/Elegoo Rapid PETG @EC2.json" + }, + { + "name": "Elegoo Rapid PETG @ECC", + "sub_path": "filament/ECC/Elegoo Rapid PETG @ECC.json" + }, + { + "name": "Elegoo Rapid PETG @ECC2", + "sub_path": "filament/ECC2/Elegoo Rapid PETG @ECC2.json" + }, + { + "name": "Elegoo Rapid PETG @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo Rapid PETG @EN2 Series.json" + }, + { + "name": "Elegoo Rapid PETG @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo Rapid PETG @EN3 Series.json" + }, + { + "name": "Elegoo Rapid PETG @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo Rapid PETG @EN4 Series.json" + }, + { + "name": "Elegoo Rapid PETG @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo Rapid PETG @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Basic @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Basic @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Basic @EC", + "sub_path": "filament/EC/Elegoo PLA Basic @EC.json" + }, + { + "name": "Elegoo PLA Basic @EC2", + "sub_path": "filament/EC2/Elegoo PLA Basic @EC2.json" + }, + { + "name": "Elegoo PLA Basic @ECC", + "sub_path": "filament/ECC/Elegoo PLA Basic @ECC.json" + }, + { + "name": "Elegoo PLA Basic @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Basic @ECC2.json" + }, + { + "name": "Elegoo PLA Basic @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Basic @EN2 Series.json" + }, + { + "name": "Elegoo PLA Basic @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Basic @EN3 Series.json" + }, + { + "name": "Elegoo PLA Basic @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Basic @EN4 Series.json" + }, + { + "name": "Elegoo PLA Basic @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Basic @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Galaxy @EC", + "sub_path": "filament/EC/Elegoo PLA Galaxy @EC.json" + }, + { + "name": "Elegoo PLA Galaxy @EC2", + "sub_path": "filament/EC2/Elegoo PLA Galaxy @EC2.json" + }, + { + "name": "Elegoo PLA Galaxy @ECC", + "sub_path": "filament/ECC/Elegoo PLA Galaxy @ECC.json" + }, + { + "name": "Elegoo PLA Galaxy @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Galaxy @ECC2.json" + }, + { + "name": "Elegoo PLA Galaxy @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Galaxy @EN2 Series.json" + }, + { + "name": "Elegoo PLA Galaxy @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Galaxy @EN3 Series.json" + }, + { + "name": "Elegoo PLA Galaxy @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Galaxy @EN4 Series.json" + }, + { + "name": "Elegoo PLA Galaxy @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Galaxy @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Glow @EC2", + "sub_path": "filament/EC2/Elegoo PLA Glow @EC2.json" + }, + { + "name": "Elegoo PLA Glow @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Glow @ECC2.json" + }, + { + "name": "Elegoo PLA Marble @EC", + "sub_path": "filament/EC/Elegoo PLA Marble @EC.json" + }, + { + "name": "Elegoo PLA Marble @EC2", + "sub_path": "filament/EC2/Elegoo PLA Marble @EC2.json" + }, + { + "name": "Elegoo PLA Marble @ECC", + "sub_path": "filament/ECC/Elegoo PLA Marble @ECC.json" + }, + { + "name": "Elegoo PLA Marble @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Marble @ECC2.json" + }, + { + "name": "Elegoo PLA Marble @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Marble @EN2 Series.json" + }, + { + "name": "Elegoo PLA Marble @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Marble @EN3 Series.json" + }, + { + "name": "Elegoo PLA Marble @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Marble @EN4 Series.json" + }, + { + "name": "Elegoo PLA Marble @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Marble @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Matte @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Matte @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Matte @EC", + "sub_path": "filament/EC/Elegoo PLA Matte @EC.json" + }, + { + "name": "Elegoo PLA Matte @EC2", + "sub_path": "filament/EC2/Elegoo PLA Matte @EC2.json" + }, + { + "name": "Elegoo PLA Matte @ECC", + "sub_path": "filament/ECC/Elegoo PLA Matte @ECC.json" + }, + { + "name": "Elegoo PLA Matte @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Matte @ECC2.json" + }, + { + "name": "Elegoo PLA Matte @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Matte @EN2 Series.json" + }, + { + "name": "Elegoo PLA Matte @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Matte @EN3 Series.json" + }, + { + "name": "Elegoo PLA Matte @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Matte @EN4 Series.json" + }, + { + "name": "Elegoo PLA Matte @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Matte @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA PRO @EC", + "sub_path": "filament/EC/Elegoo PLA PRO @EC.json" + }, + { + "name": "Elegoo PLA PRO @EC2", + "sub_path": "filament/EC2/Elegoo PLA PRO @EC2.json" + }, + { + "name": "Elegoo PLA PRO @ECC", + "sub_path": "filament/ECC/Elegoo PLA PRO @ECC.json" + }, + { + "name": "Elegoo PLA PRO @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA PRO @ECC2.json" + }, + { + "name": "Elegoo PLA PRO @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA PRO @EN2 Series.json" + }, + { + "name": "Elegoo PLA PRO @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA PRO @EN3 Series.json" + }, + { + "name": "Elegoo PLA PRO @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA PRO @EN4 Series.json" + }, + { + "name": "Elegoo PLA Silk @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA Silk @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Silk @EC", + "sub_path": "filament/EC/Elegoo PLA Silk @EC.json" + }, + { + "name": "Elegoo PLA Silk @EC2", + "sub_path": "filament/EC2/Elegoo PLA Silk @EC2.json" + }, + { + "name": "Elegoo PLA Silk @ECC", + "sub_path": "filament/ECC/Elegoo PLA Silk @ECC.json" + }, + { + "name": "Elegoo PLA Silk @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Silk @ECC2.json" + }, + { + "name": "Elegoo PLA Silk @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Silk @EN2 Series.json" + }, + { + "name": "Elegoo PLA Silk @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Silk @EN3 Series.json" + }, + { + "name": "Elegoo PLA Silk @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Silk @EN4 Series.json" + }, + { + "name": "Elegoo PLA Sparkle @EC", + "sub_path": "filament/EC/Elegoo PLA Sparkle @EC.json" + }, + { + "name": "Elegoo PLA Sparkle @EC2", + "sub_path": "filament/EC2/Elegoo PLA Sparkle @EC2.json" + }, + { + "name": "Elegoo PLA Sparkle @ECC", + "sub_path": "filament/ECC/Elegoo PLA Sparkle @ECC.json" + }, + { + "name": "Elegoo PLA Sparkle @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Sparkle @ECC2.json" + }, + { + "name": "Elegoo PLA Sparkle @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Sparkle @EN2 Series.json" + }, + { + "name": "Elegoo PLA Sparkle @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Sparkle @EN3 Series.json" + }, + { + "name": "Elegoo PLA Sparkle @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Sparkle @EN4 Series.json" + }, + { + "name": "Elegoo PLA Sparkle @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Sparkle @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA Translucent2 @EC2", + "sub_path": "filament/EC2/Elegoo PLA Translucent2 @EC2.json" + }, + { + "name": "Elegoo PLA Translucent2 @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Translucent2 @ECC2.json" + }, + { + "name": "Elegoo PLA Wood @EC", + "sub_path": "filament/EC/Elegoo PLA Wood @EC.json" + }, + { + "name": "Elegoo PLA Wood @EC2", + "sub_path": "filament/EC2/Elegoo PLA Wood @EC2.json" + }, + { + "name": "Elegoo PLA Wood @ECC", + "sub_path": "filament/ECC/Elegoo PLA Wood @ECC.json" + }, + { + "name": "Elegoo PLA Wood @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA Wood @ECC2.json" + }, + { + "name": "Elegoo PLA Wood @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA Wood @EN2 Series.json" + }, + { + "name": "Elegoo PLA Wood @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA Wood @EN3 Series.json" + }, + { + "name": "Elegoo PLA Wood @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA Wood @EN4 Series.json" + }, + { + "name": "Elegoo PLA Wood @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo PLA Wood @Elegoo Giga.json" + }, + { + "name": "Elegoo PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA+ @EC", + "sub_path": "filament/EC/Elegoo PLA+ @EC.json" + }, + { + "name": "Elegoo PLA+ @EC2", + "sub_path": "filament/EC2/Elegoo PLA+ @EC2.json" + }, + { + "name": "Elegoo PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo PLA+ @ECC.json" + }, + { + "name": "Elegoo PLA+ @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA+ @ECC2.json" + }, + { + "name": "Elegoo PLA+ @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA+ @EN2 Series.json" + }, + { + "name": "Elegoo PLA+ @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA+ @EN3 Series.json" + }, + { + "name": "Elegoo PLA+ @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA+ @EN4 Series.json" + }, + { + "name": "Elegoo PLA-CF @EC2", + "sub_path": "filament/EC2/Elegoo PLA-CF @EC2.json" + }, + { + "name": "Elegoo PLA-CF @ECC", + "sub_path": "filament/ECC/Elegoo PLA-CF @ECC.json" + }, + { + "name": "Elegoo PLA-CF @ECC2", + "sub_path": "filament/ECC2/Elegoo PLA-CF @ECC2.json" + }, + { + "name": "Elegoo PLA-CF @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo PLA-CF @EN2 Series.json" + }, + { + "name": "Elegoo PLA-CF @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo PLA-CF @EN3 Series.json" + }, + { + "name": "Elegoo PLA-CF @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo PLA-CF @EN4 Series.json" + }, + { + "name": "Elegoo Rapid PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO_02_NOZZLE/Elegoo Rapid PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo Rapid PLA+ @EC", + "sub_path": "filament/EC/Elegoo Rapid PLA+ @EC.json" + }, + { + "name": "Elegoo Rapid PLA+ @EC2", + "sub_path": "filament/EC2/Elegoo Rapid PLA+ @EC2.json" + }, + { + "name": "Elegoo Rapid PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo Rapid PLA+ @ECC.json" + }, + { + "name": "Elegoo Rapid PLA+ @ECC2", + "sub_path": "filament/ECC2/Elegoo Rapid PLA+ @ECC2.json" + }, + { + "name": "Elegoo Rapid PLA+ @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo Rapid PLA+ @EN2 Series.json" + }, + { + "name": "Elegoo Rapid PLA+ @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo Rapid PLA+ @EN3 Series.json" + }, + { + "name": "Elegoo Rapid PLA+ @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo Rapid PLA+ @EN4 Series.json" + }, + { + "name": "Elegoo Rapid PLA+ @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo Rapid PLA+ @Elegoo Giga.json" + }, + { + "name": "Elegoo Rapid TPU 95A @EC", + "sub_path": "filament/EC/Elegoo Rapid TPU 95A @EC.json" + }, + { + "name": "Elegoo Rapid TPU 95A @EC2", + "sub_path": "filament/EC2/Elegoo Rapid TPU 95A @EC2.json" + }, + { + "name": "Elegoo Rapid TPU 95A @ECC", + "sub_path": "filament/ECC/Elegoo Rapid TPU 95A @ECC.json" + }, + { + "name": "Elegoo Rapid TPU 95A @ECC2", + "sub_path": "filament/ECC2/Elegoo Rapid TPU 95A @ECC2.json" + }, + { + "name": "Elegoo Rapid TPU 95A @EN2 Series", + "sub_path": "filament/EN2SERIES/Elegoo Rapid TPU 95A @EN2 Series.json" + }, + { + "name": "Elegoo Rapid TPU 95A @EN3 Series", + "sub_path": "filament/EN3SERIES/Elegoo Rapid TPU 95A @EN3 Series.json" + }, + { + "name": "Elegoo Rapid TPU 95A @EN4 Series", + "sub_path": "filament/EN4SERIES/Elegoo Rapid TPU 95A @EN4 Series.json" + }, + { + "name": "Elegoo Rapid TPU 95A @Elegoo Giga", + "sub_path": "filament/EOSGIGA/Elegoo Rapid TPU 95A @Elegoo Giga.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_elegoo_3dp_001_common", + "sub_path": "machine/fdm_elegoo_3dp_001_common.json" + }, + { + "name": "fdm_elegoo_common", + "sub_path": "machine/fdm_elegoo_common.json" + }, + { + "name": "Elegoo Centauri 0.4 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri 2 0.4 nozzle", + "sub_path": "machine/EC2/Elegoo Centauri 2 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.4 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 2 0.4 nozzle", + "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 0.4 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.4 nozzle.json" + }, + { + "name": "Elegoo OrangeStorm Giga 0.4 nozzle", + "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 2 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 2S 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Pro 0.4 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune X 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.2 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.6 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.8 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.8 nozzle.json" + }, + { + "name": "Elegoo Centauri 2 0.2 nozzle", + "sub_path": "machine/EC2/Elegoo Centauri 2 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri 2 0.6 nozzle", + "sub_path": "machine/EC2/Elegoo Centauri 2 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri 2 0.8 nozzle", + "sub_path": "machine/EC2/Elegoo Centauri 2 0.8 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.2 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.6 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.8 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 2 0.2 nozzle", + "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 2 0.6 nozzle", + "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 2 0.8 nozzle", + "sub_path": "machine/ECC2/Elegoo Centauri Carbon 2 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 0.2 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 0.6 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 0.8 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 1.0 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Max 0.4 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Plus 0.4 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Pro 0.4 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.4 nozzle.json" + }, + { + "name": "Elegoo OrangeStorm Giga 0.6 nozzle", + "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.6 nozzle.json" + }, + { + "name": "Elegoo OrangeStorm Giga 0.8 nozzle", + "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 0.8 nozzle.json" + }, + { + "name": "Elegoo OrangeStorm Giga 1.0 nozzle", + "sub_path": "machine/EOSGIGA/Elegoo OrangeStorm Giga 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 2 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 2 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 2D 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 0.4 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 2S 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 2S 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2S 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Max 0.4 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Plus 0.4 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.4 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Pro 0.2 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Pro 0.6 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Pro 0.8 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Pro 1.0 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Pro 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune X 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune X 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune X 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Max 0.2 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Max 0.6 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Max 0.8 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Max 1.0 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Max 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Plus 0.2 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Plus 0.6 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Plus 0.8 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Plus 1.0 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Plus 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Pro 0.2 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Pro 0.6 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Pro 0.8 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 4 Pro 1.0 nozzle", + "sub_path": "machine/EN4SERIES/Elegoo Neptune 4 Pro 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 2D 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 2D 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 2D 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 0.6 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 0.8 nozzle", + "sub_path": "machine/EN2SERIES/Elegoo Neptune 3 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Max 0.2 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Max 0.6 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Max 0.8 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Max 1.0 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Max 1.0 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Plus 0.2 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.2 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Plus 0.6 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.6 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Plus 0.8 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 0.8 nozzle.json" + }, + { + "name": "Elegoo Neptune 3 Plus 1.0 nozzle", + "sub_path": "machine/EN3SERIES/Elegoo Neptune 3 Plus 1.0 nozzle.json" + } + ] +} diff --git a/resources/profiles/Elegoo/filament/fdm_filament_paht.json b/resources/profiles/Elegoo/filament/fdm_filament_paht.json deleted file mode 100644 index 058469ff71..0000000000 --- a/resources/profiles/Elegoo/filament/fdm_filament_paht.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_paht", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PAHT" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "0" - ], - "cool_plate_temp": [ - "35" - ], - "eng_plate_temp": [ - "0" - ], - "textured_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "45" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "slow_down_min_speed": [ - "20" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament start gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_vendor": [ - "Generic" - ] -} diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json index e6a04bb40a..9577a8e2db 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json @@ -1,15 +1,14 @@ { "type": "process", "name": "0.30mm Standard @Elegoo Giga 0.6 nozzle", + "renamed_from": "0.30mm Standard @EOS Giga 0.6 nozzle", "inherits": "fdm_process_elegoo_06030", "from": "system", "setting_id": "mMP6cZhv9TYjYlEh", "instantiation": "true", - "renamed_from": "0.30mm Standard @EOS Giga 0.6 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", - "is_custom_defined": "0", "make_overhang_printable_angle": "90", "outer_wall_acceleration": "2000", "resolution": "0.05", diff --git a/resources/profiles/Elegoo/process/fdm_process_elegoo_02010.json b/resources/profiles/Elegoo/process/fdm_process_elegoo_02010.json index 30fa79753b..615c0eeccd 100644 --- a/resources/profiles/Elegoo/process/fdm_process_elegoo_02010.json +++ b/resources/profiles/Elegoo/process/fdm_process_elegoo_02010.json @@ -24,7 +24,6 @@ "sparse_infill_speed": "100", "inner_wall_speed": "100", "internal_solid_infill_speed": "100", - "is_custom_defined": "0", "outer_wall_speed": "60", "top_surface_speed": "80" } diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 1e0c76d458..384b31f464 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -244,26 +244,10 @@ "name": "Generic PLA @FLSun S1", "sub_path": "filament/Generic PLA @FLSun S1.json" }, - { - "name": "Generic PLA High Speed @FLSun S1", - "sub_path": "filament/Generic PLA High Speed @FLSun S1.json" - }, - { - "name": "Generic PLA Silk @FLSun S1", - "sub_path": "filament/Generic PLA Silk @FLSun S1.json" - }, { "name": "Generic PLA @FLSun T1", "sub_path": "filament/Generic PLA @FLSun T1.json" }, - { - "name": "Generic PLA High Speed @FLSun T1", - "sub_path": "filament/Generic PLA High Speed @FLSun T1.json" - }, - { - "name": "Generic PLA Silk @FLSun T1", - "sub_path": "filament/Generic PLA Silk @FLSun T1.json" - }, { "name": "Generic TPU @FLSun S1", "sub_path": "filament/Generic TPU @FLSun S1.json" @@ -271,6 +255,22 @@ { "name": "Generic TPU @FLSun T1", "sub_path": "filament/Generic TPU @FLSun T1.json" + }, + { + "name": "Generic PLA High Speed @FLSun S1", + "sub_path": "filament/Generic PLA High Speed @FLSun S1.json" + }, + { + "name": "Generic PLA High Speed @FLSun T1", + "sub_path": "filament/Generic PLA High Speed @FLSun T1.json" + }, + { + "name": "Generic PLA Silk @FLSun S1", + "sub_path": "filament/Generic PLA Silk @FLSun S1.json" + }, + { + "name": "Generic PLA Silk @FLSun T1", + "sub_path": "filament/Generic PLA Silk @FLSun T1.json" } ], "machine_list": [ diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index f348a4f329..1f252e507b 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -439,22 +439,6 @@ "name": "0.14mm Standard @FF AD5X 0.25 nozzle", "sub_path": "process/0.14mm Standard @FF AD5X 0.25 nozzle.json" }, - { - "name": "0.08mm Standard @FF C5 0.25 nozzle", - "sub_path": "process/0.08mm Standard @FF C5 0.25 nozzle.json" - }, - { - "name": "0.10mm Standard @FF C5 0.25 nozzle", - "sub_path": "process/0.10mm Standard @FF C5 0.25 nozzle.json" - }, - { - "name": "0.12mm Standard @FF C5 0.25 nozzle", - "sub_path": "process/0.12mm Standard @FF C5 0.25 nozzle.json" - }, - { - "name": "0.14mm Standard @FF C5 0.25 nozzle", - "sub_path": "process/0.14mm Standard @FF C5 0.25 nozzle.json" - }, { "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" @@ -527,6 +511,22 @@ "name": "0.42mm Draft @FF AD5X 0.6 nozzle", "sub_path": "process/0.42mm Draft @FF AD5X 0.6 nozzle.json" }, + { + "name": "0.08mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.08mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.10mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.10mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.12mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.12mm Standard @FF C5 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @FF C5 0.25 nozzle", + "sub_path": "process/0.14mm Standard @FF C5 0.25 nozzle.json" + }, { "name": "0.24mm Fine @FF AD5X 0.8 nozzle", "sub_path": "process/0.24mm Fine @FF AD5X 0.8 nozzle.json" @@ -573,26 +573,30 @@ "name": "Generic ASA @Flashforge", "sub_path": "filament/Generic ASA @Flashforge.json" }, - { - "name": "Generic PETG @Flashforge", - "sub_path": "filament/Generic PETG @Flashforge.json" - }, - { - "name": "Generic PETG-CF10 @Flashforge", - "sub_path": "filament/Generic PETG-CF10 @Flashforge.json" - }, { "name": "Flashforge PETG", "sub_path": "filament/Flashforge/Flashforge PETG @FF AD3.json" }, + { + "name": "Generic PETG @Flashforge", + "sub_path": "filament/Generic PETG @Flashforge.json" + }, { "name": "Generic PETG @Flashforge Artemis", "sub_path": "filament/Flashforge Generic PETG @Flashforge Artemis.json" }, + { + "name": "Generic PETG-CF10 @Flashforge", + "sub_path": "filament/Generic PETG-CF10 @Flashforge.json" + }, { "name": "SUNLU PETG @base", "sub_path": "filament/SUNLU/SUNLU PETG @base.json" }, + { + "name": "Flashforge PLA", + "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" + }, { "name": "Generic HS PLA @Flashforge", "sub_path": "filament/Generic HS PLA @Flashforge.json" @@ -609,10 +613,6 @@ "name": "Generic PLA-Silk @Flashforge", "sub_path": "filament/Generic PLA-Silk @Flashforge.json" }, - { - "name": "Flashforge PLA", - "sub_path": "filament/Flashforge/Flashforge PLA @FF AD3.json" - }, { "name": "SUNLU PLA Marble @base", "sub_path": "filament/SUNLU/SUNLU PLA Marble @base.json" @@ -709,6 +709,10 @@ "name": "Generic ABS @FF AD5M 0.25 Nozzle", "sub_path": "filament/Generic ABS @FF AD5M 0.25 Nozzle.json" }, + { + "name": "Generic ABS @Flashforge AD4", + "sub_path": "filament/Generic ABS @Flashforge AD4.json" + }, { "name": "Generic ABS @Flashforge G3U", "sub_path": "filament/Generic ABS @Flashforge G3U.json" @@ -729,10 +733,6 @@ "name": "Generic HIPS @Flashforge G3U 0.6 Nozzle", "sub_path": "filament/Generic HIPS @Flashforge G3U 0.6 Nozzle.json" }, - { - "name": "Generic ABS @Flashforge AD4", - "sub_path": "filament/Generic ABS @Flashforge AD4.json" - }, { "name": "Flashforge ASA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge ASA @FF AD5M 0.25 Nozzle.json" @@ -745,41 +745,13 @@ "name": "Generic ASA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Generic ASA @FF AD5M 0.25 Nozzle.json" }, - { - "name": "Generic ASA @Flashforge G3U 0.6 Nozzle", - "sub_path": "filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json" - }, { "name": "Generic ASA @Flashforge AD4", "sub_path": "filament/Generic ASA @Flashforge AD4.json" }, { - "name": "Generic PETG @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Generic PETG @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Generic PETG @Flashforge G3U", - "sub_path": "filament/Generic PETG @Flashforge G3U.json" - }, - { - "name": "Generic PETG @Flashforge G3U 0.6 Nozzle", - "sub_path": "filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "Generic PETG @Flashforge G3U 0.8 Nozzle", - "sub_path": "filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json" - }, - { - "name": "Generic PETG-CF @Flashforge G3U", - "sub_path": "filament/Generic PETG-CF @Flashforge G3U.json" - }, - { - "name": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", - "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "Generic PETG-CF @Flashforge G3U 0.8 Nozzle", - "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json" + "name": "Generic ASA @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic ASA @Flashforge G3U 0.6 Nozzle.json" }, { "name": "Flashforge HS PETG", @@ -905,10 +877,38 @@ "name": "FusRock S-PAHT @G3U 0.6 Nozzle", "sub_path": "filament/FusRock/FusRock S-PAHT @G3U 0.6 Nozzle.json" }, + { + "name": "Generic PETG @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PETG @FF AD5M 0.25 Nozzle.json" + }, { "name": "Generic PETG @Flashforge AD4", "sub_path": "filament/Generic PETG @Flashforge AD4.json" }, + { + "name": "Generic PETG @Flashforge G3U", + "sub_path": "filament/Generic PETG @Flashforge G3U.json" + }, + { + "name": "Generic PETG @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PETG @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "Generic PETG @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PETG @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "Generic PETG-CF @Flashforge G3U", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U.json" + }, + { + "name": "Generic PETG-CF @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "Generic PETG-CF @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PETG-CF @Flashforge G3U 0.8 Nozzle.json" + }, { "name": "Flashforge PETG-CF", "sub_path": "filament/Flashforge PETG-CF.json" @@ -945,10 +945,6 @@ "name": "SUNLU PETG @FF AD5M 0.8 Nozzle", "sub_path": "filament/SUNLU/SUNLU PETG @FF AD5M 0.8 nozzle.json" }, - { - "name": "Generic HS PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json" - }, { "name": "Flashforge HIPS @FF G4", "sub_path": "filament/Flashforge HIPS @FF G4.json" @@ -1049,42 +1045,14 @@ "name": "Flashforge PLA-CF @FF G4P", "sub_path": "filament/Flashforge PLA-CF @FF G4P.json" }, + { + "name": "Generic HS PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic HS PLA @FF AD5M 0.25 Nozzle.json" + }, { "name": "Generic PLA High Speed @Flashforge AD4", "sub_path": "filament/Generic PLA High Speed @Flashforge AD4.json" }, - { - "name": "Generic PLA @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Generic PLA @FF AD5M 0.25 Nozzle.json" - }, - { - "name": "Generic PLA @Flashforge G3U", - "sub_path": "filament/Generic PLA @Flashforge G3U.json" - }, - { - "name": "Generic PLA @Flashforge G3U 0.6 Nozzle", - "sub_path": "filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "Generic PLA @Flashforge G3U 0.8 Nozzle", - "sub_path": "filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json" - }, - { - "name": "Generic PLA-CF @Flashforge G3U", - "sub_path": "filament/Generic PLA-CF @Flashforge G3U.json" - }, - { - "name": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", - "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json" - }, - { - "name": "Generic PLA-CF @Flashforge G3U 0.8 Nozzle", - "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json" - }, - { - "name": "Generic PVA @Flashforge", - "sub_path": "filament/Generic PVA @Flashforge.json" - }, { "name": "Flashforge HS PLA", "sub_path": "filament/Flashforge HS PLA.json" @@ -1233,10 +1201,42 @@ "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" }, + { + "name": "Generic PLA @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PLA @FF AD5M 0.25 Nozzle.json" + }, { "name": "Generic PLA @Flashforge AD4", "sub_path": "filament/Generic PLA @Flashforge AD4.json" }, + { + "name": "Generic PLA @Flashforge G3U", + "sub_path": "filament/Generic PLA @Flashforge G3U.json" + }, + { + "name": "Generic PLA @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "Generic PLA @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "Generic PLA-CF @Flashforge G3U", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U.json" + }, + { + "name": "Generic PLA-CF @Flashforge G3U 0.6 Nozzle", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.6 Nozzle.json" + }, + { + "name": "Generic PLA-CF @Flashforge G3U 0.8 Nozzle", + "sub_path": "filament/Generic PLA-CF @Flashforge G3U 0.8 Nozzle.json" + }, + { + "name": "Generic PVA @Flashforge", + "sub_path": "filament/Generic PVA @Flashforge.json" + }, { "name": "Polymaker CoPA", "sub_path": "filament/Polymaker/Polymaker CoPA.json" @@ -1297,10 +1297,6 @@ "name": "Generic PLA-CF10 @Flashforge AD4", "sub_path": "filament/Generic PLA-CF10 @Flashforge AD4.json" }, - { - "name": "Generic PLA-SILK @FF AD5M 0.25 Nozzle", - "sub_path": "filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" - }, { "name": "Flashforge PLA Silk", "sub_path": "filament/Flashforge PLA Silk.json" @@ -1325,6 +1321,10 @@ "name": "Generic PLA Silk @Flashforge AD4", "sub_path": "filament/Generic PLA Silk @Flashforge AD4.json" }, + { + "name": "Generic PLA-SILK @FF AD5M 0.25 Nozzle", + "sub_path": "filament/Generic PLA-SILK @FF AD5M 0.25 Nozzle.json" + }, { "name": "SUNLU PLA Marble @FF AD3", "sub_path": "filament/SUNLU/SUNLU PLA Marble @FF AD3.json" @@ -1709,102 +1709,6 @@ "name": "Flashforge ASA Basic @FF AD5X 0.25 nozzle", "sub_path": "filament/Flashforge ASA Basic @FF AD5X 0.25 nozzle.json" }, - { - "name": "Flashforge HS PETG @FF G4 0.6 HF nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4 0.6 nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4 0.8 HF nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4 0.6 HF nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4 0.6 nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4 0.8 HF nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4 0.6 HF nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4 0.6 nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4 0.8 HF nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", - "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json" - }, - { - "name": "Flashforge TPU 65D @FF G4 0.6 HF nozzle", - "sub_path": "filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json" - }, - { - "name": "Flashforge TPU 65D @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4 0.6 HF nozzle", - "sub_path": "filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json" - }, - { - "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", - "sub_path": "filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF G4 0.6 nozzle", - "sub_path": "filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json" - }, - { - "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", - "sub_path": "filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json" - }, { "name": "Flashforge HS PETG @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge HS PETG @FF AD5M 0.25 nozzle.json" @@ -2045,6 +1949,254 @@ "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", "sub_path": "filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json" }, + { + "name": "Flashforge HS PETG @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4 0.8 HF nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4 0.8 HF nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge HS PETG @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4 0.8 HF nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4 0.8 HF nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4 0.8 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF G4P 0.8 HF nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF G4P 0.8 HF nozzle.json" + }, + { + "name": "Flashforge TPU 65D @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge TPU 65D @FF G4 0.6 HF nozzle.json" + }, + { + "name": "Flashforge TPU 65D @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge TPU 65D @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4 0.6 HF nozzle", + "sub_path": "filament/Flashforge TPU 95A @FF G4 0.6 HF nozzle.json" + }, + { + "name": "Flashforge TPU 95A @FF G4P 0.6 HF nozzle", + "sub_path": "filament/Flashforge TPU 95A @FF G4P 0.6 HF nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF G4 0.6 nozzle", + "sub_path": "filament/Flashforge PETG-CF @FF G4 0.6 nozzle.json" + }, + { + "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", + "sub_path": "filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge HS PLA @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json" + }, { "name": "Flashforge HS PLA @FF G4 0.6 HF nozzle", "sub_path": "filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json" @@ -2341,158 +2493,6 @@ "name": "Flashforge PLA-CF @FF G4P 0.6 nozzle", "sub_path": "filament/Flashforge PLA-CF @FF G4P 0.6 nozzle.json" }, - { - "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge HS PLA @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Basic @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Basic @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Basic @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Basic @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Color Change @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Color Change @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Color Change @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Color Change @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Color Change @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Galaxy @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Galaxy @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Galaxy @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Luminous @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Luminous @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Luminous @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Luminous @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Matte @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Matte @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Matte @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Matte @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Matte @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Metal @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Metal @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Metal @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Metal @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Metal @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Pro @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Pro @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Pro @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Pro @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Pro @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Silk @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Silk @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Silk @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Silk @FF G4P 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Sparkle @FF AD5M 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF AD5X 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Sparkle @FF AD5X 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Sparkle @FF G4 0.25 nozzle.json" - }, - { - "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", - "sub_path": "filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json" - }, { "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" @@ -2601,30 +2601,6 @@ "name": "Flashforge PETG-CF @FF C5P", "sub_path": "filament/Flashforge PETG-CF @FF C5P.json" }, - { - "name": "Flashforge PLA Matte @FF C5", - "sub_path": "filament/Flashforge PLA Matte @FF C5.json" - }, - { - "name": "Flashforge PLA Matte @FF C5P", - "sub_path": "filament/Flashforge PLA Matte @FF C5P.json" - }, - { - "name": "Flashforge PLA Metal @FF C5", - "sub_path": "filament/Flashforge PLA Metal @FF C5.json" - }, - { - "name": "Flashforge PLA Metal @FF C5P", - "sub_path": "filament/Flashforge PLA Metal @FF C5P.json" - }, - { - "name": "Flashforge PLA Pro @FF C5", - "sub_path": "filament/Flashforge PLA Pro @FF C5.json" - }, - { - "name": "Flashforge PLA Pro @FF C5P", - "sub_path": "filament/Flashforge PLA Pro @FF C5P.json" - }, { "name": "Flashforge PLA Basic @FF C5", "sub_path": "filament/Flashforge PLA Basic @FF C5.json" @@ -2657,6 +2633,30 @@ "name": "Flashforge PLA Luminous @FF C5P", "sub_path": "filament/Flashforge PLA Luminous @FF C5P.json" }, + { + "name": "Flashforge PLA Matte @FF C5", + "sub_path": "filament/Flashforge PLA Matte @FF C5.json" + }, + { + "name": "Flashforge PLA Matte @FF C5P", + "sub_path": "filament/Flashforge PLA Matte @FF C5P.json" + }, + { + "name": "Flashforge PLA Metal @FF C5", + "sub_path": "filament/Flashforge PLA Metal @FF C5.json" + }, + { + "name": "Flashforge PLA Metal @FF C5P", + "sub_path": "filament/Flashforge PLA Metal @FF C5P.json" + }, + { + "name": "Flashforge PLA Pro @FF C5", + "sub_path": "filament/Flashforge PLA Pro @FF C5.json" + }, + { + "name": "Flashforge PLA Pro @FF C5P", + "sub_path": "filament/Flashforge PLA Pro @FF C5P.json" + }, { "name": "Flashforge PLA Silk @FF C5", "sub_path": "filament/Flashforge PLA Silk @FF C5.json" diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index 06d0629ffc..cdfb2ad80b 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -1,6 +1,6 @@ { "name": "InfiMech", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "1", "description": "InfiMech configurations", "machine_model_list": [ @@ -476,11 +476,11 @@ "machine_list": [ { "name": "fdm_machine_common", - "sub_path": "machine/HSN/fdm_machine_common.json" + "sub_path": "machine/fdm_machine_common.json" }, { "name": "fdm_klipper_common", - "sub_path": "machine/HSN/fdm_klipper_common.json" + "sub_path": "machine/fdm_klipper_common.json" }, { "name": "InfiMech EX 0.4 nozzle", diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json deleted file mode 100644 index a95fea09c0..0000000000 --- a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "type": "machine", - "name": "fdm_klipper_common", - "inherits": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "gcode_flavor": "klipper", - "auxiliary_fan": "1", - "bed_exclude_area": [ - "0x0" - ], - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", - "change_filament_gcode": "", - "cooling_tube_length": "5", - "cooling_tube_retraction": "91.5", - "default_filament_profile": [ - "Generic PLA @InfiMech" - ], - "default_print_profile": "0.20mm Standard @InfiMech TX", - "deretraction_speed": [ - "30" - ], - "enable_filament_ramming": "1", - "extra_loading_move": "-2", - "extruder_clearance_height_to_lid": "69", - "extruder_clearance_height_to_rod": "69", - "extruder_clearance_radius": "49", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "high_current_on_filament_swap": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "machine_end_gcode": "PRINT_END", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "200" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "0.4" - ], - "machine_max_speed_e": [ - "30", - "25" - ], - "machine_max_speed_x": [ - "600", - "200" - ], - "machine_max_speed_y": [ - "600", - "200" - ], - "machine_max_speed_z": [ - "20", - "12" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", - "machine_unload_filament_time": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_diameter": [ - "0.4" - ], - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "151.32", - "parking_pos_retraction": "92", - "print_host_webui": "", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "250", - "printer_model": "Generic Klipper Printer", - "printer_notes": "", - "printer_settings_id": "InfiMech TX 0.4 nozzle", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_apikey": "", - "printhost_authorization_type": "key", - "printhost_cafile": "", - "printhost_password": "", - "printhost_port": "", - "printhost_ssl_ignore_revoke": "0", - "printhost_user": "", - "purge_in_prime_tower": "1", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "249" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "0.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "template_custom_gcode": "", - "thumbnails": [ - "300x300" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Normal Lift" - ] -} diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json deleted file mode 100644 index 35501555bb..0000000000 --- a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "type": "machine", - "name": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "printer_technology": "FFF", - "gcode_flavor": "klipper", - "auxiliary_fan": "1", - "bed_exclude_area": [ - "0x0" - ], - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", - "change_filament_gcode": "", - "cooling_tube_length": "5", - "cooling_tube_retraction": "91.5", - "default_filament_profile": [ - "Generic PLA @InfiMech" - ], - "default_print_profile": "0.20mm Standard @InfiMech TX", - "deretraction_speed": [ - "30" - ], - "enable_filament_ramming": "1", - "extra_loading_move": "-2", - "extruder_clearance_height_to_lid": "69", - "extruder_clearance_height_to_rod": "69", - "extruder_clearance_radius": "49", - "extruder_colour": [ - "#FCE94F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "high_current_on_filament_swap": "0", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "machine_end_gcode": "PRINT_END", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "9000", - "9000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "500", - "200" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "3", - "0.4" - ], - "machine_max_speed_e": [ - "30", - "25" - ], - "machine_max_speed_x": [ - "600", - "200" - ], - "machine_max_speed_y": [ - "600", - "200" - ], - "machine_max_speed_z": [ - "20", - "12" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";v2.9.2-20240814;\n;wiping nozzle start\nM106 P3 S0\nM140 S[bed_temperature_initial_layer_single]\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F10000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nG1 Z5\nM190 S[bed_temperature_initial_layer_single]\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F8000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0 F400\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\n;G1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\n;G92 E0 ;reset extruder\nG1 E3 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[1] + 100,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n", - "machine_unload_filament_time": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "151.32", - "parking_pos_retraction": "92", - "print_host_webui": "", - "printable_area": [ - "0x0", - "220x0", - "220x220", - "0x220" - ], - "printable_height": "250", - "printer_model": "Generic Klipper Printer", - "printer_notes": "", - "printer_settings_id": "InfiMech TX 0.4 nozzle", - "printer_variant": "0.4", - "printhost_apikey": "", - "printhost_authorization_type": "key", - "printhost_cafile": "", - "printhost_password": "", - "printhost_port": "", - "printhost_ssl_ignore_revoke": "0", - "printhost_user": "", - "purge_in_prime_tower": "1", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "249" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "0.5" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "template_custom_gcode": "", - "thumbnails": [ - "300x300" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Normal Lift" - ] -} diff --git a/resources/profiles/InfiMech/machine/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/fdm_klipper_common.json index bbcd27a966..a95fea09c0 100644 --- a/resources/profiles/InfiMech/machine/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/fdm_klipper_common.json @@ -119,7 +119,7 @@ "0.4" ], "nozzle_hrc": "0", - "nozzle_type": "brass", + "nozzle_type": "hardened_steel", "nozzle_volume": "151.32", "parking_pos_retraction": "92", "print_host_webui": "", diff --git a/resources/profiles/InfiMech/machine/fdm_machine_common.json b/resources/profiles/InfiMech/machine/fdm_machine_common.json index c329e930cb..35501555bb 100644 --- a/resources/profiles/InfiMech/machine/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/fdm_machine_common.json @@ -116,7 +116,7 @@ "0.08" ], "nozzle_hrc": "0", - "nozzle_type": "brass", + "nozzle_type": "hardened_steel", "nozzle_volume": "151.32", "parking_pos_retraction": "92", "print_host_webui": "", diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index c7b203d5f1..2d58684985 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -68,258 +68,6 @@ "name": "fdm_filament_pla", "sub_path": "filament/base/fdm_filament_pla.json" }, - { - "name": "FilAr PLA @base", - "sub_path": "filament/FilAr/FilAr PLA @base.json" - }, - { - "name": "FilAr PLA Bronce", - "sub_path": "filament/FilAr/FilAr PLA Bronce.json" - }, - { - "name": "FilAr PLA Gris Plata", - "sub_path": "filament/FilAr/FilAr PLA Gris Plata.json" - }, - { - "name": "FilAr PLA Cobre", - "sub_path": "filament/FilAr/FilAr PLA Cobre.json" - }, - { - "name": "FilAr PLA Titanio", - "sub_path": "filament/FilAr/FilAr PLA Titanio.json" - }, - { - "name": "FilAr PLA Tabaco", - "sub_path": "filament/FilAr/FilAr PLA Tabaco.json" - }, - { - "name": "FilAr PLA Cafe con Leche", - "sub_path": "filament/FilAr/FilAr PLA Cafe con Leche.json" - }, - { - "name": "FilAr PLA Manteca", - "sub_path": "filament/FilAr/FilAr PLA Manteca.json" - }, - { - "name": "FilAr PLA Marron Oxido", - "sub_path": "filament/FilAr/FilAr PLA Marron Oxido.json" - }, - { - "name": "FilAr PLA Carpincho", - "sub_path": "filament/FilAr/FilAr PLA Carpincho.json" - }, - { - "name": "FilAr PLA Rosa Amaranto", - "sub_path": "filament/FilAr/FilAr PLA Rosa Amaranto.json" - }, - { - "name": "FilAr PLA Rosa Flamenco", - "sub_path": "filament/FilAr/FilAr PLA Rosa Flamenco.json" - }, - { - "name": "FilAr PLA Piel", - "sub_path": "filament/FilAr/FilAr PLA Piel.json" - }, - { - "name": "FilAr PLA Verde FilAr", - "sub_path": "filament/FilAr/FilAr PLA Verde FilAr.json" - }, - { - "name": "FilAr PLA Verde Manzana", - "sub_path": "filament/FilAr/FilAr PLA Verde Manzana.json" - }, - { - "name": "FilAr PLA Verde Pixel", - "sub_path": "filament/FilAr/FilAr PLA Verde Pixel.json" - }, - { - "name": "FilAr PLA Verde Oliva", - "sub_path": "filament/FilAr/FilAr PLA Verde Oliva.json" - }, - { - "name": "FilAr PLA Blanco Antartida", - "sub_path": "filament/FilAr/FilAr PLA Blanco Antartida.json" - }, - { - "name": "FilAr PLA Blanco Calido", - "sub_path": "filament/FilAr/FilAr PLA Blanco Calido.json" - }, - { - "name": "FilAr PLA Negro Azabache", - "sub_path": "filament/FilAr/FilAr PLA Negro Azabache.json" - }, - { - "name": "FilAr PLA Naranja Tigre", - "sub_path": "filament/FilAr/FilAr PLA Naranja Tigre.json" - }, - { - "name": "FilAr PLA Rojo de Carreras", - "sub_path": "filament/FilAr/FilAr PLA Rojo de Carreras.json" - }, - { - "name": "FilAr PLA Amarillo Lirio", - "sub_path": "filament/FilAr/FilAr PLA Amarillo Lirio.json" - }, - { - "name": "FilAr PLA Violeta Jacaranda", - "sub_path": "filament/FilAr/FilAr PLA Violeta Jacaranda.json" - }, - { - "name": "FilAr PLA Gris Pizarra", - "sub_path": "filament/FilAr/FilAr PLA Gris Pizarra.json" - }, - { - "name": "FilAr PLA Gris Ceniza", - "sub_path": "filament/FilAr/FilAr PLA Gris Ceniza.json" - }, - { - "name": "FilAr PLA Azul Francia", - "sub_path": "filament/FilAr/FilAr PLA Azul Francia.json" - }, - { - "name": "FilAr PLA Celeste Cielo", - "sub_path": "filament/FilAr/FilAr PLA Celeste Cielo.json" - }, - { - "name": "FilAr PLA Oro", - "sub_path": "filament/FilAr/FilAr PLA Oro.json" - }, - { - "name": "FilAr PLA Dorado", - "sub_path": "filament/FilAr/FilAr PLA Dorado.json" - }, - { - "name": "FilAr PLA-mate @base", - "sub_path": "filament/FilAr/FilAr PLA-mate @base.json" - }, - { - "name": "FilAr PLA-mate Amarillo", - "sub_path": "filament/FilAr/FilAr PLA-mate Amarillo.json" - }, - { - "name": "FilAr PLA-mate Azul", - "sub_path": "filament/FilAr/FilAr PLA-mate Azul.json" - }, - { - "name": "FilAr PLA-mate Beige", - "sub_path": "filament/FilAr/FilAr PLA-mate Beige.json" - }, - { - "name": "FilAr PLA-mate Blanco", - "sub_path": "filament/FilAr/FilAr PLA-mate Blanco.json" - }, - { - "name": "FilAr PLA-mate Bordo", - "sub_path": "filament/FilAr/FilAr PLA-mate Bordo.json" - }, - { - "name": "FilAr PLA-mate Celeste Cielo", - "sub_path": "filament/FilAr/FilAr PLA-mate Celeste Cielo.json" - }, - { - "name": "FilAr PLA-mate Chocolate", - "sub_path": "filament/FilAr/FilAr PLA-mate Chocolate.json" - }, - { - "name": "FilAr PLA-mate Gris", - "sub_path": "filament/FilAr/FilAr PLA-mate Gris.json" - }, - { - "name": "FilAr PLA-mate Marron", - "sub_path": "filament/FilAr/FilAr PLA-mate Marron.json" - }, - { - "name": "FilAr PLA-mate Naranja", - "sub_path": "filament/FilAr/FilAr PLA-mate Naranja.json" - }, - { - "name": "FilAr PLA-mate Negro", - "sub_path": "filament/FilAr/FilAr PLA-mate Negro.json" - }, - { - "name": "FilAr PLA-mate Piel", - "sub_path": "filament/FilAr/FilAr PLA-mate Piel.json" - }, - { - "name": "FilAr PLA-mate Rojo", - "sub_path": "filament/FilAr/FilAr PLA-mate Rojo.json" - }, - { - "name": "FilAr PLA-mate Rosa", - "sub_path": "filament/FilAr/FilAr PLA-mate Rosa.json" - }, - { - "name": "FilAr PLA-mate Uva", - "sub_path": "filament/FilAr/FilAr PLA-mate Uva.json" - }, - { - "name": "FilAr PLA-mate Verde", - "sub_path": "filament/FilAr/FilAr PLA-mate Verde.json" - }, - { - "name": "FilAr PLA-mate Violeta", - "sub_path": "filament/FilAr/FilAr PLA-mate Violeta.json" - }, - { - "name": "FilAr PETG @base", - "sub_path": "filament/FilAr/FilAr PETG @base.json" - }, - { - "name": "FilAr PETG Amarillo Lima", - "sub_path": "filament/FilAr/FilAr PETG Amarillo Lima.json" - }, - { - "name": "FilAr PETG Amarillo Radiante", - "sub_path": "filament/FilAr/FilAr PETG Amarillo Radiante.json" - }, - { - "name": "FilAr PETG Azul Boreal", - "sub_path": "filament/FilAr/FilAr PETG Azul Boreal.json" - }, - { - "name": "FilAr PETG Azul Francia", - "sub_path": "filament/FilAr/FilAr PETG Azul Francia.json" - }, - { - "name": "FilAr PETG Azul Imperial", - "sub_path": "filament/FilAr/FilAr PETG Azul Imperial.json" - }, - { - "name": "FilAr PETG Blanco Antartida", - "sub_path": "filament/FilAr/FilAr PETG Blanco Antartida.json" - }, - { - "name": "FilAr PETG Cian", - "sub_path": "filament/FilAr/FilAr PETG Cian.json" - }, - { - "name": "FilAr PETG Coral", - "sub_path": "filament/FilAr/FilAr PETG Coral.json" - }, - { - "name": "FilAr PETG Cristal", - "sub_path": "filament/FilAr/FilAr PETG Cristal.json" - }, - { - "name": "FilAr PETG Gris Ceniza", - "sub_path": "filament/FilAr/FilAr PETG Gris Ceniza.json" - }, - { - "name": "FilAr PETG Gris Plata", - "sub_path": "filament/FilAr/FilAr PETG Gris Plata.json" - }, - { - "name": "FilAr PETG Magenta", - "sub_path": "filament/FilAr/FilAr PETG Magenta.json" - }, - { - "name": "FilAr PETG Negro Azabache", - "sub_path": "filament/FilAr/FilAr PETG Negro Azabache.json" - }, - { - "name": "FilAr PETG Rojo Carmesi", - "sub_path": "filament/FilAr/FilAr PETG Rojo Carmesi.json" - }, { "name": "fdm_filament_pp", "sub_path": "filament/base/fdm_filament_pp.json" @@ -588,10 +336,6 @@ "name": "Generic PE-CF @base", "sub_path": "filament/Generic PE-CF @base.json" }, - { - "name": "Generic PE-CF @System", - "sub_path": "filament/Generic PE-CF @System.json" - }, { "name": "AliZ PETG @base", "sub_path": "filament/AliZ/AliZ PETG @base.json" @@ -672,6 +416,10 @@ "name": "Fiberon PETG-rCF @base", "sub_path": "filament/Polymaker/Fiberon PETG-rCF @base.json" }, + { + "name": "FilAr PETG @base", + "sub_path": "filament/FilAr/FilAr PETG @base.json" + }, { "name": "Generic PETG @System", "sub_path": "filament/Generic PETG @System.json" @@ -680,18 +428,10 @@ "name": "Generic PETG HF @base", "sub_path": "filament/Generic PETG HF @base.json" }, - { - "name": "Generic PETG HF @System", - "sub_path": "filament/Generic PETG HF @System.json" - }, { "name": "Generic PETG-CF @base", "sub_path": "filament/Generic PETG-CF @base.json" }, - { - "name": "Generic PETG-CF @System", - "sub_path": "filament/Generic PETG-CF @System.json" - }, { "name": "GreenGate3D PETG @base", "sub_path": "filament/GreenGate3D/GreenGate3D PETG @base.json" @@ -868,6 +608,14 @@ "name": "FILL3D PLA Turbo @base", "sub_path": "filament/FILL3D/FILL3D PLA Turbo @base.json" }, + { + "name": "FilAr PLA @base", + "sub_path": "filament/FilAr/FilAr PLA @base.json" + }, + { + "name": "FilAr PLA-mate @base", + "sub_path": "filament/FilAr/FilAr PLA-mate @base.json" + }, { "name": "Generic PLA @System", "sub_path": "filament/Generic PLA @System.json" @@ -880,10 +628,6 @@ "name": "Generic PLA Matte @base", "sub_path": "filament/Generic PLA Matte @base.json" }, - { - "name": "Generic PLA Matte @System", - "sub_path": "filament/Generic PLA Matte @System.json" - }, { "name": "Generic PLA-CF @System", "sub_path": "filament/Generic PLA-CF @System.json" @@ -1092,18 +836,10 @@ "name": "Generic PP-CF @base", "sub_path": "filament/Generic PP-CF @base.json" }, - { - "name": "Generic PP-CF @System", - "sub_path": "filament/Generic PP-CF @System.json" - }, { "name": "Generic PP-GF @base", "sub_path": "filament/Generic PP-GF @base.json" }, - { - "name": "Generic PP-GF @System", - "sub_path": "filament/Generic PP-GF @System.json" - }, { "name": "Bambu PPA-CF @base", "sub_path": "filament/Bambu/Bambu PPA-CF @base.json" @@ -1292,10 +1028,6 @@ "name": "Elegoo ASA-CF @base", "sub_path": "filament/Elegoo/Elegoo ASA-CF @base.json" }, - { - "name": "Elegoo ASA-CF @System", - "sub_path": "filament/Elegoo/Elegoo ASA-CF @System.json" - }, { "name": "Overture ASA @System", "sub_path": "filament/Overture/Overture ASA @System.json" @@ -1388,14 +1120,14 @@ "name": "Elegoo PC-FR @base", "sub_path": "filament/Elegoo/Elegoo PC-FR @base.json" }, - { - "name": "Elegoo PC-FR @System", - "sub_path": "filament/Elegoo/Elegoo PC-FR @System.json" - }, { "name": "COEX PCTG PRIME @System", "sub_path": "filament/COEX/COEX PCTG PRIME @System.json" }, + { + "name": "Generic PE-CF @System", + "sub_path": "filament/Generic PE-CF @System.json" + }, { "name": "AliZ PETG @System", "sub_path": "filament/AliZ/AliZ PETG @System.json" @@ -1448,10 +1180,6 @@ "name": "Elegoo PET-CF @base", "sub_path": "filament/Elegoo/Elegoo PET-CF @base.json" }, - { - "name": "Elegoo PET-CF @System", - "sub_path": "filament/Elegoo/Elegoo PET-CF @System.json" - }, { "name": "Elegoo PETG @System", "sub_path": "filament/Elegoo/Elegoo PETG @System.json" @@ -1460,50 +1188,26 @@ "name": "Elegoo PETG HF @base", "sub_path": "filament/Elegoo/Elegoo PETG HF @base.json" }, - { - "name": "Elegoo PETG HF @System", - "sub_path": "filament/Elegoo/Elegoo PETG HF @System.json" - }, { "name": "Elegoo PETG PRO @base", "sub_path": "filament/Elegoo/Elegoo PETG PRO @base.json" }, - { - "name": "Elegoo PETG PRO @System", - "sub_path": "filament/Elegoo/Elegoo PETG PRO @System.json" - }, { "name": "Elegoo PETG Translucent @base", "sub_path": "filament/Elegoo/Elegoo PETG Translucent @base.json" }, - { - "name": "Elegoo PETG Translucent @System", - "sub_path": "filament/Elegoo/Elegoo PETG Translucent @System.json" - }, { "name": "Elegoo PETG-CF @base", "sub_path": "filament/Elegoo/Elegoo PETG-CF @base.json" }, - { - "name": "Elegoo PETG-CF @System", - "sub_path": "filament/Elegoo/Elegoo PETG-CF @System.json" - }, { "name": "Elegoo PETG-GF @base", "sub_path": "filament/Elegoo/Elegoo PETG-GF @base.json" }, - { - "name": "Elegoo PETG-GF @System", - "sub_path": "filament/Elegoo/Elegoo PETG-GF @System.json" - }, { "name": "Elegoo Rapid PETG @base", "sub_path": "filament/Elegoo/Elegoo Rapid PETG @base.json" }, - { - "name": "Elegoo Rapid PETG @System", - "sub_path": "filament/Elegoo/Elegoo Rapid PETG @System.json" - }, { "name": "FDplast PETG @System", "sub_path": "filament/FDplast/FDplast PETG @System.json" @@ -1528,6 +1232,70 @@ "name": "Fiberon PETG-rCF @System", "sub_path": "filament/Polymaker/Fiberon PETG-rCF @System.json" }, + { + "name": "FilAr PETG Amarillo Lima", + "sub_path": "filament/FilAr/FilAr PETG Amarillo Lima.json" + }, + { + "name": "FilAr PETG Amarillo Radiante", + "sub_path": "filament/FilAr/FilAr PETG Amarillo Radiante.json" + }, + { + "name": "FilAr PETG Azul Boreal", + "sub_path": "filament/FilAr/FilAr PETG Azul Boreal.json" + }, + { + "name": "FilAr PETG Azul Francia", + "sub_path": "filament/FilAr/FilAr PETG Azul Francia.json" + }, + { + "name": "FilAr PETG Azul Imperial", + "sub_path": "filament/FilAr/FilAr PETG Azul Imperial.json" + }, + { + "name": "FilAr PETG Blanco Antartida", + "sub_path": "filament/FilAr/FilAr PETG Blanco Antartida.json" + }, + { + "name": "FilAr PETG Cian", + "sub_path": "filament/FilAr/FilAr PETG Cian.json" + }, + { + "name": "FilAr PETG Coral", + "sub_path": "filament/FilAr/FilAr PETG Coral.json" + }, + { + "name": "FilAr PETG Cristal", + "sub_path": "filament/FilAr/FilAr PETG Cristal.json" + }, + { + "name": "FilAr PETG Gris Ceniza", + "sub_path": "filament/FilAr/FilAr PETG Gris Ceniza.json" + }, + { + "name": "FilAr PETG Gris Plata", + "sub_path": "filament/FilAr/FilAr PETG Gris Plata.json" + }, + { + "name": "FilAr PETG Magenta", + "sub_path": "filament/FilAr/FilAr PETG Magenta.json" + }, + { + "name": "FilAr PETG Negro Azabache", + "sub_path": "filament/FilAr/FilAr PETG Negro Azabache.json" + }, + { + "name": "FilAr PETG Rojo Carmesi", + "sub_path": "filament/FilAr/FilAr PETG Rojo Carmesi.json" + }, + { + "name": "Generic PETG HF @System", + "sub_path": "filament/Generic PETG HF @System.json" + }, + { + "name": "Generic PETG-CF @System", + "sub_path": "filament/Generic PETG-CF @System.json" + }, { "name": "GreenGate3D PETG @System", "sub_path": "filament/GreenGate3D/GreenGate3D PETG @System.json" @@ -1656,106 +1424,54 @@ "name": "Elegoo PLA Basic @base", "sub_path": "filament/Elegoo/Elegoo PLA Basic @base.json" }, - { - "name": "Elegoo PLA Basic @System", - "sub_path": "filament/Elegoo/Elegoo PLA Basic @System.json" - }, { "name": "Elegoo PLA Galaxy @base", "sub_path": "filament/Elegoo/Elegoo PLA Galaxy @base.json" }, - { - "name": "Elegoo PLA Galaxy @System", - "sub_path": "filament/Elegoo/Elegoo PLA Galaxy @System.json" - }, { "name": "Elegoo PLA Glow @base", "sub_path": "filament/Elegoo/Elegoo PLA Glow @base.json" }, - { - "name": "Elegoo PLA Glow @System", - "sub_path": "filament/Elegoo/Elegoo PLA Glow @System.json" - }, { "name": "Elegoo PLA Marble @base", "sub_path": "filament/Elegoo/Elegoo PLA Marble @base.json" }, - { - "name": "Elegoo PLA Marble @System", - "sub_path": "filament/Elegoo/Elegoo PLA Marble @System.json" - }, { "name": "Elegoo PLA Matte @base", "sub_path": "filament/Elegoo/Elegoo PLA Matte @base.json" }, - { - "name": "Elegoo PLA Matte @System", - "sub_path": "filament/Elegoo/Elegoo PLA Matte @System.json" - }, { "name": "Elegoo PLA PRO @base", "sub_path": "filament/Elegoo/Elegoo PLA PRO @base.json" }, - { - "name": "Elegoo PLA PRO @System", - "sub_path": "filament/Elegoo/Elegoo PLA PRO @System.json" - }, { "name": "Elegoo PLA Silk @base", "sub_path": "filament/Elegoo/Elegoo PLA Silk @base.json" }, - { - "name": "Elegoo PLA Silk @System", - "sub_path": "filament/Elegoo/Elegoo PLA Silk @System.json" - }, { "name": "Elegoo PLA Sparkle @base", "sub_path": "filament/Elegoo/Elegoo PLA Sparkle @base.json" }, - { - "name": "Elegoo PLA Sparkle @System", - "sub_path": "filament/Elegoo/Elegoo PLA Sparkle @System.json" - }, { "name": "Elegoo PLA Translucent2 @base", "sub_path": "filament/Elegoo/Elegoo PLA Translucent2 @base.json" }, - { - "name": "Elegoo PLA Translucent2 @System", - "sub_path": "filament/Elegoo/Elegoo PLA Translucent2 @System.json" - }, { "name": "Elegoo PLA Wood @base", "sub_path": "filament/Elegoo/Elegoo PLA Wood @base.json" }, - { - "name": "Elegoo PLA Wood @System", - "sub_path": "filament/Elegoo/Elegoo PLA Wood @System.json" - }, { "name": "Elegoo PLA+ @base", "sub_path": "filament/Elegoo/Elegoo PLA+ @base.json" }, - { - "name": "Elegoo PLA+ @System", - "sub_path": "filament/Elegoo/Elegoo PLA+ @System.json" - }, { "name": "Elegoo PLA-CF @base", "sub_path": "filament/Elegoo/Elegoo PLA-CF @base.json" }, - { - "name": "Elegoo PLA-CF @System", - "sub_path": "filament/Elegoo/Elegoo PLA-CF @System.json" - }, { "name": "Elegoo Rapid PLA+ @base", "sub_path": "filament/Elegoo/Elegoo Rapid PLA+ @base.json" }, - { - "name": "Elegoo Rapid PLA+ @System", - "sub_path": "filament/Elegoo/Elegoo Rapid PLA+ @System.json" - }, { "name": "FDplast PLA @System", "sub_path": "filament/FDplast/FDplast PLA @System.json" @@ -1768,6 +1484,194 @@ "name": "FILL3D PLA Turbo @System", "sub_path": "filament/FILL3D/FILL3D PLA Turbo @System.json" }, + { + "name": "FilAr PLA Amarillo Lirio", + "sub_path": "filament/FilAr/FilAr PLA Amarillo Lirio.json" + }, + { + "name": "FilAr PLA Azul Francia", + "sub_path": "filament/FilAr/FilAr PLA Azul Francia.json" + }, + { + "name": "FilAr PLA Blanco Antartida", + "sub_path": "filament/FilAr/FilAr PLA Blanco Antartida.json" + }, + { + "name": "FilAr PLA Blanco Calido", + "sub_path": "filament/FilAr/FilAr PLA Blanco Calido.json" + }, + { + "name": "FilAr PLA Bronce", + "sub_path": "filament/FilAr/FilAr PLA Bronce.json" + }, + { + "name": "FilAr PLA Cafe con Leche", + "sub_path": "filament/FilAr/FilAr PLA Cafe con Leche.json" + }, + { + "name": "FilAr PLA Carpincho", + "sub_path": "filament/FilAr/FilAr PLA Carpincho.json" + }, + { + "name": "FilAr PLA Celeste Cielo", + "sub_path": "filament/FilAr/FilAr PLA Celeste Cielo.json" + }, + { + "name": "FilAr PLA Cobre", + "sub_path": "filament/FilAr/FilAr PLA Cobre.json" + }, + { + "name": "FilAr PLA Dorado", + "sub_path": "filament/FilAr/FilAr PLA Dorado.json" + }, + { + "name": "FilAr PLA Gris Ceniza", + "sub_path": "filament/FilAr/FilAr PLA Gris Ceniza.json" + }, + { + "name": "FilAr PLA Gris Pizarra", + "sub_path": "filament/FilAr/FilAr PLA Gris Pizarra.json" + }, + { + "name": "FilAr PLA Gris Plata", + "sub_path": "filament/FilAr/FilAr PLA Gris Plata.json" + }, + { + "name": "FilAr PLA Manteca", + "sub_path": "filament/FilAr/FilAr PLA Manteca.json" + }, + { + "name": "FilAr PLA Marron Oxido", + "sub_path": "filament/FilAr/FilAr PLA Marron Oxido.json" + }, + { + "name": "FilAr PLA Naranja Tigre", + "sub_path": "filament/FilAr/FilAr PLA Naranja Tigre.json" + }, + { + "name": "FilAr PLA Negro Azabache", + "sub_path": "filament/FilAr/FilAr PLA Negro Azabache.json" + }, + { + "name": "FilAr PLA Oro", + "sub_path": "filament/FilAr/FilAr PLA Oro.json" + }, + { + "name": "FilAr PLA Piel", + "sub_path": "filament/FilAr/FilAr PLA Piel.json" + }, + { + "name": "FilAr PLA Rojo de Carreras", + "sub_path": "filament/FilAr/FilAr PLA Rojo de Carreras.json" + }, + { + "name": "FilAr PLA Rosa Amaranto", + "sub_path": "filament/FilAr/FilAr PLA Rosa Amaranto.json" + }, + { + "name": "FilAr PLA Rosa Flamenco", + "sub_path": "filament/FilAr/FilAr PLA Rosa Flamenco.json" + }, + { + "name": "FilAr PLA Tabaco", + "sub_path": "filament/FilAr/FilAr PLA Tabaco.json" + }, + { + "name": "FilAr PLA Titanio", + "sub_path": "filament/FilAr/FilAr PLA Titanio.json" + }, + { + "name": "FilAr PLA Verde FilAr", + "sub_path": "filament/FilAr/FilAr PLA Verde FilAr.json" + }, + { + "name": "FilAr PLA Verde Manzana", + "sub_path": "filament/FilAr/FilAr PLA Verde Manzana.json" + }, + { + "name": "FilAr PLA Verde Oliva", + "sub_path": "filament/FilAr/FilAr PLA Verde Oliva.json" + }, + { + "name": "FilAr PLA Verde Pixel", + "sub_path": "filament/FilAr/FilAr PLA Verde Pixel.json" + }, + { + "name": "FilAr PLA Violeta Jacaranda", + "sub_path": "filament/FilAr/FilAr PLA Violeta Jacaranda.json" + }, + { + "name": "FilAr PLA-mate Amarillo", + "sub_path": "filament/FilAr/FilAr PLA-mate Amarillo.json" + }, + { + "name": "FilAr PLA-mate Azul", + "sub_path": "filament/FilAr/FilAr PLA-mate Azul.json" + }, + { + "name": "FilAr PLA-mate Beige", + "sub_path": "filament/FilAr/FilAr PLA-mate Beige.json" + }, + { + "name": "FilAr PLA-mate Blanco", + "sub_path": "filament/FilAr/FilAr PLA-mate Blanco.json" + }, + { + "name": "FilAr PLA-mate Bordo", + "sub_path": "filament/FilAr/FilAr PLA-mate Bordo.json" + }, + { + "name": "FilAr PLA-mate Celeste Cielo", + "sub_path": "filament/FilAr/FilAr PLA-mate Celeste Cielo.json" + }, + { + "name": "FilAr PLA-mate Chocolate", + "sub_path": "filament/FilAr/FilAr PLA-mate Chocolate.json" + }, + { + "name": "FilAr PLA-mate Gris", + "sub_path": "filament/FilAr/FilAr PLA-mate Gris.json" + }, + { + "name": "FilAr PLA-mate Marron", + "sub_path": "filament/FilAr/FilAr PLA-mate Marron.json" + }, + { + "name": "FilAr PLA-mate Naranja", + "sub_path": "filament/FilAr/FilAr PLA-mate Naranja.json" + }, + { + "name": "FilAr PLA-mate Negro", + "sub_path": "filament/FilAr/FilAr PLA-mate Negro.json" + }, + { + "name": "FilAr PLA-mate Piel", + "sub_path": "filament/FilAr/FilAr PLA-mate Piel.json" + }, + { + "name": "FilAr PLA-mate Rojo", + "sub_path": "filament/FilAr/FilAr PLA-mate Rojo.json" + }, + { + "name": "FilAr PLA-mate Rosa", + "sub_path": "filament/FilAr/FilAr PLA-mate Rosa.json" + }, + { + "name": "FilAr PLA-mate Uva", + "sub_path": "filament/FilAr/FilAr PLA-mate Uva.json" + }, + { + "name": "FilAr PLA-mate Verde", + "sub_path": "filament/FilAr/FilAr PLA-mate Verde.json" + }, + { + "name": "FilAr PLA-mate Violeta", + "sub_path": "filament/FilAr/FilAr PLA-mate Violeta.json" + }, + { + "name": "Generic PLA Matte @System", + "sub_path": "filament/Generic PLA Matte @System.json" + }, { "name": "NIT PLA @System", "sub_path": "filament/NIT/NIT PLA @System.json" @@ -1876,10 +1780,6 @@ "name": "PolyLite Dual PLA @base", "sub_path": "filament/Polymaker/PolyLite Dual PLA @base.json" }, - { - "name": "PolyLite Dual PLA @System", - "sub_path": "filament/Polymaker/PolyLite Dual PLA @System.json" - }, { "name": "PolyLite PLA @System", "sub_path": "filament/Polymaker/PolyLite PLA @System.json" @@ -1976,6 +1876,14 @@ "name": "FILL3D PPCF @System", "sub_path": "filament/FILL3D/FILL3D PPCF @System.json" }, + { + "name": "Generic PP-CF @System", + "sub_path": "filament/Generic PP-CF @System.json" + }, + { + "name": "Generic PP-GF @System", + "sub_path": "filament/Generic PP-GF @System.json" + }, { "name": "Bambu PPA-CF @System", "sub_path": "filament/Bambu/Bambu PPA-CF @System.json" @@ -2024,10 +1932,6 @@ "name": "Elegoo Rapid TPU 95A @base", "sub_path": "filament/Elegoo/Elegoo Rapid TPU 95A @base.json" }, - { - "name": "Elegoo Rapid TPU 95A @System", - "sub_path": "filament/Elegoo/Elegoo Rapid TPU 95A @System.json" - }, { "name": "Elegoo TPU 95A @System", "sub_path": "filament/Elegoo/Elegoo TPU 95A @System.json" @@ -2040,6 +1944,14 @@ "name": "Overture TPU @System", "sub_path": "filament/Overture/Overture TPU @System.json" }, + { + "name": "Elegoo ASA-CF @System", + "sub_path": "filament/Elegoo/Elegoo ASA-CF @System.json" + }, + { + "name": "Elegoo PC-FR @System", + "sub_path": "filament/Elegoo/Elegoo PC-FR @System.json" + }, { "name": "AliZ PETG-CF @System", "sub_path": "filament/AliZ/AliZ PETG-CF @System.json" @@ -2048,9 +1960,97 @@ "name": "AliZ PETG-Metal @System", "sub_path": "filament/AliZ/AliZ PETG-Metal @System.json" }, + { + "name": "Elegoo PET-CF @System", + "sub_path": "filament/Elegoo/Elegoo PET-CF @System.json" + }, + { + "name": "Elegoo PETG HF @System", + "sub_path": "filament/Elegoo/Elegoo PETG HF @System.json" + }, + { + "name": "Elegoo PETG PRO @System", + "sub_path": "filament/Elegoo/Elegoo PETG PRO @System.json" + }, + { + "name": "Elegoo PETG Translucent @System", + "sub_path": "filament/Elegoo/Elegoo PETG Translucent @System.json" + }, + { + "name": "Elegoo PETG-CF @System", + "sub_path": "filament/Elegoo/Elegoo PETG-CF @System.json" + }, + { + "name": "Elegoo PETG-GF @System", + "sub_path": "filament/Elegoo/Elegoo PETG-GF @System.json" + }, + { + "name": "Elegoo Rapid PETG @System", + "sub_path": "filament/Elegoo/Elegoo Rapid PETG @System.json" + }, + { + "name": "Elegoo PLA Basic @System", + "sub_path": "filament/Elegoo/Elegoo PLA Basic @System.json" + }, + { + "name": "Elegoo PLA Galaxy @System", + "sub_path": "filament/Elegoo/Elegoo PLA Galaxy @System.json" + }, + { + "name": "Elegoo PLA Glow @System", + "sub_path": "filament/Elegoo/Elegoo PLA Glow @System.json" + }, + { + "name": "Elegoo PLA Marble @System", + "sub_path": "filament/Elegoo/Elegoo PLA Marble @System.json" + }, + { + "name": "Elegoo PLA Matte @System", + "sub_path": "filament/Elegoo/Elegoo PLA Matte @System.json" + }, + { + "name": "Elegoo PLA PRO @System", + "sub_path": "filament/Elegoo/Elegoo PLA PRO @System.json" + }, + { + "name": "Elegoo PLA Silk @System", + "sub_path": "filament/Elegoo/Elegoo PLA Silk @System.json" + }, + { + "name": "Elegoo PLA Sparkle @System", + "sub_path": "filament/Elegoo/Elegoo PLA Sparkle @System.json" + }, + { + "name": "Elegoo PLA Translucent2 @System", + "sub_path": "filament/Elegoo/Elegoo PLA Translucent2 @System.json" + }, + { + "name": "Elegoo PLA Wood @System", + "sub_path": "filament/Elegoo/Elegoo PLA Wood @System.json" + }, + { + "name": "Elegoo PLA+ @System", + "sub_path": "filament/Elegoo/Elegoo PLA+ @System.json" + }, + { + "name": "Elegoo PLA-CF @System", + "sub_path": "filament/Elegoo/Elegoo PLA-CF @System.json" + }, + { + "name": "Elegoo Rapid PLA+ @System", + "sub_path": "filament/Elegoo/Elegoo Rapid PLA+ @System.json" + }, + { + "name": "PolyLite Dual PLA @System", + "sub_path": "filament/Polymaker/PolyLite Dual PLA @System.json" + }, { "name": "COEX PLA+Silk @System", "sub_path": "filament/COEX/COEX PLA+Silk @System.json" + }, + { + "name": "Elegoo Rapid TPU 95A @System", + "sub_path": "filament/Elegoo/Elegoo Rapid TPU 95A @System.json" } ], "process_list": [], diff --git a/resources/profiles/Phrozen.json b/resources/profiles/Phrozen.json index 0c711816c1..fc5b795c37 100644 --- a/resources/profiles/Phrozen.json +++ b/resources/profiles/Phrozen.json @@ -1,6 +1,6 @@ { "name": "Phrozen", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "Phrozen configurations", "machine_model_list": [ diff --git a/resources/profiles/Phrozen/machine/_fdm_machine_common.json b/resources/profiles/Phrozen/machine/_fdm_machine_common.json deleted file mode 100644 index 823f9a173b..0000000000 --- a/resources/profiles/Phrozen/machine/_fdm_machine_common.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "type": "machine", - "name": "fdm_machine_common", - "from": "system", - "instantiation": "false", - "gcode_flavor": "marlin", - "machine_start_gcode": "", - "machine_end_gcode": "", - "extruder_colour": [ - "#018001" - ], - "extruder_offset": [ - "0x0" - ], - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "2000", - "2000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "3000", - "3000" - ], - "machine_max_acceleration_x": [ - "2000", - "2000" - ], - "machine_max_acceleration_y": [ - "2000", - "2000" - ], - "machine_max_acceleration_z": [ - "300", - "200" - ], - "machine_max_speed_e": [ - "25", - "25" - ], - "machine_max_speed_x": [ - "300", - "200" - ], - "machine_max_speed_y": [ - "300", - "200" - ], - "machine_max_speed_z": [ - "12", - "12" - ], - "machine_max_jerk_e": [ - "2.5", - "2.5" - ], - "machine_max_jerk_x": [ - "9", - "9" - ], - "machine_max_jerk_y": [ - "9", - "9" - ], - "machine_max_jerk_z": [ - "0.2", - "0.4" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "max_layer_height": [ - "0.3" - ], - "min_layer_height": [ - "0.08" - ], - "printable_height": "300", - "extruder_clearance_radius": "65", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_height_to_lid": "140", - "nozzle_diameter": [ - "0.4" - ], - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", - "retraction_minimum_travel": [ - "1" - ], - "retract_before_wipe": [ - "70%" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_length": [ - "0.8" - ], - "retract_length_toolchange": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retraction_speed": [ - "30" - ], - "deretraction_speed": [ - "30" - ], - "silent_mode": "0", - "single_extruder_multi_material": "1", - "change_filament_gcode": "", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "machine_pause_gcode": "M400 U1\n", - "wipe": [ - "1" - ], - "z_hop_types": "Normal Lift" -} diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index ecbbe179e7..57d1e2c282 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1448,34 +1448,10 @@ "name": "fdm_filament_tpu", "sub_path": "filament/fdm_filament_tpu.json" }, - { - "name": "Generic ABS @Prusa base", - "sub_path": "filament/Generic ABS @Prusa base.json" - }, - { - "name": "Generic ABS @Prusa", - "sub_path": "filament/Generic ABS @Prusa.json" - }, { "name": "Generic ABS @Prusa CORE One", "sub_path": "filament/Generic ABS @Prusa CORE One.json" }, - { - "name": "Generic ABS @Prusa MINIIS", - "sub_path": "filament/Generic ABS @Prusa MINIIS.json" - }, - { - "name": "Generic ABS @Prusa MINIIS 0.25", - "sub_path": "filament/Generic ABS @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic ABS @Prusa MINIIS 0.6", - "sub_path": "filament/Generic ABS @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic ABS @Prusa MINIIS 0.8", - "sub_path": "filament/Generic ABS @Prusa MINIIS 0.8.json" - }, { "name": "Generic ABS @Prusa MK3.5", "sub_path": "filament/Generic ABS @Prusa MK3.5.json" @@ -1492,37 +1468,13 @@ "name": "Generic ABS @Prusa MK3.5 0.8", "sub_path": "filament/Generic ABS @Prusa MK3.5 0.8.json" }, - { - "name": "Generic ABS @Prusa MK4", - "sub_path": "filament/Generic ABS @Prusa MK4.json" - }, { "name": "Generic ABS @Prusa MK4S", "sub_path": "filament/Generic ABS @Prusa MK4S.json" }, { - "name": "Generic ABS @Prusa XL", - "sub_path": "filament/Generic ABS @Prusa XL.json" - }, - { - "name": "Generic ABS @Prusa XL 5T", - "sub_path": "filament/Generic ABS @Prusa XL 5T.json" - }, - { - "name": "Generic ABS HF @Prusa base", - "sub_path": "filament/Generic ABS HF @Prusa base.json" - }, - { - "name": "Generic ABS HF @Prusa MINIIS", - "sub_path": "filament/Generic ABS HF @Prusa MINIIS.json" - }, - { - "name": "Generic ABS HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic ABS HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.8.json" + "name": "Generic ABS @Prusa base", + "sub_path": "filament/Generic ABS @Prusa base.json" }, { "name": "Generic ABS HF @Prusa MK3.5", @@ -1536,6 +1488,10 @@ "name": "Generic ABS HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic ABS HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic ABS HF @Prusa base", + "sub_path": "filament/Generic ABS HF @Prusa base.json" + }, { "name": "Generic ASA @Prusa", "sub_path": "filament/Generic ASA @Prusa.json" @@ -1584,22 +1540,6 @@ "name": "Generic ASA @Prusa MK4S", "sub_path": "filament/Generic ASA @Prusa MK4S.json" }, - { - "name": "Generic ASA HF @Prusa base", - "sub_path": "filament/Generic ASA HF @Prusa base.json" - }, - { - "name": "Generic ASA HF @Prusa MINIIS", - "sub_path": "filament/Generic ASA HF @Prusa MINIIS.json" - }, - { - "name": "Generic ASA HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic ASA HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.8.json" - }, { "name": "Generic ASA HF @Prusa MK3.5", "sub_path": "filament/Generic ASA HF @Prusa MK3.5.json" @@ -1612,6 +1552,10 @@ "name": "Generic ASA HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic ASA HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic ASA HF @Prusa base", + "sub_path": "filament/Generic ASA HF @Prusa base.json" + }, { "name": "Prusament ASA @CORE One", "sub_path": "filament/Prusament ASA @CORE One.json" @@ -1636,30 +1580,6 @@ "name": "Generic TPU @Prusa CORE One", "sub_path": "filament/Generic TPU @Prusa CORE One.json" }, - { - "name": "Generic PA @Prusa base", - "sub_path": "filament/Generic PA @Prusa base.json" - }, - { - "name": "Generic PA @Prusa", - "sub_path": "filament/Generic PA @Prusa.json" - }, - { - "name": "Generic PA @Prusa MINIIS", - "sub_path": "filament/Generic PA @Prusa MINIIS.json" - }, - { - "name": "Generic PA @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PA @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PA @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PA @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PA @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PA @Prusa MINIIS 0.8.json" - }, { "name": "Generic PA @Prusa MK3.5", "sub_path": "filament/Generic PA @Prusa MK3.5.json" @@ -1677,28 +1597,8 @@ "sub_path": "filament/Generic PA @Prusa MK3.5 0.8.json" }, { - "name": "Generic PA-CF @Prusa base", - "sub_path": "filament/Generic PA-CF @Prusa base.json" - }, - { - "name": "Generic PA-CF @Prusa", - "sub_path": "filament/Generic PA-CF @Prusa.json" - }, - { - "name": "Generic PA-CF @Prusa MINIIS", - "sub_path": "filament/Generic PA-CF @Prusa MINIIS.json" - }, - { - "name": "Generic PA-CF @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PA-CF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PA-CF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.8.json" + "name": "Generic PA @Prusa base", + "sub_path": "filament/Generic PA @Prusa base.json" }, { "name": "Generic PA-CF @Prusa MK3.5", @@ -1716,6 +1616,10 @@ "name": "Generic PA-CF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PA-CF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PA-CF @Prusa base", + "sub_path": "filament/Generic PA-CF @Prusa base.json" + }, { "name": "Prusament PA-CF @CORE One", "sub_path": "filament/Prusament PA-CF @CORE One.json" @@ -1764,22 +1668,6 @@ "name": "Generic PC @Prusa MK3.5 0.8", "sub_path": "filament/Generic PC @Prusa MK3.5 0.8.json" }, - { - "name": "Generic PC HF @Prusa base", - "sub_path": "filament/Generic PC HF @Prusa base.json" - }, - { - "name": "Generic PC HF @Prusa MINIIS", - "sub_path": "filament/Generic PC HF @Prusa MINIIS.json" - }, - { - "name": "Generic PC HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PC HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.8.json" - }, { "name": "Generic PC HF @Prusa MK3.5", "sub_path": "filament/Generic PC HF @Prusa MK3.5.json" @@ -1792,6 +1680,10 @@ "name": "Generic PC HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PC HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PC HF @Prusa base", + "sub_path": "filament/Generic PC HF @Prusa base.json" + }, { "name": "Prusament PC Blend @CORE One", "sub_path": "filament/Prusament PC Blend @CORE One.json" @@ -1816,34 +1708,10 @@ "name": "Prusament PC-CF @XL 5T", "sub_path": "filament/Prusament PC-CF @XL 5T.json" }, - { - "name": "Generic PETG @Prusa base", - "sub_path": "filament/Generic PETG @Prusa base.json" - }, - { - "name": "Generic PETG @Prusa", - "sub_path": "filament/Generic PETG @Prusa.json" - }, { "name": "Generic PETG @Prusa CORE One", "sub_path": "filament/Generic PETG @Prusa CORE One.json" }, - { - "name": "Generic PETG @Prusa MINIIS", - "sub_path": "filament/Generic PETG @Prusa MINIIS.json" - }, - { - "name": "Generic PETG @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PETG @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PETG @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PETG @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PETG @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PETG @Prusa MINIIS 0.8.json" - }, { "name": "Generic PETG @Prusa MK3.5", "sub_path": "filament/Generic PETG @Prusa MK3.5.json" @@ -1860,37 +1728,13 @@ "name": "Generic PETG @Prusa MK3.5 0.8", "sub_path": "filament/Generic PETG @Prusa MK3.5 0.8.json" }, - { - "name": "Generic PETG @Prusa MK4", - "sub_path": "filament/Generic PETG @Prusa MK4.json" - }, { "name": "Generic PETG @Prusa MK4S", "sub_path": "filament/Generic PETG @Prusa MK4S.json" }, { - "name": "Generic PETG @Prusa XL", - "sub_path": "filament/Generic PETG @Prusa XL.json" - }, - { - "name": "Generic PETG @Prusa XL 5T", - "sub_path": "filament/Generic PETG @Prusa XL 5T.json" - }, - { - "name": "Generic PETG HF @Prusa base", - "sub_path": "filament/Generic PETG HF @Prusa base.json" - }, - { - "name": "Generic PETG HF @Prusa MINIIS", - "sub_path": "filament/Generic PETG HF @Prusa MINIIS.json" - }, - { - "name": "Generic PETG HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PETG HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.8.json" + "name": "Generic PETG @Prusa base", + "sub_path": "filament/Generic PETG @Prusa base.json" }, { "name": "Generic PETG HF @Prusa MK3.5", @@ -1904,6 +1748,10 @@ "name": "Generic PETG HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PETG HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PETG HF @Prusa base", + "sub_path": "filament/Generic PETG HF @Prusa base.json" + }, { "name": "Prusament PETG @CORE One", "sub_path": "filament/Prusament PETG @CORE One.json" @@ -1912,42 +1760,10 @@ "name": "Prusament PETG @base", "sub_path": "filament/Prusament PETG @base.json" }, - { - "name": "Prusament PETG @XL", - "sub_path": "filament/Prusament PETG @XL.json" - }, - { - "name": "Prusament PETG @XL 5T", - "sub_path": "filament/Prusament PETG @XL 5T.json" - }, - { - "name": "Generic PLA @Prusa base", - "sub_path": "filament/Generic PLA @Prusa base.json" - }, - { - "name": "Generic PLA @Prusa", - "sub_path": "filament/Generic PLA @Prusa.json" - }, { "name": "Generic PLA @Prusa CORE One", "sub_path": "filament/Generic PLA @Prusa CORE One.json" }, - { - "name": "Generic PLA @Prusa MINIIS", - "sub_path": "filament/Generic PLA @Prusa MINIIS.json" - }, - { - "name": "Generic PLA @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PLA @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PLA @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PLA @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PLA @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PLA @Prusa MINIIS 0.8.json" - }, { "name": "Generic PLA @Prusa MK3.5", "sub_path": "filament/Generic PLA @Prusa MK3.5.json" @@ -1964,37 +1780,13 @@ "name": "Generic PLA @Prusa MK3.5 0.8", "sub_path": "filament/Generic PLA @Prusa MK3.5 0.8.json" }, - { - "name": "Generic PLA @Prusa MK4", - "sub_path": "filament/Generic PLA @Prusa MK4.json" - }, { "name": "Generic PLA @Prusa MK4S", "sub_path": "filament/Generic PLA @Prusa MK4S.json" }, { - "name": "Generic PLA @Prusa XL", - "sub_path": "filament/Generic PLA @Prusa XL.json" - }, - { - "name": "Generic PLA @Prusa XL 5T", - "sub_path": "filament/Generic PLA @Prusa XL 5T.json" - }, - { - "name": "Generic PLA HF @Prusa base", - "sub_path": "filament/Generic PLA HF @Prusa base.json" - }, - { - "name": "Generic PLA HF @Prusa MINIIS", - "sub_path": "filament/Generic PLA HF @Prusa MINIIS.json" - }, - { - "name": "Generic PLA HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PLA HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.8.json" + "name": "Generic PLA @Prusa base", + "sub_path": "filament/Generic PLA @Prusa base.json" }, { "name": "Generic PLA HF @Prusa MK3.5", @@ -2008,34 +1800,14 @@ "name": "Generic PLA HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PLA HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PLA HF @Prusa base", + "sub_path": "filament/Generic PLA HF @Prusa base.json" + }, { "name": "Generic PLA Silk @Prusa CORE One", "sub_path": "filament/Generic PLA Silk @Prusa CORE One.json" }, - { - "name": "Generic PLA-CF @Prusa base", - "sub_path": "filament/Generic PLA-CF @Prusa base.json" - }, - { - "name": "Generic PLA-CF @Prusa", - "sub_path": "filament/Generic PLA-CF @Prusa.json" - }, - { - "name": "Generic PLA-CF @Prusa MINIIS", - "sub_path": "filament/Generic PLA-CF @Prusa MINIIS.json" - }, - { - "name": "Generic PLA-CF @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PLA-CF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PLA-CF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.8.json" - }, { "name": "Generic PLA-CF @Prusa MK3.5", "sub_path": "filament/Generic PLA-CF @Prusa MK3.5.json" @@ -2052,6 +1824,10 @@ "name": "Generic PLA-CF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PLA-CF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PLA-CF @Prusa base", + "sub_path": "filament/Generic PLA-CF @Prusa base.json" + }, { "name": "Prusament PLA @CORE One", "sub_path": "filament/Prusament PLA @CORE One.json" @@ -2060,14 +1836,6 @@ "name": "Prusament PLA @base", "sub_path": "filament/Prusament PLA @base.json" }, - { - "name": "Prusament PLA @XL", - "sub_path": "filament/Prusament PLA @XL.json" - }, - { - "name": "Prusament PLA @XL 5T", - "sub_path": "filament/Prusament PLA @XL 5T.json" - }, { "name": "Prusament rPLA @CORE One", "sub_path": "filament/Prusament rPLA @CORE One.json" @@ -2076,38 +1844,6 @@ "name": "Prusament rPLA @base", "sub_path": "filament/Prusament rPLA @base.json" }, - { - "name": "Prusament rPLA @XL", - "sub_path": "filament/Prusament rPLA @XL.json" - }, - { - "name": "Prusament rPLA @XL 5T", - "sub_path": "filament/Prusament rPLA @XL 5T.json" - }, - { - "name": "Generic PVA @Prusa base", - "sub_path": "filament/Generic PVA @Prusa base.json" - }, - { - "name": "Generic PVA @Prusa", - "sub_path": "filament/Generic PVA @Prusa.json" - }, - { - "name": "Generic PVA @Prusa MINIIS", - "sub_path": "filament/Generic PVA @Prusa MINIIS.json" - }, - { - "name": "Generic PVA @Prusa MINIIS 0.25", - "sub_path": "filament/Generic PVA @Prusa MINIIS 0.25.json" - }, - { - "name": "Generic PVA @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PVA @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PVA @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PVA @Prusa MINIIS 0.8.json" - }, { "name": "Generic PVA @Prusa MK3.5", "sub_path": "filament/Generic PVA @Prusa MK3.5.json" @@ -2125,20 +1861,8 @@ "sub_path": "filament/Generic PVA @Prusa MK3.5 0.8.json" }, { - "name": "Generic PVA HF @Prusa base", - "sub_path": "filament/Generic PVA HF @Prusa base.json" - }, - { - "name": "Generic PVA HF @Prusa MINIIS", - "sub_path": "filament/Generic PVA HF @Prusa MINIIS.json" - }, - { - "name": "Generic PVA HF @Prusa MINIIS 0.6", - "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.6.json" - }, - { - "name": "Generic PVA HF @Prusa MINIIS 0.8", - "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.8.json" + "name": "Generic PVA @Prusa base", + "sub_path": "filament/Generic PVA @Prusa base.json" }, { "name": "Generic PVA HF @Prusa MK3.5", @@ -2152,6 +1876,10 @@ "name": "Generic PVA HF @Prusa MK3.5 0.8", "sub_path": "filament/Generic PVA HF @Prusa MK3.5 0.8.json" }, + { + "name": "Generic PVA HF @Prusa base", + "sub_path": "filament/Generic PVA HF @Prusa base.json" + }, { "name": "Prusament PVB @CORE One", "sub_path": "filament/Prusament PVB @CORE One.json" @@ -2164,42 +1892,26 @@ "name": "Prusament PVB @XL 5T", "sub_path": "filament/Prusament PVB @XL 5T.json" }, - { - "name": "Generic TPU @Prusa base", - "sub_path": "filament/Generic TPU @Prusa base.json" - }, - { - "name": "Generic TPU @Prusa", - "sub_path": "filament/Generic TPU @Prusa.json" - }, - { - "name": "Generic TPU @Prusa MINIIS", - "sub_path": "filament/Generic TPU @Prusa MINIIS.json" - }, { "name": "Generic TPU @Prusa MK3.5", "sub_path": "filament/Generic TPU @Prusa MK3.5.json" }, - { - "name": "Generic TPU @Prusa MK4", - "sub_path": "filament/Generic TPU @Prusa MK4.json" - }, { "name": "Generic TPU @Prusa MK4S", "sub_path": "filament/Generic TPU @Prusa MK4S.json" }, { - "name": "Generic TPU HF @Prusa base", - "sub_path": "filament/Generic TPU HF @Prusa base.json" - }, - { - "name": "Generic TPU HF @Prusa MINIIS", - "sub_path": "filament/Generic TPU HF @Prusa MINIIS.json" + "name": "Generic TPU @Prusa base", + "sub_path": "filament/Generic TPU @Prusa base.json" }, { "name": "Generic TPU HF @Prusa MK3.5", "sub_path": "filament/Generic TPU HF @Prusa MK3.5.json" }, + { + "name": "Generic TPU HF @Prusa base", + "sub_path": "filament/Generic TPU HF @Prusa base.json" + }, { "name": "Generic ABS @Prusa CORE One 0.6", "sub_path": "filament/Generic ABS @Prusa CORE One 0.6.json" @@ -2236,6 +1948,50 @@ "name": "Generic ABS @Prusa MK4S HF0.4", "sub_path": "filament/Generic ABS @Prusa MK4S HF0.4.json" }, + { + "name": "Generic ABS @Prusa", + "sub_path": "filament/Generic ABS @Prusa.json" + }, + { + "name": "Generic ABS @Prusa MINIIS", + "sub_path": "filament/Generic ABS @Prusa MINIIS.json" + }, + { + "name": "Generic ABS @Prusa MINIIS 0.25", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic ABS @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic ABS @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ABS @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic ABS @Prusa MK4", + "sub_path": "filament/Generic ABS @Prusa MK4.json" + }, + { + "name": "Generic ABS @Prusa XL", + "sub_path": "filament/Generic ABS @Prusa XL.json" + }, + { + "name": "Generic ABS @Prusa XL 5T", + "sub_path": "filament/Generic ABS @Prusa XL 5T.json" + }, + { + "name": "Generic ABS HF @Prusa MINIIS", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS.json" + }, + { + "name": "Generic ABS HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic ABS HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ABS HF @Prusa MINIIS 0.8.json" + }, { "name": "Generic ASA @Prusa CORE One 0.6", "sub_path": "filament/Generic ASA @Prusa CORE One 0.6.json" @@ -2272,6 +2028,18 @@ "name": "Generic ASA @Prusa MK4S HF0.4", "sub_path": "filament/Generic ASA @Prusa MK4S HF0.4.json" }, + { + "name": "Generic ASA HF @Prusa MINIIS", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS.json" + }, + { + "name": "Generic ASA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic ASA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic ASA HF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament ASA @CORE One 0.6", "sub_path": "filament/Prusament ASA @CORE One 0.6.json" @@ -2304,6 +2072,46 @@ "name": "Generic TPU @Prusa CORE One 0.8", "sub_path": "filament/Generic TPU @Prusa CORE One 0.8.json" }, + { + "name": "Generic PA @Prusa", + "sub_path": "filament/Generic PA @Prusa.json" + }, + { + "name": "Generic PA @Prusa MINIIS", + "sub_path": "filament/Generic PA @Prusa MINIIS.json" + }, + { + "name": "Generic PA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PA @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic PA-CF @Prusa", + "sub_path": "filament/Generic PA-CF @Prusa.json" + }, + { + "name": "Generic PA-CF @Prusa MINIIS", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS.json" + }, + { + "name": "Generic PA-CF @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PA-CF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PA-CF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PA-CF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament PA-CF @CORE One 0.6", "sub_path": "filament/Prusament PA-CF @CORE One 0.6.json" @@ -2312,6 +2120,18 @@ "name": "Prusament PA-CF @CORE One 0.8", "sub_path": "filament/Prusament PA-CF @CORE One 0.8.json" }, + { + "name": "Generic PC HF @Prusa MINIIS", + "sub_path": "filament/Generic PC HF @Prusa MINIIS.json" + }, + { + "name": "Generic PC HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PC HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PC HF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament PC Blend @CORE One 0.6", "sub_path": "filament/Prusament PC Blend @CORE One 0.6.json" @@ -2380,6 +2200,50 @@ "name": "Generic PETG @Prusa MK4S HF0.4", "sub_path": "filament/Generic PETG @Prusa MK4S HF0.4.json" }, + { + "name": "Generic PETG @Prusa", + "sub_path": "filament/Generic PETG @Prusa.json" + }, + { + "name": "Generic PETG @Prusa MINIIS", + "sub_path": "filament/Generic PETG @Prusa MINIIS.json" + }, + { + "name": "Generic PETG @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PETG @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PETG @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PETG @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic PETG @Prusa MK4", + "sub_path": "filament/Generic PETG @Prusa MK4.json" + }, + { + "name": "Generic PETG @Prusa XL", + "sub_path": "filament/Generic PETG @Prusa XL.json" + }, + { + "name": "Generic PETG @Prusa XL 5T", + "sub_path": "filament/Generic PETG @Prusa XL 5T.json" + }, + { + "name": "Generic PETG HF @Prusa MINIIS", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS.json" + }, + { + "name": "Generic PETG HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PETG HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PETG HF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament PETG @CORE One 0.6", "sub_path": "filament/Prusament PETG @CORE One 0.6.json" @@ -2404,6 +2268,14 @@ "name": "Prusament PETG @CORE One HF 0.8", "sub_path": "filament/Prusament PETG @CORE One HF 0.8.json" }, + { + "name": "Prusament PETG @XL", + "sub_path": "filament/Prusament PETG @XL.json" + }, + { + "name": "Prusament PETG @XL 5T", + "sub_path": "filament/Prusament PETG @XL 5T.json" + }, { "name": "Generic PLA @Prusa CORE One 0.6", "sub_path": "filament/Generic PLA @Prusa CORE One 0.6.json" @@ -2444,6 +2316,50 @@ "name": "Generic PLA Silk @Prusa MK4S", "sub_path": "filament/Generic PLA Silk @Prusa MK4S.json" }, + { + "name": "Generic PLA @Prusa", + "sub_path": "filament/Generic PLA @Prusa.json" + }, + { + "name": "Generic PLA @Prusa MINIIS", + "sub_path": "filament/Generic PLA @Prusa MINIIS.json" + }, + { + "name": "Generic PLA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PLA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PLA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic PLA @Prusa MK4", + "sub_path": "filament/Generic PLA @Prusa MK4.json" + }, + { + "name": "Generic PLA @Prusa XL", + "sub_path": "filament/Generic PLA @Prusa XL.json" + }, + { + "name": "Generic PLA @Prusa XL 5T", + "sub_path": "filament/Generic PLA @Prusa XL 5T.json" + }, + { + "name": "Generic PLA HF @Prusa MINIIS", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS.json" + }, + { + "name": "Generic PLA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PLA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA HF @Prusa MINIIS 0.8.json" + }, { "name": "Generic PLA Silk @Prusa CORE One 0.6", "sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.6.json" @@ -2452,6 +2368,26 @@ "name": "Generic PLA Silk @Prusa CORE One 0.8", "sub_path": "filament/Generic PLA Silk @Prusa CORE One 0.8.json" }, + { + "name": "Generic PLA-CF @Prusa", + "sub_path": "filament/Generic PLA-CF @Prusa.json" + }, + { + "name": "Generic PLA-CF @Prusa MINIIS", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS.json" + }, + { + "name": "Generic PLA-CF @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PLA-CF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PLA-CF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PLA-CF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament PLA @CORE One 0.6", "sub_path": "filament/Prusament PLA @CORE One 0.6.json" @@ -2476,6 +2412,14 @@ "name": "Prusament PLA @CORE One HF 0.8", "sub_path": "filament/Prusament PLA @CORE One HF 0.8.json" }, + { + "name": "Prusament PLA @XL", + "sub_path": "filament/Prusament PLA @XL.json" + }, + { + "name": "Prusament PLA @XL 5T", + "sub_path": "filament/Prusament PLA @XL 5T.json" + }, { "name": "Prusament rPLA @CORE One 0.6", "sub_path": "filament/Prusament rPLA @CORE One 0.6.json" @@ -2484,6 +2428,46 @@ "name": "Prusament rPLA @CORE One 0.8", "sub_path": "filament/Prusament rPLA @CORE One 0.8.json" }, + { + "name": "Prusament rPLA @XL", + "sub_path": "filament/Prusament rPLA @XL.json" + }, + { + "name": "Prusament rPLA @XL 5T", + "sub_path": "filament/Prusament rPLA @XL 5T.json" + }, + { + "name": "Generic PVA @Prusa", + "sub_path": "filament/Generic PVA @Prusa.json" + }, + { + "name": "Generic PVA @Prusa MINIIS", + "sub_path": "filament/Generic PVA @Prusa MINIIS.json" + }, + { + "name": "Generic PVA @Prusa MINIIS 0.25", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.25.json" + }, + { + "name": "Generic PVA @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PVA @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PVA @Prusa MINIIS 0.8.json" + }, + { + "name": "Generic PVA HF @Prusa MINIIS", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS.json" + }, + { + "name": "Generic PVA HF @Prusa MINIIS 0.6", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.6.json" + }, + { + "name": "Generic PVA HF @Prusa MINIIS 0.8", + "sub_path": "filament/Generic PVA HF @Prusa MINIIS 0.8.json" + }, { "name": "Prusament PVB @CORE One 0.6", "sub_path": "filament/Prusament PVB @CORE One 0.6.json" @@ -2500,6 +2484,22 @@ "name": "Generic TPU @Prusa MK4S 0.8", "sub_path": "filament/Generic TPU @Prusa MK4S 0.8.json" }, + { + "name": "Generic TPU @Prusa", + "sub_path": "filament/Generic TPU @Prusa.json" + }, + { + "name": "Generic TPU @Prusa MINIIS", + "sub_path": "filament/Generic TPU @Prusa MINIIS.json" + }, + { + "name": "Generic TPU @Prusa MK4", + "sub_path": "filament/Generic TPU @Prusa MK4.json" + }, + { + "name": "Generic TPU HF @Prusa MINIIS", + "sub_path": "filament/Generic TPU HF @Prusa MINIIS.json" + }, { "name": "Generic ABS @Prusa MK4S HF0.5", "sub_path": "filament/Generic ABS @Prusa MK4S HF0.5.json" diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index f49413601a..9a67c47cd0 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -44,13 +44,13 @@ "name": "Qidi X-Plus 4", "sub_path": "machine/Qidi X-Plus 4.json" }, - { - "name": "Qidi X-Smart 3", - "sub_path": "machine/Qidi X-Smart 3.json" - }, { "name": "Qidi X-Plus 5", "sub_path": "machine/Qidi X-Plus 5.json" + }, + { + "name": "Qidi X-Smart 3", + "sub_path": "machine/Qidi X-Smart 3.json" } ], "process_list": [ @@ -78,42 +78,90 @@ "name": "0.08mm Extra Fine @X-Max 4 0.2 nozzle", "sub_path": "process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json" }, + { + "name": "0.08mm High Quality @X-Plus 5", + "sub_path": "process/0.08mm High Quality @X-Plus 5.json" + }, + { + "name": "0.08mm High Quality @X-Plus 5 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @X-Plus 5 0.2 nozzle.json" + }, { "name": "0.10mm Standard @X-Max 4 0.2 nozzle", "sub_path": "process/0.10mm Standard @X-Max 4 0.2 nozzle.json" }, + { + "name": "0.10mm Standard @X-Plus 5 0.2 nozzle", + "sub_path": "process/0.10mm Standard @X-Plus 5 0.2 nozzle.json" + }, { "name": "0.12mm Balanced Quality @X-Max 4 0.2 nozzle", "sub_path": "process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json" }, + { + "name": "0.12mm Balanced Quality @X-Plus 5 0.2 nozzle", + "sub_path": "process/0.12mm Balanced Quality @X-Plus 5 0.2 nozzle.json" + }, { "name": "0.12mm Fine @X-Max 4", "sub_path": "process/0.12mm Fine @X-Max 4.json" }, + { + "name": "0.12mm High Quality @X-Plus 5", + "sub_path": "process/0.12mm High Quality @X-Plus 5.json" + }, { "name": "0.16mm Balanced Quality @X-Max 4", "sub_path": "process/0.16mm Balanced Quality @X-Max 4.json" }, + { + "name": "0.16mm High Quality @X-Plus 5", + "sub_path": "process/0.16mm High Quality @X-Plus 5.json" + }, { "name": "0.16mm Standard @X-Max 4", "sub_path": "process/0.16mm Standard @X-Max 4.json" }, + { + "name": "0.16mm Standard @X-Plus 5", + "sub_path": "process/0.16mm Standard @X-Plus 5.json" + }, { "name": "0.18mm Balanced Quality @X-Max 4 0.6 nozzle", "sub_path": "process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json" }, + { + "name": "0.18mm Balanced Quality @X-Plus 5 0.6 nozzle", + "sub_path": "process/0.18mm Balanced Quality @X-Plus 5 0.6 nozzle.json" + }, { "name": "0.20mm Balanced Strength @X-Max 4", "sub_path": "process/0.20mm Balanced Strength @X-Max 4.json" }, + { + "name": "0.20mm High Quality @X-Plus 5", + "sub_path": "process/0.20mm High Quality @X-Plus 5.json" + }, { "name": "0.20mm Standard @X-Max 4", "sub_path": "process/0.20mm Standard @X-Max 4.json" }, + { + "name": "0.20mm Standard @X-Plus 5", + "sub_path": "process/0.20mm Standard @X-Plus 5.json" + }, { "name": "0.24mm Balanced Quality @X-Max 4 0.8 nozzle", "sub_path": "process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json" }, + { + "name": "0.24mm Balanced Quality @X-Plus 5 0.6 nozzle", + "sub_path": "process/0.24mm Balanced Quality @X-Plus 5 0.6 nozzle.json" + }, + { + "name": "0.24mm Balanced Quality @X-Plus 5 0.8 nozzle", + "sub_path": "process/0.24mm Balanced Quality @X-Plus 5 0.8 nozzle.json" + }, { "name": "0.24mm Balanced Strength @X-Max 4 0.6 nozzle", "sub_path": "process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json" @@ -122,10 +170,22 @@ "name": "0.24mm Standard @X-Max 4", "sub_path": "process/0.24mm Standard @X-Max 4.json" }, + { + "name": "0.24mm Standard @X-Plus 5", + "sub_path": "process/0.24mm Standard @X-Plus 5.json" + }, { "name": "0.30mm Standard @X-Max 4 0.6 nozzle", "sub_path": "process/0.30mm Standard @X-Max 4 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @X-Plus 5 0.6 nozzle", + "sub_path": "process/0.30mm Standard @X-Plus 5 0.6 nozzle.json" + }, + { + "name": "0.32mm Balanced Quality @X-Plus 5 0.8 nozzle", + "sub_path": "process/0.32mm Balanced Quality @X-Plus 5 0.8 nozzle.json" + }, { "name": "0.32mm Balanced Strength @X-Max 4 0.8 nozzle", "sub_path": "process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json" @@ -134,6 +194,10 @@ "name": "0.40mm Standard @X-Max 4 0.8 nozzle", "sub_path": "process/0.40mm Standard @X-Max 4 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @X-Plus 5 0.8 nozzle", + "sub_path": "process/0.40mm Standard @X-Plus 5 0.8 nozzle.json" + }, { "name": "0.12mm Fine @Qidi XCFPro", "sub_path": "process/0.12mm Fine @Qidi XCFPro.json" @@ -889,70 +953,6 @@ { "name": "0.56mm Standard @Qidi XSmart3 0.8 nozzle", "sub_path": "process/0.56mm Standard @Qidi XSmart3 0.8 nozzle.json" - }, - { - "name": "0.08mm High Quality @X-Plus 5", - "sub_path": "process/0.08mm High Quality @X-Plus 5.json" - }, - { - "name": "0.12mm High Quality @X-Plus 5", - "sub_path": "process/0.12mm High Quality @X-Plus 5.json" - }, - { - "name": "0.16mm High Quality @X-Plus 5", - "sub_path": "process/0.16mm High Quality @X-Plus 5.json" - }, - { - "name": "0.16mm Standard @X-Plus 5", - "sub_path": "process/0.16mm Standard @X-Plus 5.json" - }, - { - "name": "0.20mm High Quality @X-Plus 5", - "sub_path": "process/0.20mm High Quality @X-Plus 5.json" - }, - { - "name": "0.20mm Standard @X-Plus 5", - "sub_path": "process/0.20mm Standard @X-Plus 5.json" - }, - { - "name": "0.24mm Standard @X-Plus 5", - "sub_path": "process/0.24mm Standard @X-Plus 5.json" - }, - { - "name": "0.08mm High Quality @X-Plus 5 0.2 nozzle", - "sub_path": "process/0.08mm High Quality @X-Plus 5 0.2 nozzle.json" - }, - { - "name": "0.10mm Standard @X-Plus 5 0.2 nozzle", - "sub_path": "process/0.10mm Standard @X-Plus 5 0.2 nozzle.json" - }, - { - "name": "0.12mm Balanced Quality @X-Plus 5 0.2 nozzle", - "sub_path": "process/0.12mm Balanced Quality @X-Plus 5 0.2 nozzle.json" - }, - { - "name": "0.18mm Balanced Quality @X-Plus 5 0.6 nozzle", - "sub_path": "process/0.18mm Balanced Quality @X-Plus 5 0.6 nozzle.json" - }, - { - "name": "0.24mm Balanced Quality @X-Plus 5 0.6 nozzle", - "sub_path": "process/0.24mm Balanced Quality @X-Plus 5 0.6 nozzle.json" - }, - { - "name": "0.30mm Standard @X-Plus 5 0.6 nozzle", - "sub_path": "process/0.30mm Standard @X-Plus 5 0.6 nozzle.json" - }, - { - "name": "0.24mm Balanced Quality @X-Plus 5 0.8 nozzle", - "sub_path": "process/0.24mm Balanced Quality @X-Plus 5 0.8 nozzle.json" - }, - { - "name": "0.32mm Balanced Quality @X-Plus 5 0.8 nozzle", - "sub_path": "process/0.32mm Balanced Quality @X-Plus 5 0.8 nozzle.json" - }, - { - "name": "0.40mm Standard @X-Plus 5 0.8 nozzle", - "sub_path": "process/0.40mm Standard @X-Plus 5 0.8 nozzle.json" } ], "filament_list": [ @@ -968,6 +968,10 @@ "name": "fdm_filament_x4_common", "sub_path": "filament/X4/fdm_filament_x4_common.json" }, + { + "name": "fdm_filament_x5_common", + "sub_path": "filament/X5/fdm_filament_x5_common.json" + }, { "name": "QIDI ASA-CF", "sub_path": "filament/QIDI ASA-CF.json" @@ -1652,6 +1656,230 @@ "name": "QIDI WOOD Rapido@X-Max 4-Series", "sub_path": "filament/X4/QIDI WOOD Rapido @X-Max 4.json" }, + { + "name": "Bambu ABS@X-Plus 5-Series", + "sub_path": "filament/X5/Bambu ABS @X-Plus 5.json" + }, + { + "name": "Bambu PETG@X-Plus 5-Series", + "sub_path": "filament/X5/Bambu PETG @X-Plus 5.json" + }, + { + "name": "Bambu PLA@X-Plus 5-Series", + "sub_path": "filament/X5/Bambu PLA @X-Plus 5.json" + }, + { + "name": "Generic ABS@X-Plus 5-Series", + "sub_path": "filament/X5/Generic ABS @X-Plus 5.json" + }, + { + "name": "Generic PC@X-Plus 5-Series", + "sub_path": "filament/X5/Generic PC @X-Plus 5.json" + }, + { + "name": "Generic PETG@X-Plus 5-Series", + "sub_path": "filament/X5/Generic PETG @X-Plus 5.json" + }, + { + "name": "Generic PLA Silk@X-Plus 5-Series", + "sub_path": "filament/X5/Generic PLA Silk @X-Plus 5.json" + }, + { + "name": "Generic PLA+@X-Plus 5-Series", + "sub_path": "filament/X5/Generic PLA+ @X-Plus 5.json" + }, + { + "name": "Generic PLA@X-Plus 5-Series", + "sub_path": "filament/X5/Generic PLA @X-Plus 5.json" + }, + { + "name": "Generic TPU 95A@X-Plus 5-Series", + "sub_path": "filament/X5/Generic TPU 95A @X-Plus 5.json" + }, + { + "name": "HATCHBOX ABS@X-Plus 5-Series", + "sub_path": "filament/X5/HATCHBOX ABS @X-Plus 5.json" + }, + { + "name": "HATCHBOX PETG@X-Plus 5-Series", + "sub_path": "filament/X5/HATCHBOX PETG @X-Plus 5.json" + }, + { + "name": "HATCHBOX PLA@X-Plus 5-Series", + "sub_path": "filament/X5/HATCHBOX PLA @X-Plus 5.json" + }, + { + "name": "Overture ABS@X-Plus 5-Series", + "sub_path": "filament/X5/Overture ABS @X-Plus 5.json" + }, + { + "name": "Overture PLA@X-Plus 5-Series", + "sub_path": "filament/X5/Overture PLA @X-Plus 5.json" + }, + { + "name": "PolyLite ABS@X-Plus 5-Series", + "sub_path": "filament/X5/PolyLite ABS @X-Plus 5.json" + }, + { + "name": "PolyLite PLA@X-Plus 5-Series", + "sub_path": "filament/X5/PolyLite PLA @X-Plus 5.json" + }, + { + "name": "Polymaker PLA-HT@X-Plus 5-Series", + "sub_path": "filament/X5/Polymaker PLA-HT @X-Plus 5.json" + }, + { + "name": "QIDI ABS Odorless@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ABS Odorless @X-Plus 5.json" + }, + { + "name": "QIDI ABS Rapido Metal@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json" + }, + { + "name": "QIDI ABS Rapido@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ABS Rapido @X-Plus 5.json" + }, + { + "name": "QIDI ABS-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ABS-GF @X-Plus 5.json" + }, + { + "name": "QIDI ASA-Aero@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ASA-Aero @X-Plus 5.json" + }, + { + "name": "QIDI ASA-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ASA-CF @X-Plus 5.json" + }, + { + "name": "QIDI ASA@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI ASA @X-Plus 5.json" + }, + { + "name": "QIDI PA12-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PA12-CF @X-Plus 5.json" + }, + { + "name": "QIDI PA6-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PA6-CF @X-Plus 5.json" + }, + { + "name": "QIDI PAHT-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PAHT-CF @X-Plus 5.json" + }, + { + "name": "QIDI PAHT-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PAHT-GF @X-Plus 5.json" + }, + { + "name": "QIDI PC/ABS-FR@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PC-ABS-FR @X-Plus 5.json" + }, + { + "name": "QIDI PEBA 95A@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PEBA 95A @X-Plus 5.json" + }, + { + "name": "QIDI PET-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PET-CF @X-Plus 5.json" + }, + { + "name": "QIDI PET-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PET-GF @X-Plus 5.json" + }, + { + "name": "QIDI PETG Basic@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG Basic @X-Plus 5.json" + }, + { + "name": "QIDI PETG Rapido@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG Rapido @X-Plus 5.json" + }, + { + "name": "QIDI PETG Tough@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG Tough @X-Plus 5.json" + }, + { + "name": "QIDI PETG Translucent@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG Translucent @X-Plus 5.json" + }, + { + "name": "QIDI PETG-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG-CF @X-Plus 5.json" + }, + { + "name": "QIDI PETG-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PETG-GF @X-Plus 5.json" + }, + { + "name": "QIDI PLA Basic@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Basic @X-Plus 5.json" + }, + { + "name": "QIDI PLA Matte Basic@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Matte Basic @X-Plus 5.json" + }, + { + "name": "QIDI PLA Rapido Matte@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json" + }, + { + "name": "QIDI PLA Rapido Metal@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json" + }, + { + "name": "QIDI PLA Rapido@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Rapido @X-Plus 5.json" + }, + { + "name": "QIDI PLA Silk@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA Silk @X-Plus 5.json" + }, + { + "name": "QIDI PLA-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PLA-CF @X-Plus 5.json" + }, + { + "name": "QIDI PPS-CF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PPS-CF @X-Plus 5.json" + }, + { + "name": "QIDI PPS-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI PPS-GF @X-Plus 5.json" + }, + { + "name": "QIDI Support For PAHT@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI Support For PAHT @X-Plus 5.json" + }, + { + "name": "QIDI Support For PET/PA@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI Support For PET-PA @X-Plus 5.json" + }, + { + "name": "QIDI TPU 95A-HF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI TPU 95A-HF @X-Plus 5.json" + }, + { + "name": "QIDI TPU-Aero@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI TPU-Aero @X-Plus 5.json" + }, + { + "name": "QIDI TPU-GF@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI TPU-GF @X-Plus 5.json" + }, + { + "name": "QIDI UltraPA-CF25@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json" + }, + { + "name": "QIDI UltraPA@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI UltraPA @X-Plus 5.json" + }, + { + "name": "QIDI WOOD Rapido@X-Plus 5-Series", + "sub_path": "filament/X5/QIDI WOOD Rapido @X-Plus 5.json" + }, { "name": "QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json" @@ -1716,6 +1944,10 @@ "name": "Bambu ABS", "sub_path": "filament/Bambu ABS.json" }, + { + "name": "Generic ABS @Qidi", + "sub_path": "filament/Generic ABS @Qidi.json" + }, { "name": "HATCHBOX ABS @Qidi", "sub_path": "filament/HATCHBOX ABS @Qidi.json" @@ -1752,14 +1984,14 @@ "name": "QIDI ABS-GF25", "sub_path": "filament/QIDI ABS-GF25.json" }, - { - "name": "Generic ABS @Qidi", - "sub_path": "filament/Generic ABS @Qidi.json" - }, { "name": "Qidi PC-ABS-FR", "sub_path": "filament/Qidi PC-ABS-FR.json" }, + { + "name": "Generic ASA @Qidi", + "sub_path": "filament/Generic ASA @Qidi.json" + }, { "name": "QIDI ASA", "sub_path": "filament/QIDI ASA.json" @@ -1769,8 +2001,12 @@ "sub_path": "filament/Qidi ASA-Aero.json" }, { - "name": "Generic ASA @Qidi", - "sub_path": "filament/Generic ASA @Qidi.json" + "name": "Generic PA @Qidi", + "sub_path": "filament/Generic PA @Qidi.json" + }, + { + "name": "Generic PA-CF @Qidi", + "sub_path": "filament/Generic PA-CF @Qidi.json" }, { "name": "QIDI PA-Ultra", @@ -1816,14 +2052,6 @@ "name": "QIDI UltraPA-CF25", "sub_path": "filament/QIDI UltraPA-CF25.json" }, - { - "name": "Generic PA @Qidi", - "sub_path": "filament/Generic PA @Qidi.json" - }, - { - "name": "Generic PA-CF @Qidi", - "sub_path": "filament/Generic PA-CF @Qidi.json" - }, { "name": "Generic PC @Qidi", "sub_path": "filament/Generic PC @Qidi.json" @@ -1832,6 +2060,14 @@ "name": "Bambu PETG", "sub_path": "filament/Bambu PETG.json" }, + { + "name": "Generic PETG @Qidi", + "sub_path": "filament/Generic PETG @Qidi.json" + }, + { + "name": "Generic PETG-CF @Qidi", + "sub_path": "filament/Generic PETG-CF @Qidi.json" + }, { "name": "HATCHBOX PETG @Qidi", "sub_path": "filament/HATCHBOX PETG @Qidi.json" @@ -1860,14 +2096,6 @@ "name": "QIDI PETG-GF", "sub_path": "filament/QIDI PETG-GF.json" }, - { - "name": "Generic PETG @Qidi", - "sub_path": "filament/Generic PETG @Qidi.json" - }, - { - "name": "Generic PETG-CF @Qidi", - "sub_path": "filament/Generic PETG-CF @Qidi.json" - }, { "name": "Tinmorry PETG-ECO", "sub_path": "filament/Tinmorry PETG-ECO.json" @@ -1876,6 +2104,22 @@ "name": "Bambu PLA", "sub_path": "filament/Bambu PLA.json" }, + { + "name": "Generic PLA @Qidi", + "sub_path": "filament/Generic PLA @Qidi.json" + }, + { + "name": "Generic PLA Silk @Qidi", + "sub_path": "filament/Generic PLA Silk @Qidi.json" + }, + { + "name": "Generic PLA+ @Qidi", + "sub_path": "filament/Generic PLA+ @Qidi.json" + }, + { + "name": "Generic PLA-CF @Qidi", + "sub_path": "filament/Generic PLA-CF @Qidi.json" + }, { "name": "HATCHBOX PLA @Qidi", "sub_path": "filament/HATCHBOX PLA @Qidi.json" @@ -1916,22 +2160,6 @@ "name": "QIDI WOOD Rapido", "sub_path": "filament/QIDI WOOD Rapido.json" }, - { - "name": "Generic PLA @Qidi", - "sub_path": "filament/Generic PLA @Qidi.json" - }, - { - "name": "Generic PLA Silk @Qidi", - "sub_path": "filament/Generic PLA Silk @Qidi.json" - }, - { - "name": "Generic PLA+ @Qidi", - "sub_path": "filament/Generic PLA+ @Qidi.json" - }, - { - "name": "Generic PLA-CF @Qidi", - "sub_path": "filament/Generic PLA-CF @Qidi.json" - }, { "name": "Qidi PLA-CF", "sub_path": "filament/Qidi PLA-CF.json" @@ -1940,6 +2168,14 @@ "name": "Generic PVA @Qidi", "sub_path": "filament/Generic PVA @Qidi.json" }, + { + "name": "Generic TPU 95A @Qidi", + "sub_path": "filament/Generic TPU 95A @Qidi.json" + }, + { + "name": "Generic TPU @Qidi", + "sub_path": "filament/Generic TPU @Qidi.json" + }, { "name": "QIDI PEBA 95A", "sub_path": "filament/QIDI PEBA 95A.json" @@ -1952,14 +2188,6 @@ "name": "QIDI TPU-GF", "sub_path": "filament/QIDI TPU-GF.json" }, - { - "name": "Generic TPU @Qidi", - "sub_path": "filament/Generic TPU @Qidi.json" - }, - { - "name": "Generic TPU 95A @Qidi", - "sub_path": "filament/Generic TPU 95A @Qidi.json" - }, { "name": "Qidi TPU 95A-HF", "sub_path": "filament/Qidi TPU 95A-HF.json" @@ -4172,6 +4400,770 @@ "name": "QIDI WOOD Rapido @Qidi X-Max 4 0.8 nozzle", "sub_path": "filament/X4/QIDI WOOD Rapido @Qidi X-Max 4 0.8 nozzle.json" }, + { + "name": "Bambu ABS @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic PC @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Generic PC @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic PC @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic PC @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic PLA Silk @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic PLA Silk @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Overture ABS @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Overture ABS @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Overture ABS @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Overture ABS @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Overture PLA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Overture PLA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Overture PLA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Overture PLA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-Aero @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ASA-Aero @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PA6-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PA6-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PA6-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PEBA 95A @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PEBA 95A @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.2 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Silk @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA Silk @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Silk @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA Silk @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI TPU-Aero @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI TPU-Aero @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-Aero @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI TPU-Aero @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.8 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.4 nozzle", + "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.4 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.6 nozzle", + "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.8 nozzle", + "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.8 nozzle.json" + }, { "name": "Bambu ABS @0.2 nozzle", "sub_path": "filament/Bambu ABS @0.2 nozzle.json" @@ -4216,6 +5208,50 @@ "name": "Bambu ABS @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "Generic ABS @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic ABS @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json" + }, { "name": "HATCHBOX ABS @Qidi 0.2 nozzle", "sub_path": "filament/HATCHBOX ABS @Qidi 0.2 nozzle.json" @@ -4552,50 +5588,6 @@ "name": "QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json" }, - { - "name": "Generic ABS @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json" - }, - { - "name": "Generic ABS @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic ABS @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json" - }, - { - "name": "Generic ABS @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Max 3 0.2 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Plus 3 0.2 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Generic ABS @Qidi X-Smart 3 0.2 nozzle.json" - }, { "name": "Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json" @@ -4620,6 +5612,50 @@ "name": "Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "Generic ASA @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "Generic ASA @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic ASA @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "Generic ASA @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic ASA @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json" + }, { "name": "QIDI ASA @Qidi Q1 Pro 0.2 nozzle", "sub_path": "filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json" @@ -4672,50 +5708,6 @@ "name": "Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle", "sub_path": "filament/Qidi ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json" }, - { - "name": "Generic ASA @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json" - }, - { - "name": "Generic ASA @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic ASA @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json" - }, - { - "name": "Generic ASA @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Max 3 0.2 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Plus 3 0.2 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "Generic ASA @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Generic ASA @Qidi X-Smart 3 0.2 nozzle.json" - }, { "name": "QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json" @@ -5064,6 +6056,50 @@ "name": "Bambu PETG @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "Generic PETG @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic PETG @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json" + }, { "name": "HATCHBOX PETG @0.2 nozzle", "sub_path": "filament/HATCHBOX PETG @Qidi 0.2 nozzle.json" @@ -5332,50 +6368,6 @@ "name": "QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI PETG-GF @Qidi X-Plus 4 0.8 nozzle.json" }, - { - "name": "Generic PETG @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json" - }, - { - "name": "Generic PETG @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json" - }, - { - "name": "Generic PETG @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Max 3 0.2 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Plus 3 0.2 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Generic PETG @Qidi X-Smart 3 0.2 nozzle.json" - }, { "name": "Bambu PLA @0.2 nozzle", "sub_path": "filament/Bambu PLA @0.2 nozzle.json" @@ -5420,6 +6412,150 @@ "name": "Bambu PLA @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "Generic PLA @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Max 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Max 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Smart 3 0.6 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi X-Smart 3 0.8 nozzle", + "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Max 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Max 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Max 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", + "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json" + }, { "name": "HATCHBOX PLA @0.2 nozzle", "sub_path": "filament/HATCHBOX PLA @Qidi 0.2 nozzle.json" @@ -5824,150 +6960,6 @@ "name": "QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI WOOD Rapido @Qidi X-Plus 4 0.8 nozzle.json" }, - { - "name": "Generic PLA @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic PLA @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Max 3 0.6 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Max 3 0.8 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Max 3 0.8 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 3 0.6 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 3 0.8 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 3 0.8 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Smart 3 0.6 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Smart 3 0.8 nozzle", - "sub_path": "filament/Generic PLA @Qidi X-Smart 3 0.8 nozzle.json" - }, - { - "name": "Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi Q1 Pro 0.2 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi Q1 Pro 0.6 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Max 3 0.2 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Max 3 0.6 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Max 3 0.8 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Max 3 0.8 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 3 0.2 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 3 0.6 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 3 0.8 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 3 0.8 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 4 0.2 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 4 0.6 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Smart 3 0.2 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Smart 3 0.6 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Smart 3 0.8 nozzle", - "sub_path": "filament/Generic PLA+ @Qidi X-Smart 3 0.8 nozzle.json" - }, { "name": "QIDI PLA-CF @0.6 nozzle", "sub_path": "filament/QIDI PLA-CF @0.6 nozzle.json" @@ -6000,6 +6992,22 @@ "name": "QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "Generic TPU @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "Generic TPU @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json" + }, { "name": "QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json" @@ -6056,22 +7064,6 @@ "name": "QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle.json" }, - { - "name": "Generic TPU @Qidi Q1 Pro 0.4 nozzle", - "sub_path": "filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json" - }, - { - "name": "Generic TPU @Qidi X-Plus 4 0.4 nozzle", - "sub_path": "filament/Generic TPU @Qidi X-Plus 4 0.4 nozzle.json" - }, - { - "name": "Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle", - "sub_path": "filament/Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json" - }, - { - "name": "Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle", - "sub_path": "filament/Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json" - }, { "name": "Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/Qidi TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json" @@ -6103,998 +7095,6 @@ { "name": "Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/Generic PLA High Speed @Qidi X-Plus 4 0.8 nozzle.json" - }, - { - "name": "fdm_filament_x5_common", - "sub_path": "filament/X5/fdm_filament_x5_common.json" - }, - { - "name": "Generic ABS@X-Plus 5-Series", - "sub_path": "filament/X5/Generic ABS @X-Plus 5.json" - }, - { - "name": "QIDI ASA@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ASA @X-Plus 5.json" - }, - { - "name": "Generic PETG@X-Plus 5-Series", - "sub_path": "filament/X5/Generic PETG @X-Plus 5.json" - }, - { - "name": "Generic PLA Silk@X-Plus 5-Series", - "sub_path": "filament/X5/Generic PLA Silk @X-Plus 5.json" - }, - { - "name": "Generic PLA@X-Plus 5-Series", - "sub_path": "filament/X5/Generic PLA @X-Plus 5.json" - }, - { - "name": "Generic PLA+@X-Plus 5-Series", - "sub_path": "filament/X5/Generic PLA+ @X-Plus 5.json" - }, - { - "name": "PolyLite PLA@X-Plus 5-Series", - "sub_path": "filament/X5/PolyLite PLA @X-Plus 5.json" - }, - { - "name": "Polymaker PLA-HT@X-Plus 5-Series", - "sub_path": "filament/X5/Polymaker PLA-HT @X-Plus 5.json" - }, - { - "name": "QIDI PLA-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA-CF @X-Plus 5.json" - }, - { - "name": "QIDI PLA-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ABS Rapido@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ABS Rapido @X-Plus 5.json" - }, - { - "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ABS Rapido @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ABS Rapido Metal@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ABS Rapido Metal @X-Plus 5.json" - }, - { - "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ABS Rapido Metal @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ABS Rapido Metal @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ABS Odorless@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ABS Odorless @X-Plus 5.json" - }, - { - "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ABS Odorless @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ABS Odorless @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PLA Rapido@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Rapido @X-Plus 5.json" - }, - { - "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Rapido @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Matte@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Rapido Matte @X-Plus 5.json" - }, - { - "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Matte @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Matte @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PLA Silk@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Silk @X-Plus 5.json" - }, - { - "name": "QIDI PLA Silk @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Silk @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Silk @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Silk @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Metal@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Rapido Metal @X-Plus 5.json" - }, - { - "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Rapido Metal @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA Rapido Metal @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG Tough@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG Tough @X-Plus 5.json" - }, - { - "name": "QIDI PETG Tough @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PETG Tough @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG Tough @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG Tough @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG Tough @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PET-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PET-CF @X-Plus 5.json" - }, - { - "name": "QIDI PET-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PET-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PET-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PET-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PA12-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PA12-CF @X-Plus 5.json" - }, - { - "name": "QIDI PA12-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PA12-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PA12-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PA12-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PA6-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PA6-CF @X-Plus 5.json" - }, - { - "name": "QIDI PA6-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PA6-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PA6-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PA6-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PAHT-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PAHT-CF @X-Plus 5.json" - }, - { - "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PAHT-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PAHT-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PPS-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PPS-CF @X-Plus 5.json" - }, - { - "name": "QIDI PPS-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PPS-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PPS-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PPS-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ABS-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ABS-GF @X-Plus 5.json" - }, - { - "name": "QIDI ABS-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ABS-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ABS-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ABS-GF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI UltraPA@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI UltraPA @X-Plus 5.json" - }, - { - "name": "QIDI UltraPA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI UltraPA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI UltraPA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI UltraPA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic TPU 95A@X-Plus 5-Series", - "sub_path": "filament/X5/Generic TPU 95A @X-Plus 5.json" - }, - { - "name": "QIDI PC/ABS-FR@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PC-ABS-FR @X-Plus 5.json" - }, - { - "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PC/ABS-FR @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PC-ABS-FR @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ASA-Aero@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ASA-Aero @X-Plus 5.json" - }, - { - "name": "QIDI ASA-Aero @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ASA-Aero @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic ABS @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic ABS @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI ASA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI ASA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ASA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ASA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ASA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic PETG @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic PETG @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic PLA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic PLA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic PLA+ @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic PLA+ @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic PLA Silk @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic PLA Silk @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic PLA Silk @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic PLA Silk @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic TPU 95A @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic TPU 95A @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic TPU 95A @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic TPU 95A @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI TPU 95A-HF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI TPU 95A-HF @X-Plus 5.json" - }, - { - "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI TPU 95A-HF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI TPU 95A-HF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "PolyLite PLA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "PolyLite PLA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "PolyLite PLA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "PolyLite PLA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/PolyLite PLA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Polymaker PLA-HT @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Polymaker PLA-HT @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "PolyLite ABS@X-Plus 5-Series", - "sub_path": "filament/X5/PolyLite ABS @X-Plus 5.json" - }, - { - "name": "PolyLite ABS @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "PolyLite ABS @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "PolyLite ABS @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "PolyLite ABS @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/PolyLite ABS @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Overture PLA@X-Plus 5-Series", - "sub_path": "filament/X5/Overture PLA @X-Plus 5.json" - }, - { - "name": "Overture PLA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Overture PLA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Overture PLA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Overture PLA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Overture PLA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Overture ABS@X-Plus 5-Series", - "sub_path": "filament/X5/Overture ABS @X-Plus 5.json" - }, - { - "name": "Overture ABS @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Overture ABS @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Overture ABS @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Overture ABS @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Overture ABS @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Bambu PLA@X-Plus 5-Series", - "sub_path": "filament/X5/Bambu PLA @X-Plus 5.json" - }, - { - "name": "Bambu PLA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Bambu PLA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Bambu PLA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Bambu PLA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Bambu PLA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Bambu ABS@X-Plus 5-Series", - "sub_path": "filament/X5/Bambu ABS @X-Plus 5.json" - }, - { - "name": "Bambu ABS @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Bambu ABS @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Bambu ABS @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Bambu ABS @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Bambu ABS @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Bambu PETG@X-Plus 5-Series", - "sub_path": "filament/X5/Bambu PETG @X-Plus 5.json" - }, - { - "name": "Bambu PETG @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Bambu PETG @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Bambu PETG @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Bambu PETG @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Bambu PETG @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "HATCHBOX PLA@X-Plus 5-Series", - "sub_path": "filament/X5/HATCHBOX PLA @X-Plus 5.json" - }, - { - "name": "HATCHBOX PLA @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "HATCHBOX PLA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "HATCHBOX PLA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "HATCHBOX PLA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/HATCHBOX PLA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "HATCHBOX ABS@X-Plus 5-Series", - "sub_path": "filament/X5/HATCHBOX ABS @X-Plus 5.json" - }, - { - "name": "HATCHBOX ABS @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "HATCHBOX ABS @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "HATCHBOX ABS @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "HATCHBOX ABS @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/HATCHBOX ABS @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "HATCHBOX PETG@X-Plus 5-Series", - "sub_path": "filament/X5/HATCHBOX PETG @X-Plus 5.json" - }, - { - "name": "HATCHBOX PETG @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "HATCHBOX PETG @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "HATCHBOX PETG @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "HATCHBOX PETG @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/HATCHBOX PETG @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PAHT-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PAHT-GF @X-Plus 5.json" - }, - { - "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PAHT-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PAHT-GF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PET-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PET-GF @X-Plus 5.json" - }, - { - "name": "QIDI PET-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PET-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PET-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PET-GF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI UltraPA-CF25@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI UltraPA-CF25 @X-Plus 5.json" - }, - { - "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI UltraPA-CF25 @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI UltraPA-CF25 @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI WOOD Rapido@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI WOOD Rapido @X-Plus 5.json" - }, - { - "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI WOOD Rapido @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI WOOD Rapido @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Generic PC@X-Plus 5-Series", - "sub_path": "filament/X5/Generic PC @X-Plus 5.json" - }, - { - "name": "Generic PC @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "Generic PC @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Generic PC @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Generic PC @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/Generic PC @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI TPU-Aero@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI TPU-Aero @X-Plus 5.json" - }, - { - "name": "QIDI TPU-Aero @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI TPU-Aero @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI TPU-Aero @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI TPU-Aero @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI Support For PET/PA@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI Support For PET-PA @X-Plus 5.json" - }, - { - "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI Support For PET/PA @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI Support For PET-PA @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI Support For PAHT@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI Support For PAHT @X-Plus 5.json" - }, - { - "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI Support For PAHT @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI Support For PAHT @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PLA Basic@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Basic @X-Plus 5.json" - }, - { - "name": "QIDI PLA Basic @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PLA Basic @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Basic @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Basic @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA Basic @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PLA Matte Basic@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PLA Matte Basic @X-Plus 5.json" - }, - { - "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PLA Matte Basic @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PLA Matte Basic @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG Rapido@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG Rapido @X-Plus 5.json" - }, - { - "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG Rapido @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG Rapido @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG Basic@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG Basic @X-Plus 5.json" - }, - { - "name": "QIDI PETG Basic @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PETG Basic @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG Basic @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG Basic @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG Basic @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG Translucent@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG Translucent @X-Plus 5.json" - }, - { - "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.2 nozzle", - "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.2 nozzle.json" - }, - { - "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG Translucent @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG Translucent @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG-CF @X-Plus 5.json" - }, - { - "name": "QIDI PETG-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PETG-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PETG-GF @X-Plus 5.json" - }, - { - "name": "QIDI PETG-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PETG-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PETG-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PETG-GF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PPS-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PPS-GF @X-Plus 5.json" - }, - { - "name": "QIDI PPS-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PPS-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI PPS-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI PPS-GF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI PEBA 95A@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI PEBA 95A @X-Plus 5.json" - }, - { - "name": "QIDI PEBA 95A @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI PEBA 95A @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI PEBA 95A @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI PEBA 95A @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ASA-CF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI ASA-CF @X-Plus 5.json" - }, - { - "name": "QIDI ASA-CF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI ASA-CF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI ASA-CF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI ASA-CF @Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "QIDI TPU-GF@X-Plus 5-Series", - "sub_path": "filament/X5/QIDI TPU-GF @X-Plus 5.json" - }, - { - "name": "QIDI TPU-GF @Qidi X-Plus 5 0.4 nozzle", - "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "QIDI TPU-GF @Qidi X-Plus 5 0.6 nozzle", - "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "QIDI TPU-GF @Qidi X-Plus 5 0.8 nozzle", - "sub_path": "filament/X5/QIDI TPU-GF @Qidi X-Plus 5 0.8 nozzle.json" } ], "machine_list": [ @@ -7214,6 +7214,10 @@ "name": "Qidi X-Max 4 0.4 nozzle", "sub_path": "machine/Qidi X-Max 4 0.4 nozzle.json" }, + { + "name": "Qidi X-Plus 5 0.4 nozzle", + "sub_path": "machine/Qidi X-Plus 5 0.4 nozzle.json" + }, { "name": "Qidi Q2 0.4 nozzle", "sub_path": "machine/Qidi Q2 0.4 nozzle.json" @@ -7234,6 +7238,18 @@ "name": "Qidi X-Max 4 0.8 nozzle", "sub_path": "machine/Qidi X-Max 4 0.8 nozzle.json" }, + { + "name": "Qidi X-Plus 5 0.2 nozzle", + "sub_path": "machine/Qidi X-Plus 5 0.2 nozzle.json" + }, + { + "name": "Qidi X-Plus 5 0.6 nozzle", + "sub_path": "machine/Qidi X-Plus 5 0.6 nozzle.json" + }, + { + "name": "Qidi X-Plus 5 0.8 nozzle", + "sub_path": "machine/Qidi X-Plus 5 0.8 nozzle.json" + }, { "name": "Qidi Q2 0.2 nozzle", "sub_path": "machine/Qidi Q2 0.2 nozzle.json" @@ -7257,22 +7273,6 @@ { "name": "Qidi Q2C 0.8 nozzle", "sub_path": "machine/Qidi Q2C 0.8 nozzle.json" - }, - { - "name": "Qidi X-Plus 5 0.4 nozzle", - "sub_path": "machine/Qidi X-Plus 5 0.4 nozzle.json" - }, - { - "name": "Qidi X-Plus 5 0.6 nozzle", - "sub_path": "machine/Qidi X-Plus 5 0.6 nozzle.json" - }, - { - "name": "Qidi X-Plus 5 0.8 nozzle", - "sub_path": "machine/Qidi X-Plus 5 0.8 nozzle.json" - }, - { - "name": "Qidi X-Plus 5 0.2 nozzle", - "sub_path": "machine/Qidi X-Plus 5 0.2 nozzle.json" } ] } diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index dbe4c3cc56..09ce326368 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -276,26 +276,22 @@ } ], "filament_list": [ - { - "name": "Generic ABS BigNozzle @RatRig", - "sub_path": "filament/Generic ABS BigNozzle @RatRig.json" - }, { "name": "Generic ABS @RatRig", "sub_path": "filament/Generic ABS @RatRig.json" }, { - "name": "RatRig PunkFil ABS", - "sub_path": "filament/RatRig PunkFil ABS.json" - }, - { - "name": "Generic ASA BigNozzle @RatRig", - "sub_path": "filament/Generic ASA BigNozzle @RatRig.json" + "name": "Generic ABS BigNozzle @RatRig", + "sub_path": "filament/Generic ABS BigNozzle @RatRig.json" }, { "name": "Generic ASA @RatRig", "sub_path": "filament/Generic ASA @RatRig.json" }, + { + "name": "Generic ASA BigNozzle @RatRig", + "sub_path": "filament/Generic ASA BigNozzle @RatRig.json" + }, { "name": "Generic PA @RatRig", "sub_path": "filament/Generic PA @RatRig.json" @@ -308,38 +304,30 @@ "name": "Generic PC @RatRig", "sub_path": "filament/Generic PC @RatRig.json" }, - { - "name": "Generic PCTG BigNozzle @RatRig", - "sub_path": "filament/Generic PCTG BigNozzle @RatRig.json" - }, - { - "name": "Generic PETG BigNozzle @RatRig", - "sub_path": "filament/Generic PETG BigNozzle @RatRig.json" - }, { "name": "Generic PCTG @RatRig", "sub_path": "filament/Generic PCTG @RatRig.json" }, + { + "name": "Generic PCTG BigNozzle @RatRig", + "sub_path": "filament/Generic PCTG BigNozzle @RatRig.json" + }, { "name": "Generic PETG @RatRig", "sub_path": "filament/Generic PETG @RatRig.json" }, { - "name": "RatRig PunkFil PETG", - "sub_path": "filament/RatRig PunkFil PETG.json" - }, - { - "name": "RatRig PunkFil PETG CF", - "sub_path": "filament/RatRig PunkFil PETG CF.json" - }, - { - "name": "Generic PLA BigNozzle @RatRig", - "sub_path": "filament/Generic PLA BigNozzle @RatRig.json" + "name": "Generic PETG BigNozzle @RatRig", + "sub_path": "filament/Generic PETG BigNozzle @RatRig.json" }, { "name": "Generic PLA @RatRig", "sub_path": "filament/Generic PLA @RatRig.json" }, + { + "name": "Generic PLA BigNozzle @RatRig", + "sub_path": "filament/Generic PLA BigNozzle @RatRig.json" + }, { "name": "Generic PLA-CF @RatRig", "sub_path": "filament/Generic PLA-CF @RatRig.json" @@ -348,13 +336,25 @@ "name": "Generic PVA @RatRig", "sub_path": "filament/Generic PVA @RatRig.json" }, + { + "name": "Generic TPU @RatRig", + "sub_path": "filament/Generic TPU @RatRig.json" + }, { "name": "Generic TPU BigNozzle @RatRig", "sub_path": "filament/Generic TPU BigNozzle @RatRig.json" }, { - "name": "Generic TPU @RatRig", - "sub_path": "filament/Generic TPU @RatRig.json" + "name": "RatRig PunkFil ABS", + "sub_path": "filament/RatRig PunkFil ABS.json" + }, + { + "name": "RatRig PunkFil PETG", + "sub_path": "filament/RatRig PunkFil PETG.json" + }, + { + "name": "RatRig PunkFil PETG CF", + "sub_path": "filament/RatRig PunkFil PETG CF.json" } ], "machine_list": [ diff --git a/resources/profiles/SeeMeCNC.json b/resources/profiles/SeeMeCNC.json index 4bc30dee93..43a273d52c 100644 --- a/resources/profiles/SeeMeCNC.json +++ b/resources/profiles/SeeMeCNC.json @@ -1,6 +1,6 @@ { "name": "SeeMeCNC", - "version": "2.4.0.03", + "version": "2.4.0.04", "force_update": "1", "description": "SeeMeCNC configurations - Full profile set for Artemis, BOSSdelta, and RostockMAX printers", "machine_model_list": [ @@ -50,10 +50,6 @@ "name": "SeeMeCNC process base 1.0mm", "sub_path": "process/SeeMeCNC_process_base_1.0mm.json" }, - { - "name": "SeeMeCNC process base", - "sub_path": "process/SeeMeCNC_process_base.json" - }, { "name": "0.16mm Fine @SeeMeCNC Artemis 0.4", "sub_path": "process/0.16mm Fine @SeeMeCNC Artemis 0.4.json" @@ -86,34 +82,6 @@ "name": "0.20mm Draft @SeeMeCNC RostockMAX v3.2 0.4", "sub_path": "process/0.20mm Draft @SeeMeCNC RostockMAX v3.2 0.4.json" }, - { - "name": "0.20mm Fine @SeeMeCNC Artemis 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC Artemis 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5.json" - }, - { - "name": "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "sub_path": "process/0.20mm Fine @SeeMeCNC RostockMAX v4 0.5.json" - }, { "name": "0.20mm Standard @SeeMeCNC Artemis 0.4", "sub_path": "process/0.20mm Standard @SeeMeCNC Artemis 0.4.json" @@ -170,34 +138,6 @@ "name": "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", "sub_path": "process/0.24mm Draft @SeeMeCNC RostockMAX v4 0.4.json" }, - { - "name": "0.25mm Standard @SeeMeCNC Artemis 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC Artemis 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5.json" - }, - { - "name": "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "sub_path": "process/0.25mm Standard @SeeMeCNC RostockMAX v4 0.5.json" - }, { "name": "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", "sub_path": "process/0.28mm Extra Draft @SeeMeCNC Artemis 0.4.json" @@ -227,32 +167,60 @@ "sub_path": "process/0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4.json" }, { - "name": "0.28mm Fine @SeeMeCNC Artemis 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC Artemis 0.7.json" + "name": "0.20mm Fine @SeeMeCNC Artemis 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC Artemis 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7.json" + "name": "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7.json" + "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7.json" + "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7.json" + "name": "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7.json" + "name": "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5.json" }, { - "name": "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "sub_path": "process/0.28mm Fine @SeeMeCNC RostockMAX v4 0.7.json" + "name": "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", + "sub_path": "process/0.20mm Fine @SeeMeCNC RostockMAX v4 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC Artemis 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC Artemis 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5.json" + }, + { + "name": "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", + "sub_path": "process/0.25mm Standard @SeeMeCNC RostockMAX v4 0.5.json" }, { "name": "0.30mm Draft @SeeMeCNC Artemis 0.5", @@ -282,34 +250,6 @@ "name": "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", "sub_path": "process/0.30mm Draft @SeeMeCNC RostockMAX v4 0.5.json" }, - { - "name": "0.30mm TPU Solid @SeeMeCNC Artemis 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC Artemis 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 300 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 300 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0505 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0505 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0510 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0510 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0521 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0521 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC RostockMAX v3.2 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC RostockMAX v3.2 0.7.json" - }, - { - "name": "0.30mm TPU Solid @SeeMeCNC RostockMAX v4 0.7", - "sub_path": "process/0.30mm TPU Solid @SeeMeCNC RostockMAX v4 0.7.json" - }, { "name": "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", "sub_path": "process/0.35mm Extra Draft @SeeMeCNC Artemis 0.5.json" @@ -338,6 +278,62 @@ "name": "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5", "sub_path": "process/0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5.json" }, + { + "name": "0.28mm Fine @SeeMeCNC Artemis 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC Artemis 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7.json" + }, + { + "name": "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", + "sub_path": "process/0.28mm Fine @SeeMeCNC RostockMAX v4 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC Artemis 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC Artemis 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 300 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 300 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0505 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0505 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0510 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0510 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0521 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0521 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC RostockMAX v3.2 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC RostockMAX v3.2 0.7.json" + }, + { + "name": "0.30mm TPU Solid @SeeMeCNC RostockMAX v4 0.7", + "sub_path": "process/0.30mm TPU Solid @SeeMeCNC RostockMAX v4 0.7.json" + }, { "name": "0.35mm Standard @SeeMeCNC Artemis 0.7", "sub_path": "process/0.35mm Standard @SeeMeCNC Artemis 0.7.json" @@ -394,34 +390,6 @@ "name": "0.35mm TPU Vase @SeeMeCNC RostockMAX v4 0.7", "sub_path": "process/0.35mm TPU Vase @SeeMeCNC RostockMAX v4 0.7.json" }, - { - "name": "0.40mm Fine @SeeMeCNC Artemis 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC Artemis 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0.json" - }, - { - "name": "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "sub_path": "process/0.40mm Fine @SeeMeCNC RostockMAX v4 1.0.json" - }, { "name": "0.42mm Draft @SeeMeCNC Artemis 0.7", "sub_path": "process/0.42mm Draft @SeeMeCNC Artemis 0.7.json" @@ -478,6 +446,34 @@ "name": "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7", "sub_path": "process/0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7.json" }, + { + "name": "0.40mm Fine @SeeMeCNC Artemis 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC Artemis 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0.json" + }, + { + "name": "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", + "sub_path": "process/0.40mm Fine @SeeMeCNC RostockMAX v4 1.0.json" + }, { "name": "0.50mm Standard @SeeMeCNC Artemis 1.0", "sub_path": "process/0.50mm Standard @SeeMeCNC Artemis 1.0.json" @@ -561,6 +557,10 @@ { "name": "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0", "sub_path": "process/0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0.json" + }, + { + "name": "SeeMeCNC process base", + "sub_path": "process/SeeMeCNC_process_base.json" } ], "filament_list": [ diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_4mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_4mm.json deleted file mode 100644 index d5df31d0aa..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_4mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC ABS 0.4 nozzle", - "inherits": "SeeMeCNC ABS", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC ABS 0.4 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.4 nozzle", - "SeeMeCNC BOSSdelta 300 0.4 nozzle", - "SeeMeCNC RostockMAX v3.2 0.4 nozzle", - "SeeMeCNC RostockMAX v4 0.4 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.16mm Fine @SeeMeCNC Artemis 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 300 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v3.2 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v4 0.4", - "0.20mm Standard @SeeMeCNC Artemis 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 300 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v3.2 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v4 0.4", - "0.24mm Draft @SeeMeCNC Artemis 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", - "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "FOSiDadyHyp8WKTb", - "filament_id": "SMCFB00104" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_5mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_5mm.json deleted file mode 100644 index 6cdf1850d4..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_5mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC ABS 0.5 nozzle", - "inherits": "SeeMeCNC ABS", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC ABS 0.5 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.5 nozzle", - "SeeMeCNC BOSSdelta 300 0.5 nozzle", - "SeeMeCNC RostockMAX v3.2 0.5 nozzle", - "SeeMeCNC RostockMAX v4 0.5 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.20mm Fine @SeeMeCNC Artemis 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "0.25mm Standard @SeeMeCNC Artemis 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "0.30mm Draft @SeeMeCNC Artemis 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", - "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "XzvEoqhK0cx7JieM", - "filament_id": "SMCFB00105" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_7mm.json deleted file mode 100644 index 8bdd0003fc..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_0_7mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC ABS 0.7 nozzle", - "inherits": "SeeMeCNC ABS", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC ABS 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.28mm Fine @SeeMeCNC Artemis 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "0.35mm Standard @SeeMeCNC Artemis 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v4 0.7", - "0.42mm Draft @SeeMeCNC Artemis 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v4 0.7", - "0.49mm Extra Draft @SeeMeCNC Artemis 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "RbmLGSWPaVvl0NNr", - "filament_id": "SMCFB00107" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_1_0mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_1_0mm.json deleted file mode 100644 index 0d060b85f3..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_ABS_1_0mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC ABS 1.0 nozzle", - "inherits": "SeeMeCNC ABS", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC ABS 1.0 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0505 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0510 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0521 1.0 nozzle", - "SeeMeCNC BOSSdelta 300 1.0 nozzle", - "SeeMeCNC RostockMAX v3.2 1.0 nozzle", - "SeeMeCNC RostockMAX v4 1.0 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.40mm Fine @SeeMeCNC Artemis 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "0.50mm Standard @SeeMeCNC Artemis 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 300 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v3.2 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v4 1.0", - "0.60mm Draft @SeeMeCNC Artemis 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v4 1.0", - "0.70mm Extra Draft @SeeMeCNC Artemis 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.5" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "DTcAxACOOtdvD43R", - "filament_id": "SMCFB00110" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_4mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_4mm.json deleted file mode 100644 index fcde530598..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_4mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PA-CF 0.4 nozzle", - "inherits": "SeeMeCNC PA-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PA-CF 0.4 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.4 nozzle", - "SeeMeCNC BOSSdelta 300 0.4 nozzle", - "SeeMeCNC RostockMAX v3.2 0.4 nozzle", - "SeeMeCNC RostockMAX v4 0.4 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.16mm Fine @SeeMeCNC Artemis 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 300 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v3.2 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v4 0.4", - "0.20mm Standard @SeeMeCNC Artemis 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 300 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v3.2 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v4 0.4", - "0.24mm Draft @SeeMeCNC Artemis 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", - "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "jf0puhp8kCuwL3jt", - "filament_id": "SMCFN00104" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_5mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_5mm.json deleted file mode 100644 index 0439f58952..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_5mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PA-CF 0.5 nozzle", - "inherits": "SeeMeCNC PA-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PA-CF 0.5 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.5 nozzle", - "SeeMeCNC BOSSdelta 300 0.5 nozzle", - "SeeMeCNC RostockMAX v3.2 0.5 nozzle", - "SeeMeCNC RostockMAX v4 0.5 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.20mm Fine @SeeMeCNC Artemis 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "0.25mm Standard @SeeMeCNC Artemis 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "0.30mm Draft @SeeMeCNC Artemis 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", - "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "c3gXbtFjJn4aK7pL", - "filament_id": "SMCFN00105" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_7mm.json deleted file mode 100644 index d14e219656..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_0_7mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PA-CF 0.7 nozzle", - "inherits": "SeeMeCNC PA-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PA-CF 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.28mm Fine @SeeMeCNC Artemis 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "0.35mm Standard @SeeMeCNC Artemis 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v4 0.7", - "0.42mm Draft @SeeMeCNC Artemis 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v4 0.7", - "0.49mm Extra Draft @SeeMeCNC Artemis 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "7sDIfUAs3Ftv7uUD", - "filament_id": "SMCFN00107" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_1_0mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_1_0mm.json deleted file mode 100644 index aa760ceef2..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PA_CF_1_0mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PA-CF 1.0 nozzle", - "inherits": "SeeMeCNC PA-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PA-CF 1.0 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0505 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0510 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0521 1.0 nozzle", - "SeeMeCNC BOSSdelta 300 1.0 nozzle", - "SeeMeCNC RostockMAX v3.2 1.0 nozzle", - "SeeMeCNC RostockMAX v4 1.0 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.40mm Fine @SeeMeCNC Artemis 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "0.50mm Standard @SeeMeCNC Artemis 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 300 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v3.2 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v4 1.0", - "0.60mm Draft @SeeMeCNC Artemis 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v4 1.0", - "0.70mm Extra Draft @SeeMeCNC Artemis 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.5" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "nr7CBE99WoHXy4Dw", - "filament_id": "SMCFN00110" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_4mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_4mm.json deleted file mode 100644 index bb37dfdbd4..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_4mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG 0.4 nozzle", - "inherits": "SeeMeCNC PETG", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG 0.4 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.4 nozzle", - "SeeMeCNC BOSSdelta 300 0.4 nozzle", - "SeeMeCNC RostockMAX v3.2 0.4 nozzle", - "SeeMeCNC RostockMAX v4 0.4 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.16mm Fine @SeeMeCNC Artemis 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 300 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v3.2 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v4 0.4", - "0.20mm Standard @SeeMeCNC Artemis 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 300 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v3.2 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v4 0.4", - "0.24mm Draft @SeeMeCNC Artemis 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", - "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "kqCiusj7FAzbmnro", - "filament_id": "SMCFG00104" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_5mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_5mm.json deleted file mode 100644 index a0dab684b8..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_5mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG 0.5 nozzle", - "inherits": "SeeMeCNC PETG", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG 0.5 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.5 nozzle", - "SeeMeCNC BOSSdelta 300 0.5 nozzle", - "SeeMeCNC RostockMAX v3.2 0.5 nozzle", - "SeeMeCNC RostockMAX v4 0.5 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.20mm Fine @SeeMeCNC Artemis 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "0.25mm Standard @SeeMeCNC Artemis 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "0.30mm Draft @SeeMeCNC Artemis 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", - "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "85J1rc8KxOc7v2cF", - "filament_id": "SMCFG00105" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_7mm.json deleted file mode 100644 index 3285e22d73..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_0_7mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG 0.7 nozzle", - "inherits": "SeeMeCNC PETG", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.28mm Fine @SeeMeCNC Artemis 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "0.35mm Standard @SeeMeCNC Artemis 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v4 0.7", - "0.42mm Draft @SeeMeCNC Artemis 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v4 0.7", - "0.49mm Extra Draft @SeeMeCNC Artemis 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "QI1p2Hi76cWlfRwC", - "filament_id": "SMCFG00107" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_1_0mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_1_0mm.json deleted file mode 100644 index ac5455210d..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_1_0mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG 1.0 nozzle", - "inherits": "SeeMeCNC PETG", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG 1.0 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0505 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0510 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0521 1.0 nozzle", - "SeeMeCNC BOSSdelta 300 1.0 nozzle", - "SeeMeCNC RostockMAX v3.2 1.0 nozzle", - "SeeMeCNC RostockMAX v4 1.0 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.40mm Fine @SeeMeCNC Artemis 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "0.50mm Standard @SeeMeCNC Artemis 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 300 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v3.2 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v4 1.0", - "0.60mm Draft @SeeMeCNC Artemis 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v4 1.0", - "0.70mm Extra Draft @SeeMeCNC Artemis 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "7" - ], - "filament_z_hop": [ - "0.5" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "Njx1ZHccqqJzQ7AQ", - "filament_id": "SMCFG00110" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_4mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_4mm.json deleted file mode 100644 index 01ef0f3562..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_4mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG-CF 0.4 nozzle", - "inherits": "SeeMeCNC PETG-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG-CF 0.4 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.4 nozzle", - "SeeMeCNC BOSSdelta 300 0.4 nozzle", - "SeeMeCNC RostockMAX v3.2 0.4 nozzle", - "SeeMeCNC RostockMAX v4 0.4 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.16mm Fine @SeeMeCNC Artemis 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 300 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v3.2 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v4 0.4", - "0.20mm Standard @SeeMeCNC Artemis 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 300 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v3.2 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v4 0.4", - "0.24mm Draft @SeeMeCNC Artemis 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", - "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "ulVlpkQVbvkSpmli", - "filament_id": "SMCFG00204" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_5mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_5mm.json deleted file mode 100644 index 0b3d526c6b..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_5mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG-CF 0.5 nozzle", - "inherits": "SeeMeCNC PETG-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG-CF 0.5 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.5 nozzle", - "SeeMeCNC BOSSdelta 300 0.5 nozzle", - "SeeMeCNC RostockMAX v3.2 0.5 nozzle", - "SeeMeCNC RostockMAX v4 0.5 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.20mm Fine @SeeMeCNC Artemis 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "0.25mm Standard @SeeMeCNC Artemis 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "0.30mm Draft @SeeMeCNC Artemis 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", - "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "jK9Gr2VDAnOKrkPW", - "filament_id": "SMCFG00205" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_7mm.json deleted file mode 100644 index e2172b6707..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_0_7mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG-CF 0.7 nozzle", - "inherits": "SeeMeCNC PETG-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG-CF 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.28mm Fine @SeeMeCNC Artemis 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "0.35mm Standard @SeeMeCNC Artemis 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v4 0.7", - "0.42mm Draft @SeeMeCNC Artemis 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v4 0.7", - "0.49mm Extra Draft @SeeMeCNC Artemis 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "Gn57oqh6nMBO651i", - "filament_id": "SMCFG00207" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_1_0mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_1_0mm.json deleted file mode 100644 index 1fabd765d4..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PETG_CF_1_0mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PETG-CF 1.0 nozzle", - "inherits": "SeeMeCNC PETG-CF", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PETG-CF 1.0 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0505 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0510 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0521 1.0 nozzle", - "SeeMeCNC BOSSdelta 300 1.0 nozzle", - "SeeMeCNC RostockMAX v3.2 1.0 nozzle", - "SeeMeCNC RostockMAX v4 1.0 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.40mm Fine @SeeMeCNC Artemis 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "0.50mm Standard @SeeMeCNC Artemis 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 300 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v3.2 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v4 1.0", - "0.60mm Draft @SeeMeCNC Artemis 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v4 1.0", - "0.70mm Extra Draft @SeeMeCNC Artemis 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.5" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "nzRT23S6xk1bxbDJ", - "filament_id": "SMCFG00210" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_4mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_4mm.json deleted file mode 100644 index 9d216c2e7c..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_4mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PLA 0.4 nozzle", - "inherits": "SeeMeCNC PLA", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PLA 0.4 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.4 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.4 nozzle", - "SeeMeCNC BOSSdelta 300 0.4 nozzle", - "SeeMeCNC RostockMAX v3.2 0.4 nozzle", - "SeeMeCNC RostockMAX v4 0.4 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.16mm Fine @SeeMeCNC Artemis 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 300 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.16mm Fine @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v3.2 0.4", - "0.16mm Fine @SeeMeCNC RostockMAX v4 0.4", - "0.20mm Standard @SeeMeCNC Artemis 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 300 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.20mm Standard @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v3.2 0.4", - "0.20mm Standard @SeeMeCNC RostockMAX v4 0.4", - "0.24mm Draft @SeeMeCNC Artemis 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.24mm Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.24mm Draft @SeeMeCNC RostockMAX v4 0.4", - "0.28mm Extra Draft @SeeMeCNC Artemis 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 300 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.4", - "0.28mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.4", - "0.28mm Extra Draft @SeeMeCNC RostockMAX v4 0.4" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "k3oaCcJHHyAuRi6J", - "filament_id": "SMCFL00104" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_5mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_5mm.json deleted file mode 100644 index 1f8a314c20..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_5mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PLA 0.5 nozzle", - "inherits": "SeeMeCNC PLA", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PLA 0.5 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.5 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.5 nozzle", - "SeeMeCNC BOSSdelta 300 0.5 nozzle", - "SeeMeCNC RostockMAX v3.2 0.5 nozzle", - "SeeMeCNC RostockMAX v4 0.5 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.20mm Fine @SeeMeCNC Artemis 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 300 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.20mm Fine @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v3.2 0.5", - "0.20mm Fine @SeeMeCNC RostockMAX v4 0.5", - "0.25mm Standard @SeeMeCNC Artemis 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 300 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.25mm Standard @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v3.2 0.5", - "0.25mm Standard @SeeMeCNC RostockMAX v4 0.5", - "0.30mm Draft @SeeMeCNC Artemis 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.30mm Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.30mm Draft @SeeMeCNC RostockMAX v4 0.5", - "0.35mm Extra Draft @SeeMeCNC Artemis 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 300 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.5", - "0.35mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.5", - "0.35mm Extra Draft @SeeMeCNC RostockMAX v4 0.5" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "5" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "CcINW4WttiNsKvjf", - "filament_id": "SMCFL00105" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_7mm.json deleted file mode 100644 index ea51621992..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_0_7mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PLA 0.7 nozzle", - "inherits": "SeeMeCNC PLA", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PLA 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.28mm Fine @SeeMeCNC Artemis 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 300 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.28mm Fine @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v3.2 0.7", - "0.28mm Fine @SeeMeCNC RostockMAX v4 0.7", - "0.35mm Standard @SeeMeCNC Artemis 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm Standard @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm Standard @SeeMeCNC RostockMAX v4 0.7", - "0.42mm Draft @SeeMeCNC Artemis 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.42mm Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.42mm Draft @SeeMeCNC RostockMAX v4 0.7", - "0.49mm Extra Draft @SeeMeCNC Artemis 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 300 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.49mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v3.2 0.7", - "0.49mm Extra Draft @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "pOuc1eXMLLOBqHuz", - "filament_id": "SMCFL00107" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_1_0mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_1_0mm.json deleted file mode 100644 index b720b87de2..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_PLA_1_0mm.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC PLA 1.0 nozzle", - "inherits": "SeeMeCNC PLA", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC PLA 1.0 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0505 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0510 1.0 nozzle", - "SeeMeCNC BOSSdelta 500 0521 1.0 nozzle", - "SeeMeCNC BOSSdelta 300 1.0 nozzle", - "SeeMeCNC RostockMAX v3.2 1.0 nozzle", - "SeeMeCNC RostockMAX v4 1.0 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.40mm Fine @SeeMeCNC Artemis 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 300 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.40mm Fine @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v3.2 1.0", - "0.40mm Fine @SeeMeCNC RostockMAX v4 1.0", - "0.50mm Standard @SeeMeCNC Artemis 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 300 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.50mm Standard @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v3.2 1.0", - "0.50mm Standard @SeeMeCNC RostockMAX v4 1.0", - "0.60mm Draft @SeeMeCNC Artemis 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.60mm Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.60mm Draft @SeeMeCNC RostockMAX v4 1.0", - "0.70mm Extra Draft @SeeMeCNC Artemis 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 300 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0505 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0510 1.0", - "0.70mm Extra Draft @SeeMeCNC BOSSdelta 500 0521 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v3.2 1.0", - "0.70mm Extra Draft @SeeMeCNC RostockMAX v4 1.0" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "6" - ], - "filament_z_hop": [ - "0.5" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_deretraction_speed": [ - "35" - ], - "setting_id": "jSvqBk6R6HAaTRxk", - "filament_id": "SMCFL00110" -} diff --git a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU_0_7mm.json b/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU_0_7mm.json deleted file mode 100644 index dea7bb7820..0000000000 --- a/resources/profiles/SeeMeCNC/filament/SeeMeCNC_TPU_0_7mm.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "type": "filament", - "name": "SeeMeCNC TPU 0.7 nozzle", - "inherits": "SeeMeCNC TPU", - "from": "System", - "instantiation": "true", - "filament_settings_id": [ - "SeeMeCNC TPU 0.7 nozzle" - ], - "compatible_printers": [ - "SeeMeCNC Artemis 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0505 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0510 0.7 nozzle", - "SeeMeCNC BOSSdelta 500 0521 0.7 nozzle", - "SeeMeCNC BOSSdelta 300 0.7 nozzle", - "SeeMeCNC RostockMAX v3.2 0.7 nozzle", - "SeeMeCNC RostockMAX v4 0.7 nozzle" - ], - "compatible_printers_condition": "", - "compatible_prints": [ - "0.30mm TPU Solid @SeeMeCNC Artemis 0.7", - "0.30mm TPU Solid @SeeMeCNC BOSSdelta 300 0.7", - "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.30mm TPU Solid @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.30mm TPU Solid @SeeMeCNC RostockMAX v3.2 0.7", - "0.30mm TPU Solid @SeeMeCNC RostockMAX v4 0.7", - "0.35mm TPU Vase @SeeMeCNC Artemis 0.7", - "0.35mm TPU Vase @SeeMeCNC BOSSdelta 300 0.7", - "0.35mm TPU Vase @SeeMeCNC BOSSdelta 500 0505 0.7", - "0.35mm TPU Vase @SeeMeCNC BOSSdelta 500 0510 0.7", - "0.35mm TPU Vase @SeeMeCNC BOSSdelta 500 0521 0.7", - "0.35mm TPU Vase @SeeMeCNC RostockMAX v3.2 0.7", - "0.35mm TPU Vase @SeeMeCNC RostockMAX v4 0.7" - ], - "compatible_prints_condition": "", - "filament_retraction_length": [ - "7" - ], - "filament_z_hop": [ - "0.3" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_deretraction_speed": [ - "30" - ], - "setting_id": "4LUkyKiKFb96OeC0", - "filament_id": "SMCFU00107" -} diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 393271d0e5..d2309f6974 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -194,18 +194,42 @@ "name": "fdm_process_idex", "sub_path": "process/fdm_process_idex.json" }, + { + "name": "fdm_process_U1_0.06_nozzle_0.2", + "sub_path": "process/fdm_process_U1_0.06_nozzle_0.2.json" + }, { "name": "fdm_process_U1_0.08", "sub_path": "process/fdm_process_U1_0.08.json" }, + { + "name": "fdm_process_U1_0.08_nozzle_0.2", + "sub_path": "process/fdm_process_U1_0.08_nozzle_0.2.json" + }, + { + "name": "fdm_process_U1_0.10_nozzle_0.2", + "sub_path": "process/fdm_process_U1_0.10_nozzle_0.2.json" + }, { "name": "fdm_process_U1_0.12", "sub_path": "process/fdm_process_U1_0.12.json" }, + { + "name": "fdm_process_U1_0.12_nozzle_0.2", + "sub_path": "process/fdm_process_U1_0.12_nozzle_0.2.json" + }, + { + "name": "fdm_process_U1_0.14_nozzle_0.2", + "sub_path": "process/fdm_process_U1_0.14_nozzle_0.2.json" + }, { "name": "fdm_process_U1_0.16", "sub_path": "process/fdm_process_U1_0.16.json" }, + { + "name": "fdm_process_U1_0.18_nozzle_0.6", + "sub_path": "process/fdm_process_U1_0.18_nozzle_0.6.json" + }, { "name": "fdm_process_U1_0.20", "sub_path": "process/fdm_process_U1_0.20.json" @@ -214,14 +238,58 @@ "name": "fdm_process_U1_0.24", "sub_path": "process/fdm_process_U1_0.24.json" }, + { + "name": "fdm_process_U1_0.24_nozzle_0.6", + "sub_path": "process/fdm_process_U1_0.24_nozzle_0.6.json" + }, + { + "name": "fdm_process_U1_0.24_nozzle_0.8", + "sub_path": "process/fdm_process_U1_0.24_nozzle_0.8.json" + }, { "name": "fdm_process_U1_0.28", "sub_path": "process/fdm_process_U1_0.28.json" }, + { + "name": "fdm_process_U1_0.2_common", + "sub_path": "process/fdm_process_U1_0.2_common.json" + }, + { + "name": "fdm_process_U1_0.30_nozzle_0.6", + "sub_path": "process/fdm_process_U1_0.30_nozzle_0.6.json" + }, + { + "name": "fdm_process_U1_0.32_nozzle_0.8", + "sub_path": "process/fdm_process_U1_0.32_nozzle_0.8.json" + }, + { + "name": "fdm_process_U1_0.36_nozzle_0.6", + "sub_path": "process/fdm_process_U1_0.36_nozzle_0.6.json" + }, + { + "name": "fdm_process_U1_0.40_nozzle_0.8", + "sub_path": "process/fdm_process_U1_0.40_nozzle_0.8.json" + }, + { + "name": "fdm_process_U1_0.42_nozzle_0.6", + "sub_path": "process/fdm_process_U1_0.42_nozzle_0.6.json" + }, + { + "name": "fdm_process_U1_0.48_nozzle_0.8", + "sub_path": "process/fdm_process_U1_0.48_nozzle_0.8.json" + }, + { + "name": "fdm_process_U1_0.56_nozzle_0.8", + "sub_path": "process/fdm_process_U1_0.56_nozzle_0.8.json" + }, { "name": "fdm_process_U1_0.6_common", "sub_path": "process/fdm_process_U1_0.6_common.json" }, + { + "name": "fdm_process_U1_0.8_common", + "sub_path": "process/fdm_process_U1_0.8_common.json" + }, { "name": "0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle)", "sub_path": "process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json" @@ -402,6 +470,14 @@ "name": "0.48 Draft @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json" }, + { + "name": "0.06 High Quality @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json" + }, + { + "name": "0.06 Standard @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json" + }, { "name": "0.08 Extra Fine @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.08 Extra Fine @Snapmaker U1 (0.4 nozzle).json" @@ -410,6 +486,22 @@ "name": "0.08 High Quality @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.08 High Quality @Snapmaker U1 (0.4 nozzle).json" }, + { + "name": "0.08 High Quality @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json" + }, + { + "name": "0.08 Standard @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json" + }, + { + "name": "0.10 High Quality @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json" + }, + { + "name": "0.10 Standard @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json" + }, { "name": "0.12 Fine @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.12 Fine @Snapmaker U1 (0.4 nozzle).json" @@ -418,6 +510,14 @@ "name": "0.12 High Quality @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.12 High Quality @Snapmaker U1 (0.4 nozzle).json" }, + { + "name": "0.12 Standard @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json" + }, + { + "name": "0.14 Standard @Snapmaker U1 (0.2 nozzle)", + "sub_path": "process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json" + }, { "name": "0.16 High Quality @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.16 High Quality @Snapmaker U1 (0.4 nozzle).json" @@ -426,6 +526,10 @@ "name": "0.16 Optimal @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.16 Optimal @Snapmaker U1 (0.4 nozzle).json" }, + { + "name": "0.18 Standard @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json" + }, { "name": "0.20 Quality @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.20 Quality @Snapmaker U1 (0.4 nozzle).json" @@ -454,10 +558,50 @@ "name": "0.24 Draft @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.24 Draft @Snapmaker U1 (0.4 nozzle).json" }, + { + "name": "0.24 Standard @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json" + }, + { + "name": "0.24 Standard @Snapmaker U1 (0.8 nozzle)", + "sub_path": "process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json" + }, { "name": "0.28 Extra Draft @Snapmaker U1 (0.4 nozzle)", "sub_path": "process/0.28 Extra Draft @Snapmaker U1 (0.4 nozzle).json" }, + { + "name": "0.30 Standard @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json" + }, + { + "name": "0.30 Strength @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json" + }, + { + "name": "0.32 Standard @Snapmaker U1 (0.8 nozzle)", + "sub_path": "process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json" + }, + { + "name": "0.36 Standard @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json" + }, + { + "name": "0.40 Standard @Snapmaker U1 (0.8 nozzle)", + "sub_path": "process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json" + }, + { + "name": "0.42 Standard @Snapmaker U1 (0.6 nozzle)", + "sub_path": "process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json" + }, + { + "name": "0.48 Standard @Snapmaker U1 (0.8 nozzle)", + "sub_path": "process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json" + }, + { + "name": "0.56 Standard @Snapmaker U1 (0.8 nozzle)", + "sub_path": "process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json" + }, { "name": "0.20 Standard @Snapmaker U1 (0.6 nozzle)", "sub_path": "process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json" @@ -473,150 +617,6 @@ { "name": "0.06 Standard @Snapmaker Artisan (0.2 nozzle)", "sub_path": "process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json" - }, - { - "name": "fdm_process_U1_0.2_common", - "sub_path": "process/fdm_process_U1_0.2_common.json" - }, - { - "name": "fdm_process_U1_0.8_common", - "sub_path": "process/fdm_process_U1_0.8_common.json" - }, - { - "name": "fdm_process_U1_0.06_nozzle_0.2", - "sub_path": "process/fdm_process_U1_0.06_nozzle_0.2.json" - }, - { - "name": "fdm_process_U1_0.08_nozzle_0.2", - "sub_path": "process/fdm_process_U1_0.08_nozzle_0.2.json" - }, - { - "name": "fdm_process_U1_0.10_nozzle_0.2", - "sub_path": "process/fdm_process_U1_0.10_nozzle_0.2.json" - }, - { - "name": "fdm_process_U1_0.12_nozzle_0.2", - "sub_path": "process/fdm_process_U1_0.12_nozzle_0.2.json" - }, - { - "name": "fdm_process_U1_0.14_nozzle_0.2", - "sub_path": "process/fdm_process_U1_0.14_nozzle_0.2.json" - }, - { - "name": "fdm_process_U1_0.18_nozzle_0.6", - "sub_path": "process/fdm_process_U1_0.18_nozzle_0.6.json" - }, - { - "name": "fdm_process_U1_0.24_nozzle_0.6", - "sub_path": "process/fdm_process_U1_0.24_nozzle_0.6.json" - }, - { - "name": "fdm_process_U1_0.24_nozzle_0.8", - "sub_path": "process/fdm_process_U1_0.24_nozzle_0.8.json" - }, - { - "name": "fdm_process_U1_0.30_nozzle_0.6", - "sub_path": "process/fdm_process_U1_0.30_nozzle_0.6.json" - }, - { - "name": "fdm_process_U1_0.32_nozzle_0.8", - "sub_path": "process/fdm_process_U1_0.32_nozzle_0.8.json" - }, - { - "name": "fdm_process_U1_0.36_nozzle_0.6", - "sub_path": "process/fdm_process_U1_0.36_nozzle_0.6.json" - }, - { - "name": "fdm_process_U1_0.40_nozzle_0.8", - "sub_path": "process/fdm_process_U1_0.40_nozzle_0.8.json" - }, - { - "name": "fdm_process_U1_0.42_nozzle_0.6", - "sub_path": "process/fdm_process_U1_0.42_nozzle_0.6.json" - }, - { - "name": "fdm_process_U1_0.48_nozzle_0.8", - "sub_path": "process/fdm_process_U1_0.48_nozzle_0.8.json" - }, - { - "name": "fdm_process_U1_0.56_nozzle_0.8", - "sub_path": "process/fdm_process_U1_0.56_nozzle_0.8.json" - }, - { - "name": "0.06 High Quality @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.06 Standard @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.08 High Quality @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.08 Standard @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.10 High Quality @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.10 Standard @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.12 Standard @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.14 Standard @Snapmaker U1 (0.2 nozzle)", - "sub_path": "process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "0.18 Standard @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.24 Standard @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.30 Standard @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.30 Strength @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.36 Standard @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.42 Standard @Snapmaker U1 (0.6 nozzle)", - "sub_path": "process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json" - }, - { - "name": "0.24 Standard @Snapmaker U1 (0.8 nozzle)", - "sub_path": "process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json" - }, - { - "name": "0.32 Standard @Snapmaker U1 (0.8 nozzle)", - "sub_path": "process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json" - }, - { - "name": "0.40 Standard @Snapmaker U1 (0.8 nozzle)", - "sub_path": "process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json" - }, - { - "name": "0.48 Standard @Snapmaker U1 (0.8 nozzle)", - "sub_path": "process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json" - }, - { - "name": "0.56 Standard @Snapmaker U1 (0.8 nozzle)", - "sub_path": "process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json" } ], "filament_list": [ @@ -624,14 +624,26 @@ "name": "PolyTerra PLA @0.2 nozzle", "sub_path": "filament/Polymaker/PolyTerra PLA @0.2 nozzle.json" }, + { + "name": "Snapmaker PLA Basic @U1 base", + "sub_path": "filament/Snapmaker PLA Basic @U1 base.json" + }, { "name": "Snapmaker PLA Lite @U1 base", "sub_path": "filament/Snapmaker PLA Lite @U1 base.json" }, + { + "name": "Snapmaker PLA Matte @U1 base2", + "sub_path": "filament/Snapmaker PLA Matte @U1 base2.json" + }, { "name": "Snapmaker PLA SnapSpeed @U1 base", "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 base.json" }, + { + "name": "Snapmaker PLA SnapSpeed @U1 base2", + "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 base2.json" + }, { "name": "Snapmaker TPU 95A @U1 base", "sub_path": "filament/Snapmaker TPU 95A @U1 base.json" @@ -648,14 +660,62 @@ "name": "PolyTerra J1 PLA @0.2 nozzle", "sub_path": "filament/Polymaker/PolyTerra J1 PLA @0.2 nozzle.json" }, + { + "name": "Snapmaker PLA Basic @U1", + "sub_path": "filament/Snapmaker PLA Basic @U1.json" + }, + { + "name": "Snapmaker PLA Full Spectrum @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json" + }, + { + "name": "Snapmaker PLA Silk @U1", + "sub_path": "filament/Snapmaker PLA Silk @U1.json" + }, + { + "name": "Snapmaker PLA Silk @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PLA Silk @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PLA Silk @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA Silk @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA Silk @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA Silk @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PLA Lite @U1", "sub_path": "filament/Snapmaker PLA Lite @U1.json" }, + { + "name": "Snapmaker PLA Matte @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PLA Matte @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PLA Matte @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA Matte @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA Matte @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA Matte @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PLA SnapSpeed @U1", "sub_path": "filament/Snapmaker PLA SnapSpeed @U1.json" }, + { + "name": "Snapmaker PLA SnapSpeed @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PLA SnapSpeed @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA SnapSpeed @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.8 nozzle.json" + }, { "name": "Snapmaker TPU 95A @U1", "sub_path": "filament/Snapmaker TPU 95A @U1.json" @@ -840,6 +900,14 @@ "name": "Snapmaker PETG @base", "sub_path": "filament/Snapmaker PETG @base.json" }, + { + "name": "Snapmaker PETG HF @U1 base2", + "sub_path": "filament/Snapmaker PETG HF @U1 base2.json" + }, + { + "name": "Snapmaker PETG Translucent @U1 base", + "sub_path": "filament/Snapmaker PETG Translucent @U1 base.json" + }, { "name": "Snapmaker PETG-CF @U1 base", "sub_path": "filament/Snapmaker PETG-CF @U1 base.json" @@ -988,6 +1056,10 @@ "name": "Polymaker PLA @Snapmaker U1 base", "sub_path": "filament/Polymaker/Polymaker PLA @Snapmaker U1 base.json" }, + { + "name": "Polymaker PLA @U1 base", + "sub_path": "filament/Polymaker PLA @U1 base.json" + }, { "name": "Polymaker PLA Pro @Base", "sub_path": "filament/Polymaker/Polymaker PLA Pro @Base.json" @@ -1048,6 +1120,10 @@ "name": "Snapmaker PLA @base", "sub_path": "filament/Snapmaker PLA @base.json" }, + { + "name": "Snapmaker PLA Glow @U1 base", + "sub_path": "filament/Snapmaker PLA Glow @U1 base.json" + }, { "name": "Snapmaker PLA Metal @U1 base", "sub_path": "filament/Snapmaker PLA Metal @U1 base.json" @@ -1060,6 +1136,34 @@ "name": "Snapmaker PLA Silk @base", "sub_path": "filament/Snapmaker PLA Silk @base.json" }, + { + "name": "Snapmaker PLA Translucent @U1 base", + "sub_path": "filament/Snapmaker PLA Translucent @U1 base.json" + }, + { + "name": "Snapmaker PLA Wood @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PLA Wood @U1 0.4 nozzle.json" + }, + { + "name": "Snapmaker PLA Wood @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA Wood @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA Wood @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA Wood @U1 0.8 nozzle.json" + }, + { + "name": "Snapmaker PLA-CF @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PLA-CF @U1 0.4 nozzle.json" + }, + { + "name": "Snapmaker PLA-CF @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA-CF @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA-CF @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA-CF @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PLA-CF @U1 base", "sub_path": "filament/Snapmaker PLA-CF @U1 base.json" @@ -1096,6 +1200,30 @@ "name": "Snapmaker J1 TPU @base", "sub_path": "filament/Snapmaker J1 TPU @base.json" }, + { + "name": "Snapmaker TPU 90A @U1", + "sub_path": "filament/Snapmaker TPU 90A @U1.json" + }, + { + "name": "Snapmaker TPU 90A @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker TPU 90A @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker TPU 90A @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker TPU 90A @U1 0.8 nozzle.json" + }, + { + "name": "Snapmaker TPU 95A HF @U1", + "sub_path": "filament/Snapmaker TPU 95A HF @U1.json" + }, + { + "name": "Snapmaker TPU 95A HF @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker TPU 95A HF @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json" + }, { "name": "Snapmaker TPU @U1 base", "sub_path": "filament/Snapmaker TPU @U1 base.json" @@ -1316,6 +1444,34 @@ "name": "Snapmaker PETG @0.2 nozzle", "sub_path": "filament/Snapmaker PETG @0.2 nozzle.json" }, + { + "name": "Snapmaker PETG HF @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PETG HF @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PETG HF @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PETG HF @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PETG HF @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PETG HF @U1 0.8 nozzle.json" + }, + { + "name": "Snapmaker PETG Translucent @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PETG Translucent @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PETG Translucent @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PETG Translucent @U1 0.4 nozzle.json" + }, + { + "name": "Snapmaker PETG Translucent @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PETG Translucent @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PETG Translucent @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PETG Translucent @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PETG-CF @U1", "sub_path": "filament/Snapmaker PETG-CF @U1.json" @@ -1460,6 +1616,18 @@ "name": "Polymaker PLA @Snapmaker U1", "sub_path": "filament/Polymaker/Polymaker PLA @Snapmaker U1.json" }, + { + "name": "Polymaker General PLA Family @U1", + "sub_path": "filament/Polymaker General PLA Family @U1.json" + }, + { + "name": "Polymaker Silk PLA Family @U1", + "sub_path": "filament/Polymaker Silk PLA Family @U1.json" + }, + { + "name": "Polymaker Tough PLA Family @U1", + "sub_path": "filament/Polymaker Tough PLA Family @U1.json" + }, { "name": "Polymaker PLA Pro @Snapmaker U1", "sub_path": "filament/Polymaker/Polymaker PLA Pro @Snapmaker U1.json" @@ -1560,6 +1728,10 @@ "name": "Snapmaker PLA", "sub_path": "filament/Snapmaker PLA.json" }, + { + "name": "Snapmaker PLA Glow @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PLA Glow @U1 0.4 nozzle.json" + }, { "name": "Snapmaker PLA Metal @U1", "sub_path": "filament/Snapmaker PLA Metal @U1.json" @@ -1572,6 +1744,22 @@ "name": "Snapmaker PLA Silk @0.2 nozzle", "sub_path": "filament/Snapmaker PLA Silk @0.2 nozzle.json" }, + { + "name": "Snapmaker PLA Translucent @U1 0.2 nozzle", + "sub_path": "filament/Snapmaker PLA Translucent @U1 0.2 nozzle.json" + }, + { + "name": "Snapmaker PLA Translucent @U1 0.4 nozzle", + "sub_path": "filament/Snapmaker PLA Translucent @U1 0.4 nozzle.json" + }, + { + "name": "Snapmaker PLA Translucent @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PLA Translucent @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PLA Translucent @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PLA Translucent @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PLA-CF", "sub_path": "filament/Snapmaker PLA-CF.json" @@ -1612,6 +1800,14 @@ "name": "Snapmaker PVA @U1", "sub_path": "filament/Snapmaker PVA @U1.json" }, + { + "name": "Snapmaker PVA @U1 0.6 nozzle", + "sub_path": "filament/Snapmaker PVA @U1 0.6 nozzle.json" + }, + { + "name": "Snapmaker PVA @U1 0.8 nozzle", + "sub_path": "filament/Snapmaker PVA @U1 0.8 nozzle.json" + }, { "name": "Snapmaker PVA", "sub_path": "filament/Snapmaker PVA.json" @@ -1712,26 +1908,6 @@ "name": "Snapmaker Breakaway Support For PLA @U1", "sub_path": "filament/Snapmaker Breakaway Support For PLA @U1.json" }, - { - "name": "PolyTerra J1 PLA", - "sub_path": "filament/Polymaker/PolyTerra J1 PLA.json" - }, - { - "name": "Snapmaker PLA Matte @U1 base", - "sub_path": "filament/Snapmaker PLA Matte @U1 base.json" - }, - { - "name": "Polymaker PLA @U1 base", - "sub_path": "filament/Polymaker PLA @U1 base.json" - }, - { - "name": "Polymaker Silk PLA Family @U1", - "sub_path": "filament/Polymaker Silk PLA Family @U1.json" - }, - { - "name": "Polymaker Tough PLA Family @U1", - "sub_path": "filament/Polymaker Tough PLA Family @U1.json" - }, { "name": "Snapmaker Breakaway Support For PLA @U1 0.2 nozzle", "sub_path": "filament/Snapmaker Breakaway Support For PLA @U1 0.2 nozzle.json" @@ -1745,188 +1921,12 @@ "sub_path": "filament/Snapmaker Breakaway Support For PLA @U1 0.8 nozzle.json" }, { - "name": "Snapmaker PETG HF @U1 base2", - "sub_path": "filament/Snapmaker PETG HF @U1 base2.json" + "name": "PolyTerra J1 PLA", + "sub_path": "filament/Polymaker/PolyTerra J1 PLA.json" }, { - "name": "Snapmaker PETG Translucent @U1 base", - "sub_path": "filament/Snapmaker PETG Translucent @U1 base.json" - }, - { - "name": "Snapmaker PLA Basic @U1 base", - "sub_path": "filament/Snapmaker PLA Basic @U1 base.json" - }, - { - "name": "Snapmaker PLA Full Spectrum @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PLA Full Spectrum @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PLA Glow @U1 base", - "sub_path": "filament/Snapmaker PLA Glow @U1 base.json" - }, - { - "name": "Snapmaker PLA Matte @U1 base2", - "sub_path": "filament/Snapmaker PLA Matte @U1 base2.json" - }, - { - "name": "Snapmaker PLA Silk @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PLA Silk @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PLA Silk @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA Silk @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA Silk @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA Silk @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA SnapSpeed @U1 base2", - "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 base2.json" - }, - { - "name": "Snapmaker PLA Translucent @U1 base", - "sub_path": "filament/Snapmaker PLA Translucent @U1 base.json" - }, - { - "name": "Snapmaker PLA Wood @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PLA Wood @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PLA Wood @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA Wood @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA Wood @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA Wood @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA-CF @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PLA-CF @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PLA-CF @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA-CF @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA-CF @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA-CF @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PVA @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PVA @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PVA @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PVA @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker TPU 90A @U1", - "sub_path": "filament/Snapmaker TPU 90A @U1.json" - }, - { - "name": "Snapmaker TPU 90A @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker TPU 90A @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker TPU 90A @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker TPU 90A @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker TPU 95A HF @U1", - "sub_path": "filament/Snapmaker TPU 95A HF @U1.json" - }, - { - "name": "Snapmaker TPU 95A HF @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker TPU 95A HF @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker TPU 95A HF @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker TPU 95A HF @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA Silk @U1", - "sub_path": "filament/Snapmaker PLA Silk @U1.json" - }, - { - "name": "Polymaker General PLA Family @U1", - "sub_path": "filament/Polymaker General PLA Family @U1.json" - }, - { - "name": "Snapmaker PETG HF @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PETG HF @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PETG HF @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PETG HF @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PETG HF @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PETG HF @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PETG Translucent @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PETG Translucent @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PETG Translucent @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PETG Translucent @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PETG Translucent @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PETG Translucent @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PETG Translucent @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PETG Translucent @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA Basic @U1", - "sub_path": "filament/Snapmaker PLA Basic @U1.json" - }, - { - "name": "Snapmaker PLA Glow @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PLA Glow @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PLA Matte @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PLA Matte @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PLA Matte @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA Matte @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA Matte @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA Matte @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA SnapSpeed @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PLA SnapSpeed @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA SnapSpeed @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA SnapSpeed @U1 0.8 nozzle.json" - }, - { - "name": "Snapmaker PLA Translucent @U1 0.2 nozzle", - "sub_path": "filament/Snapmaker PLA Translucent @U1 0.2 nozzle.json" - }, - { - "name": "Snapmaker PLA Translucent @U1 0.4 nozzle", - "sub_path": "filament/Snapmaker PLA Translucent @U1 0.4 nozzle.json" - }, - { - "name": "Snapmaker PLA Translucent @U1 0.6 nozzle", - "sub_path": "filament/Snapmaker PLA Translucent @U1 0.6 nozzle.json" - }, - { - "name": "Snapmaker PLA Translucent @U1 0.8 nozzle", - "sub_path": "filament/Snapmaker PLA Translucent @U1 0.8 nozzle.json" + "name": "Snapmaker PLA Matte @U1 base", + "sub_path": "filament/Snapmaker PLA Matte @U1 base.json" } ], "machine_list": [ @@ -2050,6 +2050,10 @@ "name": "fdm_a400", "sub_path": "machine/fdm_a400.json" }, + { + "name": "Snapmaker U1 (0.2 nozzle)", + "sub_path": "machine/Snapmaker U1 (0.2 nozzle).json" + }, { "name": "Snapmaker U1 (0.4 nozzle)", "sub_path": "machine/Snapmaker U1 (0.4 nozzle).json" @@ -2062,6 +2066,10 @@ "name": "Snapmaker U1 (0.6 nozzle)", "sub_path": "machine/Snapmaker U1 (0.6 nozzle).json" }, + { + "name": "Snapmaker U1 (0.8 nozzle)", + "sub_path": "machine/Snapmaker U1 (0.8 nozzle).json" + }, { "name": "Snapmaker A250 BKit (0.2 nozzle)", "sub_path": "machine/Snapmaker A250 BKit (0.2 nozzle).json" @@ -2325,14 +2333,6 @@ { "name": "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", "sub_path": "machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json" - }, - { - "name": "Snapmaker U1 (0.2 nozzle)", - "sub_path": "machine/Snapmaker U1 (0.2 nozzle).json" - }, - { - "name": "Snapmaker U1 (0.8 nozzle)", - "sub_path": "machine/Snapmaker U1 (0.8 nozzle).json" } ] } diff --git a/resources/profiles/Sovol.json b/resources/profiles/Sovol.json index a38645abc2..9562873886 100644 --- a/resources/profiles/Sovol.json +++ b/resources/profiles/Sovol.json @@ -201,82 +201,66 @@ } ], "filament_list": [ - { - "name": "Generic ABS @Sovol SV08 MAX", - "sub_path": "filament/Generic ABS @Sovol SV08 MAX.json" - }, - { - "name": "Generic PC @Sovol SV08 MAX", - "sub_path": "filament/Generic PC @Sovol SV08 MAX.json" - }, - { - "name": "Generic PETG @Sovol SV08 MAX", - "sub_path": "filament/Generic PETG @Sovol SV08 MAX.json" - }, - { - "name": "Generic PLA @Sovol SV08 MAX", - "sub_path": "filament/Generic PLA @Sovol SV08 MAX.json" - }, - { - "name": "Generic PLA Silk @Sovol SV08 MAX", - "sub_path": "filament/Generic PLA Silk @Sovol SV08 MAX.json" - }, - { - "name": "Generic TPU @Sovol SV08 MAX", - "sub_path": "filament/Generic TPU @Sovol SV08 MAX.json" - }, - { - "name": "Polymaker PETG @Sovol SV08 MAX", - "sub_path": "filament/Polymaker PETG @Sovol SV08 MAX.json" - }, - { - "name": "SUNLU PETG @Sovol SV08 MAX", - "sub_path": "filament/SUNLU PETG @Sovol SV08 MAX.json" - }, { "name": "Generic ABS @Sovol SV06 ACE", "sub_path": "filament/Generic ABS @Sovol SV06 ACE.json" }, - { - "name": "Generic PETG @Sovol SV06 ACE", - "sub_path": "filament/Generic PETG @Sovol SV06 ACE.json" - }, - { - "name": "Generic PLA @Sovol SV06 ACE", - "sub_path": "filament/Generic PLA @Sovol SV06 ACE.json" - }, - { - "name": "Generic TPU @Sovol SV06 ACE", - "sub_path": "filament/Generic TPU @Sovol SV06 ACE.json" - }, { "name": "Generic ABS @Sovol SV06 Plus ACE", "sub_path": "filament/Generic ABS @Sovol SV06 Plus ACE.json" }, + { + "name": "Generic ABS @Sovol SV08", + "sub_path": "filament/Generic ABS @Sovol SV08.json" + }, + { + "name": "Generic ABS @Sovol SV08 MAX", + "sub_path": "filament/Generic ABS @Sovol SV08 MAX.json" + }, + { + "name": "Generic ABS @Sovol Zero", + "sub_path": "filament/Generic ABS @Sovol Zero.json" + }, + { + "name": "Generic PC @Sovol SV08 MAX", + "sub_path": "filament/Generic PC @Sovol SV08 MAX.json" + }, + { + "name": "Generic PC @Sovol Zero", + "sub_path": "filament/Generic PC @Sovol Zero.json" + }, + { + "name": "Generic PETG @Sovol SV06 ACE", + "sub_path": "filament/Generic PETG @Sovol SV06 ACE.json" + }, { "name": "Generic PETG @Sovol SV06 Plus ACE", "sub_path": "filament/Generic PETG @Sovol SV06 Plus ACE.json" }, + { + "name": "Generic PETG @Sovol SV08", + "sub_path": "filament/Generic PETG @Sovol SV08.json" + }, + { + "name": "Generic PETG @Sovol SV08 MAX", + "sub_path": "filament/Generic PETG @Sovol SV08 MAX.json" + }, + { + "name": "Generic PETG @Sovol Zero", + "sub_path": "filament/Generic PETG @Sovol Zero.json" + }, + { + "name": "Generic PLA @Sovol SV06 ACE", + "sub_path": "filament/Generic PLA @Sovol SV06 ACE.json" + }, { "name": "Generic PLA @Sovol SV06 Plus ACE", "sub_path": "filament/Generic PLA @Sovol SV06 Plus ACE.json" }, - { - "name": "Generic TPU @Sovol SV06 Plus ACE", - "sub_path": "filament/Generic TPU @Sovol SV06 Plus ACE.json" - }, { "name": "Generic PLA @Sovol SV07", "sub_path": "filament/Generic PLA @Sovol SV07.json" }, - { - "name": "Generic ABS @Sovol SV08", - "sub_path": "filament/Generic ABS @Sovol SV08.json" - }, - { - "name": "Generic PETG @Sovol SV08", - "sub_path": "filament/Generic PETG @Sovol SV08.json" - }, { "name": "Generic PLA @Sovol SV08", "sub_path": "filament/Generic PLA @Sovol SV08.json" @@ -286,44 +270,60 @@ "sub_path": "filament/Generic PLA @Sovol SV08 0.2 nozzle.json" }, { - "name": "Generic TPU @Sovol SV08", - "sub_path": "filament/Generic TPU @Sovol SV08.json" - }, - { - "name": "Generic ABS @Sovol Zero", - "sub_path": "filament/Generic ABS @Sovol Zero.json" - }, - { - "name": "Generic PC @Sovol Zero", - "sub_path": "filament/Generic PC @Sovol Zero.json" - }, - { - "name": "Generic PETG @Sovol Zero", - "sub_path": "filament/Generic PETG @Sovol Zero.json" - }, - { - "name": "Sovol Zero PETG HS Nozzle", - "sub_path": "filament/Sovol Zero PETG HS Nozzle.json" + "name": "Generic PLA @Sovol SV08 MAX", + "sub_path": "filament/Generic PLA @Sovol SV08 MAX.json" }, { "name": "Generic PLA @Sovol Zero", "sub_path": "filament/Generic PLA @Sovol Zero.json" }, { - "name": "Sovol Zero PLA Basic HS Nozzle", - "sub_path": "filament/Sovol Zero PLA Basic HS Nozzle.json" + "name": "Generic PLA Silk @Sovol SV08 MAX", + "sub_path": "filament/Generic PLA Silk @Sovol SV08 MAX.json" }, { "name": "Generic PLA Silk @Sovol Zero", "sub_path": "filament/Generic PLA Silk @Sovol Zero.json" }, { - "name": "Sovol Zero PLA Silk HS Nozzle", - "sub_path": "filament/Sovol Zero PLA Silk HS Nozzle.json" + "name": "Generic TPU @Sovol SV06 ACE", + "sub_path": "filament/Generic TPU @Sovol SV06 ACE.json" + }, + { + "name": "Generic TPU @Sovol SV06 Plus ACE", + "sub_path": "filament/Generic TPU @Sovol SV06 Plus ACE.json" + }, + { + "name": "Generic TPU @Sovol SV08", + "sub_path": "filament/Generic TPU @Sovol SV08.json" + }, + { + "name": "Generic TPU @Sovol SV08 MAX", + "sub_path": "filament/Generic TPU @Sovol SV08 MAX.json" }, { "name": "Generic TPU @Sovol Zero", "sub_path": "filament/Generic TPU @Sovol Zero.json" + }, + { + "name": "Polymaker PETG @Sovol SV08 MAX", + "sub_path": "filament/Polymaker PETG @Sovol SV08 MAX.json" + }, + { + "name": "SUNLU PETG @Sovol SV08 MAX", + "sub_path": "filament/SUNLU PETG @Sovol SV08 MAX.json" + }, + { + "name": "Sovol Zero PETG HS Nozzle", + "sub_path": "filament/Sovol Zero PETG HS Nozzle.json" + }, + { + "name": "Sovol Zero PLA Basic HS Nozzle", + "sub_path": "filament/Sovol Zero PLA Basic HS Nozzle.json" + }, + { + "name": "Sovol Zero PLA Silk HS Nozzle", + "sub_path": "filament/Sovol Zero PLA Silk HS Nozzle.json" } ], "machine_list": [ diff --git a/resources/profiles/Tiertime.json b/resources/profiles/Tiertime.json index 8134d621df..0aab493c03 100644 --- a/resources/profiles/Tiertime.json +++ b/resources/profiles/Tiertime.json @@ -360,14 +360,6 @@ "name": "fdm_filament_tpu", "sub_path": "filament/fdm_filament_tpu.json" }, - { - "name": "Tiertime ABS", - "sub_path": "filament/Tiertime ABS.json" - }, - { - "name": "Tiertime ABS@300HS", - "sub_path": "filament/Tiertime ABS@300HS.json" - }, { "name": "Generic ABS @Tiertime", "sub_path": "filament/Generic ABS @Tiertime.json" @@ -377,12 +369,12 @@ "sub_path": "filament/Generic ABS @Tiertime 300HS.json" }, { - "name": "Tiertime ASA", - "sub_path": "filament/Tiertime ASA.json" + "name": "Tiertime ABS", + "sub_path": "filament/Tiertime ABS.json" }, { - "name": "Tiertime ASA@300HS", - "sub_path": "filament/Tiertime ASA@300HS.json" + "name": "Tiertime ABS@300HS", + "sub_path": "filament/Tiertime ABS@300HS.json" }, { "name": "Generic ASA @Tiertime", @@ -392,6 +384,14 @@ "name": "Generic ASA @Tiertime 300HS", "sub_path": "filament/Generic ASA @Tiertime 300HS.json" }, + { + "name": "Tiertime ASA", + "sub_path": "filament/Tiertime ASA.json" + }, + { + "name": "Tiertime ASA@300HS", + "sub_path": "filament/Tiertime ASA@300HS.json" + }, { "name": "Generic BVOH @Tiertime", "sub_path": "filament/Generic BVOH @Tiertime.json" @@ -420,6 +420,10 @@ "name": "Generic PA @Tiertime", "sub_path": "filament/Generic PA @Tiertime.json" }, + { + "name": "Generic PA @Tiertime 300HS", + "sub_path": "filament/Generic PA @Tiertime 300HS.json" + }, { "name": "Generic PA-CF @Tiertime", "sub_path": "filament/Generic PA-CF @Tiertime.json" @@ -428,10 +432,6 @@ "name": "Generic PA-CF @Tiertime 300HS", "sub_path": "filament/Generic PA-CF @Tiertime 300HS.json" }, - { - "name": "Generic PA @Tiertime 300HS", - "sub_path": "filament/Generic PA @Tiertime 300HS.json" - }, { "name": "Tiertime PA6-CF", "sub_path": "filament/Tiertime PA6-CF.json" @@ -468,6 +468,10 @@ "name": "Generic PE @Tiertime", "sub_path": "filament/Generic PE @Tiertime.json" }, + { + "name": "Generic PE @Tiertime 300HS", + "sub_path": "filament/Generic PE @Tiertime 300HS.json" + }, { "name": "Generic PE-CF @Tiertime", "sub_path": "filament/Generic PE-CF @Tiertime.json" @@ -476,14 +480,14 @@ "name": "Generic PE-CF @Tiertime 300HS", "sub_path": "filament/Generic PE-CF @Tiertime 300HS.json" }, - { - "name": "Generic PE @Tiertime 300HS", - "sub_path": "filament/Generic PE @Tiertime 300HS.json" - }, { "name": "Generic PETG @Tiertime", "sub_path": "filament/Generic PETG @Tiertime.json" }, + { + "name": "Generic PETG @Tiertime 300HS", + "sub_path": "filament/Generic PETG @Tiertime 300HS.json" + }, { "name": "Generic PETG-CF @Tiertime", "sub_path": "filament/Generic PETG-CF @Tiertime.json" @@ -492,10 +496,6 @@ "name": "Generic PETG-CF @Tiertime 300HS", "sub_path": "filament/Generic PETG-CF @Tiertime 300HS.json" }, - { - "name": "Generic PETG @Tiertime 300HS", - "sub_path": "filament/Generic PETG @Tiertime 300HS.json" - }, { "name": "Tiertime PET-CF", "sub_path": "filament/Tiertime PET-CF.json" @@ -524,6 +524,10 @@ "name": "Generic PLA @Tiertime", "sub_path": "filament/Generic PLA @Tiertime.json" }, + { + "name": "Generic PLA @Tiertime 300HS", + "sub_path": "filament/Generic PLA @Tiertime 300HS.json" + }, { "name": "Generic PLA High Speed @Tiertime", "sub_path": "filament/Generic PLA High Speed @Tiertime.json" @@ -548,10 +552,6 @@ "name": "Generic PLA-CF @Tiertime 300HS", "sub_path": "filament/Generic PLA-CF @Tiertime 300HS.json" }, - { - "name": "Generic PLA @Tiertime 300HS", - "sub_path": "filament/Generic PLA @Tiertime 300HS.json" - }, { "name": "Tiertime PLA", "sub_path": "filament/Tiertime PLA.json" @@ -572,6 +572,10 @@ "name": "Generic PP @Tiertime", "sub_path": "filament/Generic PP @Tiertime.json" }, + { + "name": "Generic PP @Tiertime 300HS", + "sub_path": "filament/Generic PP @Tiertime 300HS.json" + }, { "name": "Generic PP-CF @Tiertime", "sub_path": "filament/Generic PP-CF @Tiertime.json" @@ -588,10 +592,6 @@ "name": "Generic PP-GF @Tiertime 300HS", "sub_path": "filament/Generic PP-GF @Tiertime 300HS.json" }, - { - "name": "Generic PP @Tiertime 300HS", - "sub_path": "filament/Generic PP @Tiertime 300HS.json" - }, { "name": "Generic PPA-CF @Tiertime", "sub_path": "filament/Generic PPA-CF @Tiertime.json" @@ -612,6 +612,10 @@ "name": "Generic PPS @Tiertime", "sub_path": "filament/Generic PPS @Tiertime.json" }, + { + "name": "Generic PPS @Tiertime 300HS", + "sub_path": "filament/Generic PPS @Tiertime 300HS.json" + }, { "name": "Generic PPS-CF @Tiertime", "sub_path": "filament/Generic PPS-CF @Tiertime.json" @@ -620,10 +624,6 @@ "name": "Generic PPS-CF @Tiertime 300HS", "sub_path": "filament/Generic PPS-CF @Tiertime 300HS.json" }, - { - "name": "Generic PPS @Tiertime 300HS", - "sub_path": "filament/Generic PPS @Tiertime 300HS.json" - }, { "name": "Generic PVA @Tiertime", "sub_path": "filament/Generic PVA @Tiertime.json" diff --git a/resources/profiles/TwoTrees.json b/resources/profiles/TwoTrees.json index 3cd77c911b..7817792c99 100644 --- a/resources/profiles/TwoTrees.json +++ b/resources/profiles/TwoTrees.json @@ -80,13 +80,13 @@ } ], "filament_list": [ - { - "name": "Generic TPU 95A @TwoTrees SK1", - "sub_path": "filament/Generic TPU 95A @TwoTrees SK1.json" - }, { "name": "Generic HS PLA @TwoTrees SK1", "sub_path": "filament/Generic HS PLA @TwoTrees SK1.json" + }, + { + "name": "Generic TPU 95A @TwoTrees SK1", + "sub_path": "filament/Generic TPU 95A @TwoTrees SK1.json" } ], "machine_list": [ diff --git a/resources/profiles/blacklist.json b/resources/profiles/blacklist.json index 2c036613fc..6c16b5ae5d 100644 --- a/resources/profiles/blacklist.json +++ b/resources/profiles/blacklist.json @@ -4,9 +4,5 @@ ], "process": [ "GP008" - ], - "machine_model_list": [], - "process_list": [], - "filament_list": [], - "machine_list": [] + ] } diff --git a/resources/profiles/iQ.json b/resources/profiles/iQ.json index 050a0a2eb2..4b1f83b354 100644 --- a/resources/profiles/iQ.json +++ b/resources/profiles/iQ.json @@ -56,6 +56,14 @@ "name": "fdm_process_tiq_common", "sub_path": "process/fdm_process_tiq_common.json" }, + { + "name": "0.15mm Standard @iQ TiQ2 (0.25 Nozzle)", + "sub_path": "process/0.15mm Standard @iQ TiQ2 (0.25 Nozzle).json" + }, + { + "name": "0.15mm Standard @iQ TiQ8 (0.25 Nozzle)", + "sub_path": "process/0.15mm Standard @iQ TiQ8 (0.25 Nozzle).json" + }, { "name": "0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle)", "sub_path": "process/0.20mm Standard @iQ TiQ2 P1 - HPP4GF25 Grauts (0.4 Nozzle).json" @@ -76,26 +84,18 @@ "name": "0.20mm Standard @iQ TiQ8 P1 - ABS Natur Material4Print (0.4 Nozzle)", "sub_path": "process/0.20mm Standard @iQ TiQ8 P1 - ABS Natur Material4Print (0.4 Nozzle).json" }, - { - "name": "0.15mm Standard @iQ TiQ2 (0.25 Nozzle)", - "sub_path": "process/0.15mm Standard @iQ TiQ2 (0.25 Nozzle).json" - }, { "name": "0.30mm Standard @iQ TiQ2 (0.6 Nozzle)", "sub_path": "process/0.30mm Standard @iQ TiQ2 (0.6 Nozzle).json" }, - { - "name": "0.40mm Standard @iQ TiQ2 (0.8 Nozzle)", - "sub_path": "process/0.40mm Standard @iQ TiQ2 (0.8 Nozzle).json" - }, - { - "name": "0.15mm Standard @iQ TiQ8 (0.25 Nozzle)", - "sub_path": "process/0.15mm Standard @iQ TiQ8 (0.25 Nozzle).json" - }, { "name": "0.30mm Standard @iQ TiQ8 (0.6 Nozzle)", "sub_path": "process/0.30mm Standard @iQ TiQ8 (0.6 Nozzle).json" }, + { + "name": "0.40mm Standard @iQ TiQ2 (0.8 Nozzle)", + "sub_path": "process/0.40mm Standard @iQ TiQ2 (0.8 Nozzle).json" + }, { "name": "0.40mm Standard @iQ TiQ8 (0.8 Nozzle)", "sub_path": "process/0.40mm Standard @iQ TiQ8 (0.8 Nozzle).json" diff --git a/resources/profiles/re3D.json b/resources/profiles/re3D.json index 7a66cb4ce1..52ad3a3fc5 100644 --- a/resources/profiles/re3D.json +++ b/resources/profiles/re3D.json @@ -1,199 +1,199 @@ { - "name": "re3D", - "url": "", - "version": "03.00.10", - "force_update": "0", - "description": "re3D configurations", - "machine_model_list": [ - { - "name": "re3D Gigabot 4", - "sub_path": "machine/re3D Gigabot 4.json" - }, - { - "name": "re3D Gigabot 4 XLT", - "sub_path": "machine/re3D Gigabot 4 XLT.json" - }, - { - "name": "re3D GigabotX 2", - "sub_path": "machine/re3D GigabotX 2.json" - }, - { - "name": "re3D GigabotX 2 XLT", - "sub_path": "machine/re3D GigabotX 2 XLT.json" - }, - { - "name": "re3D Terabot 4", - "sub_path": "machine/re3D Terabot 4.json" - }, - { - "name": "re3D TerabotX 2", - "sub_path": "machine/re3D TerabotX 2.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "fdm_process_re3D_common", - "sub_path": "process/fdm_process_re3D_common.json" - }, - { - "name": "fgf_process_re3D_common", - "sub_path": "process/fgf_process_re3D_common.json" - }, - { - "name": "0.2 Fine", - "sub_path": "process/0.2mm Fine @re3D fdm 0.4.json" - }, - { - "name": "0.26 Standard", - "sub_path": "process/0.26mm Standard @re3D fdm 0.4.json" - }, - { - "name": "0.32 Draft", - "sub_path": "process/0.32mm Draft @re3D fdm 0.4.json" - }, - { - "name": "0.3 Fine", - "sub_path": "process/0.3mm Fine @re3D fdm 0.8.json" - }, - { - "name": "0.4 Standard", - "sub_path": "process/0.4mm Draft @re3D fdm 0.8.json" - }, - { - "name": "1.0 Standard", - "sub_path": "process/1.0mm Standard @re3D fgf 1.75.json" - }, - { - "name": "0.6 Standard", - "sub_path": "process/0.6mm Standard @re3D fgf 0.8.json" - } - ], - "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_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_pp", - "sub_path": "filament/fdm_filament_pp.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "re3D PLA @0.4 nozzle", - "sub_path": "filament/re3D PLA @0.4 nozzle.json" - }, - { - "name": "re3D PLA @0.8 nozzle", - "sub_path": "filament/re3D PLA @0.8 nozzle.json" - }, - { - "name": "re3D PETG @0.4 nozzle", - "sub_path": "filament/re3D PETG @0.4 nozzle.json" - }, - { - "name": "re3D PETG @0.8 nozzle", - "sub_path": "filament/re3D PETG @0.8 nozzle.json" - }, - { - "name": "re3D PC @0.4 nozzle", - "sub_path": "filament/re3D PC @0.4 nozzle.json" - }, - { - "name": "re3D PC @0.8 nozzle", - "sub_path": "filament/re3D PC @0.8 nozzle.json" - }, - { - "name": "re3D rPETG @0.8 nozzle", - "sub_path": "filament/re3D rPETG @0.8 nozzle.json" - }, - { - "name": "re3D rPETG @1.75 nozzle", - "sub_path": "filament/re3D rPETG @1.75 nozzle.json" - }, - { - "name": "re3D rPP @0.8 nozzle", - "sub_path": "filament/re3D rPP @0.8 nozzle.json" - }, - { - "name": "re3D rPP @1.75 nozzle", - "sub_path": "filament/re3D rPP @1.75 nozzle.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "fdm_re3D_common", - "sub_path": "machine/fdm_re3D_common.json" - }, - { - "name": "fgf_re3D_common", - "sub_path": "machine/fgf_re3D_common.json" - }, - { - "name": "re3D Gigabot 4 0.4 nozzle", - "sub_path": "machine/re3D Gigabot 4 0.4 nozzle.json" - }, - { - "name": "re3D Gigabot 4 0.8 nozzle", - "sub_path": "machine/re3D Gigabot 4 0.8 nozzle.json" - }, - { - "name": "re3D Gigabot 4 XLT 0.4 nozzle", - "sub_path": "machine/re3D Gigabot 4 XLT 0.4 nozzle.json" - }, - { - "name": "re3D Gigabot 4 XLT 0.8 nozzle", - "sub_path": "machine/re3D Gigabot 4 XLT 0.8 nozzle.json" - }, - { - "name": "re3D GigabotX 2 0.8 nozzle", - "sub_path": "machine/re3D GigabotX 2 0.8 nozzle.json" - }, - { - "name": "re3D GigabotX 2 1.75 nozzle", - "sub_path": "machine/re3D GigabotX 2 1.75 nozzle.json" - }, - { - "name": "re3D GigabotX 2 XLT 0.8 nozzle", - "sub_path": "machine/re3D GigabotX 2 XLT 0.8 nozzle.json" - }, - { - "name": "re3D GigabotX 2 XLT 1.75 nozzle", - "sub_path": "machine/re3D GigabotX 2 XLT 1.75 nozzle.json" - }, - { - "name": "re3D Terabot 4 0.4 nozzle", - "sub_path": "machine/re3D Terabot 4 0.4 nozzle.json" - }, - { - "name": "re3D Terabot 4 0.8 nozzle", - "sub_path": "machine/re3D Terabot 4 0.8 nozzle.json" - }, - { - "name": "re3D TerabotX 2 0.8 nozzle", - "sub_path": "machine/re3D TerabotX 2 0.8 nozzle.json" - }, - { - "name": "re3D TerabotX 2 1.75 nozzle", - "sub_path": "machine/re3D TerabotX 2 1.75 nozzle.json" - } - ] -} \ No newline at end of file + "name": "re3D", + "url": "", + "version": "03.00.10", + "force_update": "0", + "description": "re3D configurations", + "machine_model_list": [ + { + "name": "re3D Gigabot 4", + "sub_path": "machine/re3D Gigabot 4.json" + }, + { + "name": "re3D Gigabot 4 XLT", + "sub_path": "machine/re3D Gigabot 4 XLT.json" + }, + { + "name": "re3D GigabotX 2", + "sub_path": "machine/re3D GigabotX 2.json" + }, + { + "name": "re3D GigabotX 2 XLT", + "sub_path": "machine/re3D GigabotX 2 XLT.json" + }, + { + "name": "re3D Terabot 4", + "sub_path": "machine/re3D Terabot 4.json" + }, + { + "name": "re3D TerabotX 2", + "sub_path": "machine/re3D TerabotX 2.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "fdm_process_re3D_common", + "sub_path": "process/fdm_process_re3D_common.json" + }, + { + "name": "fgf_process_re3D_common", + "sub_path": "process/fgf_process_re3D_common.json" + }, + { + "name": "0.2 Fine", + "sub_path": "process/0.2mm Fine @re3D fdm 0.4.json" + }, + { + "name": "0.26 Standard", + "sub_path": "process/0.26mm Standard @re3D fdm 0.4.json" + }, + { + "name": "0.3 Fine", + "sub_path": "process/0.3mm Fine @re3D fdm 0.8.json" + }, + { + "name": "0.32 Draft", + "sub_path": "process/0.32mm Draft @re3D fdm 0.4.json" + }, + { + "name": "0.4 Standard", + "sub_path": "process/0.4mm Draft @re3D fdm 0.8.json" + }, + { + "name": "0.6 Standard", + "sub_path": "process/0.6mm Standard @re3D fgf 0.8.json" + }, + { + "name": "1.0 Standard", + "sub_path": "process/1.0mm Standard @re3D fgf 1.75.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_pp", + "sub_path": "filament/fdm_filament_pp.json" + }, + { + "name": "re3D PC @0.4 nozzle", + "sub_path": "filament/re3D PC @0.4 nozzle.json" + }, + { + "name": "re3D PC @0.8 nozzle", + "sub_path": "filament/re3D PC @0.8 nozzle.json" + }, + { + "name": "re3D PETG @0.4 nozzle", + "sub_path": "filament/re3D PETG @0.4 nozzle.json" + }, + { + "name": "re3D PETG @0.8 nozzle", + "sub_path": "filament/re3D PETG @0.8 nozzle.json" + }, + { + "name": "re3D rPETG @0.8 nozzle", + "sub_path": "filament/re3D rPETG @0.8 nozzle.json" + }, + { + "name": "re3D rPETG @1.75 nozzle", + "sub_path": "filament/re3D rPETG @1.75 nozzle.json" + }, + { + "name": "re3D PLA @0.4 nozzle", + "sub_path": "filament/re3D PLA @0.4 nozzle.json" + }, + { + "name": "re3D PLA @0.8 nozzle", + "sub_path": "filament/re3D PLA @0.8 nozzle.json" + }, + { + "name": "re3D rPP @0.8 nozzle", + "sub_path": "filament/re3D rPP @0.8 nozzle.json" + }, + { + "name": "re3D rPP @1.75 nozzle", + "sub_path": "filament/re3D rPP @1.75 nozzle.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_re3D_common", + "sub_path": "machine/fdm_re3D_common.json" + }, + { + "name": "fgf_re3D_common", + "sub_path": "machine/fgf_re3D_common.json" + }, + { + "name": "re3D Gigabot 4 0.4 nozzle", + "sub_path": "machine/re3D Gigabot 4 0.4 nozzle.json" + }, + { + "name": "re3D Gigabot 4 0.8 nozzle", + "sub_path": "machine/re3D Gigabot 4 0.8 nozzle.json" + }, + { + "name": "re3D Gigabot 4 XLT 0.4 nozzle", + "sub_path": "machine/re3D Gigabot 4 XLT 0.4 nozzle.json" + }, + { + "name": "re3D Gigabot 4 XLT 0.8 nozzle", + "sub_path": "machine/re3D Gigabot 4 XLT 0.8 nozzle.json" + }, + { + "name": "re3D Terabot 4 0.4 nozzle", + "sub_path": "machine/re3D Terabot 4 0.4 nozzle.json" + }, + { + "name": "re3D Terabot 4 0.8 nozzle", + "sub_path": "machine/re3D Terabot 4 0.8 nozzle.json" + }, + { + "name": "re3D GigabotX 2 0.8 nozzle", + "sub_path": "machine/re3D GigabotX 2 0.8 nozzle.json" + }, + { + "name": "re3D GigabotX 2 1.75 nozzle", + "sub_path": "machine/re3D GigabotX 2 1.75 nozzle.json" + }, + { + "name": "re3D GigabotX 2 XLT 0.8 nozzle", + "sub_path": "machine/re3D GigabotX 2 XLT 0.8 nozzle.json" + }, + { + "name": "re3D GigabotX 2 XLT 1.75 nozzle", + "sub_path": "machine/re3D GigabotX 2 XLT 1.75 nozzle.json" + }, + { + "name": "re3D TerabotX 2 0.8 nozzle", + "sub_path": "machine/re3D TerabotX 2 0.8 nozzle.json" + }, + { + "name": "re3D TerabotX 2 1.75 nozzle", + "sub_path": "machine/re3D TerabotX 2 1.75 nozzle.json" + } + ] +} diff --git a/scripts/check_profile.ps1 b/scripts/check_profile.ps1 index 66ed33c31d..b5d3345e33 100644 --- a/scripts/check_profile.ps1 +++ b/scripts/check_profile.ps1 @@ -9,12 +9,17 @@ same semantics: every check runs even after an earlier one fails (the workflow's continue-on-error), then the script exits non-zero once at the end. - extra_json_check scripts/orca_extra_profile_check.py + profile_tool scripts/orca_profile_tool.py check validate_system validator -p -l validate_slice validator -p -s -l validate_filament_subtypes validator -p -l -f validate_custom validator against every released custom-preset fixture + profile_tool is the only check that is not the validator binary; it makes the static checks + the validator cannot, because the validator loads the tree the way the slicer does and so + never sees a profile no .json indexes, a preset name two files claim, or a file + normalize and update-index would still rewrite. + Everything that has to be downloaded - the profile validator and the custom-preset fixture archives - lands under \.test\check_profiles and is reused on the next run. That directory also holds one log per check plus a copy of the comment CI would post on the PR. @@ -33,15 +38,15 @@ under emulation on ARM64. .PARAMETER ProfilesDir - Profile tree to validate (default: resources\profiles). extra_json_check always looks at the + Profile tree to validate (default: resources\profiles). profile_tool always looks at the tree next to the script, so this only redirects the validator checks. .PARAMETER Vendor Check only this vendor, named after its .json (e.g. "Co Print"). validate_custom is narrowed with it too, by keeping only that vendor's presets in each fixture tree. The one check it cannot narrow is validate_slice for a vendor that ships no printers; the summary - reports that one as skipped, and naming it explicitly still runs it. extra_json_check keeps - its two cross-vendor checks (setting_id and filament_id) tree-wide, so a scoped run can still + reports that one as skipped, and naming it explicitly still runs it. profile_tool keeps its + two cross-vendor checks (setting_id and filament_id) tree-wide, so a scoped run can still fail on another vendor's files. .PARAMETER Validator @@ -110,7 +115,7 @@ $HostArch = switch ($HostArch) { default { 'x86' } } -$AllChecks = @('extra_json_check', 'validate_system', 'validate_slice', 'validate_filament_subtypes', 'validate_custom') +$AllChecks = @('profile_tool', 'validate_system', 'validate_slice', 'validate_filament_subtypes', 'validate_custom') $script:LogWriter = $null $script:Python = '' @@ -203,7 +208,7 @@ if ($Vendor) { } } -# The validator's -v and orca_extra_profile_check.py's --vendor both take that stem; an unscoped +# The validator's -v and orca_profile_tool.py check's --vendor both take that stem; an unscoped # run passes neither, so the checks below splat these in either way. $VendorArgs = if ($Vendor) { @('-v', $Vendor) } else { @() } $VendorPyArgs = if ($Vendor) { @('--vendor', $Vendor) } else { @() } @@ -434,8 +439,8 @@ function Expand-VendorPresets([string] $Zip, [string] $Tree, [string] $Prefix) { $CheckBodies = @{ - extra_json_check = { - Invoke-Tool -Exe (Resolve-Python) -Arguments (@((Join-Path $RepoRoot 'scripts\orca_extra_profile_check.py')) + $VendorPyArgs) + profile_tool = { + Invoke-Tool -Exe (Resolve-Python) -Arguments (@((Join-Path $RepoRoot 'scripts\orca_profile_tool.py'), 'check') + $VendorPyArgs) } validate_system = { @@ -571,7 +576,7 @@ $CheckBodies = @{ # Heading CI puts above this check's log in the PR comment. $CommentHeadings = @{ - extra_json_check = '### Extra JSON Check Failed' + profile_tool = '### Profile Check Failed (orca_profile_tool.py)' validate_system = '### System Profile Validation Failed' validate_slice = '### Slice Validation Failed (custom g-code expansion)' validate_filament_subtypes = '### Filament Subtype Validation Failed' @@ -618,7 +623,7 @@ try { [Console]::OutputEncoding = New-Object Text.UTF8Encoding($false) Push-UserPresets - if ($Checks | Where-Object { $_ -ne 'extra_json_check' }) { $Validator = Resolve-Validator } + if ($Checks | Where-Object { $_ -ne 'profile_tool' }) { $Validator = Resolve-Validator } # An empty printer set is a failure to the sweep, so validate_slice is recorded as skipped # rather than run for a vendor that ships no printers (the filament-only OrcaFilamentLibrary); @@ -673,7 +678,7 @@ try { '' } '---' - '*Please fix the above errors and push a new commit.*' + '*Fix the errors above and push a new commit. To reproduce this run locally: `scripts/check_profile.sh`, or `scripts\check_profile.bat` on Windows.*' ) $commentPath = Join-Path $WorkDir 'pr_comment.md' [IO.File]::WriteAllLines($commentPath, [string[]] $comment) diff --git a/scripts/check_profile.sh b/scripts/check_profile.sh index 51c8599b60..9076c957ab 100755 --- a/scripts/check_profile.sh +++ b/scripts/check_profile.sh @@ -38,7 +38,7 @@ PROFILES_DIR="${REPO_ROOT}/resources/profiles" WORK_DIR="${REPO_ROOT}/.test/check_profiles" VALIDATOR="${ORCA_PROFILE_VALIDATOR:-}" # Vendor to check, named after its .json - empty means every vendor, which is exactly what -# both the validator's -v and orca_extra_profile_check.py's --vendor take an empty value to mean. +# both the validator's -v and orca_profile_tool.py check's --vendor take an empty value to mean. # So the flag is passed unconditionally below rather than kept in an array bash 3.2 cannot expand # empty under `set -u`. VENDOR="" @@ -46,7 +46,7 @@ LOG_LEVEL=2 PREFER_DOWNLOAD=0 REFRESH=0 -ALL_CHECKS=(extra_json_check validate_system validate_slice validate_filament_subtypes validate_custom) +ALL_CHECKS=(profile_tool validate_system validate_slice validate_filament_subtypes validate_custom) CHECKS=() # "pass|fail" per check that ran, plus "skipwhy" for one a vendor # scope left out; a string rather than an array because bash 3.2 (still the /bin/bash on macOS) @@ -60,7 +60,7 @@ Run the profile checks from .github/workflows/check_profiles.yml locally. Usage: scripts/check_profile.sh [OPTION]... [CHECK]... Checks (default: all, in this order): - extra_json_check scripts/orca_extra_profile_check.py + profile_tool scripts/orca_profile_tool.py check validate_system validator -p -l validate_slice validator -p -s -l validate_filament_subtypes validator -p -l -f @@ -79,14 +79,18 @@ Options: -l, --log-level N validator log level (default: ${LOG_LEVEL}, as in CI) -h, --help show this help -Note: extra_json_check always looks at the tree next to the script -(/resources/profiles); --profiles only redirects the validator checks. +Note: profile_tool is the only check that is not the validator binary; it makes the static +checks the validator cannot, because the validator loads the tree the way the slicer does +and so never sees a profile no .json indexes, a preset name two files claim, or a +file normalize and update-index would still rewrite. It always looks at the tree next to +the script (/resources/profiles); --profiles only redirects the validator checks, +because validating another tree's ids needs that tree's own filament_id snapshot too. Note: --vendor narrows validate_custom too, by keeping only that vendor's presets in each fixture tree. The one check it cannot narrow is validate_slice for a vendor that ships no printers; the summary reports that one as skipped, and naming it explicitly still runs it. -extra_json_check keeps its two cross-vendor checks (setting_id and filament_id) tree-wide, -so a scoped run can still fail on another vendor's files. +profile_tool keeps its two cross-vendor checks (setting_id and filament_id) tree-wide, so a +scoped run can still fail on another vendor's files. EOF } @@ -361,8 +365,8 @@ resolve_validator() { # ---------------------------------------------------------------------------- checks -check_extra_json_check() { - python3 "${REPO_ROOT}/scripts/orca_extra_profile_check.py" --vendor "${VENDOR}" +check_profile_tool() { + python3 "${REPO_ROOT}/scripts/orca_profile_tool.py" check --vendor "${VENDOR}" } check_validate_system() { @@ -548,7 +552,7 @@ EOF # Heading CI puts above this check's log in the PR comment. comment_heading() { case "$1" in - extra_json_check) echo "### Extra JSON Check Failed" ;; + profile_tool) echo "### Profile Check Failed (orca_profile_tool.py)" ;; validate_system) echo "### System Profile Validation Failed" ;; validate_slice) echo "### Slice Validation Failed (custom g-code expansion)" ;; validate_filament_subtypes) echo "### Filament Subtype Validation Failed" ;; @@ -638,7 +642,9 @@ fi ${RESULTS} INNER echo "---" - echo "*Please fix the above errors and push a new commit.*" + # Single-quoted on purpose: the backticks below are markdown, not command substitution. + # shellcheck disable=SC2016 + echo '*Fix the errors above and push a new commit. To reproduce this run locally: `scripts/check_profile.sh`, or `scripts\check_profile.bat` on Windows.*' } > "${WORK_DIR}/pr_comment.md" printf '\n%sOne or more profile checks failed.%s Logs: %s\n' "${C_RED}" "${C_RESET}" "${LOG_DIR}" diff --git a/scripts/orca_extra_profile_check.py b/scripts/orca_extra_profile_check.py deleted file mode 100644 index e95e2c29e8..0000000000 --- a/scripts/orca_extra_profile_check.py +++ /dev/null @@ -1,660 +0,0 @@ -import os -import json -import argparse -from pathlib import Path - -from orca_id_tool import generate_preset_setting_id, check_filament_ids - -OBSOLETE_KEYS = { - "acceleration", "scale", "rotate", "duplicate", "duplicate_grid", - "bed_size", "print_center", "g0", "wipe_tower_per_color_wipe", - "support_sharp_tails", "support_remove_small_overhangs", "support_with_sheath", - "tree_support_collision_resolution", "tree_support_with_infill", - "max_volumetric_speed", "max_print_speed", "support_closing_radius", - "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", - "support_transition_line_width", "support_transition_speed", "bed_temperature", - "bed_temperature_initial_layer", "can_switch_nozzle_type", "can_add_auxiliary_fan", - "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", - "z_hop_type", "z_lift_type", "bed_temperature_difference", "long_retraction_when_cut", - "retraction_distance_when_cut", "extruder_type", "internal_bridge_support_thickness", - "extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill", - "filament_load_time", "filament_unload_time", "smooth_coefficient", - "overhang_totally_speed", "silent_mode", "overhang_speed_classic" -} - -# Utility functions for printing messages in different colors. -def print_error(msg): - print(f"\033[91m[ERROR]\033[0m {msg}") # Red - -def print_warning(msg): - print(f"\033[93m[WARNING]\033[0m {msg}") # Yellow - -def print_info(msg): - print(f"\033[94m[INFO]\033[0m {msg}") # Blue - -def print_success(msg): - print(f"\033[92m[SUCCESS]\033[0m {msg}") # Green - - -# Add helper function for duplicate key detection. -def no_duplicates_object_pairs_hook(pairs): - seen = {} - for key, value in pairs: - if key in seen: - raise ValueError(f"Duplicate key detected: {key}") - seen[key] = value - return seen - -# NOTE: currently Orca expects compatible_printers to be a defined in every instantiation profile, inheritation is not supported in Profile page -def check_filament_compatible_printers(vendor, vendor_folder): - """ - Checks JSON files in the vendor folder for missing or empty 'compatible_printers' - when 'instantiation' is flagged as true. - - In the OrcaFilamentLibrary 'compatible_printers' is optional: a profile without it is generic and - offered on every printer, while a profile that lists printers supersedes the generic one there. - - Parameters: - vendor (str): The vendor name the folder belongs to. - vendor_folder (str or Path): The directory to search for JSON profile files. - - Returns: - int: The number of profiles with missing or empty 'compatible_printers'. - """ - error = 0 - vendor_path = Path(vendor_folder) - if not vendor_path.exists(): - return 0 - - profiles = {} - - # Use rglob to recursively find .json files. - for file_path in vendor_path.rglob("*.json"): - if file_path.name == 'filaments_color_codes.json': # Ignore non-profile file - continue - - try: - with open(file_path, 'r', encoding='UTF-8') as fp: - # Use custom hook to detect duplicates. - data = json.load(fp, object_pairs_hook=no_duplicates_object_pairs_hook) - except ValueError as ve: - print_error(f"Duplicate key error in {file_path}: {ve}") - error += 1 - continue - except Exception as e: - print_error(f"Error processing {file_path}: {e}") - error += 1 - continue - - profile_name = data['name'] - if profile_name in profiles: - print_error(f"Duplicated profile {profile_name}: {file_path}") - error += 1 - continue - - profiles[profile_name] = { - 'file_path': file_path, - 'content': data, - } - - def get_property(profile, key): - content = profile['content'] - if key in content: - return content[key] - return None - - def get_inherit_property(profile, key): - content = profile['content'] - if key in content: - return content[key] - - if 'inherits' in content: - inherits = content['inherits'] - if inherits not in profiles: - raise ValueError(f"Parent profile not found: {inherits}, referenced in {profile['file_path']}") - - return get_inherit_property(profiles[inherits], key) - - return None - - for profile in profiles.values(): - instantiation = str(profile['content'].get("instantiation", "")).lower() == "true" - if instantiation and vendor != 'OrcaFilamentLibrary': - try: - compatible_printers = get_property(profile, "compatible_printers") - if not compatible_printers or (isinstance(compatible_printers, list) and not compatible_printers): - print_error(f"'compatible_printers' missing in {profile['file_path']}") - error += 1 - except ValueError as ve: - print_error(f"Unable to parse {profile['file_path']}: {ve}") - error += 1 - continue - - return error - -def load_available_filament_profiles(profiles_dir, vendor_name): - """ - Load all available filament profiles from a vendor's directory. - - Parameters: - profiles_dir (Path): The directory containing vendor profile directories - vendor_name (str): The name of the vendor directory - - Returns: - set: A set of filament profile names - """ - profiles = set() - vendor_path = profiles_dir / vendor_name / "filament" - - if not vendor_path.exists(): - return profiles - - for file_path in vendor_path.rglob("*.json"): - try: - with open(file_path, 'r', encoding='UTF-8') as fp: - data = json.load(fp) - if "name" in data: - profiles.add(data["name"]) - except Exception as e: - print_error(f"Error loading filament profile {file_path}: {e}") - - return profiles - -def check_machine_default_materials(profiles_dir, vendor_name): - """ - Checks if default materials referenced in machine profiles exist in - the vendor's filament library or in the global OrcaFilamentLibrary. - - Parameters: - profiles_dir (Path): The base profiles directory - vendor_name (str): The vendor name to check - - Returns: - int: Number of missing filament references found - int: the number of warnings found (0 or 1) - """ - error_count = 0 - machine_dir = profiles_dir / vendor_name / "machine" - - if not machine_dir.exists(): - print_warning(f"No machine profiles found for vendor: {vendor_name}") - return 0, 1 - - # Load available filament profiles - vendor_filaments = load_available_filament_profiles(profiles_dir, vendor_name) - global_filaments = load_available_filament_profiles(profiles_dir, "OrcaFilamentLibrary") - all_available_filaments = vendor_filaments.union(global_filaments) - - # Check each machine profile - for file_path in machine_dir.rglob("*.json"): - try: - with open(file_path, 'r', encoding='UTF-8') as fp: - data = json.load(fp) - - default_materials = None - if "default_materials" in data: - default_materials = data["default_materials"] - elif "default_filament_profile" in data: - default_materials = data["default_filament_profile"] - - if default_materials: - if isinstance(default_materials, list): - for material in default_materials: - if material not in all_available_filaments: - print_error(f"Missing filament profile: '{material}' referenced in {file_path.relative_to(profiles_dir)}") - error_count += 1 - else: - # Handle semicolon-separated list of materials in a string - if ";" in default_materials: - for material in default_materials.split(";"): - material = material.strip() - if material and material not in all_available_filaments: - print_error(f"Missing filament profile: '{material}' referenced in {file_path.relative_to(profiles_dir)}") - error_count += 1 - else: - # Single material in a string - if default_materials not in all_available_filaments: - print_error(f"Missing filament profile: '{default_materials}' referenced in {file_path.relative_to(profiles_dir)}") - error_count += 1 - - except Exception as e: - print_error(f"Error processing machine profile {file_path}: {e}") - error_count += 1 - - return error_count, 0 - -def check_name_consistency(profiles_dir, vendor_name): - """ - Make sure filament profile names match in both vendor json and subpath files. - Filament profiles work only if the name in .json matches the name in sub_path file, - or if it's one of the sub_path file's `renamed_from`. - - Parameters: - profiles_dir (Path): Base profiles directory - vendor_name (str): Vendor name - - Returns: - int: Number of errors found - int: Number of warnings found (0 or 1) - """ - error_count = 0 - vendor_dir = profiles_dir / vendor_name - vendor_file = profiles_dir / (vendor_name + ".json") - - if not vendor_file.exists(): - print_warning(f"No profiles found for vendor: {vendor_name} at {vendor_file}") - return 0, 1 - - try: - with open(vendor_file, 'r', encoding='UTF-8') as fp: - data = json.load(fp) - except Exception as e: - print_error(f"Error loading vendor profile {vendor_file}: {e}") - return 1, 0 - - for section in ['filament_list', 'machine_model_list', 'machine_list', 'process_list']: - if section not in data: - continue - - for child in data[section]: - name_in_vendor = child['name'] - sub_path = child['sub_path'] - sub_file = vendor_dir / sub_path - - if not sub_file.exists(): - print_error(f"Missing sub profile: '{sub_path}' declared in {vendor_file.relative_to(profiles_dir)}") - error_count += 1 - continue - - try: - with open(sub_file, 'r', encoding='UTF-8') as fp: - sub_data = json.load(fp) - except Exception as e: - print_error(f"Error loading profile {sub_file}: {e}") - error_count += 1 - continue - - name_in_sub = sub_data['name'] - - if name_in_sub == name_in_vendor: - continue - - # if 'renamed_from' in sub_data: - # renamed_from = [n.strip() for n in sub_data['renamed_from'].split(';')] - # if name_in_vendor in renamed_from: - # continue - - print_error(f"{section} name mismatch: required '{name_in_vendor}' in {vendor_file.relative_to(profiles_dir)} but found '{name_in_sub}' in {sub_file.relative_to(profiles_dir)}") - error_count += 1 - - return error_count, 0 - -def check_filament_id(profiles_dir, vendor_name): - """ - Make sure filament_id is not longer than 8 characters, otherwise AMS won't work properly. - - Runs tree-wide, every vendor alike (BBL included: the id format is what - matters, not the vendor). Every .json file under the vendor's filament - directory is still parsed through the duplicate-key hook below, so that - coverage is unchanged; only the length rule itself is scoped to presets - the vendor's index (.json filament_list) actually references. A - file the index does not reference never loads, so its filament_id length - cannot break AMS -- and some vendors (e.g. SeeMeCNC) ship such orphaned - files pre-dating this check, with no bearing on what ships. - """ - error = 0 - vendor_path = profiles_dir / vendor_name / "filament" - if not vendor_path.exists(): - return 0 - - referenced = set() - vendor_file = profiles_dir / (vendor_name + ".json") - if vendor_file.exists(): - try: - with open(vendor_file, 'r', encoding='UTF-8') as fp: - index = json.load(fp) - for entry in index.get('filament_list', []): - sub_path = entry.get('sub_path') - if sub_path: - referenced.add((profiles_dir / vendor_name / sub_path).resolve()) - except Exception as e: - print_error(f"Error loading vendor profile {vendor_file}: {e}") - error += 1 - - # Use rglob to recursively find .json files. - for file_path in vendor_path.rglob("*.json"): - try: - with open(file_path, 'r', encoding='UTF-8') as fp: - # Use custom hook to detect duplicates. - data = json.load(fp, object_pairs_hook=no_duplicates_object_pairs_hook) - except ValueError as ve: - print_error(f"Duplicate key error in {file_path}: {ve}") - error += 1 - continue - except Exception as e: - print_error(f"Error processing {file_path}: {e}") - error += 1 - continue - - if 'filament_id' not in data: - continue - - filament_id = data['filament_id'] - - if len(filament_id) > 8 and file_path.resolve() in referenced: - error += 1 - print_error(f"Filament id too long \"{filament_id}\": {file_path}") - - return error - -def check_obsolete_keys(profiles_dir, vendor_name): - """ - Check for obsolete keys in all filament profiles for a vendor. - - Parameters: - profiles_dir (Path): Base profiles directory - vendor_name (str): Vendor name - obsolete_keys (set): Set of obsolete key names to check - - Returns: - int: Number of obsolete keys found - """ - error_count = 0 - vendor_path = profiles_dir / vendor_name / "filament" - - if not vendor_path.exists(): - return 0 - - for file_path in vendor_path.rglob("*.json"): - try: - with open(file_path, "r", encoding="UTF-8") as fp: - data = json.load(fp) - except Exception as e: - print_warning(f"Error reading profile {file_path.relative_to(profiles_dir)}: {e}") - error_count += 1 - continue - - for key in data.keys(): - if key in OBSOLETE_KEYS: - print_warning(f"Obsolete key: '{key}' found in {file_path.relative_to(profiles_dir)}") - error_count += 1 - - return error_count - - -CONFLICT_KEYS = [ - ['extruder_clearance_radius', 'extruder_clearance_max_radius'], -] - -VECTOR_KEYS = { - "filament_type", -} - -def check_vector_type_keys(profiles_dir, vendor_name): - """ - Check that properties expected to be vectors (JSON arrays) are not stored as scalars. - For example, `filament_type` must be a list like ["PA-CF"], not a string "PA-CF". - - Parameters: - profiles_dir (Path): Base profiles directory - vendor_name (str): Vendor name - - Returns: - int: Number of errors found - """ - error_count = 0 - vendor_path = profiles_dir / vendor_name - - if not vendor_path.exists(): - return 0 - - for file_path in vendor_path.rglob("*.json"): - try: - with open(file_path, "r", encoding="UTF-8") as fp: - data = json.load(fp) - except Exception as e: - print_error(f"Error processing {file_path.relative_to(profiles_dir)}: {e}") - error_count += 1 - continue - - if not isinstance(data, dict): - continue - - for key in VECTOR_KEYS: - if key in data and not isinstance(data[key], list): - print_error( - f"'{key}' must be an array in {file_path.relative_to(profiles_dir)}, " - f"got {type(data[key]).__name__}: {data[key]!r}" - ) - error_count += 1 - - return error_count - -def check_conflict_keys(profiles_dir, vendor_name): - """ - Check for keys that could not be specified at the same time, - due to option renaming & backward compatibility reasons. - - For example, `extruder_clearance_max_radius` and `extruder_clearance_radius` cannot co-exist - otherwise slicer won't know which one to use. - - Parameters: - profiles_dir (Path): Base profiles directory - vendor_name (str): Vendor name - - Returns: - int: Number of errors found - int: Number of warnings found - """ - error_count = 0 - warn_count = 0 - vendor_path = profiles_dir / vendor_name - - if not vendor_path.exists(): - print_warning(f"No machine profiles found for vendor: {vendor_name}") - return 0, 1 - - for file_path in vendor_path.rglob("*.json"): - try: - with open(file_path, 'r', encoding='UTF-8') as fp: - # Use custom hook to detect duplicates. - data = json.load(fp, object_pairs_hook=no_duplicates_object_pairs_hook) - except ValueError as ve: - print_error(f"Duplicate key error in {file_path.relative_to(profiles_dir)}: {ve}") - error_count += 1 - continue - except Exception as e: - print_error(f"Error processing {file_path.relative_to(profiles_dir)}: {e}") - error_count += 1 - continue - - for key_sets in CONFLICT_KEYS: - if sum([1 if k in data else 0 for k in key_sets]) > 1: - print_error(f"Conflict keys {key_sets} co-exist in {file_path.relative_to(profiles_dir)}") - error_count += 1 - - return error_count, warn_count - - -# Bambu (BBL) keeps its authoritative "G*" cloud ids, which are NOT produced by the -# deterministic formula, so BBL is exempt from the formula match (Rule 2) only. It is -# still checked for presence, uniqueness, base-no-id and the typo key like every other -# vendor. Every other vendor (incl. OrcaFilamentLibrary and Custom) must also match the -# formula. -SETTING_ID_FORMULA_EXEMPT_VENDORS = {"BBL"} -PROFILE_SUBDIRS = ("filament", "process", "machine") - - -def check_setting_id_uniqueness(profiles_dir): - """ - Validate setting_id across every vendor (see scripts/orca_id_tool.py): - 1. Every instantiated preset must HAVE a setting_id. (all vendors) - 2. A stored setting_id must equal generate_preset_setting_id(vendor, type, name); a stale - value means the JSON was edited without rerunning - "python scripts/orca_id_tool.py --generate --setting-id". - (all vendors EXCEPT the formula-exempt ones, e.g. BBL) - 3. Base profiles (instantiation != "true") must not carry a setting_id. (all vendors) - 4. setting_id must be globally unique - no two files may share one. (all vendors) - 5. No profile may use the misspelled key "settings_id". (all vendors) - Formula-exempt vendors (BBL) keep their authoritative ids, so only Rule 2 is skipped - for them; they are still held to presence, uniqueness, base-no-id and the typo check. - """ - errors = 0 - owners = {} # setting_id -> list of relative_path (every vendor) - for vendor_dir in sorted(profiles_dir.iterdir()): - if not vendor_dir.is_dir(): - continue - vendor = vendor_dir.name - formula_exempt = vendor in SETTING_ID_FORMULA_EXEMPT_VENDORS - for sub in PROFILE_SUBDIRS: - base = vendor_dir / sub - if not base.is_dir(): - continue - for file_path in base.rglob("*.json"): - try: - data = json.loads(file_path.read_bytes()) - except (ValueError, OSError): - continue - if not isinstance(data, dict): - continue - rel = file_path.relative_to(profiles_dir) - # Rule 5: catch the misspelled "settings_id" key. - if "settings_id" in data: - errors += 1 - print_error( - f'profile {rel} uses the misspelled key "settings_id" ' - f'(should be "setting_id"); run ' - f'"python scripts/orca_id_tool.py --generate --setting-id"' - ) - sid = data.get("setting_id") - instantiated = data.get("instantiation") == "true" - if not instantiated: - # Rule 3: base/template profiles must not carry a setting_id. - if sid: - errors += 1 - print_error( - f'base profile {rel} (instantiation != "true") must not have a ' - f'setting_id ("{sid}"); run ' - f'"python scripts/orca_id_tool.py --generate --setting-id"' - ) - continue - # Rule 1: every instantiated preset must have a setting_id. - if not sid: - errors += 1 - print_error( - f"instantiated preset {rel} is missing a setting_id; " - f'run "python scripts/orca_id_tool.py --generate --setting-id"' - ) - continue - # Rule 2: the stored id must match the deterministic rule. BBL keeps its - # authoritative G* ids and is exempt from this check only. - if not formula_exempt: - expected = generate_preset_setting_id(vendor, sub, data.get("name", "")) - if sid != expected: - errors += 1 - print_error( - f'setting_id "{sid}" in {rel} does not match the expected ' - f'"{expected}" for {vendor}/{sub}/{data.get("name", "")}; ' - f'run "python scripts/orca_id_tool.py --generate --setting-id"' - ) - continue - # Rule 4: collect for the global-uniqueness check below. - owners.setdefault(sid, []).append(rel) - - # Rule 4: a setting_id shared by two files is an error. For managed vendors this means - # a duplicate vendor/type/name; for formula-exempt vendors (BBL) a copy-pasted id. - for sid, locs in sorted(owners.items()): - if len(locs) < 2: - continue - errors += 1 - print_error( - f'setting_id "{sid}" is shared by {len(locs)} files ({sorted(map(str, locs))}); ' - f"setting_id must be globally unique" - ) - return errors - - -def main(): - parser = argparse.ArgumentParser( - description="Check 3D printer profiles for common issues", - formatter_class=argparse.ArgumentDefaultsHelpFormatter - ) - parser.add_argument("--vendor", type=str, help="Specify a single vendor to check") - parser.add_argument("--check-filaments", action="store_true", help="Check 'compatible_printers' in filament profiles") - parser.add_argument("--check-materials", action="store_true", help="Check default materials in machine profiles") - parser.add_argument("--check-obsolete-keys", action="store_true", help="Warn if obsolete keys are found in filament profiles") - args = parser.parse_args() - - print_info("Checking profiles ...") - - script_dir = Path(__file__).resolve().parent - profiles_dir = script_dir.parent / "resources" / "profiles" - checked_vendor_count = 0 - errors_found = 0 - warnings_found = 0 - - def run_checks(vendor_name): - nonlocal errors_found, warnings_found, checked_vendor_count - vendor_path = profiles_dir / vendor_name - - if args.check_filaments or not (args.check_materials and not args.check_filaments): - errors_found += check_filament_compatible_printers(vendor_name, vendor_path / "filament") - - if args.check_materials: - new_errors, new_warnings = check_machine_default_materials(profiles_dir, vendor_name) - errors_found += new_errors - warnings_found += new_warnings - - if args.check_obsolete_keys: - warnings_found += check_obsolete_keys(profiles_dir, vendor_name) - - new_errors, new_warnings = check_name_consistency(profiles_dir, vendor_name) - errors_found += new_errors - warnings_found += new_warnings - - new_errors, new_warnings = check_conflict_keys(profiles_dir, vendor_name) - errors_found += new_errors - warnings_found += new_warnings - - errors_found += check_vector_type_keys(profiles_dir, vendor_name) - - errors_found += check_filament_id(profiles_dir, vendor_name) - checked_vendor_count += 1 - - if args.vendor: - run_checks(args.vendor) - else: - for vendor_dir in profiles_dir.iterdir(): - if not vendor_dir.is_dir() or vendor_dir.name == "OrcaFilamentLibrary": - continue - run_checks(vendor_dir.name) - - # Global (cross-vendor) check: setting_id must be unique and stay in-namespace. - # Runs once over the whole tree regardless of the --vendor filter. - errors_found += check_setting_id_uniqueness(profiles_dir) - - # Global filament_id check (see scripts/orca_id_tool.py): effective ids - # are resolved loader-faithfully and validated against the sanctioned snapshot - # (scripts/filament_id_snapshot.json). Runs once over the whole tree. - errors_found += check_filament_ids(profiles_dir) - - # ✨ Output finale in stile "compilatore" - print("\n==================== SUMMARY ====================") - print_info(f"Checked vendors : {checked_vendor_count}") - if errors_found > 0: - print_error(f"Files with errors : {errors_found}") - else: - print_success("Files with errors : 0") - if warnings_found > 0: - print_warning(f"Files with warnings : {warnings_found}") - else: - print_success("Files with warnings : 0") - print("=================================================") - if errors_found > 0 or warnings_found > 0 : - print_warning('Issue(s) found, try `orca_filament_lib.py --fix` to fix common issues automatically') - - exit(-1 if errors_found > 0 else 0) - - -if __name__ == "__main__": - main() diff --git a/scripts/orca_filament_lib.py b/scripts/orca_filament_lib.py deleted file mode 100644 index 65f037e3f3..0000000000 --- a/scripts/orca_filament_lib.py +++ /dev/null @@ -1,310 +0,0 @@ -import os -import json -import argparse -from collections import defaultdict - -def create_ordered_profile(profile_dict, priority_fields=['name', 'type']): - """Create a new dictionary with priority fields first""" - ordered_profile = {} - - # Add priority fields first - for field in priority_fields: - if field in profile_dict: - ordered_profile[field] = profile_dict[field] - - # Add remaining fields - for key, value in profile_dict.items(): - if key not in priority_fields: - ordered_profile[key] = value - - return ordered_profile - -def topological_sort(filaments): - # Build a graph of dependencies - graph = defaultdict(list) - in_degree = defaultdict(int) - name_to_filament = {f['name']: f for f in filaments} - all_names = set(name_to_filament.keys()) - - # Create the dependency graph - processed_files = set() - for filament in filaments: - if 'inherits' in filament: - parent = filament['inherits'] - child = filament['name'] - # Only create dependency if parent exists - if parent in all_names: - graph[parent].append(child) - in_degree[child] += 1 - if parent not in in_degree: - in_degree[parent] = 0 - processed_files.add(child) - processed_files.add(parent) - - # Initialize queue with nodes having no dependencies (now sorted) - queue = sorted([name for name, degree in in_degree.items() if degree == 0]) - result = [] - - # Process the queue - while queue: - current = queue.pop(0) - result.append(name_to_filament[current]) - processed_files.add(current) - - # Process children (now sorted) - children = sorted(graph[current]) - for child in children: - in_degree[child] -= 1 - if in_degree[child] == 0: - queue.append(child) - - # Add remaining files that weren't part of inheritance tree (now sorted) - remaining = sorted(all_names - processed_files) - for name in remaining: - result.append(name_to_filament[name]) - - return result - -def update_profile_library(vendor="",profile_type="filament"): - # change current working directory to the relative path(..\resources\profiles) compare to script location - os.chdir(os.path.join(os.path.dirname(__file__), '..', 'resources', 'profiles')) - - # Collect current profile entries - if vendor: - vendors = [vendor] - else: - profiles_dir = os.path.join(os.path.dirname(__file__), '..', 'resources', 'profiles') - vendors = [f[:-5] for f in os.listdir(profiles_dir) if f.lower().endswith('.json')] - for vendor in vendors: - current_profiles = [] - base_dir = vendor - # Orca expects machine_model to be in the machine folder - if profile_type == 'machine_model': - profile_dir = os.path.join(base_dir, 'machine') - else: - profile_dir = os.path.join(base_dir, profile_type) - - for root, dirs, files in os.walk(profile_dir): - for file in files: - if file.lower().endswith('.json'): - full_path = os.path.join(root, file) - - # Get relative path from base directory - sub_path = os.path.relpath(full_path, base_dir).replace('\\', '/') - - try: - with open(full_path, 'r', encoding='utf-8') as f: - _profile = json.load(f) - if _profile.get('type') != profile_type: - continue - name = _profile.get('name') - inherits = _profile.get('inherits') - - if name: - entry = { - "name": name, - "sub_path": sub_path - } - if inherits: - entry['inherits'] = inherits - current_profiles.append(entry) - else: - print(f"Warning: Missing 'name' in {full_path}") - except Exception as e: - print(f"Error reading {full_path}: {str(e)}") - continue - - # Sort profiles based on inheritance - sorted_profiles = topological_sort(current_profiles) - - # Remove the inherits field as it's not needed in the final JSON - for p in sorted_profiles: - p.pop('inherits', None) - - # Update library file - lib_path = f'{vendor}.json' - - profile_section = profile_type+'_list' - - try: - with open(lib_path, 'r+', encoding='utf-8') as f: - library = json.load(f) - library[profile_section] = sorted_profiles - f.seek(0) - json.dump(library, f, indent="\t", ensure_ascii=False) - f.write('\n') - f.truncate() - - print(f"Profile library for {vendor} updated successfully!") - except Exception as e: - print(f"Error updating library file: {str(e)}") - -def clean_up_profile(vendor="", profile_type="", force=False): -# change current working directory to the relative path(..\resources\profiles) compare to script location - os.chdir(os.path.join(os.path.dirname(__file__), '..', 'resources', 'profiles')) - - # Collect current profile entries - if vendor: - vendors = [vendor] - else: - profiles_dir = os.path.join(os.path.dirname(__file__), '..', 'resources', 'profiles') - vendors = [f[:-5] for f in os.listdir(profiles_dir) if f.lower().endswith('.json')] - for vendor in vendors: - current_profiles = [] - base_dir = vendor - # Orca expects machine_model to be in the machine folder - if profile_type == 'machine_model': - profile_dir = os.path.join(base_dir, 'machine') - else: - profile_dir = os.path.join(base_dir, profile_type) - - for root, dirs, files in os.walk(profile_dir): - for file in files: - if file.lower().endswith('.json'): - if file == 'filaments_color_codes.json': # Ignore non-profile file - continue - - full_path = os.path.join(root, file) - - # Get relative path from base directory - sub_path = os.path.relpath(full_path, base_dir).replace('\\', '/') - - try: - with open(full_path, 'r+', encoding='utf-8') as f: - _profile = json.load(f) - need_update = False - if not _profile.get('type') or _profile.get('type') == "": - need_update = True - name = _profile.get('name') - inherits = _profile.get('inherits') - if profile_type == "machine_model" or profile_type == "machine": - if "nozzle" in name or "Nozzle" in name: - _profile['type'] = "machine" - else: - _profile['type'] = "machine_model" - else: - _profile['type'] = profile_type - print(f"Added type: {_profile['type']} to {file}") - - fields_to_remove = ['version', 'is_custom_defined'] - for field in fields_to_remove: - if _profile.get(field): - # remove version field - del _profile[field] - print(f"Removed {field} field from {file}") - need_update = True - - # Handle `extruder_clearance_radius`. - if 'extruder_clearance_radius' in _profile and 'extruder_clearance_max_radius' in _profile: - # BBS renamed `extruder_clearance_radius` to `extruder_clearance_max_radius` - # however some of their profiles have both options exists with different value, which - # could cause very bad consequence such as toolhead collision. - # Here we make sure only one of these options exist, and if both present, we keep - # the one with greater value. - need_update = True - if float(_profile['extruder_clearance_max_radius']) > float(_profile['extruder_clearance_radius']): - del _profile['extruder_clearance_radius'] - else: - del _profile['extruder_clearance_max_radius'] - - # Convert filament fields to arrays if not already - if profile_type == 'filament': - fields_to_arrayify = ['filament_cost', 'filament_density', 'filament_type', "temperature_vitrification", "filament_max_volumetric_speed", "filament_vendor"] - for field in fields_to_arrayify: - if field in _profile and not isinstance(_profile[field], list): - original_value = _profile[field] - _profile[field] = [original_value] - print(f"Converted {field} to array in {file}") - need_update = True - - # remove following fields from filament profile - fields_to_remove = ['initial_layer_print_speed', 'outer_wall_speed', 'inner_wall_speed', 'infill_speed', 'top_surface_speed', 'travel_speed'] - for field in fields_to_remove: - if field in _profile: - del _profile[field] - print(f"Removed {field} field from {file}") - need_update = True - - - if need_update or force: - # write back to file - f.seek(0) - ordered_profile = create_ordered_profile(_profile, ['type', 'name', 'renamed_from', 'inherits', 'from', 'setting_id', 'filament_id', 'instantiation']) - json.dump(ordered_profile, f, indent="\t", ensure_ascii=False) - f.write('\n') - f.truncate() - print(f"Updated profile: {full_path}") - except Exception as e: - print(f"Error reading {full_path}: {str(e)}") - continue - -# For each JSON file, it will: -# - Replace "BBL X1C" with "System" in the name field -# - Empty the compatible_printers array -# - Ensure setting_id starts with 'O' -def rename_filament_system(vendor="OrcaFilamentLibrary"): - # change current working directory to the relative path - os.chdir(os.path.join(os.path.dirname(__file__), '..', 'resources', 'profiles')) - - base_dir = vendor - filament_dir = os.path.join(base_dir, 'filament') - - for root, dirs, files in os.walk(filament_dir): - for file in files: - if file.lower().endswith('.json'): - full_path = os.path.join(root, file) - try: - with open(full_path, 'r', encoding='utf-8') as f: - data = json.load(f) - modified = False - - # Update name if it contains "BBL X1C" - if 'name' in data and "BBL X1C" in data['name']: - data['name'] = data['name'].replace("BBL X1C", "System") - modified = True - - # Empty compatible_printers if exists - if 'compatible_printers' in data: - data['compatible_printers'] = [] - modified = True - - # Update setting_id if needed - if 'setting_id' in data and not data['setting_id'].startswith('O'): - data['setting_id'] = 'O' + data['setting_id'] - modified = True - - if modified: - with open(full_path, 'w', encoding='utf-8') as f: - json.dump(data, f, indent="\t", ensure_ascii=False) - f.write('\n') - print(f"Updated {full_path}") - - except Exception as e: - print(f"Error processing {full_path}: {str(e)}") - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Update filament library for specified vendor') - parser.add_argument('-v', '--vendor', type=str, default="", - help='Vendor name (default: "" which means all vendors)') - parser.add_argument('-u', '--update', action='store_true', help='update vendor.json') - parser.add_argument('-p', '--profile_type', type=str, choices=['machine_model', 'process', 'filament', 'machine'], help='profile type (default: "" which means all types)') - parser.add_argument('-f', '--fix', action='store_true', help='Fix errors like missing type field, and clean up the profile') - parser.add_argument('--force', action='store_true', help='Force update the profile files, for --fix option') - args = parser.parse_args() - - if args.fix: - if(args.profile_type): - clean_up_profile(args.vendor, args.profile_type, args.force) - else: - clean_up_profile(args.vendor, 'machine_model', args.force) - clean_up_profile(args.vendor, 'process', args.force) - clean_up_profile(args.vendor, 'filament', args.force) - clean_up_profile(args.vendor, 'machine', args.force) - - if args.update: - update_profile_library(args.vendor, 'machine_model') - update_profile_library(args.vendor, 'process') - update_profile_library(args.vendor, 'filament') - update_profile_library(args.vendor, 'machine') - # else: - # rename_filament_system(args.vendor) \ No newline at end of file diff --git a/scripts/orca_id_tool.py b/scripts/orca_id_tool.py deleted file mode 100755 index 956aec3569..0000000000 --- a/scripts/orca_id_tool.py +++ /dev/null @@ -1,1429 +0,0 @@ -#!/usr/bin/env python3 -""" -Assign and validate the deterministic ids of OrcaSlicer system profiles: the -per-product filament_id and the per-preset setting_id. - -Both ids are pure functions of the thing they name, so nothing here is ever -invented: the tool only writes the id the rules below already imply, and a tree -that already satisfies them is left untouched. - -filament_id policy (see docs/HLSD/filament_id.md): - * filament_id is a PRODUCT id: one named spool product = one id, shared by all - of that product's per-printer/per-nozzle variants in every bundle. The - granularity is the name on the spool, not the brand: "AAA PLA Lite" and - "AAA PLA Pro" are two products with two ids, not variants of one. The - id is a pure function of the product triple (below), so WHERE a preset gets - it from is irrelevant: it may declare the key itself or inherit it from any - ancestor — a root preset, a real (instantiated) filament, an - OrcaFilamentLibrary (OFL) preset — as long as the id it ends up with is the - mint of its OWN triple. Inheritance carries settings, never identity; the - key is bundle-independent, so moving a filament into OFL never changes it. - * Ids are content-addressed by the product triple, resolved from the preset's - flattened config (filament_vendor and filament_type are inheritable list - options — first element; filament name = preset base name): - filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE, - "filament_product///") ) - 8 chars total, which satisfies the AMS length limit. Nobody invents ids by - hand, and nothing but the triple feeds the mint — not the rest of the tree, - not the snapshot. Two products whose triples mint one id (a base62 - collision; odds ~1e-5 over the whole tree) is an error --check reports and - --generate refuses to write; the remedy is a rename so the triples differ, - never a salted or hand-picked second id. - Identity changes (a filament rename, a filament_vendor/filament_type fix) - change the id BY DESIGN. - * Reserved id spaces that are never minted into or altered: - - GF* Bambu AMS/RFID catalog: frozen, no preset of any - vendor (including BBL) may declare one; the - generated resources/printers/bambu_filament_ids.json - carries the correspondence instead - - QD_* Qidi device protocol: the box composes these ids - at runtime, they are not preset ids, and no - preset may declare one - - P + 7 hex chars (case-insensitive) and the literal "null" - user-custom presets (CreatePresetsDialog.cpp) - * scripts/filament_id_snapshot.json is the sanctioned-state snapshot: one - entry per id, carrying the product triple it is minted from and the - "Vendor/Filament" presets claiming it. It must exactly equal the tree-derived - state at all times, so any id/claim/triple change shows up as a reviewable - diff to that file (the maintainer gate). It sanctions state, never - exceptions: no check consults it to excuse a preset from the rules above. - -setting_id policy (see AGENTS.md "Critical Constraints"): - * setting_id is a PRESET id, a pure function of the preset's identity: - setting_id = base62_16( uuid5(NAMESPACE, "//") ) - The same value is recomputed on the fly by the C++ app - (Slic3r::generate_preset_setting_id); the two MUST stay byte-identical, and - the validator (orca_extra_profile_check.py) imports the rule from here. - Uniqueness is therefore automatic: two presets collide only if they share - vendor + type + name, which the validator flags. - * Only instantiated presets (instantiation == "true") carry a setting_id; - base / template profiles do not. - * Bambu (BBL) owns the authoritative "G*" setting_id space and is the only - reserved vendor: its setting_ids are never rewritten, which keeps - Bambu-synced presets backward compatible. filament_id has no such exemption - — the GF* catalog space is frozen and ownerless, so BBL's filament_ids are - minted like every other vendor's. - -The effective-id resolution below is loader-faithful (PresetBundle.cpp -load_vendor_configs_from_json): own filament_id key, else walk `inherits` within -the vendor map, with OrcaFilamentLibrary base-bundle fallback; once a chain enters -OFL it stays in OFL; a vendor chain that dead-ends id-less retries its direct -parent in the OFL map. filament_vendor / filament_type resolve the same way. - -Run from anywhere: - python scripts/orca_id_tool.py --generate write the ids every profile should carry - python scripts/orca_id_tool.py --dry-run preview that; writes nothing - python scripts/orca_id_tool.py --check validate filament_id state (what CI runs) - python scripts/orca_id_tool.py --update-snapshot re-record the sanctioned filament_id state -Narrow --generate with --filament-id / --setting-id and --vendor VENDOR (repeatable). -""" - -import argparse -import json -import os -import re -import sys -import uuid - -# The id namespace baked into both Python and C++ (Slic3r::generate_preset_setting_id). -# Dedicated, distinct from the cloud namespace (f47ac10b-...) so the two id spaces never -# coincide; it is the root of BOTH id rules below — never change it. -NAMESPACE = uuid.UUID("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f") -ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" -SETTING_ID_LENGTH = 16 - -# Dedicated namespace for filament_id, derived from the setting_id namespace above. -# Never change it. -# FILAMENT_ID_NAMESPACE == UUID("c4d3ff49-4c32-5534-a3e3-00894157ab97") -FILAMENT_ID_NAMESPACE = uuid.uuid5(NAMESPACE, "filament_id") -FILAMENT_ID_LENGTH = 6 # base62 digits after the "OF" prefix -> 8 chars total - -SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__)) -PROFILES_DIR = os.path.normpath(os.path.join(SCRIPTS_DIR, "..", "resources", "profiles")) -SNAPSHOT_PATH = os.path.join(SCRIPTS_DIR, "filament_id_snapshot.json") -# The single source of truth for the map path; update_bambu_filament_ids.py -# imports this rather than recomputing it. -BAMBU_MAP_PATH = os.path.normpath( - os.path.join(SCRIPTS_DIR, "..", "resources", "printers", "bambu_filament_ids.json")) - -OFL = "OrcaFilamentLibrary" - -# Bambu (BBL) is the only vendor exempt from the setting_id rule: it keeps its -# authoritative "G*" cloud ids. No vendor is exempt from the filament_id rule. -RESERVED_VENDORS = {"BBL"} - -# The profile types that carry a setting_id; the subdir name is also the type -# name, matching Preset::get_type_string() on the C++ side. -PROFILE_SUBDIRS = ("filament", "process", "machine") - -OF_ID_RE = re.compile(r"^OF[0-9A-Za-z]{6}$") -# User-custom id space minted by CreatePresetsDialog.cpp ("P" + md5(name)[0:7]); -# reserved case-insensitively, together with its "null" sentinel. -USER_CUSTOM_ID_RE = re.compile(r"^P[0-9A-Fa-f]{7}$", re.IGNORECASE) -# Filament name = preset base name: strip the first "@..." suffix. The space before -# "@" is optional because names like "Afinia PLA@HS" exist. -BASE_NAME_RE = re.compile(r"\s?@.*$") -# A JSON string literal, for the byte-preserving key edits. -_JSON_STR = r'"(?:[^"\\]|\\.)*"' - -GENERATE_CMD = "python scripts/orca_id_tool.py --generate" -UPDATE_HINT = 'run "python scripts/orca_id_tool.py --update-snapshot" and commit the diff for maintainer review' -BAMBU_MAP_HINT = 'regenerate the map with "python scripts/update_bambu_filament_ids.py" and commit the diff for maintainer review' - - -# Same output helpers/format as orca_extra_profile_check.py (not imported from -# there to avoid a circular import: that script imports check_filament_ids). -def print_error(msg): - print(f"\033[91m[ERROR]\033[0m {msg}") # Red - -def print_warning(msg): - print(f"\033[93m[WARNING]\033[0m {msg}") # Yellow - -def print_info(msg): - print(f"\033[94m[INFO]\033[0m {msg}") # Blue - -def print_success(msg): - print(f"\033[92m[SUCCESS]\033[0m {msg}") # Green - - -def _utf8_console(): - """Make stdout/stderr survive non-ASCII profile names on cp1252 consoles.""" - for stream in (sys.stdout, sys.stderr): - if hasattr(stream, "reconfigure"): - try: - stream.reconfigure(encoding="utf-8", errors="replace") - except (ValueError, OSError): - pass - - -# --------------------------------------------------------------------------- -# Minting -# --------------------------------------------------------------------------- - -def _base62_tail(n, length): - """The low `length` base62 digits of n, most-significant first. - - The shared tail of both id rules. Its output bytes are pinned by the C++ - golden vectors (tests/libslic3r/test_preset_setting_id.cpp) and by the - filament_id snapshot — never change it. - """ - digits = [] - for _ in range(length): - digits.append(ALPHABET[n % 62]) - n //= 62 - return "".join(reversed(digits)) - - -def generate_preset_setting_id(vendor, type_name, name): - """Deterministic 16-char base62 setting_id for a preset. - - input = f"{vendor}/{type_name}/{name}"; u = uuid5(NAMESPACE, input); - id = the low SETTING_ID_LENGTH base62 digits of int(u.bytes, "big"), - most-significant first. Kept byte-identical to the C++ - Slic3r::generate_preset_setting_id. - """ - u = uuid.uuid5(NAMESPACE, f"{vendor}/{type_name}/{name}") - return _base62_tail(int.from_bytes(u.bytes, "big"), SETTING_ID_LENGTH) - - -def base_name(name): - """Filament name of a preset: name with the first "@..." suffix stripped.""" - return BASE_NAME_RE.sub("", name, count=1) - - -def generate_filament_id(filament_vendor, filament_type, filament_name): - """Deterministic "OF" + 6-char base62 filament_id for a filament product. - - The triple is the only input: no salt, no state, no second value. - input = "filament_product///"; - u = uuid5(FILAMENT_ID_NAMESPACE, input); the id tail is the low - FILAMENT_ID_LENGTH base62 digits of int(u.bytes, "big"), most-significant - first — the same derivation as generate_preset_setting_id. - """ - key = f"filament_product/{filament_vendor}/{filament_type}/{filament_name}" - u = uuid.uuid5(FILAMENT_ID_NAMESPACE, key) - return "OF" + _base62_tail(int.from_bytes(u.bytes, "big"), FILAMENT_ID_LENGTH) - - -# --------------------------------------------------------------------------- -# Tree loading + loader-faithful effective-id resolution -# --------------------------------------------------------------------------- - -def load_json(path): - with open(path, "r", encoding="utf-8-sig") as f: - return json.load(f) - - -def list_vendor_names(profiles_dir): - """Vendor bundles = subdirectories with a matching .json index file. - - (Ignores stray non-bundle entries such as the tracked "user" directory, - which has no user.json index.) - """ - profiles_dir = str(profiles_dir) - return sorted( - os.path.splitext(f)[0] for f in os.listdir(profiles_dir) - if f.endswith(".json") - and os.path.isdir(os.path.join(profiles_dir, os.path.splitext(f)[0])) - ) - - -def list_profile_dirs(profiles_dir): - """Every vendor directory under the tree, index or not. - - What the setting_id pass walks, and what orca_extra_profile_check.py walks: - setting_id is a per-file property, so a bundle whose index has not landed yet - must still be assignable — otherwise the validator flags files the tool - refuses to touch. (filament_id is driven by each bundle's filament_list - instead, hence list_vendor_names above.) - """ - profiles_dir = str(profiles_dir) - return sorted(d for d in os.listdir(profiles_dir) - if os.path.isdir(os.path.join(profiles_dir, d))) - - -def iter_profile_files(vendor_dir): - """Yield (json path, type) under a vendor bundle, in a deterministic order.""" - for sub in PROFILE_SUBDIRS: - base = os.path.join(vendor_dir, sub) - if not os.path.isdir(base): - continue - for root, dirs, files in os.walk(base): - dirs.sort() # deterministic traversal across filesystems - for name in sorted(files): - if name.endswith(".json"): - yield os.path.join(root, name), sub - - -def load_vendor_filaments(profiles_dir, vendor): - """Load a vendor's filament presets from its index's filament_list. - - Returns (presets dict name -> record, list of unreadable-file messages). - """ - profiles_dir = str(profiles_dir) - presets = {} - errors = [] - try: - idx = load_json(os.path.join(profiles_dir, vendor + ".json")) - except (OSError, ValueError) as e: - return presets, [f"unreadable vendor index {vendor}.json: {e}"] - for entry in idx.get("filament_list", []): - rel = f"{vendor}/{entry.get('sub_path', '')}" - path = os.path.join(profiles_dir, vendor, entry.get("sub_path", "")) - try: - data = load_json(path) - except (OSError, ValueError) as e: - errors.append(f"unreadable filament profile {rel}: {e}") - continue - name = data.get("name", entry.get("name")) - presets[name] = { - "name": name, - "file": rel, - "path": path, - "filament_id": data.get("filament_id"), - "inherits": data.get("inherits"), - "instantiation": str(data.get("instantiation", "")).lower() == "true", - "compatible_printers": data.get("compatible_printers") or [], - "filament_vendor": data.get("filament_vendor"), - "filament_type": data.get("filament_type"), - "renamed_from": data.get("renamed_from"), - } - return presets, errors - - -def resolve_filament_id(name, filaments, ofl_filaments, seen=None, in_ofl=False): - """Walk the inherits chain for the effective filament_id, loader-faithfully. - - Mirrors PresetBundle.cpp load_vendor_configs_from_json: a hop resolves in the - vendor's own map first, then falls back to the OFL base-bundle map. OFL's map - was memoized entirely within OFL, so once a chain enters OFL it stays in OFL - (a vendor file sharing an OFL preset's name must not shadow OFL-internal - hops). Additionally, a vendor preset that never resolves an id inside the - vendor is re-tried against the OFL map keyed by its direct parent name. - - Returns (filament_id or None, source, ofl_entry) where source is one of - "own"/"inherited"/"missing"/"dangling"/"cycle" and ofl_entry is the name of - the OFL preset through which a vendor chain entered OFL (None when the id was - declared vendor-side or resolution started inside OFL). - """ - if seen is None: - seen = set() - if name in seen: - return None, "cycle", None - seen.add(name) - entry = None - if in_ofl: - rec = ofl_filaments.get(name) - else: - rec = filaments.get(name) - if rec is None and name in ofl_filaments: - rec, in_ofl, entry = ofl_filaments[name], True, name - if rec is None: - return None, "dangling", None - if rec.get("filament_id"): - return rec["filament_id"], "own" if len(seen) == 1 else "inherited", entry - parent = rec.get("inherits") - if parent: - fid, src, sub_entry = resolve_filament_id(parent, filaments, ofl_filaments, seen, in_ofl) - if fid or in_ofl: - return fid, src, entry if entry is not None else sub_entry - # Vendor chain dead-ended id-less: the loader would have consulted the - # OFL map at each vendor hop's inherits; retry this hop's parent in OFL. - if parent in ofl_filaments: - fid, src, _ = resolve_filament_id(parent, filaments, ofl_filaments, set(), True) - return fid, src, parent - return fid, src, sub_entry - return None, "missing", entry - - -def resolve_filament_field(name, field, filaments, ofl_filaments, seen=None, in_ofl=False): - """Resolve an inheritable list option (filament_vendor / filament_type) with - the same hop semantics as resolve_filament_id: own value, else walk - `inherits` in the vendor map with OFL base-bundle fallback. Values are list - options — the first element counts; "" when the chain never defines one. - """ - if seen is None: - seen = set() - if name in seen: - return "" - seen.add(name) - if in_ofl: - rec = ofl_filaments.get(name) - else: - rec = filaments.get(name) - if rec is None and name in ofl_filaments: - rec, in_ofl = ofl_filaments[name], True - if rec is None: - return "" - value = rec.get(field) - if isinstance(value, str): - value = [value] - if value and value[0]: - return value[0] - parent = rec.get("inherits") - if parent: - found = resolve_filament_field(parent, field, filaments, ofl_filaments, seen, in_ofl) - if found or in_ofl: - return found - if parent in ofl_filaments: - return resolve_filament_field(parent, field, filaments, ofl_filaments, set(), True) - return found - return "" - - -def resolve_triple(name, filaments, ofl_filaments): - """The preset's mint-key triple (filament_vendor, filament_type, filament name).""" - return (resolve_filament_field(name, "filament_vendor", filaments, ofl_filaments), - resolve_filament_field(name, "filament_type", filaments, ofl_filaments), - base_name(name)) - - -def analyze_tree(profiles_dir): - """Load every vendor bundle and derive the full filament_id state. - - Returns a dict with the tree-derived snapshot sections plus the working data - the checks and the assign pass need. All claims are "Vendor/Filament" strings - over INSTANTIATED system filaments, tree-wide including OFL and BBL. - """ - profiles_dir = str(profiles_dir) - vendor_names = list_vendor_names(profiles_dir) - ofl_filaments, ofl_errors = ( - load_vendor_filaments(profiles_dir, OFL) if OFL in vendor_names else ({}, []) - ) - - vendors = {} - read_errors = list(ofl_errors) - for vendor in vendor_names: - if vendor == OFL: - filaments = ofl_filaments - else: - filaments, errs = load_vendor_filaments(profiles_dir, vendor) - read_errors.extend(errs) - for rec in filaments.values(): - eff, src, _entry = resolve_filament_id(rec["name"], filaments, ofl_filaments) - rec["eff_filament_id"] = eff - rec["id_source"] = src - vendors[vendor] = filaments - - # id -> set of "Vendor/Filament" claims over instantiated presets. Every id - # occurring in the tree is a key; ids only ever DECLARED (e.g. on a root - # none of whose descendants instantiate) keep an empty claim list, so that - # the snapshot exactly equals the tree-derived state. - ids = {} - vendor_ids = {} # vendor -> set of ids occurring there (declared or effective) - declared_ids = {} # vendor -> set of ids DECLARED in that vendor's own files - missing_effective = [] # (vendor, name, file) instantiated presets resolving no id - inherited = [] # (vendor, rec, eff, triple) instantiated presets inheriting an OF id - triples = {} # fid -> set of triples of its declarers - declarer_triples = [] # (vendor, rec, fid, triple) per declarer - filament_triples = {} # (vendor, filament_name) -> {triple: [declarers]} - mints = {} # minted id -> triples minting it (declarers + instantiated) - - for vendor, filaments in vendors.items(): - occurring = vendor_ids.setdefault(vendor, set()) - for rec in filaments.values(): - triple = resolve_triple(rec["name"], filaments, ofl_filaments) - rec["triple"] = triple - if rec.get("filament_id") or rec["instantiation"]: - mints.setdefault(generate_filament_id(*triple), set()).add(triple) - if rec.get("filament_id"): - fid = rec["filament_id"] - occurring.add(fid) - declared_ids.setdefault(vendor, set()).add(fid) - ids.setdefault(fid, set()) - declarer_triples.append((vendor, rec, fid, triple)) - triples.setdefault(fid, set()).add(triple) - filament_triples.setdefault( - (vendor, base_name(rec["name"])), {}).setdefault( - triple, []).append(rec["name"]) - if not rec["instantiation"]: - continue - eff = rec.get("eff_filament_id") - if not eff: - missing_effective.append((vendor, rec["name"], rec["file"])) - continue - occurring.add(eff) - ids.setdefault(eff, set()).add(f"{vendor}/{base_name(rec['name'])}") - if not rec.get("filament_id") and OF_ID_RE.match(eff): - inherited.append((vendor, rec, eff, triple)) - - # Cross-bundle triple divergence (check 5, warning only): the same filament - # name declared in several bundles with different triples cannot converge - # on one id until the divergence is fixed. - name_bundles = {} - for (vendor, filament_name), tmap in filament_triples.items(): - name_bundles.setdefault(filament_name, {})[vendor] = frozenset(tmap) - cross_bundle_triples = [ - (filament_name, {v: sorted(ts) for v, ts in per_vendor.items()}) - for filament_name, per_vendor in sorted(name_bundles.items()) - if len(per_vendor) > 1 and len(set(per_vendor.values())) > 1 - ] - - return { - "vendors": vendors, - "read_errors": read_errors, - "ids": {fid: sorted(claims) for fid, claims in ids.items()}, - "vendor_ids": vendor_ids, - "declared_ids": declared_ids, - "missing_effective": sorted(missing_effective), - "inherited": inherited, - "triples": {fid: sorted(list(t) for t in ts) for fid, ts in triples.items()}, - "declarer_triples": declarer_triples, - "filament_triples": filament_triples, - "cross_bundle_triples": cross_bundle_triples, - # id -> the products (triples) minting it, where there is more than one - "collisions": {fid: sorted(ts) for fid, ts in mints.items() if len(ts) > 1}, - } - - -# --------------------------------------------------------------------------- -# Snapshot IO -# --------------------------------------------------------------------------- - -def snapshot_from_analysis(analysis): - """One entry per id, in id order: the product triple it is minted from and - the "Vendor/Filament" claims on it. Requires exactly one declared triple per - id (update_snapshot refuses any other state; check 3 rejects it anyway).""" - ids = {} - for fid, claims in sorted(analysis["ids"].items()): - [(vendor, ftype, filament_name)] = analysis["triples"][fid] - ids[fid] = {"filaments": sorted(claims), "name": filament_name, - "filament_type": ftype, "filament_vendor": vendor} - return {"ids": ids} - - -def snapshot_triple(entry): - return [entry["filament_vendor"], entry["filament_type"], entry["name"]] - - -def load_snapshot(path): - """Return the snapshot dict, or None when the file does not exist.""" - if not os.path.exists(path): - return None - data = load_json(path) - data.setdefault("ids", {}) - return data - - -def write_snapshot(path, obj): - """Deterministic serialization: snapshot_from_analysis order, indent 1, LF, - trailing newline.""" - with open(path, "w", encoding="utf-8", newline="\n") as f: - json.dump(obj, f, indent=1, ensure_ascii=False) - f.write("\n") - - -# --------------------------------------------------------------------------- -# Reserved namespaces -# --------------------------------------------------------------------------- - -def reserved_space_owner(fid): - """(is_reserved, owner_vendor or None) for the frozen id spaces.""" - if fid.startswith("GF"): - return True, None # Bambu AMS/RFID catalog: frozen, no vendor (not even BBL) may declare it - if fid.startswith("QD_"): - return True, None # dissolved Qidi device-protocol space: NO vendor may declare it - if USER_CUSTOM_ID_RE.match(fid) or fid == "null": - return True, None # user-custom space: no system vendor may own it - return False, None - - -def reserved_space_desc(fid, owner): - """Human description of a reserved space for error messages.""" - if owner: - return f"owned by {owner}" - if fid.startswith("GF"): - return "Bambu AMS/RFID catalog; frozen, no preset may declare it" - if fid.startswith("QD_"): - return "Qidi device protocol; composed by the device, never a preset id" - return "reserved for user-custom presets" - - -# --------------------------------------------------------------------------- -# Checks (imported and called tree-wide by orca_extra_profile_check.py) -# --------------------------------------------------------------------------- - -def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, - map_path=BAMBU_MAP_PATH): - """Validate filament_id state across every vendor. Returns the error count. - - 1. Format: every id occurring in the tree (declared or effective) must - match ^OF[0-9A-Za-z]{6}$. No exceptions: not the snapshot, not BBL. - 2. Snapshot equality, both directions: every id in the tree, the filaments - claiming it and the triple its declarers resolve must equal the snapshot - entry exactly (the snapshot diff is the maintainer gate). - 3. Identity: the id is a function of the triple alone, and there is no - second acceptable value. (a) A declared id must equal the one id the - declarer's own triple mints; (b) the id an instantiated preset inherits - must equal the one ITS own triple mints — how it inherits it (a root, a - real filament, an OFL preset) is irrelevant; (c) every instantiated - filament resolves an effective id at all (an id-less one is a hard load - error in C++); (d) no two products mint one id (a base62 collision, - resolved by renaming one of them). - 4. Reserved namespaces (GF*/QD_*/P-hex/"null", all ownerless) must not be - claimed by any vendor. - 5. Triple integrity: (a) every declarer resolves non-empty filament_vendor - and filament_type; (b) declarers of one (bundle, filament) resolve - identical triples; cross-bundle divergence on the same filament name is a - warning only. - 6. Bambu catalog map: resources/printers/bambu_filament_ids.json must parse, - carry source/bambustudio_commit/generated, key only OF-format ids, map - each Bambu id at most once, and for every row whose key the tree claims, - the tree's triple for that id must equal the row's (vendor, type, name). - - Nothing is grandfathered: the snapshot sanctions state, never exceptions. - """ - _utf8_console() - errors = 0 - analysis = analyze_tree(profiles_dir) - snapshot = load_snapshot(snapshot_path) - if snapshot is None: - print_error(f"filament_id snapshot not found at {snapshot_path}; {UPDATE_HINT}") - return 1 - for msg in analysis["read_errors"]: - print_error(msg) - errors += 1 - - snap_ids = snapshot["ids"] - tree_ids = analysis["ids"] - - # -- 1. format ---------------------------------------------------------- - for vendor in sorted(analysis["vendor_ids"]): - for fid in sorted(analysis["vendor_ids"][vendor]): - if OF_ID_RE.match(fid): - continue - print_error( - f'filament_id "{fid}" ({vendor}) is not a minted "OF" id; new ' - f'filament ids must come from "{GENERATE_CMD}"') - errors += 1 - - # -- 2. snapshot equality (both directions) ----------------------------- - tree_triples = analysis["triples"] - for fid in sorted(tree_ids): - entry = snap_ids.get(fid) - if entry is None: - print_error( - f'filament_id "{fid}" is not sanctioned by ' - f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") - errors += 1 - continue - for claim in tree_ids[fid]: - if claim not in entry["filaments"]: - print_error( - f'filament_id "{fid}" claim "{claim}" is not sanctioned by ' - f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") - errors += 1 - # Every tree id has at least one declarer; the snapshot records one - # triple per id, so a divergent declarer is a mismatch in both directions. - sanctioned = snapshot_triple(entry) - for t in tree_triples[fid]: - if t != sanctioned: - print_error( - f'filament_id "{fid}" triple "{"/".join(t)}" is not sanctioned by ' - f'scripts/filament_id_snapshot.json, which records ' - f'"{"/".join(sanctioned)}"; {UPDATE_HINT}') - errors += 1 - for fid in sorted(snap_ids): - if fid not in tree_ids: - print_error( - f'filament_id stability: snapshot id "{fid}" vanished from the tree; ' - f"{UPDATE_HINT}") - errors += 1 - continue - for claim in snap_ids[fid]["filaments"]: - if claim not in tree_ids[fid]: - print_error( - f'filament_id stability: snapshot claim "{claim}" of id "{fid}" ' - f"vanished from the tree; {UPDATE_HINT}") - errors += 1 - - # -- 3. identity: the id is a function of the triple alone --------------- - # One triple, one id: a declaration must carry exactly the mint of its - # triple, and there is no second acceptable value — not a salt, not a - # hand-picked one, not whatever another preset of the product carries. Two - # presets of one product that would be AMS-ambiguous on a printer are fixed - # in the profiles, by making their compatible_printers disjoint or by - # retiring the redundant one. - for vendor, rec, fid, triple in sorted( - analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): - want = generate_filament_id(*triple) - if not OF_ID_RE.match(fid) or fid == want: - continue # a non-OF id is check 1's error - print_error( - f'filament_id "{fid}" declared by "{rec["name"]}" ({rec["file"]}) does ' - f'not match the mint of its triple "{"/".join(triple)}": expected ' - f'"{want}"; paste the expected id, or fix the triple and run ' - f'"{GENERATE_CMD} --vendor {vendor}" (preview with --dry-run), then ' - f"--update-snapshot") - errors += 1 - # (3b) An inherited id is held to the same single value, and every preset - # missing it is listed — a variant under a wrong root as much as a preset - # riding another product's root. Nothing is folded into the declarer's - # error: the report names each preset whose id is wrong. - for vendor, rec, eff, triple in sorted( - analysis["inherited"], key=lambda x: (x[0], x[1]["file"])): - want = generate_filament_id(*triple) - if eff == want: - continue - print_error( - f'preset "{rec["name"]}" ({rec["file"]}) inherits filament_id "{eff}" but ' - f'its own triple "{"/".join(triple)}" mints "{want}"; ' - f"a preset carries the id of its own product: inherit a preset of the " - f"same filament, or declare its own key") - errors += 1 - ofl_map = analysis["vendors"].get(OFL, {}) - for vendor, name, file in analysis["missing_effective"]: - triple = resolve_triple(name, analysis["vendors"][vendor], ofl_map) - expected = generate_filament_id(*triple) - print_error( - f'instantiated filament "{name}" ({file}) resolves no filament_id anywhere ' - f"in its inherits chain — this is a hard load error in the C++ loader; " - f'run "{GENERATE_CMD}" (expected id for filament ' - f'"{vendor}/{base_name(name)}": "{expected}")') - errors += 1 - # (3d) The mint is injective over the tree's products, or two of them are - # indistinguishable to every device that matches on the id. - for fid, ts in sorted(analysis["collisions"].items()): - print_error( - f'filament_id "{fid}" is the mint of {len(ts)} different products ' - f'({"; ".join("/".join(t) for t in ts)}): a base62 collision; rename one ' - f"of them so their triples differ") - errors += 1 - - # -- 4. reserved namespaces ---------------------------------------------- - for fid in sorted(tree_ids): - is_reserved, owner = reserved_space_owner(fid) - if not is_reserved: - continue - for claim in tree_ids[fid]: - vendor = claim.split("/", 1)[0] - if vendor == owner: - continue - space = reserved_space_desc(fid, owner) - print_error( - f'filament_id "{fid}" of "{claim}" is in a reserved id space ' - f"({space}) and must not be claimed by system presets of other vendors") - errors += 1 - - # -- 5. triple integrity --------------------------------------------------- - for vendor, rec, fid, triple in sorted( - analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): - if triple[0] and triple[1]: - continue - missing = " and ".join( - k for k, v in (("filament_vendor", triple[0]), - ("filament_type", triple[1])) if not v) - print_error( - f'preset "{rec["name"]}" ({rec["file"]}) declares filament_id "{fid}" but ' - f"resolves empty {missing}; the mint key needs both (generic materials " - f'use filament_vendor "Generic")') - errors += 1 - for (vendor, filament_name), tmap in sorted(analysis["filament_triples"].items()): - if len(tmap) < 2: - continue - detail = "; ".join( - f'"{"/".join(t)}" ({", ".join(sorted(names))})' - for t, names in sorted(tmap.items())) - print_error( - f'filament "{vendor}/{filament_name}" declarers resolve divergent triples: ' - f"{detail}; declarers of one filament must agree on " - f"(filament_vendor, filament_type)") - errors += 1 - for filament_name, per_vendor in analysis["cross_bundle_triples"]: - detail = "; ".join( - f'{v}: {", ".join("/".join(t) for t in ts)}' - for v, ts in sorted(per_vendor.items())) - print_warning( - f'filament name "{filament_name}" resolves different triples across bundles ' - f"({detail}); bundles of one product converge on one id only once " - f"their triples agree") - - # -- 6. Bambu catalog map -------------------------------------------------- - try: - bambu_map = load_json(map_path) - if not isinstance(bambu_map, dict): - raise ValueError("top level is not a JSON object") - except (OSError, ValueError) as e: - print_error(f"Bambu catalog map {map_path} does not parse ({e}); {BAMBU_MAP_HINT}") - errors += 1 - else: - for key in ("source", "bambustudio_commit", "generated"): - if not bambu_map.get(key): - print_error(f'Bambu catalog map {map_path} is missing "{key}"; {BAMBU_MAP_HINT}') - errors += 1 - rows = bambu_map.get("filaments") - # An empty or absent section is not a well-formed map: it makes every runtime - # translation silently degrade to identity (BBLPrinterAgent logs nothing for it), - # and it is what a regeneration against the wrong --bambustudio-dir writes. - if not isinstance(rows, dict) or not rows: - print_error(f'Bambu catalog map {map_path} declares no "filaments" rows; ' - f"{BAMBU_MAP_HINT}") - errors += 1 - rows = {} - bambu_id_owners = {} - for fid, row in sorted(rows.items()): - if not OF_ID_RE.match(fid): - print_error(f'Bambu catalog map key "{fid}" is not a minted "OF" id; ' - f"{BAMBU_MAP_HINT}") - errors += 1 - bambu_id = row.get("bambu_id") - if not bambu_id: - # An empty id would map the empty string to a real filament at runtime. - print_error(f'Bambu catalog map row "{fid}" declares no "bambu_id"; ' - f"{BAMBU_MAP_HINT}") - errors += 1 - elif bambu_id in bambu_id_owners: - print_error( - f'Bambu catalog map: Bambu id "{bambu_id}" is mapped by both ' - f'"{bambu_id_owners[bambu_id]}" and "{fid}"; {BAMBU_MAP_HINT}') - errors += 1 - else: - bambu_id_owners[bambu_id] = fid - claimed = tree_triples.get(fid) - if not claimed: - continue # a product BambuStudio ships that the tree does not (yet) - row_triple = [row.get("vendor", ""), row.get("type", ""), row.get("name", "")] - if row_triple not in claimed: - print_error( - f'Bambu catalog map row "{fid}" claims triple "{"/".join(row_triple)}" ' - f'but the tree declares "{"; ".join("/".join(t) for t in claimed)}" for ' - f"that id; {BAMBU_MAP_HINT}") - errors += 1 - - return errors - - -# --------------------------------------------------------------------------- -# --update-snapshot -# --------------------------------------------------------------------------- - -def update_snapshot(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, dry_run=False): - """Regenerate the snapshot from the tree. - - Refuses to sanction a tree it could not read whole, a reserved-namespace id - (or a claim on one) and an id declared under more than one triple: none of - them can ever pass --check, so writing them into the snapshot would only - hide the mistake until CI. - Idempotent: a second run over an unchanged tree changes nothing. Returns 0 - on success. - """ - analysis = analyze_tree(profiles_dir) - # A tree that could not be read whole cannot be sanctioned: the snapshot - # would silently drop the unreadable bundle's ids and claims, and the diff - # would read as a deliberate removal. - refusals = len(analysis["read_errors"]) - for msg in analysis["read_errors"]: - print_error(msg) - - for vendor in sorted(analysis["vendor_ids"]): - for fid in sorted(analysis["vendor_ids"][vendor]): - is_reserved, owner = reserved_space_owner(fid) - if is_reserved and vendor != owner: - print_error( - f'refusing to sanction filament_id "{fid}" ({vendor}): reserved id ' - f"space, {reserved_space_desc(fid, owner)}") - refusals += 1 - for fid, ts in sorted(analysis["triples"].items()): - if len(ts) > 1: - print_error( - f'refusing to sanction filament_id "{fid}": declared under {len(ts)} ' - f'triples ({"; ".join("/".join(t) for t in ts)}); one id names one ' - f"product (check 3)") - refusals += 1 - if refusals: - return 1 - - new_snap = snapshot_from_analysis(analysis) - old_snap = load_snapshot(snapshot_path) - old_ids = old_snap["ids"] if old_snap else {} - - # Diff summary. - added_ids = sorted(set(new_snap["ids"]) - set(old_ids)) - removed_ids = sorted(set(old_ids) - set(new_snap["ids"])) - added_claims = sum( - len(set(entry["filaments"]) - set(old_ids.get(fid, {}).get("filaments", []))) - for fid, entry in new_snap["ids"].items()) - removed_claims = sum( - len(set(entry["filaments"]) - set(new_snap["ids"].get(fid, {}).get("filaments", []))) - for fid, entry in old_ids.items()) - changed = new_snap != (old_snap or {"ids": {}}) - - if changed and not dry_run: - write_snapshot(snapshot_path, new_snap) - - print_info(f"snapshot ids : {len(new_snap['ids'])} (+{len(added_ids)} / -{len(removed_ids)})") - print_info(f"claims added : {added_claims}") - print_info(f"claims removed : {removed_claims}") - if changed and dry_run: - print_success(f"dry run: {snapshot_path} would be rewritten; nothing written") - elif changed: - print_success(f"snapshot written to {snapshot_path}") - else: - print_success("snapshot already up to date; nothing changed") - return 0 - - -# --------------------------------------------------------------------------- -# Byte-preserving profile edits -# --------------------------------------------------------------------------- -# Binary IO throughout: a profile keeps its original line endings (LF or CRLF), -# its BOM and its exact formatting apart from the one line being touched. - -def insert_key_line(text, key, value, before=(), after=()): - """Insert a `"key": value` line into a preset that lacks one. - - Placed just before the first `before` anchor the file has (matching the - canonical key order), else just after the first `after` anchor, reusing that - anchor line's indentation and line ending. Returns (text, insertions made). - """ - def line(m): - return (f'{m.group(1)}"{key}": {json.dumps(value, ensure_ascii=False)},' - f'{m.group(2)}') - - for anchors, at_start in ((before, True), (after, False)): - for anchor in anchors: - m = re.search(r'^([ \t]*)"' + re.escape(anchor) + r'"[ \t]*:.*?(\r?\n)', - text, re.MULTILINE) - if m: - cut = m.start() if at_start else m.end() - return text[:cut] + line(m) + text[cut:], 1 - return text, 0 - - -def replace_key_value(text, key, new_value, old_value=None): - """Swap the JSON string VALUE on the `"key"` line, byte-preserving the rest. - - When old_value is given the line must carry exactly that value, so a stale - rewrite fails loudly instead of clobbering an unexpected id. - Returns (text, replacements made). - """ - value = (re.escape(json.dumps(old_value, ensure_ascii=False)) - if old_value is not None else _JSON_STR) - pattern = re.compile( - r'(^[ \t]*"' + re.escape(key) + r'"[ \t]*:[ \t]*)' + value, re.MULTILINE) - return pattern.subn( - lambda m: m.group(1) + json.dumps(new_value, ensure_ascii=False), text, count=1) - - -def delete_key_line(text, key, old_value=None): - """Delete the `"key"` line, byte-preserving the rest. - - Handles both the canonical layout (trailing comma) and a last-property - layout (comma on the preceding line, consumed so no dangling comma is left). - Returns (text, deletions made). - """ - value = (re.escape(json.dumps(old_value, ensure_ascii=False)) - if old_value is not None else _JSON_STR) - member = r'"' + re.escape(key) + r'"[ \t]*:[ \t]*' + value - m = re.search(r'^[ \t]*' + member + r'[ \t]*,[ \t]*\r?\n', text, re.MULTILINE) - if m: - return text[:m.start()] + text[m.end():], 1 - m = re.search(r',[ \t]*\r?\n[ \t]*' + member + r'[ \t]*(?=\r?\n)', text) - if m: - return text[:m.start()] + text[m.end():], 1 - return text, 0 - - -def insert_filament_id(text, new_id): - """Insert a `"filament_id"` line before `instantiation`, else after `name`.""" - return insert_key_line(text, "filament_id", new_id, - before=("instantiation",), after=("name",)) - - -def replace_filament_id_value(text, old_id, new_id): - """Swap the value on the `"filament_id"` line; it must carry old_id.""" - return replace_key_value(text, "filament_id", new_id, old_value=old_id) - - -def insert_setting_id(text, new_id): - """Insert a `"setting_id"` line before `filament_id`, else `instantiation`. - - Falls back to `name` — the one key every preset has — so the anchor does not - depend on whether filament_id has been written yet: a dry run, which does not - write it, must reach the same verdict as the real run that does. - """ - return insert_key_line(text, "setting_id", new_id, - before=("filament_id", "instantiation"), after=("name",)) - - -def _edit_profile(path, edit, dry_run=False, what="edit"): - """Apply `edit(text) -> (text, n)` to the profile at path, byte-preserving. - - The result is re-parsed and returned so the caller can verify the outcome — - in a dry run too, where only the write itself is skipped. Raises when the - edit found no anchor or produced invalid JSON. - """ - with open(path, "rb") as f: - raw = f.read() - bom = raw.startswith(b"\xef\xbb\xbf") - text = raw.decode("utf-8-sig") - text, n = edit(text) - if n == 0: - raise RuntimeError(f"could not apply {what} to {path}") - try: - data = json.loads(text) # fail loudly if the edit broke the JSON - except ValueError as e: - raise RuntimeError(f"{what} broke the JSON in {path}: {e}") from None - if not dry_run: - with open(path, "wb") as f: - f.write((b"\xef\xbb\xbf" if bom else b"") + text.encode("utf-8")) - return data - - -def write_filament_id(path, new_id, dry_run=False): - """Insert new_id into the profile at path, byte-preserving everything else.""" - _edit_profile(path, lambda text: insert_filament_id(text, new_id), - dry_run, "filament_id insert") - - -def rewrite_filament_id(path, old_id, new_id, dry_run=False): - """Replace the filament_id value old_id -> new_id; re-parses to verify.""" - data = _edit_profile(path, lambda text: replace_filament_id_value(text, old_id, new_id), - dry_run, "filament_id rewrite") - if data.get("filament_id") != new_id: - raise RuntimeError(f'rewrite of filament_id "{old_id}" -> "{new_id}" in {path} ' - f"did not take effect") - - -# --------------------------------------------------------------------------- -# --generate -# --------------------------------------------------------------------------- - -def _incomplete_triple(triple): - """The name(s) of the empty mint-key fields, or "" when both are present.""" - return " and ".join(k for k, v in (("filament_vendor", triple[0]), - ("filament_type", triple[1])) if not v) - - -def generate_filament_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, - changed_paths=None): - """Make every filament carry the id its own triple mints. - - One rule, applied to declarations and to id-less filaments alike: - * a declared id that is not the one its own triple mints — a wrong OF id, - or a foreign one such as a Bambu "GF*" arriving with an upstream sync — - is replaced in place; - * an instantiated filament that resolves no id at all gets one inserted - into its root(s): the id-less presets of the SAME filament its members - inherit, or the member itself (a parent of another filament cannot carry - this filament's id — check 3). - A declaration is left alone exactly when it already equals the one id its - triple mints (check 3). Two products minting one id (check 3d) are reported - and left unwritten: nothing salts past a collision, a rename resolves it. - - `vendors` restricts what is WRITTEN; the id is a function of the triple - alone, so a narrowed run writes exactly what a full one would, and --check - reports whatever it was not allowed to touch. `changed_paths`, when a set is - passed, collects the files that changed. A file whose layout offers no - anchor for the edit is reported and counted as an error, so one odd profile - cannot abort the pass over all the others. Never reads or touches the - snapshot — run --update-snapshot afterwards and review the diff. Returns - (files_changed, errors). - """ - _utf8_console() - analysis = analyze_tree(profiles_dir) - errors = 0 - for msg in analysis["read_errors"]: - print_error(msg) - errors += 1 - wanted = None - if vendors is not None: - wanted = set(vendors) - # A vendor directory without a bundle index simply has no filaments to - # process; only a name that is no directory at all is an error. - unknown = sorted(wanted - set(list_profile_dirs(profiles_dir))) - if unknown: - for v in unknown: - print_error(f'unknown vendor "{v}" in {profiles_dir}') - return 0, errors + len(unknown) - - colliding = set() # triples no run may write an id for - for fid, ts in sorted(analysis["collisions"].items()): - print_error( - f'cannot write filament_id "{fid}": it is the mint of {len(ts)} different ' - f'products ({"; ".join("/".join(t) for t in ts)}), a base62 collision; ' - f"rename one of them so their triples differ") - errors += 1 - colliding.update(ts) - - verb = "would " if dry_run else "" - files_changed = 0 - reminted = 0 - inserted = 0 - - # 1. Declarations that are not the mint of their own triple. - for vendor, rec, fid, triple in sorted( - analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): - want = generate_filament_id(*triple) - if (fid == want or (wanted is not None and vendor not in wanted) - or triple in colliding): - continue - missing = _incomplete_triple(triple) - if missing: - print_error( - f'cannot re-mint "{rec["file"]}" (filament_id "{fid}"): resolves empty ' - f'{missing}; the mint key needs both (generic materials use ' - f'filament_vendor "Generic")') - errors += 1 - continue - try: - rewrite_filament_id(rec["path"], fid, want, dry_run) - except (OSError, RuntimeError, ValueError) as e: - print_error(str(e)) - errors += 1 - continue - files_changed += 1 - reminted += 1 - if changed_paths is not None: - # Index sub_paths are "/"-joined even on Windows, where the - # setting_id pass reaches the same file through os.walk: normalize - # or one file touched by both passes counts as two. - changed_paths.add(os.path.normpath(rec["path"])) - print_info(f'{verb}rewrite {rec["file"]}: "{fid}" -> "{want}" ' - f'(triple "{"/".join(triple)}")') - - # 2. Instantiated filaments that resolve no id at all, grouped by filament. - filaments = {} # (vendor, filament name) -> [rec] - for vendor, name, _file in analysis["missing_effective"]: - if wanted is not None and vendor not in wanted: - continue - rec = analysis["vendors"][vendor][name] - if rec["id_source"] in ("cycle", "dangling"): - print_error(f'cannot mint for "{vendor}/{name}": broken inherits chain ' - f'({rec["id_source"]})') - errors += 1 - continue - filaments.setdefault((vendor, base_name(name)), []).append(rec) - - ofl_map = analysis["vendors"].get(OFL, {}) - for (vendor, filament_name), members in sorted(filaments.items()): - vendor_map = analysis["vendors"][vendor] - # Root preset(s): the direct vendor-side parents of the members (id-less - # by construction) that belong to the same filament, or the member itself. - roots = {} - for rec in members: - parent = rec.get("inherits") - root = vendor_map.get(parent) if parent else None - if (root is None or root.get("filament_id") - or base_name(root["name"]) != filament_name): - root = rec # root-less member carries the id itself - roots[root["name"]] = root - fields = {(resolve_filament_field(n, "filament_vendor", vendor_map, ofl_map), - resolve_filament_field(n, "filament_type", vendor_map, ofl_map)) - for n in roots} - if len(fields) > 1: - print_error( - f'cannot mint for filament "{vendor}/{filament_name}": its roots resolve ' - f"divergent (filament_vendor, filament_type) pairs {sorted(fields)}; " - f"align the fields first") - errors += 1 - continue - triple = (*next(iter(fields)), filament_name) - if triple in colliding: - continue # reported above - missing = _incomplete_triple(triple) - if missing: - print_error( - f'cannot mint for filament "{vendor}/{filament_name}": it resolves empty ' - f'{missing}; the mint key needs both (generic materials use ' - f'filament_vendor "Generic")') - errors += 1 - continue - new_id = generate_filament_id(*triple) - for name in sorted(roots): - root = roots[name] - try: - write_filament_id(root["path"], new_id, dry_run) - except (OSError, RuntimeError, ValueError) as e: - print_error(str(e)) - errors += 1 - continue - files_changed += 1 - inserted += 1 - if changed_paths is not None: - changed_paths.add(os.path.normpath(root["path"])) - print_info(f'{verb}insert filament "{vendor}/{filament_name}": filament_id ' - f'"{new_id}" -> {root["file"]}') - - print_info(f"filament_ids inserted : {inserted}") - print_info(f"filament_ids re-minted : {reminted}") - return files_changed, errors - - -def generate_setting_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, - changed_paths=None): - """Make every preset carry the setting_id its identity mints. - - One walk over filament/, process/ and machine/ of every vendor bundle, and - one composite edit per file: drop the misspelled "settings_id" key (the app - never reads it), strip setting_id from base profiles (only instantiated - presets carry one), and set generate_preset_setting_id(vendor, type, name) on - instantiated presets — except BBL's, which keep their authoritative "G*" - cloud ids. `changed_paths`, when a set is passed, collects the files that - changed. Returns (files_changed, errors). - """ - _utf8_console() - profiles_dir = str(profiles_dir) - errors = 0 - names = list_profile_dirs(profiles_dir) - if vendors is not None: - wanted = set(vendors) - unknown = sorted(wanted - set(names)) - if unknown: - for v in unknown: - print_error(f'unknown vendor "{v}" in {profiles_dir}') - return 0, len(unknown) - names = [v for v in names if v in wanted] - for v in sorted(wanted & RESERVED_VENDORS): - print_info(f'{v} keeps its authoritative "G*" setting_ids; only its base ' - f"declarations are stripped") - - verb = "would " if dry_run else "" - files_changed = 0 - counts = {"typos": 0, "stripped": 0, "assigned": 0} - for vendor in names: - for path, type_name in iter_profile_files(os.path.join(profiles_dir, vendor)): - try: - with open(path, "rb") as f: - data = json.loads(f.read().decode("utf-8-sig")) - if not isinstance(data, dict): - raise ValueError("top level is not a JSON object") - except (OSError, ValueError) as e: - print_error(f"unreadable profile {path}: {e}") - errors += 1 - continue - - sid = data.get("setting_id") - # Strictly "true", exactly as orca_extra_profile_check.py tests it: - # a preset the validator calls a base profile must not be given an id - # here, or the two would fight over it forever. - instantiated = data.get("instantiation") == "true" - edits = [] # (counter key, description, edit function) - if "settings_id" in data: - edits.append(("typos", 'drop the misspelled "settings_id"', - lambda text: delete_key_line(text, "settings_id"))) - typo = data["settings_id"] - if (vendor in RESERVED_VENDORS and instantiated and sid is None - and isinstance(typo, str) and typo): - # A reserved vendor's ids are authoritative, so there is no - # formula to fall back on: correct the key and keep the - # value, or the drop would leave an instantiated preset with - # no setting_id and nothing able to give it one. - edits.append(("assigned", 'restore its value as "setting_id"', - lambda text, new=typo: insert_setting_id(text, new))) - if not instantiated: - if sid is not None: - edits.append(("stripped", "strip the base profile's setting_id", - lambda text, old=sid: delete_key_line( - text, "setting_id", old))) - elif vendor not in RESERVED_VENDORS: - name = data.get("name") - if not name: - # Report and carry on: an edit already queued for this file - # (a misspelled key) is still worth applying. - print_error(f'instantiated preset has no "name": {path}') - errors += 1 - else: - new_id = generate_preset_setting_id(vendor, type_name, name) - if sid is None: - edits.append(("assigned", "insert the setting_id", - lambda text, new=new_id: insert_setting_id(text, new))) - elif sid != new_id: - edits.append(("assigned", "replace the setting_id", - lambda text, new=new_id, old=sid: replace_key_value( - text, "setting_id", new, old))) - if not edits: - continue - - def apply(text, _edits=edits, _path=path): - for _key, what, edit in _edits: - text, n = edit(text) - if n == 0: - raise RuntimeError(f"could not {what} in {_path}") - return text, len(_edits) - - try: - _edit_profile(path, apply, dry_run) - except (OSError, RuntimeError, ValueError) as e: - print_error(str(e)) - errors += 1 - continue - files_changed += 1 - if changed_paths is not None: - changed_paths.add(os.path.normpath(path)) - for key, _what, _edit in edits: - counts[key] += 1 - rel = os.path.relpath(path, profiles_dir).replace(os.sep, "/") - print_info(f"{verb}update {rel}: " - f"{', '.join(what for _key, what, _edit in edits)}") - - print_info(f'misspelled "settings_id" dropped : {counts["typos"]}') - print_info(f'base setting_ids stripped : {counts["stripped"]}') - print_info(f'setting_ids assigned : {counts["assigned"]}') - return files_changed, errors - - -# --------------------------------------------------------------------------- -# CLI -# --------------------------------------------------------------------------- - -EXAMPLES = """\ -examples: - orca_id_tool.py --generate - give every profile the id its identity mints, in every vendor bundle - orca_id_tool.py --dry-run - preview exactly that; writes nothing - orca_id_tool.py --generate --setting-id - setting_id only (filament, process and machine presets) - orca_id_tool.py --generate --filament-id --vendor Creality --vendor Elegoo - filament_id only, and only in those two bundles - orca_id_tool.py --check - validate filament_id state against the snapshot (the filament_id half - of scripts/orca_extra_profile_check.py, which is what CI runs) - orca_id_tool.py --update-snapshot - re-record the sanctioned filament_id state after a --generate run - -a maintenance round: - --dry-run -> --generate -> --update-snapshot -> --check -> commit the diff -""" - - -def build_parser(): - parser = argparse.ArgumentParser( - prog="orca_id_tool.py", allow_abbrev=False, - formatter_class=argparse.RawDescriptionHelpFormatter, - description="Assign and validate the deterministic ids of OrcaSlicer system\n" - "profiles: the per-product filament_id and the per-preset setting_id.\n" - "\n" - "Both are pure functions of the profile's own identity, so this tool\n" - "never invents an id: it writes the one the rules already imply, and\n" - "leaves a conforming tree alone.", - epilog=EXAMPLES) - modes = parser.add_argument_group("modes (pick one; no mode prints this help)") - modes.add_argument("--generate", action="store_true", - help="write the id every profile should carry: filament_id from " - "each filament's (filament_vendor, filament_type, name) " - "triple, setting_id from each preset's (vendor, type, name). " - "Idempotent and byte-preserving") - modes.add_argument("--check", action="store_true", - help="validate filament_id state against " - "scripts/filament_id_snapshot.json; exit nonzero on errors") - modes.add_argument("--update-snapshot", action="store_true", - help="re-record the sanctioned filament_id state in " - "scripts/filament_id_snapshot.json; commit the diff for " - "maintainer review") - narrow = parser.add_argument_group("narrowing --generate") - narrow.add_argument("--filament-id", action="store_true", - help="write filament_id only, skipping setting_id") - narrow.add_argument("--setting-id", action="store_true", - help="write setting_id only, skipping filament_id") - narrow.add_argument("--vendor", metavar="VENDOR", action="append", default=[], - help="write only in this vendor bundle; repeatable. The id is a " - "function of the triple alone, so a narrowed run writes " - "exactly what a full one would; --check reports whatever " - "it left outside") - parser.add_argument("--dry-run", "--dryrun", dest="dry_run", action="store_true", - help="report what would change and write nothing; with no mode of " - "its own it previews --generate") - parser.add_argument("--profiles", default=PROFILES_DIR, - help="profiles directory (default: resources/profiles)") - parser.add_argument("--snapshot", default=None, metavar="PATH", - help="the sanctioned filament_id state of that tree (default: " - "scripts/filament_id_snapshot.json, which describes " - "resources/profiles and no other tree)") - return parser - - -def main(argv=None): - _utf8_console() - argv = sys.argv[1:] if argv is None else list(argv) - parser = build_parser() - if not argv: - parser.print_help() - return 0 - args = parser.parse_args(argv) - - modes = [flag for flag, on in (("--generate", args.generate), - ("--check", args.check), - ("--update-snapshot", args.update_snapshot)) if on] - if len(modes) > 1: - parser.error(f"{' and '.join(modes)} cannot be combined; pick one mode") - if args.filament_id and args.setting_id: - parser.error("--filament-id and --setting-id each exclude the other; " - "pass neither to write both") - narrowing = [flag for flag, on in (("--filament-id", args.filament_id), - ("--setting-id", args.setting_id), - ("--vendor", bool(args.vendor))) if on] - if not modes: - if args.dry_run: - mode = "--generate" # --dry-run previews the writing mode - elif narrowing: - parser.error(f"{', '.join(narrowing)} narrows --generate; " - f"add --generate (or --dry-run to preview it)") - else: - parser.print_help() - return 0 - else: - mode = modes[0] - if narrowing and mode != "--generate": - parser.error(f"{', '.join(narrowing)} applies to --generate, not {mode}") - - snapshot_path = args.snapshot or SNAPSHOT_PATH - if (args.snapshot is None and mode in ("--check", "--update-snapshot") - and os.path.abspath(args.profiles) != os.path.abspath(PROFILES_DIR)): - # The repo snapshot is the sanctioned state of resources/profiles alone: - # checking another tree against it is meaningless, and re-recording one - # into it would overwrite the tracked file with a foreign tree's state. - parser.error(f"{mode} reads and writes the sanctioned state of the tree it is " - f"given, so --profiles needs --snapshot PATH for that tree too") - - if mode == "--check": - errors = check_filament_ids(args.profiles, snapshot_path) - if errors: - print_error(f"filament_id check: {errors} error(s)") - return 1 - print_success("filament_id check: no errors") - return 0 - - if mode == "--update-snapshot": - return update_snapshot(args.profiles, snapshot_path, dry_run=args.dry_run) - - vendors = sorted(set(args.vendor)) or None - if vendors: - unknown = sorted(set(vendors) - set(list_profile_dirs(args.profiles))) - if unknown: - for v in unknown: - print_error(f'unknown vendor "{v}" in {args.profiles}') - return 1 - - # Both by default. filament_id runs first so its keys are in place before the - # setting_id pass reads the files back. - do_filament = args.filament_id or not args.setting_id - do_setting = args.setting_id or not args.filament_id - changed = set() # one file the two passes both touch is still one file - filament_files = errors = 0 - if do_filament: - filament_files, e = generate_filament_ids( - args.profiles, vendors, args.dry_run, changed) - errors += e - if do_setting: - _n, e = generate_setting_ids(args.profiles, vendors, args.dry_run, changed) - errors += e - - summary = (f"dry run: {len(changed)} file(s) would change; nothing written" - if args.dry_run else f"{len(changed)} file(s) changed") - if errors: - print_error(f"{summary}; {errors} error(s)") - else: - print_success(summary) - if filament_files and not args.dry_run: - # A filament_id write may or may not move the sanctioned state (an id - # repaired back to the value the snapshot already records does not), so - # regenerate and let the diff — empty or not — say. - print_warning('now run "python scripts/orca_id_tool.py --update-snapshot" ' - "and commit any resulting diff for maintainer review") - return 1 if errors else 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/scripts/orca_profile_tool.py b/scripts/orca_profile_tool.py new file mode 100755 index 0000000000..8c2b4c1854 --- /dev/null +++ b/scripts/orca_profile_tool.py @@ -0,0 +1,2618 @@ +#!/usr/bin/env python3 +""" +Every maintenance job for the OrcaSlicer system profile tree, in one tool. + +usage: python scripts/orca_profile_tool.py [options] + +commands: + check validate the whole tree -- what CI runs + generate-id write the filament_id / setting_id each profile's identity implies + normalize rewrite profile files into their canonical shape + trim delete profile files no .json list references + update-index regenerate the *_list sections of .json + update-snapshot re-record scripts/filament_id_snapshot.json + +options shared by several commands: + --vendor VENDOR act on one vendor bundle only; repeatable, empty means all + (every command but update-snapshot) + --profile-type TYPE one of machine_model/process/filament/machine; repeatable + (normalize, trim, update-index) + --dry-run report what would change and write nothing (every command + that writes) + --profiles DIR act on another profile tree (default: resources/profiles); + check and update-snapshot then need --snapshot PATH too, + since the snapshot describes resources/profiles alone + +After adding, renaming or deleting profile files, run: + normalize -> trim -> update-index -> generate-id -> update-snapshot -> check +Each step feeds the next: normalize writes the "type" update-index files a +profile by, and trim judges against the index update-index is about to rebuild. + +Run from anywhere; "python scripts/orca_profile_tool.py --help" repeats this list +and "... --help" documents one command in full. + +The two id rules are the heart of it. Both ids are pure functions of the thing +they name, so nothing here is ever invented: the tool only writes the id the +rules below already imply, and a tree that already satisfies them is left +untouched. + +filament_id policy (see docs/HLSD/filament_id.md): + * filament_id is a PRODUCT id: one named spool product = one id, shared by all + of that product's per-printer/per-nozzle variants in every bundle. The + granularity is the name on the spool, not the brand: "AAA PLA Lite" and + "AAA PLA Pro" are two products with two ids, not variants of one. The + id is a pure function of the product triple (below), so WHERE a preset gets + it from is irrelevant: it may declare the key itself or inherit it from any + ancestor — a root preset, a real (instantiated) filament, an + OrcaFilamentLibrary (OFL) preset — as long as the id it ends up with is the + mint of its OWN triple. Inheritance carries settings, never identity; the + key is bundle-independent, so moving a filament into OFL never changes it. + * Ids are content-addressed by the product triple, resolved from the preset's + flattened config (filament_vendor and filament_type are inheritable list + options — first element; filament name = preset base name): + filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE, + "filament_product///") ) + 8 chars total, which satisfies the AMS length limit. Nobody invents ids by + hand, and nothing but the triple feeds the mint — not the rest of the tree, + not the snapshot. Two products whose triples mint one id (a base62 + collision; odds ~1e-5 over the whole tree) is an error --check reports and + --generate refuses to write; the remedy is a rename so the triples differ, + never a salted or hand-picked second id. + Identity changes (a filament rename, a filament_vendor/filament_type fix) + change the id BY DESIGN. + * EVERY filament profile carries a minted id, with no exceptions and no + spellings held back for anyone. Ids that other systems compose for their own + purposes are simply not mints, so no system profile can carry one and there + is nothing to reserve: Bambu's GF* catalog ids (the generated + resources/printers/bambu_filament_ids.json records the correspondence, which + the app applies at the printer boundary), the QD_* ids a Qidi box composes at + runtime, and the P+7-hex ids CreatePresetsDialog.cpp gives user-created + filaments all fail the format rule like any other stray value. + * scripts/filament_id_snapshot.json is the sanctioned-state snapshot: one + entry per id, carrying the product triple it is minted from and the + "Vendor/Filament" presets claiming it. It must exactly equal the tree-derived + state at all times, so any id/claim/triple change shows up as a reviewable + diff to that file (the maintainer gate). It sanctions state, never + exceptions: no check consults it to excuse a preset from the rules above. + +setting_id policy (see AGENTS.md "Critical Constraints"): + * setting_id is a PRESET id, a pure function of the preset's identity: + setting_id = base62_16( uuid5(NAMESPACE, "//") ) + The same value is recomputed on the fly by the C++ app + (Slic3r::generate_preset_setting_id); the two MUST stay byte-identical. + Uniqueness is therefore automatic: two presets collide only if they share + vendor + type + name, which "check" flags. + * Only instantiated presets (instantiation == "true") carry a setting_id; + base / template profiles do not. + * Bambu (BBL) owns the authoritative "G*" setting_id space and is the only + reserved vendor: its setting_ids are never rewritten, which keeps + Bambu-synced presets backward compatible. That exemption is setting_id's + alone — BBL's filament_ids are minted like every other vendor's. + +The effective-id resolution below is loader-faithful (PresetBundle.cpp +load_vendor_configs_from_json): own filament_id key, else walk `inherits` within +the vendor map, with OrcaFilamentLibrary base-bundle fallback; once a chain enters +OFL it stays in OFL; a vendor chain that dead-ends id-less retries its direct +parent in the OFL map. filament_vendor / filament_type resolve the same way. +""" + +import argparse +import json +import os +import posixpath +import re +import sys +import uuid +from collections import Counter, defaultdict +from pathlib import Path + +# The id namespace baked into both Python and C++ (Slic3r::generate_preset_setting_id). +# Dedicated, distinct from the cloud namespace (f47ac10b-...) so the two id spaces never +# coincide; it is the root of BOTH id rules below — never change it. +NAMESPACE = uuid.UUID("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f") +ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +SETTING_ID_LENGTH = 16 + +# Dedicated namespace for filament_id, derived from the setting_id namespace above. +# Never change it. +# FILAMENT_ID_NAMESPACE == UUID("c4d3ff49-4c32-5534-a3e3-00894157ab97") +FILAMENT_ID_NAMESPACE = uuid.uuid5(NAMESPACE, "filament_id") +FILAMENT_ID_LENGTH = 6 # base62 digits after the "OF" prefix -> 8 chars total + +SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__)) +PROFILES_DIR = os.path.normpath(os.path.join(SCRIPTS_DIR, "..", "resources", "profiles")) +SNAPSHOT_PATH = os.path.join(SCRIPTS_DIR, "filament_id_snapshot.json") +# The single source of truth for the map path; update_bambu_filament_ids.py +# imports this rather than recomputing it. +BAMBU_MAP_PATH = os.path.normpath( + os.path.join(SCRIPTS_DIR, "..", "resources", "printers", "bambu_filament_ids.json")) + +OFL = "OrcaFilamentLibrary" + +# Bambu (BBL) is the only vendor exempt from the setting_id rule: it keeps its +# authoritative "G*" cloud ids. No vendor is exempt from the filament_id rule. +RESERVED_VENDORS = {"BBL"} + +# The profile types that carry a setting_id; the subdir name is also the type +# name, matching Preset::get_type_string() on the C++ side. +PROFILE_SUBDIRS = ("filament", "process", "machine") + +# The profile kinds a .json indexes, each under its "_list" section. +# NOT the same thing as PROFILE_SUBDIRS above, and deliberately not merged with it: +# machine_model is an index section whose files live in the machine/ directory, and +# this order is the order the sections are rebuilt (and therefore written) in. +PROFILE_TYPES = ("machine_model", "process", "filament", "machine") + +# Data files that sit under a vendor bundle but are not presets: no name, no type. +NON_PROFILE_FILES = {"filaments_color_codes.json", "cli_config.json"} + +# Settings dropped from PrintConfig.cpp. Reported by "check --obsolete-keys". +OBSOLETE_KEYS = { + "acceleration", "scale", "rotate", "duplicate", "duplicate_grid", + "bed_size", "print_center", "g0", "wipe_tower_per_color_wipe", + "support_sharp_tails", "support_remove_small_overhangs", "support_with_sheath", + "tree_support_collision_resolution", "tree_support_with_infill", + "max_volumetric_speed", "max_print_speed", "support_closing_radius", + "remove_freq_sweep", "remove_bed_leveling", "remove_extrusion_calibration", + "support_transition_line_width", "support_transition_speed", "bed_temperature", + "bed_temperature_initial_layer", "can_switch_nozzle_type", "can_add_auxiliary_fan", + "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", + "z_hop_type", "z_lift_type", "bed_temperature_difference", "long_retraction_when_cut", + "retraction_distance_when_cut", "extruder_type", "internal_bridge_support_thickness", + "extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill", + "filament_load_time", "filament_unload_time", "smooth_coefficient", + "overhang_totally_speed", "silent_mode", "overhang_speed_classic" +} + +# Keys renamed at some point, whose old and new spellings must never co-exist: +# the loader would pick one arbitrarily. extruder_clearance_radius vs +# extruder_clearance_max_radius decides toolhead collision avoidance. +CONFLICT_KEYS = [ + ["extruder_clearance_radius", "extruder_clearance_max_radius"], +] + +# Options the config system stores as vectors; a scalar there is a silent misload. +VECTOR_KEYS = { + "filament_type", +} + +OF_ID_RE = re.compile(r"^OF[0-9A-Za-z]{6}$") +# Filament name = preset base name: strip the first "@..." suffix. The space before +# "@" is optional because names like "Afinia PLA@HS" exist. +BASE_NAME_RE = re.compile(r"\s?@.*$") +# A JSON string literal, for the byte-preserving key edits. +_JSON_STR = r'"(?:[^"\\]|\\.)*"' + +GENERATE_CMD = "python scripts/orca_profile_tool.py generate-id" +SETTING_ID_CMD = '"python scripts/orca_profile_tool.py generate-id --setting-id"' +UPDATE_HINT = 'run "python scripts/orca_profile_tool.py update-snapshot" and commit the diff for maintainer review' +BAMBU_MAP_HINT = 'regenerate the map with "python scripts/update_bambu_filament_ids.py" and commit the diff for maintainer review' +NORMALIZE_HINT = 'try "python scripts/orca_profile_tool.py normalize" to fix common issues automatically' + +# What to do about a defect check found, keyed by defect. check prints each of these +# ONCE for the whole run, after the files themselves: a bundle that forgot to index +# twenty presets needs the remedy spelled out once, not twenty times over the one list +# a maintainer has to read. +REMEDY_HINTS = { + "unindexed": 'unreferenced file(s) above: delete them, or run "python scripts/' + 'orca_profile_tool.py update-index" to add them to their .json', + "unindexable": 'unreferenced file(s) above declare no profile type: run "python ' + 'scripts/orca_profile_tool.py normalize" to write one so ' + "update-index can place them, or delete them", + "unnormalized": 'profile file(s) above are not what "python scripts/' + 'orca_profile_tool.py normalize" writes: run it and commit the result', + "stale_index": 'vendor index(es) above are not what "python scripts/' + 'orca_profile_tool.py update-index" writes: run it and commit the ' + "result", +} + + +def print_error(msg): + print(f"\033[91m[ERROR]\033[0m {msg}") # Red + +def print_warning(msg): + print(f"\033[93m[WARNING]\033[0m {msg}") # Yellow + +def print_info(msg): + print(f"\033[94m[INFO]\033[0m {msg}") # Blue + +def print_success(msg): + print(f"\033[92m[SUCCESS]\033[0m {msg}") # Green + + +def _utf8_console(): + """Make stdout/stderr survive non-ASCII profile names on cp1252 consoles.""" + for stream in (sys.stdout, sys.stderr): + if hasattr(stream, "reconfigure"): + try: + stream.reconfigure(encoding="utf-8", errors="replace") + except (ValueError, OSError): + pass + + +# --------------------------------------------------------------------------- +# Minting +# --------------------------------------------------------------------------- + +def _base62_tail(n, length): + """The low `length` base62 digits of n, most-significant first. + + The shared tail of both id rules. Its output bytes are pinned by the C++ + golden vectors (tests/libslic3r/test_preset_setting_id.cpp) and by the + filament_id snapshot — never change it. + """ + digits = [] + for _ in range(length): + digits.append(ALPHABET[n % 62]) + n //= 62 + return "".join(reversed(digits)) + + +def generate_preset_setting_id(vendor, type_name, name): + """Deterministic 16-char base62 setting_id for a preset. + + input = f"{vendor}/{type_name}/{name}"; u = uuid5(NAMESPACE, input); + id = the low SETTING_ID_LENGTH base62 digits of int(u.bytes, "big"), + most-significant first. Kept byte-identical to the C++ + Slic3r::generate_preset_setting_id. + """ + u = uuid.uuid5(NAMESPACE, f"{vendor}/{type_name}/{name}") + return _base62_tail(int.from_bytes(u.bytes, "big"), SETTING_ID_LENGTH) + + +def base_name(name): + """Filament name of a preset: name with the first "@..." suffix stripped.""" + return BASE_NAME_RE.sub("", name, count=1) + + +def generate_filament_id(filament_vendor, filament_type, filament_name): + """Deterministic "OF" + 6-char base62 filament_id for a filament product. + + The triple is the only input: no salt, no state, no second value. + input = "filament_product///"; + u = uuid5(FILAMENT_ID_NAMESPACE, input); the id tail is the low + FILAMENT_ID_LENGTH base62 digits of int(u.bytes, "big"), most-significant + first — the same derivation as generate_preset_setting_id. + """ + key = f"filament_product/{filament_vendor}/{filament_type}/{filament_name}" + u = uuid.uuid5(FILAMENT_ID_NAMESPACE, key) + return "OF" + _base62_tail(int.from_bytes(u.bytes, "big"), FILAMENT_ID_LENGTH) + + +# --------------------------------------------------------------------------- +# Tree loading + loader-faithful effective-id resolution +# --------------------------------------------------------------------------- + +class DuplicateKeyError(ValueError): + """A profile declares one key twice; json would silently keep the last.""" + + +def _no_duplicates_hook(pairs): + seen = {} + for key, value in pairs: + if key in seen: + raise DuplicateKeyError(f"Duplicate key detected: {key}") + seen[key] = value + return seen + + +def load_json(path, detect_duplicates=False): + """Parse a profile file. BOM-tolerant, because some vendors ship one. + + detect_duplicates is opt-in rather than always on: only the checks that have + always had it use it, since switching it on everywhere would newly reject files + the tree has always accepted, and switching it off would lose real coverage. + """ + with open(path, "r", encoding="utf-8-sig") as f: + return json.load(f, object_pairs_hook=_no_duplicates_hook if detect_duplicates + else None) + + +def list_vendor_names(profiles_dir): + """Vendor bundles = subdirectories with a matching .json index file. + + (Ignores stray non-bundle entries such as the tracked "user" directory, + which has no user.json index.) + """ + profiles_dir = str(profiles_dir) + return sorted( + os.path.splitext(f)[0] for f in os.listdir(profiles_dir) + if f.endswith(".json") + and os.path.isdir(os.path.join(profiles_dir, os.path.splitext(f)[0])) + ) + + +def list_profile_dirs(profiles_dir): + """Every vendor directory under the tree, index or not. + + What the setting_id pass and the per-vendor checks walk: setting_id is a + per-file property, so a bundle whose index has not landed yet must still be + assignable — otherwise check flags files generate-id refuses to touch. + (filament_id is driven by each bundle's filament_list instead, hence + list_vendor_names above.) + """ + profiles_dir = str(profiles_dir) + return sorted(d for d in os.listdir(profiles_dir) + if os.path.isdir(os.path.join(profiles_dir, d))) + + +def iter_profile_files(vendor_dir): + """Yield (json path, type) under a vendor bundle, in a deterministic order.""" + for sub in PROFILE_SUBDIRS: + base = os.path.join(vendor_dir, sub) + if not os.path.isdir(base): + continue + for root, dirs, files in os.walk(base): + dirs.sort() # deterministic traversal across filesystems + for name in sorted(files): + if name.endswith(".json"): + yield os.path.join(root, name), sub + + +def load_vendor_filaments(profiles_dir, vendor): + """Load a vendor's filament presets from its index's filament_list. + + Returns (presets dict name -> record, list of unreadable-file messages). + """ + profiles_dir = str(profiles_dir) + presets = {} + errors = [] + try: + idx = load_json(os.path.join(profiles_dir, vendor + ".json")) + except (OSError, ValueError) as e: + return presets, [f"unreadable vendor index {vendor}.json: {e}"] + for entry in idx.get("filament_list", []): + rel = f"{vendor}/{entry.get('sub_path', '')}" + path = os.path.join(profiles_dir, vendor, entry.get("sub_path", "")) + try: + data = load_json(path) + except (OSError, ValueError) as e: + errors.append(f"unreadable filament profile {rel}: {e}") + continue + name = data.get("name", entry.get("name")) + presets[name] = { + "name": name, + "file": rel, + "path": path, + "filament_id": data.get("filament_id"), + "inherits": data.get("inherits"), + "instantiation": str(data.get("instantiation", "")).lower() == "true", + "compatible_printers": data.get("compatible_printers") or [], + "filament_vendor": data.get("filament_vendor"), + "filament_type": data.get("filament_type"), + "renamed_from": data.get("renamed_from"), + } + return presets, errors + + +def resolve_filament_id(name, filaments, ofl_filaments, seen=None, in_ofl=False): + """Walk the inherits chain for the effective filament_id, loader-faithfully. + + Mirrors PresetBundle.cpp load_vendor_configs_from_json: a hop resolves in the + vendor's own map first, then falls back to the OFL base-bundle map. OFL's map + was memoized entirely within OFL, so once a chain enters OFL it stays in OFL + (a vendor file sharing an OFL preset's name must not shadow OFL-internal + hops). Additionally, a vendor preset that never resolves an id inside the + vendor is re-tried against the OFL map keyed by its direct parent name. + + Returns (filament_id or None, source, ofl_entry) where source is one of + "own"/"inherited"/"missing"/"dangling"/"cycle" and ofl_entry is the name of + the OFL preset through which a vendor chain entered OFL (None when the id was + declared vendor-side or resolution started inside OFL). + """ + if seen is None: + seen = set() + if name in seen: + return None, "cycle", None + seen.add(name) + entry = None + if in_ofl: + rec = ofl_filaments.get(name) + else: + rec = filaments.get(name) + if rec is None and name in ofl_filaments: + rec, in_ofl, entry = ofl_filaments[name], True, name + if rec is None: + return None, "dangling", None + if rec.get("filament_id"): + return rec["filament_id"], "own" if len(seen) == 1 else "inherited", entry + parent = rec.get("inherits") + if parent: + fid, src, sub_entry = resolve_filament_id(parent, filaments, ofl_filaments, seen, in_ofl) + if fid or in_ofl: + return fid, src, entry if entry is not None else sub_entry + # Vendor chain dead-ended id-less: the loader would have consulted the + # OFL map at each vendor hop's inherits; retry this hop's parent in OFL. + if parent in ofl_filaments: + fid, src, _ = resolve_filament_id(parent, filaments, ofl_filaments, set(), True) + return fid, src, parent + return fid, src, sub_entry + return None, "missing", entry + + +def resolve_filament_field(name, field, filaments, ofl_filaments, seen=None, in_ofl=False): + """Resolve an inheritable list option (filament_vendor / filament_type) with + the same hop semantics as resolve_filament_id: own value, else walk + `inherits` in the vendor map with OFL base-bundle fallback. Values are list + options — the first element counts; "" when the chain never defines one. + """ + if seen is None: + seen = set() + if name in seen: + return "" + seen.add(name) + if in_ofl: + rec = ofl_filaments.get(name) + else: + rec = filaments.get(name) + if rec is None and name in ofl_filaments: + rec, in_ofl = ofl_filaments[name], True + if rec is None: + return "" + value = rec.get(field) + if isinstance(value, str): + value = [value] + if value and value[0]: + return value[0] + parent = rec.get("inherits") + if parent: + found = resolve_filament_field(parent, field, filaments, ofl_filaments, seen, in_ofl) + if found or in_ofl: + return found + if parent in ofl_filaments: + return resolve_filament_field(parent, field, filaments, ofl_filaments, set(), True) + return found + return "" + + +def resolve_triple(name, filaments, ofl_filaments): + """The preset's mint-key triple (filament_vendor, filament_type, filament name).""" + return (resolve_filament_field(name, "filament_vendor", filaments, ofl_filaments), + resolve_filament_field(name, "filament_type", filaments, ofl_filaments), + base_name(name)) + + +def analyze_tree(profiles_dir): + """Load every vendor bundle and derive the full filament_id state. + + Returns a dict with the tree-derived snapshot sections plus the working data + the checks and the assign pass need. All claims are "Vendor/Filament" strings + over INSTANTIATED system filaments, tree-wide including OFL and BBL. + """ + profiles_dir = str(profiles_dir) + vendor_names = list_vendor_names(profiles_dir) + ofl_filaments, ofl_errors = ( + load_vendor_filaments(profiles_dir, OFL) if OFL in vendor_names else ({}, []) + ) + + vendors = {} + read_errors = list(ofl_errors) + for vendor in vendor_names: + if vendor == OFL: + filaments = ofl_filaments + else: + filaments, errs = load_vendor_filaments(profiles_dir, vendor) + read_errors.extend(errs) + for rec in filaments.values(): + eff, src, _entry = resolve_filament_id(rec["name"], filaments, ofl_filaments) + rec["eff_filament_id"] = eff + rec["id_source"] = src + vendors[vendor] = filaments + + # id -> set of "Vendor/Filament" claims over instantiated presets. Every id + # occurring in the tree is a key; ids only ever DECLARED (e.g. on a root + # none of whose descendants instantiate) keep an empty claim list, so that + # the snapshot exactly equals the tree-derived state. + ids = {} + vendor_ids = {} # vendor -> set of ids occurring there (declared or effective) + declared_ids = {} # vendor -> set of ids DECLARED in that vendor's own files + missing_effective = [] # (vendor, name, file) instantiated presets resolving no id + inherited = [] # (vendor, rec, eff, triple) instantiated presets inheriting an OF id + triples = {} # fid -> set of triples of its declarers + declarer_triples = [] # (vendor, rec, fid, triple) per declarer + filament_triples = {} # (vendor, filament_name) -> {triple: [declarers]} + mints = {} # minted id -> triples minting it (declarers + instantiated) + + for vendor, filaments in vendors.items(): + occurring = vendor_ids.setdefault(vendor, set()) + for rec in filaments.values(): + triple = resolve_triple(rec["name"], filaments, ofl_filaments) + rec["triple"] = triple + if rec.get("filament_id") or rec["instantiation"]: + mints.setdefault(generate_filament_id(*triple), set()).add(triple) + if rec.get("filament_id"): + fid = rec["filament_id"] + occurring.add(fid) + declared_ids.setdefault(vendor, set()).add(fid) + ids.setdefault(fid, set()) + declarer_triples.append((vendor, rec, fid, triple)) + triples.setdefault(fid, set()).add(triple) + filament_triples.setdefault( + (vendor, base_name(rec["name"])), {}).setdefault( + triple, []).append(rec["name"]) + if not rec["instantiation"]: + continue + eff = rec.get("eff_filament_id") + if not eff: + missing_effective.append((vendor, rec["name"], rec["file"])) + continue + occurring.add(eff) + ids.setdefault(eff, set()).add(f"{vendor}/{base_name(rec['name'])}") + if not rec.get("filament_id") and OF_ID_RE.match(eff): + inherited.append((vendor, rec, eff, triple)) + + # Cross-bundle triple divergence (check 4, warning only): the same filament + # name declared in several bundles with different triples cannot converge + # on one id until the divergence is fixed. + name_bundles = {} + for (vendor, filament_name), tmap in filament_triples.items(): + name_bundles.setdefault(filament_name, {})[vendor] = frozenset(tmap) + cross_bundle_triples = [ + (filament_name, {v: sorted(ts) for v, ts in per_vendor.items()}) + for filament_name, per_vendor in sorted(name_bundles.items()) + if len(per_vendor) > 1 and len(set(per_vendor.values())) > 1 + ] + + return { + "vendors": vendors, + "read_errors": read_errors, + "ids": {fid: sorted(claims) for fid, claims in ids.items()}, + "vendor_ids": vendor_ids, + "declared_ids": declared_ids, + "missing_effective": sorted(missing_effective), + "inherited": inherited, + "triples": {fid: sorted(list(t) for t in ts) for fid, ts in triples.items()}, + "declarer_triples": declarer_triples, + "filament_triples": filament_triples, + "cross_bundle_triples": cross_bundle_triples, + # id -> the products (triples) minting it, where there is more than one + "collisions": {fid: sorted(ts) for fid, ts in mints.items() if len(ts) > 1}, + } + + +# --------------------------------------------------------------------------- +# Snapshot IO +# --------------------------------------------------------------------------- + +def snapshot_from_analysis(analysis): + """One entry per id, in id order: the product triple it is minted from and + the "Vendor/Filament" claims on it. Requires exactly one declared triple per + id (update_snapshot refuses any other state; check 3 rejects it anyway).""" + ids = {} + for fid, claims in sorted(analysis["ids"].items()): + [(vendor, ftype, filament_name)] = analysis["triples"][fid] + ids[fid] = {"filaments": sorted(claims), "name": filament_name, + "filament_type": ftype, "filament_vendor": vendor} + return {"ids": ids} + + +def snapshot_triple(entry): + return [entry["filament_vendor"], entry["filament_type"], entry["name"]] + + +def load_snapshot(path): + """Return the snapshot dict, or None when the file does not exist.""" + if not os.path.exists(path): + return None + data = load_json(path) + data.setdefault("ids", {}) + return data + + +def write_snapshot(path, obj): + """Deterministic serialization: snapshot_from_analysis order, indent 1, LF, + trailing newline.""" + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(obj, f, indent=1, ensure_ascii=False) + f.write("\n") + + +# --------------------------------------------------------------------------- +# filament_id validation +# --------------------------------------------------------------------------- + +def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, + map_path=BAMBU_MAP_PATH): + """Validate filament_id state across every vendor. Returns the error count. + + 1. Format: every id occurring in the tree (declared or effective) must + match ^OF[0-9A-Za-z]{6}$. No exceptions: not the snapshot, not BBL. + 2. Snapshot equality, both directions: every id in the tree, the filaments + claiming it and the triple its declarers resolve must equal the snapshot + entry exactly (the snapshot diff is the maintainer gate). + 3. Identity: the id is a function of the triple alone, and there is no + second acceptable value. (a) A declared id must equal the one id the + declarer's own triple mints; (b) the id an instantiated preset inherits + must equal the one ITS own triple mints — how it inherits it (a root, a + real filament, an OFL preset) is irrelevant; (c) every instantiated + filament resolves an effective id at all (an id-less one is a hard load + error in C++); (d) no two products mint one id (a base62 collision, + resolved by renaming one of them). + 4. Triple integrity: (a) every declarer resolves non-empty filament_vendor + and filament_type; (b) declarers of one (bundle, filament) resolve + identical triples; cross-bundle divergence on the same filament name is a + warning only. + 5. Bambu catalog map: resources/printers/bambu_filament_ids.json must parse, + carry source/bambustudio_commit/generated, key only OF-format ids, map + each Bambu id at most once, and for every row whose key the tree claims, + the tree's triple for that id must equal the row's (vendor, type, name). + + Nothing is grandfathered: the snapshot sanctions state, never exceptions. + """ + _utf8_console() + errors = 0 + analysis = analyze_tree(profiles_dir) + snapshot = load_snapshot(snapshot_path) + if snapshot is None: + print_error(f"filament_id snapshot not found at {snapshot_path}; {UPDATE_HINT}") + return 1 + for msg in analysis["read_errors"]: + print_error(msg) + errors += 1 + + snap_ids = snapshot["ids"] + tree_ids = analysis["ids"] + + # -- 1. format ---------------------------------------------------------- + for vendor in sorted(analysis["vendor_ids"]): + for fid in sorted(analysis["vendor_ids"][vendor]): + if OF_ID_RE.match(fid): + continue + print_error( + f'filament_id "{fid}" ({vendor}) is not a minted "OF" id; new ' + f'filament ids must come from "{GENERATE_CMD}"') + errors += 1 + + # -- 2. snapshot equality (both directions) ----------------------------- + tree_triples = analysis["triples"] + for fid in sorted(tree_ids): + entry = snap_ids.get(fid) + if entry is None: + print_error( + f'filament_id "{fid}" is not sanctioned by ' + f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") + errors += 1 + continue + for claim in tree_ids[fid]: + if claim not in entry["filaments"]: + print_error( + f'filament_id "{fid}" claim "{claim}" is not sanctioned by ' + f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") + errors += 1 + # Every tree id has at least one declarer; the snapshot records one + # triple per id, so a divergent declarer is a mismatch in both directions. + sanctioned = snapshot_triple(entry) + for t in tree_triples[fid]: + if t != sanctioned: + print_error( + f'filament_id "{fid}" triple "{"/".join(t)}" is not sanctioned by ' + f'scripts/filament_id_snapshot.json, which records ' + f'"{"/".join(sanctioned)}"; {UPDATE_HINT}') + errors += 1 + for fid in sorted(snap_ids): + if fid not in tree_ids: + print_error( + f'filament_id stability: snapshot id "{fid}" vanished from the tree; ' + f"{UPDATE_HINT}") + errors += 1 + continue + for claim in snap_ids[fid]["filaments"]: + if claim not in tree_ids[fid]: + print_error( + f'filament_id stability: snapshot claim "{claim}" of id "{fid}" ' + f"vanished from the tree; {UPDATE_HINT}") + errors += 1 + + # -- 3. identity: the id is a function of the triple alone --------------- + # One triple, one id: a declaration must carry exactly the mint of its + # triple, and there is no second acceptable value — not a salt, not a + # hand-picked one, not whatever another preset of the product carries. Two + # presets of one product that would be AMS-ambiguous on a printer are fixed + # in the profiles, by making their compatible_printers disjoint or by + # retiring the redundant one. + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if not OF_ID_RE.match(fid) or fid == want: + continue # a non-OF id is check 1's error + print_error( + f'filament_id "{fid}" declared by "{rec["name"]}" ({rec["file"]}) does ' + f'not match the mint of its triple "{"/".join(triple)}": expected ' + f'"{want}"; paste the expected id, or fix the triple and run ' + f'"{GENERATE_CMD} --vendor {vendor}" (preview with --dry-run), then ' + f"--update-snapshot") + errors += 1 + # (3b) An inherited id is held to the same single value, and every preset + # missing it is listed — a variant under a wrong root as much as a preset + # riding another product's root. Nothing is folded into the declarer's + # error: the report names each preset whose id is wrong. + for vendor, rec, eff, triple in sorted( + analysis["inherited"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if eff == want: + continue + print_error( + f'preset "{rec["name"]}" ({rec["file"]}) inherits filament_id "{eff}" but ' + f'its own triple "{"/".join(triple)}" mints "{want}"; ' + f"a preset carries the id of its own product: inherit a preset of the " + f"same filament, or declare its own key") + errors += 1 + ofl_map = analysis["vendors"].get(OFL, {}) + for vendor, name, file in analysis["missing_effective"]: + triple = resolve_triple(name, analysis["vendors"][vendor], ofl_map) + expected = generate_filament_id(*triple) + print_error( + f'instantiated filament "{name}" ({file}) resolves no filament_id anywhere ' + f"in its inherits chain — this is a hard load error in the C++ loader; " + f'run "{GENERATE_CMD}" (expected id for filament ' + f'"{vendor}/{base_name(name)}": "{expected}")') + errors += 1 + # (3d) The mint is injective over the tree's products, or two of them are + # indistinguishable to every device that matches on the id. + for fid, ts in sorted(analysis["collisions"].items()): + print_error( + f'filament_id "{fid}" is the mint of {len(ts)} different products ' + f'({"; ".join("/".join(t) for t in ts)}): a base62 collision; rename one ' + f"of them so their triples differ") + errors += 1 + + # -- 4. triple integrity --------------------------------------------------- + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + if triple[0] and triple[1]: + continue + missing = " and ".join( + k for k, v in (("filament_vendor", triple[0]), + ("filament_type", triple[1])) if not v) + print_error( + f'preset "{rec["name"]}" ({rec["file"]}) declares filament_id "{fid}" but ' + f"resolves empty {missing}; the mint key needs both (generic materials " + f'use filament_vendor "Generic")') + errors += 1 + for (vendor, filament_name), tmap in sorted(analysis["filament_triples"].items()): + if len(tmap) < 2: + continue + detail = "; ".join( + f'"{"/".join(t)}" ({", ".join(sorted(names))})' + for t, names in sorted(tmap.items())) + print_error( + f'filament "{vendor}/{filament_name}" declarers resolve divergent triples: ' + f"{detail}; declarers of one filament must agree on " + f"(filament_vendor, filament_type)") + errors += 1 + for filament_name, per_vendor in analysis["cross_bundle_triples"]: + detail = "; ".join( + f'{v}: {", ".join("/".join(t) for t in ts)}' + for v, ts in sorted(per_vendor.items())) + print_warning( + f'filament name "{filament_name}" resolves different triples across bundles ' + f"({detail}); bundles of one product converge on one id only once " + f"their triples agree") + + # -- 6. Bambu catalog map -------------------------------------------------- + try: + bambu_map = load_json(map_path) + if not isinstance(bambu_map, dict): + raise ValueError("top level is not a JSON object") + except (OSError, ValueError) as e: + print_error(f"Bambu catalog map {map_path} does not parse ({e}); {BAMBU_MAP_HINT}") + errors += 1 + else: + for key in ("source", "bambustudio_commit", "generated"): + if not bambu_map.get(key): + print_error(f'Bambu catalog map {map_path} is missing "{key}"; {BAMBU_MAP_HINT}') + errors += 1 + rows = bambu_map.get("filaments") + # An empty or absent section is not a well-formed map: it makes every runtime + # translation silently degrade to identity (BBLPrinterAgent logs nothing for it), + # and it is what a regeneration against the wrong --bambustudio-dir writes. + if not isinstance(rows, dict) or not rows: + print_error(f'Bambu catalog map {map_path} declares no "filaments" rows; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + rows = {} + bambu_id_owners = {} + for fid, row in sorted(rows.items()): + if not OF_ID_RE.match(fid): + print_error(f'Bambu catalog map key "{fid}" is not a minted "OF" id; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + bambu_id = row.get("bambu_id") + if not bambu_id: + # An empty id would map the empty string to a real filament at runtime. + print_error(f'Bambu catalog map row "{fid}" declares no "bambu_id"; ' + f"{BAMBU_MAP_HINT}") + errors += 1 + elif bambu_id in bambu_id_owners: + print_error( + f'Bambu catalog map: Bambu id "{bambu_id}" is mapped by both ' + f'"{bambu_id_owners[bambu_id]}" and "{fid}"; {BAMBU_MAP_HINT}') + errors += 1 + else: + bambu_id_owners[bambu_id] = fid + claimed = tree_triples.get(fid) + if not claimed: + continue # a product BambuStudio ships that the tree does not (yet) + row_triple = [row.get("vendor", ""), row.get("type", ""), row.get("name", "")] + if row_triple not in claimed: + print_error( + f'Bambu catalog map row "{fid}" claims triple "{"/".join(row_triple)}" ' + f'but the tree declares "{"; ".join("/".join(t) for t in claimed)}" for ' + f"that id; {BAMBU_MAP_HINT}") + errors += 1 + + return errors + + +# --------------------------------------------------------------------------- +# setting_id validation +# --------------------------------------------------------------------------- + +def check_setting_id_uniqueness(profiles_dir): + """Validate setting_id across every vendor. Returns the error count. + + 1. Every instantiated preset must HAVE a setting_id. (all vendors) + 2. A stored setting_id must equal generate_preset_setting_id(vendor, type, + name); a stale value means the JSON was edited without rerunning + generate-id. (all vendors EXCEPT the reserved ones, i.e. BBL) + 3. Base profiles (instantiation != "true") must not carry a setting_id. + 4. setting_id must be globally unique - no two files may share one. + 5. No profile may use the misspelled key "settings_id". + + Cross-vendor by nature (rule 4), so it always runs over the whole tree, never + narrowed by --vendor. BBL keeps its authoritative "G*" cloud ids, which the + formula does not produce, so only rule 2 is skipped for it; it is still held to + presence, uniqueness, base-no-id and the typo check. + """ + errors = 0 + owners = {} # setting_id -> [relative path], every vendor + for vendor in list_profile_dirs(profiles_dir): + formula_exempt = vendor in RESERVED_VENDORS + for path, sub in iter_profile_files(os.path.join(profiles_dir, vendor)): + try: + data = load_json(path) + except (ValueError, OSError): + # Parse failures are reported by the per-vendor checks, which walk + # the same files; reporting them here too would double-count. + continue + if not isinstance(data, dict): + continue + rel = os.path.relpath(path, profiles_dir).replace(os.sep, "/") + # Rule 5: catch the misspelled "settings_id" key. + if "settings_id" in data: + errors += 1 + print_error( + f'profile {rel} uses the misspelled key "settings_id" ' + f'(should be "setting_id"); run {SETTING_ID_CMD}') + sid = data.get("setting_id") + if data.get("instantiation") != "true": + # Rule 3: base/template profiles must not carry a setting_id. + if sid: + errors += 1 + print_error( + f'base profile {rel} (instantiation != "true") must not have a ' + f'setting_id ("{sid}"); run {SETTING_ID_CMD}') + continue + # Rule 1: every instantiated preset must have a setting_id. + if not sid: + errors += 1 + print_error(f"instantiated preset {rel} is missing a setting_id; " + f"run {SETTING_ID_CMD}") + continue + # Rule 2: the stored id must match the deterministic rule. + if not formula_exempt: + expected = generate_preset_setting_id(vendor, sub, data.get("name", "")) + if sid != expected: + errors += 1 + print_error( + f'setting_id "{sid}" in {rel} does not match the expected ' + f'"{expected}" for {vendor}/{sub}/{data.get("name", "")}; ' + f"run {SETTING_ID_CMD}") + continue + owners.setdefault(sid, []).append(rel) + + # Rule 4: a setting_id shared by two files is an error. For managed vendors that + # means a duplicate vendor/type/name; for BBL a copy-pasted id. + for sid, locs in sorted(owners.items()): + if len(locs) < 2: + continue + errors += 1 + print_error(f'setting_id "{sid}" is shared by {len(locs)} files ({sorted(locs)}); ' + f"setting_id must be globally unique") + return errors + + +# --------------------------------------------------------------------------- +# Per-vendor validation +# --------------------------------------------------------------------------- +# These walk one vendor bundle each and are what --vendor narrows. They use +# pathlib where the originals did; the check driver converts at the boundary. + +def _vendor_json_files(vendor_path): + """Every .json under a vendor bundle, deepest-last, in a stable order.""" + return sorted(vendor_path.rglob("*.json")) + + +def check_preset_name_uniqueness(profiles_dir, vendor): + """No two profiles in a bundle may share a type and a name, indexed or not. + + The loader resolves "inherits" through a per-type map of the bundle's profiles + (PresetBundle.cpp load_subfiles), and std::map::emplace keeps the first + insertion: a second file claiming the name is silently dropped, and which one + wins is nothing but index order. An unindexed twin counts too - it is one + sub_path edit away from deciding that silently. + + Names are per bundle, never global: base profiles reuse them across vendors by + design (fdm_process_common exists in 61 of them). Returns the error count. + """ + errors = 0 + vendor_dir = os.path.join(profiles_dir, vendor) + claimed = defaultdict(list) # (type, name) -> [sub_path] + for path, _sub in iter_profile_files(vendor_dir): + if os.path.basename(path) in NON_PROFILE_FILES: + continue + try: + data = load_json(path) + except (ValueError, OSError): + # Parse failures are reported by the checks that walk the same files; + # reporting them here too would double-count. + continue + if not isinstance(data, dict) or data.get("type") not in PROFILE_TYPES: + continue + if not data.get("name"): + continue # a nameless profile is check_filament_compatible_printers' + claimed[(data["type"], data["name"])].append( + posixpath.normpath(os.path.relpath(path, vendor_dir).replace(os.sep, "/"))) + + for (profile_type, name), sub_paths in sorted(claimed.items()): + if len(sub_paths) < 2: + continue + errors += 1 + print_error(f"{vendor} has {len(sub_paths)} {profile_type} profiles named " + f'"{name}" ({", ".join(sorted(sub_paths))}); a bundle holds one ' + f"profile per name, so the loader keeps whichever it reaches first " + f"and silently drops the rest") + return errors + + +def check_filament_compatible_printers(profiles_dir, vendor): + """Every instantiated filament preset must declare a non-empty compatible_printers. + + Orca resolves compatible_printers from the preset itself; inheriting it is not + supported on the Profile page. In the OrcaFilamentLibrary it is optional instead: + a profile without it is generic and offered on every printer, while one that + lists printers supersedes the generic profile there. + + Returns the error count. + """ + error = 0 + vendor_path = Path(profiles_dir) / vendor / "filament" + if not vendor_path.exists(): + return 0 + + profiles = [] + for file_path in _vendor_json_files(vendor_path): + if file_path.name in NON_PROFILE_FILES: + continue + rel = file_path.relative_to(profiles_dir) + try: + data = load_json(file_path, detect_duplicates=True) + except DuplicateKeyError as e: + print_error(f"Duplicate key error in {rel}: {e}") + error += 1 + continue + except (ValueError, OSError) as e: + print_error(f"Error processing {rel}: {e}") + error += 1 + continue + + profile_name = data.get("name") + if not profile_name: + print_error(f"'name' missing in {rel}") + error += 1 + continue + # Two files claiming this name is check_preset_name_uniqueness' to report, + # over the whole bundle rather than the filament/ directory alone. + profiles.append((rel, data)) + + if vendor == OFL: + return error + + for rel, data in profiles: + if str(data.get("instantiation", "")).lower() != "true": + continue + compatible_printers = data.get("compatible_printers") + if not compatible_printers: + print_error(f"'compatible_printers' missing in {rel}") + error += 1 + return error + + +def load_available_filament_profiles(profiles_dir, vendor): + """The set of filament preset names a vendor bundle offers.""" + profiles = set() + vendor_path = Path(profiles_dir) / vendor / "filament" + if not vendor_path.exists(): + return profiles + + for file_path in _vendor_json_files(vendor_path): + try: + data = load_json(file_path) + except (ValueError, OSError) as e: + print_error(f"Error loading filament profile " + f"{file_path.relative_to(profiles_dir)}: {e}") + continue + if isinstance(data, dict) and "name" in data: + profiles.add(data["name"]) + return profiles + + +def check_machine_default_materials(profiles_dir, vendor): + """Every default material a machine names must exist, in the bundle or in OFL. + + Returns (errors, warnings); the warning is the bundle having no machine/ at all. + """ + error_count = 0 + machine_dir = Path(profiles_dir) / vendor / "machine" + if not machine_dir.exists(): + print_warning(f"No machine profiles found for vendor: {vendor}") + return 0, 1 + + available = (load_available_filament_profiles(profiles_dir, vendor) + | load_available_filament_profiles(profiles_dir, OFL)) + + for file_path in _vendor_json_files(machine_dir): + rel = file_path.relative_to(profiles_dir) + try: + data = load_json(file_path) + except (ValueError, OSError) as e: + print_error(f"Error processing machine profile {rel}: {e}") + error_count += 1 + continue + + default_materials = data.get("default_materials") or data.get( + "default_filament_profile") + if not default_materials: + continue + if isinstance(default_materials, list): + materials = default_materials + elif ";" in default_materials: + # A ";"-separated list; a trailing separator leaves an empty segment, + # which is formatting noise rather than a missing profile. + materials = [m.strip() for m in default_materials.split(";") if m.strip()] + else: + materials = [default_materials] + for material in materials: + if material not in available: + print_error(f"Missing filament profile: '{material}' referenced in {rel}") + error_count += 1 + return error_count, 0 + + +def check_name_consistency(profiles_dir, vendor): + """Each .json entry must name the preset its sub_path file declares. + + A preset loads only if the two agree, so a mismatch silently drops it. + Returns (errors, warnings); the warning is the bundle having no index at all. + """ + error_count = 0 + profiles_path = Path(profiles_dir) + vendor_dir = profiles_path / vendor + vendor_file = profiles_path / (vendor + ".json") + if not vendor_file.exists(): + print_warning(f"No profiles found for vendor: {vendor} at {vendor_file}") + return 0, 1 + + try: + data = load_json(vendor_file) + except (ValueError, OSError) as e: + print_error(f"Error loading vendor profile {vendor_file.name}: {e}") + return 1, 0 + + for section in ("filament_list", "machine_model_list", "machine_list", "process_list"): + for child in data.get(section, []): + name_in_vendor = child.get("name") + sub_path = child.get("sub_path") + if not name_in_vendor or not sub_path: + print_error(f"{section} entry without a name/sub_path in {vendor}.json: " + f"{child}") + error_count += 1 + continue + sub_file = vendor_dir / sub_path + if not sub_file.exists(): + print_error(f"Missing sub profile: '{sub_path}' declared in {vendor}.json") + error_count += 1 + continue + try: + sub_data = load_json(sub_file) + except (ValueError, OSError) as e: + print_error(f"Error loading profile {sub_file.relative_to(profiles_path)}: {e}") + error_count += 1 + continue + + name_in_sub = sub_data.get("name") + if name_in_sub == name_in_vendor: + continue + print_error(f"{section} name mismatch: required '{name_in_vendor}' in " + f"{vendor}.json but found '{name_in_sub}' in " + f"{sub_file.relative_to(profiles_path)}") + error_count += 1 + return error_count, 0 + + +def check_index_coverage(profiles_dir, vendor): + """Every profile file in a bundle must be listed in its .json. + + The mirror of check_name_consistency, which walks the index and looks for the + files: this walks the files and looks for them in the index. The loader reads the + sub_paths listed there and nothing else, so a file no list names is dead weight + that looks live - it sits in the bundle, gets edited and reviewed, and never + reaches a single user. + + Returns (errors, gaps), gaps counting the files per REMEDY_HINTS category so + the caller can print each remedy once for the whole run instead of once per file. + """ + errors = 0 + gaps = Counter() + vendor_dir = os.path.join(profiles_dir, vendor) + try: + library = load_json(os.path.join(profiles_dir, vendor + ".json")) + except (ValueError, OSError): + # A bundle with no readable index at all is check_name_consistency's to + # report; calling every file in it unindexed would only bury that. + return 0, gaps + + listed = set() + for section in PROFILE_TYPES: + for entry in library.get(section + "_list", []): + if entry.get("sub_path"): + # Index entries are hand-written; "filament/./X.json" names the same + # file as "filament/X.json" and must not read as unlisted. + listed.add(posixpath.normpath(entry["sub_path"].replace("\\", "/"))) + + for path, _sub in iter_profile_files(vendor_dir): + if os.path.basename(path) in NON_PROFILE_FILES: + continue # data files carry no name or type and are never indexed + sub_path = posixpath.normpath( + os.path.relpath(path, vendor_dir).replace(os.sep, "/")) + if sub_path in listed: + continue + try: + data = load_json(path) + except (ValueError, OSError): + data = None + errors += 1 + if isinstance(data, dict) and data.get("type") in PROFILE_TYPES: + gaps["unindexed"] += 1 + print_error(f"{vendor}/{sub_path}: no {vendor}.json list references it, so " + f"it never loads") + else: + gaps["unindexable"] += 1 + print_error(f"{vendor}/{sub_path}: no {vendor}.json list references it and " + f"it declares no profile type") + return errors, gaps + + +def check_filament_id_length(profiles_dir, vendor): + """No indexed filament preset may declare a filament_id longer than 8 chars. + + Longer ids break the AMS. Runs for every vendor alike (BBL included: the id + format is what matters, not the vendor). Every .json under the bundle's + filament directory is still parsed through the duplicate-key hook, so that + coverage is unchanged; only the length rule itself is scoped to presets the + index (.json filament_list) actually references. A file the index does + not reference never loads, so its filament_id cannot break anything -- and some + vendors (e.g. SeeMeCNC) ship such orphaned files pre-dating this check. + + Returns the error count. + """ + error = 0 + profiles_path = Path(profiles_dir) + vendor_path = profiles_path / vendor / "filament" + if not vendor_path.exists(): + return 0 + + referenced = set() + vendor_file = profiles_path / (vendor + ".json") + if vendor_file.exists(): + try: + index = load_json(vendor_file) + for entry in index.get("filament_list", []): + sub_path = entry.get("sub_path") + if sub_path: + referenced.add((profiles_path / vendor / sub_path).resolve()) + except (ValueError, OSError) as e: + print_error(f"Error loading vendor profile {vendor_file.name}: {e}") + error += 1 + + for file_path in _vendor_json_files(vendor_path): + rel = file_path.relative_to(profiles_path) + try: + data = load_json(file_path, detect_duplicates=True) + except DuplicateKeyError as e: + print_error(f"Duplicate key error in {rel}: {e}") + error += 1 + continue + except (ValueError, OSError) as e: + print_error(f"Error processing {rel}: {e}") + error += 1 + continue + + filament_id = data.get("filament_id") + if filament_id and len(filament_id) > 8 and file_path.resolve() in referenced: + print_error(f'Filament id too long "{filament_id}": {rel}') + error += 1 + return error + + +def check_obsolete_keys(profiles_dir, vendor): + """Warn about settings PrintConfig.cpp no longer defines. Returns the count.""" + warn_count = 0 + profiles_path = Path(profiles_dir) + vendor_path = profiles_path / vendor / "filament" + if not vendor_path.exists(): + return 0 + + for file_path in _vendor_json_files(vendor_path): + rel = file_path.relative_to(profiles_path) + try: + data = load_json(file_path) + except (ValueError, OSError) as e: + print_warning(f"Error reading profile {rel}: {e}") + warn_count += 1 + continue + for key in data: + if key in OBSOLETE_KEYS: + print_warning(f"Obsolete key: '{key}' found in {rel}") + warn_count += 1 + return warn_count + + +def check_vector_type_keys(profiles_dir, vendor): + """Options the config system stores as vectors must be JSON arrays. + + `filament_type` must be ["PA-CF"], not "PA-CF". Returns the error count. + """ + error_count = 0 + profiles_path = Path(profiles_dir) + vendor_path = profiles_path / vendor + if not vendor_path.exists(): + return 0 + + for file_path in _vendor_json_files(vendor_path): + rel = file_path.relative_to(profiles_path) + try: + data = load_json(file_path) + except (ValueError, OSError) as e: + print_error(f"Error processing {rel}: {e}") + error_count += 1 + continue + if not isinstance(data, dict): + continue + for key in VECTOR_KEYS: + if key in data and not isinstance(data[key], list): + print_error(f"'{key}' must be an array in {rel}, " + f"got {type(data[key]).__name__}: {data[key]!r}") + error_count += 1 + return error_count + + +def check_conflict_keys(profiles_dir, vendor): + """A renamed option and its old spelling must not co-exist in one profile. + + The loader would pick one arbitrarily, and for extruder_clearance_radius vs + extruder_clearance_max_radius the wrong pick means a toolhead collision. + Returns (errors, warnings). + """ + error_count = 0 + profiles_path = Path(profiles_dir) + vendor_path = profiles_path / vendor + if not vendor_path.exists(): + print_warning(f"No profile directory for vendor: {vendor}") + return 0, 1 + + for file_path in _vendor_json_files(vendor_path): + rel = file_path.relative_to(profiles_path) + try: + data = load_json(file_path, detect_duplicates=True) + except DuplicateKeyError as e: + print_error(f"Duplicate key error in {rel}: {e}") + error_count += 1 + continue + except (ValueError, OSError) as e: + print_error(f"Error processing {rel}: {e}") + error_count += 1 + continue + if not isinstance(data, dict): + continue + for key_set in CONFLICT_KEYS: + if sum(1 for k in key_set if k in data) > 1: + print_error(f"Conflict keys {key_set} co-exist in {rel}") + error_count += 1 + return error_count, 0 + + +def check_normalized(profiles_dir, vendor): + """A bundle must already be what normalize and update-index write. + + Those two commands define a profile file's canonical shape - identifying keys + first, keys the slicer no longer reads gone, filament options that are vectors + written as vectors - and a .json's canonical lists, ordered parents-first + so the loader resolves every "inherits" in one pass. Running them over a + contributed bundle has to be a no-op; where it would not be, the file that was + reviewed is not the file that ships, and the next maintainer to run normalize + carries an unrelated diff into their own change. + + It asks the normalize and update-index sections below rather than restating what + they do, because a second definition of normal is free to drift from the one that + writes. + + The index half is skipped when the bundle has a file update-index cannot place, or + a preset name two files claim: the index is then unbuildable for a reason + check_index_coverage and check_preset_name_uniqueness already report on their own, + and "would be rebuilt" stacked on top of that is noise. + + Returns (errors, gaps), gaps counting per REMEDY_HINTS category. + """ + errors = 0 + gaps = Counter() + vendor_dir = os.path.join(profiles_dir, vendor) + + for path, sub in iter_profile_files(vendor_dir): + if os.path.basename(path) in NON_PROFILE_FILES: + continue # data files carry no name or type; normalize skips them too + try: + data = load_json(path) + except (ValueError, OSError): + continue # an unreadable file is check_name_consistency's to report + if not isinstance(data, dict): + continue + changes = _normalize_profile(data, sub) + if not changes: + continue + sub_path = os.path.relpath(path, vendor_dir).replace(os.sep, "/") + print_error(f"{vendor}/{sub_path}: normalize would {'; '.join(changes)}") + errors += 1 + gaps["unnormalized"] += 1 + + try: + library = load_json(os.path.join(profiles_dir, vendor + ".json")) + except (ValueError, OSError): + # A bundle with no readable index has nothing to compare against, and saying so + # again here would only bury check_name_consistency's report of it. + return errors, gaps + + sections, problems = build_index_sections(profiles_dir, vendor) + if sections is None or problems: + return errors, gaps + stale = sorted(s for s, entries in sections.items() if library.get(s) != entries) + if stale: + print_error(f"{vendor}.json: update-index would rebuild {', '.join(stale)}") + errors += 1 + gaps["stale_index"] += 1 + return errors, gaps + + +# --------------------------------------------------------------------------- +# check +# --------------------------------------------------------------------------- + +def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSHOT_PATH, + materials=False, obsolete_keys=False): + """Validate the whole profile tree. Returns the error count. + + The per-vendor checks honour `vendors`; the setting_id and filament_id checks are + cross-vendor properties a narrowed run cannot answer, so they always cover the + whole tree. With no `vendors`, OrcaFilamentLibrary is left out of the per-vendor + pass: it is the shared base bundle, its filaments are generic by design, and they + are checked through the vendors that inherit them. Naming it explicitly checks it. + The normalization pass covers it either way - see the comment on that loop. + """ + print_info("Checking profiles ...") + errors_found = 0 + warnings_found = 0 + remedies = Counter() + + if vendors: + checked = list(vendors) + else: + checked = [v for v in list_profile_dirs(profiles_dir) if v != OFL] + + for vendor in checked: + errors_found += check_preset_name_uniqueness(profiles_dir, vendor) + errors_found += check_filament_compatible_printers(profiles_dir, vendor) + + if materials: + new_errors, new_warnings = check_machine_default_materials(profiles_dir, vendor) + errors_found += new_errors + warnings_found += new_warnings + + if obsolete_keys: + warnings_found += check_obsolete_keys(profiles_dir, vendor) + + new_errors, new_warnings = check_name_consistency(profiles_dir, vendor) + errors_found += new_errors + warnings_found += new_warnings + + new_errors, new_warnings = check_conflict_keys(profiles_dir, vendor) + errors_found += new_errors + warnings_found += new_warnings + + errors_found += check_vector_type_keys(profiles_dir, vendor) + errors_found += check_filament_id_length(profiles_dir, vendor) + + new_errors, gaps = check_index_coverage(profiles_dir, vendor) + errors_found += new_errors + remedies.update(gaps) + + # normalize and update-index know nothing of the OrcaFilamentLibrary exemption + # above - that bundle sits out the per-vendor pass because its filaments are + # generic by design, which says nothing about the shape of its files - so this pass + # takes its own vendor list. Unscoped that is the bundles with an index, exactly + # what those two commands take; a --vendor is passed through as given, so a bundle + # whose index has not landed yet still has its files held to what normalize writes. + for vendor in (vendors or list_vendor_names(profiles_dir)): + new_errors, gaps = check_normalized(profiles_dir, vendor) + errors_found += new_errors + remedies.update(gaps) + + for category, hint in REMEDY_HINTS.items(): + if remedies[category]: + print_warning(f"{remedies[category]} {hint}") + + # Cross-vendor checks: setting_id uniqueness and the whole filament_id state, + # both validated over the entire tree regardless of --vendor. + errors_found += check_setting_id_uniqueness(profiles_dir) + errors_found += check_filament_ids(profiles_dir, snapshot_path) + + print("\n==================== SUMMARY ====================") + print_info(f"Checked vendors : {len(checked)}") + if errors_found > 0: + print_error(f"Files with errors : {errors_found}") + else: + print_success("Files with errors : 0") + if warnings_found > 0: + print_warning(f"Files with warnings : {warnings_found}") + else: + print_success("Files with warnings : 0") + print("=================================================") + if errors_found > 0 or warnings_found > 0: + print_warning(f"Issue(s) found, {NORMALIZE_HINT}") + return errors_found + + +# --------------------------------------------------------------------------- +# update-snapshot +# --------------------------------------------------------------------------- + +def update_snapshot(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, dry_run=False): + """Regenerate the snapshot from the tree. + + Refuses to sanction a tree it could not read whole, and an id declared under + more than one triple: neither state can be recorded truthfully, so writing it + would only hide the mistake until CI. It does not judge the ids themselves — + the snapshot records state and check judges it, so an id that is not a mint + lands in the diff and fails check 1. + Idempotent: a second run over an unchanged tree changes nothing. Returns 0 + on success. + """ + analysis = analyze_tree(profiles_dir) + # A tree that could not be read whole cannot be sanctioned: the snapshot + # would silently drop the unreadable bundle's ids and claims, and the diff + # would read as a deliberate removal. + refusals = len(analysis["read_errors"]) + for msg in analysis["read_errors"]: + print_error(msg) + + for fid, ts in sorted(analysis["triples"].items()): + if len(ts) > 1: + print_error( + f'refusing to sanction filament_id "{fid}": declared under {len(ts)} ' + f'triples ({"; ".join("/".join(t) for t in ts)}); one id names one ' + f"product (check 3)") + refusals += 1 + if refusals: + return 1 + + new_snap = snapshot_from_analysis(analysis) + old_snap = load_snapshot(snapshot_path) + old_ids = old_snap["ids"] if old_snap else {} + + # Diff summary. + added_ids = sorted(set(new_snap["ids"]) - set(old_ids)) + removed_ids = sorted(set(old_ids) - set(new_snap["ids"])) + added_claims = sum( + len(set(entry["filaments"]) - set(old_ids.get(fid, {}).get("filaments", []))) + for fid, entry in new_snap["ids"].items()) + removed_claims = sum( + len(set(entry["filaments"]) - set(new_snap["ids"].get(fid, {}).get("filaments", []))) + for fid, entry in old_ids.items()) + changed = new_snap != (old_snap or {"ids": {}}) + + if changed and not dry_run: + write_snapshot(snapshot_path, new_snap) + + print_info(f"snapshot ids : {len(new_snap['ids'])} (+{len(added_ids)} / -{len(removed_ids)})") + print_info(f"claims added : {added_claims}") + print_info(f"claims removed : {removed_claims}") + if changed and dry_run: + print_success(f"dry run: {snapshot_path} would be rewritten; nothing written") + elif changed: + print_success(f"snapshot written to {snapshot_path}") + else: + print_success("snapshot already up to date; nothing changed") + return 0 + + +# --------------------------------------------------------------------------- +# Byte-preserving profile edits +# --------------------------------------------------------------------------- +# Binary IO throughout: a profile keeps its original line endings (LF or CRLF), +# its BOM and its exact formatting apart from the one line being touched. + +def insert_key_line(text, key, value, before=(), after=()): + """Insert a `"key": value` line into a preset that lacks one. + + Placed just before the first `before` anchor the file has (matching the + canonical key order), else just after the first `after` anchor, reusing that + anchor line's indentation and line ending. Returns (text, insertions made). + """ + def line(m): + return (f'{m.group(1)}"{key}": {json.dumps(value, ensure_ascii=False)},' + f'{m.group(2)}') + + for anchors, at_start in ((before, True), (after, False)): + for anchor in anchors: + m = re.search(r'^([ \t]*)"' + re.escape(anchor) + r'"[ \t]*:.*?(\r?\n)', + text, re.MULTILINE) + if m: + cut = m.start() if at_start else m.end() + return text[:cut] + line(m) + text[cut:], 1 + return text, 0 + + +def replace_key_value(text, key, new_value, old_value=None): + """Swap the JSON string VALUE on the `"key"` line, byte-preserving the rest. + + When old_value is given the line must carry exactly that value, so a stale + rewrite fails loudly instead of clobbering an unexpected id. + Returns (text, replacements made). + """ + value = (re.escape(json.dumps(old_value, ensure_ascii=False)) + if old_value is not None else _JSON_STR) + pattern = re.compile( + r'(^[ \t]*"' + re.escape(key) + r'"[ \t]*:[ \t]*)' + value, re.MULTILINE) + return pattern.subn( + lambda m: m.group(1) + json.dumps(new_value, ensure_ascii=False), text, count=1) + + +def delete_key_line(text, key, old_value=None): + """Delete the `"key"` line, byte-preserving the rest. + + Handles both the canonical layout (trailing comma) and a last-property + layout (comma on the preceding line, consumed so no dangling comma is left). + Returns (text, deletions made). + """ + value = (re.escape(json.dumps(old_value, ensure_ascii=False)) + if old_value is not None else _JSON_STR) + member = r'"' + re.escape(key) + r'"[ \t]*:[ \t]*' + value + m = re.search(r'^[ \t]*' + member + r'[ \t]*,[ \t]*\r?\n', text, re.MULTILINE) + if m: + return text[:m.start()] + text[m.end():], 1 + m = re.search(r',[ \t]*\r?\n[ \t]*' + member + r'[ \t]*(?=\r?\n)', text) + if m: + return text[:m.start()] + text[m.end():], 1 + return text, 0 + + +def insert_filament_id(text, new_id): + """Insert a `"filament_id"` line before `instantiation`, else after `name`.""" + return insert_key_line(text, "filament_id", new_id, + before=("instantiation",), after=("name",)) + + +def replace_filament_id_value(text, old_id, new_id): + """Swap the value on the `"filament_id"` line; it must carry old_id.""" + return replace_key_value(text, "filament_id", new_id, old_value=old_id) + + +def insert_setting_id(text, new_id): + """Insert a `"setting_id"` line before `filament_id`, else `instantiation`. + + Falls back to `name` — the one key every preset has — so the anchor does not + depend on whether filament_id has been written yet: a dry run, which does not + write it, must reach the same verdict as the real run that does. + """ + return insert_key_line(text, "setting_id", new_id, + before=("filament_id", "instantiation"), after=("name",)) + + +def _edit_profile(path, edit, dry_run=False, what="edit"): + """Apply `edit(text) -> (text, n)` to the profile at path, byte-preserving. + + The result is re-parsed and returned so the caller can verify the outcome — + in a dry run too, where only the write itself is skipped. Raises when the + edit found no anchor or produced invalid JSON. + """ + with open(path, "rb") as f: + raw = f.read() + bom = raw.startswith(b"\xef\xbb\xbf") + text = raw.decode("utf-8-sig") + text, n = edit(text) + if n == 0: + raise RuntimeError(f"could not apply {what} to {path}") + try: + data = json.loads(text) # fail loudly if the edit broke the JSON + except ValueError as e: + raise RuntimeError(f"{what} broke the JSON in {path}: {e}") from None + if not dry_run: + with open(path, "wb") as f: + f.write((b"\xef\xbb\xbf" if bom else b"") + text.encode("utf-8")) + return data + + +def write_filament_id(path, new_id, dry_run=False): + """Insert new_id into the profile at path, byte-preserving everything else.""" + _edit_profile(path, lambda text: insert_filament_id(text, new_id), + dry_run, "filament_id insert") + + +def rewrite_filament_id(path, old_id, new_id, dry_run=False): + """Replace the filament_id value old_id -> new_id; re-parses to verify.""" + data = _edit_profile(path, lambda text: replace_filament_id_value(text, old_id, new_id), + dry_run, "filament_id rewrite") + if data.get("filament_id") != new_id: + raise RuntimeError(f'rewrite of filament_id "{old_id}" -> "{new_id}" in {path} ' + f"did not take effect") + + +# --------------------------------------------------------------------------- +# generate-id +# --------------------------------------------------------------------------- + +def _incomplete_triple(triple): + """The name(s) of the empty mint-key fields, or "" when both are present.""" + return " and ".join(k for k, v in (("filament_vendor", triple[0]), + ("filament_type", triple[1])) if not v) + + +def generate_filament_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, + changed_paths=None): + """Make every filament carry the id its own triple mints. + + One rule, applied to declarations and to id-less filaments alike: + * a declared id that is not the one its own triple mints — a wrong OF id, + or a foreign one such as a Bambu catalog id arriving with an upstream + sync — is replaced in place; + * an instantiated filament that resolves no id at all gets one inserted + into its root(s): the id-less presets of the SAME filament its members + inherit, or the member itself (a parent of another filament cannot carry + this filament's id — check 3). + A declaration is left alone exactly when it already equals the one id its + triple mints (check 3). Two products minting one id (check 3d) are reported + and left unwritten: nothing salts past a collision, a rename resolves it. + + `vendors` restricts what is WRITTEN; the id is a function of the triple + alone, so a narrowed run writes exactly what a full one would, and --check + reports whatever it was not allowed to touch. `changed_paths`, when a set is + passed, collects the files that changed. A file whose layout offers no + anchor for the edit is reported and counted as an error, so one odd profile + cannot abort the pass over all the others. Never reads or touches the + snapshot — run --update-snapshot afterwards and review the diff. Returns + (files_changed, errors). + """ + _utf8_console() + analysis = analyze_tree(profiles_dir) + errors = 0 + for msg in analysis["read_errors"]: + print_error(msg) + errors += 1 + wanted = None + if vendors is not None: + wanted = set(vendors) + # A vendor directory without a bundle index simply has no filaments to + # process; only a name that is no directory at all is an error. + unknown = sorted(wanted - set(list_profile_dirs(profiles_dir))) + if unknown: + for v in unknown: + print_error(f'unknown vendor "{v}" in {profiles_dir}') + return 0, errors + len(unknown) + + colliding = set() # triples no run may write an id for + for fid, ts in sorted(analysis["collisions"].items()): + print_error( + f'cannot write filament_id "{fid}": it is the mint of {len(ts)} different ' + f'products ({"; ".join("/".join(t) for t in ts)}), a base62 collision; ' + f"rename one of them so their triples differ") + errors += 1 + colliding.update(ts) + + verb = "would " if dry_run else "" + files_changed = 0 + reminted = 0 + inserted = 0 + + # 1. Declarations that are not the mint of their own triple. + for vendor, rec, fid, triple in sorted( + analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): + want = generate_filament_id(*triple) + if (fid == want or (wanted is not None and vendor not in wanted) + or triple in colliding): + continue + missing = _incomplete_triple(triple) + if missing: + print_error( + f'cannot re-mint "{rec["file"]}" (filament_id "{fid}"): resolves empty ' + f'{missing}; the mint key needs both (generic materials use ' + f'filament_vendor "Generic")') + errors += 1 + continue + try: + rewrite_filament_id(rec["path"], fid, want, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + reminted += 1 + if changed_paths is not None: + # Index sub_paths are "/"-joined even on Windows, where the + # setting_id pass reaches the same file through os.walk: normalize + # or one file touched by both passes counts as two. + changed_paths.add(os.path.normpath(rec["path"])) + print_info(f'{verb}rewrite {rec["file"]}: "{fid}" -> "{want}" ' + f'(triple "{"/".join(triple)}")') + + # 2. Instantiated filaments that resolve no id at all, grouped by filament. + filaments = {} # (vendor, filament name) -> [rec] + for vendor, name, _file in analysis["missing_effective"]: + if wanted is not None and vendor not in wanted: + continue + rec = analysis["vendors"][vendor][name] + if rec["id_source"] in ("cycle", "dangling"): + print_error(f'cannot mint for "{vendor}/{name}": broken inherits chain ' + f'({rec["id_source"]})') + errors += 1 + continue + filaments.setdefault((vendor, base_name(name)), []).append(rec) + + ofl_map = analysis["vendors"].get(OFL, {}) + for (vendor, filament_name), members in sorted(filaments.items()): + vendor_map = analysis["vendors"][vendor] + # Root preset(s): the direct vendor-side parents of the members (id-less + # by construction) that belong to the same filament, or the member itself. + roots = {} + for rec in members: + parent = rec.get("inherits") + root = vendor_map.get(parent) if parent else None + if (root is None or root.get("filament_id") + or base_name(root["name"]) != filament_name): + root = rec # root-less member carries the id itself + roots[root["name"]] = root + fields = {(resolve_filament_field(n, "filament_vendor", vendor_map, ofl_map), + resolve_filament_field(n, "filament_type", vendor_map, ofl_map)) + for n in roots} + if len(fields) > 1: + print_error( + f'cannot mint for filament "{vendor}/{filament_name}": its roots resolve ' + f"divergent (filament_vendor, filament_type) pairs {sorted(fields)}; " + f"align the fields first") + errors += 1 + continue + triple = (*next(iter(fields)), filament_name) + if triple in colliding: + continue # reported above + missing = _incomplete_triple(triple) + if missing: + print_error( + f'cannot mint for filament "{vendor}/{filament_name}": it resolves empty ' + f'{missing}; the mint key needs both (generic materials use ' + f'filament_vendor "Generic")') + errors += 1 + continue + new_id = generate_filament_id(*triple) + for name in sorted(roots): + root = roots[name] + try: + write_filament_id(root["path"], new_id, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + inserted += 1 + if changed_paths is not None: + changed_paths.add(os.path.normpath(root["path"])) + print_info(f'{verb}insert filament "{vendor}/{filament_name}": filament_id ' + f'"{new_id}" -> {root["file"]}') + + print_info(f"filament_ids inserted : {inserted}") + print_info(f"filament_ids re-minted : {reminted}") + return files_changed, errors + + +def generate_setting_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False, + changed_paths=None): + """Make every preset carry the setting_id its identity mints. + + One walk over filament/, process/ and machine/ of every vendor bundle, and + one composite edit per file: drop the misspelled "settings_id" key (the app + never reads it), strip setting_id from base profiles (only instantiated + presets carry one), and set generate_preset_setting_id(vendor, type, name) on + instantiated presets — except BBL's, which keep their authoritative "G*" + cloud ids. `changed_paths`, when a set is passed, collects the files that + changed. Returns (files_changed, errors). + """ + _utf8_console() + profiles_dir = str(profiles_dir) + errors = 0 + names = list_profile_dirs(profiles_dir) + if vendors is not None: + wanted = set(vendors) + unknown = sorted(wanted - set(names)) + if unknown: + for v in unknown: + print_error(f'unknown vendor "{v}" in {profiles_dir}') + return 0, len(unknown) + names = [v for v in names if v in wanted] + for v in sorted(wanted & RESERVED_VENDORS): + print_info(f'{v} keeps its authoritative "G*" setting_ids; only its base ' + f"declarations are stripped") + + verb = "would " if dry_run else "" + files_changed = 0 + counts = {"typos": 0, "stripped": 0, "assigned": 0} + for vendor in names: + for path, type_name in iter_profile_files(os.path.join(profiles_dir, vendor)): + try: + with open(path, "rb") as f: + data = json.loads(f.read().decode("utf-8-sig")) + if not isinstance(data, dict): + raise ValueError("top level is not a JSON object") + except (OSError, ValueError) as e: + print_error(f"unreadable profile {path}: {e}") + errors += 1 + continue + + sid = data.get("setting_id") + # Strictly "true", exactly as check_setting_id_uniqueness tests it: + # a preset the validator calls a base profile must not be given an id + # here, or the two would fight over it forever. + instantiated = data.get("instantiation") == "true" + edits = [] # (counter key, description, edit function) + if "settings_id" in data: + edits.append(("typos", 'drop the misspelled "settings_id"', + lambda text: delete_key_line(text, "settings_id"))) + typo = data["settings_id"] + if (vendor in RESERVED_VENDORS and instantiated and sid is None + and isinstance(typo, str) and typo): + # A reserved vendor's ids are authoritative, so there is no + # formula to fall back on: correct the key and keep the + # value, or the drop would leave an instantiated preset with + # no setting_id and nothing able to give it one. + edits.append(("assigned", 'restore its value as "setting_id"', + lambda text, new=typo: insert_setting_id(text, new))) + if not instantiated: + if sid is not None: + edits.append(("stripped", "strip the base profile's setting_id", + lambda text, old=sid: delete_key_line( + text, "setting_id", old))) + elif vendor not in RESERVED_VENDORS: + name = data.get("name") + if not name: + # Report and carry on: an edit already queued for this file + # (a misspelled key) is still worth applying. + print_error(f'instantiated preset has no "name": {path}') + errors += 1 + else: + new_id = generate_preset_setting_id(vendor, type_name, name) + if sid is None: + edits.append(("assigned", "insert the setting_id", + lambda text, new=new_id: insert_setting_id(text, new))) + elif sid != new_id: + edits.append(("assigned", "replace the setting_id", + lambda text, new=new_id, old=sid: replace_key_value( + text, "setting_id", new, old))) + if not edits: + continue + + def apply(text, _edits=edits, _path=path): + for _key, what, edit in _edits: + text, n = edit(text) + if n == 0: + raise RuntimeError(f"could not {what} in {_path}") + return text, len(_edits) + + try: + _edit_profile(path, apply, dry_run) + except (OSError, RuntimeError, ValueError) as e: + print_error(str(e)) + errors += 1 + continue + files_changed += 1 + if changed_paths is not None: + changed_paths.add(os.path.normpath(path)) + for key, _what, _edit in edits: + counts[key] += 1 + rel = os.path.relpath(path, profiles_dir).replace(os.sep, "/") + print_info(f"{verb}update {rel}: " + f"{', '.join(what for _key, what, _edit in edits)}") + + print_info(f'misspelled "settings_id" dropped : {counts["typos"]}') + print_info(f'base setting_ids stripped : {counts["stripped"]}') + print_info(f'setting_ids assigned : {counts["assigned"]}') + return files_changed, errors + + +def run_generate_id(profiles_dir, vendors, filament_id, setting_id, dry_run): + """The generate-id command: write the ids the tree's identities imply. + + Returns the process exit code. + """ + # Both by default. filament_id runs first so its keys are in place before the + # setting_id pass reads the files back. + do_filament = filament_id or not setting_id + do_setting = setting_id or not filament_id + changed = set() # one file the two passes both touch is still one file + filament_files = errors = 0 + if do_filament: + filament_files, e = generate_filament_ids(profiles_dir, vendors, dry_run, changed) + errors += e + if do_setting: + _n, e = generate_setting_ids(profiles_dir, vendors, dry_run, changed) + errors += e + + summary = (f"dry run: {len(changed)} file(s) would change; nothing written" + if dry_run else f"{len(changed)} file(s) changed") + if errors: + print_error(f"{summary}; {errors} error(s)") + else: + print_success(summary) + if filament_files and not dry_run: + # A filament_id write may or may not move the sanctioned state (an id repaired + # back to the value the snapshot already records does not), so regenerate and + # let the diff - empty or not - say. + print_warning(f"now {UPDATE_HINT}") + return 1 if errors else 0 + + + +# --------------------------------------------------------------------------- +# Whole-file profile writes (normalize / update-index) +# --------------------------------------------------------------------------- +# Unlike the byte-preserving id edits above, these reserialise a whole file: they +# reorder keys and normalize formatting by design. + +def _rel(path, profiles_dir): + """Tree-relative, forward-slashed path - what every message below prints.""" + return os.path.relpath(path, profiles_dir).replace(os.sep, "/") + + +def _walk_json(directory): + """Every .json file under a directory, in a deterministic order.""" + for root, dirs, files in os.walk(directory): + dirs.sort() + for name in sorted(files): + if name.lower().endswith(".json"): + yield os.path.join(root, name) + + +def _profile_subdir(profile_type): + """The directory a profile type lives in: Orca keeps machine models in machine/.""" + return "machine" if profile_type == "machine_model" else profile_type + + +def write_profile_json(path, data): + """Reserialise a profile file: tab-indented, LF endings, trailing newline. + + newline="\\n" is not cosmetic: without it Python translates to os.linesep, so a + normalize run on Windows would rewrite every file it touches with CRLF endings. + """ + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(data, f, indent="\t", ensure_ascii=False) + f.write("\n") + + +def create_ordered_profile(profile, priority_fields): + """`profile` with priority_fields hoisted to the front, in that order.""" + ordered = {k: profile[k] for k in priority_fields if k in profile} + ordered.update((k, v) for k, v in profile.items() if k not in priority_fields) + return ordered + + +# --------------------------------------------------------------------------- +# normalize +# --------------------------------------------------------------------------- + +# The keys that identify a preset, hoisted to the top of every rewritten file. +NORMALIZE_FIELD_ORDER = ("type", "name", "renamed_from", "inherits", "from", + "setting_id", "filament_id", "instantiation") +# Settings a filament profile must not pin: they belong to the process. +FILAMENT_DROP_FIELDS = ("initial_layer_print_speed", "outer_wall_speed", + "inner_wall_speed", "infill_speed", "top_surface_speed", + "travel_speed") +# Filament options the config system stores as vectors, written as scalars by hand. +FILAMENT_ARRAY_FIELDS = ("filament_cost", "filament_density", "filament_type", + "temperature_vitrification", "filament_max_volumetric_speed", + "filament_vendor") + + +def _normalize_profile(data, sub): + """Normalize one loaded profile in place. Returns what it changed, one line each. + + It reports rather than prints because check asks this function the same question + normalize does - would this file be rewritten? - and has to render the answer as + errors rather than as the running commentary of a write. + """ + changes = [] + + if not data.get("type"): + if sub == "machine": + # The machine folder holds both machine models and the nozzle variants + # that are machines; the name is what tells them apart. + name = data.get("name") or "" + data["type"] = "machine" if "nozzle" in name.lower() else "machine_model" + else: + data["type"] = sub + changes.append(f'add type "{data["type"]}"') + + for field in ("version", "is_custom_defined"): + if data.get(field): + del data[field] + changes.append(f"remove {field}") + + # BBS renamed extruder_clearance_radius to extruder_clearance_max_radius, but some + # profiles carry both with different values, and the slicer cannot tell which one + # to obey - a toolhead collision waiting to happen. Keep the larger one only. + if "extruder_clearance_radius" in data and "extruder_clearance_max_radius" in data: + drop = ("extruder_clearance_radius" + if float(data["extruder_clearance_max_radius"]) + > float(data["extruder_clearance_radius"]) + else "extruder_clearance_max_radius") + del data[drop] + changes.append(f"drop conflicting {drop}") + + if sub == "filament": + for field in FILAMENT_ARRAY_FIELDS: + if field in data and not isinstance(data[field], list): + data[field] = [data[field]] + changes.append(f"convert {field} to an array") + for field in FILAMENT_DROP_FIELDS: + if field in data: + del data[field] + changes.append(f"remove {field}") + + return changes + + +def normalize_profiles(profiles_dir=PROFILES_DIR, vendors=None, profile_types=None, + force=False, dry_run=False): + """Normalize profile files in place. Returns (files changed, errors). + + Adds a missing "type", drops keys the slicer no longer reads, resolves the + extruder_clearance_* conflict, arrayifies the filament options that are vectors, + and rewrites the file with its identifying keys first. + """ + vendors = vendors or list_vendor_names(profiles_dir) + # Both machine_model and machine live in machine/, so the same directory is never + # walked twice; what a file becomes is decided per file, from its name. + subs = list(dict.fromkeys(_profile_subdir(t) for t in (profile_types or PROFILE_TYPES))) + changed_files = errors = 0 + for vendor in vendors: + for sub in subs: + for path in _walk_json(os.path.join(profiles_dir, vendor, sub)): + if os.path.basename(path) in NON_PROFILE_FILES: + continue + rel = _rel(path, profiles_dir) + try: + data = load_json(path) + except (ValueError, OSError) as e: + print_error(f"{rel}: {e}") + errors += 1 + continue + if not isinstance(data, dict): + continue + changes = _normalize_profile(data, sub) + for change in changes: + print_info(f"{rel}: {change}") + if not changes and not force: + continue + changed_files += 1 + if dry_run: + print_info(f"{rel}: would be rewritten") + continue + try: + write_profile_json( + path, create_ordered_profile(data, NORMALIZE_FIELD_ORDER)) + except OSError as e: + print_error(f"{rel}: {e}") + errors += 1 + continue + print_info(f"{rel}: rewritten") + + verb = "would be normalized" if dry_run else "normalized" + print_success(f"{changed_files} profile(s) {verb}") + return changed_files, errors + + +# --------------------------------------------------------------------------- +# trim +# --------------------------------------------------------------------------- + +def trim_profiles(profiles_dir=PROFILES_DIR, vendors=None, profile_types=None, + dry_run=False): + """Delete profile files that a vendor's .json does not index. + + The loader only ever reads the sub_paths listed in .json, so a profile + file missing from every *_list never loads. Only recognisable presets are + considered: assets (cover images, bed models, bed textures) are referenced from + inside machine profiles rather than from the index, and data files such as + cli_config.json carry no "type" - all of them stay. A file that cannot be parsed + is reported and kept: never delete what could not be read. + + An unindexed file that some surviving profile names in "inherits" is kept too, + and reported, UNLESS an indexed profile already carries that name: "inherits" is + resolved by preset name, so the indexed one is the parent every child actually + gets, and the unindexed file is a stale copy the loader never reaches. Where no + indexed profile provides the name the inheriting preset really is broken, and + deleting the file would destroy the only record of the settings it was written + against - a repair job for a maintainer, not for this. + + Returns (files removed, errors). + """ + vendors = vendors or list_vendor_names(profiles_dir) + subs = list(dict.fromkeys(_profile_subdir(t) for t in (profile_types or PROFILE_TYPES))) + + total = errors = 0 + for vendor in vendors: + vendor_dir = os.path.join(profiles_dir, vendor) + try: + library = load_json(os.path.join(profiles_dir, vendor + ".json")) + except (ValueError, OSError) as e: + print_error(f"{vendor}.json: {e}") + errors += 1 + continue + + # A profile may be indexed under any of the lists whichever folder it sits + # in, so the whole index is collected before anything is judged unreferenced. + listed = set() + for section in PROFILE_TYPES: + for entry in library.get(section + "_list", []): + sub_path = entry.get("sub_path") + if sub_path: + # Index entries are hand-written; "filament/./X.json" names the + # same file as "filament/X.json" and must not read as an orphan. + listed.add(posixpath.normpath(sub_path.replace("\\", "/"))) + + candidates = {} # path -> profile, for every unindexed preset + inherited = set() # every name the files that stay claim as a parent + provided = {} # name -> sub_path, for the profiles the loader can see + for sub in subs: + for path in _walk_json(os.path.join(vendor_dir, sub)): + rel = _rel(path, profiles_dir) + sub_path = posixpath.normpath( + os.path.relpath(path, vendor_dir).replace(os.sep, "/")) + try: + profile = load_json(path) + except (ValueError, OSError) as e: + print_warning(f"{rel}: {e}; keeping it") + continue + if not isinstance(profile, dict): + continue + if sub_path in listed or profile.get("type") not in PROFILE_TYPES: + if profile.get("inherits"): + inherited.add(profile["inherits"]) + if sub_path in listed and profile.get("name"): + provided[profile["name"]] = sub_path + continue + candidates[path] = profile + + # An orphan kept for being inherited can itself keep its own parent alive, so + # the survivors are grown to a fixpoint before anything is deleted. A kept + # orphan never enters "provided": it does not load, so it cannot be the parent + # a child resolves to, and its own parent needs rescuing on the same terms. + kept = {} + while True: + rescued = {p: d for p, d in candidates.items() + if d.get("name") in inherited and d.get("name") not in provided} + if not rescued: + break + for path, profile in rescued.items(): + del candidates[path] + kept[path] = profile + if profile.get("inherits"): + inherited.add(profile["inherits"]) + + for path in sorted(kept): + print_warning(f"{_rel(path, profiles_dir)}: not indexed by {vendor}.json but " + f'inherited from; keeping it (neither loads - fix the index)') + + removed = 0 + for path in sorted(candidates): + rel = _rel(path, profiles_dir) + twin = provided.get(candidates[path].get("name")) + why = f", not indexed by {vendor}.json" + if twin: + why += f' ({twin} is the profile named "{candidates[path]["name"]}")' + if dry_run: + print_info(f"{rel}: would be removed{why}") + else: + try: + os.remove(path) + except OSError as e: + print_error(f"{rel}: {e}") + errors += 1 + continue + print_info(f"{rel}: removed{why}") + removed += 1 + if removed: + print_info(f"{vendor}: {removed} unreferenced profile(s)") + total += removed + + verb = "would be removed" if dry_run else "removed" + print_success(f"{total} unreferenced profile(s) {verb}") + return total, errors + + +# --------------------------------------------------------------------------- +# update-index +# --------------------------------------------------------------------------- + +def topological_sort(profiles): + """Order index entries parents-first, so the loader resolves inherits in one pass. + + Entries whose parent is not in the same section keep their own (sorted) order at + the end; the loader finds those parents through the base bundle instead. + """ + graph = defaultdict(list) + in_degree = defaultdict(int) + by_name = {p["name"]: p for p in profiles} + all_names = set(by_name) + + placed = set() + for profile in profiles: + parent = profile.get("inherits") + child = profile["name"] + if parent in all_names: + graph[parent].append(child) + in_degree[child] += 1 + in_degree.setdefault(parent, 0) + placed.add(child) + placed.add(parent) + + queue = sorted(name for name, degree in in_degree.items() if degree == 0) + result = [] + while queue: + current = queue.pop(0) + result.append(by_name[current]) + placed.add(current) + for child in sorted(graph[current]): + in_degree[child] -= 1 + if in_degree[child] == 0: + queue.append(child) + + result.extend(by_name[name] for name in sorted(all_names - placed)) + return result + + +def build_index_sections(profiles_dir, vendor, profile_types=None): + """The *_list sections update-index would write for one bundle, from its own files. + + A profile is indexed under the section its own "type" names, so a file whose type + is missing or unrecognised cannot be placed - run normalize first, which is what + writes the type. + + Returns (sections, problems). `problems` names every file that could not be placed, + one message each, for the caller to report. `sections` is None when two files claim + one preset name: the bundle can only hold one profile under a name, so rebuilding + would pick a winner by directory order and quietly drop the other, and the index has + to be left alone instead. Deleting the stale copy is trim's job, which is why it + runs before this. + """ + vendor_dir = os.path.join(profiles_dir, vendor) + sections = {} + problems = [] + unplaceable = {} + by_name = defaultdict(list) + for profile_type in (profile_types or PROFILE_TYPES): + entries = [] + for path in _walk_json(os.path.join(vendor_dir, _profile_subdir(profile_type))): + if os.path.basename(path) in NON_PROFILE_FILES: + continue + rel = _rel(path, profiles_dir) + try: + profile = load_json(path) + except (ValueError, OSError) as e: + problems.append(f"{rel}: {e}") + continue + if not isinstance(profile, dict): + continue + if profile.get("type") not in PROFILE_TYPES: + unplaceable[rel] = profile.get("type") + continue + if profile.get("type") != profile_type: + continue + name = profile.get("name") + if not name: + problems.append(f"{rel}: no name, cannot be indexed") + continue + entry = { + "name": name, + "sub_path": os.path.relpath(path, vendor_dir).replace(os.sep, "/"), + } + if profile.get("inherits"): + entry["inherits"] = profile["inherits"] + by_name[name].append(entry["sub_path"]) + entries.append(entry) + + sorted_entries = topological_sort(entries) + for entry in sorted_entries: + entry.pop("inherits", None) # ordering input only, not part of the index + sections[profile_type + "_list"] = sorted_entries + + for rel, found in sorted(unplaceable.items()): + problems.append(f'{rel}: type {found!r} is not one of {list(PROFILE_TYPES)}, so it ' + f"cannot be indexed; run " + f'"python scripts/orca_profile_tool.py normalize" first') + + clashes = {name: subs for name, subs in by_name.items() if len(subs) > 1} + for name, subs in sorted(clashes.items()): + problems.append(f'{vendor}.json: {len(subs)} profiles are named "{name}" ' + f'({", ".join(sorted(subs))}); only one can be indexed under ' + f"that name, so delete or rename the others - " + f'"python scripts/orca_profile_tool.py trim" removes an ' + f"unindexed copy") + + return (None if clashes else sections), problems + + +def update_profile_indexes(profiles_dir=PROFILES_DIR, vendors=None, profile_types=None, + dry_run=False): + """Rebuild the *_list sections of each .json from the files on disk. + + Returns (indexes changed, errors). See build_index_sections for what a file has to + carry to be placed, and for when a bundle is left alone instead. + """ + vendors = vendors or list_vendor_names(profiles_dir) + changed = errors = 0 + for vendor in vendors: + lib_path = os.path.join(profiles_dir, vendor + ".json") + try: + library = load_json(lib_path) + except (ValueError, OSError) as e: + print_error(f"{vendor}.json: {e}") + errors += 1 + continue + + sections, problems = build_index_sections(profiles_dir, vendor, profile_types) + for problem in problems: + print_error(problem) + errors += len(problems) + if sections is None: + print_error(f"{vendor}.json: left unchanged, it would have dropped a profile") + continue + + if all(library.get(section) == entries for section, entries in sections.items()): + continue + changed += 1 + if dry_run: + print_info(f"{vendor}.json: {', '.join(sorted(sections))} would be rebuilt") + continue + library.update(sections) + try: + write_profile_json(lib_path, library) + except OSError as e: + print_error(f"{vendor}.json: {e}") + errors += 1 + continue + print_info(f"{vendor}.json: {', '.join(sorted(sections))} rebuilt") + + verb = "would be rebuilt" if dry_run else "rebuilt" + print_success(f"{changed} vendor index(es) {verb}") + return changed, errors + + +# --------------------------------------------------------------------------- +# CLI +# --------------------------------------------------------------------------- + +EXAMPLES = """\ +examples: + orca_profile_tool.py check + validate the whole tree, exactly as CI does + orca_profile_tool.py check --vendor Creality + the per-vendor checks for one bundle; setting_id and filament_id are + cross-vendor properties, so those two always cover the whole tree + orca_profile_tool.py generate-id + give every profile the id its identity mints, in every vendor bundle + orca_profile_tool.py generate-id --dry-run + preview exactly that; writes nothing + orca_profile_tool.py generate-id --setting-id --vendor Elegoo + setting_id only, and only in that bundle + orca_profile_tool.py update-snapshot + re-record the sanctioned filament_id state after a generate-id run + +after adding, renaming or deleting profile files, run in this order: + normalize -> trim -> update-index -> generate-id -> update-snapshot -> check +each step feeds the next: normalize writes the "type" update-index files a +profile by, and trim judges against the index update-index is about to rebuild. +""" + + +def build_parser(): + # Shared options, attached with parents=[...] so every command spells them the + # same way and documents them once. + profiles_opt = argparse.ArgumentParser(add_help=False) + profiles_opt.add_argument("--profiles", default=PROFILES_DIR, metavar="DIR", + help="profiles directory (default: resources/profiles)") + + vendor_opt = argparse.ArgumentParser(add_help=False) + vendor_opt.add_argument("--vendor", metavar="VENDOR", action="append", default=[], + help="act on this vendor bundle only; repeatable. " + "An empty value means every vendor") + + type_opt = argparse.ArgumentParser(add_help=False) + type_opt.add_argument("--profile-type", metavar="TYPE", action="append", default=[], + choices=PROFILE_TYPES, dest="profile_type", + help="act on this profile type only; repeatable. One of: " + + ", ".join(PROFILE_TYPES)) + + dry_run_opt = argparse.ArgumentParser(add_help=False) + dry_run_opt.add_argument("--dry-run", "--dryrun", dest="dry_run", action="store_true", + help="report what would change and write nothing") + + snapshot_opt = argparse.ArgumentParser(add_help=False) + snapshot_opt.add_argument("--snapshot", default=None, metavar="PATH", + help="the sanctioned filament_id state of that tree " + "(default: scripts/filament_id_snapshot.json, which " + "describes resources/profiles and no other tree)") + + parser = argparse.ArgumentParser( + prog="orca_profile_tool.py", allow_abbrev=False, + formatter_class=argparse.RawDescriptionHelpFormatter, + description="Every maintenance job for the OrcaSlicer system profile tree.\n" + "\n" + "The ids it writes are pure functions of the profile's own\n" + "identity, so it never invents one: it writes the id the rules\n" + "already imply, and leaves a conforming tree alone.", + epilog=EXAMPLES) + commands = parser.add_subparsers(dest="command", metavar="") + + def add(name, parents, help_text, description): + return commands.add_parser( + name, parents=parents, help=help_text, description=description, + allow_abbrev=False, formatter_class=argparse.RawDescriptionHelpFormatter) + + check_cmd = add( + "check", [vendor_opt, snapshot_opt, profiles_opt], + "validate the whole profile tree -- what CI runs", + "Validate the whole profile tree: preset name uniqueness, index coverage\n" + "both ways, compatible_printers, conflicting and vector-typed keys,\n" + "filament_id length, that normalize and update-index would leave every\n" + "bundle alone, and the tree-wide setting_id and filament_id state.\n" + "Exits nonzero on errors.\n" + "\n" + "--vendor narrows the per-vendor checks only: setting_id uniqueness and the\n" + "filament_id state are cross-vendor properties a narrowed run cannot answer,\n" + "so they always cover the whole tree.") + check_cmd.add_argument("--materials", action="store_true", + help="also check that every default material a machine names " + "exists") + check_cmd.add_argument("--obsolete-keys", action="store_true", dest="obsolete_keys", + help="also warn about settings the slicer no longer defines") + + generate_cmd = add( + "generate-id", [vendor_opt, dry_run_opt, profiles_opt], + "write the id each profile's identity implies", + "Write the id every profile should carry: filament_id from each filament's\n" + "(filament_vendor, filament_type, name) triple, setting_id from each preset's\n" + "(vendor, type, name). Idempotent and byte-preserving.\n" + "\n" + "The id is a function of the triple alone, so a narrowed run writes exactly\n" + "what a full one would; check reports whatever it left outside.") + which = generate_cmd.add_mutually_exclusive_group() + which.add_argument("--filament-id", action="store_true", dest="filament_id", + help="write filament_id only, skipping setting_id") + which.add_argument("--setting-id", action="store_true", dest="setting_id", + help="write setting_id only, skipping filament_id") + + normalize_cmd = add( + "normalize", [vendor_opt, type_opt, dry_run_opt, profiles_opt], + "rewrite profile files into their canonical shape", + "Add a missing \"type\", drop keys the slicer no longer reads, resolve the\n" + "extruder_clearance_* conflict, arrayify the filament options that are\n" + "vectors, and rewrite each file with its identifying keys first.\n" + "\n" + "Rewrites whole files, so it normalizes their formatting and key order too.") + normalize_cmd.add_argument("--force", action="store_true", + help="rewrite every profile, not only the ones that changed") + + add("trim", [vendor_opt, type_opt, dry_run_opt, profiles_opt], + "delete profile files no .json list references", + "Delete profile files that a vendor's .json does not index. The\n" + "loader only ever reads the sub_paths listed there, so an unindexed preset\n" + "never loads.\n" + "\n" + "Assets and data files are kept, a file that cannot be parsed is kept and\n" + "reported, and so is one a surviving profile inherits from that no indexed\n" + "profile provides -- but a stale copy of an indexed profile goes, since\n" + "inherits resolves by name and the indexed one is what children get.") + + add("update-index", [vendor_opt, type_opt, dry_run_opt, profiles_opt], + "regenerate the *_list sections of .json", + "Rebuild the *_list sections of each .json from the files on disk,\n" + "ordered parents-first so the loader resolves inherits in one pass.\n" + "\n" + "A profile is indexed under the section its own \"type\" names, so run\n" + "normalize first: it is what writes a missing type. Two files claiming one\n" + "preset name leave that index alone, because a rebuild could only keep one\n" + "of them; run trim first, which is what clears a stale copy.") + + add("update-snapshot", [dry_run_opt, snapshot_opt, profiles_opt], + "re-record scripts/filament_id_snapshot.json", + "Re-record the sanctioned filament_id state after a generate-id run, and\n" + "commit the diff for maintainer review.") + + return parser + + +def main(argv=None): + _utf8_console() + argv = sys.argv[1:] if argv is None else list(argv) + parser = build_parser() + args = parser.parse_args(argv) + if args.command is None: + parser.print_help() + return 0 + + profiles_dir = args.profiles + # check_profile.sh passes --vendor "${VENDOR}" unconditionally (bash 3.2 cannot + # expand an empty array under set -u), and an empty value has always meant + # "every vendor" -- so drop empties rather than looking up a vendor named "". + vendors = sorted({v for v in getattr(args, "vendor", []) if v}) or None + if vendors: + unknown = sorted(set(vendors) - set(list_profile_dirs(profiles_dir))) + if unknown: + for vendor in unknown: + print_error(f'unknown vendor "{vendor}" in {profiles_dir}') + return 1 + profile_types = tuple(getattr(args, "profile_type", []) or ()) or None + + snapshot_path = getattr(args, "snapshot", None) + if snapshot_path is None: + if (args.command in ("check", "update-snapshot") + and os.path.abspath(profiles_dir) != os.path.abspath(PROFILES_DIR)): + # The repo snapshot is the sanctioned state of resources/profiles alone: + # checking another tree against it is meaningless, and re-recording one + # into it would overwrite the tracked file with a foreign tree's state. + parser.error(f"{args.command} reads and writes the sanctioned state of the " + f"tree it is given, so --profiles needs --snapshot PATH for " + f"that tree too") + snapshot_path = SNAPSHOT_PATH + + if args.command == "check": + errors = check_profiles(profiles_dir, vendors, snapshot_path, + materials=args.materials, obsolete_keys=args.obsolete_keys) + return 1 if errors else 0 + + if args.command == "generate-id": + return run_generate_id(profiles_dir, vendors, args.filament_id, args.setting_id, + args.dry_run) + + if args.command == "update-snapshot": + return update_snapshot(profiles_dir, snapshot_path, dry_run=args.dry_run) + + if args.command == "normalize": + _changed, errors = normalize_profiles(profiles_dir, vendors, profile_types, + force=args.force, dry_run=args.dry_run) + elif args.command == "trim": + _removed, errors = trim_profiles(profiles_dir, vendors, profile_types, + dry_run=args.dry_run) + else: # update-index + _changed, errors = update_profile_indexes(profiles_dir, vendors, profile_types, + dry_run=args.dry_run) + return 1 if errors else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/tests/test_filament_id.py b/scripts/tests/test_filament_id.py index 3e7a6d2aec..80afd78a6b 100644 --- a/scripts/tests/test_filament_id.py +++ b/scripts/tests/test_filament_id.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Tests for scripts/orca_id_tool.py (stdlib unittest, no external deps). +"""Tests for scripts/orca_profile_tool.py (stdlib unittest, no external deps). Run from the repo root: python -m unittest discover -s scripts/tests -v """ @@ -17,7 +17,7 @@ import uuid sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -import orca_id_tool as afi # noqa: E402 +import orca_profile_tool as afi # noqa: E402 import update_bambu_filament_ids as ubfi # noqa: E402 REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) @@ -164,12 +164,14 @@ class SyntheticTree: changed, errors = afi.generate_filament_ids(self.profiles, vendors, dry_run) return changed, errors, buf.getvalue() - def cli(self, *flags): + def cli(self, *argv): """Run main() against this tree, capturing stdout.""" + flags = [*argv, "--profiles", self.profiles] + if argv and argv[0] in ("check", "update-snapshot"): + flags += ["--snapshot", self.snapshot] buf = io.StringIO() with contextlib.redirect_stdout(buf): - rc = afi.main([*flags, "--profiles", self.profiles, - "--snapshot", self.snapshot]) + rc = afi.main(flags) return rc, buf.getvalue() @@ -426,26 +428,6 @@ class TestTripleResolution(unittest.TestCase): ("MyVendor", "PLA", "MyPLA")) -# --------------------------------------------------------------------------- -# reserved namespaces -# --------------------------------------------------------------------------- - -class TestReservedSpaces(unittest.TestCase): - def test_owners(self): - # Bambu AMS/RFID catalog: reserved, but no vendor (not even BBL) may declare it - self.assertEqual(afi.reserved_space_owner("GFL99"), (True, None)) - # Qidi device protocol: reserved, but no vendor may declare it - self.assertEqual(afi.reserved_space_owner("QD_X4_PLA"), (True, None)) - self.assertEqual(afi.reserved_space_owner("P1234abc"), (True, None)) - self.assertEqual(afi.reserved_space_owner("pAbCdEf1"), (True, None)) # case-insensitive - self.assertEqual(afi.reserved_space_owner("null"), (True, None)) - self.assertEqual(afi.reserved_space_owner("OF5CgdDq"), (False, None)) - self.assertEqual(afi.reserved_space_owner("P1234abcd"), (False, None)) # 8 hex chars: not the user space - - def test_gf_is_reserved_and_ownerless(self): - self.assertEqual(afi.reserved_space_owner("GFA00"), (True, None)) - - # --------------------------------------------------------------------------- # checks on synthetic trees # --------------------------------------------------------------------------- @@ -474,7 +456,7 @@ class TestChecks(OfCleanTreeCase): errors, out = self.t.check() self.assertGreater(errors, 0) self.assertIn('claim "VendorA/ANEW" is not sanctioned', out) - self.assertIn("--update-snapshot", out) + self.assertIn("update-snapshot", out) def test_check2_vanished_claim_is_stability_error(self): self.t.remove_preset("VendorA", "APLA @P1") @@ -669,11 +651,12 @@ class TestChecks(OfCleanTreeCase): self.assertGreater(errors, 0) self.assertIn("does not match the mint of its triple", out) - def test_check4_reserved_namespace_claims(self): - for fid, marker in [("GFX99", "Bambu AMS/RFID catalog"), - ("QD_X_PLA", "composed by the device"), - ("P1a2b3c4", "user-custom"), - ("null", "user-custom")]: + def test_check1_an_id_another_system_composed_is_not_a_mint(self): + # Nothing is reserved because nothing is exempt: an id some other system + # composes for its own purposes - Bambu's catalog, a Qidi box, the dialog + # that creates a user filament - is simply not the mint of a triple, and + # check 1 rejects it for that and nothing else. + for fid in ("GFX99", "QD_X_PLA", "P1a2b3c4", "null"): with self.subTest(fid=fid): name = f"R{fid} @base" self.t.write_preset("VendorA", preset(name, filament_id=fid, @@ -684,8 +667,8 @@ class TestChecks(OfCleanTreeCase): compatible_printers=["P1"])) errors, out = self.t.check() self.assertGreater(errors, 0) - self.assertIn("reserved id space", out) - self.assertIn(marker, out) + self.assertIn(f'filament_id "{fid}"', out) + self.assertIn('is not a minted "OF" id', out) def test_check3c_unresolvable_instantiated_filament(self): self.t.write_preset("VendorA", preset("DNEW @P1", compatible_printers=["P1"])) @@ -713,7 +696,7 @@ class TestCheck5(OfCleanTreeCase): self.assertGreater(errors, 0) self.assertIn("resolves empty filament_vendor", out) self.assertIn('filament_vendor "Generic"', out) - # No grandfathering: sanctioning the tree does not silence check 5a. + # No grandfathering: sanctioning the tree does not silence check 4a. rc, _out = self.t.update_snapshot() self.assertEqual(rc, 0) errors, out = self.t.check() @@ -736,7 +719,7 @@ class TestCheck5(OfCleanTreeCase): self.assertIn("divergent triples", out) self.assertIn("MV/PLA/MPLA", out) self.assertIn("MV/PETG/MPLA", out) - # No grandfathering: sanctioning the tree does not silence check 5b. + # No grandfathering: sanctioning the tree does not silence check 4b. rc, _out = self.t.update_snapshot() self.assertEqual(rc, 0) errors, out = self.t.check() @@ -922,20 +905,23 @@ class TestUpdateSnapshot(SyntheticTreeCase): with open(self.t.snapshot, "rb") as f: self.assertEqual(f.read(), before) # nothing written on refusal - def test_refuses_reserved_namespace_ids(self): + def test_records_an_id_it_cannot_defend_and_lets_check_reject_it(self): + # update-snapshot records state, it does not judge ids: a foreign id + # lands in the diff a maintainer reviews, and fails check 1 straight + # after. Sanctioning it does not grandfather it. self.t.write_preset("VendorA", preset("CNEW @base", filament_id="GFX99", instantiation=False, filament_vendor="CV", filament_type="PLA")) self.t.write_preset("VendorA", preset("CNEW @P1", inherits="CNEW @base", compatible_printers=["P1"])) - with open(self.t.snapshot, "rb") as f: - before = f.read() rc, out = self.t.update_snapshot() - self.assertEqual(rc, 1) - self.assertIn("refusing to sanction", out) - with open(self.t.snapshot, "rb") as f: - self.assertEqual(f.read(), before) # nothing written on refusal + self.assertEqual(rc, 0, out) + with open(self.t.snapshot, encoding="utf-8") as f: + self.assertIn("GFX99", json.load(f)["ids"]) + errors, out = self.t.check() + self.assertGreater(errors, 0) + self.assertIn('is not a minted "OF" id', out) def test_dry_run_reports_without_writing(self): self.t.write_preset("VendorA", preset("ANEW @P2", inherits="APLA @base", @@ -1536,7 +1522,7 @@ class TestRemint(SyntheticTreeCase): class TestCli(unittest.TestCase): """main(argv) over a synthetic tree. The clean tree's baseline ids are - deliberately non-conformant ("AX01"/"OGFL99"), so a --generate run always + deliberately non-conformant ("AX01"/"OGFL99"), so a generate-id run always has both a filament_id rewrite and setting_id inserts to do.""" def setUp(self): @@ -1544,17 +1530,17 @@ class TestCli(unittest.TestCase): self.addCleanup(self.t.cleanup) def test_bare_invocation_prints_help(self): + # Naming no command is not an error: it is how you find out what the + # commands are, and it must never be mistaken for a run that did work. + before = self.t.bytes_map() buf = io.StringIO() with contextlib.redirect_stdout(buf): rc = afi.main([]) self.assertEqual(rc, 0) self.assertIn("usage:", buf.getvalue()) - self.assertIn("--generate", buf.getvalue()) - # ... and so does any invocation naming no mode: help, and no work - before = self.t.bytes_map() - rc, out = self.t.cli() - self.assertEqual(rc, 0) - self.assertIn("usage:", out) + for command in ("check", "generate-id", "normalize", "trim", "update-index", + "update-snapshot"): + self.assertIn(command, buf.getvalue()) self.assertEqual(self.t.bytes_map(), before) def test_another_tree_needs_its_own_snapshot(self): @@ -1563,20 +1549,20 @@ class TestCli(unittest.TestCase): # re-recording into it would overwrite the tracked file. with open(afi.SNAPSHOT_PATH, "rb") as f: repo_snapshot = f.read() - for mode in ("--check", "--update-snapshot"): + for command in ("check", "update-snapshot"): with self.assertRaises(SystemExit) as caught: with contextlib.redirect_stderr(io.StringIO()): - afi.main([mode, "--profiles", self.t.profiles]) - self.assertEqual(caught.exception.code, 2, mode) + afi.main([command, "--profiles", self.t.profiles]) + self.assertEqual(caught.exception.code, 2, command) with open(afi.SNAPSHOT_PATH, "rb") as f: self.assertEqual(f.read(), repo_snapshot) - # Named explicitly, both modes run against that tree. - rc, out = self.t.cli("--update-snapshot") + # Named explicitly, both commands run against that tree. + rc, out = self.t.cli("update-snapshot") self.assertEqual(rc, 0, out) - # --generate never reads the snapshot, so it keeps working without one. + # generate-id never reads the snapshot, so it keeps working without one. buf = io.StringIO() with contextlib.redirect_stdout(buf): - rc = afi.main(["--dry-run", "--profiles", self.t.profiles]) + rc = afi.main(["generate-id", "--dry-run", "--profiles", self.t.profiles]) self.assertEqual(rc, 0, buf.getvalue()) def test_filament_id_and_setting_id_together_are_rejected(self): @@ -1584,7 +1570,7 @@ class TestCli(unittest.TestCase): # quietly mean "both". with self.assertRaises(SystemExit) as caught: with contextlib.redirect_stderr(io.StringIO()): - afi.main(["--generate", "--filament-id", "--setting-id", + afi.main(["generate-id", "--filament-id", "--setting-id", "--profiles", self.t.profiles]) self.assertEqual(caught.exception.code, 2) @@ -1593,14 +1579,14 @@ class TestCli(unittest.TestCase): path = self.t.preset_path("VendorA", "APLA @base") with open(path, "w", encoding="utf-8") as f: f.write("{ not json") - rc, out = self.t.cli("--generate") + rc, out = self.t.cli("generate-id") self.assertEqual(rc, 1, out) self.assertIn("error(s)", out) self.assertNotIn("SUCCESS", out) - def test_dry_run_alone_previews_generate(self): + def test_dry_run_previews_generate_id(self): before = self.t.bytes_map() - rc, out = self.t.cli("--dry-run") + rc, out = self.t.cli("generate-id", "--dry-run") self.assertEqual(rc, 0, out) self.assertIn("would ", out) self.assertIn("nothing written", out) @@ -1615,7 +1601,7 @@ class TestCli(unittest.TestCase): filament_type="PLA", compatible_printers=["P1"])) before = self.t.bytes_map() - rc, out = self.t.cli("--generate") + rc, out = self.t.cli("generate-id") self.assertEqual(rc, 0, out) after = self.t.bytes_map() @@ -1629,7 +1615,7 @@ class TestCli(unittest.TestCase): def test_dryrun_is_the_same_flag(self): before = self.t.bytes_map() - rc, out = self.t.cli("--dryrun") + rc, out = self.t.cli("generate-id", "--dryrun") self.assertEqual(rc, 0, out) self.assertIn("would ", out) # the same preview, not a silent no-op self.assertIn("nothing written", out) @@ -1637,7 +1623,7 @@ class TestCli(unittest.TestCase): def test_generate_vendor_writes_only_in_that_bundle(self): before = self.t.bytes_map() - rc, out = self.t.cli("--generate", "--vendor", "VendorA") + rc, out = self.t.cli("generate-id", "--vendor", "VendorA") self.assertEqual(rc, 0, out) after = self.t.bytes_map() changed = sorted(rel for rel in before if after[rel] != before[rel]) @@ -1646,7 +1632,7 @@ class TestCli(unittest.TestCase): self.assertTrue(rel.startswith("VendorA" + os.sep), rel) # The bundles it spared were not simply already conformant: the # un-narrowed run goes on to write in them too. - rc, out = self.t.cli("--generate") + rc, out = self.t.cli("generate-id") self.assertEqual(rc, 0, out) final = self.t.bytes_map() self.assertTrue(any(final[rel] != after[rel] for rel in after @@ -1654,13 +1640,13 @@ class TestCli(unittest.TestCase): def test_generate_unknown_vendor_returns_1(self): before = self.t.bytes_map() - rc, out = self.t.cli("--generate", "--vendor", "Nope") + rc, out = self.t.cli("generate-id", "--vendor", "Nope") self.assertEqual(rc, 1) self.assertIn("unknown vendor", out) self.assertEqual(self.t.bytes_map(), before) def test_setting_id_only_leaves_filament_ids_alone(self): - rc, out = self.t.cli("--generate", "--setting-id") + rc, out = self.t.cli("generate-id", "--setting-id") self.assertEqual(rc, 0, out) root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) self.assertEqual(root["filament_id"], "AX01") # not re-minted @@ -1671,7 +1657,7 @@ class TestCli(unittest.TestCase): "APLA @P1")) def test_filament_id_only_inserts_no_setting_id(self): - rc, out = self.t.cli("--generate", "--filament-id") + rc, out = self.t.cli("generate-id", "--filament-id") self.assertEqual(rc, 0, out) root = load_json_file(self.t.preset_path("VendorA", "APLA @base")) self.assertEqual(root["filament_id"], @@ -1680,24 +1666,40 @@ class TestCli(unittest.TestCase): self.assertNotIn( "setting_id", load_json_file(self.t.preset_path("VendorA", name))) - def test_check_mode_returns_1_on_errors(self): - # What CI keys off: --check exits nonzero when the tree does not match - # the snapshot it is validated against. + def test_check_returns_1_on_errors(self): + # What CI keys off: check exits nonzero when the tree does not match the + # snapshot it is validated against. before = self.t.bytes_map() - rc, out = self.t.cli("--check") + rc, out = self.t.cli("check") self.assertEqual(rc, 1) - self.assertIn("error(s)", out) - self.assertEqual(self.t.bytes_map(), before) # --check never writes + self.assertIn("Files with errors", out) + self.assertEqual(self.t.bytes_map(), before) # check never writes + + def test_check_vendor_narrows_the_per_vendor_pass(self): + # check_profile.sh passes --vendor to this command, so it has to be + # accepted -- and it must narrow only the per-vendor half. + rc, out = self.t.cli("check", "--vendor", "VendorA") + self.assertEqual(rc, 1, out) # the tree-wide checks still ran + self.assertIn("Checked vendors : 1", out) + + def test_an_empty_vendor_means_every_vendor(self): + # check_profile.sh cannot expand an empty array under set -u, so it + # passes --vendor "" to mean "all of them". + _rc, scoped = self.t.cli("check", "--vendor", "") + _rc, unscoped = self.t.cli("check") + self.assertEqual(scoped, unscoped) def test_removed_and_conflicting_flags_are_rejected(self): - for argv in (["--remint", "VendorA"], # removed mode - ["--mint", "A/B/C"], # removed mode - ["--drop-redundant-ids", "VendorA"], # removed mode - ["--assign"], # removed mode - ["--generate", "--check"], # two modes - ["--vendor", "VendorA"], # narrowing without a mode - ["--filament-id"], # narrowing without a mode - ["--check", "--vendor", "VendorA"]): # narrowing on --check + for argv in (["--remint", "VendorA"], # removed mode + ["--generate"], # the pre-subcommand flag + ["--check"], # the pre-subcommand flag + ["--update-snapshot"], # the pre-subcommand flag + ["nonsense"], # not a command + ["generate-id", "--filament-id", "--setting-id"], + ["generate-id", "--materials"], # check's option + ["check", "--filament-id"], # generate-id's option + ["normalize", "--snapshot", "x"], # not a snapshot command + ["normalize", "--profile-type", "nozzle"]): # not a profile type with self.subTest(argv=argv): with self.assertRaises(SystemExit) as cm, \ contextlib.redirect_stdout(io.StringIO()), \ @@ -1722,7 +1724,7 @@ class TestRealTree(unittest.TestCase): # The exact CI invocation, return code included. buf = io.StringIO() with contextlib.redirect_stdout(buf): - rc = afi.main(["--check"]) + rc = afi.main(["check"]) self.assertEqual(rc, 0, buf.getvalue()) def test_every_instantiated_filament_resolves_an_id(self): diff --git a/scripts/tests/test_profile_tool.py b/scripts/tests/test_profile_tool.py new file mode 100644 index 0000000000..b96ea44e49 --- /dev/null +++ b/scripts/tests/test_profile_tool.py @@ -0,0 +1,854 @@ +#!/usr/bin/env python3 +"""Tests for the tree-maintenance half of scripts/orca_profile_tool.py: the +normalize, trim, update-index and check commands, and the subcommand dispatch that +reaches them (stdlib unittest, no external deps). + +The id halves are covered by test_filament_id.py and test_setting_id.py. + +Run from the repo root: python -m unittest discover -s scripts/tests -v +""" + +import contextlib +import io +import json +import os +import shutil +import sys +import tempfile +import unittest + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +import orca_profile_tool as apt # noqa: E402 + +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) +REAL_PROFILES = os.path.join(REPO_ROOT, "resources", "profiles") + + +class Tree: + """A throwaway resources/profiles-shaped directory built one file at a time. + + Nothing is written implicitly: index entries are added by index(), so a test + can produce exactly the mismatch it is about (a file no list references, a + list naming a file that is not there, a preset whose name disagrees with the + index). + """ + + def __init__(self): + self.dir = tempfile.mkdtemp(prefix="profile_tool_test_") + self.profiles = os.path.join(self.dir, "profiles") + os.makedirs(self.profiles) + + def cleanup(self): + shutil.rmtree(self.dir, ignore_errors=True) + + def index_path(self, vendor): + return os.path.join(self.profiles, vendor + ".json") + + def add_vendor(self, vendor): + for sub in apt.PROFILE_SUBDIRS: + os.makedirs(os.path.join(self.profiles, vendor, sub), exist_ok=True) + if not os.path.exists(self.index_path(vendor)): + self.write_index(vendor, {"name": vendor, "version": "01.00.00.00"}) + return self + + def write_index(self, vendor, index): + with open(self.index_path(vendor), "w", encoding="utf-8", newline="\n") as f: + json.dump(index, f, indent=4, ensure_ascii=False) + f.write("\n") + + def read_index(self, vendor): + with open(self.index_path(vendor), encoding="utf-8-sig") as f: + return json.load(f) + + def index(self, vendor, section, name, sub_path): + index = self.read_index(vendor) + index.setdefault(section + "_list", []).append( + {"name": name, "sub_path": sub_path}) + self.write_index(vendor, index) + + def path(self, vendor, rel): + return os.path.join(self.profiles, vendor, rel.replace("/", os.sep)) + + def write(self, vendor, rel, data): + """Write a preset at /; returns its path.""" + self.add_vendor(vendor) + path = self.path(vendor, rel) + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8", newline="\n") as f: + json.dump(data, f, indent=4, ensure_ascii=False) + f.write("\n") + return path + + def write_raw(self, vendor, rel, raw): + self.add_vendor(vendor) + path = self.path(vendor, rel) + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "wb") as f: + f.write(raw) + return path + + def read(self, vendor, rel): + with open(self.path(vendor, rel), encoding="utf-8-sig") as f: + return json.load(f) + + def raw(self, vendor, rel): + with open(self.path(vendor, rel), "rb") as f: + return f.read() + + def bytes_map(self): + """Every file in the tree -> its bytes, for "nothing was written" asserts.""" + out = {} + for root, dirs, files in os.walk(self.profiles): + dirs.sort() + for name in sorted(files): + path = os.path.join(root, name) + with open(path, "rb") as f: + out[os.path.relpath(path, self.profiles)] = f.read() + return out + + +class TreeCase(unittest.TestCase): + def setUp(self): + self.t = Tree() + self.addCleanup(self.t.cleanup) + + def run_command(self, *argv): + """main() against this tree, capturing stdout.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = apt.main([*argv, "--profiles", self.t.profiles]) + return rc, buf.getvalue() + + +# --------------------------------------------------------------------------- +# normalize +# --------------------------------------------------------------------------- + +class TestNormalize(TreeCase): + def test_a_missing_type_is_filled_in_from_the_directory(self): + self.t.write("V", "filament/A.json", {"name": "A"}) + self.t.write("V", "process/B.json", {"name": "B"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.read("V", "filament/A.json")["type"], "filament") + self.assertEqual(self.t.read("V", "process/B.json")["type"], "process") + + def test_the_machine_folder_splits_on_the_preset_name(self): + # Orca keeps machine models in machine/ next to the nozzle variants that + # are machines; only the name tells them apart. + self.t.write("V", "machine/M.json", {"name": "V Printer"}) + self.t.write("V", "machine/N.json", {"name": "V Printer 0.4 nozzle"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.read("V", "machine/M.json")["type"], "machine_model") + self.assertEqual(self.t.read("V", "machine/N.json")["type"], "machine") + + def test_dropped_keys_go_and_filament_vectors_are_arrayified(self): + self.t.write("V", "filament/A.json", { + "type": "filament", "name": "A", "version": "1.2.3", + "is_custom_defined": "1", "filament_type": "PLA", + "filament_vendor": "AV", "travel_speed": 200}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + data = self.t.read("V", "filament/A.json") + self.assertNotIn("version", data) + self.assertNotIn("is_custom_defined", data) + self.assertNotIn("travel_speed", data) # a process setting, not a filament one + self.assertEqual(data["filament_type"], ["PLA"]) + self.assertEqual(data["filament_vendor"], ["AV"]) + + def test_the_larger_extruder_clearance_wins(self): + # Keeping the smaller one would licence a toolhead collision. + self.t.write("V", "machine/M.json", { + "type": "machine", "name": "M 0.4 nozzle", + "extruder_clearance_radius": "45", "extruder_clearance_max_radius": "68"}) + self.t.write("V", "machine/N.json", { + "type": "machine", "name": "N 0.4 nozzle", + "extruder_clearance_radius": "68", "extruder_clearance_max_radius": "45"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + kept = self.t.read("V", "machine/M.json") + self.assertNotIn("extruder_clearance_radius", kept) + self.assertEqual(kept["extruder_clearance_max_radius"], "68") + kept = self.t.read("V", "machine/N.json") + self.assertNotIn("extruder_clearance_max_radius", kept) + self.assertEqual(kept["extruder_clearance_radius"], "68") + + def test_a_rewritten_file_leads_with_its_identifying_keys(self): + self.t.write("V", "filament/A.json", { + "filament_cost": [20], "name": "A", "instantiation": "true", + "inherits": "base", "version": "1"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + keys = list(self.t.read("V", "filament/A.json")) + self.assertEqual(keys[:4], ["type", "name", "inherits", "instantiation"]) + + def test_a_conforming_tree_is_left_byte_identical(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + before = self.t.bytes_map() + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.bytes_map(), before) + + def test_force_rewrites_even_a_conforming_file(self): + self.t.write_raw("V", "filament/A.json", + b'{"name":"A","type":"filament"}') + rc, out = self.run_command("normalize", "--force") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.raw("V", "filament/A.json"), + b'{\n\t"type": "filament",\n\t"name": "A"\n}\n') + + def test_dry_run_writes_nothing(self): + self.t.write("V", "filament/A.json", {"name": "A"}) + before = self.t.bytes_map() + rc, out = self.run_command("normalize", "--dry-run") + self.assertEqual(rc, 0, out) + self.assertIn("would be", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_profile_type_confines_the_run(self): + self.t.write("V", "filament/A.json", {"name": "A"}) + self.t.write("V", "process/B.json", {"name": "B"}) + rc, out = self.run_command("normalize", "--profile-type", "filament") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.read("V", "filament/A.json")["type"], "filament") + self.assertNotIn("type", self.t.read("V", "process/B.json")) + + def test_an_unreadable_profile_is_reported_not_swallowed(self): + self.t.write_raw("V", "filament/A.json", b"{ not json") + rc, out = self.run_command("normalize") + self.assertEqual(rc, 1, out) + self.assertIn("ERROR", out) + self.assertEqual(self.t.raw("V", "filament/A.json"), b"{ not json") + + def test_a_directory_without_an_index_is_not_a_bundle(self): + # resources/profiles also holds non-bundle entries (blacklist.json, the + # untracked user/ directory); only a directory WITH an index is a vendor. + stray = os.path.join(self.t.profiles, "user", "filament") + os.makedirs(stray) + with open(os.path.join(stray, "A.json"), "wb") as f: + f.write(b'{"name": "A"}') + self.t.write("V", "filament/A.json", {"name": "A"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertFalse(os.path.exists(os.path.join(self.t.profiles, "user.json"))) + with open(os.path.join(stray, "A.json"), "rb") as f: + self.assertEqual(f.read(), b'{"name": "A"}') + + +# --------------------------------------------------------------------------- +# trim +# --------------------------------------------------------------------------- + +class TestTrim(TreeCase): + def bundle(self): + self.t.write("V", "filament/Listed.json", + {"type": "filament", "name": "Listed"}) + self.t.index("V", "filament", "Listed", "filament/Listed.json") + return self.t + + def test_an_unindexed_preset_is_removed(self): + self.bundle().write("V", "filament/Orphan.json", + {"type": "filament", "name": "Orphan"}) + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + self.assertTrue(os.path.exists(self.t.path("V", "filament/Listed.json"))) + self.assertFalse(os.path.exists(self.t.path("V", "filament/Orphan.json"))) + + def test_a_dotted_sub_path_still_names_its_file(self): + # Index entries are hand-written; "filament/./X.json" is the same file. + self.bundle() + self.t.write("V", "filament/Dotted.json", + {"type": "filament", "name": "Dotted"}) + self.t.index("V", "filament", "Dotted", "filament/./Dotted.json") + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + self.assertTrue(os.path.exists(self.t.path("V", "filament/Dotted.json"))) + + def test_an_unparsable_file_is_kept_and_reported(self): + self.bundle().write_raw("V", "filament/Broken.json", b"{ not json") + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + self.assertIn("WARNING", out) + self.assertTrue(os.path.exists(self.t.path("V", "filament/Broken.json"))) + + def test_a_data_file_is_not_a_preset(self): + self.bundle().write("V", "filament/filaments_color_codes.json", + {"data": [], "total": 0}) + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + self.assertTrue(os.path.exists( + self.t.path("V", "filament/filaments_color_codes.json"))) + + def test_an_inherited_base_is_kept_and_reported(self): + # Neither file loads -- the loader only reads indexed sub_paths -- but + # deleting the parent destroys the only record of what the indexed child + # was written against, so that is a maintainer's call, not trim's. + self.bundle() + self.t.write("V", "machine/base.json", + {"type": "machine", "name": "V base"}) + self.t.write("V", "machine/mid.json", + {"type": "machine", "name": "V mid", "inherits": "V base"}) + self.t.write("V", "machine/M.json", + {"type": "machine", "name": "M 0.4 nozzle", "inherits": "V mid"}) + self.t.index("V", "machine", "M 0.4 nozzle", "machine/M.json") + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + # ... and the chain is followed: mid rescues base in a second pass. + self.assertTrue(os.path.exists(self.t.path("V", "machine/mid.json"))) + self.assertTrue(os.path.exists(self.t.path("V", "machine/base.json"))) + self.assertIn("inherited from", out) + + def test_a_stale_copy_of_an_indexed_profile_is_removed(self): + # "inherits" resolves by preset name, so the indexed base is the parent the + # child actually gets; the unindexed twin is a leftover the loader never + # reaches, and being named in an inherits does not earn it a reprieve. + self.bundle() + self.t.write("V", "machine/HSN/base.json", + {"type": "machine", "name": "V base"}) + self.t.index("V", "machine", "V base", "machine/HSN/base.json") + self.t.write("V", "machine/base.json", + {"type": "machine", "name": "V base"}) + self.t.write("V", "machine/M.json", + {"type": "machine", "name": "M 0.4 nozzle", "inherits": "V base"}) + self.t.index("V", "machine", "M 0.4 nozzle", "machine/M.json") + rc, out = self.run_command("trim") + self.assertEqual(rc, 0, out) + self.assertTrue(os.path.exists(self.t.path("V", "machine/HSN/base.json"))) + self.assertFalse(os.path.exists(self.t.path("V", "machine/base.json"))) + self.assertNotIn("WARNING", out) + self.assertIn('machine/HSN/base.json is the profile named "V base"', out) + + def test_dry_run_deletes_nothing(self): + self.bundle().write("V", "filament/Orphan.json", + {"type": "filament", "name": "Orphan"}) + before = self.t.bytes_map() + rc, out = self.run_command("trim", "--dry-run") + self.assertEqual(rc, 0, out) + self.assertIn("would be removed", out) + self.assertEqual(self.t.bytes_map(), before) + + +# --------------------------------------------------------------------------- +# update-index +# --------------------------------------------------------------------------- + +class TestUpdateIndex(TreeCase): + def test_every_profile_on_disk_lands_in_its_own_section(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.t.write("V", "process/B.json", {"type": "process", "name": "B"}) + self.t.write("V", "machine/M.json", {"type": "machine", "name": "M"}) + self.t.write("V", "machine/MM.json", {"type": "machine_model", "name": "MM"}) + rc, out = self.run_command("update-index") + self.assertEqual(rc, 0, out) + index = self.t.read_index("V") + self.assertEqual(index["filament_list"], + [{"name": "A", "sub_path": "filament/A.json"}]) + self.assertEqual(index["process_list"], + [{"name": "B", "sub_path": "process/B.json"}]) + self.assertEqual(index["machine_list"], + [{"name": "M", "sub_path": "machine/M.json"}]) + self.assertEqual(index["machine_model_list"], + [{"name": "MM", "sub_path": "machine/MM.json"}]) + + def test_parents_are_listed_before_their_children(self): + # The loader resolves inherits in one pass over the list. + for name, parent in (("C", "B"), ("A", None), ("B", "A")): + data = {"type": "filament", "name": name} + if parent: + data["inherits"] = parent + self.t.write("V", f"filament/{name}.json", data) + rc, out = self.run_command("update-index") + self.assertEqual(rc, 0, out) + self.assertEqual([e["name"] for e in self.t.read_index("V")["filament_list"]], + ["A", "B", "C"]) + # inherits is ordering input only; it never lands in the index. + for entry in self.t.read_index("V")["filament_list"]: + self.assertEqual(sorted(entry), ["name", "sub_path"]) + + def test_a_profile_with_no_usable_type_is_reported_not_dropped(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.t.write("V", "filament/B.json", {"name": "B"}) + rc, out = self.run_command("update-index") + self.assertEqual(rc, 1, out) + self.assertIn("cannot be indexed", out) + self.assertIn("filament/B.json", out) + + def test_two_profiles_claiming_one_name_leave_the_index_alone(self): + # The bundle holds one profile per name, so a rebuild would pick a winner by + # directory order and drop the other without a word. + self.t.write("V", "machine/base.json", {"type": "machine", "name": "base"}) + self.t.write("V", "machine/HSN/base.json", {"type": "machine", "name": "base"}) + self.t.index("V", "machine", "base", "machine/HSN/base.json") + before = self.t.bytes_map() + rc, out = self.run_command("update-index") + self.assertEqual(rc, 1, out) + self.assertIn('2 profiles are named "base"', out) + self.assertIn("machine/base.json", out) + self.assertIn("machine/HSN/base.json", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_profile_type_rebuilds_only_that_section(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.t.write("V", "process/B.json", {"type": "process", "name": "B"}) + rc, out = self.run_command("update-index", "--profile-type", "filament") + self.assertEqual(rc, 0, out) + index = self.t.read_index("V") + self.assertEqual([e["name"] for e in index["filament_list"]], ["A"]) + self.assertNotIn("process_list", index) + + def test_an_up_to_date_index_is_left_byte_identical(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.run_command("update-index") + before = self.t.bytes_map() + rc, out = self.run_command("update-index") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.bytes_map(), before) + + def test_dry_run_writes_nothing(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + before = self.t.bytes_map() + rc, out = self.run_command("update-index", "--dry-run") + self.assertEqual(rc, 0, out) + self.assertIn("would be rebuilt", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_a_json_file_with_no_bundle_is_never_touched(self): + # resources/profiles/blacklist.json is a .json with no directory beside + # it. Enumerating vendors by stem once wrote four empty *_list keys into it. + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + stray = os.path.join(self.t.profiles, "blacklist.json") + with open(stray, "wb") as f: + f.write(b'{"filament": ["GFSA03"]}') + rc, out = self.run_command("update-index") + self.assertEqual(rc, 0, out) + with open(stray, "rb") as f: + self.assertEqual(f.read(), b'{"filament": ["GFSA03"]}') + + +# --------------------------------------------------------------------------- +# check +# --------------------------------------------------------------------------- + +class TestCheck(TreeCase): + def bundle(self): + """A bundle that passes every per-vendor check.""" + self.t.write("V", "filament/A.json", { + "type": "filament", "name": "A", "instantiation": "true", + "filament_id": "OFaaaaaa", "filament_type": ["PLA"], + "filament_vendor": ["AV"], "compatible_printers": ["M 0.4 nozzle"], + "setting_id": apt.generate_preset_setting_id("V", "filament", "A")}) + self.t.index("V", "filament", "A", "filament/A.json") + return self.t + + def per_vendor_errors(self, *argv): + """Run the per-vendor checks alone, which is what --vendor narrows.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = apt.check_filament_compatible_printers(self.t.profiles, "V") + name_errors, _warn = apt.check_name_consistency(self.t.profiles, "V") + errors += name_errors + errors += apt.check_vector_type_keys(self.t.profiles, "V") + errors += apt.check_filament_id_length(self.t.profiles, "V") + conflict, _warn = apt.check_conflict_keys(self.t.profiles, "V") + errors += conflict + return errors, buf.getvalue() + + def test_a_clean_bundle_reports_nothing(self): + self.bundle() + errors, out = self.per_vendor_errors() + self.assertEqual(errors, 0, out) + + def test_an_instantiated_filament_needs_compatible_printers(self): + self.bundle().write("V", "filament/B.json", { + "type": "filament", "name": "B", "instantiation": "true"}) + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("'compatible_printers' missing", out) + + def test_a_duplicate_key_is_an_error(self): + self.bundle().write_raw("V", "filament/B.json", + b'{"type":"filament","name":"B","name":"B2"}') + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("Duplicate key", out) + + def test_the_index_and_the_file_must_agree_on_the_name(self): + self.bundle() + self.t.write("V", "filament/C.json", {"type": "filament", "name": "Other"}) + self.t.index("V", "filament", "C", "filament/C.json") + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("name mismatch", out) + + def test_an_index_entry_with_no_file_is_an_error(self): + self.bundle() + self.t.index("V", "filament", "Gone", "filament/Gone.json") + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("Missing sub profile", out) + + def test_a_vector_option_may_not_be_a_scalar(self): + self.bundle().write("V", "filament/B.json", { + "type": "filament", "name": "B", "filament_type": "PLA"}) + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("must be an array", out) + + def test_renamed_and_old_option_may_not_co_exist(self): + self.bundle().write("V", "machine/M.json", { + "type": "machine", "name": "M 0.4 nozzle", + "extruder_clearance_radius": "45", "extruder_clearance_max_radius": "68"}) + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("Conflict keys", out) + + def test_the_length_rule_only_binds_indexed_presets(self): + # A file the index never loads cannot break AMS matching, and some + # bundles ship such orphans from before the rule existed. + self.bundle().write("V", "filament/Long.json", { + "type": "filament", "name": "Long", "filament_id": "OFtoolongforams"}) + errors, out = self.per_vendor_errors() + self.assertEqual(errors, 0, out) + self.t.index("V", "filament", "Long", "filament/Long.json") + errors, out = self.per_vendor_errors() + self.assertGreater(errors, 0) + self.assertIn("Filament id too long", out) + + def test_obsolete_keys_are_opt_in_warnings(self): + self.bundle().write("V", "filament/B.json", { + "type": "filament", "name": "B", "silent_mode": True}) + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + warnings = apt.check_obsolete_keys(self.t.profiles, "V") + self.assertEqual(warnings, 1) + self.assertIn("Obsolete key", buf.getvalue()) + + def test_a_default_material_must_exist_somewhere(self): + self.bundle().write("V", "machine/M.json", { + "type": "machine", "name": "M 0.4 nozzle", + "default_materials": "A;Nope"}) + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors, _warn = apt.check_machine_default_materials(self.t.profiles, "V") + self.assertEqual(errors, 1) + self.assertIn("'Nope'", buf.getvalue()) + + def names(self, vendor="V"): + """The preset name check for one bundle, which is what --vendor narrows.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = apt.check_preset_name_uniqueness(self.t.profiles, vendor) + return errors, buf.getvalue() + + def test_one_bundle_may_not_hold_two_profiles_of_a_name(self): + self.bundle().write("V", "filament/dup.json", { + "type": "filament", "name": "A", "instantiation": "false"}) + errors, out = self.names() + self.assertEqual(errors, 1, out) + self.assertIn('V has 2 filament profiles named "A"', out) + + def test_an_unindexed_twin_counts_as_a_duplicate(self): + # The case this check was written for: a stale copy of a base profile in + # machine/, which no per-vendor check walked, one index edit away from + # silently deciding which of the two a whole bundle inherits from. + self.bundle() + self.t.write("V", "machine/HSN/base.json", + {"type": "machine", "name": "V base"}) + self.t.index("V", "machine", "V base", "machine/HSN/base.json") + self.t.write("V", "machine/base.json", {"type": "machine", "name": "V base"}) + errors, out = self.names() + self.assertEqual(errors, 1, out) + self.assertIn("machine/HSN/base.json", out) + self.assertIn("machine/base.json", out) + + def test_one_name_in_two_types_is_not_a_clash(self): + self.bundle() + self.t.write("V", "process/same.json", {"type": "process", "name": "A"}) + errors, out = self.names() + self.assertEqual(errors, 0, out) + + def test_a_name_is_per_bundle_not_global(self): + # fdm_machine_common exists in 60 shipped bundles; the name is scoped to the + # bundle that resolves it, so sharing one across vendors is not a clash. + for vendor in ("V", "W"): + self.t.write(vendor, "machine/common.json", + {"type": "machine", "name": "fdm_machine_common"}) + self.t.index(vendor, "machine", "fdm_machine_common", "machine/common.json") + for vendor in ("V", "W"): + errors, out = self.names(vendor) + self.assertEqual(errors, 0, out) + + def coverage(self, vendor="V"): + """The index-coverage check for one bundle: (errors, gaps, output).""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors, gaps = apt.check_index_coverage(self.t.profiles, vendor) + return errors, gaps, buf.getvalue() + + def test_a_file_no_list_references_is_an_error(self): + self.bundle().write("V", "filament/Stray.json", + {"type": "filament", "name": "Stray"}) + errors, gaps, out = self.coverage() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["unindexed"], 1) + self.assertIn("no V.json list references it", out) + + def test_a_file_with_no_type_is_its_own_category(self): + # update-index cannot place it, so "add it to the index" is not the remedy. + self.bundle().write("V", "filament/Stray.json", {"name": "Stray"}) + errors, gaps, out = self.coverage() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["unindexable"], 1) + self.assertIn("declares no profile type", out) + + def test_an_unparsable_unlisted_file_is_reported_too(self): + self.bundle().write_raw("V", "filament/Broken.json", b"{ not json") + errors, gaps, out = self.coverage() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["unindexable"], 1) + + def test_a_dotted_sub_path_still_counts_as_listed(self): + self.bundle() + self.t.write("V", "filament/Dotted.json", + {"type": "filament", "name": "Dotted"}) + self.t.index("V", "filament", "Dotted", "filament/./Dotted.json") + errors, _gaps, out = self.coverage() + self.assertEqual(errors, 0, out) + + def test_a_data_file_is_not_expected_in_the_index(self): + self.bundle().write("V", "filament/filaments_color_codes.json", + {"data": [], "total": 0}) + errors, _gaps, out = self.coverage() + self.assertEqual(errors, 0, out) + + def test_a_bundle_with_no_index_is_left_to_the_name_check(self): + # Every file unlisted because there is no list at all is one problem, not + # one per file; check_name_consistency reports the missing index. + self.t.write("W", "filament/A.json", {"type": "filament", "name": "A"}) + os.remove(self.t.index_path("W")) + errors, _gaps, out = self.coverage("W") + self.assertEqual(errors, 0, out) + + def test_the_remedy_is_printed_once_not_once_per_file(self): + self.bundle() + for n in range(5): + self.t.write("V", f"filament/Stray{n}.json", + {"type": "filament", "name": f"Stray{n}"}) + self.t.write("V", "filament/NoType.json", {"name": "NoType"}) + snapshot = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", snapshot) + rc, out = self.run_command("check", "--snapshot", snapshot) + self.assertEqual(rc, 1, out) + self.assertEqual(out.count("update-index\" to add them"), 1, out) + self.assertEqual(out.count("or delete them"), 1, out) + self.assertIn("5 unreferenced file(s)", out) + self.assertIn("1 unreferenced file(s)", out) + + def test_setting_id_uniqueness_is_tree_wide(self): + # Two presets sharing vendor/type/name mint one id, so the collision + # only shows up in a pass that has seen the whole tree. + shared = apt.generate_preset_setting_id("V", "filament", "A") + for rel in ("filament/A.json", "filament/nested/A.json"): + self.t.write("V", rel, {"type": "filament", "name": "A", + "instantiation": "true", "setting_id": shared}) + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = apt.check_setting_id_uniqueness(self.t.profiles) + self.assertGreater(errors, 0) + self.assertIn("globally unique", buf.getvalue()) + + def test_a_base_profile_must_not_carry_a_setting_id(self): + self.t.write("V", "filament/base.json", { + "type": "filament", "name": "base", "instantiation": "false", + "setting_id": apt.generate_preset_setting_id("V", "filament", "base")}) + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = apt.check_setting_id_uniqueness(self.t.profiles) + self.assertEqual(errors, 1) + self.assertIn("must not have a", buf.getvalue()) + + +# --------------------------------------------------------------------------- +# check: normalize and update-index would change nothing +# --------------------------------------------------------------------------- + +class TestNormalized(TreeCase): + """The pass that holds a bundle to the shape normalize and update-index write.""" + + def normalize(self): + """Put the tree in that shape, the way a contributor is told to.""" + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + apt.main(["normalize", "--profiles", self.t.profiles]) + apt.main(["update-index", "--profiles", self.t.profiles]) + return buf.getvalue() + + def normalized(self, vendor="V"): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors, gaps = apt.check_normalized(self.t.profiles, vendor) + return errors, gaps, buf.getvalue() + + def snapshot(self): + path = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", path) + return path + + def test_a_bundle_the_two_commands_just_wrote_reports_nothing(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.t.write("V", "process/B.json", {"type": "process", "name": "B"}) + self.normalize() + errors, _gaps, out = self.normalized() + self.assertEqual(errors, 0, out) + + def test_a_profile_fix_would_rewrite_is_an_error(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + self.normalize() + # version belongs to the bundle, in .json, never to a preset. + data = self.t.read("V", "filament/A.json") + data["version"] = "01.00.00.00" + self.t.write("V", "filament/A.json", data) + errors, gaps, out = self.normalized() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["unnormalized"], 1, out) + self.assertIn("V/filament/A.json: normalize would remove version", out) + + def test_an_index_update_index_would_rebuild_is_an_error(self): + for name, parent in (("B", "A"), ("A", None)): + data = {"type": "filament", "name": name} + if parent: + data["inherits"] = parent + self.t.write("V", f"filament/{name}.json", data) + self.normalize() + # Parents-first is what lets the loader resolve inherits in one pass; a + # hand-edited list that puts the child first still names every file. + index = self.t.read_index("V") + index["filament_list"].reverse() + self.t.write_index("V", index) + errors, gaps, out = self.normalized() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["stale_index"], 1, out) + self.assertIn("V.json: update-index would rebuild filament_list", out) + + def test_an_unbuildable_index_is_left_to_the_checks_that_name_it(self): + # update-index refuses to rebuild a bundle where two files claim one name, + # so "would be rebuilt" on top of the duplicate-name error would be noise. + self.t.write("V", "machine/base.json", {"type": "machine", "name": "base"}) + self.normalize() + self.t.write("V", "machine/HSN/base.json", {"type": "machine", "name": "base"}) + errors, gaps, out = self.normalized() + self.assertEqual(errors, 0, out) + self.assertEqual(gaps["stale_index"], 0, out) + + def test_a_bundle_with_no_index_still_has_its_files_checked(self): + self.t.write("V", "filament/A.json", + {"type": "filament", "name": "A", "is_custom_defined": "0"}) + os.remove(self.t.index_path("V")) + errors, gaps, out = self.normalized() + self.assertEqual(errors, 1, out) + self.assertEqual(gaps["unnormalized"], 1, out) + self.assertEqual(gaps["stale_index"], 0, out) + + def test_the_shared_base_bundle_is_covered_too(self): + # The per-vendor pass leaves OrcaFilamentLibrary out because its filaments are + # generic by design. That says nothing about the shape of its files, and + # normalize and update-index rewrite that bundle like any other. + self.t.write(apt.OFL, "filament/A.json", + {"type": "filament", "name": "A", "version": "01.00.00.00"}) + rc, out = self.run_command("check", "--snapshot", self.snapshot()) + self.assertEqual(rc, 1, out) + self.assertIn(f"{apt.OFL}/filament/A.json: normalize would remove version", out) + + def test_each_remedy_is_printed_once_for_the_whole_run(self): + for n in range(3): + self.t.write("V", f"filament/A{n}.json", + {"type": "filament", "name": f"A{n}", + "version": "01.00.00.00"}) + self.t.write("W", "filament/B.json", {"type": "filament", "name": "B"}) + rc, out = self.run_command("check", "--snapshot", self.snapshot()) + self.assertEqual(rc, 1, out) + self.assertIn("3 profile file(s) above are not what", out) + self.assertEqual(out.count('normalize" writes: run it and commit'), 1, out) + self.assertIn("2 vendor index(es) above are not what", out) + self.assertEqual(out.count('update-index" writes: run it and commit'), 1, out) + + +# --------------------------------------------------------------------------- +# CLI dispatch +# --------------------------------------------------------------------------- + +class TestDispatch(TreeCase): + def test_each_command_reaches_its_own_writer(self): + self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + for command, expected in (("normalize", "normalized"), + ("trim", "unreferenced"), + ("update-index", "vendor index")): + with self.subTest(command=command): + rc, out = self.run_command(command, "--dry-run") + self.assertEqual(rc, 0, out) + self.assertIn(expected, out) + + def test_an_option_belongs_to_one_command_only(self): + for argv in (["normalize", "--materials"], + ["trim", "--force"], + ["update-index", "--filament-id"], + ["check", "--profile-type", "filament"], + ["update-snapshot", "--vendor", "V"]): + with self.subTest(argv=argv): + with self.assertRaises(SystemExit) as cm, \ + contextlib.redirect_stdout(io.StringIO()), \ + contextlib.redirect_stderr(io.StringIO()): + apt.main([*argv, "--profiles", self.t.profiles]) + self.assertEqual(cm.exception.code, 2) + + def test_an_unknown_vendor_stops_the_run(self): + self.t.write("V", "filament/A.json", {"name": "A"}) + before = self.t.bytes_map() + rc, out = self.run_command("normalize", "--vendor", "Nope") + self.assertEqual(rc, 1) + self.assertIn("unknown vendor", out) + self.assertEqual(self.t.bytes_map(), before) + + def test_an_empty_vendor_means_every_vendor(self): + self.t.write("V", "filament/A.json", {"name": "A"}) + rc, out = self.run_command("normalize", "--vendor", "") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.read("V", "filament/A.json")["type"], "filament") + + +# --------------------------------------------------------------------------- +# the real tree +# --------------------------------------------------------------------------- + +@unittest.skipUnless(os.path.isdir(REAL_PROFILES), "resources/profiles not present") +class TestRealTree(unittest.TestCase): + def test_check_passes(self): + # The exact CI invocation, return code included. + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + rc = apt.main(["check"]) + self.assertEqual(rc, 0, buf.getvalue()) + + def test_the_shipped_tree_needs_no_fix(self): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = apt.normalize_profiles(REAL_PROFILES, dry_run=True) + self.assertEqual(errors, 0, buf.getvalue()) + self.assertEqual(changed, 0, buf.getvalue()) + + def test_the_shipped_indexes_need_no_rebuild(self): + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + changed, errors = apt.update_profile_indexes(REAL_PROFILES, dry_run=True) + self.assertEqual(errors, 0, buf.getvalue()) + self.assertEqual(changed, 0, buf.getvalue()) + + def test_no_shipped_bundle_is_a_stray_json_file(self): + # blacklist.json has no directory beside it, so it is not a vendor. + self.assertNotIn("blacklist", apt.list_vendor_names(REAL_PROFILES)) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_setting_id.py b/scripts/tests/test_setting_id.py index 95e447d03c..f27438788f 100644 --- a/scripts/tests/test_setting_id.py +++ b/scripts/tests/test_setting_id.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Tests for the setting_id half of scripts/orca_id_tool.py (stdlib unittest, no +"""Tests for the setting_id half of scripts/orca_profile_tool.py (stdlib unittest, no external deps). Run from the repo root: python -m unittest discover -s scripts/tests -v @@ -17,7 +17,7 @@ import uuid sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -import orca_id_tool as afi # noqa: E402 +import orca_profile_tool as afi # noqa: E402 REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) REAL_PROFILES = os.path.join(REPO_ROOT, "resources", "profiles") @@ -246,7 +246,7 @@ class TestBase62Tail(unittest.TestCase): class TestAssignment(SettingTreeCase): def test_instantiation_is_read_exactly_as_the_validator_reads_it(self): - # orca_extra_profile_check.py tests `instantiation == "true"` strictly. + # check_setting_id_uniqueness tests `instantiation == "true"` strictly. # Anything looser here would hand an id to a preset the validator calls # a base profile, and the two would fight over it on every run. for name, value in [("Boolean", True), ("Capitalised", "True"), @@ -852,7 +852,7 @@ class TestCli(SettingTreeCase): self.t.write("VendorA", "machine", preset("P1 0.4 nozzle", type_name="machine")) - rc, out = self.main(["--generate", "--setting-id", + rc, out = self.main(["generate-id", "--setting-id", "--profiles", self.t.profiles]) self.assertEqual(rc, 0, out) @@ -874,13 +874,13 @@ class TestCli(SettingTreeCase): def test_dry_run_setting_id_writes_nothing(self): self.t.write("VendorA", "filament", preset("A PLA @P1")) before = self.t.bytes_map() - rc, out = self.main(["--generate", "--setting-id", "--dry-run", + rc, out = self.main(["generate-id", "--setting-id", "--dry-run", "--profiles", self.t.profiles]) self.assertEqual(rc, 0, out) self.assertIn("1 file(s) would change", out) # there WAS one to write self.assertEqual(self.t.bytes_map(), before) # the real run then writes exactly it - rc, out = self.main(["--generate", "--setting-id", + rc, out = self.main(["generate-id", "--setting-id", "--profiles", self.t.profiles]) self.assertEqual(rc, 0, out) self.assertIn("1 file(s) changed", out) @@ -888,7 +888,7 @@ class TestCli(SettingTreeCase): afi.generate_preset_setting_id("VendorA", "filament", "A PLA @P1")) - def test_setting_id_without_generate_is_a_usage_error(self): + def test_setting_id_without_a_command_is_a_usage_error(self): with contextlib.redirect_stderr(io.StringIO()), \ self.assertRaises(SystemExit) as cm: afi.main(["--setting-id", "--profiles", self.t.profiles]) diff --git a/scripts/update_bambu_filament_ids.py b/scripts/update_bambu_filament_ids.py index 539376599e..457a0347aa 100644 --- a/scripts/update_bambu_filament_ids.py +++ b/scripts/update_bambu_filament_ids.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """ Generate resources/printers/bambu_filament_ids.json: the map from Orca's -content-addressed filament_id ("OF" + 6 base62 chars, see orca_id_tool.py) +content-addressed filament_id ("OF" + 6 base62 chars, see orca_profile_tool.py) to Bambu Lab's own AMS/RFID catalog id ("GF..." etc.) for the subset of filament products Bambu ships. @@ -54,7 +54,7 @@ import tempfile import datetime sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) -from orca_id_tool import ( # noqa: E402 +from orca_profile_tool import ( # noqa: E402 BAMBU_MAP_PATH, OFL, PROFILES_DIR, diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index d4209abe1f..2358680fbc 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -545,7 +545,7 @@ std::string generate_preset_setting_id(const std::string& vendor, const std::str return ""; // Dedicated namespace for preset setting_ids, distinct from the cloud per-user - // namespace (OrcaCloudServiceAgent). Keep in sync with scripts/orca_id_tool.py; + // namespace (OrcaCloudServiceAgent). Keep in sync with scripts/orca_profile_tool.py; // never change this constant. static const boost::uuids::uuid vendor_namespace = boost::uuids::string_generator()("c1f4d9e2-7a3b-5c8d-9e0f-1a2b3c4d5e6f"); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 73052678e8..c66518e29d 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -93,8 +93,8 @@ class PresetBundle; // Deterministic preset setting_id: uuid5(vendor/type/name) -> 16 base62 chars. // Pure function of a system preset's identity, so the value can be assigned by -// scripts/orca_id_tool.py and recomputed here when a profile ships without it. -// MUST stay byte-identical to scripts/orca_id_tool.py. +// scripts/orca_profile_tool.py and recomputed here when a profile ships without it. +// MUST stay byte-identical to scripts/orca_profile_tool.py. // This is NOT the per-user cloud-sync setting_id // (OrcaCloudServiceAgent::generate_uuid_for_setting_id) - do not conflate them. std::string generate_preset_setting_id(const std::string& vendor, diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 54e5db27e4..746856906c 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -6783,7 +6783,7 @@ std::string PresetBundle::load_vendor_preset( loaded.description = entry.description; loaded.setting_id = entry.setting_id; // Derive the preset setting_id on the fly when a profile ships without one, - // matching scripts/orca_id_tool.py. Only instantiated presets carry an id; + // matching scripts/orca_profile_tool.py. Only instantiated presets carry an id; // non-instantiated base profiles return earlier above. This never // touches the per-user cloud-sync setting_id written into user .info files. if (loaded.setting_id.empty() && entry.instantiation == "true") diff --git a/tests/libslic3r/test_preset_setting_id.cpp b/tests/libslic3r/test_preset_setting_id.cpp index 8347fa7089..5c06335381 100644 --- a/tests/libslic3r/test_preset_setting_id.cpp +++ b/tests/libslic3r/test_preset_setting_id.cpp @@ -5,10 +5,10 @@ using namespace Slic3r; // Golden vectors from the Python reference generate_preset_setting_id (defined in -// scripts/orca_id_tool.py). The C++ generate_preset_setting_id() MUST stay byte-identical +// scripts/orca_profile_tool.py). The C++ generate_preset_setting_id() MUST stay byte-identical // to it, otherwise app-side on-the-fly ids would diverge from the // script-assigned ones in the profiles. Regenerate a vector with: -// python3 -c "import sys; sys.path.insert(0, 'scripts'); from orca_id_tool import generate_preset_setting_id as g; print(g('Afinia','filament','Afinia ABS @Afinia H400'))" +// python3 -c "import sys; sys.path.insert(0, 'scripts'); from orca_profile_tool import generate_preset_setting_id as g; print(g('Afinia','filament','Afinia ABS @Afinia H400'))" TEST_CASE("preset setting_id matches the Python reference", "[Preset][setting_id]") { struct Vec { const char* vendor; const char* type; const char* name; const char* expected; }; const Vec vectors[] = { From a610d2d899727acd44505e75cc43e6dcd6c4a265 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 16 Sep 2026 07:50:27 -0500 Subject: [PATCH 150/162] ci: build Windows with build_win.bat and drop the old scripts (#15721) * ci: build Windows with build_win.bat and drop the old scripts The deps and slicer jobs called build_release_vs.bat; they now call build_win.bat. --deps-dir and --build-dir name the build/build-arm64 directories the cache keys and later steps already use, and the script's own VsDevCmd call replaces the Enter-VsDevShell blocks. With both stages configured each way into the same directory, the deps superbuild is byte-identical and the slicer build files are byte-identical apart from CMakeCache.txt recording how DEP_BUILD_DIR was set. Two changes beyond the script swap: - The compiler is the clang-cl bundled with Visual Studio, the script's default. The old script's bare "clang-cl" resolved to the LLVM on the runner image's PATH, 20.1.8 on x64 and 22.1.8 on arm64; both arches now build with the 22.1.3 VS 18.9 ships. Cached dependencies are only rebuilt when deps/ changes, so they stay on the LLVM they were built with; the arm64 leg already links deps built with Clang 19 into a Clang 22 slicer. - The deps job no longer zips the dependencies afterwards. The zip was never uploaded and was not in the cached path. A failed cmake --build now fails the job. The old script returned 0, so the arm64 failure fixed in #15719 was reported as success and the half-built dependencies were saved to the cache. build_release.bat, build_release_vs.bat and build_release_vs2022.bat are removed; nothing referenced them any more. * ci: run Build all when the Windows build script changes; tests doc builds the deps The push filter of build_all.yml never listed a build script, and CI now depends on build_win.bat, so it and its test suite join the list the pull_request filter already has. tests/AGENTS.md told Windows to run build_win.bat --run-tests, which only implies -s and stops at the dependency check on a clean checkout. The old build_release_vs.bat tests built the dependencies first, so the line now says -ds --run-tests. --- .github/workflows/build_all.yml | 4 +- .github/workflows/build_check_cache.yml | 3 +- .github/workflows/build_deps.yml | 24 +-- .github/workflows/build_orca.yml | 20 +-- build_release.bat | 52 ------- build_release_vs.bat | 190 ------------------------ build_release_vs2022.bat | 80 ---------- tests/AGENTS.md | 2 +- 8 files changed, 16 insertions(+), 359 deletions(-) delete mode 100644 build_release.bat delete mode 100644 build_release_vs.bat delete mode 100644 build_release_vs2022.bat diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index f8d6bb8235..2357b1a5a4 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -15,6 +15,8 @@ on: - 'resources/**' - ".github/workflows/build_*.yml" - ".github/workflows/unit_tests*.yml" + - 'build_win.bat' + - 'scripts/test_build_win.ps1' - 'scripts/build_preset_cache.*' - 'scripts/flatpak/**' - 'scripts/msix/**' @@ -33,8 +35,6 @@ on: - ".github/workflows/build_*.yml" - ".github/workflows/unit_tests*.yml" - 'build_linux.sh' - - 'build_release_vs.bat' - - 'build_release_vs2022.bat' - 'build_win.bat' - 'scripts/test_build_win.ps1' - 'build_release_macos.sh' diff --git a/.github/workflows/build_check_cache.yml b/.github/workflows/build_check_cache.yml index 91ea51ac60..2da05e1d69 100644 --- a/.github/workflows/build_check_cache.yml +++ b/.github/workflows/build_check_cache.yml @@ -41,7 +41,8 @@ jobs: # restores one it cannot use. Linux amd64 passes no arch deliberately, so # 'linux-clang' keeps the cache it already has. cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}-{1}', inputs.arch, inputs.compiler) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }} - # ARM64 builds use the build-arm64 tree (see build_release_vs.bat); x64/other use build. + # The Windows ARM64 deps build in build-arm64, all others under build; + # build_deps.yml and build_orca.yml pass the Windows directory to build_win.bat. dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || (runner.os == 'Windows' && inputs.arch == 'arm64') && '-arm64/OrcaSlicer_dep' || '/OrcaSlicer_dep' }} output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} run: | diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index f7082a8a06..a6d7a17dff 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -138,25 +138,11 @@ jobs: if (-not "${{ vars.SELF_HOSTED }}") { choco install strawberryperl } - $arch = "${{ inputs.arch }}" - # -l selects clang-cl and -x Ninja; together they build the deps with clang. - $clang = "${{ inputs.compiler }}" -eq "clang" - $flags = if ($clang) { "-l", "-x" } else { @() } - if ($clang) { - # OpenSSL builds with nmake, which needs a VC environment. - $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" - $vs = & $vswhere -latest -property installationPath - $devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" } - Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" - Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch" - } - if ($arch -eq "arm64") { - .\build_release_vs.bat deps arm64 @flags - .\build_release_vs.bat pack arm64 - } else { - .\build_release_vs.bat deps @flags - .\build_release_vs.bat pack - } + # cache-path is the install directory inside the deps build directory. + $deps = (Split-Path "${{ inputs.cache-path }}").Replace('\', '/') + # -l compiles with Visual Studio's clang-cl and -x builds with Ninja; --msvc --msbuild is cl under the Visual Studio generator. + $flags = if ("${{ inputs.compiler }}" -eq "clang") { "-l", "-x" } else { "--msvc", "--msbuild" } + .\build_win.bat -d --arch ${{ inputs.arch }} --deps-dir $deps @flags shell: pwsh - name: Build on Mac ${{ inputs.arch }} diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 95ec52a65d..cba8d059f1 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -450,21 +450,13 @@ jobs: # env: # WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\' # WindowsSDKVersion: '10.0.26100.0\' - # "tests" builds the unit tests too; the unit_tests_windows_* jobs run them. + # --tests builds the unit tests too; the unit_tests_windows_* jobs run them. run: | - $arch = "${{ inputs.arch }}" - # -l selects clang-cl and -x Ninja; together they build the slicer with clang. - $clang = "${{ inputs.compiler }}" -eq "clang" - $flags = if ($clang) { "-l", "-x" } else { @() } - if ($clang) { - # Build against the same VC toolchain and SDK as the dependencies. - $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" - $vs = & $vswhere -latest -property installationPath - $devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" } - Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" - Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch" - } - if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 @flags tests } else { .\build_release_vs.bat slicer @flags tests } + # cache-path is the install directory inside the deps build directory. + $deps = (Split-Path "${{ inputs.cache-path }}").Replace('\', '/') + # -l compiles with Visual Studio's clang-cl and -x builds with Ninja; --msvc --msbuild is cl under the Visual Studio generator. + $flags = if ("${{ inputs.compiler }}" -eq "clang") { "-l", "-x" } else { "--msvc", "--msbuild" } + .\build_win.bat -s --tests -i --arch ${{ inputs.arch }} --build-dir $env:BUILD_DIR --deps-dir $deps @flags shell: pwsh - name: Build system preset cache (Windows) diff --git a/build_release.bat b/build_release.bat deleted file mode 100644 index f751c17e5a..0000000000 --- a/build_release.bat +++ /dev/null @@ -1,52 +0,0 @@ -set WP=%CD% - -set debug=OFF -set debuginfo=OFF -if "%1"=="debug" set debug=ON -if "%2"=="debug" set debug=ON -if "%1"=="debuginfo" set debuginfo=ON -if "%2"=="debuginfo" set debuginfo=ON -if "%debug%"=="ON" ( - set build_type=Debug - set build_dir=build-dbg -) else ( - if "%debuginfo%"=="ON" ( - set build_type=RelWithDebInfo - set build_dir=build-dbginfo - ) else ( - set build_type=Release - set build_dir=build - ) -) -echo build type set to %build_type% - -cd deps -mkdir %build_dir% -cd %build_dir% -set DEPS=%CD%/OrcaSlicer_dep -set "SIG_FLAG=" -if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%" -if "%1"=="slicer" ( - GOTO :slicer -) -echo "building deps.." - -echo cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% -cmake ../ -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% -cmake --build . --config %build_type% --target deps -- -m - -if "%1"=="deps" exit /b 0 - -:slicer -echo "building Orca Slicer..." -cd %WP% -mkdir %build_dir% -cd %build_dir% - -echo cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% -cmake .. -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=%build_type% %SIG_FLAG% -cmake --build . --config %build_type% --target ALL_BUILD -- -m -cd .. -call scripts/run_gettext.bat -cd %build_dir% -cmake --build . --target install --config %build_type% diff --git a/build_release_vs.bat b/build_release_vs.bat deleted file mode 100644 index 3842f1d198..0000000000 --- a/build_release_vs.bat +++ /dev/null @@ -1,190 +0,0 @@ -@REM OrcaSlicer build script for Windows with VS auto-detect -@echo off -set WP=%CD% -set _START_TIME=%TIME% - -@REM Default target architecture to the host CPU arch; override by passing -@REM "x64" or "arm64" as an argument. PROCESSOR_ARCHITEW6432 covers a 32-bit -@REM shell running on a 64-bit OS, where PROCESSOR_ARCHITECTURE reads "x86". -set arch=x64 -if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set arch=ARM64 -if /I "%PROCESSOR_ARCHITEW6432%"=="ARM64" set arch=ARM64 -if /I "%1"=="arm64" set arch=ARM64 -if /I "%2"=="arm64" set arch=ARM64 -if /I "%1"=="x64" set arch=x64 -if /I "%2"=="x64" set arch=x64 - -@REM Check for Ninja Multi-Config option (-x) -set USE_NINJA=0 -for %%a in (%*) do ( - if "%%a"=="-x" set USE_NINJA=1 -) - -@REM Check for clang-cl option (-l). Combined with -x it also builds the deps with -@REM clang-cl; on the Visual Studio generator it applies to the slicer only, because -@REM the dependency sub-builds have no toolset to inherit and stay on MSVC. -set CLANG_ARG= -set TOOLSET_ARG= -for %%a in (%*) do ( - if "%%a"=="-l" ( - set CLANG_ARG=-DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl - set TOOLSET_ARG=-T ClangCL - ) -) - -@REM Check for unit-tests option ("tests") -set BUILD_TESTS=OFF -for %%a in (%*) do ( - if /I "%%a"=="tests" set BUILD_TESTS=ON -) - -if "%USE_NINJA%"=="1" ( - echo Using Ninja Multi-Config generator - set CMAKE_GENERATOR="Ninja Multi-Config" - set VS_VERSION=Ninja - goto :generator_ready -) - -@REM Detect Visual Studio version using msbuild -echo Detecting Visual Studio version using msbuild... - -@REM Try to get MSBuild version - the output format varies by VS version -set VS_MAJOR= -for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do ( - for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a - set MSBUILD_OUTPUT=%%i - goto :version_found -) - -@REM Alternative method for newer MSBuild versions -if "%VS_MAJOR%"=="" ( - for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do ( - for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a - set MSBUILD_OUTPUT=%%i - goto :version_found - ) -) - -:version_found -echo MSBuild version detected: %MSBUILD_OUTPUT% -echo Major version: %VS_MAJOR% - -if "%VS_MAJOR%"=="" ( - echo Error: Could not determine Visual Studio version from msbuild - echo Please ensure Visual Studio and MSBuild are properly installed - exit /b 1 -) - -if "%VS_MAJOR%"=="16" ( - set VS_VERSION=2019 - set CMAKE_GENERATOR="Visual Studio 16 2019" -) else if "%VS_MAJOR%"=="17" ( - set VS_VERSION=2022 - set CMAKE_GENERATOR="Visual Studio 17 2022" -) else if "%VS_MAJOR%"=="18" ( - set VS_VERSION=2026 - set CMAKE_GENERATOR="Visual Studio 18 2026" -) else ( - echo Error: Unsupported Visual Studio version: %VS_MAJOR% - echo Supported versions: VS2019 (16.8+^), VS2022 (17.x^), VS2026 (18.x^) - exit /b 1 -) - -echo Detected Visual Studio %VS_VERSION% (version %VS_MAJOR%) -echo Using CMake generator: %CMAKE_GENERATOR% - -:generator_ready - -@REM Pack deps -if "%1"=="pack" ( - setlocal ENABLEDELAYEDEXPANSION - cd %WP%/deps/build - if "%arch%"=="ARM64" cd %WP%/deps/build-arm64 - for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a - echo packing deps: OrcaSlicer_dep_win-!arch!_!build_date!_vs!VS_VERSION!.zip - - %WP%/tools/7z.exe a OrcaSlicer_dep_win-!arch!_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep - goto :done -) - -set debug=OFF -set debuginfo=OFF -if "%1"=="debug" set debug=ON -if "%2"=="debug" set debug=ON -if "%1"=="debuginfo" set debuginfo=ON -if "%2"=="debuginfo" set debuginfo=ON -if "%debug%"=="ON" ( - set build_type=Debug - set build_dir=build-dbg -) else ( - if "%debuginfo%"=="ON" ( - set build_type=RelWithDebInfo - set build_dir=build-dbginfo - ) else ( - set build_type=Release - set build_dir=build - ) -) -if "%arch%"=="ARM64" set build_dir=%build_dir%-arm64 -echo build type set to %build_type%, arch=%arch% - -setlocal DISABLEDELAYEDEXPANSION -cd deps -mkdir %build_dir% -cd %build_dir% -set "SIG_FLAG=" -if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%" - -if "%1"=="slicer" ( - GOTO :slicer -) -echo "building deps.." -if defined CLANG_ARG if "%USE_NINJA%"=="0" echo Note: -l needs -x for the dependencies; building them with MSVC. - -echo on -REM Set minimum CMake policy to avoid <3.5 errors -set CMAKE_POLICY_VERSION_MINIMUM=3.5 -if "%USE_NINJA%"=="1" ( - cmake ../ -G %CMAKE_GENERATOR% %CLANG_ARG% -DCMAKE_BUILD_TYPE=%build_type% - cmake --build . --config %build_type% --target deps -) else ( - cmake ../ -G %CMAKE_GENERATOR% -A %arch% -DCMAKE_BUILD_TYPE=%build_type% - cmake --build . --config %build_type% --target deps -- -m -) -@echo off - -if "%1"=="deps" goto :done - -:slicer -echo "building Orca Slicer..." -cd %WP% -mkdir %build_dir% -cd %build_dir% - -echo on -set CMAKE_POLICY_VERSION_MINIMUM=3.5 -if "%USE_NINJA%"=="1" ( - cmake .. -G %CMAKE_GENERATOR% %CLANG_ARG% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type% - cmake --build . --config %build_type% --target all -) else ( - cmake .. -G %CMAKE_GENERATOR% -A %arch% %TOOLSET_ARG% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type% - cmake --build . --config %build_type% --target ALL_BUILD -- -m -) -@echo off -cd .. -call scripts/run_gettext.bat -cd %build_dir% -cmake --build . --target install --config %build_type% - -:done -@echo off -for /f "tokens=1-3 delims=:.," %%a in ("%_START_TIME: =0%") do set /a "_start_s=%%a*3600+%%b*60+%%c" -for /f "tokens=1-3 delims=:.," %%a in ("%TIME: =0%") do set /a "_end_s=%%a*3600+%%b*60+%%c" -set /a "_elapsed=_end_s - _start_s" -if %_elapsed% lss 0 set /a "_elapsed+=86400" -set /a "_hours=_elapsed / 3600" -set /a "_remainder=_elapsed - _hours * 3600" -set /a "_mins=_remainder / 60" -set /a "_secs=_remainder - _mins * 60" -echo. -echo Build completed in %_hours%h %_mins%m %_secs%s diff --git a/build_release_vs2022.bat b/build_release_vs2022.bat deleted file mode 100644 index 32f39745e3..0000000000 --- a/build_release_vs2022.bat +++ /dev/null @@ -1,80 +0,0 @@ -@REM OrcaSlicer build script for Windows -@echo off -set WP=%CD% - -@REM Pack deps -if "%1"=="pack" ( - setlocal ENABLEDELAYEDEXPANSION - cd %WP%/deps/build - for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a - echo packing deps: OrcaSlicer_dep_win64_!build_date!_vs2022.zip - - %WP%/tools/7z.exe a OrcaSlicer_dep_win64_!build_date!_vs2022.zip OrcaSlicer_dep - exit /b 0 -) - -set debug=OFF -set debuginfo=OFF -@REM Default target architecture to the host CPU arch; override with x64/arm64 arg. -set arch=x64 -if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set arch=ARM64 -if /I "%PROCESSOR_ARCHITEW6432%"=="ARM64" set arch=ARM64 -if "%1"=="debug" set debug=ON -if "%2"=="debug" set debug=ON -if "%1"=="debuginfo" set debuginfo=ON -if "%2"=="debuginfo" set debuginfo=ON -if /I "%1"=="arm64" set arch=ARM64 -if /I "%2"=="arm64" set arch=ARM64 -if /I "%1"=="x64" set arch=x64 -if /I "%2"=="x64" set arch=x64 -if "%debug%"=="ON" ( - set build_type=Debug - set build_dir=build-dbg -) else ( - if "%debuginfo%"=="ON" ( - set build_type=RelWithDebInfo - set build_dir=build-dbginfo - ) else ( - set build_type=Release - set build_dir=build - ) -) -if "%arch%"=="ARM64" set build_dir=%build_dir%-arm64 -echo build type set to %build_type%, arch=%arch% - -setlocal DISABLEDELAYEDEXPANSION -cd deps -mkdir %build_dir% -cd %build_dir% -set "SIG_FLAG=" -if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%" - -if "%1"=="slicer" ( - GOTO :slicer -) -echo "building deps.." - -echo on -REM Set minimum CMake policy to avoid <3.5 errors -set CMAKE_POLICY_VERSION_MINIMUM=3.5 -cmake ../ -G "Visual Studio 17 2022" -A %arch% -DCMAKE_BUILD_TYPE=%build_type% -cmake --build . --config %build_type% --target deps -- -m -@echo off - -if "%1"=="deps" exit /b 0 - -:slicer -echo "building Orca Slicer..." -cd %WP% -mkdir %build_dir% -cd %build_dir% - -echo on -set CMAKE_POLICY_VERSION_MINIMUM=3.5 -cmake .. -G "Visual Studio 17 2022" -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type% -cmake --build . --config %build_type% --target ALL_BUILD -- -m -@echo off -cd .. -call scripts/run_gettext.bat -cd %build_dir% -cmake --build . --target install --config %build_type% diff --git a/tests/AGENTS.md b/tests/AGENTS.md index 50ea40cafc..e6f3bf864c 100644 --- a/tests/AGENTS.md +++ b/tests/AGENTS.md @@ -16,7 +16,7 @@ Rules for writing tests under `tests/`. [CATCH2.md](CATCH2.md) is the Catch2 ref Tests are off by default, so the build has to be told to include them. -- Windows: `build_release_vs.bat tests`, then `ctest --test-dir build/tests -C Release` +- Windows: `build_win.bat -ds --run-tests`, which builds the dependencies and the tests and runs them (`-l -x` for the clang-cl and Ninja build CI uses) - macOS: `./build_release_macos.sh -s -a arm64 -T`, which builds and runs them - Linux: `./build_linux.sh -t`, then `ctest --test-dir build/tests -C Release` From 72774e5398fb2d5a228d7c61b78e44e954c5df69 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Wed, 16 Sep 2026 12:19:03 -0300 Subject: [PATCH 151/162] Toolchange Cyclic Order (#14868) * Toolchange Cyclic Order * Apply cyclic order to first layer * Unit test * Copilot fixes --------- Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com> --- src/libslic3r/GCode/ToolOrdering.cpp | 65 +++++++++++++++++-- src/libslic3r/GCode/ToolOrdering.hpp | 5 ++ src/libslic3r/Preset.cpp | 2 + src/libslic3r/Print.cpp | 2 + src/libslic3r/PrintConfig.cpp | 28 ++++++++ src/libslic3r/PrintConfig.hpp | 2 + src/slic3r/GUI/ConfigManipulation.cpp | 4 ++ src/slic3r/GUI/Tab.cpp | 2 + .../test_toolordering_nozzle_group.cpp | 38 +++++++++++ 9 files changed, 143 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index e9be0171e4..64ea4d52b3 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -2735,6 +2735,28 @@ void ToolOrdering::enforce_mixed_component_order() } } +// Declared in ToolOrdering.hpp (exposed for unit testing). +std::vector parse_cyclic_order(const std::string& str, unsigned int number_of_extruders) +{ + std::vector order; + for (const std::string& token : split_string(str, ',')) { + try { + size_t pos = 0; + int filament = std::stoi(token, &pos); // stoi skips leading whitespace by itself + // stoi stops at the first non-digit, so "2x" would parse as 2. Require the whole token to be + // consumed (bar trailing whitespace) to drop it like any other garbage. + if (token.find_first_not_of(" \t\r\n", pos) != std::string::npos) + continue; + if (filament >= 1 && (unsigned int)filament <= number_of_extruders + && std::find(order.begin(), order.end(), (unsigned int)(filament - 1)) == order.end()) + order.emplace_back((unsigned int)(filament - 1)); + } catch (const std::exception&) { + // Not a number, ignore it. + } + } + return order; +} + void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first_layer) { const PrintConfig* print_config = m_print_config_ptr; @@ -2832,11 +2854,41 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first const bool use_cyclic_ordering = (print_config->toolchange_ordering == ToolChangeOrderingType::Cyclic); + // By default the first layer keeps its adhesion-optimized order (and any custom first layer + // sequence); the cyclic sequence is only forced onto it when the user opts in. + const bool cyclic_first_layer = use_cyclic_ordering && print_config->toolchange_cyclic_first_layer.value; + + // Optional user defined cyclic sequence, given as 1-based filament numbers ("3,2,1,4"). Filaments + // missing from it keep their ascending order after the listed ones, so a partial or bogus entry + // still yields the default cyclic order. + const std::vector cyclic_order = + use_cyclic_ordering ? parse_cyclic_order(print_config->toolchange_cyclic_order.value, number_of_extruders) + : std::vector(); + + // Reorder a layer's filaments (0-based) for cyclic ordering: ascending by default, or following the + // user defined sequence when one was given. Filaments absent from the sequence keep ascending order + // after the listed ones. + auto apply_cyclic_order = [&cyclic_order](std::vector& filaments) { + std::sort(filaments.begin(), filaments.end()); + if (!cyclic_order.empty()) + std::stable_sort(filaments.begin(), filaments.end(), [&cyclic_order](unsigned int lhs, unsigned int rhs) { + auto rank = [&cyclic_order](unsigned int filament) { + return size_t(std::find(cyclic_order.begin(), cyclic_order.end(), filament) - cyclic_order.begin()); + }; + return rank(lhs) < rank(rhs); + }); + }; + // other_layers_seq: the layer_idx and extruder_idx are base on 1 - auto get_custom_seq = [&other_layers_seqs, &reorder_first_layer, &first_layer_filaments, &layer_filaments, use_cyclic_ordering](int layer_idx, std::vector& out_seq) -> bool { + auto get_custom_seq = [&other_layers_seqs, &reorder_first_layer, &first_layer_filaments, &layer_filaments, use_cyclic_ordering, cyclic_first_layer, &apply_cyclic_order](int layer_idx, std::vector& out_seq) -> bool { if (!reorder_first_layer && layer_idx == 0) { - out_seq.resize(first_layer_filaments.size()); - std::transform(first_layer_filaments.begin(), first_layer_filaments.end(), out_seq.begin(), [](auto item) {return item + 1; }); + // The first layer tool order is already decided (adhesion-optimized, plus any custom first + // layer sequence). Only override it with the cyclic sequence when the user opted in. + std::vector ordered = first_layer_filaments; + if (cyclic_first_layer) + apply_cyclic_order(ordered); + out_seq.resize(ordered.size()); + std::transform(ordered.begin(), ordered.end(), out_seq.begin(), [](auto item) {return int(item) + 1; }); return true; } for (size_t idx = other_layers_seqs.size() - 1; idx != size_t(-1); --idx) { @@ -2847,9 +2899,12 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first } } - if (use_cyclic_ordering && layer_idx >= 0 && size_t(layer_idx) < layer_filaments.size()) { + // Skip the first layer here (layer_idx == 0 only reaches this point on the reorder_first_layer + // path) unless the user asked for cyclic order on it, so it keeps the default flush ordering. + if (use_cyclic_ordering && layer_idx >= 0 && (layer_idx != 0 || cyclic_first_layer) + && size_t(layer_idx) < layer_filaments.size()) { std::vector ordered = layer_filaments[size_t(layer_idx)]; - std::sort(ordered.begin(), ordered.end()); + apply_cyclic_order(ordered); out_seq.resize(ordered.size()); std::transform(ordered.begin(), ordered.end(), out_seq.begin(), [](auto item) { return int(item) + 1; }); return true; diff --git a/src/libslic3r/GCode/ToolOrdering.hpp b/src/libslic3r/GCode/ToolOrdering.hpp index 4dc08c0e8b..1b8ce190d7 100644 --- a/src/libslic3r/GCode/ToolOrdering.hpp +++ b/src/libslic3r/GCode/ToolOrdering.hpp @@ -417,6 +417,11 @@ private: int most_used_extruder; }; +// Parse the user defined cyclic toolchange sequence ("3,2 , 1 , 4") into 0-based filament indices. +// Out-of-range entries, duplicates and non-numeric tokens are dropped, so a partially valid string +// still orders the filaments it does name. Exposed for unit testing. +std::vector parse_cyclic_order(const std::string& str, unsigned int number_of_extruders); + } // namespace SLic3r #endif /* slic3r_ToolOrdering_hpp_ */ diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 2358680fbc..deae560d7c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1320,6 +1320,8 @@ static std::vector s_Preset_print_options{ "wipe_tower_extra_flow", "single_extruder_multi_material_priming", "toolchange_ordering", + "toolchange_cyclic_order", + "toolchange_cyclic_first_layer", "wipe_tower_rotation_angle", "tree_support_branch_distance_organic", "tree_support_branch_diameter_organic", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 9c4edabfdb..13fe7758ff 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -360,6 +360,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "other_layers_print_sequence" || opt_key == "other_layers_print_sequence_nums" || opt_key == "toolchange_ordering" + || opt_key == "toolchange_cyclic_order" + || opt_key == "toolchange_cyclic_first_layer" || opt_key == "extruder_ams_count" || opt_key == "extruder_nozzle_stats" || opt_key == "filament_map_mode" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 77aaeb694a..65f43b3ee5 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -6700,6 +6700,34 @@ void PrintConfigDef::init_fff_params() def->enum_labels.emplace_back(L("Cyclic")); def->set_default_value(new ConfigOptionEnum(ToolChangeOrderingType::Default)); + def = this->add("toolchange_cyclic_order", coString); + def->label = L("Cyclic order"); + def->category = L("Advanced"); + def->tooltip = L( + "Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" + "Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" + "Leave empty to cycle through the filaments in ascending order." + ); + def->mode = comExpert; + def->set_default_value(new ConfigOptionString("")); + + def = this->add("toolchange_cyclic_first_layer", coBool); + def->label = L("Apply cyclic order to first layer"); + def->category = L("Advanced"); + def->tooltip = L( + "Applies the cyclic toolchange order to the first layer as well.\n" + "By default this is disabled, because the first layer is instead ordered for the best bed " + "adhesion: filaments that print small, fragile first-layer features are printed last, so the " + "following tool changes and travel moves are less likely to knock those weakly anchored parts " + "loose. This first-layer order also honors a custom first layer filament sequence when one is set. " + "The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply " + "to the first layer, which is printed slowly and hot for adhesion.\n" + "Enable this only if you need the exact same tool sequence on every layer, including the first, at " + "the cost of that adhesion optimization." + ); + def->mode = comExpert; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("slice_closing_radius", coFloat); def->label = L("Slice gap closing radius"); def->category = L("Quality"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 6beaeed104..3373fbece7 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1627,6 +1627,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionBool, manual_filament_change)) ((ConfigOptionBool, single_extruder_multi_material_priming)) ((ConfigOptionEnum, toolchange_ordering)) + ((ConfigOptionString, toolchange_cyclic_order)) + ((ConfigOptionBool, toolchange_cyclic_first_layer)) ((ConfigOptionBool, wipe_tower_no_sparse_layers)) ((ConfigOptionString, change_filament_gcode)) ((ConfigOptionString, change_extrusion_role_gcode)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index ba91ffb7c2..f0f0adfa38 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -1055,6 +1055,10 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in toggle_line("single_extruder_multi_material_priming", !bSEMM && have_prime_tower && supports_wipe_tower_2); + bool use_cyclic_ordering = config->opt_enum("toolchange_ordering") == ToolChangeOrderingType::Cyclic; + toggle_line("toolchange_cyclic_order", use_cyclic_ordering); + toggle_line("toolchange_cyclic_first_layer", use_cyclic_ordering); + toggle_line("prime_volume",have_prime_tower && (!purge_in_primetower || !bSEMM)); for (auto el : {"flush_into_infill", "flush_into_support", "flush_into_objects"}) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index c0f78ee9c5..6279941e13 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3026,6 +3026,8 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Advanced"), L"advanced"); optgroup->append_single_option_line("interlocking_beam", "multimaterial_settings_advanced#interlocking-beam"); optgroup->append_single_option_line("toolchange_ordering", "multimaterial_settings_advanced#toolchange-ordering"); + optgroup->append_single_option_line("toolchange_cyclic_order", "multimaterial_settings_advanced#toolchange-order"); + optgroup->append_single_option_line("toolchange_cyclic_first_layer", "multimaterial_settings_advanced#toolchange-order"); optgroup->append_single_option_line("interface_shells", "multimaterial_settings_advanced#interface-shells"); optgroup->append_single_option_line("mmu_segmented_region_max_width", "multimaterial_settings_advanced#maximum-width-of-segmented-region"); optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth", "multimaterial_settings_advanced#interlocking-depth-of-segmented-region"); diff --git a/tests/libslic3r/test_toolordering_nozzle_group.cpp b/tests/libslic3r/test_toolordering_nozzle_group.cpp index d01ccf5856..d9a5d70406 100644 --- a/tests/libslic3r/test_toolordering_nozzle_group.cpp +++ b/tests/libslic3r/test_toolordering_nozzle_group.cpp @@ -1025,3 +1025,41 @@ TEST_CASE("Selector slicing keeps the result valid across re-apply", "[Print][H2 REQUIRE(status != PrintBase::APPLY_STATUS_INVALIDATED); REQUIRE(print.is_step_done(psSlicingFinished)); } + +TEST_CASE("parse_cyclic_order parses user cyclic toolchange sequences", "[ToolOrdering][Cyclic]") +{ + // Filament numbers are 1-based in the UI; the parser returns 0-based indices. + SECTION("well-formed sequence") { + REQUIRE(parse_cyclic_order("3,2,1,4", 4) == std::vector({2, 1, 0, 3})); + } + + SECTION("surrounding whitespace is tolerated") { + REQUIRE(parse_cyclic_order(" 3 , 2 ,1, 4 ", 4) == std::vector({2, 1, 0, 3})); + } + + SECTION("out-of-range and non-positive entries are dropped") { + // 0 is below the 1-based range, 5 is above it for a 4-filament setup, -1 is invalid. + REQUIRE(parse_cyclic_order("0,5,-1,2", 4) == std::vector({1})); + } + + SECTION("duplicates keep only the first occurrence") { + REQUIRE(parse_cyclic_order("2,2,1,2", 4) == std::vector({1, 0})); + } + + SECTION("garbage tokens are ignored") { + REQUIRE(parse_cyclic_order("3,abc,,2,x1", 4) == std::vector({2, 1})); + } + + SECTION("tokens that only start with a number are ignored") { + // "2x" must be dropped rather than parsed as filament 2. + REQUIRE(parse_cyclic_order("3,2x,1", 4) == std::vector({2, 0})); + } + + SECTION("empty string yields an empty order") { + REQUIRE(parse_cyclic_order("", 4).empty()); + } + + SECTION("a partial sequence only names the filaments it lists") { + REQUIRE(parse_cyclic_order("3,1", 4) == std::vector({2, 0})); + } +} From 8effa27f4abd8bb943bc97a925489c6bd590784b Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 16 Sep 2026 12:28:50 -0500 Subject: [PATCH 152/162] build: build the dependencies with clang-cl under the Visual Studio generator (#15673) The deps superbuild passes the Visual Studio generator and platform to every sub-build but not the toolset, so build_win.bat -d -l without -x compiled every dependency with cl even though the superbuild had been configured with -T ClangCL; CMake replaces the forwarded CMAKE__COMPILER with whatever the toolset ran. The recipes that adapt to clang-cl then disagreed with what had been built, and wxInspector told FindwxWidgets to look in lib/clang_x64_lib while the cl-built wxWidgets had installed into lib/vc_x64_lib: Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES wxWidgets_INCLUDE_DIRS core base aui propgrid) Forward CMAKE_GENERATOR_TOOLSET as well, so the dependencies compile with clang-cl under MSBuild the way they already do under Ninja. Four of them need more than that: - OpenSSL always builds with cl, and MSBuild runs its nmake steps in the project's toolset environment, where ClangCL puts clang's include directory first and cl trips over clang's stdint.h. The project gets the default toolset. - Boost.Container's dlmalloc needs -Wno-incompatible-pointer-types under clang. boost_container links as C++, and the Visual Studio generator writes only the link language's flags into the project, so its C file never saw CMAKE_C_FLAGS. Under that generator the option goes through the C++ flags as well, with the defaults kept. - Draco's tools and NLopt's testopt compile sources their own static library also contains. MSBuild lists libraries before objects and lld-link resolves archive members as each input arrives, so the library's copy is pulled in before the executable's own object and the link fails on duplicate symbols; link.exe defers the search and Ninja lists the objects first. Nothing uses those executables, so they get /FORCE:MULTIPLE there. The Ninja path is unchanged: the generated configure commands of all 29 dependencies are identical before and after. OCCT's arm64 override to cl still applies under Ninja but not under the Visual Studio generator, where the toolset wins; that combination never built and is left for a follow-up. --- deps/Boost/Boost.cmake | 8 ++++++++ deps/CMakeLists.txt | 5 +++++ deps/Draco/Draco.cmake | 3 +++ deps/NLopt/NLopt.cmake | 2 ++ deps/OpenSSL/OpenSSL.cmake | 6 ++++++ deps/deps-windows.cmake | 9 +++++++++ 6 files changed, 33 insertions(+) diff --git a/deps/Boost/Boost.cmake b/deps/Boost/Boost.cmake index 08b62b9fb8..1526928094 100644 --- a/deps/Boost/Boost.cmake +++ b/deps/Boost/Boost.cmake @@ -27,8 +27,15 @@ endif () # Boost.Container's bundled dlmalloc passes int* where the Win32 Interlocked API # takes volatile long*; cl compiles that with a warning, clang errors out. set(_boost_c_flags_line "") +set(_boost_cxx_flags_line "") if (MSVC AND CMAKE_C_COMPILER_ID STREQUAL "Clang") set(_boost_c_flags_line "-DCMAKE_C_FLAGS:STRING=-Wno-incompatible-pointer-types") + # The Visual Studio generator applies only the link language's flags to a + # project, and boost_container links as C++, so its C file never sees + # CMAKE_C_FLAGS. The C++ flags reach every file; keep CMake's defaults. + if (CMAKE_GENERATOR MATCHES "Visual Studio") + set(_boost_cxx_flags_line "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} -Wno-incompatible-pointer-types") + endif () endif () orcaslicer_add_cmake_project(Boost @@ -46,6 +53,7 @@ orcaslicer_add_cmake_project(Boost "${_context_arch_line}" "${_context_impl_line}" "${_boost_c_flags_line}" + "${_boost_cxx_flags_line}" ) set(DEP_Boost_DEPENDS ZLIB) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index ed3af70d03..4b1daf5aa8 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -184,6 +184,11 @@ function(orcaslicer_add_cmake_project projectname) if (_dep_msvc_gen) set(_gen CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_GENERATOR_PLATFORM "${DEP_PLATFORM}") + # The toolset picks the compiler here, not the CMAKE__COMPILER + # forwarded below, so without it a clang-cl superbuild builds with cl. + if (CMAKE_GENERATOR_TOOLSET) + list(APPEND _gen CMAKE_GENERATOR_TOOLSET "${CMAKE_GENERATOR_TOOLSET}") + endif () else() set(_gen "") endif() diff --git a/deps/Draco/Draco.cmake b/deps/Draco/Draco.cmake index 02ac7efe13..77f73684f6 100644 --- a/deps/Draco/Draco.cmake +++ b/deps/Draco/Draco.cmake @@ -7,4 +7,7 @@ orcaslicer_add_cmake_project(Draco ${_options} URL https://github.com/google/draco/archive/refs/tags/1.5.7.zip URL_HASH SHA256=27b72ba2d5ff3d0a9814ad40d4cb88f8dc89a35491c0866d952473f8f9416b77 + CMAKE_ARGS + # The encoder and decoder tools duplicate draco.lib; see deps-windows.cmake. + "${DEP_LLD_FORCE_MULTIPLE}" ) \ No newline at end of file diff --git a/deps/NLopt/NLopt.cmake b/deps/NLopt/NLopt.cmake index fdd6341f2b..07afc95a48 100644 --- a/deps/NLopt/NLopt.cmake +++ b/deps/NLopt/NLopt.cmake @@ -8,6 +8,8 @@ orcaslicer_add_cmake_project(NLopt -DNLOPT_GUILE:BOOL=OFF -DNLOPT_SWIG:BOOL=OFF -DNLOPT_TESTS:BOOL=OFF + # testopt is built regardless of NLOPT_TESTS; see deps-windows.cmake. + "${DEP_LLD_FORCE_MULTIPLE}" ) if (MSVC) diff --git a/deps/OpenSSL/OpenSSL.cmake b/deps/OpenSSL/OpenSSL.cmake index 2fb4b51757..4a2d49572b 100644 --- a/deps/OpenSSL/OpenSSL.cmake +++ b/deps/OpenSSL/OpenSSL.cmake @@ -80,6 +80,12 @@ ExternalProject_Add(dep_OpenSSL INSTALL_COMMAND ${_install_cmd} ) +if (CMAKE_GENERATOR MATCHES "Visual Studio") + # OpenSSL builds with cl, but MSBuild runs nmake in this project's toolset + # environment, and ClangCL's puts clang's headers first. Use the default. + set_target_properties(dep_OpenSSL PROPERTIES VS_PLATFORM_TOOLSET "$(DefaultPlatformToolset)") +endif () + ExternalProject_Add_Step(dep_OpenSSL install_cmake_files DEPENDEES install diff --git a/deps/deps-windows.cmake b/deps/deps-windows.cmake index 6e73f7d4b5..4305489758 100644 --- a/deps/deps-windows.cmake +++ b/deps/deps-windows.cmake @@ -42,6 +42,15 @@ else () message(FATAL_ERROR "Unsupported OS architecture: ${DEPS_ARCH}") endif () +# Draco's tools and NLopt's testopt compile sources that are also in their +# static library. MSBuild passes the library before the objects and lld-link +# resolves as it goes, so the library's copy wins and the object then reads as +# a duplicate. Nothing uses those executables, so let lld keep the first one. +set(DEP_LLD_FORCE_MULTIPLE "") +if (CMAKE_GENERATOR MATCHES "Visual Studio" AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(DEP_LLD_FORCE_MULTIPLE "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} /FORCE:MULTIPLE") +endif () + if (${DEP_DEBUG}) set(DEP_BOOST_DEBUG "debug") else () From 6b0e190e645952283f232d8660380a7cf1dd9628 Mon Sep 17 00:00:00 2001 From: Kris Austin Date: Wed, 16 Sep 2026 16:30:18 -0500 Subject: [PATCH 153/162] ci: key the Windows compiler cache on the MSVC toolset version (#15729) --- .github/workflows/build_orca.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index cba8d059f1..e584fa03dd 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -85,6 +85,15 @@ jobs: shell: bash run: | leg="${{ runner.os }}-${{ inputs.arch || 'amd64' }}${{ runner.os == 'Windows' && format('-{0}', inputs.compiler) || '' }}" + # clang-cl refuses a precompiled header from another cl.exe build and ccache + # does not hash that build, so each one gets its own cache. The build number + # is read from cl.exe itself; the toolset directory keeps its name across patches. + if [ "${{ runner.os }}" = Windows ]; then + vswhere='/c/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe' + toolset=$(tr -d '\r\n' < "$("$vswhere" -latest -products '*' -find 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt' | tr -d '\r')") + cl=$("$vswhere" -latest -products '*' -find 'VC\Tools\MSVC\'"$toolset"'\**\cl.exe' | tr -d '\r' | head -1) + leg="$leg-vc$("$cl" 2>&1 | grep -o -E 'Version [0-9.]+' | cut -d' ' -f2)" + fi echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV" echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV" From ca668a3bc9533dc9987f6c0dd99f8769eccf05bc Mon Sep 17 00:00:00 2001 From: packerlschupfer <83344883+packerlschupfer@users.noreply.github.com> Date: Thu, 17 Sep 2026 06:01:49 +0200 Subject: [PATCH 154/162] =?UTF-8?q?CLI:=20--inspect-paint=20=E2=80=94=20du?= =?UTF-8?q?mp=20per-facet=20paint=20state=20as=20JSON=20(#14608)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CLI: --inspect-paint — dump per-facet paint state as JSON Reads the per-facet enforcer/blocker/extruder/fuzzy-skin state stored on every ModelVolume (supported_facets / seam_facets / mmu_segmentation_facets / fuzzy_skin_facets) and emits a structured JSON summary to stdout. Machine-readable alternative to opening the paint gizmos. Per (object, volume, layer, state): facet count, surface area in mm², and mesh-local bounding box. Empty layers collapse to {"empty": true}. Summary at the top level rolls up totals. One correctness detail worth calling out: FacetsAnnotation:: get_facets_strict returns an indexed_triangle_set whose `vertices` array is the whole source mesh — only `indices` are filtered to the painted triangles. A naive bounding_box(its) would report the whole mesh's bbox even when only a few facets are painted. The helper its_referenced_bbox() walks only the vertices actually indexed by the painted triangles, so `bbox` correctly localizes the painted region. Rationale: every paint-driven workflow — GUI-painted .3mf verified in CI, AI agents planning support enforcers, MMU color layout checks — needs to know what's already painted on a model. Today that's a GUI-only read. --inspect-paint closes that loop for scripted callers. New file src/slic3r/Utils/PaintCLI.{hpp,cpp} (~215 lines). Depends only on Model, TriangleMesh, TriangleSelector, FacetsAnnotation, and nlohmann::json — all already in tree. No new dependencies, no signature changes, no behavior change when the flag is absent. Registered as an action (parallel to --info) so it satisfies the "needs an action" check and bypasses the GUI fallback; control falls through the normal post-action path to a clean exit 0. Verification: unpainted STL: every layer {"empty": true}, summary zero GUI-painted .3mf: enforcer count / area / bbox match painter clean JSON: parseable via jq * CLI --inspect-paint: exit after printing, reject conflicting actions - Finish like the end of CLI::run once the JSON is written, as the tooltip says. The callback manager is Linux-only, so its use is guarded. - Reject actions that would otherwise be skipped without notice (--slice, --export-3mf, ...) before loading. Load-time options such as --uptodate are still accepted. - Replace invalid UTF-8 in object names and paths instead of throwing. - Report every input file as sources; inputs are merged into one model before actions run. * CLI --inspect-paint: reject a run without input Without an input file or --load-assemble-list there is nothing to inspect, and the run printed nothing and exited 0. Reject it up front with CLI_INVALID_PARAMS, next to the other invalid-parameter checks. --- src/OrcaSlicer.cpp | 48 ++++++++ src/libslic3r/PrintConfig.cpp | 13 +++ src/slic3r/CMakeLists.txt | 2 + src/slic3r/Utils/PaintCLI.cpp | 204 ++++++++++++++++++++++++++++++++++ src/slic3r/Utils/PaintCLI.hpp | 31 ++++++ 5 files changed, 298 insertions(+) create mode 100644 src/slic3r/Utils/PaintCLI.cpp create mode 100644 src/slic3r/Utils/PaintCLI.hpp diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 29c81caa41..0c9bd0b1ee 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -87,6 +87,7 @@ using namespace nlohmann; #include "dev-utils/BaseException.h" #endif #include "slic3r/Utils/MeshInspect.hpp" +#include "slic3r/Utils/PaintCLI.hpp" #include "slic3r/GUI/PartPlate.hpp" #include "slic3r/GUI/BitmapCache.hpp" #include "slic3r/GUI/OpenGLManager.hpp" @@ -1443,6 +1444,29 @@ int CLI::run(int argc, char **argv) } } + // --inspect-paint prints its JSON and exits, so any action that does work of its + // own (slicing, exporting) would be skipped without notice. Reject those up front; + // only options that merely tune how the input is loaded may come along. + if (std::find(m_actions.begin(), m_actions.end(), "inspect_paint") != m_actions.end()) { + static const std::set inspect_compatible = { "inspect_paint", "uptodate", "load_defaultfila", "min_save", + "mtcpp", "mstpp", "no_check", "normative_check", "pipe" }; + for (const std::string &action : m_actions) { + if (inspect_compatible.count(action) == 0) { + std::string flag = action; + std::replace(flag.begin(), flag.end(), '_', '-'); + boost::nowide::cerr << "--inspect-paint cannot be combined with --" << flag << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } + // Without input there is nothing to inspect; fail rather than print nothing and exit 0. + if (m_input_files.empty() && m_config.opt_string("load_assemble_list").empty()) { + boost::nowide::cerr << "--inspect-paint needs an input file or --load-assemble-list" << std::endl; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } + } + // --export-settings - writes its JSON to stdout, so reject every action or transform that may write there // too (--info, --help, --orient, slicing and exporting). The allowed ones do nothing when nothing is // sliced or exported. @@ -6100,6 +6124,30 @@ int CLI::run(int argc, char **argv) cli_status_callback(slicing_status); } g_cli_callback_mgr.stop(); +#endif + for (Model &m : m_models) + m.remove_backup_path_if_exist(); + record_exit_reson(outfile_dir, CLI_SUCCESS, plate_to_slice, cli_errors[CLI_SUCCESS], sliced_info); + boost::nowide::cerr.flush(); + return CLI_SUCCESS; + } else if (opt_key == "inspect_paint") { + // --inspect-paint — read the per-facet enforcer/blocker/extruder/ + // fuzzy state from the loaded model and emit a JSON summary. + // Machine-readable alternative to opening the paint gizmos. + for (Model &model : m_models) { + model.add_default_instances(); + Slic3r::PaintCLI::inspect_to_json(model, m_input_files, boost::nowide::cout); + } + boost::nowide::cout.flush(); + // The tooltip promises "then exit"; conflicting actions were rejected before + // loading. Finish like the end of run(). flush_and_exit() is not usable here: + // it prints "found error ..." to stdout, which would corrupt the JSON. +#if defined(__linux__) || defined(__LINUX__) + if (g_cli_callback_mgr.is_started()) { + PrintBase::SlicingStatus slicing_status{100, "All done, Success"}; + cli_status_callback(slicing_status); + } + g_cli_callback_mgr.stop(); #endif for (Model &m : m_models) m.remove_backup_path_if_exist(); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 65f43b3ee5..74d332ca01 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -11991,6 +11991,19 @@ CLIActionsConfigDef::CLIActionsConfigDef() "the --ground-* options choose from. Machine-readable alternative to --info."); def->set_default_value(new ConfigOptionBool(false)); + // --inspect-paint \u2014 dump the per-facet enforcer/blocker/extruder/fuzzy + // paint state stored on the loaded model (supports, seam, MMU color, + // fuzzy-skin) as JSON. Read-only; lets CI / scripted / AI tooling + // reason about existing paint on a .3mf without loading the GUI. + def = this->add("inspect_paint", coBool); + def->label = L("Inspect paint (JSON to stdout)"); + def->tooltip = L("Print a structured JSON summary of every painted layer " + "(supports, seam, MMU color, fuzzy-skin) already stored on " + "the loaded model \u2014 per-state facet count, surface area, " + "and mesh-local bounding box \u2014 then exit. Machine-readable " + "alternative to opening the paint gizmos in the GUI."); + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("export_settings", coString); def->label = L("Export Settings"); def->tooltip = L("This exports settings to a file. Use - to write them to stdout."); diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index ca26b80da2..656d41f338 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -682,6 +682,8 @@ set(SLIC3R_GUI_SOURCES Utils/Bonjour.hpp Utils/MeshInspect.cpp Utils/MeshInspect.hpp + Utils/PaintCLI.cpp + Utils/PaintCLI.hpp Utils/CalibUtils.cpp Utils/CalibUtils.hpp Utils/ColorSpaceConvert.cpp diff --git a/src/slic3r/Utils/PaintCLI.cpp b/src/slic3r/Utils/PaintCLI.cpp new file mode 100644 index 0000000000..d99dc0b450 --- /dev/null +++ b/src/slic3r/Utils/PaintCLI.cpp @@ -0,0 +1,204 @@ +// PaintCLI.cpp — CLI paint-inspection primitives. See PaintCLI.hpp. +#include "PaintCLI.hpp" + +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" +#include "libslic3r/TriangleSelector.hpp" + +#include + +#include +#include +#include +#include + +namespace Slic3r { +namespace PaintCLI { + +namespace { + +using json = nlohmann::json; + +double its_surface_area(const indexed_triangle_set &its) +{ + double total = 0.0; + for (const stl_triangle_vertex_indices &t : its.indices) { + const Vec3f &a = its.vertices[t(0)]; + const Vec3f &b = its.vertices[t(1)]; + const Vec3f &c = its.vertices[t(2)]; + total += 0.5 * (b - a).cross(c - a).norm(); + } + return total; +} + +// Bbox over triangle-referenced vertices only. get_facets_strict() returns +// an itset with the full source vertex list — using bounding_box() on it +// would report the whole mesh's bbox even when only a few facets are painted. +BoundingBoxf3 its_referenced_bbox(const indexed_triangle_set &its) +{ + BoundingBoxf3 bb; + bool first = true; + for (const stl_triangle_vertex_indices &t : its.indices) { + for (int k = 0; k < 3; ++k) { + const Vec3d v = its.vertices[t(k)].cast(); + if (first) { bb.min = bb.max = v; first = false; } + else bb.merge(v); + } + } + return bb; +} + +json vec3_to_json(const Vec3d &v) +{ + return json::array({ v.x(), v.y(), v.z() }); +} + +json bbox_to_json(const BoundingBoxf3 &bb) +{ + return { + { "min", vec3_to_json(bb.min) }, + { "max", vec3_to_json(bb.max) }, + { "size", vec3_to_json(Vec3d(bb.max - bb.min)) }, + }; +} + +// One (layer, state) row — empty ones are omitted at the caller level. +json state_entry(const std::string &label, const indexed_triangle_set &its) +{ + return { + { "state", label }, + { "facets", its.indices.size() }, + { "area_mm2", its_surface_area(its) }, + { "bbox", bbox_to_json(its_referenced_bbox(its)) }, + }; +} + +// Iterate the states relevant to one FacetsAnnotation kind, collecting +// non-empty entries. Empty layer → {"empty": true}. `n_facets_out` is the +// running total of painted facets — bumped for the summary. +json inspect_layer(const ModelVolume &mv, const FacetsAnnotation &fa, + const std::vector> &states, + size_t &n_facets_out) +{ + if (fa.empty()) + return { { "empty", true } }; + + json entries = json::array(); + for (const auto &st : states) { + if (!fa.has_facets(mv, st.first)) + continue; + indexed_triangle_set its = fa.get_facets_strict(mv, st.first); + if (its.indices.empty()) + continue; + n_facets_out += its.indices.size(); + entries.push_back(state_entry(st.second, its)); + } + return { + { "empty", entries.empty() }, + { "states", std::move(entries) }, + }; +} + +const std::vector> &supports_states() +{ + static const std::vector> s = { + { EnforcerBlockerType::ENFORCER, "ENFORCER" }, + { EnforcerBlockerType::BLOCKER, "BLOCKER" }, + }; + return s; +} + +const std::vector> &fuzzy_states() +{ + // FUZZY_SKIN is an enum alias for ENFORCER; the layer is single-state. + static const std::vector> s = { + { EnforcerBlockerType::FUZZY_SKIN, "FUZZY_SKIN" }, + }; + return s; +} + +const std::vector> &mmu_states() +{ + static std::vector> s = []{ + std::vector> v; + for (int i = 1; i <= int(EnforcerBlockerType::ExtruderMax); ++i) + v.emplace_back(EnforcerBlockerType(i), "extruder_" + std::to_string(i)); + return v; + }(); + return s; +} + +} // namespace + +void inspect_to_json(const Model &model, const std::vector &source_paths, + std::ostream &out) +{ + json root; + root["sources"] = source_paths; + root["frame"] = "mesh_local"; + root["note"] = "Coordinates are mesh-local (each volume's own frame). " + "Paint gizmos operate in this frame."; + + json objects = json::array(); + size_t total_objects = 0, total_volumes = 0, total_painted = 0, total_facets = 0; + + for (size_t oi = 0; oi < model.objects.size(); ++oi) { + const ModelObject *mo = model.objects[oi]; + if (!mo) continue; + ++total_objects; + + json obj; + obj["index"] = oi; + obj["name"] = mo->name; + + json volumes = json::array(); + for (size_t vi = 0; vi < mo->volumes.size(); ++vi) { + const ModelVolume *mv = mo->volumes[vi]; + if (!mv) continue; + ++total_volumes; + + const indexed_triangle_set &its = mv->mesh().its; + json vol; + vol["index"] = vi; + vol["name"] = mv->name; + vol["n_facets"] = its.indices.size(); + vol["is_model_part"] = mv->is_model_part(); + vol["bbox_mesh_local"] = bbox_to_json(bounding_box(its)); + + size_t vol_painted = 0; + json paints; + paints["supports"] = inspect_layer(*mv, mv->supported_facets, + supports_states(), vol_painted); + paints["seam"] = inspect_layer(*mv, mv->seam_facets, + supports_states(), vol_painted); + paints["mmu_segmentation"] = inspect_layer(*mv, mv->mmu_segmentation_facets, + mmu_states(), vol_painted); + paints["fuzzy_skin"] = inspect_layer(*mv, mv->fuzzy_skin_facets, + fuzzy_states(), vol_painted); + vol["paints"] = std::move(paints); + vol["painted_facets_total"] = vol_painted; + + if (vol_painted > 0) ++total_painted; + total_facets += vol_painted; + + volumes.push_back(std::move(vol)); + } + obj["volumes"] = std::move(volumes); + objects.push_back(std::move(obj)); + } + root["objects"] = std::move(objects); + root["summary"] = { + { "objects", total_objects }, + { "volumes", total_volumes }, + { "volumes_with_paint", total_painted }, + { "painted_facets_total", total_facets }, + }; + + // Object names and file paths are arbitrary bytes, and dump() throws on invalid + // UTF-8 by default. Replace such sequences with U+FFFD so the output is always + // valid JSON rather than an exception out of the CLI. + out << root.dump(2, ' ', false, json::error_handler_t::replace) << std::endl; +} + +} // namespace PaintCLI +} // namespace Slic3r diff --git a/src/slic3r/Utils/PaintCLI.hpp b/src/slic3r/Utils/PaintCLI.hpp new file mode 100644 index 0000000000..8e31750b37 --- /dev/null +++ b/src/slic3r/Utils/PaintCLI.hpp @@ -0,0 +1,31 @@ +// PaintCLI.hpp — CLI paint-inspection primitives. +// +// Backs the --inspect-paint CLI action. Reads the per-facet enforcer / +// blocker / extruder / fuzzy-skin state that OrcaSlicer stores on every +// ModelVolume (supports, seam, MMU color, fuzzy-skin) and emits a +// structured JSON summary — facet count, surface area, and mesh-local +// bounding box per state — so CI / scripted / AI tooling can reason +// about existing paint on a .3mf without opening the GUI. +// +// Coordinates are mesh-local (each volume's own frame), matching the +// frame that the paint gizmos operate in. +#ifndef slic3r_PaintCLI_hpp_ +#define slic3r_PaintCLI_hpp_ + +#include +#include +#include + +namespace Slic3r { +class Model; + +namespace PaintCLI { + +// `source_paths` lists every input file; the CLI merges them into one Model. +void inspect_to_json(const Model &model, const std::vector &source_paths, + std::ostream &out); + +} // namespace PaintCLI +} // namespace Slic3r + +#endif From 82e91bd4727baac9fef996aa7e778fd0d6178b3c Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 17 Sep 2026 09:08:50 -0300 Subject: [PATCH 155/162] Port wipe tower BBS improvements (#15485) --- src/libslic3r/GCode.cpp | 59 ++-- src/libslic3r/GCode.hpp | 12 +- src/libslic3r/GCode/WipeTower.cpp | 38 ++- src/libslic3r/GCode/WipeTower.hpp | 20 +- src/libslic3r/GCode/WipeTower2.cpp | 14 +- src/libslic3r/GCode/WipeTower2.hpp | 2 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 387 ++++++++++++++++++++++++++ src/libslic3r/Print.hpp | 87 ++++++ src/libslic3r/PrintConfig.cpp | 16 +- src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 6 +- src/slic3r/GUI/GLCanvas3D.cpp | 106 ++++++- src/slic3r/GUI/GLCanvas3D.hpp | 2 + src/slic3r/GUI/PartPlate.cpp | 8 +- src/slic3r/GUI/Tab.cpp | 32 +++ tests/libslic3r/test_wipe_tower.cpp | 196 +++++++++++++ 17 files changed, 945 insertions(+), 43 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 501b5d0264..01457d9344 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1028,11 +1028,21 @@ static std::vector get_path_of_change_filament(const Print& print) double current_z = gcodegen.writer().get_position().z(); if (z == -1.) // in case no specific z was provided, print at current_z pos z = current_z; - if (!is_approx(z, current_z)) { + // Orca: wipe_tower_no_sparse_layers crash guard. With sparse layers skipped the tower is + // compacted far below the object, so descending to it is only safe once the nozzle is parked + // over the tower - which is what the is_finish_first travel above does. Otherwise the nozzle + // is still over the model and this descent would drive it into the print, so defer it to the + // re-descents below, which run after the travel to the tower. + const bool defer_compacted_descend = m_sparse_layers_skipped + && !tcr.priming && !tcr.is_finish_first && (current_z - z) > EPSILON; + if (!is_approx(z, current_z) && !defer_compacted_descend) { gcode += gcodegen.writer().retract(); gcode += gcodegen.writer().travel_to_z(z, "Travel down to the last wipe tower layer."); gcode += gcodegen.writer().unretract(); } + // Tower compacted below the object, so any extrusion emitted without an explicit z has to be + // pulled back down to it first. + const bool compacted_below_object = m_sparse_layers_skipped && z >= 0. && (tcr.print_z - z) > EPSILON; // Process the end filament gcode. bool add_change_filament_624 = false; @@ -1085,11 +1095,23 @@ static std::vector get_path_of_change_filament(const Print& print) std::string nozzle_change_gcode_trans; if (is_nozzle_change) { // move to start_pos before nozzle change + // Orca: travel_to() lifts to the object layer height to clear the print. That lift is + // needed when arriving from the model, but is a wasted full-height Z bounce when the + // nozzle already sits on the compacted tower, so travel at the compacted z instead. + const bool compact_intower_nc_travel = compacted_below_object + && (tcr.print_z - gcodegen.writer().get_position().z()) > EPSILON; std::string start_pos_str; start_pos_str = gcodegen.travel_to(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(tcr.nozzle_change_result.start_pos) + plate_origin_2d), erMixed, - "Move to nozzle change start pos"); + "Move to nozzle change start pos", compact_intower_nc_travel ? z : DBL_MAX); check_add_eol(start_pos_str); nozzle_change_gcode_trans += start_pos_str; + // The nozzle-change wipe below carries no explicit z, so it would extrude at the object + // layer height and float above the compacted tower. Descend unless the travel stayed down. + if (!compact_intower_nc_travel && compacted_below_object) { + std::string nc_z_descend = gcodegen.writer().travel_to_z(z, "Descend to compacted wipe tower z (no sparse layers)"); + check_add_eol(nc_z_descend); + nozzle_change_gcode_trans += nc_z_descend; + } nozzle_change_gcode_trans += gcodegen.unretract(); nozzle_change_gcode_trans += transform_gcode(tcr.nozzle_change_result.gcode, tcr.nozzle_change_result.start_pos, wipe_tower_offset, wipe_tower_rotation); gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(tcr.nozzle_change_result.end_pos) + plate_origin_2d)); @@ -1428,6 +1450,15 @@ static std::vector get_path_of_change_filament(const Print& print) start_filament_gcode_str = start_filament_gcode_str + wipe_next_start_point_str + toolchange_unretract_str; + // Orca: the custom change_filament_gcode lifts to the object layer height and the unretract + // de-hops back to it, so every tower extrusion emitted after it (purge moves, and the wall + // when it prints after the toolchange) would float above the compacted tower. Descend first. + if (compacted_below_object) { + std::string z_descend = gcodegen.writer().travel_to_z(z, "Descend to compacted wipe tower z (no sparse layers)"); + check_add_eol(z_descend); + start_filament_gcode_str += z_descend; + } + // Insert the end filament, toolchange, and start filament gcode into the generated gcode. DynamicConfig config; config.set_key_value("filament_end_gcode", new ConfigOptionString(end_filament_gcode_str)); @@ -1915,11 +1946,9 @@ static std::vector get_path_of_change_filament(const Print& print) // resulting in a wipe tower with sparse layers. double wipe_tower_z = -1; bool ignore_sparse = false; - if (gcodegen.config().wipe_tower_no_sparse_layers.value) { + if (m_sparse_layers_skipped) { wipe_tower_z = m_last_wipe_tower_print_z; - ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && - m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool && - m_layer_idx != 0); + ignore_sparse = wipe_tower_layer_is_sparse(m_tool_changes[m_layer_idx]) && m_layer_idx != 0; if (m_tool_change_idx == 0 && !ignore_sparse) wipe_tower_z = m_last_wipe_tower_print_z + m_tool_changes[m_layer_idx].front().layer_height; } @@ -1935,12 +1964,9 @@ static std::vector get_path_of_change_filament(const Print& print) // resulting in a wipe tower with sparse layers. double wipe_tower_z = -1; bool ignore_sparse = false; - if (gcodegen.config().wipe_tower_no_sparse_layers.value) { - wipe_tower_z = m_last_wipe_tower_print_z; - ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && - m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool); - if (m_tool_change_idx == 0 && !ignore_sparse) - wipe_tower_z = m_last_wipe_tower_print_z + m_tool_changes[m_layer_idx].front().layer_height; + if (m_sparse_layers_skipped) { + ignore_sparse = wipe_tower_layer_is_sparse(m_tool_changes[m_layer_idx]); + wipe_tower_z = m_compacted_tower_z[m_layer_idx]; } if ((m_enable_timelapse_print || m_enable_wrapping_detection) && m_is_first_print) { @@ -1953,10 +1979,8 @@ static std::vector get_path_of_change_filament(const Print& print) if (!(size_t(m_tool_change_idx) < m_tool_changes[m_layer_idx].size())) throw Slic3r::RuntimeError("Wipe tower generation failed, possibly due to empty first layer."); - if (!ignore_sparse) { + if (!ignore_sparse) gcode += append_tcr(gcodegen, m_tool_changes[m_layer_idx][m_tool_change_idx++], extruder_id, wipe_tower_z); - m_last_wipe_tower_print_z = wipe_tower_z; - } } } @@ -1970,9 +1994,8 @@ static std::vector get_path_of_change_filament(const Print& print) return true; bool ignore_sparse = false; - if (gcodegen.config().wipe_tower_no_sparse_layers.value) { - ignore_sparse = (m_tool_changes[m_layer_idx].size() == 1 && m_tool_changes[m_layer_idx].front().initial_tool == m_tool_changes[m_layer_idx].front().new_tool); - } + if (m_sparse_layers_skipped) + ignore_sparse = wipe_tower_layer_is_sparse(m_tool_changes[m_layer_idx]); if ((m_enable_timelapse_print || m_enable_wrapping_detection) && m_is_first_print) { return false; diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 29e4638a94..3933fd4e56 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -106,8 +106,13 @@ public: m_enable_wrapping_detection(print_config.enable_wrapping_detection && (print_config.wrapping_exclude_area.values.size() > 2) && (slice_used_filaments.size() <= 1)), m_is_first_print(true), m_print_config(&print_config), - m_last_wipe_tower_print_z(print_config.z_offset.value) + m_last_wipe_tower_print_z(print_config.z_offset.value), + m_sparse_layers_skipped(wipe_tower_sparse_layers_skipped(print_config)) { + // Precomputed rather than accumulated while emitting, so that the clearance validator and + // the emitter cannot disagree about where the compacted tower sits on any given layer. + if (m_sparse_layers_skipped) + m_compacted_tower_z = compute_compacted_wipe_tower_z(tool_changes, float(print_config.z_offset.value)); // initialize with the extruder offset of master extruder id m_extruder_offsets.resize(print_config.filament_map.size(), print_config.extruder_offset.get_at(print_config.master_extruder_id.value - 1)); const auto& filament_map = print_config.filament_map.values; // 1 based idx @@ -167,6 +172,11 @@ private: float m_wipe_tower_depth; BoundingBoxf m_wipe_tower_bbx; Vec2f m_rib_offset{Vec2f(0, 0)}; + // wipe_tower_no_sparse_layers, as answered by the shared compaction rule rather than by the raw + // option: smooth timelapse and wrapping detection keep a tower on every layer regardless. + const bool m_sparse_layers_skipped; + // Print z of the compacted tower per planned layer. Empty when the tower is not compacted. + std::vector m_compacted_tower_z; }; class ColorPrintColors diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index e80433f4ae..eaf8a2eaf3 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -25,6 +25,30 @@ static constexpr int arc_fit_size = 20; enum class LimitFlow { None, LimitPrintFlow, LimitRammingFlow, LimitRammingFlowNC};//nc:nozzle change static const std::map nozzle_diameter_to_nozzle_change_width{{0.2f, 0.5f}, {0.4f, 1.0f}, {0.6f, 1.2f}, {0.8f, 1.4f}}; +bool wipe_tower_sparse_layers_skipped(const PrintConfig &config) +{ + return config.wipe_tower_no_sparse_layers.value && config.timelapse_type.value != TimelapseType::tlSmooth && + ! config.enable_wrapping_detection.value; +} + +bool wipe_tower_layer_is_sparse(const std::vector &layer_tool_changes) +{ + return layer_tool_changes.size() == 1 && layer_tool_changes.front().initial_tool == layer_tool_changes.front().new_tool; +} + +std::vector compute_compacted_wipe_tower_z(const std::vector> &tool_changes, + float base_z) +{ + std::vector tower_z(tool_changes.size(), base_z); + float last = base_z; + for (size_t i = 0; i < tool_changes.size(); ++i) { + if (! tool_changes[i].empty() && ! wipe_tower_layer_is_sparse(tool_changes[i])) + last += tool_changes[i].front().layer_height; + tower_z[i] = last; + } + return tower_z; +} + inline float align_round(float value, float base) { return std::round(value / base) * base; @@ -1879,7 +1903,7 @@ WipeTower::WipeTower(const PrintConfig& config, int plate_idx, Vec3d plate_origi m_z_pos(0.f), //m_bridging(float(config.wipe_tower_bridging)), m_bridging(10.f), - m_no_sparse_layers(config.wipe_tower_no_sparse_layers), + m_sparse_layers_skipped(wipe_tower_sparse_layers_skipped(config)), m_gcode_flavor(config.gcode_flavor), m_travel_speed(config.travel_speed.get_at(get_extruder_index(config, (unsigned int)initial_tool))), m_current_tool(initial_tool), @@ -2977,7 +3001,7 @@ WipeTower::ToolChangeResult WipeTower::finish_layer(bool extrude_perimeter, bool // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (! m_no_sparse_layers || toolchanges_on_layer) + if (! m_sparse_layers_skipped || toolchanges_on_layer) if (m_current_tool < m_used_filament_length.size()) m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); @@ -3021,7 +3045,7 @@ void WipeTower::plan_toolchange(float z_par, float layer_height_par, unsigned in if (m_plan.empty() || m_plan.back().z + WT_EPSILON < z_par) // if we moved to a new layer, we'll add it to m_plan first m_plan.push_back(WipeTowerInfo(z_par, layer_height_par)); - if (m_first_layer_idx == size_t(-1) && (! m_no_sparse_layers || old_tool != new_tool)) + if (m_first_layer_idx == size_t(-1) && (! m_sparse_layers_skipped || old_tool != new_tool)) m_first_layer_idx = m_plan.size() - 1; if (old_tool == new_tool) // new layer without toolchanges - we are done @@ -3874,7 +3898,7 @@ WipeTower::ToolChangeResult WipeTower::finish_layer_new(bool extrude_perimeter, // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (!m_no_sparse_layers || toolchanges_on_layer) + if (!m_sparse_layers_skipped || toolchanges_on_layer) if (m_current_tool < m_used_filament_length.size()) m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); @@ -3984,7 +4008,7 @@ WipeTower::ToolChangeResult WipeTower::finish_block(const WipeTowerBlock &block, // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (!m_no_sparse_layers || toolchanges_on_layer) + if (!m_sparse_layers_skipped || toolchanges_on_layer) if (filament_id < m_used_filament_length.size()) m_used_filament_length[filament_id] += writer.get_and_reset_used_filament_length(); @@ -4101,7 +4125,7 @@ WipeTower::ToolChangeResult WipeTower::finish_block_solid(const WipeTowerBlock & // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (!m_no_sparse_layers || toolchanges_on_layer) + if (!m_sparse_layers_skipped || toolchanges_on_layer) if (filament_id < m_used_filament_length.size()) m_used_filament_length[filament_id] += writer.get_and_reset_used_filament_length(); @@ -5155,7 +5179,7 @@ WipeTower::ToolChangeResult WipeTower::only_generate_out_wall(bool is_new_mode) // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (!m_no_sparse_layers || toolchanges_on_layer) + if (!m_sparse_layers_skipped || toolchanges_on_layer) if (m_current_tool < m_used_filament_length.size()) m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); return construct_tcr(writer, false, old_tool, true, false, 0.f, false); diff --git a/src/libslic3r/GCode/WipeTower.hpp b/src/libslic3r/GCode/WipeTower.hpp index 9303f09691..5426c9bd85 100644 --- a/src/libslic3r/GCode/WipeTower.hpp +++ b/src/libslic3r/GCode/WipeTower.hpp @@ -521,7 +521,7 @@ private: //float m_parking_pos_retraction = 0.f; //float m_extra_loading_move = 0.f; float m_bridging = 0.f; - bool m_no_sparse_layers = false; + bool m_sparse_layers_skipped = false; // BBS: remove useless config //bool m_set_extruder_trimpot = false; bool m_adhesion = true; @@ -680,6 +680,24 @@ private: }; +// Compaction rule for wipe_tower_no_sparse_layers. Shared by the G-code emitter and by the +// clearance validator so that both agree on where the compacted tower actually sits; a drift +// between the two would either let a real nozzle collision through or reject a safe plate. + +// Whether sparse layers are really skipped, i.e. whether the tower is compacted at all. Smooth +// timelapse and wrapping detection put a tower on every layer, so no layer is ever dropped and the +// tower keeps following the object even though the option is on. Tower planning, G-code emission and +// the clearance validator all ask this single question, so none of them can compact on its own. +bool wipe_tower_sparse_layers_skipped(const PrintConfig &config); + +// A planned layer prints no tower at all when its only toolchange keeps the same filament. +bool wipe_tower_layer_is_sparse(const std::vector &layer_tool_changes); + +// Print z the compacted tower reaches on every planned layer. Sparse layers carry over the +// previous value, so the tower falls one layer height behind the object for each of them. base_z is +// the z the tower starts from, which Orca offsets by z_offset. +std::vector compute_compacted_wipe_tower_z(const std::vector> &tool_changes, + float base_z = 0.f); } // namespace Slic3r diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 4e752bd772..0080094270 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -1032,7 +1032,7 @@ WipeTower2::WipeTower2(const PrintConfig& config, const PrintRegionConfig& defau m_y_shift(0.f), m_z_pos(0.f), m_bridging(float(config.wipe_tower_bridging)), - m_no_sparse_layers(config.wipe_tower_no_sparse_layers), + m_sparse_layers_skipped(wipe_tower_sparse_layers_skipped(config)), m_gcode_flavor(config.gcode_flavor), m_travel_speed(config.travel_speed.get_at(get_extruder_index(config, (unsigned int)initial_tool))), m_infill_speed(default_region_config.sparse_infill_speed.get_at(get_extruder_index(config, (unsigned int)initial_tool))), @@ -1730,7 +1730,7 @@ void WipeTower2::toolchange_Change( } else if (m_wall_type == (int)wtwCone) { const double support_scale = get_wipe_tower_cone_base(m_wipe_tower_width, m_wipe_tower_height, m_wipe_tower_depth, m_wipe_tower_cone_angle).second; - const double z = m_no_sparse_layers ? (m_current_height + m_layer_info->height) : m_layer_info->z; + const double z = m_sparse_layers_skipped ? (m_current_height + m_layer_info->height) : m_layer_info->z; const double r = std::tan(Geometry::deg2rad(m_wipe_tower_cone_angle / 2.f)) * (m_wipe_tower_height - z); const double w = m_layer_info->depth + m_perimeter_width; if (r > 0.5 * w + 0.01) { // same guard as generate_support_cone_wall @@ -1872,7 +1872,7 @@ void WipeTower2::toolchange_Wipe( // All the calculations in all other places take the spacing into account for all the layers. // If spare layers are excluded->if 1 or less toolchange has been done, it must be sill the first layer, too.So slow down. - const float target_speed = is_first_layer() || (m_num_tool_changes <= 1 && m_no_sparse_layers) ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_infill_speed * 60.f); + const float target_speed = is_first_layer() || (m_num_tool_changes <= 1 && m_sparse_layers_skipped) ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_infill_speed * 60.f); float wipe_speed = 0.33f * target_speed; // if there is less than 2.5*line_width to the edge, advance straightaway (there is likely a blob anyway) @@ -1970,7 +1970,7 @@ WipeTower::ToolChangeResult WipeTower2::finish_layer() // Slow down on the 1st layer. // If spare layers are excluded -> if 1 or less toolchange has been done, it must be still the first layer, too. So slow down. - bool first_layer = is_first_layer() || (m_num_tool_changes <= 1 && m_no_sparse_layers); + bool first_layer = is_first_layer() || (m_num_tool_changes <= 1 && m_sparse_layers_skipped); float feedrate = first_layer ? m_first_layer_speed * 60.f : std::min(m_wipe_tower_max_purge_speed * 60.f, m_infill_speed * 60.f); if (m_enable_tower_interface_features && m_prev_layer_had_interface) feedrate = std::min(feedrate, 20.f * 60.f); @@ -2103,7 +2103,7 @@ WipeTower::ToolChangeResult WipeTower2::finish_layer() // Ask our writer about how much material was consumed. // Skip this in case the layer is sparse and config option to not print sparse layers is enabled. - if (! m_no_sparse_layers || toolchanges_on_layer || first_layer) { + if (! m_sparse_layers_skipped || toolchanges_on_layer || first_layer) { if (m_current_tool < m_used_filament_length.size()) m_used_filament_length[m_current_tool] += writer.get_and_reset_used_filament_length(); m_current_height += m_layer_info->height; @@ -2226,7 +2226,7 @@ void WipeTower2::plan_toolchange(float z_par, float layer_height_par, unsigned i if (m_plan.empty() || m_plan.back().z + WT_EPSILON < z_par) // if we moved to a new layer, we'll add it to m_plan first m_plan.push_back(WipeTowerInfo(z_par, layer_height_par)); - if (m_first_layer_idx == size_t(-1) && (! m_no_sparse_layers || old_tool != new_tool || m_plan.size() == 1)) + if (m_first_layer_idx == size_t(-1) && (! m_sparse_layers_skipped || old_tool != new_tool || m_plan.size() == 1)) m_first_layer_idx = m_plan.size() - 1; if (old_tool == new_tool) // new layer without toolchanges - we are done @@ -2652,7 +2652,7 @@ Polygon WipeTower2::generate_support_cone_wall( const auto [R, support_scale] = get_wipe_tower_cone_base(m_wipe_tower_width, m_wipe_tower_height, m_wipe_tower_depth, m_wipe_tower_cone_angle); - double z = m_no_sparse_layers ? + double z = m_sparse_layers_skipped ? (m_current_height + m_layer_info->height) : m_layer_info->z; // the former should actually work in both cases, but let's stay on the safe side (the 2.6.0 is close) diff --git a/src/libslic3r/GCode/WipeTower2.hpp b/src/libslic3r/GCode/WipeTower2.hpp index 232cad1a6b..eb3a2562fb 100644 --- a/src/libslic3r/GCode/WipeTower2.hpp +++ b/src/libslic3r/GCode/WipeTower2.hpp @@ -267,7 +267,7 @@ private: float m_parking_pos_retraction = 0.f; float m_extra_loading_move = 0.f; float m_bridging = 0.f; - bool m_no_sparse_layers = false; + bool m_sparse_layers_skipped = false; bool m_set_extruder_trimpot = false; bool m_adhesion = true; GCodeFlavor m_gcode_flavor; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index deae560d7c..b2b5d9277b 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1447,7 +1447,7 @@ static std::vector s_Preset_printer_options { "gcode_skip_config_block", "fan_kickstart", "part_cooling_fan_min_pwm", "fan_speedup_time", "fan_speedup_overhangs", "single_extruder_multi_material", "manual_filament_change", "file_start_gcode", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "printing_by_object_gcode", "layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode", "change_filament_gcode", "change_extrusion_role_gcode", "printer_model", "printer_variant", "printer_extruder_id", "printer_extruder_variant", "extruder_variant_list", "default_nozzle_volume_type", - "printable_height", "extruder_printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", + "printable_height", "extruder_printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "extruder_clearance_dist_to_rod", "nozzle_height", "master_extruder_id", "default_print_profile", "inherits", "silent_mode", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 13fe7758ff..833b811535 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -966,6 +966,377 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print return single_object_exception; } +// --------------------------------------------------------------------------------------------- +// Clearance rule for a prime tower compacted by wipe_tower_no_sparse_layers. +// Ported from BambuStudio and adapted to Orca's printer config: Orca has no +// prime_tower_lift_height (z_hop alone bounds the spiral), spells the toolhead radius +// extruder_clearance_radius, and derives the spiral slope from the per-filament travel_slope instead +// of one global constant. +// --------------------------------------------------------------------------------------------- + +double compacted_tower_footprint_padding(const PrintConfig &config, double brim_width) +{ + // The brim is deposited material like any other and reaches past the wall on the first layer, so + // the sweeping rod has to clear it too. + // + // On top of it, two effects make a nominal outline fall short of the printed tower on its low + // corner even though it overshoots by millimetres on the high one: WipeTower re-centres the tower + // by rib_offset once its first-layer wall is known, and the precise check hulls extrusion centre + // lines, so the deposited material reaches half a line width further still. Allowing a line width + // per side covers both, which is what keeps an estimated footprint enclosing the real one and the + // pre-slice check stricter than the precise one. + return std::max(0., brim_width) + 2. * config.nozzle_diameter.get_at(0); +} + +Polygons compacted_wipe_tower_rings(const CompactedTowerZone &zone, bool any_body_tier) +{ + Polygons rings = zone.grown_nozzle; + if (any_body_tier) + append(rings, zone.grown_body); + return rings; +} + +CompactedTowerZone compacted_wipe_tower_zone(const PrintConfig &config, const Polygon &tower_footprint) +{ + CompactedTowerZone zone; + if (tower_footprint.points.empty()) + return zone; + + // Spiral Z-hop at wipe-tower entry (the G3 Z I J that GCodeWriter emits for a SpiralLift) starts on + // the tower outline at a low Z. The spiral centre sits one radius away from the start point, so the + // circle reaches 2 * radius beyond the outline. radius = lift / (2*pi*atan(travel_slope)) is the + // same formula GCodeWriter uses; both are per filament, so take the widest any filament can make. + double spiral_reach = 0.; + for (size_t i = 0; i < config.z_hop.size(); ++i) { + const double lift = std::min(double(config.z_hop.get_at(i)), 5.); + if (lift < EPSILON) + continue; + const double slope = i < config.travel_slope.size() ? double(config.travel_slope.get_at(i)) : 0.; + if (slope < EPSILON) + continue; + spiral_reach = std::max(spiral_reach, 2. * lift / (2. * PI * std::atan(slope))); + } + + // Working footprint = outline grown by the spiral envelope. All later clearance tests use this, so + // a travel that leaves the deposited wall at low Z is still treated as part of the tower. + zone.hull = tower_footprint; + if (spiral_reach > EPSILON) { + const Polygons grown = offset(tower_footprint, float(scale_(spiral_reach)), jtRound, scale_(0.1)); + if (! grown.empty()) + zone.hull = Geometry::convex_hull(grown); + } + + // The rod sweeps the whole X axis, so its keep-out band is the tower's Y span widened by half + // the nozzle-to-rod offset per side (the instance carries the other half). Orca's sequential + // check has no such margin, having had no option to read it from until now. + zone.bbox_rod = zone.hull.bounding_box(); + zone.bbox_rod.offset(scale_(config.extruder_clearance_dist_to_rod.value * 0.5)); + + // Horizontal clearance, mirroring the sequential print check down to how the distance is split: + // there each of the two object hulls grows by half of extruder_clearance_radius, so the two + // outlines touch exactly when the objects are the full radius apart. Splitting it the same way + // here (half on the tower, half on the instance in compacted_wipe_tower_clearance) states the + // same criterion, and it is what lets the plater draw both outlines: they meet at the instant the + // check trips, instead of one of them being already buried inside the other. The smaller + // MAX_OUTER_NOZZLE_DIAMETER tier is the bare nozzle cone, the only part narrow enough to sit + // beside an object rising less than nozzle_height. The 0.2 mm shaved off is the same rounding + // slack the sequential check applies, 0.1 mm per side. Both rings are built here; which one a + // given object is measured against depends on its own height and is decided in + // compacted_wipe_tower_clearance(). + zone.body_radius = config.extruder_clearance_radius.value; + zone.grown_body = offset(zone.hull, float(scale_(compacted_tower_half_clearance(zone.body_radius))), jtRound, scale_(0.1)); + zone.grown_nozzle = offset(zone.hull, float(scale_(compacted_tower_half_clearance(MAX_OUTER_NOZZLE_DIAMETER))), jtRound, scale_(0.1)); + return zone; +} + +CompactedTowerClearance compacted_wipe_tower_clearance(const PrintConfig &config, const CompactedTowerZone &zone, + const Polygon &inst_hull, double object_rise) +{ + BoundingBox inst_bbox = inst_hull.bounding_box(); + inst_bbox.offset(scale_(config.extruder_clearance_dist_to_rod.value * 0.5)); + + // Only the Y span matters for the rod: it spans the whole X axis, so an object sharing the tower's + // Y band passes under it however far apart the two are in X. + const bool overlaps_in_y = std::min(inst_bbox.max.y(), zone.bbox_rod.max.y()) - std::max(inst_bbox.min.y(), zone.bbox_rod.min.y()) > 0; + + CompactedTowerClearance result; + result.far_clearance = overlaps_in_y ? config.extruder_clearance_height_to_rod.value : config.extruder_clearance_height_to_lid.value; + + // The rod and the lid are the only obstacles once the object stands far enough away. Closer than + // the toolhead radius it is the head body itself that hits the object, and it does so as soon as + // the object rises past the nozzle cone, which is far below the rod. + // The instance carries the other half of each clearance, the tower rings already hold the first + // half; see compacted_wipe_tower_zone(). Both halves are needed for the verdict to mean + // "a full radius apart", and drawing what is tested is what keeps the plater honest. + // + // Which tier applies is a property of this object alone: the head body sits above the nozzle cone, + // so it cannot reach an object that stays below nozzle_height however close it stands, and however + // tall the rest of the plate is. + const bool object_is_short = object_rise <= double(config.nozzle_height.value) + EPSILON; + result.body_clearance = object_is_short ? double(MAX_OUTER_NOZZLE_DIAMETER) : zone.body_radius; + + const Polygons inst_near_nozzle = offset(inst_hull, float(scale_(compacted_tower_half_clearance(MAX_OUTER_NOZZLE_DIAMETER))), jtRound, scale_(0.1)); + const bool near_nozzle = ! intersection(zone.grown_nozzle, inst_near_nozzle).empty(); + result.near_body = false; + if (! object_is_short) { + const Polygons inst_near_body = offset(inst_hull, float(scale_(compacted_tower_half_clearance(zone.body_radius))), jtRound, scale_(0.1)); + result.near_body = ! intersection(zone.grown_body, inst_near_body).empty(); + } + + result.allowed_rise = result.far_clearance; + if (near_nozzle) + result.allowed_rise = 0.; + else if (result.near_body) + result.allowed_rise = std::min(result.far_clearance, double(config.nozzle_height.value)); + return result; +} + +Polygon compacted_wipe_tower_offender_outline(const Polygon &inst_hull, double body_clearance) +{ + // Exactly the half-clearance the check grew this instance by, so the halo drawn around an object is + // the very outline that was tested against the tower ring of the same tier. Passing the clearance + // the object was actually judged on keeps a short object from being drawn with the wide ring it is + // not subject to. + const Polygons grown = offset(inst_hull, float(scale_(compacted_tower_half_clearance(body_clearance))), jtRound, scale_(0.1)); + return grown.empty() ? inst_hull : grown.front(); +} + +// Shared user-facing message for every compacted-tower clearance failure. Height-limit and too-close +// are the same class of layout violation under "No sparse layers", so they share one wording. +static std::string compacted_wipe_tower_clearance_error() +{ + return L("The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"."); +} + +// Convex hull of one print instance in bed coordinates, the same outline both compacted tower checks +// compare against the tower. +static Polygon compacted_tower_print_instance_hull(const PrintObject &object, const PrintInstance &instance) +{ + Points pts; + for (const ModelVolume *v : object.model_object()->volumes) { + if (! v->is_model_part()) + continue; + Polygon hull = v->get_convex_hull_2d(Geometry::assemble_transform(Vec3d::Zero(), instance.model_instance->get_rotation(), + instance.model_instance->get_scaling_factor(), instance.model_instance->get_mirror())); + hull.translate(instance.shift - object.center_offset()); + append(pts, hull.points); + } + return pts.empty() ? Polygon() : Geometry::convex_hull(pts); +} + +// Footprint the compacted prime tower is expected to occupy on the plate, in bed coordinates. +// Before psWipeTower has run there is no tower geometry at all, so this falls back to the same +// estimate the plater builds its preview box from. Answering while the user is still arranging the +// plate is the whole point of the pre-slice check, and an estimate is all that can be had then. +static Polygon estimated_wipe_tower_footprint(const Print &print) +{ + const PrintConfig &config = print.config(); + const size_t filaments_cnt = print.extruders().size(); + if (filaments_cnt == 0) + return Polygon(); + + const WipeTowerData &wtd = print.wipe_tower_data(filaments_cnt); + + double width, depth, brim; + Vec2d local_min; + if (wtd.bbx.size().x() > EPSILON && wtd.bbx.size().y() > EPSILON) { + // The tower has already been generated once, so use its real box (brim included) instead of + // re-estimating. Same frame first_layer_wipe_tower_corners() works in. + width = wtd.bbx.size().x(); + depth = wtd.bbx.size().y(); + local_min = wtd.bbx.min + wtd.rib_offset.cast(); + brim = 0.; + } else { + depth = wtd.depth; + if (depth < EPSILON) + return Polygon(); + // PartPlate::estimate_wipe_tower_size() squares the rib tower off and the preview box the user + // drags around is built from that, so match it here rather than keeping the nominal width. + width = config.wipe_tower_wall_type.value == WipeTowerWallType::wtwRib ? depth : double(config.prime_tower_width.value); + local_min = Vec2d::Zero(); + brim = double(wtd.brim_width); + } + + const double padding = compacted_tower_footprint_padding(config, brim); + local_min -= Vec2d(padding, padding); + width += 2. * padding; + depth += 2. * padding; + + const Eigen::Rotation2Dd rot(Geometry::deg2rad(config.wipe_tower_rotation_angle.value)); + const Vec2d translate(config.wipe_tower_x.get_at(print.get_plate_index()) + print.get_plate_origin()(0), + config.wipe_tower_y.get_at(print.get_plate_index()) + print.get_plate_origin()(1)); + + Polygon footprint; + for (const Vec2d &corner : { local_min, + Vec2d(local_min.x() + width, local_min.y()), + Vec2d(local_min.x() + width, local_min.y() + depth), + Vec2d(local_min.x(), local_min.y() + depth) }) { + const Vec2d p = rot * corner + translate; + footprint.points.emplace_back(scale_(p.x()), scale_(p.y())); + } + return footprint; +} + +// Pre-slice counterpart of validate_compacted_wipe_tower_clearance(). It applies the very same +// clearance rule, but to an estimated tower footprint instead of the real tool-change extrusions, +// which is what lets it run from Print::validate() before anything has been sliced. Reporting through +// polygons / height_polygons rather than by throwing is what puts the collision area and the height +// limit plane on the plater, exactly the way sequential printing does it. +StringObjectException Print::compacted_wipe_tower_clearance_valid(const Print &print, Polygons *polygons, std::vector> *height_polygons) +{ + const PrintConfig &config = print.config(); + if (! wipe_tower_sparse_layers_skipped(config) || config.print_sequence != PrintSequence::ByLayer || ! print.has_wipe_tower()) + return {}; + + const CompactedTowerZone zone = compacted_wipe_tower_zone(config, estimated_wipe_tower_footprint(print)); + if (zone.empty()) + return {}; + + StringObjectException exception; + Polygons offenders; + bool body_tier_used = false; + for (const PrintObject *object : print.objects()) { + const double object_top = unscaled(object->max_z()); + for (const PrintInstance &instance : object->instances()) { + const Polygon inst_hull = compacted_tower_print_instance_hull(*object, instance); + if (inst_hull.points.empty()) + continue; + const CompactedTowerClearance clearance = compacted_wipe_tower_clearance(config, zone, inst_hull, object_top); + body_tier_used = body_tier_used || compacted_tower_body_tier(clearance); + // Every tier the precise check applies is applied here too, otherwise an object standing + // within the toolhead radius would pass here and then be rejected mid-slice, which is the + // one outcome this check exists to prevent. The compacted tower base is unknown before + // slicing, so the rise is measured from the plate rather than from the tower top; that + // overstates it by the tower's own height and makes this check err strict, never lax. + if (object_top <= clearance.allowed_rise + EPSILON) + continue; + + // Height-limit and too-close cases share one user-facing message: both mean the layout + // violates the "No sparse layers" clearance rule, and the remedies are the same. + const std::string msg = compacted_wipe_tower_clearance_error(); + if (exception.string.empty()) { + exception.string = msg; + exception.object = instance.model_instance; + } else { + // Same wording for every offender; keep a single copy and drop the object pointer. + exception.object = nullptr; + } + const Polygon outline = compacted_wipe_tower_offender_outline(inst_hull, clearance.body_clearance); + offenders.emplace_back(outline); + if (height_polygons) + height_polygons->emplace_back(outline, float(clearance.allowed_rise)); + } + } + + // Draw the tower's keep-out ring alongside the offending objects, so the collision area reads as + // "this object reaches into the space the toolhead needs around the tower" rather than as a lone + // highlighted object. Emitted only on a real collision; the plater discards polygons otherwise. + // Only the rings some object on this plate is actually measured against are drawn, so that a ring + // and an object outline touching always means that object is over its limit. + if (polygons && ! offenders.empty()) { + append(*polygons, compacted_wipe_tower_rings(zone, body_tier_used)); + append(*polygons, offenders); + } + return exception; +} + +// With wipe_tower_no_sparse_layers the tower only grows on layers that carry a real toolchange, +// so it ends up far below the object and the nozzle has to descend to it. While the nozzle sits +// down on the compacted tower the rod is at tower_z + extruder_clearance_height_to_rod, and it +// sweeps the tower's Y band across the whole X axis. Anything already printed above that line and +// sharing the band gets hit. Nearer than the toolhead radius the head body hits the object well before +// the rod does, which is the horizontal half of the same problem. The spiral Z-hop that opens a wipe- +// tower travel also leaves the extrusion outline at a low Z, so the footprint used here is the +// deposited hull grown by the spiral circle's maximum reach. This mirrors both clearance checks of +// sequential printing, except that the tower is revisited over and over, so every object is compared +// against it. +void Print::validate_compacted_wipe_tower_clearance() const +{ + // Nothing to check when the tower is not compacted: it then follows the object as usual and the + // regular by-layer clearance check already covers it. Asking wipe_tower_sparse_layers_skipped() + // rather than the raw option keeps this from rejecting plates whose tower is in fact full height. + if (! wipe_tower_sparse_layers_skipped(m_config) || m_config.print_sequence != PrintSequence::ByLayer) + return; + + const std::vector> &tool_changes = m_wipe_tower_data.tool_changes; + if (tool_changes.empty() || m_objects.empty()) + return; + + // Same accumulation the G-code emitter runs, so validation and output cannot disagree. + const std::vector tower_z = compute_compacted_wipe_tower_z(tool_changes, float(m_config.z_offset.value)); + + // Wipe tower footprint: build it from the ACTUAL tool-change extrusions rather than the nominal + // width x depth rectangle returned by first_layer_wipe_tower_corners(). With a rib wall the printed + // wall bulges past the nominal box and the first-layer brim reaches even further; the nominal box + // (m_wipe_tower_data.bbx) undercounts that outermost extent by several millimetres, which is + // exactly the extent that decides how close the sweeping rod comes to a neighbouring object. The + // extrusion end-points are stored in the wipe-tower local frame, so we map them to the bed frame + // with the same transform the G-code emitter applies. The two emitters differ in where rib_offset + // enters: WipeTowerIntegration::append_tcr() (type 1) rotates the point and then adds the offset, + // append_tcr2() (type 2) adds it before rotating. On a rotated rib-wall tower the two land several + // millimetres apart, which is exactly the margin this check measures, so follow the emitter in use. + const Eigen::Rotation2Dd wt_rot(Geometry::deg2rad(m_config.wipe_tower_rotation_angle.value)); + const Vec2d wt_translate(m_config.wipe_tower_x.get_at(m_plate_index) + m_origin(0), + m_config.wipe_tower_y.get_at(m_plate_index) + m_origin(1)); + const Vec2d rib_off = m_wipe_tower_data.rib_offset.cast(); + const bool rib_off_rotates = this->wipe_tower_type() == WipeTowerType::Type2; + auto to_bed = [&wt_rot, &wt_translate, &rib_off, rib_off_rotates](const Vec2d &pt) { + return rib_off_rotates ? Vec2d(wt_rot * (pt + rib_off) + wt_translate) : Vec2d(wt_rot * pt + wt_translate + rib_off); + }; + + Points tower_pts; + for (const std::vector &layer : tool_changes) { + if (layer.empty() || wipe_tower_layer_is_sparse(layer)) + continue; + for (const WipeTower::ToolChangeResult &tcr : layer) + for (size_t i = 0; i < tcr.extrusions.size(); ++i) { + // A zero width marks a travel end-point. Keep it only when it opens a real extrusion, so + // the hull covers the deposited material and nothing else; travels reach a bit further out + // than the walls do. + const WipeTower::Extrusion &e = tcr.extrusions[i]; + if (e.width == 0.f && (i + 1 == tcr.extrusions.size() || tcr.extrusions[i + 1].width == 0.f)) + continue; + const Vec2d p = to_bed(Vec2d(e.pos.x(), e.pos.y())); + tower_pts.emplace_back(scale_(p.x()), scale_(p.y())); + } + } + if (tower_pts.empty()) + return; + + const CompactedTowerZone zone = compacted_wipe_tower_zone(m_config, Geometry::convex_hull(tower_pts)); + if (zone.empty()) + return; + + for (const PrintObject *object : m_objects) { + const double object_top = unscaled(object->max_z()); + for (const PrintInstance &instance : object->instances()) { + const Polygon inst_hull = compacted_tower_print_instance_hull(*object, instance); + if (inst_hull.points.empty()) + continue; + + // Report the worst layer rather than the first offending one, it is the one that explains the + // collision best. The rise has to be known before the clearance: it is what selects the + // horizontal tier, the nozzle cone being out of the head body's reach. + double max_rise = 0.; + for (size_t i = 0; i < tool_changes.size(); ++i) { + if (tool_changes[i].empty() || wipe_tower_layer_is_sparse(tool_changes[i])) + continue; + // Nothing above the current layer exists yet, so a tall object only counts up to it. + const double rise = std::min(object_top, double(tool_changes[i].front().print_z)) - tower_z[i]; + if (rise > max_rise) + max_rise = rise; + } + + const CompactedTowerClearance clearance = compacted_wipe_tower_clearance(m_config, zone, inst_hull, max_rise); + if (max_rise <= clearance.allowed_rise + EPSILON) + continue; + // Same wording as compacted_wipe_tower_clearance_valid(): height-limit and too-close + // share one message, since both are layout violations of "No sparse layers". + throw Slic3r::SlicingError(compacted_wipe_tower_clearance_error()); + } + } +} + //BBS static StringObjectException layered_print_cleareance_valid(const Print &print, StringObjectException *warning) { @@ -1410,6 +1781,16 @@ StringObjectException Print::validate(std::vector *warnin } if (!layer_warning.string.empty()) add_warning(layer_warning); + + // Orca: a compacted prime tower drags the nozzle back down to the plate on every toolchange, so + // tall objects collide with it much like they do in sequential printing. Checking it here rather + // than only during slicing is what lets the plater show the collision area and the height limit + // while the plate is still being arranged. + ret = compacted_wipe_tower_clearance_valid(*this, collison_polygons, height_polygons); + if (!ret.string.empty()) { + ret.type = STRING_EXCEPT_OBJECT_COLLISION_IN_LAYER_PRINT; + return ret; + } } if (m_config.enable_prime_tower) { @@ -2622,6 +3003,12 @@ void Print::process(long long *time_cost_with_cache, bool use_cache) if (this->has_wipe_tower()) { m_fake_wipe_tower.set_pos({ m_config.wipe_tower_x.get_at(m_plate_index), m_config.wipe_tower_y.get_at(m_plate_index) }); + // Validated on every process() run rather than only when the wipe tower step is (re)generated. + // Moving the tower changes only wipe_tower_x/y, which invalidates psSkirtBrim but not psWipeTower, + // so a validate call living inside _make_wipe_tower would be skipped and keep using the stale + // position, missing a fresh collision. The tower geometry (tool_changes) is stored in the local + // frame and is position independent, so re-checking here with the current position is correct. + this->validate_compacted_wipe_tower_clearance(); } if (this->set_started(psSkirtBrim)) { diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index 9822c5520c..9c1782e047 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -1160,6 +1160,8 @@ public: //BBS static StringObjectException sequential_print_clearance_valid(const Print &print, Polygons *polygons = nullptr, std::vector>* height_polygons = nullptr); + // Orca: pre-slice clearance check for a prime tower compacted by "No sparse layers". + static StringObjectException compacted_wipe_tower_clearance_valid(const Print &print, Polygons *polygons = nullptr, std::vector>* height_polygons = nullptr); ConflictResultOpt get_conflict_result() const { return m_conflict_result; } // Return 4 wipe tower corners in the world coordinates (shifted and rotated), including the wipe tower brim. @@ -1174,6 +1176,8 @@ public: void set_calib_params(const Calib_Params& params); const Calib_Params& calib_params() const { return m_calib_params; } Vec2d translate_to_print_space(const Vec2d &point) const; + // Orca: precise counterpart of compacted_wipe_tower_clearance_valid(), run once the tower exists. + void validate_compacted_wipe_tower_clearance() const; float get_wipe_tower_depth() const { return m_wipe_tower_data.depth; } BoundingBoxf get_wipe_tower_bbx() const { return m_wipe_tower_data.bbx; } Vec2f get_rib_offset() const { return m_wipe_tower_data.rib_offset; } @@ -1394,6 +1398,89 @@ public: }; +// --------------------------------------------------------------------------------------------- +// Clearance rule for a prime tower compacted by wipe_tower_no_sparse_layers. Shared by the precise +// check that runs on the real extrusions, the pre-slice estimate that feeds the plater with collision +// polygons, and the plater's own live preview while the user drags the tower or an object around. +// Keeping the rule in one place is what stops those three from drifting apart and reporting different +// things for the same plate. +// --------------------------------------------------------------------------------------------- + +// Half of a clearance distance, the share each of the two outlines carries. Sequential printing splits +// extruder_clearance_radius between the two object hulls this way; the tower checks split their +// clearances between the tower ring and the instance hull for the same reason, so that the two +// outlines the plater draws touch precisely when the check trips. The 0.2 mm comes off first: it is +// the rounding slack the sequential check applies, 0.1 mm per side. +inline double compacted_tower_half_clearance(double clearance) { return 0.5 * (clearance - 0.2); } + +// Keep-out geometry a compacted tower projects onto the plate, derived from its bare footprint. +struct CompactedTowerZone +{ + // Footprint the checks work on: the raw outline grown by the spiral Z-hop envelope. + Polygon hull; + // hull grown by half the toolhead radius; an object whose own half-grown hull reaches into it is + // hit by the head body. This is also the ring the plater draws. + Polygons grown_body; + // hull grown by half the bare nozzle cone radius, the innermost tier. + Polygons grown_nozzle; + // hull bounding box, the Y band the rod sweeps. + BoundingBox bbox_rod; + // Full body clearance, of which grown_body carries half. Which of the two tiers applies is decided + // per object rather than here; see compacted_wipe_tower_clearance(). + double body_radius { 0. }; + + bool empty() const { return hull.points.empty(); } +}; + +// Per-side padding a bare wipe tower outline needs before the clearance checks may treat it as the +// tower's footprint. Callers whose outline already carries the first-layer brim pass zero for it. +// Shared by the pre-slice estimate and the plater's live preview: both start from an outline that +// falls short of the printed tower in the same two ways, and padding them by different amounts is +// exactly how the preview and the validation behind it would end up disagreeing. +double compacted_tower_footprint_padding(const PrintConfig &config, double brim_width); + +// Grow a bare tower footprint (bed frame, scaled) into its keep-out zone. +CompactedTowerZone compacted_wipe_tower_zone(const PrintConfig &config, const Polygon &tower_footprint); + +// How far an object may rise above the compacted tower base before the toolhead hits it. +struct CompactedTowerClearance +{ + // Height the object may reach above the tower base. Zero means it may not rise at all. + double allowed_rise; + // Clearance that applies once the object stands clear of the toolhead in XY, i.e. rod or lid. + double far_clearance; + // The object sits within the toolhead radius, so the head body limits it rather than the rod. + bool near_body; + // Horizontal clearance this particular object has to keep from the tower: the full toolhead + // radius once it rises past the nozzle cone, the bare cone while it stays below. It is what the + // error message quotes and what the plater grows the object outline by. + double body_clearance; +}; + +// object_rise is the height above the tower base that the caller is going to compare against +// allowed_rise. It also selects the horizontal tier, so the two cannot disagree. +CompactedTowerClearance compacted_wipe_tower_clearance(const PrintConfig &config, const CompactedTowerZone &zone, + const Polygon &inst_hull, double object_rise); + +// This object was judged on a tier reaching past the bare nozzle cone, so the wide ring is the one its +// outline has to be drawn against. +inline bool compacted_tower_body_tier(const CompactedTowerClearance &clearance) +{ + return clearance.body_clearance > double(MAX_OUTER_NOZZLE_DIAMETER); +} + +// Keep-out rings to draw around the tower. The nozzle one always applies; the wide body one is drawn +// only when some object on the plate is actually measured against it, otherwise it would show a +// keep-out zone no object can violate. +Polygons compacted_wipe_tower_rings(const CompactedTowerZone &zone, bool any_body_tier); + +// Outline to hand the plater for an offending object: the instance hull grown by the same half +// clearance the check grew it by, which is CompactedTowerClearance::body_clearance for that object. +// Sequential printing reports its hulls the same way, and it doubles as the fix for the bare hull +// being unusable on screen, where drawn flat it hides under the object and drawn at the height limit +// it ends up buried inside the mesh. +Polygon compacted_wipe_tower_offender_outline(const Polygon &inst_hull, double body_clearance); + } /* slic3r_Print_hpp_ */ #endif diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 74d332ca01..f187e6ab82 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2549,6 +2549,16 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("5"); def->mode = comAdvanced; + // Orca: already carried by the BBL/Qidi/Geeetech/Eryone machine profiles, which inherited it from + // the BambuStudio import; without a definition here it was parsed as an unknown key and dropped. + def = this->add("extruder_clearance_dist_to_rod", coFloat); + def->label = L("Distance to rod"); + def->tooltip = L("Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing."); + def->sidetext = L("mm"); // millimeters, CIS languages need translation + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(40)); + def = this->add("extruder_clearance_height_to_rod", coFloat); def->label = L("Height to rod"); def->tooltip = L("Distance from the nozzle tip to the lower rod. Used for collision avoidance in by-object printing."); @@ -6673,8 +6683,10 @@ void PrintConfigDef::init_fff_params() def = this->add("wipe_tower_no_sparse_layers", coBool); def->label = L("No sparse layers (beta)"); def->tooltip = L("If enabled, the wipe tower will not be printed on layers with no tool changes. " - "On layers with a tool change, extruder will travel downward to print the wipe tower. " - "User is responsible for ensuring there is no collision with the print."); + "On layers with a tool change, extruder will travel downward to print the wipe tower, " + "so the tower ends up below the model and the toolhead has to reach down to it. " + "Layouts where that would collide with an already printed object are rejected. " + "Has no effect with smooth timelapse or clumping detection, which need a tower on every layer."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 3373fbece7..d161863a9c 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1790,6 +1790,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionBools, slow_down_for_layer_cooling)) ((ConfigOptionInts, close_fan_the_first_x_layers)) ((ConfigOptionEnum, draft_shield)) + ((ConfigOptionFloat, extruder_clearance_dist_to_rod))//BBS ((ConfigOptionFloat, extruder_clearance_height_to_rod))//BBs ((ConfigOptionFloat, extruder_clearance_height_to_lid))//BBS ((ConfigOptionFloat, extruder_clearance_radius)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index f0f0adfa38..0244710298 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -1041,10 +1041,12 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle", "wipe_tower_extra_spacing", "wipe_tower_max_purge_speed", - "wipe_tower_bridging", "wipe_tower_extra_flow", - "wipe_tower_no_sparse_layers"}) + "wipe_tower_bridging", "wipe_tower_extra_flow"}) toggle_line(el, have_prime_tower && supports_wipe_tower_2); + // Orca: both tower generators skip sparse layers, so this is not a wipe tower 2 exclusive. + toggle_line("wipe_tower_no_sparse_layers", have_prime_tower); + WipeTowerWallType wipe_tower_wall_type = config->opt_enum("wipe_tower_wall_type"); bool have_rib_wall = (wipe_tower_wall_type == WipeTowerWallType::wtwRib)&&have_prime_tower; toggle_line("wipe_tower_cone_angle", have_prime_tower && supports_wipe_tower_2 && wipe_tower_wall_type == WipeTowerWallType::wtwCone); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 76192491bf..83c8cba0ee 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4316,6 +4316,9 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (can_sequential_clearance_show_in_gizmo()) update_sequential_clearance(); } else { + // Orca: by-layer counterpart, for a prime tower compacted by "No sparse layers". + if (current_printer_technology() == ptFFF && can_sequential_clearance_show_in_gizmo()) + update_compacted_wipe_tower_clearance(); if (c == GLGizmosManager::EType::Move || c == GLGizmosManager::EType::Scale || c == GLGizmosManager::EType::Rotate) @@ -4549,8 +4552,12 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) TransformationType trafo_type; trafo_type.set_relative(); m_selection.translate(cur_pos - m_mouse.drag.start_position_3D, trafo_type); - if (current_printer_technology() == ptFFF && (fff_print()->config().print_sequence == PrintSequence::ByObject)) - update_sequential_clearance(); + if (current_printer_technology() == ptFFF) { + if (fff_print()->config().print_sequence == PrintSequence::ByObject) + update_sequential_clearance(); + else + update_compacted_wipe_tower_clearance(); + } // BBS //wxGetApp().obj_manipul()->set_dirty(); m_dirty = true; @@ -5614,6 +5621,101 @@ bool GLCanvas3D::can_sequential_clearance_show_in_gizmo() { return false; } +// Live preview of the compacted prime tower clearance, the by-layer counterpart of +// update_sequential_clearance(). Called while the user drags a volume / gizmo; idle visibility +// matches sequential print (hidden when valid, filled when Print::validate reports a collision). +// Print::compacted_wipe_tower_clearance_valid() answers the same question authoritatively, but it +// reads the tower position from the config, which only catches up once do_move() writes it back on +// mouse release. Recomputing from the volumes here is what makes the keep-out zone follow the tower +// while it is still under the cursor. +void GLCanvas3D::update_compacted_wipe_tower_clearance() +{ + if (current_printer_technology() != ptFFF) + return; + const Print *print = fff_print(); + if (print == nullptr) + return; + const PrintConfig &config = print->config(); + if (config.print_sequence != PrintSequence::ByLayer || ! wipe_tower_sparse_layers_skipped(config) || ! print->has_wipe_tower()) + return; + + PartPlateList &plate_list = wxGetApp().plater()->get_partplate_list(); + PartPlate *plate = plate_list.get_curr_plate(); + if (plate == nullptr) + return; + const int plate_id = plate_list.get_curr_plate_index(); + + // Once the tower has been generated the scene shows its real mesh with the brim merged in, + // otherwise it is a bare estimated cube with no brim at all. Only the latter needs the brim added + // here, and the width comes from WipeTowerData, the same source the preview box is sized from, so + // the zone cannot be padded against a brim the preview was not built with. + const bool preview_carries_brim = print->is_step_done(psWipeTower) && print->wipe_tower_data().wipe_tower_mesh_data.has_value(); + const double brim = preview_carries_brim ? 0. : double(print->wipe_tower_data(print->extruders().size()).brim_width); + const double padding = compacted_tower_footprint_padding(config, brim); + + // Tower footprint straight from the volume the user sees, so that dragging either the tower or an + // object updates the zone on the very next frame. + Polygon tower_footprint; + for (const GLVolume *v : m_volumes.volumes) { + if (! v->is_wipe_tower || v->object_idx() - 1000 != plate_id) + continue; + const BoundingBoxf3 bbox = v->transformed_convex_hull_bounding_box(); + tower_footprint = Polygon({ Point(scale_(bbox.min.x() - padding), scale_(bbox.min.y() - padding)), + Point(scale_(bbox.max.x() + padding), scale_(bbox.min.y() - padding)), + Point(scale_(bbox.max.x() + padding), scale_(bbox.max.y() + padding)), + Point(scale_(bbox.min.x() - padding), scale_(bbox.max.y() + padding)) }); + break; + } + + const CompactedTowerZone zone = compacted_wipe_tower_zone(config, tower_footprint); + if (zone.empty()) { + reset_sequential_print_clearance(); + return; + } + + // While dragging, outline every on-plate instance next to the tower ring, the way sequential print + // outlines every object. Both carry half of the clearance, so the two outlines meeting is precisely + // the moment that object goes over its limit - which is what makes the pair worth drawing at all. + // The tier is per object, so a short object gets the narrow nozzle outline rather than the wide + // body one it is not subject to; without that, a 3 mm object parked beside the tower would be drawn + // deep inside the keep-out ring while passing the check. Only the instances that already exceed + // allowed_rise also get a height limit plane. + Polygons outlines; + std::vector> height_polygons; + bool body_tier_used = false; + const BoundingBox plate_bb = plate->get_bounding_box_crd(); + for (const ModelObject *model_object : m_model->objects) { + for (size_t i = 0; i < model_object->instances.size(); ++i) { + Geometry::Transformation trafo(model_object->instances[i]->get_transformation()); + const Vec3d offset = trafo.get_offset(); + trafo.set_offset(Vec3d(offset.x(), offset.y(), 0.0)); + const Polygon inst_hull = model_object->convex_hull_2d(trafo.get_matrix()); + if (inst_hull.points.empty() || ! plate_bb.overlap(inst_hull.bounding_box())) + continue; + + // Same tiers and the same rise measured from the plate as + // Print::compacted_wipe_tower_clearance_valid(), so that the preview and the validation + // that follows it never contradict each other. + const double object_top = model_object->get_instance_max_z(i); + const CompactedTowerClearance clearance = compacted_wipe_tower_clearance(config, zone, inst_hull, object_top); + body_tier_used = body_tier_used || compacted_tower_body_tier(clearance); + + const Polygon outline = compacted_wipe_tower_offender_outline(inst_hull, clearance.body_clearance); + outlines.emplace_back(outline); + if (object_top <= clearance.allowed_rise + EPSILON) + continue; + height_polygons.emplace_back(outline, float(clearance.allowed_rise)); + } + } + + Polygons polygons = compacted_wipe_tower_rings(zone, body_tier_used); + append(polygons, outlines); + + set_sequential_print_clearance_visible(true); + set_sequential_print_clearance_render_fill(false); + set_sequential_print_clearance_polygons(polygons, height_polygons); +} + void GLCanvas3D::update_sequential_clearance() { if (current_printer_technology() != ptFFF || (fff_print()->config().print_sequence == PrintSequence::ByLayer)) diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index c2962c3858..1ea352ac96 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -1191,6 +1191,8 @@ public: bool can_sequential_clearance_show_in_gizmo(); void update_sequential_clearance(); + // Orca: by-layer counterpart, for a prime tower compacted by "No sparse layers". + void update_compacted_wipe_tower_clearance(); const Print* fff_print() const; const SLAPrint* sla_print() const; diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 893260f934..260c857f22 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1053,7 +1053,13 @@ void PartPlate::render_grid(bool bottom) { void PartPlate::render_height_limit(PartPlate::HeightLimitMode mode) { - if (m_print && m_print->config().print_sequence == PrintSequence::ByObject && mode != HEIGHT_LIMIT_NONE) + // Orca: a prime tower compacted by "No sparse layers" drags the nozzle back down to the plate on + // every toolchange, so the rod and the lid limit how tall a neighbouring object may be exactly as + // they do in sequential printing. The reference lines are just as useful there. + const bool relevant_for_print_mode = m_print && (m_print->config().print_sequence == PrintSequence::ByObject || + (m_print->config().print_sequence == PrintSequence::ByLayer && + wipe_tower_sparse_layers_skipped(m_print->config()) && m_print->has_wipe_tower())); + if (relevant_for_print_mode && mode != HEIGHT_LIMIT_NONE) { // draw lower limit // ORCA: OpenGL Core Profile diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 6279941e13..28d3478bf2 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1992,6 +1992,20 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) // reload scene to update timelapse wipe tower if (opt_key == "timelapse_type") { + // Smooth timelapse parks the nozzle on the prime tower every layer, so it needs a tower on + // every layer. That is exactly what "No sparse layers" removes, and with both on the tower is + // planned full height and then dropped on emission. Drop "No sparse layers" and tell the user. + if (boost::any_cast(value) == (int) TimelapseType::tlSmooth && m_config->opt_bool("wipe_tower_no_sparse_layers")) { + MessageDialog dlg(wxGetApp().plater(), + _L("Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". " + "\"No sparse layers\" has been turned off."), + _L("Warning"), wxICON_WARNING | wxOK); + dlg.ShowModal(); + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("wipe_tower_no_sparse_layers", new ConfigOptionBool(false)); + m_config_manipulation.apply(m_config, &new_conf); + } + bool wipe_tower_enabled = m_config->option("enable_prime_tower")->value; if (!wipe_tower_enabled && boost::any_cast(value) == (int)TimelapseType::tlSmooth) { MessageDialog dlg(wxGetApp().plater(), _L("A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower\?"), @@ -2007,6 +2021,23 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } + // Mirror of the timelapse_type branch above: enabling "No sparse layers" while smooth timelapse + // is active would leave the tower on every layer anyway, so fall back to traditional timelapse. + if (opt_key == "wipe_tower_no_sparse_layers" && boost::any_cast(value)) { + auto timelapse_type = m_config->option>("timelapse_type"); + if (timelapse_type && timelapse_type->value == TimelapseType::tlSmooth) { + MessageDialog dlg(wxGetApp().plater(), + _L("\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. " + "Timelapse has been switched to traditional mode."), + _L("Warning"), wxICON_WARNING | wxOK); + dlg.ShowModal(); + DynamicPrintConfig new_conf = *m_config; + new_conf.set_key_value("timelapse_type", new ConfigOptionEnum(TimelapseType::tlTraditional)); + m_config_manipulation.apply(m_config, &new_conf); + wxGetApp().plater()->update(); + } + } + if (opt_key == "print_sequence" && m_config->opt_enum("print_sequence") == PrintSequence::ByObject) { auto printer_structure_opt = m_preset_bundle->printers.get_edited_preset().config.option>("printer_structure"); if (printer_structure_opt && printer_structure_opt->value == PrinterStructure::psI3) { @@ -5109,6 +5140,7 @@ void TabPrinter::build_fff() optgroup = page->new_optgroup(L("Extruder Clearance"), "param_extruder_clearance"); optgroup->append_single_option_line("extruder_clearance_radius", "printer_basic_information_extruder_clearance#radius"); + optgroup->append_single_option_line("extruder_clearance_dist_to_rod", "printer_basic_information_extruder_clearance"); optgroup->append_single_option_line("extruder_clearance_height_to_rod", "printer_basic_information_extruder_clearance#height-to-rod"); optgroup->append_single_option_line("extruder_clearance_height_to_lid", "printer_basic_information_extruder_clearance#height-to-lid"); diff --git a/tests/libslic3r/test_wipe_tower.cpp b/tests/libslic3r/test_wipe_tower.cpp index 2987dce9da..277e11eceb 100644 --- a/tests/libslic3r/test_wipe_tower.cpp +++ b/tests/libslic3r/test_wipe_tower.cpp @@ -6,6 +6,8 @@ #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/GCode/WipeTower.hpp" #include "libslic3r/GCode/WipeTower2.hpp" +#include "libslic3r/Print.hpp" +#include "libslic3r/PrintConfig.hpp" using namespace Slic3r; using Catch::Matchers::WithinAbs; @@ -91,3 +93,197 @@ TEST_CASE("Brim width estimate matches each generator's loop quantization", "[Wi CHECK_THAT(WipeTower::estimate_brim_real_width(3.f, 0.4f, 0.2f, false), WithinAbs(7.5f * spacing, 1e-4f)); CHECK_THAT(WipeTower::estimate_brim_real_width(0.f, 0.4f, 0.2f, true), WithinAbs(0.f, 1e-6f)); } + +// --------------------------------------------------------------------------------------------- +// "No sparse layers": the compaction rule and the clearance it demands of the plate. +// --------------------------------------------------------------------------------------------- + +// A square of side mm centred on (cx, cy), in bed coordinates. +static Polygon centered_square(double cx, double cy, double side) +{ + const double h = 0.5 * side; + Polygon poly; + poly.points = {Point::new_scale(cx - h, cy - h), Point::new_scale(cx + h, cy - h), + Point::new_scale(cx + h, cy + h), Point::new_scale(cx - h, cy + h)}; + return poly; +} + +static WipeTower::ToolChangeResult make_tcr(int initial_tool, int new_tool, float layer_height) +{ + WipeTower::ToolChangeResult tcr{}; + tcr.initial_tool = initial_tool; + tcr.new_tool = new_tool; + tcr.layer_height = layer_height; + return tcr; +} + +// A 20 mm square tower at the bed origin, no spiral z-hop, so the keep-out zone is the bare +// footprint and every distance below is one the test sets. +static PrintConfig clearance_config() +{ + PrintConfig cfg; + cfg.extruder_clearance_radius.value = 40.; + cfg.extruder_clearance_dist_to_rod.value = 20.; + cfg.extruder_clearance_height_to_rod.value = 25.; + cfg.extruder_clearance_height_to_lid.value = 120.; + cfg.nozzle_height.value = 5.; + cfg.nozzle_diameter.values = {0.4}; + cfg.z_hop.values = {0.}; + cfg.travel_slope.values = {3.}; + return cfg; +} + +TEST_CASE("Sparse layers are skipped only when nothing else needs a tower on every layer", "[WipeTower][NoSparseLayers]") { + PrintConfig cfg; + cfg.timelapse_type.value = TimelapseType::tlTraditional; + cfg.enable_wrapping_detection.value = false; + + cfg.wipe_tower_no_sparse_layers.value = false; + CHECK_FALSE(wipe_tower_sparse_layers_skipped(cfg)); + cfg.wipe_tower_no_sparse_layers.value = true; + CHECK(wipe_tower_sparse_layers_skipped(cfg)); + + // Both park the nozzle on the tower every layer, so no layer is ever dropped and the option + // must read as off everywhere rather than compact in one place and not another. + cfg.timelapse_type.value = TimelapseType::tlSmooth; + CHECK_FALSE(wipe_tower_sparse_layers_skipped(cfg)); + cfg.timelapse_type.value = TimelapseType::tlTraditional; + cfg.enable_wrapping_detection.value = true; + CHECK_FALSE(wipe_tower_sparse_layers_skipped(cfg)); +} + +TEST_CASE("A planned layer is sparse only when its single tool change keeps the filament", "[WipeTower][NoSparseLayers]") { + CHECK(wipe_tower_layer_is_sparse({make_tcr(1, 1, 0.2f)})); + CHECK_FALSE(wipe_tower_layer_is_sparse({make_tcr(0, 1, 0.2f)})); + // A second entry means the layer carries real work whatever the tools are. + CHECK_FALSE(wipe_tower_layer_is_sparse({make_tcr(1, 1, 0.2f), make_tcr(1, 1, 0.2f)})); + CHECK_FALSE(wipe_tower_layer_is_sparse({})); +} + +TEST_CASE("The compacted tower falls one layer height behind the object per sparse layer", "[WipeTower][NoSparseLayers]") { + // Five 0.2 mm layers off a 0.1 mm z offset, the middle two sparse. The object reaches + // 0.1 + 5 * 0.2 = 1.1; the tower only grows on the three printed layers, so it ends at + // 0.1 + 3 * 0.2 = 0.7 and a sparse layer carries the previous value rather than its own. + const std::vector> tool_changes{ + {make_tcr(0, 1, 0.2f)}, {make_tcr(1, 1, 0.2f)}, {make_tcr(1, 1, 0.2f)}, + {make_tcr(1, 0, 0.2f)}, {make_tcr(0, 1, 0.2f)}}; + + const std::vector tower_z = compute_compacted_wipe_tower_z(tool_changes, 0.1f); + REQUIRE(tower_z.size() == tool_changes.size()); + CHECK_THAT(tower_z[0], WithinAbs(0.3f, 1e-5f)); + CHECK_THAT(tower_z[1], WithinAbs(0.3f, 1e-5f)); + CHECK_THAT(tower_z[2], WithinAbs(0.3f, 1e-5f)); + CHECK_THAT(tower_z[3], WithinAbs(0.5f, 1e-5f)); + CHECK_THAT(tower_z[4], WithinAbs(0.7f, 1e-5f)); + CHECK_THAT(1.1f - tower_z.back(), WithinAbs(2 * 0.2f, 1e-5f)); + + // Without a base the tower starts at the bed, and an empty layer carries over like a sparse one. + const std::vector no_offset = compute_compacted_wipe_tower_z({{make_tcr(0, 1, 0.2f)}, {}}, 0.f); + CHECK_THAT(no_offset[0], WithinAbs(0.2f, 1e-5f)); + CHECK_THAT(no_offset[1], WithinAbs(0.2f, 1e-5f)); +} + +TEST_CASE("The tower keep-out zone grows by the spiral z-hop envelope", "[WipeTower][NoSparseLayers]") { + PrintConfig cfg = clearance_config(); + const Polygon footprint = centered_square(0., 0., 20.); + + // No lift, no envelope: the zone works on the bare footprint. + CHECK_THAT(unscaled(compacted_wipe_tower_zone(cfg, footprint).hull.bounding_box().max.x()), WithinAbs(10., 1e-6)); + + // A spiral lift leaves the outline at low z, so it counts as tower. The circle reaches + // 2 * lift / (2*pi*atan(slope)) past the outline, matching GCodeWriter: 2*2/(2*pi*atan(3)) = 0.51 mm. + cfg.z_hop.values = {2.}; + const CompactedTowerZone lifted = compacted_wipe_tower_zone(cfg, footprint); + CHECK_THAT(unscaled(lifted.hull.bounding_box().max.x()), WithinAbs(10.51, 0.02)); + CHECK_THAT(unscaled(lifted.hull.bounding_box().min.y()), WithinAbs(-10.51, 0.02)); + CHECK(diff(Polygons{footprint}, Polygons{lifted.hull}).empty()); + + // z_hop is capped at 5 mm by the option, so a taller lift cannot widen the zone further. + cfg.z_hop.values = {10.}; + const double capped = unscaled(compacted_wipe_tower_zone(cfg, footprint).hull.bounding_box().max.x()); + CHECK_THAT(capped, WithinAbs(10. + 2. * 5. / (2. * M_PI * std::atan(3.)), 0.02)); + + // The rod sweeps the whole X axis, so its band is the tower's y span plus half the rod offset. + CHECK_THAT(unscaled(lifted.bbox_rod.max.y()), WithinAbs(10.51 + 10., 0.02)); +} + +TEST_CASE("An object beside a compacted tower is limited by the nearest part of the toolhead", "[WipeTower][NoSparseLayers]") { + const PrintConfig cfg = clearance_config(); + const CompactedTowerZone zone = compacted_wipe_tower_zone(cfg, centered_square(0., 0., 20.)); + + // Each side carries half its clearance less 0.1 mm slack, so the two outlines meet when the + // objects are a full clearance apart: 2 * (4 - 0.2) / 2 = 3.8 mm for the bare nozzle cone, + // 2 * (40 - 0.2) / 2 = 39.8 mm for the head body. A 10 mm object at x leaves a gap of x - 15. + const double tall = 50., shortish = 3.; + + // Gap 1 mm, inside the nozzle cone: the object may not rise above the tower at all. + const CompactedTowerClearance touching = compacted_wipe_tower_clearance(cfg, zone, centered_square(16., 0., 10.), tall); + CHECK_THAT(touching.allowed_rise, WithinAbs(0., 1e-9)); + + // Gap 10 mm: clear of the cone but inside the head body, which starts at nozzle_height. + const CompactedTowerClearance near_body = compacted_wipe_tower_clearance(cfg, zone, centered_square(25., 0., 10.), tall); + CHECK(near_body.near_body); + CHECK_THAT(near_body.allowed_rise, WithinAbs(5., 1e-9)); + CHECK_THAT(near_body.body_clearance, WithinAbs(40., 1e-9)); + + // The same spot, but an object that never rises past the cone. The body sits above the cone, so + // it cannot reach this object however close it stands, and only the narrow tier applies. + const CompactedTowerClearance low = compacted_wipe_tower_clearance(cfg, zone, centered_square(25., 0., 10.), shortish); + CHECK_FALSE(low.near_body); + CHECK_THAT(low.body_clearance, WithinAbs(4., 1e-9)); + CHECK_THAT(low.allowed_rise, WithinAbs(25., 1e-9)); + + // Gap 55 mm, clear of the head entirely: the rod is the obstacle, since the object shares the + // tower's y band and the rod spans the whole x axis however far apart the two stand. + const CompactedTowerClearance far_in_band = compacted_wipe_tower_clearance(cfg, zone, centered_square(70., 0., 10.), tall); + CHECK_FALSE(far_in_band.near_body); + CHECK_THAT(far_in_band.far_clearance, WithinAbs(25., 1e-9)); + CHECK_THAT(far_in_band.allowed_rise, WithinAbs(25., 1e-9)); + + // Out of the band the rod passes over it and only the lid is left. + const CompactedTowerClearance out_of_band = compacted_wipe_tower_clearance(cfg, zone, centered_square(70., 60., 10.), tall); + CHECK_THAT(out_of_band.allowed_rise, WithinAbs(120., 1e-9)); +} + +TEST_CASE("The ring drawn around the tower meets the outline drawn around an offender", "[WipeTower][NoSparseLayers]") { + const PrintConfig cfg = clearance_config(); + const CompactedTowerZone zone = compacted_wipe_tower_zone(cfg, centered_square(0., 0., 20.)); + + // What the plater draws has to be what the check tested, otherwise a user moves an object until + // the outlines part and slicing still refuses the plate. Both halves of the 3.8 mm nozzle + // clearance: at a 3 mm gap the rings overlap and the rise limit is zero, at 5 mm neither holds. + for (const auto &c : {std::make_pair(18., true), std::make_pair(20., false)}) { + DYNAMIC_SECTION("object at x = " << c.first) { + const Polygon hull = centered_square(c.first, 0., 10.); + const CompactedTowerClearance clearance = compacted_wipe_tower_clearance(cfg, zone, hull, 3.); + const Polygons rings = compacted_wipe_tower_rings(zone, compacted_tower_body_tier(clearance)); + const Polygon outline = compacted_wipe_tower_offender_outline(hull, clearance.body_clearance); + const bool outlines_meet = ! intersection(rings, Polygons{outline}).empty(); + const bool rise_denied = clearance.allowed_rise < EPSILON; + CHECK(outlines_meet == c.second); + CHECK(rise_denied == c.second); + } + } +} + +TEST_CASE("Only the keep-out ring an object is measured against is drawn", "[WipeTower][NoSparseLayers]") { + const PrintConfig cfg = clearance_config(); + const CompactedTowerZone zone = compacted_wipe_tower_zone(cfg, centered_square(0., 0., 20.)); + + // Drawing the wide ring when no object is judged on it would show a keep-out zone the check can + // never trip, so it is added only once some object reaches past the nozzle cone. + CHECK(compacted_wipe_tower_rings(zone, false).size() == zone.grown_nozzle.size()); + CHECK(compacted_wipe_tower_rings(zone, true).size() == zone.grown_nozzle.size() + zone.grown_body.size()); + CHECK_THAT(unscaled(get_extents(zone.grown_nozzle).max.x()), WithinAbs(10. + 0.5 * (4. - 0.2), 0.02)); + CHECK_THAT(unscaled(get_extents(zone.grown_body).max.x()), WithinAbs(10. + 0.5 * (40. - 0.2), 0.02)); +} + +TEST_CASE("Footprint padding covers the brim and the extrusion half width on each side", "[WipeTower][NoSparseLayers]") { + // A nominal outline hulls extrusion centre lines and is re-centred once the real wall is known, + // so a line width per side on top of the brim is what keeps an estimate enclosing the real tower. + const PrintConfig cfg = clearance_config(); + CHECK_THAT(compacted_tower_footprint_padding(cfg, 2.), WithinAbs(2. + 2. * 0.4, 1e-9)); + CHECK_THAT(compacted_tower_footprint_padding(cfg, 0.), WithinAbs(2. * 0.4, 1e-9)); + // Callers whose outline already carries the brim pass zero, and a negative one cannot shrink it. + CHECK_THAT(compacted_tower_footprint_padding(cfg, -5.), WithinAbs(2. * 0.4, 1e-9)); +} From 59e40a2c2eab87543ca55be4c035a91be29d00d9 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 17 Sep 2026 09:14:20 -0300 Subject: [PATCH 156/162] Print unsupported walls last (#15411) --- src/libslic3r/ExtrusionEntity.hpp | 4 + src/libslic3r/GCode.cpp | 22 ++- src/libslic3r/GCode.hpp | 2 +- src/libslic3r/Layer.cpp | 1 + src/libslic3r/PerimeterGenerator.cpp | 71 ++++++++ src/libslic3r/Preset.cpp | 1 + src/libslic3r/PrintConfig.cpp | 10 ++ src/libslic3r/PrintConfig.hpp | 1 + src/libslic3r/PrintObject.cpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 1 + src/slic3r/GUI/Tab.cpp | 1 + tests/fff_print/test_perimeters.cpp | 240 ++++++++++++++++++++++++++ 12 files changed, 353 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/ExtrusionEntity.hpp b/src/libslic3r/ExtrusionEntity.hpp index e8348b3bd5..de80247bce 100644 --- a/src/libslic3r/ExtrusionEntity.hpp +++ b/src/libslic3r/ExtrusionEntity.hpp @@ -454,6 +454,10 @@ class ExtrusionLoop : public ExtrusionEntity { public: ExtrusionPaths paths; + // ORCA: Set on a loop extruded entirely in mid air and out of reach of the layer below: it has + // nothing to lean on until this layer is bridged, so the G-code writer holds it back until the + // infill is down. See defer_unsupported_loops() in PerimeterGenerator.cpp. + bool print_after_infill = false; ExtrusionLoop(ExtrusionLoopRole role = elrDefault) : m_loop_role(role) {} ExtrusionLoop(const ExtrusionPaths &paths, ExtrusionLoopRole role = elrDefault) : paths(paths), m_loop_role(role) {} diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 01457d9344..81fc81b488 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -6603,6 +6603,8 @@ LayerResult GCode::process_layer( } // Then print infill gcode += this->extrude_infill(print, by_region_specific, false); + // Then the walls left hanging in mid air, now that the infill can anchor them + gcode += this->extrude_perimeters(print, by_region_specific, first_layer, false, true); // Then print perimeters of regions that has is_infill_first == true gcode += this->extrude_perimeters(print, by_region_specific, first_layer, true); } @@ -6898,6 +6900,7 @@ LayerResult GCode::process_layer( has_insert_timelapse_gcode = true; } gcode += this->extrude_infill(print, by_region_specific, false); + gcode += this->extrude_perimeters(print, by_region_specific, first_layer, false, true); gcode += this->extrude_perimeters(print, by_region_specific, first_layer, true); // ironing gcode += this->extrude_infill(print, by_region_specific, true); @@ -7638,7 +7641,7 @@ std::string GCode::extrude_path(const ExtrusionPath& path, const std::string& de } // Extrude perimeters: Decide where to put seams (hide or align seams). -std::string GCode::extrude_perimeters(const Print &print, const std::vector &by_region, bool is_first_layer, bool is_infill_first) +std::string GCode::extrude_perimeters(const Print &print, const std::vector &by_region, bool is_first_layer, bool is_infill_first, bool unsupported_loops_only) { std::string gcode; for (const ObjectByExtruder::Island::Region ®ion : by_region) @@ -7657,7 +7660,24 @@ std::string GCode::extrude_perimeters(const Print &print, const std::vector 0. && scale_(FILAMENT_CONFIG(wipe_distance)) > SCALED_EPSILON) wipe_support.emplace(); + + // ORCA: loops flagged as extruded in mid air, out of reach of the layer below, are held back + // for a second pass after the infill that anchors them. Infill already precedes infill first walls. + const bool defer_unsupported = !is_infill_first; + auto waits_for_infill = [](const ExtrusionEntity *ee) { + return ee->is_loop() && static_cast(ee)->print_after_infill; + }; + + // The deferred pass runs after the infill, so the loops the first pass emitted are + // already down and belong in the prefix an inward wipe may land on. + if (wipe_support && defer_unsupported && unsupported_loops_only) + for (const ExtrusionEntity* ee : region.perimeters) + if (!waits_for_infill(ee)) + wipe_support->append(*ee); + for (const ExtrusionEntity* ee : region.perimeters) { + if (defer_unsupported && waits_for_infill(ee) != unsupported_loops_only) + continue; gcode += this->extrude_entity(*ee, "perimeter", -1., region.perimeters, wipe_support ? &*wipe_support : nullptr); if (wipe_support) diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 3933fd4e56..8cf4aa03fb 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -534,7 +534,7 @@ private: // For sequential print, the instance of the object to be printing has to be defined. const size_t single_object_instance_idx); - std::string extrude_perimeters(const Print& print, const std::vector& by_region, bool is_first_layer, bool is_infill_first); + std::string extrude_perimeters(const Print& print, const std::vector& by_region, bool is_first_layer, bool is_infill_first, bool unsupported_loops_only = false); std::string extrude_infill(const Print& print, const std::vector& by_region, bool ironing); std::string extrude_support(const ExtrusionEntityCollection& support_fills, const ExtrusionRole support_extrusion_role); diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index b7ec08f856..7bdef5a4ff 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -153,6 +153,7 @@ bool Layer::is_perimeter_compatible(const Print& print, const PrintRegion& a, co && config.gap_infill_speed.get_at(print.get_extruder_id(config.outer_wall_filament_id)) == other_config.gap_infill_speed.get_at(print.get_extruder_id(config.outer_wall_filament_id)) && config.filter_out_gap_fill.value == other_config.filter_out_gap_fill.value && config.detect_overhang_wall == other_config.detect_overhang_wall + && config.unsupported_wall_last == other_config.unsupported_wall_last && config.overhang_reverse == other_config.overhang_reverse && config.overhang_reverse_threshold == other_config.overhang_reverse_threshold && config.wall_direction == other_config.wall_direction diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index a6b38889a5..9f6ec856ba 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -550,6 +550,7 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p if (!paths.empty()) { if (extrusion->is_closed) { ExtrusionLoop extrusion_loop(std::move(paths), pg_extrusion.is_contour ? elrDefault : elrHole); + extrusion_loop.inset_idx = extrusion->inset_idx; if ((perimeter_generator.config->wall_direction == WallDirection::CounterClockwise) == (pg_extrusion.is_contour || pg_extrusions.size() == 2)) extrusion_loop.make_counter_clockwise(); @@ -1318,6 +1319,73 @@ static void reorient_perimeters(ExtrusionEntityCollection &entities, bool steep_ } } +// A loop made of nothing but overhang paths lies entirely off the lower layer. +static bool is_unsupported_loop(const ExtrusionEntity *entity) +{ + if (!entity->is_loop()) + return false; + const ExtrusionPaths &paths = static_cast(entity)->paths; + return !paths.empty() && std::all_of(paths.begin(), paths.end(), + [](const ExtrusionPath &path) { return path.role() == erOverhangPerimeter; }); +} + +// ORCA: A wall loop with nothing under it has nothing to lean on, so whatever the configured wall +// sequence it is extruded after the loops that anchor it, innermost first. A loop that runs alongside +// an anchored one belongs to the same wall stack and keeps its place ahead of the infill, which needs +// it as an anchor; one that touches nothing has only that infill to rest on, so it is flagged for the +// G-code writer to hold it back until the infill is down. +static void defer_unsupported_loops(const PerimeterGenerator &perimeter_generator, ExtrusionEntityCollection &entities) +{ + if (!perimeter_generator.config->unsupported_wall_last) + return; + + ExtrusionEntitiesPtr &src = entities.entities; + auto first_deferred = std::stable_partition(src.begin(), src.end(), + [](const ExtrusionEntity *entity) { return !is_unsupported_loop(entity); }); + if (first_deferred == src.end()) + return; + + std::stable_sort(first_deferred, src.end(), + [](const ExtrusionEntity *lhs, const ExtrusionEntity *rhs) { return lhs->inset_idx > rhs->inset_idx; }); + + auto collect_lines = [](const ExtrusionEntity *entity, Lines &out) { + Polylines polylines; + entity->collect_polylines(polylines); + append(out, to_lines(polylines)); + }; + + Lines anchored; + for (auto it = src.begin(); it != first_deferred; ++it) + collect_lines(*it, anchored); + + std::vector unattached; + for (auto it = first_deferred; it != src.end(); ++it) + unattached.emplace_back(static_cast(*it)); + + // A loop leaning on a loop that is itself anchored is anchored as well, so spread outwards from + // the anchored loops until no unsupported loop is left touching what was reached. + const double touch_distance = 1.5 * std::max(perimeter_generator.ext_perimeter_flow.scaled_spacing(), + perimeter_generator.perimeter_flow.scaled_spacing()); + while (!anchored.empty()) { + AABBTreeLines::LinesDistancer distancer{std::move(anchored)}; + anchored.clear(); + for (ExtrusionLoop *&loop : unattached) { + if (loop == nullptr) + continue; + const Points points = loop->as_polyline().points; + if (std::any_of(points.begin(), points.end(), + [&distancer, touch_distance](const Point &point) { return distancer.distance_from_lines(point) < touch_distance; })) { + collect_lines(loop, anchored); + loop = nullptr; + } + } + } + + for (ExtrusionLoop *loop : unattached) + if (loop != nullptr) + loop->print_after_infill = true; +} + void PerimeterGenerator::process_classic() { group_region_by_fuzzify(*this); @@ -1804,6 +1872,8 @@ void PerimeterGenerator::process_classic() } } + defer_unsupported_loops(*this, entities); + // append perimeters for this slice as a collection if (! entities.empty()) this->loops->append(entities); @@ -2742,6 +2812,7 @@ void PerimeterGenerator::process_arachne() reorient_perimeters(extrusion_coll, steep_overhang_contour, steep_overhang_hole, this->config->overhang_reverse_internal_only); } + defer_unsupported_loops(*this, extrusion_coll); this->loops->append(extrusion_coll); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index b2b5d9277b..1002f5be89 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1058,6 +1058,7 @@ static std::vector s_Preset_print_options{ "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", + "unsupported_wall_last", "overhang_reverse", "overhang_reverse_threshold", "overhang_reverse_internal_only", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f187e6ab82..ea39cbeb5b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -5547,6 +5547,16 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); + def = this->add("unsupported_wall_last", coBool); + def->label = L("Print unsupported walls last"); + def->category = L("Quality"); + def->tooltip = L("Wall loops that lie entirely in mid air are printed once something can hold them:\n" + "they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" + "A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running " + "alongside a supported wall keeps its place before the infill, which needs it as an anchor."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("outer_wall_filament_id", coInt); def->gui_type = ConfigOptionDef::GUIType::i_enum_open; def->label = L("Outer walls"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index d161863a9c..727246ef73 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1353,6 +1353,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloatsNullable, filament_ironing_speed)) // Detect bridging perimeters ((ConfigOptionBool, detect_overhang_wall)) + ((ConfigOptionBool, unsupported_wall_last)) ((ConfigOptionInt, outer_wall_filament_id)) ((ConfigOptionInt, inner_wall_filament_id)) ((ConfigOptionFloatOrPercent, inner_wall_line_width)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index bb2a355daa..3b7e889472 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1501,6 +1501,7 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "fuzzy_skin_octaves" || opt_key == "fuzzy_skin_persistence" || opt_key == "detect_overhang_wall" + || opt_key == "unsupported_wall_last" || opt_key == "overhang_reverse" || opt_key == "overhang_reverse_internal_only" || opt_key == "overhang_reverse_threshold" diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 0244710298..f40c71ec4a 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -1134,6 +1134,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in bool has_detect_overhang_wall = config->opt_bool("detect_overhang_wall"); bool has_overhang_reverse = config->opt_bool("overhang_reverse"); bool allow_overhang_reverse = !has_spiral_vase; + toggle_line("unsupported_wall_last", has_detect_overhang_wall); toggle_line("overhang_reverse", allow_overhang_reverse); toggle_line("overhang_reverse_internal_only", allow_overhang_reverse && has_overhang_reverse); bool has_overhang_reverse_internal_only = config->opt_bool("overhang_reverse_internal_only"); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 28d3478bf2..021724ad96 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2794,6 +2794,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Overhangs"), L"param_overhang"); optgroup->append_single_option_line("detect_overhang_wall", "quality_settings_overhangs#detect-overhang-wall"); + optgroup->append_single_option_line("unsupported_wall_last", "quality_settings_overhangs#unsupported-wall-last"); optgroup->append_single_option_line("make_overhang_printable", "quality_settings_overhangs#make-overhang-printable"); optgroup->append_single_option_line("make_overhang_printable_angle", "quality_settings_overhangs#maximum-angle"); optgroup->append_single_option_line("make_overhang_printable_hole_size", "quality_settings_overhangs#hole-area"); diff --git a/tests/fff_print/test_perimeters.cpp b/tests/fff_print/test_perimeters.cpp index a98877ad2f..7067c60c61 100644 --- a/tests/fff_print/test_perimeters.cpp +++ b/tests/fff_print/test_perimeters.cpp @@ -4,9 +4,14 @@ #include "libslic3r/ExtrusionEntityCollection.hpp" #include "libslic3r/Layer.hpp" #include "libslic3r/Print.hpp" +#include "libslic3r/GCodeReader.hpp" +#include "libslic3r/Model.hpp" +#include "libslic3r/TriangleMesh.hpp" #include #include +#include +#include #include #include "test_helpers.hpp" @@ -255,3 +260,238 @@ TEST_CASE("Only one wall on the first layer needs a bottom shell", "[Perimeters] // No bottom shell: the option is inert, down to the same walls an unchecked box gives. CHECK_THAT(one_wall_no_shell, Catch::Matchers::WithinAbs(plain_no_shell, 1.0)); } + +namespace { + +// The layer that closes the cavity of box_over_cavity(), the first one printed over air. +const double cavity_ceiling_z = 6.2; + +// A cone standing on its tip, flaring by 5mm of radius per mm of height: at a layer height of 0.2 every +// wall of a layer lands a full millimetre outside the one below, entirely off the layer below but right +// alongside the walls printed with it. +TriangleMesh flared_cone() +{ + TriangleMesh cone = make_cone(20., 4.); + cone.mirror(Z); + cone.translate(0., 0., 4.); + return cone; +} + +// A 30mm box holding a 20mm cavity from z=2 to z=6, with a 4mm hole punched down through the ceiling +// of that cavity. The layer at cavity_ceiling_z bridges the cavity, and the walls of the hole sit in +// the middle of that bridge, 15mm clear of anything the layer below supports. +Print &box_over_cavity(Print &print, Model &model, const DynamicPrintConfig &config) +{ + ModelObject *object = model.add_object(); + object->name = "box_over_cavity.stl"; + object->add_volume(make_cube(30., 30., 8.), ModelVolumeType::MODEL_PART, false); + TriangleMesh cavity = make_cube(20., 20., 4.); + cavity.translate(5.f, 5.f, 2.f); + object->add_volume(std::move(cavity), ModelVolumeType::NEGATIVE_VOLUME, false); + TriangleMesh hole = make_cube(4., 4., 6.); + hole.translate(13.f, 13.f, 5.f); + object->add_volume(std::move(hole), ModelVolumeType::NEGATIVE_VOLUME, false); + object->add_instance(); + object->ensure_on_bed(); + + print.auto_assign_extruders(object); + print.apply(model, config); + print.validate(); + print.set_status_silent(); + return print; +} + +// Every setting the assertions below depend on, so none of them rests on a default. +DynamicPrintConfig unsupported_walls_config(const char *wall_generator, bool unsupported_wall_last) +{ + DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); + config.set_deserialize_strict({ + { "wall_generator", wall_generator }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "wall_loops", 3 }, + { "detect_overhang_wall", true }, + // Outer wall first, so an unsupported loop only ends up last if the feature puts it there. + { "wall_sequence", "outer wall/inner wall" }, + { "is_infill_first", false }, + { "sparse_infill_density", "15%" }, + { "unsupported_wall_last", unsupported_wall_last }, + { "gcode_comments", true }, + }); + return config; +} + +// A loop extruded entirely in mid air: every one of its paths is an overhang. +bool unsupported_loop(const ExtrusionEntity *entity) +{ + if (! entity->is_loop()) + return false; + const ExtrusionPaths &paths = static_cast(entity)->paths; + return ! paths.empty() && std::all_of(paths.begin(), paths.end(), + [](const ExtrusionPath &path) { return path.role() == erOverhangPerimeter; }); +} + +// The loops of every wall island of the print, island by island, in extrusion order. +std::vector> wall_islands(const Print &print) +{ + std::vector> islands; + for (const Layer *layer : print.objects().front()->layers()) + for (const LayerRegion *region : layer->regions()) + for (const ExtrusionEntity *island : region->perimeters.entities) { + std::vector loops; + for (const ExtrusionEntity *entity : static_cast(island)->entities) + if (entity->is_loop()) + loops.push_back(static_cast(entity)); + islands.push_back(std::move(loops)); + } + return islands; +} + +// Islands where a loop that is anchored is extruded after one that is not. +int islands_with_a_supported_loop_last(const Print &print) +{ + int count = 0; + for (const std::vector &loops : wall_islands(print)) { + bool seen_unsupported = false; + for (const ExtrusionLoop *loop : loops) { + if (unsupported_loop(loop)) + seen_unsupported = true; + else if (seen_unsupported) { + ++ count; + break; + } + } + } + return count; +} + +// The unsupported loops of the print, and those of them held back for the infill. +std::vector unsupported_loops(const Print &print, double print_z = -1.) +{ + std::vector loops; + for (const Layer *layer : print.objects().front()->layers()) { + if (print_z >= 0. && std::abs(layer->print_z - print_z) > EPSILON) + continue; + for (const LayerRegion *region : layer->regions()) + for (const ExtrusionEntity *island : region->perimeters.entities) + for (const ExtrusionEntity *entity : static_cast(island)->entities) + if (unsupported_loop(entity)) + loops.push_back(static_cast(entity)); + } + return loops; +} + +int loops_held_back_for_infill(const std::vector &loops) +{ + return int(std::count_if(loops.begin(), loops.end(), [](const ExtrusionLoop *loop) { return loop->print_after_infill; })); +} + +// The G-code emitted at `print_z`, so the order of one layer can be read on its own. +std::string layer_gcode(const std::string &gcode, double print_z) +{ + std::string out; + GCodeReader reader; + reader.parse_buffer(gcode, [&out, print_z](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (std::abs(self.z() - print_z) < EPSILON) + out += line.raw() + "\n"; + }); + return out; +} + +} // namespace + +// Whatever the wall order asks for, a loop with nothing under it cannot be extruded before the loops it +// leans on. The flared cone gives every layer an outer wall that lands completely off the one below, and +// the outer wall first sequence would otherwise put it down before any of them. +TEST_CASE("Unsupported wall loops are extruded after the walls that anchor them", "[Perimeters]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + CAPTURE(wall_generator); + + auto slice_cone = [wall_generator](bool unsupported_wall_last, Print &print) { + init_and_process_print({ flared_cone() }, print, unsupported_walls_config(wall_generator, unsupported_wall_last)); + REQUIRE_FALSE(print.objects().empty()); + }; + + Print on; + slice_cone(true, on); + // Without unsupported loops to reorder the rest of the test would pass on an empty print. + REQUIRE(unsupported_loops(on).size() > 0); + CHECK(islands_with_a_supported_loop_last(on) == 0); + + SECTION("the held back loops run innermost first") { + for (const std::vector &loops : wall_islands(on)) { + int previous_inset = std::numeric_limits::max(); + for (const ExtrusionLoop *loop : loops) + if (unsupported_loop(loop)) { + CHECK(loop->inset_idx <= previous_inset); + previous_inset = loop->inset_idx; + } + } + } + + SECTION("switched off, the configured wall order is left alone") { + Print off; + slice_cone(false, off); + REQUIRE(unsupported_loops(off).size() == unsupported_loops(on).size()); + // Outer wall first puts the unsupported outer wall ahead of the walls behind it. + CHECK(islands_with_a_supported_loop_last(off) > 0); + } +} + +// A loop the walls cannot reach is a different case: only the bridges of its own layer will ever hold it, +// so it has to wait for them - while a loop that runs alongside a wall keeps its place, because the +// bridges anchor on it instead. +TEST_CASE("A wall loop out of reach of the layer below waits for the infill", "[Perimeters]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + CAPTURE(wall_generator); + + Print print; + Model model; + box_over_cavity(print, model, unsupported_walls_config(wall_generator, true)); + print.process(); + + const std::vector hole_loops = unsupported_loops(print, cavity_ceiling_z); + REQUIRE(hole_loops.size() > 0); + CHECK(loops_held_back_for_infill(hole_loops) == int(hole_loops.size())); + + SECTION("a loop alongside a supported wall is not held back") { + Print cone; + init_and_process_print({ flared_cone() }, cone, unsupported_walls_config(wall_generator, true)); + const std::vector loops = unsupported_loops(cone); + REQUIRE(loops.size() > 0); + CHECK(loops_held_back_for_infill(loops) == 0); + } + + SECTION("switched off, no loop is held back") { + Print off; + Model off_model; + box_over_cavity(off, off_model, unsupported_walls_config(wall_generator, false)); + off.process(); + const std::vector loops = unsupported_loops(off, cavity_ceiling_z); + REQUIRE(loops.size() == hole_loops.size()); + CHECK(loops_held_back_for_infill(loops) == 0); + } +} + +// The held back loops reach the G-code in a second pass, after the infill of their layer: on the layer +// that closes the cavity the walls of the hole are extruded once the bridge is down, so the layer emits +// perimeters, then infill, then the perimeters that were waiting for it. +TEST_CASE("Loops waiting for the infill are extruded after it", "[Perimeters]") +{ + const char *wall_generator = GENERATE("classic", "arachne"); + CAPTURE(wall_generator); + + auto ceiling_roles = [wall_generator](bool unsupported_wall_last) { + Print print; + Model model; + box_over_cavity(print, model, unsupported_walls_config(wall_generator, unsupported_wall_last)); + const std::string layer = layer_gcode(gcode(print), cavity_ceiling_z); + REQUIRE_FALSE(layer.empty()); + return role_sequence(layer, { "perimeter", "infill" }); + }; + + CHECK(ceiling_roles(true) == std::vector{ "perimeter", "infill", "perimeter" }); + CHECK(ceiling_roles(false) == std::vector{ "perimeter", "infill" }); +} From 7065fa9eae98f0dc5c167103fcaa53465e9492a3 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 17 Sep 2026 09:54:42 -0300 Subject: [PATCH 157/162] Fix extruder clearance help link anchor (#15738) --- src/slic3r/GUI/Tab.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 021724ad96..08ec94393d 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5141,7 +5141,7 @@ void TabPrinter::build_fff() optgroup = page->new_optgroup(L("Extruder Clearance"), "param_extruder_clearance"); optgroup->append_single_option_line("extruder_clearance_radius", "printer_basic_information_extruder_clearance#radius"); - optgroup->append_single_option_line("extruder_clearance_dist_to_rod", "printer_basic_information_extruder_clearance"); + optgroup->append_single_option_line("extruder_clearance_dist_to_rod", "printer_basic_information_extruder_clearance#distance-to-rod"); optgroup->append_single_option_line("extruder_clearance_height_to_rod", "printer_basic_information_extruder_clearance#height-to-rod"); optgroup->append_single_option_line("extruder_clearance_height_to_lid", "printer_basic_information_extruder_clearance#height-to-lid"); From 60b4a6185442dc1fa1a6120b0e4eba387aed21ca Mon Sep 17 00:00:00 2001 From: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:56:17 +0200 Subject: [PATCH 158/162] Fix: Show indexed coFloatsOrPercents options in unsaved changes dialog (#15472) --- src/slic3r/GUI/ConfigValueFormatter.cpp | 11 +++++ src/slic3r/GUI/Search.cpp | 50 +++++++++++++++-------- src/slic3r/GUI/UnsavedChangesDialog.cpp | 54 +++++++++++++++++-------- tests/libslic3r/test_preset_diff.cpp | 17 ++++++++ 4 files changed, 100 insertions(+), 32 deletions(-) diff --git a/src/slic3r/GUI/ConfigValueFormatter.cpp b/src/slic3r/GUI/ConfigValueFormatter.cpp index 6f9128841b..17cf902217 100644 --- a/src/slic3r/GUI/ConfigValueFormatter.cpp +++ b/src/slic3r/GUI/ConfigValueFormatter.cpp @@ -188,6 +188,17 @@ wxString get_string_value(const std::string& opt_key, const DynamicPrintConfig& out = double_to_string(opt->value) + (opt->percent ? "%" : ""); return out; } + case coFloatsOrPercents: { + const auto* values = static_cast*>(option); + // Orca: Preset comparison may request the entire vector instead of an indexed entry. + if (orig_opt_idx < 0) + return from_u8(option->serialize()); + if (opt_idx < values->size()) { + const FloatOrPercent& value = values->get_at(opt_idx); + return double_to_string(value.value) + (value.percent ? "%" : ""); + } + return _L("Undefined"); + } case coEnum: { return get_string_from_enum(pure_key, config, pure_key == "top_surface_pattern" || diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index f8fc51ed02..eec03ebf62 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -62,7 +62,7 @@ static char marker_by_type(Preset::Type type, PrinterTechnology pt) } } -std::string Option::opt_key() const { return into_u8(key).substr(2); } +std::string Option::opt_key() const { return key.size() < 2 ? std::string() : into_u8(key).substr(2); } void FoundOption::get_marked_label_and_tooltip(const char **label_, const char **tooltip_) const { @@ -116,6 +116,7 @@ void OptionsSearcher::append_options(DynamicPrintConfig *config, Preset::Type ty case coFloats: change_opt_key(opt_key, config, cnt); break; case coStrings: change_opt_key(opt_key, config, cnt); break; case coPercents: change_opt_key(opt_key, config, cnt); break; + case coFloatsOrPercents: change_opt_key>(opt_key, config, cnt); break; case coPoints: change_opt_key(opt_key, config, cnt); break; // BBS case coEnums: change_opt_key(opt_key, config, cnt); break; @@ -334,29 +335,46 @@ const Option &OptionsSearcher::get_option(size_t pos_in_filter) const const Option &OptionsSearcher::get_option(const std::string &opt_key, Preset::Type type, int &variant_index) const { + auto not_found = [&variant_index]() -> const Option& { + static const Option empty_option; + variant_index = -2; + return empty_option; + }; + + variant_index = -1; std::string opt_key2 = opt_key; if (auto n = opt_key.find('#'); n != std::string::npos) { variant_index = std::atoi(opt_key.c_str() + n + 1); opt_key2 = opt_key.substr(0, n); } - auto it = std::lower_bound(options.begin(), options.end(), Option({boost::nowide::widen(get_key(opt_key2, type))})); - // BBS: return the 0th option when not found in searcher caused by mode difference - // assert(it != options.end()); - if (it == options.end()) { variant_index = -2 ; return options[0]; } - if (it->opt_key() == opt_key2) { + const std::wstring key = boost::nowide::widen(get_key(opt_key2, type)); + auto it = std::lower_bound(options.begin(), options.end(), Option({key})); + if (it == options.end()) return not_found(); + if (it->key == key) { variant_index = -1; } else { - const std::string opt_key3 = opt_key2 + "#"; - it = std::lower_bound(it, options.end(), Option({boost::nowide::widen(get_key(opt_key3, type))})); - if (it == options.end() || it->opt_key().compare(0, opt_key3.length(), opt_key3) != 0) { - variant_index = -2; // Not found - return options[0]; + const std::wstring prefix = key + L"#"; + it = std::lower_bound(it, options.end(), Option({prefix})); + if (it == options.end() || it->key.compare(0, prefix.length(), prefix) != 0) + return not_found(); + // Orca: Copy-parameters dialogs request the base key, without a vector index. + if (variant_index < 0) return *it; + + const bool has_mode = type == Preset::TYPE_PRINTER && printer_options_with_variant_2.count(opt_key2) > 0; + const bool has_variant = + (type == Preset::TYPE_PRINT && print_options_with_variant.count(opt_key2) > 0) || + (type == Preset::TYPE_FILAMENT && filament_options_with_variant.count(opt_key2) > 0) || + (type == Preset::TYPE_PRINTER && printer_options_with_variant_1.count(opt_key2) > 0) || has_mode; + if (!has_variant || has_mode) { + // Orca: Machine limits store (Normal, Silent) pairs per variant; the UI registers only #0/#1. + const std::wstring indexed_key = has_mode ? prefix + std::to_wstring(variant_index % 2) : + boost::nowide::widen(get_key(opt_key, type)); + it = std::lower_bound(it, options.end(), Option({indexed_key})); + if (it == options.end() || it->key != indexed_key) + return not_found(); + if (!has_variant) + variant_index = -1; } - auto it2 = it; - ++it2; - if (it2 != options.end() && it2->opt_key().compare(0, opt_key3.length(), opt_key3) == 0 - && printer_options_with_variant_1.find(opt_key2) == printer_options_with_variant_1.end()) - variant_index = -2; } return options[it - options.begin()]; diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 65b678953d..acf50e6641 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1490,7 +1490,15 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, DynamicConfig * config for (const std::string &opt_key : config->keys()) { int variant_index = -2; - const Search::Option &option = searcher.get_option(opt_key, type, variant_index); + Search::Option option = searcher.get_option(opt_key, type, variant_index); + if (variant_index == -2) { + // Orca: Every transferred setting must remain visible even when it is absent from the search index. + const ConfigOptionDef* def = print_config_def.get(opt_key); + const std::string label = def ? (def->full_label.empty() ? def->label : def->full_label) : std::string(); + option.label_local = (label.empty() ? from_u8(opt_key) : _L(label)).ToStdWstring(); + option.category_local = (def && !def->category.empty() ? + Tab::translate_category(from_u8(def->category), type) : _L("Other")).ToStdWstring(); + } auto category = option.category_local; auto opt = dynamic_cast(config->option(opt_key)); std::string value_from = opt->vserialize()[from]; @@ -1518,6 +1526,8 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres else presets_list.emplace_back(presets_); + const bool multiple_extruders = wxGetApp().preset_bundle->get_printer_extruder_count() > 1; + // Display a dialog showing the dirty options in a human readable form. for (PresetCollection* presets : presets_list) { @@ -1553,29 +1563,41 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres auto variant_key = Preset::get_iot_type_string(type) + "_extruder_variant"; auto id_key = Preset::get_iot_type_string(type) + "_extruder_id"; - auto extruder_variant = dynamic_cast(old_config.option(variant_key)); - auto extruder_id = dynamic_cast(old_config.option(id_key)); + // Orca: Dirty indices belong to the edited config, which may contain newly added variants. + auto extruder_variant = dynamic_cast(new_config.option(variant_key)); + auto extruder_id = dynamic_cast(new_config.option(id_key)); for (const std::string& opt_key : dirty_options) { int variant_index = -2; const Search::Option &option = searcher.get_option(opt_key, type, variant_index); - if (option.opt_key() != opt_key && variant_index < -1) { + if (variant_index == -2) { // When founded option isn't the correct one. // It can be for dirty_options: "default_print_profile", "printer_model", "printer_settings_id", // because of they don't exist in searcher continue; } - auto category = option.category_local; - if (variant_index >= 0) { - if (printer_options_with_variant_2.count(opt_key.substr(0, opt_key.find_last_of('#'))) > 0) - variant_index /= 2; - if (boost::nowide::narrow(category).find("Extruder ") == 0) - category = category.substr(0, 8); - if (extruder_id) - category = category + (wxString(" {") + (extruder_id->values[variant_index] == 1 ? _L("Left: ") : _L("Right: ")) - + L(extruder_variant->values[variant_index]) + "}"); - else - category = category + (wxString(" {") + L(extruder_variant->values[variant_index]) + "}"); + wxString category = option.category_local; + wxString label = option.label_local; + if (type == Preset::TYPE_PRINTER && variant_index >= 0 && + printer_options_with_variant_2.count(get_pure_opt_key(opt_key)) > 0) { + // Orca: silent_mode is obsolete on import, but its option and two-column UI still exist. + // Keep mode labels for configs that explicitly enable it; omit them in the default single-mode UI. + if (new_config.opt_bool("silent_mode")) + label += " (" + (variant_index % 2 == 0 ? _L("Normal") : _L("Silent")) + ")"; + variant_index /= 2; + } + if (variant_index >= 0 && extruder_variant && variant_index < extruder_variant->size()) { + // Orca: Match the untranslated category and use the same extruder names as the printer tabs. + if (option.category.compare(0, 9, L"Extruder ") == 0) + category = _L("Extruder"); + wxString variant_label = L(extruder_variant->values[variant_index]); + // Orca: An extruder name only disambiguates variants on printers with multiple extruders. + if (multiple_extruders && extruder_id && variant_index < extruder_id->size() && extruder_id->values[variant_index] > 0) { + const wxString extruder_name = Tab::translate_category( + wxString::Format("Extruder %d", extruder_id->values[variant_index]), Preset::TYPE_PRINTER); + variant_label = extruder_name + " (" + variant_label + ")"; + } + category = variant_label + ": " + category; } /*m_tree->Append(opt_key, type, option.category_local, option.group_local, option.label_local, @@ -1584,7 +1606,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres //PresetItem pi = {opt_key, type, 1983}; //m_presetitems.push_back() - PresetItem pi = {type, opt_key, category, option.group_local, option.label_local, get_string_value(opt_key, old_config), get_string_value(opt_key, new_config)}; + PresetItem pi = {type, opt_key, category, option.group_local, label, get_string_value(opt_key, old_config), get_string_value(opt_key, new_config)}; m_presetitems.push_back(pi); } diff --git a/tests/libslic3r/test_preset_diff.cpp b/tests/libslic3r/test_preset_diff.cpp index 399fdabae1..22255c049e 100644 --- a/tests/libslic3r/test_preset_diff.cpp +++ b/tests/libslic3r/test_preset_diff.cpp @@ -33,3 +33,20 @@ TEST_CASE("deep_diff flags new vector entries that duplicate values[0]", "[Prese // specific to new indices rather than flagging the whole vector. REQUIRE(std::find(diff.begin(), diff.end(), "nozzle_diameter#0") == diff.end()); } + +TEST_CASE("deep_diff distinguishes absolute and percentage speeds for each variant", "[PresetDiff][Config]") +{ + const size_t changed_index = GENERATE(size_t(0), size_t(1)); + Preset reference(Preset::TYPE_PRINT, "ref"); + reference.config.set_key_value("small_perimeter_speed", new ConfigOptionFloatsOrPercents{{50., false}, {50., false}}); + + Preset edited = reference; + edited.config.option("small_perimeter_speed")->values[changed_index].percent = true; + + const auto diff = PresetCollection::dirty_options(&edited, &reference, /*deep_compare=*/true); + REQUIRE(diff == std::vector{"small_perimeter_speed#" + std::to_string(changed_index)}); + + DynamicPrintConfig transferred = reference.config; + transferred.apply_only(edited.config, diff); + REQUIRE(*transferred.option("small_perimeter_speed") == *edited.config.option("small_perimeter_speed")); +} From f520e9221f220657f752d269ead37dd61e9cb0c3 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Fri, 18 Sep 2026 00:39:46 +0800 Subject: [PATCH 159/162] Repair shipped default materials and obsolete settings, and validate them (#15741) * add orca profile skill * add default material check Improve validation for default materials and filament profiles * Fix default materials and obsolete keys * clarifying orca-profiles skill --- .claude/skills/orca-profiles/SKILL.md | 120 ++++ .../references/filament-profiles.md | 207 ++++++ .../skills/orca-profiles/references/ids.md | 183 +++++ .../references/machine-profiles.md | 194 ++++++ .../references/process-profiles.md | 145 ++++ .../references/review-checklist.md | 177 +++++ .../orca-profiles/references/validation.md | 264 +++++++ .../orca-profiles/references/vendor-bundle.md | 175 +++++ resources/profiles/Afinia.json | 2 +- .../Afinia/machine/Afinia H+1(HS).json | 2 +- .../Afinia/machine/fdm_afinia_common.json | 7 +- .../Afinia/machine/fdm_machine_common.json | 1 - ....18mm Fine @Afinia H+1(HS) 0.6 nozzle.json | 2 - ...m Standard @Afinia H+1(HS) 0.6 nozzle.json | 2 - ...m Standard @Afinia H+1(HS) 0.6 nozzle.json | 2 - ...m Strength @Afinia H+1(HS) 0.6 nozzle.json | 2 - ...36mm Draft @Afinia H+1(HS) 0.6 nozzle.json | 2 - ...xtra Draft @Afinia H+1(HS) 0.6 nozzle.json | 2 - .../process/fdm_process_afinia_common.json | 1 - .../Afinia/process/fdm_process_common.json | 1 - resources/profiles/Anker.json | 2 +- .../machine/Anker M5 All-Metal Hot End.json | 2 +- .../profiles/Anker/machine/Anker M5.json | 2 +- .../profiles/Anker/machine/Anker M5C.json | 2 +- .../Anker/machine/fdm_machine_common.json | 1 - resources/profiles/Anycubic.json | 2 +- ... ABS @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ... ABS @Anycubic Kobra 3 Max 0.6 nozzle.json | 6 - ... ABS @Anycubic Kobra 3 Max 0.8 nozzle.json | 6 - ...bic ABS @Anycubic Kobra S1 0.4 nozzle.json | 6 - ...ubic ASA @Anycubic Kobra 3 0.4 nozzle.json | 6 - ... ASA @Anycubic Kobra 3 Max 0.6 nozzle.json | 6 - ... ASA @Anycubic Kobra 3 Max 0.8 nozzle.json | 6 - ...bic ASA @Anycubic Kobra S1 0.4 nozzle.json | 6 - ... 95A @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...bic PETG @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...PETG @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...PETG @Anycubic Kobra 3 Max 0.6 nozzle.json | 6 - ...PETG @Anycubic Kobra 3 Max 0.8 nozzle.json | 6 - ...ic PETG @Anycubic Kobra S1 0.4 nozzle.json | 6 - ... PLA @Anycubic Kobra 2 Max 0.4 nozzle.json | 6 - ... PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json | 6 - ...PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json | 6 - ... PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json | 6 - ...ubic PLA @Anycubic Kobra 3 0.2 nozzle.json | 6 - ...ubic PLA @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...ubic PLA @Anycubic Kobra 3 0.6 nozzle.json | 6 - ...ubic PLA @Anycubic Kobra 3 0.8 nozzle.json | 6 - ... PLA @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ... PLA @Anycubic Kobra 3 Max 0.6 nozzle.json | 6 - ... PLA @Anycubic Kobra 3 Max 0.8 nozzle.json | 6 - ...ic PLA @Anycubic Kobra Neo 0.4 nozzle.json | 6 - ...bic PLA @Anycubic Kobra S1 0.4 nozzle.json | 6 - ...PLA Glow @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...gh Speed @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...peed @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...h Speed @Anycubic Kobra S1 0.4 nozzle.json | 6 - ...nous @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...LA Matte @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...atte @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...c PLA SE @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...Silk @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...LA Silk @Anycubic Kobra S1 0.4 nozzle.json | 6 - ...PLA Slik @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...bic PLA+ @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...ic PLA+ @Anycubic Kobra S1 0.4 nozzle.json | 6 - ... TPU @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ... TPU @Anycubic Kobra 3 Max 0.6 nozzle.json | 6 - ... TPU @Anycubic Kobra 3 Max 0.8 nozzle.json | 6 - ...bic TPU @Anycubic Kobra S1 0.4 nozzle.json | 6 - ...eric ABS @Anycubic Kobra 3 0.4 nozzle.json | 6 - ...asic @Anycubic Kobra 3 Max 0.4 nozzle.json | 6 - ...eric TPU @Anycubic Kobra 3 0.4 nozzle.json | 6 - .../Anycubic Kobra 2 Max 0.4 nozzle.json | 1 - .../machine/Anycubic Kobra 2 Max.json | 2 +- .../Anycubic Kobra 2 Neo 0.4 nozzle.json | 1 - .../Anycubic Kobra 2 Plus 0.4 nozzle.json | 1 - .../machine/Anycubic Kobra 2 Plus.json | 2 +- .../Anycubic Kobra 2 Pro 0.4 nozzle.json | 1 - .../machine/Anycubic Kobra 2 Pro.json | 2 +- .../machine/Anycubic Kobra 3 0.2 nozzle.json | 1 - .../machine/Anycubic Kobra 3 0.4 nozzle.json | 1 - .../machine/Anycubic Kobra 3 0.6 nozzle.json | 1 - .../machine/Anycubic Kobra 3 0.8 nozzle.json | 1 - .../Anycubic Kobra 3 Max 0.4 nozzle.json | 11 +- .../Anycubic Kobra 3 Max 0.6 nozzle.json | 1 - .../Anycubic Kobra 3 Max 0.8 nozzle.json | 1 - .../machine/Anycubic Kobra 3 Max.json | 2 +- .../Anycubic/machine/Anycubic Kobra 3.json | 2 +- .../Anycubic Kobra Neo 0.4 nozzle.json | 1 - .../Anycubic/machine/Anycubic Kobra Neo.json | 2 +- .../machine/Anycubic Kobra S1 0.4 nozzle.json | 1 - .../Anycubic Kobra S1 Max 0.25 nozzle.json | 503 +++++++------- .../Anycubic Kobra S1 Max 0.4 nozzle.json | 503 +++++++------- .../Anycubic Kobra S1 Max 0.6 nozzle.json | 503 +++++++------- .../Anycubic Kobra S1 Max 0.8 nozzle.json | 503 +++++++------- .../machine/Anycubic Kobra S1 Max.json | 24 +- .../Anycubic/machine/Anycubic Kobra S1.json | 2 +- .../machine/Anycubic Kobra X 0.4 nozzle.json | 15 +- .../Anycubic/machine/Anycubic Predator.json | 2 +- .../Anycubic/machine/fdm_machine_common.json | 1 - ...rd @Anycubic Kobra S1 Max 0.25 nozzle.json | 643 +++++++++--------- ...ghDetail @Anycubic Kobra 3 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...rd @Anycubic Kobra S1 Max 0.25 nozzle.json | 643 +++++++++--------- ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - ...m Detail @Anycubic Kobra 3 0.2 nozzle.json | 2 - ...rd @Anycubic Kobra S1 Max 0.25 nozzle.json | 643 +++++++++--------- ...tail @Anycubic Kobra 2 Neo 0.4 nozzle.json | 2 - ...m Detail @Anycubic Kobra 3 0.4 nozzle.json | 2 - ...Detail @Anycubic Kobra Neo 0.4 nozzle.json | 2 - ... Quality @Anycubic Kobra X 0.4 nozzle.json | 3 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...rd @Anycubic Kobra S1 Max 0.25 nozzle.json | 643 +++++++++--------- ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - ...rd @Anycubic Kobra S1 Max 0.25 nozzle.json | 643 +++++++++--------- .../0.15mm Optimal @Anycubic 4MaxPro2.json | 1 - .../0.15mm Optimal @Anycubic Chiron.json | 1 - .../0.15mm Optimal @Anycubic Kobra.json | 1 - .../0.15mm Optimal @Anycubic Kobra2.json | 1 - .../0.15mm Optimal @Anycubic KobraMax.json | 1 - .../0.15mm Optimal @Anycubic KobraPlus.json | 1 - .../0.15mm Optimal @Anycubic Vyper.json | 1 - .../0.15mm Optimal @Anycubic i3MegaS.json | 1 - ...ity @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ... Quality @Anycubic Kobra X 0.4 nozzle.json | 3 - ...imal @Anycubic Kobra 2 Pro 0.4 nozzle.json | 2 - ... Optimal @Anycubic Kobra 3 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 2 Neo 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...andard @Anycubic Kobra Neo 0.4 nozzle.json | 2 - ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - ...dard @Anycubic Kobra 3 Max 0.6 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.6 nozzle.json | 643 +++++++++--------- ...ity @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ... Quality @Anycubic Kobra X 0.4 nozzle.json | 3 - .../0.20mm Standard @Anycubic 4MaxPro2.json | 1 - .../0.20mm Standard @Anycubic Chiron.json | 1 - ...dard @Anycubic Kobra 2 Max 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 2 Neo 0.4 nozzle.json | 2 - ...ard @Anycubic Kobra 2 Plus 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 2 Pro 0.4 nozzle.json | 2 - ...Standard @Anycubic Kobra 3 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...dard @Anycubic Kobra 3 Max 0.8 nozzle.json | 3 - ...andard @Anycubic Kobra Neo 0.4 nozzle.json | 2 - ...tandard @Anycubic Kobra S1 0.4 nozzle.json | 2 - ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - .../0.20mm Standard @Anycubic Kobra.json | 1 - .../0.20mm Standard @Anycubic Kobra2.json | 1 - .../0.20mm Standard @Anycubic KobraMax.json | 1 - .../0.20mm Standard @Anycubic KobraPlus.json | 1 - .../0.20mm Standard @Anycubic Vyper.json | 1 - .../0.20mm Standard @Anycubic i3MegaS.json | 1 - ...mm Draft @Anycubic Kobra 3 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...dard @Anycubic Kobra 3 Max 0.6 nozzle.json | 3 - ...dard @Anycubic Kobra 3 Max 0.8 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...ard @Anycubic Kobra S1 Max 0.6 nozzle.json | 643 +++++++++--------- ...ard @Anycubic Kobra S1 Max 0.8 nozzle.json | 643 +++++++++--------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - ...raft @Anycubic Kobra 2 Pro 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 2 Neo 0.4 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.4 nozzle.json | 4 - ...andard @Anycubic Kobra Neo 0.4 nozzle.json | 2 - ...ard @Anycubic Kobra S1 Max 0.4 nozzle.json | 637 +++++++++-------- ...Standard @Anycubic Kobra X 0.4 nozzle.json | 3 - ...perDraft @Anycubic Kobra 3 0.4 nozzle.json | 2 - .../0.30mm Draft @Anycubic 4MaxPro2.json | 1 - .../0.30mm Draft @Anycubic Chiron.json | 1 - .../process/0.30mm Draft @Anycubic Kobra.json | 1 - .../0.30mm Draft @Anycubic Kobra2.json | 1 - .../0.30mm Draft @Anycubic KobraMax.json | 1 - .../0.30mm Draft @Anycubic KobraPlus.json | 1 - .../process/0.30mm Draft @Anycubic Vyper.json | 1 - .../0.30mm Draft @Anycubic i3MegaS.json | 1 - ...Standard @Anycubic Kobra 3 0.6 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.6 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.6 nozzle.json | 643 +++++++++--------- ...dard @Anycubic Kobra 3 Max 0.8 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.8 nozzle.json | 643 +++++++++--------- ...dard @Anycubic Kobra 3 Max 0.6 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.6 nozzle.json | 643 +++++++++--------- ...Standard @Anycubic Kobra 3 0.8 nozzle.json | 2 - ...dard @Anycubic Kobra 3 Max 0.8 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.8 nozzle.json | 643 +++++++++--------- ...dard @Anycubic Kobra 3 Max 0.6 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.6 nozzle.json | 643 +++++++++--------- ...dard @Anycubic Kobra 3 Max 0.8 nozzle.json | 3 - ...ard @Anycubic Kobra S1 Max 0.8 nozzle.json | 643 +++++++++--------- ...ard @Anycubic Kobra S1 Max 0.8 nozzle.json | 643 +++++++++--------- .../Anycubic/process/fdm_process_common.json | 2 - resources/profiles/Artillery.json | 2 +- .../machine/Artillery M1 Pro 0.2 nozzle.json | 1 - .../machine/Artillery M1 Pro 0.4 nozzle.json | 1 - .../machine/Artillery M1 Pro 0.6 nozzle.json | 1 - .../machine/Artillery M1 Pro 0.8 nozzle.json | 1 - .../Artillery/machine/Artillery M1 Pro.json | 2 +- ...tillery Sidewinder X3 Plus 0.4 nozzle.json | 1 - ...rtillery Sidewinder X3 Pro 0.4 nozzle.json | 1 - ...tillery Sidewinder X4 Plus 0.4 nozzle.json | 1 - ...rtillery Sidewinder X4 Pro 0.4 nozzle.json | 1 - .../Artillery/machine/fdm_machine_common.json | 1 - ...tra Fine @Artillery M1 Pro 0.4 nozzle.json | 1 - ... Quality @Artillery M1 Pro 0.2 nozzle.json | 1 - ... Quality @Artillery M1 Pro 0.4 nozzle.json | 1 - ...2mm Fine @Artillery M1 Pro 0.4 nozzle.json | 1 - ... Quality @Artillery M1 Pro 0.4 nozzle.json | 1 - .../0.15mm Optimal @Artillery Genius Pro.json | 7 +- .../0.15mm Optimal @Artillery Genius.json | 7 +- ... Quality @Artillery M1 Pro 0.4 nozzle.json | 1 - .../0.16mm Optimal @Artillery Hornet.json | 7 +- ... Optimal @Artillery M1 Pro 0.4 nozzle.json | 1 - .../process/0.16mm Optimal @Artillery X1.json | 7 +- ...0.20mm Standard @Artillery Genius Pro.json | 7 +- .../0.20mm Standard @Artillery Genius.json | 7 +- .../0.20mm Standard @Artillery Hornet.json | 7 +- ...Standard @Artillery M1 Pro 0.4 nozzle.json | 1 - .../0.20mm Standard @Artillery X1.json | 7 +- .../0.20mm Standard @Artillery X2.json | 7 +- ...Standard @Artillery X3Plus 0.4 nozzle.json | 1 - ... Standard @Artillery X3Pro 0.4 nozzle.json | 1 - ...Standard @Artillery X4Plus 0.4 nozzle.json | 1 - ... Standard @Artillery X4Pro 0.4 nozzle.json | 1 - ...Strength @Artillery M1 Pro 0.4 nozzle.json | 1 - .../0.24mm Draft @Artillery Hornet.json | 7 +- ...mm Draft @Artillery M1 Pro 0.4 nozzle.json | 1 - ...mm Draft @Artillery M1 Pro 0.6 nozzle.json | 1 - ...mm Draft @Artillery M1 Pro 0.8 nozzle.json | 1 - .../process/0.24mm Draft @Artillery X1.json | 7 +- .../0.25mm Draft @Artillery Genius Pro.json | 7 +- .../0.25mm Draft @Artillery Genius.json | 7 +- ...ra Draft @Artillery M1 Pro 0.4 nozzle.json | 1 - .../Artillery/process/fdm_process_common.json | 2 - resources/profiles/BBL.json | 2 +- .../BBL/machine/Bambu Lab A1 mini.json | 2 +- .../profiles/BBL/machine/Bambu Lab A1.json | 2 +- .../profiles/BBL/machine/Bambu Lab A2L.json | 2 +- .../profiles/BBL/machine/Bambu Lab H2C.json | 2 +- .../BBL/machine/Bambu Lab H2D Pro.json | 2 +- .../profiles/BBL/machine/Bambu Lab H2D.json | 2 +- .../profiles/BBL/machine/Bambu Lab H2S.json | 2 +- .../profiles/BBL/machine/Bambu Lab P1P.json | 2 +- .../profiles/BBL/machine/Bambu Lab P1S.json | 2 +- .../profiles/BBL/machine/Bambu Lab P2S.json | 2 +- .../BBL/machine/Bambu Lab X1 Carbon.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1E.json | 2 +- .../profiles/BBL/machine/Bambu Lab X2D.json | 2 +- .../BBL/machine/fdm_machine_common.json | 1 - .../0.06mm Fine @BBL P1P 0.2 nozzle.json | 4 - ...06mm High Quality @BBL P1P 0.2 nozzle.json | 4 - ...06mm High Quality @BBL X1C 0.2 nozzle.json | 5 - .../0.06mm Standard @BBL X1C 0.2 nozzle.json | 5 - .../process/0.08mm Extra Fine @BBL P1P.json | 4 - .../process/0.08mm Extra Fine @BBL X1C.json | 5 - ...08mm High Quality @BBL A2L 0.2 nozzle.json | 1 - .../process/0.08mm High Quality @BBL A2L.json | 1 - ...08mm High Quality @BBL H2S 0.2 nozzle.json | 5 - .../process/0.08mm High Quality @BBL H2S.json | 5 - ...08mm High Quality @BBL P1P 0.2 nozzle.json | 4 - .../process/0.08mm High Quality @BBL P1P.json | 4 - ...08mm High Quality @BBL P2S 0.2 nozzle.json | 5 - .../process/0.08mm High Quality @BBL P2S.json | 5 - ...08mm High Quality @BBL X1C 0.2 nozzle.json | 5 - .../process/0.08mm High Quality @BBL X1C.json | 5 - .../0.08mm Optimal @BBL P1P 0.2 nozzle.json | 4 - .../0.08mm Standard @BBL X1C 0.2 nozzle.json | 5 - ...10mm High Quality @BBL P1P 0.2 nozzle.json | 4 - ...10mm High Quality @BBL X1C 0.2 nozzle.json | 5 - .../0.10mm Standard @BBL A2L 0.2 nozzle.json | 4 - .../0.10mm Standard @BBL H2S 0.2 nozzle.json | 5 - .../0.10mm Standard @BBL P1P 0.2 nozzle.json | 4 - .../0.10mm Standard @BBL P2S 0.2 nozzle.json | 5 - .../0.10mm Standard @BBL X1C 0.2 nozzle.json | 5 - ... Balanced Quality @BBL A2L 0.2 nozzle.json | 1 - ... Balanced Quality @BBL H2S 0.2 nozzle.json | 5 - ... Balanced Quality @BBL P2S 0.2 nozzle.json | 5 - .../0.12mm Draft @BBL P1P 0.2 nozzle.json | 4 - .../BBL/process/0.12mm Fine @BBL P1P.json | 4 - .../BBL/process/0.12mm Fine @BBL X1C.json | 5 - .../process/0.12mm High Quality @BBL A2L.json | 1 - .../process/0.12mm High Quality @BBL H2S.json | 5 - .../process/0.12mm High Quality @BBL P1P.json | 4 - .../process/0.12mm High Quality @BBL P2S.json | 5 - .../process/0.12mm High Quality @BBL X1C.json | 5 - .../0.12mm Standard @BBL X1C 0.2 nozzle.json | 5 - ....14mm Extra Draft @BBL P1P 0.2 nozzle.json | 4 - .../0.14mm Standard @BBL X1C 0.2 nozzle.json | 5 - .../process/0.16mm High Quality @BBL A2L.json | 1 - .../process/0.16mm High Quality @BBL H2S.json | 5 - .../process/0.16mm High Quality @BBL P1P.json | 4 - .../process/0.16mm High Quality @BBL P2S.json | 5 - .../process/0.16mm High Quality @BBL X1C.json | 5 - .../BBL/process/0.16mm Optimal @BBL P1P.json | 4 - .../BBL/process/0.16mm Optimal @BBL X1C.json | 5 - .../BBL/process/0.16mm Standard @BBL A2L.json | 1 - .../BBL/process/0.16mm Standard @BBL H2S.json | 5 - .../BBL/process/0.16mm Standard @BBL P2S.json | 5 - ... Balanced Quality @BBL A2L 0.6 nozzle.json | 1 - ... Balanced Quality @BBL H2S 0.6 nozzle.json | 5 - ... Balanced Quality @BBL P2S 0.6 nozzle.json | 5 - .../0.18mm Fine @BBL P1P 0.6 nozzle.json | 4 - .../0.18mm Standard @BBL X1C 0.6 nozzle.json | 5 - .../process/0.20mm High Quality @BBL A2L.json | 1 - .../process/0.20mm High Quality @BBL H2S.json | 5 - .../process/0.20mm High Quality @BBL P2S.json | 5 - .../BBL/process/0.20mm Standard @BBL A2L.json | 1 - .../BBL/process/0.20mm Standard @BBL H2S.json | 5 - .../BBL/process/0.20mm Standard @BBL P1P.json | 4 - .../BBL/process/0.20mm Standard @BBL P2S.json | 5 - .../BBL/process/0.20mm Standard @BBL X1C.json | 5 - .../BBL/process/0.20mm Steady @BBL A2L.json | 5 - .../BBL/process/0.20mm Strength @BBL P1P.json | 4 - .../BBL/process/0.20mm Strength @BBL X1C.json | 5 - ... Balanced Quality @BBL A2L 0.6 nozzle.json | 1 - ... Balanced Quality @BBL A2L 0.8 nozzle.json | 1 - ... Balanced Quality @BBL H2S 0.6 nozzle.json | 5 - ... Balanced Quality @BBL H2S 0.8 nozzle.json | 5 - ... Balanced Quality @BBL P2S 0.6 nozzle.json | 5 - ... Balanced Quality @BBL P2S 0.8 nozzle.json | 5 - .../BBL/process/0.24mm Draft @BBL P1P.json | 4 - .../BBL/process/0.24mm Draft @BBL X1C.json | 5 - .../0.24mm Fine @BBL P1P 0.8 nozzle.json | 4 - .../0.24mm Optimal @BBL P1P 0.6 nozzle.json | 4 - .../BBL/process/0.24mm Standard @BBL A2L.json | 1 - .../BBL/process/0.24mm Standard @BBL H2S.json | 5 - .../BBL/process/0.24mm Standard @BBL P2S.json | 5 - .../0.24mm Standard @BBL X1C 0.6 nozzle.json | 5 - .../0.24mm Standard @BBL X1C 0.8 nozzle.json | 5 - .../process/0.28mm Extra Draft @BBL P1P.json | 4 - .../process/0.28mm Extra Draft @BBL X1C.json | 5 - .../0.30mm Standard @BBL A2L 0.6 nozzle.json | 1 - .../0.30mm Standard @BBL H2S 0.6 nozzle.json | 5 - .../0.30mm Standard @BBL P1P 0.6 nozzle.json | 4 - .../0.30mm Standard @BBL P2S 0.6 nozzle.json | 5 - .../0.30mm Standard @BBL X1 0.6 nozzle.json | 4 - .../0.30mm Standard @BBL X1C 0.6 nozzle.json | 5 - .../0.30mm Strength @BBL P1P 0.6 nozzle.json | 4 - .../0.30mm Strength @BBL X1C 0.6 nozzle.json | 5 - ... Balanced Quality @BBL A2L 0.8 nozzle.json | 1 - ... Balanced Quality @BBL H2S 0.8 nozzle.json | 5 - ... Balanced Quality @BBL P2S 0.8 nozzle.json | 5 - .../0.32mm Optimal @BBL P1P 0.8 nozzle.json | 4 - .../0.32mm Standard @BBL X1C 0.8 nozzle.json | 5 - .../0.36mm Draft @BBL P1P 0.6 nozzle.json | 4 - .../0.36mm Standard @BBL X1C 0.6 nozzle.json | 5 - .../0.40mm Standard @BBL A2L 0.8 nozzle.json | 1 - .../0.40mm Standard @BBL H2S 0.8 nozzle.json | 5 - .../0.40mm Standard @BBL P1P 0.8 nozzle.json | 4 - .../0.40mm Standard @BBL P2S 0.8 nozzle.json | 5 - .../0.40mm Standard @BBL X1 0.8 nozzle.json | 4 - .../0.40mm Standard @BBL X1C 0.8 nozzle.json | 5 - ....42mm Extra Draft @BBL P1P 0.6 nozzle.json | 4 - .../0.42mm Standard @BBL X1C 0.6 nozzle.json | 5 - .../0.48mm Draft @BBL P1P 0.8 nozzle.json | 4 - .../0.48mm Standard @BBL X1C 0.8 nozzle.json | 5 - ....56mm Extra Draft @BBL P1P 0.8 nozzle.json | 4 - .../0.56mm Standard @BBL X1C 0.8 nozzle.json | 5 - .../BBL/process/fdm_process_common.json | 6 - .../BBL/process/fdm_process_dual_common.json | 7 - resources/profiles/BIQU.json | 2 +- .../machine/BIQU Hurakan (0.4 nozzle).json | 1 - .../BIQU/machine/fdm_biqu_common.json | 1 - .../BIQU/machine/fdm_klipper_common.json | 1 - .../BIQU/machine/fdm_machine_common.json | 2 - .../BIQU/process/fdm_process_biqu_common.json | 1 - .../BIQU/process/fdm_process_common.json | 1 - .../process/fdm_process_hurakan_common.json | 1 - resources/profiles/Blocks.json | 2 +- .../Blocks/machine/fdm_klipper_common.json | 1 - .../Blocks/machine/fdm_machine_common.json | 1 - .../0.12mm Fine 0.4 nozzle @Blocks_RF50.json | 1 - ....16mm Optimal 0.4 nozzle @Blocks_RF50.json | 1 - ....20mm Optimal 0.6 nozzle @Blocks_RF50.json | 1 - ...20mm Standard 0.4 nozzle @Blocks_RF50.json | 1 - .../0.24mm Draft 0.4 nozzle @Blocks_RF50.json | 1 - ...26mm Standard 0.6 nozzle @Blocks_RF50.json | 1 - ...m Extra Draft 0.4 nozzle @Blocks_RF50.json | 1 - ....30mm Optimal 0.8 nozzle @Blocks_RF50.json | 1 - .../0.32mm Draft 0.6 nozzle @Blocks_RF50.json | 1 - ...m Extra Draft 0.6 nozzle @Blocks_RF50.json | 1 - ...38mm Standard 0.8 nozzle @Blocks_RF50.json | 1 - .../0.46mm Draft 0.8 nozzle @Blocks_RF50.json | 1 - ...m Extra Draft 0.8 nozzle @Blocks_RF50.json | 1 - .../process/fdm_process_blocks_common.json | 1 - .../fdm_process_common 0.6 nozzle.json | 1 - .../fdm_process_common 0.8 nozzle.json | 1 - .../fdm_process_common 1.0 nozzle.json | 1 - .../fdm_process_common 1.2 nozzle.json | 1 - .../Blocks/process/fdm_process_common.json | 1 - resources/profiles/CONSTRUCT3D.json | 2 +- .../machine/fdm_machine_common.json | 2 - .../process/fdm_process_common.json | 2 - resources/profiles/Chuanying.json | 2 +- .../filament/Generic ASA @Chuanying.json | 5 +- .../filament/Generic HIPS @Chuanying.json | 8 +- .../filament/Generic HS PLA @Chuanying.json | 11 +- .../Generic PETG-CF10 @Chuanying.json | 5 +- .../filament/Generic PLA-CF10 @Chuanying.json | 11 +- .../filament/Generic PVA @Chuanying.json | 8 +- .../filament/Generic TPU @Chuanying.json | 5 +- .../Chuanying/machine/Chuanying X1.json | 2 +- .../machine/fdm_chuanying_common.json | 1 - .../Chuanying/machine/fdm_klipper_common.json | 2 - .../Chuanying/machine/fdm_machine_common.json | 2 - .../process/fdm_process_chuanying_0.20.json | 1 - .../process/fdm_process_chuanying_0.30.json | 1 - .../process/fdm_process_chuanying_common.json | 1 - .../Chuanying/process/fdm_process_common.json | 1 - resources/profiles/Co Print.json | 2 +- .../filament/Generic PLA @CoPrint.json | 8 +- .../Co Print/filament/fdm_filament_pla.json | 6 - .../Co Print/machine/fdm_machine_common.json | 1 - .../Co Print/process/fdm_process_common.json | 1 - .../process/fdm_process_coprint_common.json | 1 - resources/profiles/CoLiDo.json | 2 +- .../CoLiDo/filament/fdm_filament_pla.json | 6 - .../machine/CoLiDo 160 V2 0.4 nozzle.json | 1 - .../machine/CoLiDo DIY 4.0 0.4 nozzle.json | 1 - .../CoLiDo/machine/CoLiDo X16 0.4 nozzle.json | 1 - .../CoLiDo/machine/fdm_klipper_common.json | 3 +- .../CoLiDo/machine/fdm_machine_common.json | 1 - .../process/fdm_process_colido_common.json | 1 - .../fdm_process_colidodiy40_common.json | 1 - .../fdm_process_colidodiy40v2_common.json | 2 - .../process/fdm_process_colidosr1_common.json | 2 - .../process/fdm_process_colidox16_common.json | 1 - .../CoLiDo/process/fdm_process_common.json | 3 - resources/profiles/Comgrow.json | 2 +- .../Comgrow/machine/fdm_comgrow_common.json | 1 - .../Comgrow/machine/fdm_machine_common.json | 1 - .../0.16mm Opitmal @Comgrow T500 0.6.json | 1 - .../0.16mm Optimal @Comgrow T500 0.4.json | 1 - .../process/0.18mm Optimal @Comgrow T500.json | 1 - ... Optimal @Comgrow T300 0.4 - official.json | 1 - .../0.20mm Standard @Comgrow T500 0.4.json | 1 - .../0.20mm Standard @Comgrow T500 0.6.json | 1 - .../0.20mm Standard @Comgrow T500.json | 1 - .../0.24mm Draft @Comgrow T500 0.4.json | 1 - .../0.24mm Draft @Comgrow T500 0.6.json | 1 - .../0.24mm Optimal @Comgrow T500 0.8.json | 1 - .../0.28mm SuperDraft @Comgrow T500 0.4.json | 1 - .../0.28mm SuperDraft @Comgrow T500 0.6.json | 1 - .../0.32mm Standard @Comgrow T500 0.8.json | 1 - .../0.40mm Draft @Comgrow T500 0.8.json | 1 - .../0.48mm Draft @Comgrow T500 0.8.json | 1 - .../0.56mm SuperDraft @Comgrow T500 0.8.json | 1 - .../process/fdm_process_comgrow_common.json | 1 - .../Comgrow/process/fdm_process_common.json | 1 - resources/profiles/Creality.json | 2 +- .../filament/CR-ABS @Ender-3 V4-all.json | 350 +++++----- .../Creality/filament/CR-ABS @Hi-all.json | 332 +++++---- .../filament/CR-ABS @K1 Max_CFS-C-all.json | 308 +++++---- .../Creality/filament/CR-ABS @K1 SE-all.json | 344 +++++----- .../filament/CR-ABS @K1 SE_CFS-C-all.json | 344 +++++----- .../Creality/filament/CR-ABS @K1C-all.json | 308 +++++---- .../filament/CR-ABS @K1C_CFS-C-all.json | 308 +++++---- .../filament/CR-ABS @K1_CFS-C-all.json | 308 +++++---- .../filament/CR-ABS @K2 Plus-all.json | 318 +++++---- .../Creality/filament/CR-ABS @K2 Pro-all.json | 326 +++++---- .../Creality/filament/CR-ABS @K2 SE-all.json | 354 +++++----- .../Creality/filament/CR-ABS @K2-all.json | 322 +++++---- .../filament/CR-Nylon @K1 Max_CFS-C-all.json | 378 +++++----- .../Creality/filament/CR-Nylon @K1C-all.json | 380 +++++------ .../filament/CR-Nylon @K1C_CFS-C-all.json | 380 +++++------ .../filament/CR-Nylon @K1_CFS-C-all.json | 380 +++++------ .../filament/CR-Nylon @K2 Plus-all.json | 392 ++++++----- .../filament/CR-PETG @Ender-3 V4-all.json | 296 ++++---- .../Creality/filament/CR-PETG @Hi-all.json | 300 ++++---- .../filament/CR-PETG @K1 Max_CFS-C-all.json | 310 +++++---- .../Creality/filament/CR-PETG @K1 SE-all.json | 278 ++++---- .../filament/CR-PETG @K1 SE_CFS-C-all.json | 278 ++++---- .../Creality/filament/CR-PETG @K1C-all.json | 318 +++++---- .../filament/CR-PETG @K1C_CFS-C-all.json | 314 +++++---- .../filament/CR-PETG @K1_CFS-C-all.json | 310 +++++---- .../filament/CR-PETG @K2 Plus-all.json | 288 ++++---- .../filament/CR-PETG @K2 Pro-all.json | 312 +++++---- .../Creality/filament/CR-PETG @K2 SE-all.json | 318 +++++---- .../Creality/filament/CR-PETG @K2-all.json | 312 +++++---- .../filament/CR-PETG @SPARKX i7-all.json | 274 ++++---- .../filament/CR-PLA @Ender-3 V4-all.json | 296 ++++---- .../Creality/filament/CR-PLA @Hi-all.json | 278 ++++---- .../filament/CR-PLA @K1 Max_CFS-C-all.json | 308 +++++---- .../Creality/filament/CR-PLA @K1 SE-all.json | 278 ++++---- .../filament/CR-PLA @K1 SE_CFS-C-all.json | 278 ++++---- .../Creality/filament/CR-PLA @K1C-all.json | 310 +++++---- .../filament/CR-PLA @K1C_CFS-C-all.json | 310 +++++---- .../filament/CR-PLA @K1_CFS-C-all.json | 310 +++++---- .../filament/CR-PLA @K2 Plus-all.json | 312 +++++---- .../Creality/filament/CR-PLA @K2 Pro-all.json | 324 +++++---- .../Creality/filament/CR-PLA @K2 SE-all.json | 282 ++++---- .../Creality/filament/CR-PLA @K2-all.json | 324 +++++---- .../filament/CR-PLA @SPARKX i7-all.json | 330 +++++---- .../CR-PLA Carbon @K1 Max_CFS-C-all.json | 324 +++++---- .../filament/CR-PLA Carbon @K1C-all.json | 324 +++++---- .../CR-PLA Carbon @K1C_CFS-C-all.json | 324 +++++---- .../filament/CR-PLA Carbon @K1_CFS-C-all.json | 324 +++++---- .../filament/CR-PLA Carbon @K2 Plus-all.json | 324 +++++---- .../CR-PLA Fluo @K1 Max_CFS-C-all.json | 308 +++++---- .../filament/CR-PLA Fluo @K1C-all.json | 310 +++++---- .../filament/CR-PLA Fluo @K1C_CFS-C-all.json | 310 +++++---- .../filament/CR-PLA Fluo @K1_CFS-C-all.json | 310 +++++---- .../filament/CR-PLA Fluo @K2 Plus-all.json | 312 +++++---- .../filament/CR-PLA Fluo @K2 Pro-all.json | 318 +++++---- .../filament/CR-PLA Fluo @K2-all.json | 318 +++++---- .../filament/CR-PLA Fluo @SPARKX i7-all.json | 318 +++++---- .../CR-PLA Matte @Ender-3 V4-all.json | 302 ++++---- .../CR-PLA Matte @K1 Max_CFS-C-all.json | 318 +++++---- .../filament/CR-PLA Matte @K1C-all.json | 318 +++++---- .../filament/CR-PLA Matte @K1C_CFS-C-all.json | 318 +++++---- .../filament/CR-PLA Matte @K1_CFS-C-all.json | 318 +++++---- .../filament/CR-PLA Matte @K2 Plus-all.json | 318 +++++---- .../filament/CR-PLA Matte @K2 Pro-all.json | 324 +++++---- .../filament/CR-PLA Matte @K2-all.json | 324 +++++---- .../filament/CR-PLA Matte @SPARKX i7-all.json | 336 +++++---- .../filament/CR-Silk @Ender-3 V4-all.json | 296 ++++---- .../Creality/filament/CR-Silk @Hi-all.json | 286 ++++---- .../filament/CR-Silk @K1 Max_CFS-C-all.json | 316 +++++---- .../Creality/filament/CR-Silk @K1 SE-all.json | 290 ++++---- .../filament/CR-Silk @K1 SE_CFS-C-all.json | 290 ++++---- .../Creality/filament/CR-Silk @K1C-all.json | 320 +++++---- .../filament/CR-Silk @K1C_CFS-C-all.json | 316 +++++---- .../filament/CR-Silk @K1_CFS-C-all.json | 316 +++++---- .../filament/CR-Silk @K2 Plus-all.json | 330 +++++---- .../filament/CR-Silk @K2 Pro-all.json | 326 +++++---- .../Creality/filament/CR-Silk @K2 SE-all.json | 288 ++++---- .../Creality/filament/CR-Silk @K2-all.json | 326 +++++---- .../filament/CR-Silk @SPARKX i7-all.json | 344 +++++----- .../filament/CR-TPU @K1 Max_CFS-C-all.json | 338 +++++---- .../Creality/filament/CR-TPU @K1C-all.json | 338 +++++---- .../filament/CR-TPU @K1C_CFS-C-all.json | 338 +++++---- .../filament/CR-TPU @K1_CFS-C-all.json | 338 +++++---- .../filament/CR-TPU @K2 Plus-all.json | 336 +++++---- .../Creality/filament/CR-TPU @K2 Pro-all.json | 346 +++++----- .../Creality/filament/CR-TPU @K2-all.json | 346 +++++----- .../filament/CR-TPU @SPARKX i7-all.json | 354 +++++----- .../filament/CR-Wood @K1 Max_CFS-C-all.json | 314 +++++---- .../Creality/filament/CR-Wood @K1C-all.json | 316 +++++---- .../filament/CR-Wood @K1C_CFS-C-all.json | 316 +++++---- .../filament/CR-Wood @K1_CFS-C-all.json | 316 +++++---- .../filament/CR-Wood @K2 Plus-all.json | 318 +++++---- .../Creality Hyper ABS @Ender-5Max-all.json | 2 - .../Creality Hyper PLA @Ender-5Max-all.json | 2 - ...Creality Hyper PLA-CF @Ender-5Max-all.json | 2 - .../Creality Silk PLA @Ender-5Max-all.json | 2 - .../filament/EN-PLA+ @K1 Max_CFS-C-all.json | 312 +++++---- .../Creality/filament/EN-PLA+ @K1C-all.json | 312 +++++---- .../filament/EN-PLA+ @K1C_CFS-C-all.json | 312 +++++---- .../filament/EN-PLA+ @K1_CFS-C-all.json | 312 +++++---- .../filament/EN-PLA+ @K2 Plus-all.json | 306 +++++---- .../filament/EN-PLA+ @K2 Pro-all.json | 318 +++++---- .../Creality/filament/EN-PLA+ @K2-all.json | 318 +++++---- .../filament/EN-PLA+ @SPARKX i7-all.json | 336 +++++---- .../filament/ENDER FAST PLA @Hi-all.json | 288 ++++---- .../filament/ENDER FAST PLA @K2 Plus-all.json | 332 +++++---- .../filament/ENDER FAST PLA @K2 Pro-all.json | 326 +++++---- .../filament/ENDER FAST PLA @K2-all.json | 326 +++++---- .../ENDER FAST PLA @SPARKX i7-all.json | 348 +++++----- .../filament/Ender-PLA @Ender-3 V4-all.json | 290 ++++---- .../Creality/filament/Ender-PLA @Hi-all.json | 310 +++++---- .../filament/Ender-PLA @K1 Max_CFS-C-all.json | 306 +++++---- .../Creality/filament/Ender-PLA @K1C-all.json | 306 +++++---- .../filament/Ender-PLA @K1C_CFS-C-all.json | 306 +++++---- .../filament/Ender-PLA @K1_CFS-C-all.json | 306 +++++---- .../filament/Ender-PLA @K2 Plus-all.json | 300 ++++---- .../filament/Ender-PLA @K2 Pro-all.json | 312 +++++---- .../Creality/filament/Ender-PLA @K2-all.json | 312 +++++---- .../filament/Ender-PLA @SPARKX i7-all.json | 330 +++++---- .../Generic ABS @Creality Ender-5Max-all.json | 4 +- .../filament/Generic ABS @Ender-3 V4-all.json | 338 +++++---- .../filament/Generic ABS @Hi-all.json | 332 +++++---- .../Generic ABS @K1 Max_CFS-C-all.json | 296 ++++---- .../filament/Generic ABS @K1 SE-all.json | 332 +++++---- .../Generic ABS @K1 SE_CFS-C-all.json | 332 +++++---- .../filament/Generic ABS @K1C-all.json | 296 ++++---- .../filament/Generic ABS @K1C_CFS-C-all.json | 296 ++++---- .../filament/Generic ABS @K1_CFS-C-all.json | 296 ++++---- .../filament/Generic ABS @K2 Plus-all.json | 312 +++++---- .../filament/Generic ABS @K2 Pro-all.json | 310 +++++---- .../filament/Generic ABS @K2 SE-all.json | 354 +++++----- .../filament/Generic ABS @K2-all.json | 322 +++++---- .../Generic ASA @Creality Ender-5Max-all.json | 4 +- .../Generic ASA @K1 Max_CFS-C-all.json | 314 +++++---- .../filament/Generic ASA @K1 SE-all.json | 338 +++++---- .../Generic ASA @K1 SE_CFS-C-all.json | 338 +++++---- .../filament/Generic ASA @K1C-all.json | 314 +++++---- .../filament/Generic ASA @K1C_CFS-C-all.json | 314 +++++---- .../filament/Generic ASA @K1_CFS-C-all.json | 314 +++++---- .../filament/Generic ASA @K2 Plus-all.json | 314 +++++---- .../filament/Generic ASA @K2 Pro-all.json | 316 +++++---- .../filament/Generic ASA @K2 SE-all.json | 348 +++++----- .../filament/Generic ASA @K2-all.json | 334 +++++---- .../filament/Generic ASA-CF @K2 Plus-all.json | 292 ++++---- .../filament/Generic BVOH @Hi-all.json | 258 ++++--- .../Generic BVOH @K1 Max_CFS-C-all.json | 320 +++++---- .../filament/Generic BVOH @K1C-all.json | 322 +++++---- .../filament/Generic BVOH @K1C_CFS-C-all.json | 322 +++++---- .../filament/Generic BVOH @K1_CFS-C-all.json | 322 +++++---- .../filament/Generic BVOH @K2 Plus-all.json | 284 ++++---- .../filament/Generic BVOH @K2 Pro-all.json | 284 ++++---- .../filament/Generic BVOH @K2-all.json | 284 ++++---- .../Generic HIPS @K1 Max_CFS-C-all.json | 342 +++++----- .../filament/Generic HIPS @K1C-all.json | 344 +++++----- .../filament/Generic HIPS @K1C_CFS-C-all.json | 344 +++++----- .../filament/Generic HIPS @K1_CFS-C-all.json | 344 +++++----- .../filament/Generic HIPS @K2 Plus-all.json | 284 ++++---- .../Generic PA @Creality Ender-5Max-all.json | 4 +- .../Generic PA @K1 Max_CFS-C-all.json | 330 +++++---- .../filament/Generic PA @K1C-all.json | 332 +++++---- .../filament/Generic PA @K1C_CFS-C-all.json | 332 +++++---- .../filament/Generic PA @K1_CFS-C-all.json | 332 +++++---- .../filament/Generic PA @K2 Plus-all.json | 362 +++++----- .../filament/Generic PA @K2 Pro-all.json | 388 ++++++----- .../Creality/filament/Generic PA @K2-all.json | 388 ++++++----- .../Generic PA-CF @K1 Max_CFS-C-all.json | 300 ++++---- .../filament/Generic PA-CF @K1C-all.json | 302 ++++---- .../Generic PA-CF @K1C_CFS-C-all.json | 302 ++++---- .../filament/Generic PA-CF @K1_CFS-C-all.json | 302 ++++---- .../filament/Generic PA-CF @K2 Plus-all.json | 360 +++++----- .../Generic PA12-CF @K2 Plus-all.json | 360 +++++----- .../Generic PA6-CF @K1 Max_CFS-C-all.json | 372 +++++----- .../filament/Generic PA6-CF @K1C-all.json | 374 +++++----- .../Generic PA6-CF @K1C_CFS-C-all.json | 374 +++++----- .../Generic PA6-CF @K1_CFS-C-all.json | 374 +++++----- .../filament/Generic PA6-CF @K2 Plus-all.json | 378 +++++----- .../filament/Generic PA6-CF @K2 Pro-all.json | 382 ++++++----- .../filament/Generic PA6-GF @K2 Plus-all.json | 302 ++++---- .../Generic PA612-CF @K2 Plus-all.json | 360 +++++----- .../Generic PA612-CF @K2 Pro-all.json | 364 +++++----- .../Generic PAHT-CF @K1 Max_CFS-C-all.json | 390 ++++++----- .../filament/Generic PAHT-CF @K1C-all.json | 392 ++++++----- .../Generic PAHT-CF @K1C_CFS-C-all.json | 392 ++++++----- .../Generic PAHT-CF @K1_CFS-C-all.json | 392 ++++++----- .../Generic PAHT-CF @K2 Plus-all.json | 390 ++++++----- .../filament/Generic PAHT-CF @K2 Pro-all.json | 364 +++++----- .../filament/Generic PAHT-CF @K2-all.json | 364 +++++----- .../Generic PC @K1 Max_CFS-C-all.json | 326 +++++---- .../filament/Generic PC @K1C-all.json | 326 +++++---- .../filament/Generic PC @K1C_CFS-C-all.json | 326 +++++---- .../filament/Generic PC @K1_CFS-C-all.json | 326 +++++---- .../filament/Generic PC @K2 Plus-all.json | 326 +++++---- .../filament/Generic PC @K2 Pro-all.json | 334 +++++---- .../filament/Generic PCTG @K2 Plus-all.json | 296 ++++---- .../Generic PET @K1 Max_CFS-C-all.json | 372 +++++----- .../filament/Generic PET @K1C-all.json | 374 +++++----- .../filament/Generic PET @K1C_CFS-C-all.json | 374 +++++----- .../filament/Generic PET @K1_CFS-C-all.json | 374 +++++----- .../filament/Generic PET @K2 Plus-all.json | 380 +++++------ .../filament/Generic PET @K2 Pro-all.json | 382 ++++++----- .../filament/Generic PET @K2-all.json | 382 ++++++----- .../Generic PET-CF @K1 Max_CFS-C-all.json | 348 +++++----- .../filament/Generic PET-CF @K1C-all.json | 350 +++++----- .../Generic PET-CF @K1C_CFS-C-all.json | 350 +++++----- .../Generic PET-CF @K1_CFS-C-all.json | 350 +++++----- .../filament/Generic PET-CF @K2 Plus-all.json | 386 ++++++----- .../filament/Generic PET-CF @K2 Pro-all.json | 382 ++++++----- ...Generic PETG @Creality Ender-5Max-all.json | 4 +- .../Generic PETG @Ender-3 V4-all.json | 296 ++++---- .../filament/Generic PETG @Hi-all.json | 298 ++++---- .../Generic PETG @K1 Max_CFS-C-all.json | 308 +++++---- .../filament/Generic PETG @K1 SE-all.json | 284 ++++---- .../Generic PETG @K1 SE_CFS-C-all.json | 284 ++++---- .../filament/Generic PETG @K1C-all.json | 308 +++++---- .../filament/Generic PETG @K1C_CFS-C-all.json | 308 +++++---- .../filament/Generic PETG @K1_CFS-C-all.json | 308 +++++---- .../filament/Generic PETG @K2 Plus-all.json | 280 ++++---- .../filament/Generic PETG @K2 Pro-all.json | 302 ++++---- .../filament/Generic PETG @K2 SE-all.json | 300 ++++---- .../filament/Generic PETG @K2-all.json | 302 ++++---- .../filament/Generic PETG @SPARKX i7-all.json | 322 +++++---- .../Generic PETG-CF @K1 Max_CFS-C-all.json | 330 +++++---- .../filament/Generic PETG-CF @K1C-all.json | 332 +++++---- .../Generic PETG-CF @K1C_CFS-C-all.json | 332 +++++---- .../Generic PETG-CF @K1_CFS-C-all.json | 332 +++++---- .../Generic PETG-CF @K2 Plus-all.json | 294 ++++---- .../filament/Generic PETG-CF @K2 Pro-all.json | 282 ++++---- .../filament/Generic PETG-CF @K2-all.json | 276 ++++---- .../Generic PETG-CF @SPARKX i7-all.json | 326 +++++---- .../Generic PETG-GF @K2 Plus-all.json | 300 ++++---- .../filament/Generic PETG-GF @K2 Pro-all.json | 282 ++++---- .../filament/Generic PETG-GF @K2-all.json | 288 ++++---- .../Generic PLA @Creality Ender-5Max-all.json | 4 +- .../Generic PLA @Creality Hi-all.json | 8 +- .../filament/Generic PLA @Ender-3 V4-all.json | 284 ++++---- .../filament/Generic PLA @Hi-all.json | 280 ++++---- .../Generic PLA @K1 Max_CFS-C-all.json | 316 +++++---- .../filament/Generic PLA @K1 SE-all.json | 278 ++++---- .../Generic PLA @K1 SE_CFS-C-all.json | 278 ++++---- .../filament/Generic PLA @K1C-all.json | 316 +++++---- .../filament/Generic PLA @K1C_CFS-C-all.json | 316 +++++---- .../filament/Generic PLA @K1_CFS-C-all.json | 316 +++++---- .../filament/Generic PLA @K2 Plus-all.json | 328 +++++---- .../filament/Generic PLA @K2 Pro-all.json | 314 +++++---- .../filament/Generic PLA @K2 SE-all.json | 276 ++++---- .../filament/Generic PLA @K2-all.json | 320 +++++---- .../filament/Generic PLA @SPARKX i7-all.json | 328 +++++---- .../Generic PLA-CF @Ender-3 V4-all.json | 308 +++++---- .../Generic PLA-CF @K1 Max_CFS-C-all.json | 328 +++++---- .../filament/Generic PLA-CF @K1 SE-all.json | 296 ++++---- .../Generic PLA-CF @K1 SE_CFS-C-all.json | 296 ++++---- .../filament/Generic PLA-CF @K1C-all.json | 328 +++++---- .../Generic PLA-CF @K1C_CFS-C-all.json | 328 +++++---- .../Generic PLA-CF @K1_CFS-C-all.json | 328 +++++---- .../filament/Generic PLA-CF @K2 Plus-all.json | 332 +++++---- .../filament/Generic PLA-CF @K2 Pro-all.json | 328 +++++---- .../filament/Generic PLA-CF @K2 SE-all.json | 288 ++++---- .../filament/Generic PLA-CF @K2-all.json | 328 +++++---- .../Generic PLA-CF @SPARKX i7-all.json | 362 +++++----- .../Generic PLA-Silk @Ender-3 V4-all.json | 290 ++++---- .../filament/Generic PLA-Silk @Hi-all.json | 284 ++++---- .../Generic PLA-Silk @K1 Max_CFS-C-all.json | 318 +++++---- .../filament/Generic PLA-Silk @K1 SE-all.json | 284 ++++---- .../Generic PLA-Silk @K1 SE_CFS-C-all.json | 284 ++++---- .../filament/Generic PLA-Silk @K1C-all.json | 322 +++++---- .../Generic PLA-Silk @K1C_CFS-C-all.json | 318 +++++---- .../Generic PLA-Silk @K1_CFS-C-all.json | 318 +++++---- .../Generic PLA-Silk @K2 Plus-all.json | 318 +++++---- .../Generic PLA-Silk @K2 Pro-all.json | 326 +++++---- .../filament/Generic PLA-Silk @K2 SE-all.json | 270 ++++---- .../filament/Generic PLA-Silk @K2-all.json | 320 +++++---- .../Generic PLA-Silk @SPARKX i7-all.json | 330 +++++---- .../Generic PP @K1 Max_CFS-C-all.json | 312 +++++---- .../filament/Generic PP @K1C-all.json | 314 +++++---- .../filament/Generic PP @K1C_CFS-C-all.json | 314 +++++---- .../filament/Generic PP @K1_CFS-C-all.json | 314 +++++---- .../filament/Generic PP @K2 Plus-all.json | 284 ++++---- .../filament/Generic PP @K2 Pro-all.json | 280 ++++---- .../Creality/filament/Generic PP @K2-all.json | 280 ++++---- .../filament/Generic PP-CF @K2 Plus-all.json | 296 ++++---- .../Generic PPS @K1 Max_CFS-C-all.json | 342 +++++----- .../filament/Generic PPS @K1C-all.json | 344 +++++----- .../filament/Generic PPS @K1C_CFS-C-all.json | 344 +++++----- .../filament/Generic PPS @K1_CFS-C-all.json | 344 +++++----- .../filament/Generic PPS @K2 Plus-all.json | 298 ++++---- .../Generic PPS-CF @K1 Max_CFS-C-all.json | 342 +++++----- .../filament/Generic PPS-CF @K1C-all.json | 344 +++++----- .../Generic PPS-CF @K1C_CFS-C-all.json | 344 +++++----- .../Generic PPS-CF @K1_CFS-C-all.json | 344 +++++----- .../filament/Generic PPS-CF @K2 Plus-all.json | 284 ++++---- .../filament/Generic PVA @Hi-all.json | 268 ++++---- .../Generic PVA @K1 Max_CFS-C-all.json | 252 ++++--- .../filament/Generic PVA @K1C-all.json | 254 ++++--- .../filament/Generic PVA @K1C_CFS-C-all.json | 254 ++++--- .../filament/Generic PVA @K1_CFS-C-all.json | 254 ++++--- .../filament/Generic PVA @K2 Plus-all.json | 288 ++++---- .../filament/Generic PVA @K2 Pro-all.json | 282 ++++---- .../filament/Generic PVA @K2-all.json | 282 ++++---- .../Generic Support for PA @K2 Plus-all.json | 354 +++++----- .../Generic Support for PLA @K2 Plus-all.json | 320 +++++---- .../Generic TPU 64D @K2 Plus-all.json | 344 +++++----- .../Generic TPU 64D @SPARKX i7-all.json | 366 +++++----- .../Generic TPU @Creality Ender-5Max-all.json | 4 +- .../filament/Generic TPU @Ender-3 V4-all.json | 326 +++++---- .../Generic TPU @K1 Max_CFS-C-all.json | 296 ++++---- .../filament/Generic TPU @K1 SE-all.json | 314 +++++---- .../Generic TPU @K1 SE_CFS-C-all.json | 314 +++++---- .../filament/Generic TPU @K1C-all.json | 298 ++++---- .../filament/Generic TPU @K1C_CFS-C-all.json | 298 ++++---- .../filament/Generic TPU @K1_CFS-C-all.json | 298 ++++---- .../filament/Generic TPU @K2 Plus-all.json | 318 +++++---- .../filament/Generic TPU @K2 Pro-all.json | 328 +++++---- .../filament/Generic TPU @K2 SE-all.json | 312 +++++---- .../filament/Generic TPU @K2-all.json | 328 +++++---- .../filament/Generic TPU @SPARKX i7-all.json | 340 +++++---- .../HP Ultra PLA @K1 Max_CFS-C-all.json | 314 +++++---- .../filament/HP Ultra PLA @K1C-all.json | 316 +++++---- .../filament/HP Ultra PLA @K1C_CFS-C-all.json | 316 +++++---- .../filament/HP Ultra PLA @K1_CFS-C-all.json | 316 +++++---- .../filament/HP Ultra PLA @K2 Plus-all.json | 312 +++++---- .../filament/HP-ASA @K1 Max_CFS-C-all.json | 338 +++++---- .../Creality/filament/HP-ASA @K1C-all.json | 338 +++++---- .../filament/HP-ASA @K1C_CFS-C-all.json | 338 +++++---- .../filament/HP-ASA @K1_CFS-C-all.json | 338 +++++---- .../filament/HP-ASA @K2 Plus-all.json | 354 +++++----- .../Creality/filament/HP-ASA @K2 Pro-all.json | 328 +++++---- .../Creality/filament/HP-ASA @K2 SE-all.json | 348 +++++----- .../Creality/filament/HP-ASA @K2-all.json | 328 +++++---- .../filament/HP-TPU @Ender-3 V4-all.json | 344 +++++----- .../Creality/filament/HP-TPU @Hi-all.json | 332 +++++---- .../filament/HP-TPU @K1 Max_CFS-C-all.json | 328 +++++---- .../Creality/filament/HP-TPU @K1 SE-all.json | 326 +++++---- .../filament/HP-TPU @K1 SE_CFS-C-all.json | 326 +++++---- .../Creality/filament/HP-TPU @K1C-all.json | 332 +++++---- .../filament/HP-TPU @K1C_CFS-C-all.json | 328 +++++---- .../filament/HP-TPU @K1_CFS-C-all.json | 328 +++++---- .../filament/HP-TPU @K2 Plus-all.json | 340 +++++---- .../Creality/filament/HP-TPU @K2 Pro-all.json | 344 +++++----- .../Creality/filament/HP-TPU @K2 SE-all.json | 348 +++++----- .../Creality/filament/HP-TPU @K2-all.json | 334 +++++---- .../filament/HP-TPU @SPARKX i7-all.json | 362 +++++----- .../filament/Hyper ABS @Ender-3 V4-all.json | 344 +++++----- .../Creality/filament/Hyper ABS @Hi-all.json | 344 +++++----- .../filament/Hyper ABS @K1 Max_CFS-C-all.json | 334 +++++---- .../filament/Hyper ABS @K1 SE-all.json | 344 +++++----- .../filament/Hyper ABS @K1 SE_CFS-C-all.json | 344 +++++----- .../Creality/filament/Hyper ABS @K1C-all.json | 336 +++++---- .../filament/Hyper ABS @K1C_CFS-C-all.json | 332 +++++---- .../filament/Hyper ABS @K1_CFS-C-all.json | 334 +++++---- .../filament/Hyper ABS @K2 Plus-all.json | 330 +++++---- .../filament/Hyper ABS @K2 Pro-all.json | 334 +++++---- .../filament/Hyper ABS @K2 SE-all.json | 348 +++++----- .../Creality/filament/Hyper ABS @K2-all.json | 330 +++++---- .../filament/Hyper L-W PLA @Hi-all.json | 294 ++++---- .../Hyper L-W PLA @K1 Max_CFS-C-all.json | 336 +++++---- .../filament/Hyper L-W PLA @K1 SE-all.json | 292 ++++---- .../Hyper L-W PLA @K1 SE_CFS-C-all.json | 292 ++++---- .../filament/Hyper L-W PLA @K1C-all.json | 328 +++++---- .../Hyper L-W PLA @K1C_CFS-C-all.json | 328 +++++---- .../filament/Hyper L-W PLA @K1_CFS-C-all.json | 328 +++++---- .../filament/Hyper L-W PLA @K2 Plus-all.json | 332 +++++---- .../filament/Hyper L-W PLA @K2 Pro-all.json | 334 +++++---- .../filament/Hyper L-W PLA @K2-all.json | 334 +++++---- .../filament/Hyper Luminous @Hi-all.json | 276 ++++---- .../filament/Hyper Luminous @K1C-all.json | 330 +++++---- .../filament/Hyper Luminous @K2 Plus-all.json | 324 +++++---- .../filament/Hyper Luminous @K2 Pro-all.json | 324 +++++---- .../filament/Hyper Luminous @K2-all.json | 324 +++++---- .../Hyper Luminous @SPARKX i7-all.json | 362 +++++----- .../filament/Hyper Marble @Hi-all.json | 314 +++++---- .../Hyper Marble @K1 Max_CFS-C-all.json | 324 +++++---- .../filament/Hyper Marble @K1C-all.json | 324 +++++---- .../filament/Hyper Marble @K1C_CFS-C-all.json | 324 +++++---- .../filament/Hyper Marble @K1_CFS-C-all.json | 324 +++++---- .../filament/Hyper Marble @K2 Plus-all.json | 324 +++++---- .../filament/Hyper Marble @K2 Pro-all.json | 324 +++++---- .../filament/Hyper Marble @K2 SE-all.json | 288 ++++---- .../filament/Hyper Marble @K2-all.json | 324 +++++---- .../filament/Hyper Marble @SPARKX i7-all.json | 348 +++++----- .../filament/Hyper PA6-CF @K2 Plus-all.json | 394 ++++++----- .../filament/Hyper PA6-CF @K2 Pro-all.json | 394 ++++++----- .../filament/Hyper PA612-CF @K2 Plus-all.json | 382 ++++++----- .../filament/Hyper PA612-CF @K2 Pro-all.json | 382 ++++++----- .../Hyper PAHT-CF @K1 Max_CFS-C-all.json | 388 ++++++----- .../filament/Hyper PAHT-CF @K1C-all.json | 390 ++++++----- .../Hyper PAHT-CF @K1C_CFS-C-all.json | 390 ++++++----- .../filament/Hyper PAHT-CF @K1_CFS-C-all.json | 390 ++++++----- .../filament/Hyper PAHT-CF @K2 Plus-all.json | 384 ++++++----- .../filament/Hyper PAHT-CF @K2 Pro-all.json | 364 +++++----- .../filament/Hyper PAHT-CF @K2-all.json | 364 +++++----- .../filament/Hyper PC @K2 Plus-all.json | 338 +++++---- .../filament/Hyper PC @K2 Pro-all.json | 342 +++++----- .../filament/Hyper PETG @Ender-3 V4-all.json | 296 ++++---- .../Creality/filament/Hyper PETG @Hi-all.json | 294 ++++---- .../Hyper PETG @K1 Max_CFS-C-all.json | 302 ++++---- .../filament/Hyper PETG @K1 SE-all.json | 308 +++++---- .../filament/Hyper PETG @K1 SE_CFS-C-all.json | 308 +++++---- .../filament/Hyper PETG @K1C-all.json | 306 +++++---- .../filament/Hyper PETG @K1C_CFS-C-all.json | 302 ++++---- .../filament/Hyper PETG @K1_CFS-C-all.json | 308 +++++---- .../filament/Hyper PETG @K2 Plus-all.json | 294 ++++---- .../filament/Hyper PETG @K2 Pro-all.json | 296 ++++---- .../filament/Hyper PETG @K2 SE-all.json | 312 +++++---- .../Creality/filament/Hyper PETG @K2-all.json | 292 ++++---- .../filament/Hyper PETG @SPARKX i7-all.json | 324 +++++---- .../Hyper PETG-CF @K1 Max_CFS-C-all.json | 276 ++++---- .../filament/Hyper PETG-CF @K1C-all.json | 274 ++++---- .../Hyper PETG-CF @K1C_CFS-C-all.json | 274 ++++---- .../filament/Hyper PETG-CF @K1_CFS-C-all.json | 276 ++++---- .../filament/Hyper PETG-CF @K2 Plus-all.json | 280 ++++---- .../filament/Hyper PETG-CF @K2 Pro-all.json | 282 ++++---- .../filament/Hyper PETG-CF @K2-all.json | 282 ++++---- .../Hyper PETG-CF @SPARKX i7-all.json | 330 +++++---- .../filament/Hyper PETG-GF @K1C-all.json | 294 ++++---- .../filament/Hyper PETG-GF @K2 Plus-all.json | 282 ++++---- .../filament/Hyper PETG-GF @K2 Pro-all.json | 282 ++++---- .../filament/Hyper PETG-GF @K2-all.json | 282 ++++---- .../filament/Hyper PLA @Ender-3 V4-all.json | 296 ++++---- .../Creality/filament/Hyper PLA @Hi-all.json | 288 ++++---- .../filament/Hyper PLA @K1 Max_CFS-C-all.json | 314 +++++---- .../filament/Hyper PLA @K1 SE-all.json | 276 ++++---- .../filament/Hyper PLA @K1 SE_CFS-C-all.json | 272 ++++---- .../Creality/filament/Hyper PLA @K1C-all.json | 318 +++++---- .../filament/Hyper PLA @K1C_CFS-C-all.json | 314 +++++---- .../filament/Hyper PLA @K1_CFS-C-all.json | 314 +++++---- .../filament/Hyper PLA @K2 Plus-all.json | 314 +++++---- .../filament/Hyper PLA @K2 Pro-all.json | 318 +++++---- .../filament/Hyper PLA @K2 SE-all.json | 276 ++++---- .../Creality/filament/Hyper PLA @K2-all.json | 314 +++++---- .../filament/Hyper PLA @SPARKX i7-all.json | 332 +++++---- .../Hyper PLA-CF @Ender-3 V4-all.json | 308 +++++---- .../filament/Hyper PLA-CF @Hi-all.json | 326 +++++---- .../Hyper PLA-CF @K1 Max_CFS-C-all.json | 308 +++++---- .../filament/Hyper PLA-CF @K1 SE-all.json | 296 ++++---- .../Hyper PLA-CF @K1 SE_CFS-C-all.json | 296 ++++---- .../filament/Hyper PLA-CF @K1C-all.json | 310 +++++---- .../filament/Hyper PLA-CF @K1C_CFS-C-all.json | 310 +++++---- .../filament/Hyper PLA-CF @K1_CFS-C-all.json | 310 +++++---- .../filament/Hyper PLA-CF @K2 Plus-all.json | 328 +++++---- .../filament/Hyper PLA-CF @K2 Pro-all.json | 328 +++++---- .../filament/Hyper PLA-CF @K2 SE-all.json | 294 ++++---- .../filament/Hyper PLA-CF @K2-all.json | 328 +++++---- .../filament/Hyper PLA-CF @SPARKX i7-all.json | 348 +++++----- .../filament/Hyper PPA-CF @K2 Plus-all.json | 366 +++++----- .../filament/Hyper PPA-CF @K2 Pro-all.json | 358 +++++----- .../filament/Hyper Stardust @Hi-all.json | 308 +++++---- .../Hyper Stardust @K1 Max_CFS-C-all.json | 318 +++++---- .../filament/Hyper Stardust @K1C-all.json | 318 +++++---- .../Hyper Stardust @K1C_CFS-C-all.json | 318 +++++---- .../Hyper Stardust @K1_CFS-C-all.json | 318 +++++---- .../filament/Hyper Stardust @K2 Plus-all.json | 318 +++++---- .../filament/Hyper Stardust @K2 Pro-all.json | 318 +++++---- .../filament/Hyper Stardust @K2 SE-all.json | 282 ++++---- .../filament/Hyper Stardust @K2-all.json | 318 +++++---- .../Hyper Stardust @SPARKX i7-all.json | 354 +++++----- .../Panchroma PLA Matte @K2 Plus-all.json | 334 +++++---- .../Panchroma PLA Satin @K2 Plus-all.json | 328 +++++---- .../filament/PolySonic PLA @K2 Plus-all.json | 340 +++++---- .../PolySonic PLA Pro @K2 Plus-all.json | 328 +++++---- .../Soleyin Ultra PLA @Ender-3 V4-all.json | 302 ++++---- .../filament/Soleyin Ultra PLA @Hi-all.json | 288 ++++---- .../Soleyin Ultra PLA @K1 Max_CFS-C-all.json | 326 +++++---- .../filament/Soleyin Ultra PLA @K1C-all.json | 326 +++++---- .../Soleyin Ultra PLA @K1C_CFS-C-all.json | 326 +++++---- .../Soleyin Ultra PLA @K1_CFS-C-all.json | 326 +++++---- .../Soleyin Ultra PLA @K2 Plus-all.json | 326 +++++---- .../Soleyin Ultra PLA @K2 Pro-all.json | 332 +++++---- .../Soleyin Ultra PLA @K2 SE-all.json | 296 ++++---- .../filament/Soleyin Ultra PLA @K2-all.json | 332 +++++---- .../Soleyin Ultra PLA @SPARKX i7-all.json | 344 +++++----- .../filament/eSUN ABS+ @K2 Plus-all.json | 314 +++++---- .../filament/eSUN ASA+ @K2 Plus-all.json | 314 +++++---- .../filament/eSUN PET-Basic @K2 Plus-all.json | 374 +++++----- .../filament/eSUN PLA+ @K2 Plus-all.json | 322 +++++---- .../filament/eSUN PLA-LW @K2 Plus-all.json | 334 +++++---- .../filament/eSUN PLA-Lite @K2 Plus-all.json | 334 +++++---- .../filament/eSUN PLA-Matte @K2 Plus-all.json | 328 +++++---- .../filament/eSUN PLA-Silk @K2 Plus-all.json | 328 +++++---- .../machine/Creality Ender-3 V3 KE.json | 2 +- .../Creality Ender-3 V4 0.4 nozzle.json | 11 +- .../Creality/machine/Creality Ender-3 V4.json | 2 +- .../Creality Ender-5 Max 0.4 nozzle.json | 1 - .../Creality Ender-5 Max 0.6 nozzle.json | 13 +- .../Creality Ender-5 Max 0.8 nozzle.json | 13 +- .../machine/Creality Ender-5 Max.json | 2 +- .../machine/Creality Hi 0.2 nozzle.json | 13 +- .../machine/Creality Hi 0.4 nozzle.json | 1 - .../machine/Creality Hi 0.6 nozzle.json | 1 - .../machine/Creality Hi 0.8 nozzle.json | 13 +- .../Creality/machine/Creality Hi.json | 2 +- .../machine/Creality K1 (0.4 nozzle).json | 3 +- .../machine/Creality K1 (0.6 nozzle).json | 1 - .../machine/Creality K1 (0.8 nozzle).json | 1 - .../machine/Creality K1 Max (0.4 nozzle).json | 1 - .../machine/Creality K1 Max (0.6 nozzle).json | 1 - .../machine/Creality K1 Max (0.8 nozzle).json | 1 - .../Creality K1 Max_CFS-C 0.4 nozzle.json | 11 +- .../machine/Creality K1 Max_CFS-C.json | 2 +- .../machine/Creality K1 SE 0.4 nozzle.json | 1 - .../machine/Creality K1 SE 0.6 nozzle.json | 13 +- .../machine/Creality K1 SE 0.8 nozzle.json | 13 +- .../Creality/machine/Creality K1 SE.json | 2 +- .../Creality K1 SE_CFS-C 0.4 nozzle.json | 11 +- .../machine/Creality K1 SE_CFS-C.json | 2 +- .../machine/Creality K1C 0.4 nozzle.json | 1 - .../machine/Creality K1C 0.6 nozzle.json | 1 - .../machine/Creality K1C 0.8 nozzle.json | 1 - .../Creality K1C_CFS-C 0.4 nozzle.json | 11 +- .../Creality/machine/Creality K1C_CFS-C.json | 2 +- .../machine/Creality K1_CFS-C 0.4 nozzle.json | 11 +- .../Creality/machine/Creality K1_CFS-C.json | 2 +- .../machine/Creality K2 0.2 nozzle.json | 5 +- .../machine/Creality K2 0.4 nozzle.json | 11 +- .../machine/Creality K2 0.6 nozzle.json | 5 +- .../machine/Creality K2 0.8 nozzle.json | 5 +- .../machine/Creality K2 Pro 0.4 nozzle.json | 1 - .../machine/Creality K2 Pro 0.6 nozzle.json | 1 - .../machine/Creality K2 Pro 0.8 nozzle.json | 1 - .../machine/Creality K2 SE 0.4 nozzle.json | 11 +- .../Creality/machine/Creality K2 SE.json | 2 +- .../Creality SPARKX i7 0.2 nozzle.json | 11 +- .../Creality SPARKX i7 0.4 nozzle.json | 11 +- .../Creality SPARKX i7 0.6 nozzle.json | 11 +- .../Creality SPARKX i7 0.8 nozzle.json | 11 +- .../Creality/machine/Creality SPARKX i7.json | 2 +- .../Creality/machine/fdm_creality_common.json | 1 - .../Creality/machine/fdm_machine_common.json | 1 - ...erDetail @Creality K2 Plus 0.2 nozzle.json | 10 +- ...08mm HueForge @Creality Hi 0.4 nozzle.json | 8 +- ...08mm HueForge @Creality K2 0.4 nozzle.json | 7 +- ...HueForge @Creality K2 Plus 0.4 nozzle.json | 8 +- ... HueForge @Creality K2 Pro 0.4 nozzle.json | 7 +- ...eForge @Creality SPARKX i7 0.4 nozzle.json | 9 +- ...m SuperDetail @Creality Hi 0.4 nozzle.json | 10 +- ...SuperDetail @Creality K1 (0.4 nozzle).json | 10 +- ...ail @Creality K1 Max_CFS-C 0.4 nozzle.json | 9 +- ... SuperDetail @Creality K1C 0.4 nozzle.json | 10 +- ...Detail @Creality K1C_CFS-C 0.4 nozzle.json | 9 +- ...erDetail @Creality K1Max (0.4 nozzle).json | 10 +- ...rDetail @Creality K1_CFS-C 0.4 nozzle.json | 9 +- ...m SuperDetail @Creality K2 0.2 nozzle.json | 1 - ...m SuperDetail @Creality K2 0.4 nozzle.json | 9 +- ...erDetail @Creality K2 Plus 0.2 nozzle.json | 10 +- ...erDetail @Creality K2 Plus 0.4 nozzle.json | 10 +- ...perDetail @Creality K2 Pro 0.2 nozzle.json | 1 - ...perDetail @Creality K2 Pro 0.4 nozzle.json | 9 +- ...Detail @Creality SPARKX i7 0.4 nozzle.json | 9 +- ...mm HighDetail @Creality K2 0.2 nozzle.json | 1 - ...ghDetail @Creality K2 Plus 0.2 nozzle.json | 10 +- ...ighDetail @Creality K2 Pro 0.2 nozzle.json | 1 - ...Detail @Creality SPARKX i7 0.2 nozzle.json | 9 +- ...0.12mm Detail @Creality K2 0.2 nozzle.json | 1 - ...0.12mm Detail @Creality K2 0.4 nozzle.json | 9 +- ...m Detail @Creality K2 Plus 0.2 nozzle.json | 10 +- ...m Detail @Creality K2 Plus 0.4 nozzle.json | 10 +- ...mm Detail @Creality K2 Pro 0.2 nozzle.json | 1 - ...mm Detail @Creality K2 Pro 0.4 nozzle.json | 9 +- .../0.12mm Fine @Creality CR10Max.json | 1 - .../0.12mm Fine @Creality CR10SE 0.2.json | 1 - .../0.12mm Fine @Creality CR10SE 0.4.json | 1 - .../0.12mm Fine @Creality CR10SE 0.6.json | 1 - .../0.12mm Fine @Creality CR10SE 0.8.json | 1 - .../0.12mm Fine @Creality Ender3 0.2.json | 1 - .../0.12mm Fine @Creality Ender3 0.4.json | 1 - .../0.12mm Fine @Creality Ender3 0.6.json | 1 - .../0.12mm Fine @Creality Ender3 0.8.json | 1 - .../0.12mm Fine @Creality Ender3 Pro 0.2.json | 1 - .../0.12mm Fine @Creality Ender3 Pro 0.4.json | 1 - .../0.12mm Fine @Creality Ender3 Pro 0.6.json | 1 - .../0.12mm Fine @Creality Ender3 Pro 0.8.json | 1 - .../0.12mm Fine @Creality Ender3V2.json | 1 - .../0.12mm Fine @Creality Ender3V2Neo.json | 1 - ...mm Fine @Creality Ender3V3 0.4 nozzle.json | 2 - .../0.12mm Fine @Creality Ender3V3KE.json | 1 - ...ine @Creality Ender3V3Plus 0.4 nozzle.json | 2 - .../0.12mm Fine @Creality Ender3V3SE 0.2.json | 1 - .../0.12mm Fine @Creality Ender3V3SE 0.4.json | 1 - .../0.12mm Fine @Creality Ender3V3SE 0.6.json | 1 - .../0.12mm Fine @Creality Ender3V3SE 0.8.json | 1 - ....12mm Fine @Creality Ender5Pro (2019).json | 1 - .../0.12mm Fine @Creality Hi 0.4 nozzle.json | 10 +- ...0.12mm Fine @Creality K1 (0.4 nozzle).json | 2 - ....12mm Fine @Creality K1 SE 0.4 nozzle.json | 4 +- .../0.12mm Fine @Creality K1C 0.4 nozzle.json | 4 +- ...2mm Fine @Creality K1Max (0.4 nozzle).json | 2 - ...m Fine @Creality SPARKX i7 0.4 nozzle.json | 9 +- ....14mm Optimal @Creality K2 0.2 nozzle.json | 1 - ... Optimal @Creality K2 Plus 0.2 nozzle.json | 10 +- ...m Optimal @Creality K2 Pro 0.2 nozzle.json | 1 - .../0.15mm Optimal @Creality CR10Max.json | 1 - .../0.15mm Optimal @Creality Ender3V2.json | 1 - ...mm Optimal @Creality Ender5Pro (2019).json | 1 - ... Fine @Creality Ender-3 V4 0.4 nozzle.json | 9 +- .../0.16mm Optimal @Creality CR-6 0.4.json | 1 - .../0.16mm Optimal @Creality CR10SE 0.2.json | 1 - .../0.16mm Optimal @Creality CR10SE 0.4.json | 1 - .../0.16mm Optimal @Creality CR10SE 0.6.json | 1 - .../0.16mm Optimal @Creality CR10SE 0.8.json | 1 - .../0.16mm Optimal @Creality CR10V2.json | 1 - .../0.16mm Optimal @Creality Ender3 0.2.json | 1 - .../0.16mm Optimal @Creality Ender3 0.4.json | 1 - .../0.16mm Optimal @Creality Ender3 0.6.json | 1 - .../0.16mm Optimal @Creality Ender3 0.8.json | 1 - ...16mm Optimal @Creality Ender3 Pro 0.2.json | 1 - ...16mm Optimal @Creality Ender3 Pro 0.4.json | 1 - ...16mm Optimal @Creality Ender3 Pro 0.6.json | 1 - ...16mm Optimal @Creality Ender3 Pro 0.8.json | 1 - .../0.16mm Optimal @Creality Ender3S1.json | 1 - ...mm Optimal @Creality Ender3S1Plus 0.2.json | 1 - ...mm Optimal @Creality Ender3S1Plus 0.4.json | 1 - ...mm Optimal @Creality Ender3S1Plus 0.6.json | 1 - ...mm Optimal @Creality Ender3S1Plus 0.8.json | 1 - .../0.16mm Optimal @Creality Ender3S1Pro.json | 1 - .../0.16mm Optimal @Creality Ender3V2Neo.json | 1 - ...Optimal @Creality Ender3V3 0.4 nozzle.json | 2 - .../0.16mm Optimal @Creality Ender3V3KE.json | 1 - ...mal @Creality Ender3V3Plus 0.4 nozzle.json | 2 - ...16mm Optimal @Creality Ender3V3SE 0.2.json | 1 - ...16mm Optimal @Creality Ender3V3SE 0.4.json | 1 - ...16mm Optimal @Creality Ender3V3SE 0.6.json | 1 - ...16mm Optimal @Creality Ender3V3SE 0.8.json | 1 - .../0.16mm Optimal @Creality Ender5.json | 1 - .../0.16mm Optimal @Creality Ender5Plus.json | 1 - .../0.16mm Optimal @Creality Ender5S.json | 1 - .../0.16mm Optimal @Creality Ender5S1.json | 1 - .../0.16mm Optimal @Creality Ender6.json | 1 - ....16mm Optimal @Creality Hi 0.4 nozzle.json | 10 +- ...6mm Optimal @Creality K1 (0.4 nozzle).json | 10 +- ...mal @Creality K1 Max_CFS-C 0.4 nozzle.json | 9 +- ...mm Optimal @Creality K1 SE 0.4 nozzle.json | 10 +- ...imal @Creality K1 SE_CFS-C 0.4 nozzle.json | 9 +- ...16mm Optimal @Creality K1C 0.4 nozzle.json | 10 +- ...ptimal @Creality K1C_CFS-C 0.4 nozzle.json | 9 +- ... Optimal @Creality K1Max (0.4 nozzle).json | 10 +- ...Optimal @Creality K1_CFS-C 0.4 nozzle.json | 9 +- ....16mm Optimal @Creality K2 0.4 nozzle.json | 9 +- ... Optimal @Creality K2 Plus 0.4 nozzle.json | 10 +- ...m Optimal @Creality K2 Pro 0.4 nozzle.json | 9 +- ...ptimal @Creality SPARKX i7 0.4 nozzle.json | 9 +- .../0.16mm Optimal @Creality Sermoon V1.json | 1 - ...m Standard @Creality K2 SE 0.4 nozzle.json | 7 +- ...0.18mm Detail @Creality K2 0.6 nozzle.json | 1 - ...m Detail @Creality K2 Plus 0.6 nozzle.json | 10 +- ...mm Detail @Creality K2 Pro 0.6 nozzle.json | 1 - ....1mm Standard @Creality Hi 0.2 nozzle.json | 7 +- ... Quality @Creality K2 Plus 0.4 nozzle.json | 8 +- .../0.20mm Standard @Creality CR10Max.json | 1 - .../0.20mm Standard @Creality CR10SE 0.2.json | 1 - .../0.20mm Standard @Creality CR10SE 0.4.json | 1 - .../0.20mm Standard @Creality CR10SE 0.6.json | 1 - .../0.20mm Standard @Creality CR10SE 0.8.json | 1 - .../0.20mm Standard @Creality CR10V2.json | 1 - .../0.20mm Standard @Creality CR10V3 0.4.json | 1 - .../0.20mm Standard @Creality CR10V3 0.6.json | 1 - ...ndard @Creality Ender-3 V4 0.4 nozzle.json | 7 +- ...rd @Creality Ender-5 Max 0.4mm nozzle.json | 1 - .../0.20mm Standard @Creality Ender3 0.2.json | 1 - .../0.20mm Standard @Creality Ender3 0.4.json | 1 - .../0.20mm Standard @Creality Ender3 0.6.json | 1 - .../0.20mm Standard @Creality Ender3 0.8.json | 1 - ...0mm Standard @Creality Ender3 Pro 0.2.json | 1 - ...0mm Standard @Creality Ender3 Pro 0.4.json | 1 - ...0mm Standard @Creality Ender3 Pro 0.6.json | 1 - ...0mm Standard @Creality Ender3 Pro 0.8.json | 1 - .../0.20mm Standard @Creality Ender3.json | 1 - .../0.20mm Standard @Creality Ender3S1.json | 1 - ...m Standard @Creality Ender3S1Plus 0.2.json | 1 - ...m Standard @Creality Ender3S1Plus 0.4.json | 1 - ...m Standard @Creality Ender3S1Plus 0.6.json | 1 - ...m Standard @Creality Ender3S1Plus 0.8.json | 1 - ...0.20mm Standard @Creality Ender3S1Pro.json | 1 - .../0.20mm Standard @Creality Ender3V2.json | 1 - ...0.20mm Standard @Creality Ender3V2Neo.json | 1 - ...tandard @Creality Ender3V3 0.4 nozzle.json | 2 - .../0.20mm Standard @Creality Ender3V3KE.json | 1 - ...ard @Creality Ender3V3Plus 0.4 nozzle.json | 2 - ...0mm Standard @Creality Ender3V3SE 0.2.json | 1 - ...0mm Standard @Creality Ender3V3SE 0.4.json | 1 - ...0mm Standard @Creality Ender3V3SE 0.6.json | 1 - ...0mm Standard @Creality Ender3V3SE 0.8.json | 1 - .../0.20mm Standard @Creality Ender5.json | 1 - .../0.20mm Standard @Creality Ender5Plus.json | 1 - ...m Standard @Creality Ender5Pro (2019).json | 1 - .../0.20mm Standard @Creality Ender5S.json | 1 - .../0.20mm Standard @Creality Ender5S1.json | 1 - .../0.20mm Standard @Creality Ender6.json | 1 - ...20mm Standard @Creality Hi 0.4 nozzle.json | 4 +- ...mm Standard @Creality K1 (0.4 nozzle).json | 4 +- ...ard @Creality K1 Max_CFS-C 0.4 nozzle.json | 7 +- .../0.20mm Standard @Creality K1 SE 0.4.json | 2 - ...dard @Creality K1 SE_CFS-C 0.4 nozzle.json | 7 +- ...0mm Standard @Creality K1C 0.4 nozzle.json | 4 +- ...andard @Creality K1C_CFS-C 0.4 nozzle.json | 7 +- ...Standard @Creality K1Max (0.4 nozzle).json | 4 +- ...tandard @Creality K1_CFS-C 0.4 nozzle.json | 7 +- ...20mm Standard @Creality K2 0.4 nozzle.json | 12 +- ...Standard @Creality K2 Plus 0.4 nozzle.json | 4 +- ... Standard @Creality K2 Pro 0.4 nozzle.json | 4 +- ...m Standard @Creality K2 SE 0.4 nozzle.json | 7 +- ...andard @Creality SPARKX i7 0.4 nozzle.json | 9 +- .../0.20mm Standard @Creality Sermoon V1.json | 1 - ...Strength @Creality K2 Plus 0.4 nozzle.json | 8 +- ...st @Creality Ender-5 Max 0.4mm nozzle.json | 1 - ...0.24mm Detail @Creality K2 0.8 nozzle.json | 1 - ...m Detail @Creality K2 Plus 0.8 nozzle.json | 10 +- ...mm Detail @Creality K2 Pro 0.8 nozzle.json | 1 - .../0.24mm Draft @Creality CR10Max.json | 1 - .../0.24mm Draft @Creality CR10SE 0.2.json | 1 - .../0.24mm Draft @Creality CR10SE 0.4.json | 1 - .../0.24mm Draft @Creality CR10SE 0.6.json | 1 - .../0.24mm Draft @Creality CR10SE 0.8.json | 1 - ...Draft @Creality Ender-3 V4 0.4 nozzle.json | 9 +- .../0.24mm Draft @Creality Ender3 0.2.json | 1 - .../0.24mm Draft @Creality Ender3 0.4.json | 1 - .../0.24mm Draft @Creality Ender3 0.6.json | 1 - .../0.24mm Draft @Creality Ender3 0.8.json | 1 - ...0.24mm Draft @Creality Ender3 Pro 0.2.json | 1 - ...0.24mm Draft @Creality Ender3 Pro 0.4.json | 1 - ...0.24mm Draft @Creality Ender3 Pro 0.6.json | 1 - ...0.24mm Draft @Creality Ender3 Pro 0.8.json | 1 - ...24mm Draft @Creality Ender3S1Plus 0.2.json | 1 - ...24mm Draft @Creality Ender3S1Plus 0.4.json | 1 - ...24mm Draft @Creality Ender3S1Plus 0.6.json | 1 - ...24mm Draft @Creality Ender3S1Plus 0.8.json | 1 - .../0.24mm Draft @Creality Ender3V2.json | 1 - .../0.24mm Draft @Creality Ender3V2Neo.json | 1 - ...m Draft @Creality Ender3V3 0.4 nozzle.json | 2 - .../0.24mm Draft @Creality Ender3V3KE.json | 1 - ...aft @Creality Ender3V3Plus 0.4 nozzle.json | 2 - ...0.24mm Draft @Creality Ender3V3SE 0.2.json | 1 - ...0.24mm Draft @Creality Ender3V3SE 0.4.json | 1 - ...0.24mm Draft @Creality Ender3V3SE 0.6.json | 1 - ...0.24mm Draft @Creality Ender3V3SE 0.8.json | 1 - ...24mm Draft @Creality Ender5Pro (2019).json | 1 - .../0.24mm Draft @Creality Hi 0.4 nozzle.json | 10 +- ....24mm Draft @Creality K1 (0.4 nozzle).json | 10 +- ...aft @Creality K1 Max_CFS-C 0.4 nozzle.json | 9 +- ...24mm Draft @Creality K1 SE 0.4 nozzle.json | 10 +- ...raft @Creality K1 SE_CFS-C 0.4 nozzle.json | 9 +- ...0.24mm Draft @Creality K1C 0.4 nozzle.json | 10 +- ... Draft @Creality K1C_CFS-C 0.4 nozzle.json | 9 +- ...mm Draft @Creality K1Max (0.4 nozzle).json | 10 +- ...m Draft @Creality K1_CFS-C 0.4 nozzle.json | 9 +- .../0.24mm Draft @Creality K2 0.4 nozzle.json | 10 +- ...mm Draft @Creality K2 Plus 0.4 nozzle.json | 10 +- ...4mm Draft @Creality K2 Pro 0.4 nozzle.json | 10 +- ... Draft @Creality SPARKX i7 0.4 nozzle.json | 9 +- ...Optimal @Creality Ender3V3 0.6 nozzle.json | 2 - ...mal @Creality Ender3V3Plus 0.6 nozzle.json | 2 - ....24mm Optimal @Creality Hi 0.6 nozzle.json | 2 - ...4mm Optimal @Creality K1 (0.6 nozzle).json | 2 - ...24mm Optimal @Creality K1C 0.6 nozzle.json | 2 - ... Optimal @Creality K1Max (0.6 nozzle).json | 2 - ....24mm Optimal @Creality K2 0.6 nozzle.json | 1 - ... Optimal @Creality K2 Plus 0.6 nozzle.json | 10 +- ...m Optimal @Creality K2 Pro 0.6 nozzle.json | 1 - ...m Standard @Creality K2 SE 0.4 nozzle.json | 7 +- .../0.28mm Standard @Creality Sermoon V1.json | 1 - ...Draft @Creality Ender-3 V4 0.4 nozzle.json | 9 +- ....28mm SuperDraft @Creality Ender3 0.2.json | 1 - ....28mm SuperDraft @Creality Ender3 0.4.json | 1 - ....28mm SuperDraft @Creality Ender3 0.6.json | 1 - ....28mm SuperDraft @Creality Ender3 0.8.json | 1 - ...m SuperDraft @Creality Ender3 Pro 0.2.json | 1 - ...m SuperDraft @Creality Ender3 Pro 0.4.json | 1 - ...m SuperDraft @Creality Ender3 Pro 0.6.json | 1 - ...m SuperDraft @Creality Ender3 Pro 0.8.json | 1 - ...mm SuperDraft @Creality Hi 0.4 nozzle.json | 10 +- ...mm SuperDraft @Creality K2 0.4 nozzle.json | 10 +- ...perDraft @Creality K2 Plus 0.4 nozzle.json | 10 +- ...uperDraft @Creality K2 Pro 0.4 nozzle.json | 10 +- ...rDraft @Creality SPARKX i7 0.4 nozzle.json | 9 +- ...dard @Creality Ender-5 Max 0.4 nozzle.json | 7 +- ...fast @Creality Ender-5 Max 0.4 nozzle.json | 7 +- ...dard @Creality Ender-5 Max 0.6 nozzle.json | 7 +- ...tandard @Creality Ender3V3 0.6 nozzle.json | 2 - ...ard @Creality Ender3V3Plus 0.6 nozzle.json | 2 - ...30mm Standard @Creality Hi 0.6 nozzle.json | 3 +- ...mm Standard @Creality K1 (0.6 nozzle).json | 4 +- ...m Standard @Creality K1 SE 0.6 nozzle.json | 8 +- ...0mm Standard @Creality K1C 0.6 nozzle.json | 4 +- ...Standard @Creality K1Max (0.6 nozzle).json | 4 +- ...30mm Standard @Creality K2 0.6 nozzle.json | 10 +- ...Standard @Creality K2 Plus 0.6 nozzle.json | 4 +- ... Standard @Creality K2 Pro 0.6 nozzle.json | 4 +- ...andard @Creality SPARKX i7 0.6 nozzle.json | 8 +- ...Strength @Creality K2 Plus 0.6 nozzle.json | 8 +- ...2mm Optimal @Creality K1 (0.8 nozzle).json | 2 - ...32mm Optimal @Creality K1C 0.8 nozzle.json | 2 - ... Optimal @Creality K1Max (0.8 nozzle).json | 2 - ....32mm Optimal @Creality K2 0.8 nozzle.json | 1 - ... Optimal @Creality K2 Plus 0.8 nozzle.json | 10 +- ...m Optimal @Creality K2 Pro 0.8 nozzle.json | 1 - ...m Draft @Creality Ender3V3 0.6 nozzle.json | 2 - ...aft @Creality Ender3V3Plus 0.6 nozzle.json | 2 - .../0.36mm Draft @Creality Hi 0.6 nozzle.json | 2 - ....36mm Draft @Creality K1 (0.6 nozzle).json | 2 - ...0.36mm Draft @Creality K1C 0.6 nozzle.json | 2 - ...mm Draft @Creality K1Max (0.6 nozzle).json | 2 - .../0.36mm Draft @Creality K2 0.6 nozzle.json | 1 - ...mm Draft @Creality K2 Plus 0.6 nozzle.json | 10 +- ...6mm Draft @Creality K2 Pro 0.6 nozzle.json | 1 - ...dard @Creality Ender-5 Max 0.8 nozzle.json | 7 +- ...40mm Standard @Creality Hi 0.8 nozzle.json | 7 +- ...mm Standard @Creality K1 (0.8 nozzle).json | 3 +- ...m Standard @Creality K1 SE 0.8 nozzle.json | 1 - ...0mm Standard @Creality K1C 0.8 nozzle.json | 3 +- ...Standard @Creality K1Max (0.8 nozzle).json | 3 +- ...40mm Standard @Creality K2 0.8 nozzle.json | 10 +- ...Standard @Creality K2 Plus 0.8 nozzle.json | 4 +- ... Standard @Creality K2 Pro 0.8 nozzle.json | 4 +- ...andard @Creality SPARKX i7 0.8 nozzle.json | 8 +- ...Strength @Creality K2 Plus 0.8 nozzle.json | 8 +- ...mm SuperDraft @Creality K2 0.6 nozzle.json | 1 - ...perDraft @Creality K2 Plus 0.6 nozzle.json | 10 +- ...uperDraft @Creality K2 Pro 0.6 nozzle.json | 1 - ....48mm Draft @Creality K1 (0.8 nozzle).json | 2 - ...0.48mm Draft @Creality K1C 0.8 nozzle.json | 2 - ...mm Draft @Creality K1Max (0.8 nozzle).json | 2 - .../0.48mm Draft @Creality K2 0.8 nozzle.json | 1 - ...mm Draft @Creality K2 Plus 0.8 nozzle.json | 10 +- ...8mm Draft @Creality K2 Pro 0.8 nozzle.json | 1 - ...mm SuperDraft @Creality K2 0.8 nozzle.json | 1 - ...perDraft @Creality K2 Plus 0.8 nozzle.json | 10 +- ...uperDraft @Creality K2 Pro 0.8 nozzle.json | 1 - .../Creality/process/fdm_process_common.json | 1 - .../process/fdm_process_creality_common.json | 1 - resources/profiles/Cubicon.json | 2 +- .../machine/Cubicon xCeler-I 0.4 nozzle.json | 1 - .../Cubicon xCeler-Mini 0.4 nozzle.json | 1 - .../Cubicon xCeler-Plus 0.4 nozzle.json | 1 - .../Cubicon/machine/fdm_machine_common.json | 1 - .../Cubicon/process/fdm_process_common.json | 1 - .../process/process template @base.json | 1 - resources/profiles/Custom.json | 2 +- .../filament/Generic ABS @MyToolChanger.json | 6 - .../filament/Generic ASA @MyToolChanger.json | 6 - .../filament/Generic PA @MyToolChanger.json | 6 - .../Generic PA-CF @MyToolChanger.json | 6 - .../filament/Generic PC @MyToolChanger.json | 6 - .../filament/Generic PETG @MyToolChanger.json | 6 - .../filament/Generic PLA @MyToolChanger.json | 6 - .../Generic PLA-CF @MyToolChanger.json | 6 - .../filament/Generic PVA @MyToolChanger.json | 6 - .../Custom/machine/fdm_klipper_common.json | 1 - .../Custom/machine/fdm_machine_common.json | 1 - .../Custom/machine/fdm_repetier_common.json | 3 +- .../Custom/machine/fdm_rrf_common.json | 1 - .../Custom/process/fdm_process_common.json | 2 - .../process/fdm_process_marlin_common.json | 1 - .../process/fdm_process_repetier_common.json | 3 +- .../process/fdm_process_rrf_common.json | 1 - resources/profiles/DeltaMaker.json | 2 +- .../machine/fdm_klipper_common.json | 1 - .../machine/fdm_machine_common.json | 2 - .../process/0.25mm Draft @DeltaMaker.json | 1 - .../process/fdm_process_common.json | 2 - resources/profiles/Dremel.json | 2 +- .../Dremel/machine/fdm_dremel_common.json | 1 - .../Dremel/machine/fdm_machine_common.json | 1 - .../.05mm Super Detail @Dremel 3D40 0.4.json | 2 - .../.05mm Super Detail @Dremel 3D45 0.4.json | 2 - .../.10mm Detail @Dremel 3D20 0.4.json | 2 - .../.10mm Detail @Dremel 3D40 0.4.json | 2 - .../.10mm Detail @Dremel 3D45 0.4.json | 2 - .../.20mm Standard @Dremel 3D20 0.4.json | 2 - .../.20mm Standard @Dremel 3D40 0.4.json | 2 - .../.20mm Standard @Dremel 3D45 0.4.json | 2 - .../process/.30mm Draft @Dremel 3D20 0.4.json | 2 - .../process/.30mm Draft @Dremel 3D40 0.4.json | 2 - .../process/.30mm Draft @Dremel 3D45 0.4.json | 2 - .../.34mm SuperDraft @Dremel 3D40 0.4.json | 2 - .../.34mm SuperDraft @Dremel 3D45 0.4.json | 2 - .../Dremel/process/fdm_process_common.json | 1 - .../process/fdm_process_dremel_common.json | 1 - resources/profiles/Elegoo.json | 2 +- .../Elegoo/machine/fdm_elegoo_common.json | 3 +- .../Elegoo/machine/fdm_machine_common.json | 1 - .../Elegoo/process/fdm_process_common.json | 2 - .../process/fdm_process_elegoo_common.json | 1 - resources/profiles/Eryone.json | 2 +- .../Eryone/filament/Eryone Standard PLA.json | 6 - .../Eryone/machine/ER20/Eryone ER20.json | 1 + .../ER20_Klipper/Eryone ER20 Klipper.json | 1 + .../machine/Thinker X400 0.4 nozzle.json | 1 - .../profiles/Eryone/machine/Thinker X400.json | 2 +- .../Eryone/machine/fdm_machine_common.json | 1 - ...dm_machine_eryone_ER20_Klipper_common.json | 1 - .../fdm_machine_eryone_ER20_common.json | 1 - .../0.20mm Standard @Thinker X400.json | 1 - .../0.12mm High Quality @Eryone ER20.json | 15 +- .../0.16mm Optimal @Eryone ER20.json | 15 +- ...2mm High Quality @Eryone ER20 Klipper.json | 15 +- .../0.16mm Optimal @Eryone ER20 Klipper.json | 15 +- .../Eryone/process/fdm_process_common.json | 2 - .../fdm_process_eryone_ER20_common.json | 4 - resources/profiles/FLSun.json | 2 +- .../FLSun/machine/fdm_machine_common.json | 1 - .../FLSun/process/0.08mm Fine @FLSun Q5.json | 1 - .../process/0.08mm Fine @FLSun QQSPro.json | 1 - .../FLSun/process/0.08mm Fine @FLSun SR.json | 1 - .../process/0.16mm Optimal @FLSun Q5.json | 1 - .../process/0.16mm Optimal @FLSun QQSPro.json | 1 - .../process/0.16mm Optimal @FLSun SR.json | 1 - .../process/0.20mm Standard @FLSun Q5.json | 1 - .../0.20mm Standard @FLSun QQSPro.json | 1 - .../process/0.20mm Standard @FLSun SR.json | 1 - .../FLSun/process/0.24mm Draft @FLSun Q5.json | 1 - .../process/0.24mm Draft @FLSun QQSPro.json | 1 - .../FLSun/process/0.24mm Draft @FLSun SR.json | 1 - .../process/0.30mm Extra Draft @FLSun Q5.json | 1 - .../0.30mm Extra Draft @FLSun QQSPro.json | 1 - .../process/0.30mm Extra Draft @FLSun SR.json | 1 - .../FLSun/process/fdm_process_common.json | 2 - resources/profiles/Flashforge.json | 2 +- .../FusRock PET @FF G4P 0.8 HF nozzle.json | 6 - .../filament/FusRock/FusRock NexPA-CF25.json | 8 +- .../filament/FusRock/FusRock PAHT-CF.json | 8 +- .../filament/FusRock/FusRock PET-CF.json | 8 +- .../filament/FusRock/FusRock S-Multi.json | 8 +- .../filament/FusRock/FusRock S-PAHT.json | 8 +- .../filament/Generic ABS @Flashforge G3U.json | 8 +- .../filament/Generic ASA @Flashforge AD4.json | 3 - .../filament/Generic ASA @Flashforge G3U.json | 8 +- .../filament/Generic ASA @Flashforge.json | 5 +- .../filament/Generic HIPS @Flashforge.json | 8 +- .../filament/Generic HS PLA @Flashforge.json | 11 +- .../Generic PETG @Flashforge G3U.json | 8 +- .../Generic PETG-CF @Flashforge G3U.json | 8 +- .../Generic PETG-CF10 @Flashforge AD4.json | 3 - .../Generic PETG-CF10 @Flashforge.json | 5 +- ...eneric PLA @Flashforge G3U 0.6 Nozzle.json | 3 +- ...eneric PLA @Flashforge G3U 0.8 Nozzle.json | 3 +- .../filament/Generic PLA @Flashforge G3U.json | 10 +- ...eneric PLA High Speed @Flashforge AD4.json | 9 - .../Generic PLA-CF @Flashforge G3U.json | 8 +- .../Generic PLA-CF10 @Flashforge AD4.json | 9 - .../Generic PLA-CF10 @Flashforge.json | 11 +- .../filament/Generic PVA @Flashforge.json | 8 +- .../filament/Generic TPU @Flashforge AD4.json | 3 - .../filament/Generic TPU @Flashforge.json | 5 +- .../filament/Polymaker/Polymaker CoPA.json | 8 +- .../filament/Polymaker/Polymaker S1.json | 8 +- .../machine/FlashForge AD5X 0.25 nozzle.json | 1 - .../machine/Flashforge AD5X 0.4 nozzle.json | 1 - .../machine/Flashforge AD5X 0.6 nozzle.json | 1 - .../machine/Flashforge AD5X 0.8 nozzle.json | 1 - .../Flashforge/machine/Flashforge AD5X.json | 2 +- .../Flashforge Adventurer 4 Series.json | 1 + .../machine/Flashforge Adventurer 5M Pro.json | 2 +- .../machine/Flashforge Adventurer 5M.json | 2 +- .../machine/Flashforge Artemis.json | 1 + .../Flashforge Creator 5 0.25 nozzle.json | 3 +- .../Flashforge Creator 5 0.4 nozzle.json | 1 - .../Flashforge Creator 5 0.6 nozzle.json | 1 - .../Flashforge Creator 5 0.8 nozzle.json | 1 - .../Flashforge Creator 5 Pro 0.25 nozzle.json | 3 +- .../Flashforge Creator 5 Pro 0.4 nozzle.json | 1 - .../Flashforge Creator 5 Pro 0.6 nozzle.json | 1 - .../Flashforge Creator 5 Pro 0.8 nozzle.json | 1 - .../machine/Flashforge Creator 5 Pro.json | 2 +- .../machine/Flashforge Creator 5.json | 2 +- .../Flashforge Guider 3 Ultra 0.4 Nozzle.json | 1 - .../machine/Flashforge Guider 3 Ultra.json | 2 +- .../Flashforge Guider4 0.25 nozzle.json | 3 +- .../Flashforge Guider4 0.4 HF nozzle.json | 3 +- .../Flashforge Guider4 0.4 nozzle.json | 3 +- .../Flashforge Guider4 0.6 HF nozzle.json | 3 +- .../Flashforge Guider4 0.6 nozzle.json | 3 +- .../Flashforge Guider4 0.8 HF nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.25 nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.4 HF nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.4 nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.6 HF nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.6 nozzle.json | 3 +- .../Flashforge Guider4 Pro 0.8 HF nozzle.json | 3 +- .../machine/Flashforge Guider4 Pro.json | 2 +- .../machine/Flashforge Guider4.json | 2 +- .../machine/fdm_flashforge_common.json | 1 - .../machine/fdm_klipper_common.json | 2 - .../machine/fdm_machine_common.json | 2 - ...tail @Flashforge Guider 2s 0.4 nozzle.json | 2 - ...imal @Flashforge Guider 2s 0.4 nozzle.json | 2 - ... High-Speed @Flashforge AD4 HS Nozzle.json | 1 - ...m Standard @Flashforge AD3 0.4 Nozzle.json | 1 - ...m Standard @Flashforge AD4 0.4 Nozzle.json | 1 - ...andard @Flashforge Artemis 0.4 Nozzle.json | 1 - ...m Standard @Flashforge G3U 0.4 Nozzle.json | 1 - ...dard @Flashforge Guider 2s 0.4 nozzle.json | 2 - .../0.25mm Standard @FF G4P 0.6 nozzle.json | 1 - ...raft @Flashforge Guider 2s 0.4 nozzle.json | 2 - ....30mm Fast @Flashforge AD3 0.4 Nozzle.json | 1 - ....30mm Fast @Flashforge AD4 0.4 Nozzle.json | 1 - .../0.30mm Standard @FF G4P 0.6 nozzle.json | 1 - ...m Standard @Flashforge AD3 0.6 Nozzle.json | 1 - .../0.36mm Standard @FF G4P 0.6 nozzle.json | 1 - .../0.42mm Standard @FF G4P 0.6 nozzle.json | 1 - .../process/fdm_process_common.json | 1 - .../process/fdm_process_flashforge_0.20.json | 1 - .../process/fdm_process_flashforge_0.30.json | 1 - .../process/fdm_process_flashforge_0.40.json | 1 - .../fdm_process_flashforge_common.json | 1 - resources/profiles/FlyingBear.json | 2 +- .../Ghost7/FlyingBear Ghost7 0.4 nozzle.json | 1 - .../machine/Ghost7/FlyingBear Ghost7.json | 2 +- .../machine/S1/FlyingBear S1 0.4 nozzle.json | 1 - .../FlyingBear/machine/S1/FlyingBear S1.json | 2 +- .../machine/fdm_klipper_common.json | 1 - .../machine/fdm_machine_common.json | 1 - .../FlyingBear/machine/fdm_marlin_common.json | 1 - .../0.16mm Optimal @FlyingBear Reborn3.json | 1 - .../0.16mm Optimal @FlyingBear Ghost7.json | 1 - .../Ghost7/fdm_process_common_Ghost7.json | 2 - .../S1/0.16mm Optimal @FlyingBear S1.json | 1 - .../process/S1/fdm_process_common_S1.json | 2 - .../process/fdm_process_common.json | 2 - .../process/fdm_process_marlin_common.json | 2 - resources/profiles/Folgertech.json | 2 +- .../machine/fdm_folgertech_common.json | 1 - .../machine/fdm_machine_common.json | 2 - .../process/fdm_process_common.json | 1 - .../fdm_process_folgertech_common.json | 1 - resources/profiles/Geeetech.json | 2 +- .../Geeetech/machine/fdm_geeetech_common.json | 1 - .../Geeetech/machine/fdm_machine_common.json | 2 - .../Geeetech/process/fdm_process_common.json | 1 - resources/profiles/Ginger Additive.json | 2 +- .../filament/fdm_filament_common.json | 6 - .../machine/fdm_machine_common.json | 1 - .../process/fdm_process_common.json | 1 - resources/profiles/InfiMech.json | 2 +- .../EX+APS/InfiMech EX+APS 0.4 nozzle.json | 1 - .../machine/EX/InfiMech EX 0.4 nozzle.json | 1 - .../InfiMech TX Hardened Steel Nozzle.json | 2 +- .../InfiMech/machine/fdm_klipper_common.json | 1 - .../InfiMech/machine/fdm_machine_common.json | 1 - .../process/0.16mm Optimal @InfiMech TX.json | 1 - .../0.16mm Optimal @InfiMech EX+APS.json | 1 - .../EX+APS/fdm_process_common_EX+APS.json | 2 - .../EX/0.16mm Optimal @InfiMech EX.json | 1 - .../process/EX/fdm_process_common_EX.json | 2 - .../HSN/0.16mm Optimal @InfiMech TX HSN.json | 1 - .../process/HSN/fdm_process_common_HSN.json | 2 - .../InfiMech/process/fdm_process_common.json | 2 - resources/profiles/Kingroon.json | 2 +- .../Kingroon/machine/fdm_machine_common.json | 1 - .../0.20mm Standard @Kingroon KP3S V1.json | 1 - .../Kingroon/process/fdm_process_common.json | 4 - resources/profiles/LH.json | 2 +- .../profiles/LH/machine/fdm_lh_common.json | 5 +- .../LH/machine/fdm_machine_common.json | 3 +- .../LH/process/fdm_process_common.json | 4 +- resources/profiles/LONGER.json | 2 +- .../LONGER/machine/LONGER LK10 Plus.json | 2 +- .../profiles/LONGER/machine/LONGER LK10.json | 2 +- .../LONGER/machine/fdm_machine_common.json | 1 - .../LONGER/process/fdm_process_common.json | 1 - resources/profiles/Lulzbot.json | 2 +- .../Lulzbot/machine/Lulzbot Taz Pro S.json | 2 +- .../Lulzbot/machine/fdm_machine_common.json | 2 - .../0.25mm Standard @Lulzbot Taz 4 or 5.json | 1 - .../0.25mm Standard @Lulzbot Taz 6.json | 1 - ...0.25mm Standard @Lulzbot Taz Pro Dual.json | 1 - .../0.25mm Standard @Lulzbot Taz Pro S.json | 1 - .../Lulzbot/process/fdm_process_common.json | 1 - resources/profiles/M3D.json | 2 +- .../machine/M3D Enabler D8500 MM Model.json | 2 +- resources/profiles/MagicMaker.json | 2 +- .../machine/MM BoneKing 0.4 nozzle.json | 2 +- .../machine/fdm_machine_common.json | 2 - .../process/0.10mm Fine @MM BoneKing.json | 1 - .../process/0.10mm Fine @MM hj SK.json | 1 - .../process/0.10mm Fine @MM hqs SF.json | 1 - .../process/0.10mm Fine @MM hqs hj.json | 1 - .../process/0.10mm Fine @MM slb.json | 1 - .../0.10mm Fine Fast @MM BoneKing.json | 1 - .../process/0.10mm Fine Fast @MM hj SK.json | 1 - .../process/0.10mm Fine Fast @MM hqs SF.json | 1 - .../0.12mm Fine BestFast @MM BoneKing.json | 1 - .../0.12mm Fine SuperFast @MM BoneKing.json | 1 - .../process/0.20mm Standard @MM BoneKing.json | 1 - .../process/0.20mm Standard @MM hj SK.json | 1 - .../process/0.20mm Standard @MM hqs SF.json | 1 - .../process/0.20mm Standard @MM hqs hj.json | 1 - .../process/0.20mm Standard @MM slb.json | 1 - .../0.20mm Standard Fast @MM BoneKing.json | 1 - .../0.20mm Standard Fast @MM hj SK.json | 1 - .../0.20mm Standard Fast @MM hqs SF.json | 1 - .../process/0.30mm Draft @MM BoneKing.json | 1 - .../process/0.30mm Draft @MM hj SK.json | 1 - .../process/0.30mm Draft @MM hqs SF.json | 1 - .../process/0.30mm Draft @MM hqs hj.json | 1 - .../process/0.30mm Draft @MM slb.json | 1 - .../0.30mm Draft Fast @MM BoneKing.json | 1 - .../process/0.30mm Draft Fast @MM hj SK.json | 1 - .../process/0.30mm Draft Fast @MM hqs SF.json | 1 - .../process/fdm_process_common.json | 1 - resources/profiles/Mellow.json | 2 +- .../Mellow/machine/fdm_common_M1.json | 1 - .../Mellow/machine/fdm_machine_common.json | 1 - .../Mellow/process/fdm_process_common.json | 2 - resources/profiles/OpenEYE.json | 2 +- .../OpenEYE/machine/fdm_machine_common.json | 9 +- .../OpenEYE/machine/fdm_openeye_common.json | 11 +- .../OpenEYE/process/fdm_process_common.json | 2 - resources/profiles/OrcaArena.json | 2 +- .../machine/Orca Arena X1 Carbon.json | 2 +- .../machine/fdm_bbl_3dp_001_common.json | 1 - .../OrcaArena/machine/fdm_machine_common.json | 1 - .../process/fdm_process_arena_common.json | 2 - .../OrcaArena/process/fdm_process_common.json | 1 - resources/profiles/OrcaFilamentLibrary.json | 2 +- .../filament/COEX/COEX ABS @base.json | 6 - .../filament/COEX/COEX ABS PRIME @base.json | 6 - .../filament/COEX/COEX ASA PRIME @base.json | 6 - .../COEX/COEX NYLEX PA6-CF @base.json | 6 - .../COEX/COEX NYLEX UNFILLED @base.json | 6 - .../filament/COEX/COEX PCTG PRIME @base.json | 6 - .../filament/COEX/COEX PETG @base.json | 6 - .../filament/COEX/COEX PLA @base.json | 6 - .../filament/COEX/COEX PLA PRIME @base.json | 6 - .../filament/COEX/COEX PLA+Silk @base.json | 6 - .../filament/COEX/COEX TPE 30D @base.json | 6 - .../filament/COEX/COEX TPE 40D @base.json | 6 - .../filament/COEX/COEX TPE 60D @base.json | 6 - .../filament/COEX/COEX TPU 60A @base.json | 6 - resources/profiles/Peopoly.json | 2 +- .../Peopoly/machine/fdm_klipper_common.json | 1 - .../Peopoly/machine/fdm_machine_common.json | 1 - .../Peopoly/process/fdm_process_common.json | 1 - .../process/fdm_process_peopoly_common.json | 1 - .../process/fdm_process_pply_common.json | 1 - resources/profiles/Phrozen.json | 2 +- .../Generic PLA @Phrozen Arco 0.4 nozzle.json | 8 +- .../machine/Phrozen Arco 0.4 nozzle.json | 1 - ...0mm Standard @Phrozen Arco 0.4 nozzle.json | 2 - .../Phrozen/process/fdm_process_common.json | 2 - resources/profiles/Positron3D.json | 2 +- .../machine/fdm_common_the_positron.json | 1 - .../machine/fdm_machine_common.json | 1 - .../process/fdm_process_common.json | 2 - resources/profiles/Prusa.json | 2 +- .../filament/Generic ABS @Prusa XL 5T.json | 4 +- .../Prusa/filament/Generic ABS @Prusa XL.json | 4 +- .../filament/Generic FLEX @Prusa XL 5T.json | 4 +- .../filament/Generic FLEX @Prusa XL.json | 4 +- .../filament/Generic PETG @Prusa XL 5T.json | 4 +- .../filament/Generic PETG @Prusa XL.json | 4 +- .../filament/Generic PLA @Prusa XL 5T.json | 4 +- .../Prusa/filament/Generic PLA @Prusa XL.json | 4 +- .../Prusa/filament/Prusament ASA @XL 5T.json | 6 +- .../Prusa/filament/Prusament ASA @XL.json | 6 +- .../filament/Prusament PA-CF @XL 5T.json | 6 +- .../Prusa/filament/Prusament PA-CF @XL.json | 6 +- .../filament/Prusament PC Blend @XL 5T.json | 2 - .../filament/Prusament PC Blend @XL.json | 2 - .../filament/Prusament PC-CF @XL 5T.json | 6 +- .../Prusa/filament/Prusament PC-CF @XL.json | 6 +- .../Prusa/filament/Prusament PETG @XL 5T.json | 2 - .../Prusa/filament/Prusament PETG @XL.json | 2 - .../Prusa/filament/Prusament PLA @XL 5T.json | 2 - .../Prusa/filament/Prusament PLA @XL.json | 2 - .../Prusa/filament/Prusament PVB @XL 5T.json | 6 +- .../Prusa/filament/Prusament PVB @XL.json | 6 +- .../Prusa/filament/Prusament rPLA @XL 5T.json | 2 - .../Prusa/filament/Prusament rPLA @XL.json | 2 - .../Prusa/machine/Prusa CORE One HF.json | 2 +- .../Prusa/machine/Prusa CORE One L HF.json | 2 +- .../Prusa/machine/Prusa CORE One L.json | 2 +- .../Prusa/machine/Prusa CORE One.json | 2 +- .../profiles/Prusa/machine/Prusa MK4S HF.json | 2 +- .../profiles/Prusa/machine/Prusa MK4S.json | 2 +- .../Prusa/process/fdm_process_common.json | 2 - resources/profiles/Qidi.json | 2 +- resources/profiles/Qidi/machine/Qidi Q2.json | 2 +- resources/profiles/Qidi/machine/Qidi Q2C.json | 2 +- .../profiles/Qidi/machine/Qidi X-Max 3.json | 2 +- .../profiles/Qidi/machine/Qidi X-Max 4.json | 2 +- .../profiles/Qidi/machine/Qidi X-Plus 3.json | 2 +- .../profiles/Qidi/machine/Qidi X-Plus 4.json | 2 +- .../profiles/Qidi/machine/Qidi X-Smart 3.json | 2 +- .../Qidi/machine/fdm_machine_common.json | 1 - .../Qidi/machine/fdm_machine_x_common.json | 1 - .../profiles/Qidi/machine/fdm_q_common.json | 1 - .../Qidi/machine/fdm_qidi_common.json | 1 - ...0.08mm Extra Fine @X-Max 4 0.2 nozzle.json | 1 - .../process/0.08mm Extra Fine @X-Max 4.json | 1 - .../0.10mm Standard @X-Max 4 0.2 nozzle.json | 1 - ... Balanced Quality @X-Max 4 0.2 nozzle.json | 1 - .../Qidi/process/0.12mm Fine @Qidi X3.json | 1 - .../process/0.12mm Fine @Qidi XCFPro.json | 1 - .../Qidi/process/0.12mm Fine @Qidi XMax.json | 1 - .../Qidi/process/0.12mm Fine @Qidi XPlus.json | 1 - .../Qidi/process/0.12mm Fine @X-Max 4.json | 1 - .../0.16mm Balanced Quality @X-Max 4.json | 1 - .../Qidi/process/0.16mm Optimal @Qidi X3.json | 1 - .../process/0.16mm Optimal @Qidi XCFPro.json | 1 - .../process/0.16mm Optimal @Qidi XMax.json | 1 - .../process/0.16mm Optimal @Qidi XPlus.json | 1 - .../process/0.16mm Standard @X-Max 4.json | 1 - ... Balanced Quality @X-Max 4 0.6 nozzle.json | 1 - .../0.20mm Balanced Strength @X-Max 4.json | 1 - .../process/0.20mm Standard @Qidi XCFPro.json | 1 - .../process/0.20mm Standard @Qidi XMax.json | 1 - .../process/0.20mm Standard @Qidi XPlus.json | 1 - .../process/0.20mm Standard @X-Max 4.json | 1 - ... Balanced Quality @X-Max 4 0.8 nozzle.json | 1 - ...Balanced Strength @X-Max 4 0.6 nozzle.json | 1 - .../Qidi/process/0.24mm Draft @Qidi X3.json | 1 - .../process/0.24mm Standard @X-Max 4.json | 1 - .../process/0.25mm Draft @Qidi Q1 Pro.json | 1 - .../Qidi/process/0.25mm Draft @Qidi Q2.json | 1 - .../Qidi/process/0.25mm Draft @Qidi Q2C.json | 1 - .../process/0.25mm Draft @Qidi XCFPro.json | 1 - .../Qidi/process/0.25mm Draft @Qidi XMax.json | 1 - .../process/0.25mm Draft @Qidi XMax3.json | 1 - .../process/0.25mm Draft @Qidi XPlus.json | 1 - .../process/0.25mm Draft @Qidi XPlus3.json | 1 - .../process/0.25mm Draft @Qidi XPlus4.json | 1 - .../process/0.25mm Draft @Qidi XSmart3.json | 1 - .../process/0.28mm Extra Draft @Qidi X3.json | 1 - .../0.30mm Extra Draft @Qidi Q1 Pro.json | 1 - .../process/0.30mm Extra Draft @Qidi Q2.json | 1 - .../process/0.30mm Extra Draft @Qidi Q2C.json | 1 - .../0.30mm Extra Draft @Qidi XCFPro.json | 1 - .../0.30mm Extra Draft @Qidi XMax.json | 1 - .../0.30mm Extra Draft @Qidi XMax3.json | 1 - .../0.30mm Extra Draft @Qidi XPlus.json | 1 - .../0.30mm Extra Draft @Qidi XPlus3.json | 1 - .../0.30mm Extra Draft @Qidi XPlus4.json | 1 - .../0.30mm Extra Draft @Qidi XSmart3.json | 1 - .../0.30mm Standard @X-Max 4 0.6 nozzle.json | 1 - ...Balanced Strength @X-Max 4 0.8 nozzle.json | 1 - .../0.40mm Standard @X-Max 4 0.8 nozzle.json | 1 - .../Qidi/process/fdm_process_common.json | 1 - .../Qidi/process/fdm_process_n_common.json | 6 - .../Qidi/process/fdm_process_qidi_common.json | 1 - .../process/fdm_process_qidi_x3_common.json | 2 - resources/profiles/RH3D.json | 2 +- .../RH3D/process/fdm_process_common.json | 2 - resources/profiles/Raise3D.json | 2 +- .../Raise3D/machine/fdm_machine_common.json | 2 - .../process/0.10mm Fine @Raise3D Pro3.json | 1 - .../0.10mm Fine @Raise3D Pro3Plus.json | 1 - .../0.20mm Standard @Raise3D Pro3.json | 1 - .../0.20mm Standard @Raise3D Pro3Plus.json | 1 - .../process/0.25mm Draft @Raise3D Pro3.json | 1 - .../0.25mm Draft @Raise3D Pro3Plus.json | 1 - .../Raise3D/process/fdm_process_common.json | 1 - resources/profiles/Ratrig.json | 2 +- .../Ratrig/machine/RatRig V-Core 4 300.json | 2 +- .../Ratrig/machine/RatRig V-Core 4 400.json | 2 +- .../Ratrig/machine/RatRig V-Core 4 500.json | 2 +- .../machine/RatRig V-Core 4 HYBRID 300.json | 2 +- .../machine/RatRig V-Core 4 HYBRID 400.json | 2 +- .../machine/RatRig V-Core 4 HYBRID 500.json | 2 +- .../RatRig V-Core 4 IDEX 300 COPY MODE.json | 2 +- .../RatRig V-Core 4 IDEX 300 MIRROR MODE.json | 2 +- .../machine/RatRig V-Core 4 IDEX 300.json | 2 +- .../RatRig V-Core 4 IDEX 400 COPY MODE.json | 2 +- .../RatRig V-Core 4 IDEX 400 MIRROR MODE.json | 2 +- .../machine/RatRig V-Core 4 IDEX 400.json | 2 +- .../RatRig V-Core 4 IDEX 500 COPY MODE.json | 2 +- .../RatRig V-Core 4 IDEX 500 MIRROR MODE.json | 2 +- .../machine/RatRig V-Core 4 IDEX 500.json | 2 +- .../Ratrig/machine/fdm_klipper_common.json | 1 - .../Ratrig/machine/fdm_machine_common.json | 1 - .../Ratrig/process/fdm_process_common.json | 1 - .../process/fdm_process_ratrig_common.json | 1 - .../fdm_process_ratrig_common_idex.json | 1 - .../process/fdm_process_ratrig_idex.json | 1 - resources/profiles/RolohaunDesign.json | 2 +- .../machine/fdm_common_Rook MK1 LDO.json | 1 - .../machine/fdm_machine_common.json | 1 - .../process/fdm_process_common.json | 2 - resources/profiles/SecKit.json | 2 +- .../SecKit/machine/fdm_klipper_common.json | 1 - .../SecKit/machine/fdm_machine_common.json | 1 - .../SecKit/process/fdm_process_common.json | 1 - .../process/fdm_process_seckit_common.json | 1 - resources/profiles/SeeMeCNC.json | 2 +- .../machine/SeeMeCNC_Artemis_0_4mm.json | 3 +- .../machine/SeeMeCNC_Artemis_0_5mm.json | 3 +- .../machine/SeeMeCNC_Artemis_0_7mm.json | 3 +- .../machine/SeeMeCNC_Artemis_1_0mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0505_0_4mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0505_0_5mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0505_0_7mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0505_1_0mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0510_0_4mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0510_0_5mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0510_0_7mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0510_1_0mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0521_0_4mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0521_0_5mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0521_0_7mm.json | 3 +- .../SeeMeCNC_BOSSdelta500_0521_1_0mm.json | 3 +- .../machine/SeeMeCNC_BOSSdelta_300_0_4mm.json | 3 +- .../machine/SeeMeCNC_BOSSdelta_300_0_5mm.json | 3 +- .../machine/SeeMeCNC_BOSSdelta_300_0_7mm.json | 3 +- .../machine/SeeMeCNC_BOSSdelta_300_1_0mm.json | 3 +- .../SeeMeCNC_RostockMAX_v3.2_0_4mm.json | 3 +- .../SeeMeCNC_RostockMAX_v3.2_0_5mm.json | 3 +- .../SeeMeCNC_RostockMAX_v3.2_0_7mm.json | 3 +- .../SeeMeCNC_RostockMAX_v3.2_1_0mm.json | 3 +- .../machine/SeeMeCNC_RostockMAX_v4_0_4mm.json | 3 +- .../machine/SeeMeCNC_RostockMAX_v4_0_5mm.json | 3 +- .../machine/SeeMeCNC_RostockMAX_v4_0_7mm.json | 3 +- .../machine/SeeMeCNC_RostockMAX_v4_1_0mm.json | 3 +- resources/profiles/Snapmaker.json | 2 +- .../filament/Snapmaker ABS @U1 base.json | 6 - .../filament/Snapmaker ASA @U1 base.json | 6 - .../Snapmaker Dual ABS @0.2 nozzle.json | 6 - .../filament/Snapmaker Dual ABS @base.json | 6 - .../Snapmaker Dual ASA @0.2 nozzle.json | 6 - .../filament/Snapmaker Dual ASA @base.json | 6 - .../Snapmaker Dual Breakaway @base.json | 6 - .../filament/Snapmaker Dual PA-CF @base.json | 6 - .../filament/Snapmaker Dual PET @base.json | 6 - .../filament/Snapmaker Dual PETG @base.json | 6 - .../Snapmaker Dual PETG-CF @base.json | 6 - .../filament/Snapmaker Dual PLA @base.json | 6 - .../Snapmaker Dual PLA Eco @base.json | 6 - .../Snapmaker Dual PLA Matte @base.json | 6 - .../Snapmaker Dual PLA Metal @base.json | 6 - .../Snapmaker Dual PLA Silk @base.json | 6 - .../filament/Snapmaker Dual PLA-CF @base.json | 6 - .../filament/Snapmaker Dual PVA @base.json | 6 - .../filament/Snapmaker Dual TPU @base.json | 6 - .../filament/Snapmaker J1 ABS Benchy.json | 6 - .../filament/Snapmaker PA-CF @U1 base.json | 6 - .../filament/Snapmaker PET @U1 base.json | 6 - .../filament/Snapmaker PETG @U1 base.json | 6 - .../filament/Snapmaker PETG-CF @U1 base.json | 6 - .../filament/Snapmaker PLA @U1 base.json | 6 - .../Snapmaker PLA Basic @U1 base.json | 6 - .../filament/Snapmaker PLA Eco @U1 base.json | 6 - .../filament/Snapmaker PLA Glow @U1 base.json | 6 - .../filament/Snapmaker PLA Lite @U1 base.json | 6 - .../Snapmaker PLA Matte @U1 base.json | 6 - .../Snapmaker PLA Matte @U1 base2.json | 6 - .../Snapmaker PLA Metal @U1 base.json | 6 - .../filament/Snapmaker PLA Silk @U1 base.json | 6 - .../Snapmaker PLA SnapSpeed @U1 base.json | 6 - .../Snapmaker PLA Translucent @U1 base.json | 6 - .../filament/Snapmaker PLA-CF @U1 base.json | 6 - .../filament/Snapmaker PVA @U1 base.json | 6 - .../filament/Snapmaker TPU @U1 base.json | 6 - .../filament/fdm_filament_common.json | 6 - .../machine/Snapmaker A250 BKit.json | 1 + .../machine/Snapmaker A250 Dual BKit.json | 1 + .../machine/Snapmaker A250 Dual QS+B Kit.json | 1 + .../machine/Snapmaker A250 Dual QSKit.json | 1 + .../machine/Snapmaker A250 Dual.json | 1 + .../machine/Snapmaker A250 QS+B Kit.json | 1 + .../machine/Snapmaker A250 QSKit.json | 1 + .../Snapmaker/machine/Snapmaker A250.json | 1 + .../machine/Snapmaker A350 BKit.json | 1 + .../machine/Snapmaker A350 Dual BKit.json | 1 + .../machine/Snapmaker A350 Dual QS+B Kit.json | 1 + .../machine/Snapmaker A350 Dual QSKit.json | 1 + .../machine/Snapmaker A350 Dual.json | 1 + .../machine/Snapmaker A350 QS+B Kit.json | 1 + .../machine/Snapmaker A350 QSKit.json | 1 + .../Snapmaker/machine/Snapmaker A350.json | 1 + .../Snapmaker/machine/Snapmaker Artisan.json | 1 + .../Snapmaker/machine/Snapmaker J1.json | 1 + .../Snapmaker/machine/Snapmaker U1.json | 1 + .../Snapmaker/machine/fdm_common.json | 1 - .../Snapmaker/machine/fdm_klipper.json | 1 - .../Snapmaker/machine/fdm_toolchanger.json | 1 - ...gh Quality @Snapmaker U1 (0.2 nozzle).json | 2 - ...6 Standard @Snapmaker U1 (0.2 nozzle).json | 2 - ...Extra Fine @Snapmaker U1 (0.4 nozzle).json | 2 - ...gh Quality @Snapmaker U1 (0.2 nozzle).json | 2 - ...gh Quality @Snapmaker U1 (0.4 nozzle).json | 2 - ...8 Standard @Snapmaker U1 (0.2 nozzle).json | 2 - ...gh Quality @Snapmaker U1 (0.2 nozzle).json | 2 - ...0 Standard @Snapmaker U1 (0.2 nozzle).json | 2 - .../0.12 Fine @Snapmaker U1 (0.4 nozzle).json | 2 - ...gh Quality @Snapmaker U1 (0.4 nozzle).json | 2 - ...2 Standard @Snapmaker U1 (0.2 nozzle).json | 2 - ...4 Standard @Snapmaker U1 (0.2 nozzle).json | 2 - ...gh Quality @Snapmaker U1 (0.4 nozzle).json | 2 - ...16 Optimal @Snapmaker U1 (0.4 nozzle).json | 2 - ...8 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...20 Quality @Snapmaker U1 (0.4 nozzle).json | 2 - ...0 Standard @Snapmaker U1 (0.4 nozzle).json | 2 - ...andard @Snapmaker U1 (0.4+0.6 nozzle).json | 2 - ...0 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...0 Strength @Snapmaker U1 (0.4 nozzle).json | 2 - ...20 Support @Snapmaker U1 (0.4 nozzle).json | 2 - ...0.24 Draft @Snapmaker U1 (0.4 nozzle).json | 2 - ...4 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...4 Standard @Snapmaker U1 (0.8 nozzle).json | 2 - ...xtra Draft @Snapmaker U1 (0.4 nozzle).json | 2 - ...0.30 Draft @Snapmaker U1 (0.6 nozzle).json | 2 - ...0 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...0 Strength @Snapmaker U1 (0.6 nozzle).json | 2 - ...2 Standard @Snapmaker U1 (0.8 nozzle).json | 2 - ...6 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...xtra Draft @Snapmaker U1 (0.6 nozzle).json | 2 - ...0 Standard @Snapmaker U1 (0.8 nozzle).json | 2 - ...2 Standard @Snapmaker U1 (0.6 nozzle).json | 2 - ...8 Standard @Snapmaker U1 (0.8 nozzle).json | 2 - ...6 Standard @Snapmaker U1 (0.8 nozzle).json | 2 - .../Snapmaker/process/fdm_process_U1.json | 5 +- .../process/fdm_process_U1_common.json | 1 - .../Snapmaker/process/fdm_process_common.json | 4 - resources/profiles/Sovol.json | 2 +- .../Sovol/machine/Sovol SV08 MAX.json | 2 +- .../Sovol/machine/fdm_machine_common.json | 2 - ...gh Quality @Sovol SV06 ACE 0.4 nozzle.json | 1 - ....10mm Standard @Sovol SV08 0.2 nozzle.json | 1 - ...mm Quality @Sovol SV06 ACE 0.4 nozzle.json | 1 - ...m Standard @Sovol SV06 ACE 0.2 nozzle.json | 1 - .../0.18mm Optimal @Sovol SV01Pro.json | 1 - .../process/0.18mm Optimal @Sovol SV02.json | 1 - .../process/0.18mm Optimal @Sovol SV05.json | 1 - .../process/0.18mm Optimal @Sovol SV06.json | 1 - .../0.18mm Optimal @Sovol SV06Plus.json | 1 - .../process/0.18mm Optimal @Sovol SV07.json | 1 - .../0.18mm Optimal @Sovol SV07Plus.json | 1 - .../process/0.18mm Optimal @Sovol SV08.json | 1 - .../0.20mm High-Speed @Sovol SV06.json | 1 - .../process/0.20mm Standard @Sovol SV01.json | 5 +- .../0.20mm Standard @Sovol SV01Pro.json | 1 - .../process/0.20mm Standard @Sovol SV02.json | 1 - .../process/0.20mm Standard @Sovol SV05.json | 1 - .../0.20mm Standard @Sovol SV06 ACE.json | 1 - .../0.20mm Standard @Sovol SV06 Plus ACE.json | 1 - .../process/0.20mm Standard @Sovol SV06.json | 1 - .../0.20mm Standard @Sovol SV06Plus.json | 1 - .../process/0.20mm Standard @Sovol SV07.json | 1 - .../0.20mm Standard @Sovol SV07Plus.json | 1 - ....20mm Standard @Sovol SV08 0.4 nozzle.json | 1 - ...m Standard @Sovol SV08 MAX 0.4 nozzle.json | 5 +- .../process/0.20mm Standard @Sovol SV08.json | 1 - ....20mm Standard @Sovol Zero 0.4 nozzle.json | 1 - ....28mm Fast @Sovol SV06 ACE 0.4 nozzle.json | 1 - ...m Standard @Sovol SV06 ACE 0.6 nozzle.json | 1 - ....30mm Standard @Sovol SV08 0.6 nozzle.json | 1 - ...m Standard @Sovol SV08 MAX 0.6 nozzle.json | 5 +- ...m Standard @Sovol SV06 ACE 0.8 nozzle.json | 1 - ....40mm Standard @Sovol SV08 0.8 nozzle.json | 1 - ...m Standard @Sovol SV08 MAX 0.8 nozzle.json | 5 +- .../Sovol/process/fdm_process_common.json | 1 - resources/profiles/Tiertime.json | 2 +- .../Tiertime/machine/Tiertime UP300 HS.json | 2 +- .../Tiertime/machine/Tiertime UP600 HS.json | 2 +- .../Tiertime/machine/fdm_machine_common.json | 1 - .../Tiertime/machine/fdm_tiertime_common.json | 7 +- ...m Fine @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...mm Fine @Tiertime UP600 HS 0.6 nozzle.json | 2 - ...m Fine @Tiertime UP400 Pro 0.8 nozzle.json | 2 - ...mm Fine @Tiertime UP600 HS 0.8 nozzle.json | 2 - ...andard @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...tandard @Tiertime UP600 HS 0.6 nozzle.json | 2 - ...andard @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...tandard @Tiertime UP600 HS 0.6 nozzle.json | 2 - ...rength @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...trength @Tiertime UP600 HS 0.6 nozzle.json | 2 - ...andard @Tiertime UP400 Pro 0.8 nozzle.json | 2 - ...tandard @Tiertime UP600 HS 0.8 nozzle.json | 2 - ... Draft @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...m Draft @Tiertime UP600 HS 0.6 nozzle.json | 2 - ...andard @Tiertime UP400 Pro 0.8 nozzle.json | 2 - ...tandard @Tiertime UP600 HS 0.8 nozzle.json | 2 - ... Draft @Tiertime UP400 Pro 0.6 nozzle.json | 2 - ...a Draft @Tiertime UP600 HS 0.6 nozzle.json | 2 - ... Draft @Tiertime UP400 Pro 0.8 nozzle.json | 2 - ...m Draft @Tiertime UP600 HS 0.8 nozzle.json | 2 - ... Draft @Tiertime UP400 Pro 0.8 nozzle.json | 2 - ...a Draft @Tiertime UP600 HS 0.8 nozzle.json | 2 - .../Tiertime/process/fdm_process_common.json | 1 - .../process/fdm_process_tiertime_common.json | 1 - resources/profiles/Tronxy.json | 2 +- .../Tronxy/machine/fdm_machine_common.json | 1 - .../Tronxy/process/fdm_process_common.json | 1 - .../process/fdm_process_tronxy_common.json | 1 - resources/profiles/TwoTrees.json | 2 +- .../TwoTrees/machine/TwoTrees SK1.json | 2 +- .../machine/TwoTrees SP-5 Klipper.json | 2 +- .../TwoTrees/machine/fdm_klipper_common.json | 3 +- .../TwoTrees/machine/fdm_machine_common.json | 1 - .../process/fdm_process_TwoTrees_common.json | 1 - .../TwoTrees/process/fdm_process_common.json | 1 - resources/profiles/UltiMaker.json | 2 +- .../UltiMaker/machine/fdm_machine_common.json | 2 - .../process/0.12mm Fine @UltiMaker 2.json | 1 - .../process/0.18mm Standard @UltiMaker 2.json | 1 - .../process/0.25mm Darft @UltiMaker 2.json | 1 - .../UltiMaker/process/fdm_process_common.json | 1 - resources/profiles/Vivedino.json | 2 +- .../Vivedino/machine/fdm_klipper_common.json | 1 - .../Vivedino/machine/fdm_machine_common.json | 1 - .../Vivedino/machine/fdm_rrf_common.json | 1 - .../Vivedino/process/fdm_process_common.json | 1 - .../process/fdm_process_klipper_common.json | 1 - resources/profiles/Volumic.json | 2 +- .../profiles/Volumic/machine/EXO42 IDRE.json | 2 +- .../Volumic/machine/EXO42 Performance.json | 2 +- .../profiles/Volumic/machine/EXO65 IDRE.json | 2 +- .../Volumic/machine/EXO65 Performance.json | 2 +- .../profiles/Volumic/machine/SH65 IDRE.json | 2 +- .../Volumic/machine/SH65 Performance.json | 2 +- .../Volumic/machine/VS30SC2 Performance.json | 2 +- .../Volumic/machine/fdm_volumic_common.json | 1 - .../process/fdm_process_volumic_common.json | 1 - resources/profiles/Voron.json | 2 +- .../Voron/machine/fdm_klipper_common.json | 1 - .../Voron/machine/fdm_machine_common.json | 1 - .../Voron/process/fdm_process_common.json | 1 - .../process/fdm_process_voron_common.json | 1 - resources/profiles/Voxelab.json | 2 +- .../Voxelab/machine/fdm_machine_common.json | 2 - .../0.16mm Optimal @Voxelab AquilaX2.json | 1 - .../0.20mm Standard @Voxelab AquilaX2.json | 1 - .../Voxelab/process/fdm_process_common.json | 1 - resources/profiles/Vzbot.json | 2 +- .../Vzbot/machine/fdm_klipper_common.json | 2 - .../Vzbot/machine/fdm_machine_common.json | 1 - .../process/fdm_process_Vzbot_common.json | 1 - .../fdm_process_Vzbot_common_0.5_nozzle.json | 1 - .../fdm_process_Vzbot_common_0.6_nozzle.json | 1 - .../Vzbot/process/fdm_process_common.json | 1 - .../fdm_process_common_0.5_nozzle.json | 1 - .../fdm_process_common_0.6_nozzle.json | 1 - resources/profiles/WEMAKE3D.json | 2 +- .../WEMAKE3D/process/fdm_process_common.json | 2 - resources/profiles/Wanhao France.json | 2 +- .../Wanhao France/filament/YUMI PETG.json | 6 - ...12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json | 2 +- .../D12 300 PRO M2 DIRECT 0.4 nozzle.json | 2 +- ...12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json | 2 +- .../D12 500 PRO M2 DIRECT 0.4 nozzle.json | 2 +- ...12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json | 2 +- .../machine/fdm_machine_common.json | 1 - .../process/fdm_process_common.json | 1 - resources/profiles/Wanhao.json | 2 +- .../Wanhao/machine/fdm_machine_common.json | 2 - .../Wanhao/machine/fdm_wanhao_common.json | 1 - .../Wanhao/process/fdm_process_common.json | 1 - .../process/fdm_process_wanhao_common.json | 1 - resources/profiles/WonderMaker.json | 2 +- .../machine/fdm_machine_common.json | 1 - ....06mm Fine @WonderMaker ZR 0.2 nozzle.json | 2 - ...Fine @WonderMaker ZR Ultra 0.2 nozzle.json | 2 - ...08mm Extra Fine @WonderMaker ZR Ultra.json | 2 - .../0.08mm Extra Fine @WonderMaker ZR.json | 2 - ...mm Optimal @WonderMaker ZR 0.2 nozzle.json | 2 - ...imal @WonderMaker ZR Ultra 0.2 nozzle.json | 2 - ...m Standard @WonderMaker ZR 0.2 nozzle.json | 2 - ...dard @WonderMaker ZR Ultra 0.2 nozzle.json | 2 - ...12mm Draft @WonderMaker ZR 0.2 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.2 nozzle.json | 2 - .../0.12mm Fine @WonderMaker ZR Ultra.json | 2 - .../process/0.12mm Fine @WonderMaker ZR.json | 2 - ...xtra Draft @WonderMaker ZR 0.2 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.2 nozzle.json | 2 - .../0.16mm Optimal @WonderMaker ZR Ultra.json | 2 - .../0.16mm Optimal @WonderMaker ZR.json | 2 - ....18mm Fine @WonderMaker ZR 0.6 nozzle.json | 2 - ...Fine @WonderMaker ZR Ultra 0.6 nozzle.json | 2 - ...0.20mm Standard @WonderMaker ZR Ultra.json | 2 - .../0.20mm Standard @WonderMaker ZR.json | 2 - .../0.24mm Draft @WonderMaker ZR Ultra.json | 2 - .../process/0.24mm Draft @WonderMaker ZR.json | 2 - ....24mm Fine @WonderMaker ZR 0.8 nozzle.json | 2 - ...Fine @WonderMaker ZR Ultra 0.8 nozzle.json | 2 - ...mm Optimal @WonderMaker ZR 0.6 nozzle.json | 2 - ...imal @WonderMaker ZR Ultra 0.6 nozzle.json | 2 - ...8mm Extra Draft @WonderMaker ZR Ultra.json | 2 - .../0.28mm Extra Draft @WonderMaker ZR.json | 2 - ...m Standard @WonderMaker ZR 0.6 nozzle.json | 2 - ...dard @WonderMaker ZR Ultra 0.6 nozzle.json | 2 - ...mm Optimal @WonderMaker ZR 0.8 nozzle.json | 2 - ...imal @WonderMaker ZR Ultra 0.8 nozzle.json | 2 - ...36mm Draft @WonderMaker ZR 0.6 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.6 nozzle.json | 2 - ...m Standard @WonderMaker ZR 0.8 nozzle.json | 2 - ...dard @WonderMaker ZR Ultra 0.8 nozzle.json | 2 - ...xtra Draft @WonderMaker ZR 0.6 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.6 nozzle.json | 2 - ...48mm Draft @WonderMaker ZR 0.8 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.8 nozzle.json | 2 - ...xtra Draft @WonderMaker ZR 0.8 nozzle.json | 2 - ...raft @WonderMaker ZR Ultra 0.8 nozzle.json | 2 - .../process/fdm_process_common.json | 3 - .../process/fdm_process_wm_common.json | 1 - resources/profiles/Z-Bolt.json | 2 +- .../Z-Bolt/machine/fdm_machine_common.json | 2 - .../0.08mm Extra Fine @Z-Bolt 0.4 nozzle.json | 2 - ....08mm High Quality @Z-Bolt 0.4 nozzle.json | 2 - .../0.12mm Fine @Z-Bolt 0.4 nozzle.json | 2 - ....12mm High Quality @Z-Bolt 0.4 nozzle.json | 2 - ....16mm High Quality @Z-Bolt 0.4 nozzle.json | 2 - ....16mm High Quality @Z-Bolt 0.6 nozzle.json | 2 - .../0.16mm Optimal @Z-Bolt 0.4 nozzle.json | 2 - .../0.16mm Standard @Z-Bolt 0.6 nozzle.json | 2 - ...16mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...16mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...16mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...16mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - ....20mm High Quality @Z-Bolt 0.6 nozzle.json | 2 - .../0.20mm Standard @Z-Bolt 0.4 nozzle.json | 2 - .../0.20mm Standard @Z-Bolt 0.6 nozzle.json | 2 - ...20mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...20mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...20mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...20mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - .../0.20mm Strength @Z-Bolt 0.4 nozzle.json | 2 - .../0.24mm Draft @Z-Bolt 0.4 nozzle.json | 2 - .../0.24mm Standard @Z-Bolt 0.6 nozzle.json | 2 - .../0.24mm Standard @Z-Bolt 0.8 nozzle.json | 2 - ...24mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...24mm Standard @Z-Bolt S300 0.8 nozzle.json | 2 - ...24mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...24mm Standard @Z-Bolt S400 0.8 nozzle.json | 2 - ...24mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...24mm Standard @Z-Bolt S600 0.8 nozzle.json | 2 - ...24mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - ...24mm Standard @Z-Bolt S800 0.8 nozzle.json | 2 - ...0.28mm Extra Draft @Z-Bolt 0.4 nozzle.json | 2 - .../0.30mm Standard @Z-Bolt 0.6 nozzle.json | 2 - ...30mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...30mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...30mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...30mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - .../0.30mm Strength @Z-Bolt 0.6 nozzle.json | 2 - ...30mm Strength @Z-Bolt S300 0.6 nozzle.json | 2 - ...30mm Strength @Z-Bolt S400 0.6 nozzle.json | 2 - ...30mm Strength @Z-Bolt S600 0.6 nozzle.json | 2 - ...30mm Strength @Z-Bolt S800 0.6 nozzle.json | 2 - .../0.32mm Standard @Z-Bolt 0.8 nozzle.json | 2 - ...32mm Standard @Z-Bolt S300 0.8 nozzle.json | 2 - ...32mm Standard @Z-Bolt S400 0.8 nozzle.json | 2 - ...32mm Standard @Z-Bolt S600 0.8 nozzle.json | 2 - ...32mm Standard @Z-Bolt S800 0.8 nozzle.json | 2 - .../0.36mm Standard @Z-Bolt 0.6 nozzle.json | 2 - ...36mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...36mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...36mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...36mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - .../0.40mm Standard @Z-Bolt 0.8 nozzle.json | 2 - ...40mm Standard @Z-Bolt S300 0.8 nozzle.json | 2 - ...40mm Standard @Z-Bolt S400 0.8 nozzle.json | 2 - ...40mm Standard @Z-Bolt S600 0.8 nozzle.json | 2 - ...40mm Standard @Z-Bolt S800 0.8 nozzle.json | 2 - .../0.42mm Standard @Z-Bolt 0.6 nozzle.json | 2 - ...42mm Standard @Z-Bolt S300 0.6 nozzle.json | 2 - ...42mm Standard @Z-Bolt S400 0.6 nozzle.json | 2 - ...42mm Standard @Z-Bolt S600 0.6 nozzle.json | 2 - ...42mm Standard @Z-Bolt S800 0.6 nozzle.json | 2 - .../0.48mm Standard @Z-Bolt 0.8 nozzle.json | 2 - ...48mm Standard @Z-Bolt S300 0.8 nozzle.json | 2 - ...48mm Standard @Z-Bolt S400 0.8 nozzle.json | 2 - ...48mm Standard @Z-Bolt S600 0.8 nozzle.json | 2 - ...48mm Standard @Z-Bolt S800 0.8 nozzle.json | 2 - .../Z-Bolt/process/fdm_process_common.json | 3 - .../process/fdm_process_zbolt_common.json | 1 - resources/profiles/iQ.json | 2 +- .../iQ/filament/fdm_filament_common.json | 6 - resources/profiles/iQ/machine/TiQ2.json | 2 +- resources/profiles/iQ/machine/TiQ8.json | 2 +- .../profiles/iQ/machine/fdm_tiq_common.json | 1 - .../iQ/process/fdm_process_tiq_common.json | 2 - resources/profiles/re3D.json | 2 +- .../re3D/machine/fdm_machine_common.json | 7 +- .../re3D/machine/fgf_re3D_common.json | 5 +- .../re3D/process/fdm_process_common.json | 1 - .../re3D/process/fdm_process_re3D_common.json | 171 +++-- .../re3D/process/fgf_process_re3D_common.json | 5 +- scripts/orca_profile_tool.py | 111 +-- scripts/tests/test_filament_id.py | 4 +- scripts/tests/test_profile_tool.py | 124 +++- src/libslic3r/PresetBundle.cpp | 67 ++ src/libslic3r/PresetBundle.hpp | 5 + .../libslic3r/test_preset_bundle_loading.cpp | 101 +++ 2135 files changed, 85633 insertions(+), 87858 deletions(-) create mode 100644 .claude/skills/orca-profiles/SKILL.md create mode 100644 .claude/skills/orca-profiles/references/filament-profiles.md create mode 100644 .claude/skills/orca-profiles/references/ids.md create mode 100644 .claude/skills/orca-profiles/references/machine-profiles.md create mode 100644 .claude/skills/orca-profiles/references/process-profiles.md create mode 100644 .claude/skills/orca-profiles/references/review-checklist.md create mode 100644 .claude/skills/orca-profiles/references/validation.md create mode 100644 .claude/skills/orca-profiles/references/vendor-bundle.md diff --git a/.claude/skills/orca-profiles/SKILL.md b/.claude/skills/orca-profiles/SKILL.md new file mode 100644 index 0000000000..18d9fc0adc --- /dev/null +++ b/.claude/skills/orca-profiles/SKILL.md @@ -0,0 +1,120 @@ +--- +name: orca-profiles +description: Use when creating, modifying, reviewing or debugging OrcaSlicer FFF system profiles under resources/profiles, including printer/vendor/nozzle/material additions, bundle indexes and versions, preset renames, setting_id, filament_id and filament_id_snapshot.json. Also use for missing presets or vendors, ignored profile settings, ambiguous AMS filament matches, and failures from orca_profile_tool.py, check_profile.sh/.bat, OrcaSlicer_profile_validator or the Check profiles CI job. +--- + +# OrcaSlicer system profiles + +A bundle is `resources/profiles/.json` plus `/`. The vendor id is the +filename stem, not the index's display `name`. The index is the loader's only entry point: +unindexed presets never load. `OrcaFilamentLibrary` is the shared filament bundle; +`blacklist.json` is data, not a bundle. + +## Choose the reference for the task + +Read the relevant reference before editing; load others only when the task crosses those areas. +Paths below are relative to this skill. Commands run from the repository root. + +| Task | Read | +| --- | --- | +| Add or tune a filament, brand or material; fix compatibility / alias shadowing | [filament-profiles.md](references/filament-profiles.md) | +| Add a printer or nozzle; change models, variants, assets or extruder vectors | [machine-profiles.md](references/machine-profiles.md) | +| Add a quality tier or tune a process | [process-profiles.md](references/process-profiles.md) | +| Create a vendor bundle; diagnose loading or inheritance; migrate preset names | [vendor-bundle.md](references/vendor-bundle.md) | +| Change ids or snapshot claims; diagnose AMS identity | [ids.md](references/ids.md), then `docs/HLSD/filament_id.md` for identity changes | +| Review a profile diff | [review-checklist.md](references/review-checklist.md) | +| Run checks, interpret failures, test another tree or verify in the app | [validation.md](references/validation.md) | + +## Golden rules + +1. **Bump every changed bundle's `version`**, including `OrcaFilamentLibrary.json` when affected. + Increment the last component; carry `.99` into the third component (`02.04.00.99` → + `02.04.01.00`). The updater requires a strictly newer version. CI does not check this. +2. **Register every preset, bases included, parents before children.** `update-index` generates + the four `*_list` arrays; `check` requires its output. Index names must equal file `name` fields. +3. **Generate ids; never invent or copy them.** Keep existing ids during ordinary tuning. New + presets normally omit them until `generate-id`; bases must have no `setting_id`. + BBL's authoritative `setting_id` and a wrongly inherited `filament_id` need the explicit + handling in [ids.md](references/ids.md). +4. **Load failures can discard a whole vendor bundle.** Broken `inherits`, missing indexed files, + duplicate names, invalid model/variant references and unresolved filament ids affect more than + the edited preset. Inheritance stays within a bundle, except filaments may inherit the library. +5. **Preserve shipped selectable names.** Renaming, deleting or changing `instantiation` from + `"true"` to `"false"` needs `renamed_from` on a selectable successor. It is a `;`-separated string; + update in-tree references too. See [migration rules](references/vendor-bundle.md#renamed_from). +6. **Compatibility uses exact printer variant names.** Every instantiated non-library filament + needs a non-empty `compatible_printers` in its own file. Library fallbacks may omit it; + library printer-specific tunes use a non-empty list. Keep same-product tunes disjoint. +7. **Preset values are strings or arrays of strings.** Use `"instantiation": "false"`, not `false`. + Model `nozzle_diameter` is a `;`-separated string; machine `nozzle_diameter` is an array. + Wrong types can abort loading; see [failure scopes](references/vendor-bundle.md#failure-modes-ranked-by-blast-radius). +8. **Verify setting keys against the code.** Unknown keys are silently discarded. Check + `PrintConfig.cpp` definitions and `PrintConfigDef::handle_legacy`; neighbours can contain dead + keys. `normalize` removes known obsolete keys, but does not detect arbitrary misspellings. +9. **Run the full profile checks before reporting completion.** A vendor-scoped pass is only a + development loop. Review also covers version bumps, assets, non-default processes and hardware + tuning that CI cannot establish. + +## Creating or modifying a profile + +1. **Inspect the diff and neighbouring presets.** Read their `name`, parent chain and children; + edits to a base or a leaf with descendants propagate. Match the bundle's structure and write + only overrides. New files use tab indentation, LF and a trailing newline; preserve unrelated + formatting in existing files. Match filename case exactly and use cross-platform names. +2. **Author explicit metadata.** Set `type` yourself, especially for `machine` vs `machine_model`. + Use `"from": "system"` and string `instantiation` on config presets. Omit ids on new presets + unless [ids.md](references/ids.md) requires special handling; retain them on existing ones. + Complete compatibility, defaults, assets and any rename migration using the task reference. +3. **Bump the version**, then run the authoring commands in order for each affected bundle: + + ```bash + python3 scripts/orca_profile_tool.py normalize --vendor "" + python3 scripts/orca_profile_tool.py update-index --vendor "" + python3 scripts/orca_profile_tool.py generate-id --vendor "" + python3 scripts/orca_profile_tool.py update-snapshot + python3 scripts/orca_profile_tool.py check + ``` + + Writing commands support `--dry-run`. Inspect their diffs: `normalize` changes content and can + reformat entire files. `update-snapshot` is tree-wide; include its diff whenever a filament id + **or claim** changes, even if no new id was minted. Skip it when filament identity and claims + are unchanged. Stop and resolve command errors before proceeding. + + **Do not use `trim` in this workflow:** it can delete newly authored, unindexed profiles. + Do not use `normalize --force` for routine edits. +4. **Validate:** + + ```bash + ./scripts/check_profile.sh --vendor "" # development loop + ./scripts/check_profile.sh # full tree before the PR + ``` + + On Windows use `py -3` instead of `python3`, and `scripts\check_profile.bat -Vendor ""` + / `scripts\check_profile.bat`. Logs: `.test/check_profiles/logs/.log`. + Id checks remain tree-wide under `--vendor`; filament-only bundles skip the default slice check. + See [validation.md](references/validation.md) for flags, coverage and error remedies. +5. **Verify the changed behavior.** Slice newly added non-default processes explicitly, and + [test in the app](references/validation.md#testing-in-the-app) for selection or UI behavior. + Report checks actually run, failures/skips and any hardware tuning still unverified. + +## Symptom → first reference + +| Symptom | Start here | +| --- | --- | +| A vendor disappears | Loader log / `validate_system`; [bundle failure scopes](references/vendor-bundle.md#failure-modes-ranked-by-blast-radius) | +| A setting has no effect | Key spelling/type, `handle_legacy`, or a config key placed on a `machine_model` | +| A preset exists but is not selectable | Index registration, `instantiation`, installation and compatibility | +| A filament is missing, duplicated, or matches the wrong spool | [Compatibility and alias shadowing](references/filament-profiles.md#compatible_printers); [ids](references/ids.md) | +| A bed temperature is ignored | [Plate-specific temperature keys](references/filament-profiles.md#bed-temperature-is-twelve-keys-not-one) | +| A change is absent from the running app | Version bump and [installed profile location](references/validation.md#testing-in-the-app) | +| A check fails | [Error → remedy](references/validation.md#error--remedy) | + +## Source of truth + +When guidance and behavior disagree, inspect the current checkout: +`scripts/orca_profile_tool.py` for tooling and flags; `src/libslic3r/Preset*.cpp` for loading and +compatibility; `src/libslic3r/PrintConfig.cpp` for setting types and legacy handling; +`src/dev-utils/OrcaSlicer_profile_validator.cpp` and `.github/workflows/check_profiles.yml` for +validation coverage. `docs/HLSD/filament_id.md` defines filament identity. The +[profile development guide](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/developer_reference/how_to_create_profiles.md) +is a tutorial; confirm loader and CLI details against these sources. diff --git a/.claude/skills/orca-profiles/references/filament-profiles.md b/.claude/skills/orca-profiles/references/filament-profiles.md new file mode 100644 index 0000000000..b3f6acd4c4 --- /dev/null +++ b/.claude/skills/orca-profiles/references/filament-profiles.md @@ -0,0 +1,207 @@ +# Filament profiles and OrcaFilamentLibrary + +`OrcaFilamentLibrary` is the filament-only bundle the loader reads **first**; its config map +becomes the base bundle, so any vendor may inherit a library preset by name. It is the only cross-bundle +parent — vendor-to-vendor inheritance always fails. + +## Where a filament goes + +| Contribution | Location | +| --- | --- | +| Generic material for all printers | `OrcaFilamentLibrary/filament/Generic @System.json` | +| A brand's product, all printers | `OrcaFilamentLibrary/filament//` | +| A brand's tune for one printer | `OrcaFilamentLibrary/filament///` — recommended; `/filament//` also works | +| A printer vendor's tune of a generic or its own product | `/filament/` | + +Both locations for the last-but-one row are supported: `OrcaFilamentLibrary/filament///.json` +(the shape the wiki shows) and `/filament//`. The library path is the one a +filament vendor should contribute to — `OrcaFilamentLibrary/filament//` is the brand's own +folder, while a printer vendor's folder belongs to that printer vendor. Brand tunes do ship under +printer vendors' folders today (Polymaker and SUNLU among others). + +Library layout: `filament/base/fdm_filament_*.json` type roots, root-level `Generic @System.json` +generics, and one subfolder per brand, which may nest printer-specific tunes one level deeper. Adding +a brand means adding a folder here; the folder name is a directory label only — `filament_vendor` inside the JSON is the real vendor string. + +## The three-part shape + +```jsonc +// Fiberon PA6-CF @base.json — the product root, holds identity + material values +{ "type": "filament", "name": "Fiberon PA6-CF @base", "from": "system", + "instantiation": "false", "inherits": "fdm_filament_pa", + "filament_id": "OFkOviHk", // generated here; variants inherit it + "filament_vendor": ["Polymaker"], "filament_type": ["PA6-CF"], /* … */ } + +// Fiberon PA6-CF @System.json — the selectable shim, 7 keys +{ "type": "filament", "name": "Fiberon PA6-CF @System", "from": "system", + "instantiation": "true", "inherits": "Fiberon PA6-CF @base", + "setting_id": "…", "compatible_printers": [] } + +// /filament/Polymaker/Fiberon PA6-CF @BBL X1C.json — a printer tune +{ … "inherits": "Fiberon PA6-CF @base", "filament_max_volumetric_speed": ["14"], + "compatible_printers": ["Bambu Lab X1 Carbon 0.4 nozzle", …] } +``` + +- `@base` is the convention for a root. A base carries **no** `setting_id`, no `compatible_printers`, no + `filament_settings_id`. Only the `setting_id` half is enforced, and nothing violates it; the other two + are unchecked and plenty of bases still carry them. Do not copy that from a neighbouring file. +- Every `@System` must be `"instantiation": "true"`. DREMC ships `@System` presets set to `"false"`, + which therefore ship but can never be selected; no check catches it. +- A duplicated brand `@base` across bundles is normal and intentional (`Fiberon PA6-CF @base` exists in + both the library and BBL with the same id, differing only in MVS) — bases never enter the preset + collection, so there is no duplicate-name error. +- You may inherit from an instantiated preset as well as from a base; it is common. + +## The two most common contributions + +**A printer vendor tuning a generic.** Keep the `Generic X` base name so the alias shadows the library +preset on your printers, inherit `Generic X @System`, declare **no** `filament_id` (inheriting the +library's is correct — the product really is the library's generic), and give it a non-empty +`compatible_printers` in its own body: + +```jsonc +// /filament/Generic PETG @Acme One 0.4 nozzle.json +{ "type": "filament", "name": "Generic PETG @Acme One 0.4 nozzle", "from": "system", + "instantiation": "true", "inherits": "Generic PETG @System", + "filament_flow_ratio": ["0.95"], "filament_max_volumetric_speed": ["10"], + "compatible_printers": ["Acme One 0.4 nozzle"] } +``` + +**A printer vendor's own branded product.** Give it a `@base` root so `generate-id` can mint the id (see +[ids.md](ids.md) — inheriting `Generic X @System` directly makes the id unfixable by the tool), then one +instantiated leaf per printer in the same bundle. No `@System` shim: that is only for a product entering +OrcaFilamentLibrary. + +```jsonc +// /filament/Acme Aura PETG @base.json — instantiation false, no setting_id +{ "type": "filament", "name": "Acme Aura PETG @base", "from": "system", + "instantiation": "false", "inherits": "fdm_filament_pet", + "filament_vendor": ["Acme"], "filament_type": ["PETG"] } // filament_id minted here + +// /filament/Acme Aura PETG @Acme One 0.4 nozzle.json +{ "type": "filament", "name": "Acme Aura PETG @Acme One 0.4 nozzle", "from": "system", + "instantiation": "true", "inherits": "Acme Aura PETG @base", + "filament_max_volumetric_speed": ["11"], + "compatible_printers": ["Acme One 0.4 nozzle"] } +``` + +Omit `filament_settings_id` from new presets — it is runtime bookkeeping the app rewrites to the preset +name. + +## `compatible_printers` + +- **Library fallbacks:** empty `[]` or absent, so they are offered on all printers except where + [alias shadowing](#alias-shadowing) supplies a printer-specific tune. +- **Library printer-specific tunes:** non-empty, listing exact printer **variant** names. These can + supersede a same-alias fallback just like a tune in a printer vendor's bundle. +- **Instantiated filaments in every other vendor:** non-empty, listing exact printer **variant** names. + Enforced twice but not identically: the C++ `has_errors` reads the *flattened* config, so an inherited list satisfies it, + while the Python check reads the file's **own** key. Write the list in the file itself. This is the + most common filament CI failure. +- Emptying it to "make it apply everywhere" fails that check *and* creates a duplicate-`filament_id` + collision against the library generic on every printer. +- Copying a base's full printer list onto a nozzle-specific variant produces duplicate combobox entries — + a real shipped bug twice over. + +## Alias shadowing + +A printer-specific filament in either the library or a vendor bundle supersedes the library fallback +on the printers it lists. The matching key is the **alias**: the preset name up to the **first** `@`, +right-trimmed (no `@` → the whole name). So +`QIDI ABS-GF@Q2-Series` aliases to `QIDI ABS-GF`. + +A library preset with an empty `compatible_printers` collects, into `m_excluded_from`, every printer named +by any same-alias preset that *has* a non-empty list, and is then hidden on those printers. + +Two consequences: + +- **Only an unrestricted library fallback can be shadowed.** Two printer-specific presets sharing + an alias do not exclude each other — overlapping lists for the same product trip the + duplicate-`filament_id` check instead. +- This is why adding `Generic PLA @` to a vendor silently removes the library `Generic PLA` + from that printer. Intended — and the reason a vendor tuning a generic must **keep the `Generic X` + base name**. + +The literal spelling `Generic @System` is load-bearing beyond shadowing: `find_preset2` rewrites an +unresolved name containing "Generic" into that form and retries against the library, which is how 3MF +and project recovery works. + +## `filament_id`, `filament_vendor`, `filament_type` + +`filament_id` is minted from the triple `(filament_vendor, filament_type, name-before-first-@)`. +`filament_vendor` and `filament_type` are therefore **identity, not decoration** — editing either +re-mints the id. Read `docs/HLSD/filament_id.md` before changing any of them, and see +[ids.md](ids.md) for the tooling. + +A filament with no resolvable `filament_id` anywhere in its `inherits` chain is a **hard load error** that +discards the vendor bundle. The id inherits across bundles, so a vendor's `Generic ABS @X` inheriting +`Generic ABS @System` gets the library's id for free; a vendor's own product must resolve its own. + +- `filament_type` **must be a JSON array** — the one vector key the Python check enforces. A scalar + `"PP"` once hung the filament/printer selection UI. +- It is an **open** enum: an unlisted value is accepted silently and falls back to 190–300 °C defaults + and adhesion 1.0. Off-list values do ship. Prefer a value from `MaterialType::all()` in + `src/libslic3r/MaterialType.cpp`, or add a row there. +- Generics use `filament_vendor: ["Generic"]`, which `fdm_filament_common` already defaults to. + +## `"nil"` + +Legal in any key whose `ConfigOptionDef` is `nullable`. In a filament preset that is most of the +`filament_*` family, plus `long_retractions_when_ec` and `retraction_distances_when_ec`. About half are +the extruder overrides (`filament_retraction_length`, `filament_z_hop`, `filament_wipe`, +`filament_retract_*`, `filament_retraction_speed`, `filament_deretraction_speed`, +`filament_retraction_minimum_travel`, `filament_wipe_distance`, `filament_long_retractions_when_cut`, +`filament_retraction_distances_when_cut`, …), where `nil` means *keep the printer/extruder's own value*. +The rest are ordinary nullable options (`filament_flow_ratio`, `filament_flush_temp`, +`filament_adaptive_volumetric_speed`, …) where it means *unset*. + +Anywhere else it throws `Deserializing nil into a non-nullable object`. To not set a non-nullable key, +omit it — do not write `nil`. + +## What to review per nozzle + +Across `@X` / `@X 0.N nozzle` sibling pairs the keys that differ, most often first, are +`filament_max_volumetric_speed`, `filament_retraction_length`, `slow_down_min_speed`, +`filament_flow_ratio`, `slow_down_layer_time`, `nozzle_temperature` and `pressure_advance`. +`filament_cost`, `filament_density`, `filament_type` and `filament_vendor` belong on the `@base` and +should not appear in a printer tune. + +Use measured values for the material, hotend, extruder and nozzle combination. Neither maximum +volumetric speed nor pressure advance has a universal nozzle-only lookup table. When cloning a +0.4 preset for a 0.2 nozzle, explicitly revisit flow limits; do not infer a pressure-advance value +or a required direction of change from diameter alone. + +## Style + +Overrides, not full copies: a typical instantiated filament preset carries around a dozen non-meta keys, +and a library leaf two or three. Presets that restate fifty-plus keys from their parent do still ship — +Phrozen's single filament preset is that style — but they are the pattern to move away from, not to +copy. Commit `6943b6ddc3` is the stated model (flip true bases to `instantiation: "false"`, strip +`compatible_printers`/`setting_id`/`filament_settings_id`, add `renamed_from` on the survivor). + +Prefer the library's `fdm_filament_*` bases over a vendor-local copy. Phrozen's local +`fdm_filament_common` has drifted from the library's. + +Canonical key order, written by `orca_profile_tool.py normalize` when it rewrites a file: `type`, `name`, +`renamed_from`, `inherits`, `from`, `setting_id`, `filament_id`, `instantiation`, then everything else in +the order you wrote it. Not enforced — a file that leads with `compatible_printers` passes `check`. + +**Every vector-typed (`co*s`) key must be a JSON array.** Only `filament_type` is an outright error, but +`normalize` silently arrayifies five more (`filament_cost`, `filament_density`, +`temperature_vitrification`, `filament_max_volumetric_speed`, `filament_vendor`) and `check` fails when +it would. Every other vector key is on you — including `filament_start_gcode`, `filament_end_gcode`, +`filament_extruder_variant`, `compatible_printers` and the plate temperatures. + +## Bed temperature is twelve keys, not one + +There is no single "bed temperature". Which plate key applies depends on `curr_bed_type`, whose six +selectable values (`btPC`, `btEP`, `btPEI`, `btPTE`, `btPCT`, `btSuperTack`; `btDefault` maps to no key) +`get_bed_temp_key()` turns into `cool_plate_temp`, `eng_plate_temp`, `hot_plate_temp`, +`textured_plate_temp`, `textured_cool_plate_temp` and `supertack_plate_temp` — each with an +`*_initial_layer` twin. + +`textured_cool_plate_temp` is the one most often forgotten. A printer with `support_multi_bed_types` off +hides the selector, and the printer preset's +`default_bed_type` decides which plate is selected for it, but `curr_bed_type` can still hold a stale +value carried over from another printer — so set every plate the printer plausibly has, as the sibling +presets in the bundle do. diff --git a/.claude/skills/orca-profiles/references/ids.md b/.claude/skills/orca-profiles/references/ids.md new file mode 100644 index 0000000000..59560160f8 --- /dev/null +++ b/.claude/skills/orca-profiles/references/ids.md @@ -0,0 +1,183 @@ +# `setting_id` and `filament_id` + +Orca-generated ids are deterministic hashes of identity. **Never invent an id or copy a sibling's +`setting_id`.** Use `scripts/orca_profile_tool.py`; the two special cases are +[a wrongly inherited filament id](#what-generate-id-does-and-does-not-fix) and +[BBL's authoritative setting ids](#bbls-exception-precisely). + +`docs/HLSD/filament_id.md` is the authoritative design document for `filament_id` — the id landscape, the +snapshot as the maintainer gate, and the Bambu catalog map. This page is the tooling half. + +| | `setting_id` | `filament_id` | +| --- | --- | --- | +| Identifies | one selectable preset | one filament **product** | +| Key hashed | `//` | `filament_product///` | +| Shape | 16 base62 chars | `OF` + 6 base62 chars | +| Required on | every `instantiation: "true"` preset | every **instantiated** filament, own or inherited | +| Forbidden on | bases (`instantiation != "true"`) | — (a base is exactly where it belongs) | +| Scope | globally unique across the tree | shared by every variant of the product, in every bundle | + +`` is `machine` / `process` / `filament` — the vendor is the **folder** name (`BBL`), not the +display name (`Bambulab`). Renaming a preset changes its `setting_id`; renaming a filament, or editing +its `filament_vendor` or `filament_type`, also changes its `filament_id`. + +## The tool + +Use `scripts/orca_profile_tool.py` with a subcommand: + +| Command | Does | +| --- | --- | +| `check` | everything CI's `profile_tool` step runs — see [validation.md](validation.md) | +| `generate-id` | writes `setting_id` and `filament_id` | +| `normalize` | rewrites profile files into their canonical shape | +| `trim` | deletes profile files no `.json` list references | +| `update-index` | rebuilds the `*_list` sections from the files on disk | +| `update-snapshot` | re-records `scripts/filament_id_snapshot.json` | + +The order after adding, renaming or deleting files — each step feeds the next, so it is not +interchangeable — is `normalize` → `update-index` → `generate-id` → `update-snapshot` → `check`. +The [authoring workflow](../SKILL.md#creating-or-modifying-a-profile) has the commands; +`update-snapshot` is needed when filament ids or claims change. + +> **`trim` deletes.** It removes every profile file the index does not list — including the one you just +> added and have not registered yet. Register first, or skip `trim` entirely; it is a cleanup sweep, not +> part of landing a profile. Preview with `--dry-run`. + +**Register, then mint.** The `filament_id` pass reads `.json`'s `filament_list`, not the +filesystem (the `setting_id` pass walks the filesystem, so a bundle whose index has not landed yet is +still assignable). A new filament file is therefore invisible to `generate-id`'s filament_id pass until +it is registered — its `setting_id` is written regardless. + +- `--dry-run` works on every writing command (`generate-id`, `normalize`, `trim`, `update-index`, + `update-snapshot`) and writes nothing. +- `--filament-id` / `--setting-id` narrow `generate-id`; they exclude each other, and passing neither + writes both. +- `--vendor` is repeatable and narrows **only what is written** — the id is a function of the triple + alone, so a narrowed run writes exactly what a full run would. An unknown vendor exits 1 before any + write. `--vendor` on `check` narrows the per-vendor checks only; the `setting_id` and `filament_id` + passes stay tree-wide. `update-snapshot` takes no `--vendor` at all. +- `--profiles DIR` points any command at another tree — with the `--snapshot` companion rule, see + [Checking a copy of the tree](validation.md#checking-a-copy-of-the-tree). +- `--profile-type` narrows `normalize`, `trim` and `update-index` to `machine_model`, `process`, + `filament` or `machine`. +- Exit codes: 0 clean, 1 errors found (`generate-id` still writes what it could), 2 argparse misuse. +- Output is ANSI-coloured; searching for the literal `[ERROR]` still works. + +`generate-id` is **idempotent and byte-preserving** — BOM and CRLF kept, one key line touched per pass. +A legitimate `generate-id` diff is one or two changed lines per file: a new instantiated filament gets +both a `filament_id` and a `setting_id`, and a BBL file with a misspelled `settings_id` has that line +dropped and its value restored under the right key. `normalize` is the opposite by design — it rewrites +whole files into canonical shape — which is why `check` demands it already be a no-op. Some bundles have +CRLF committed (OrcaFilamentLibrary, Anycubic and RH3D among them), so a `normalize` pass there rewrites +every line — read the diff before committing it. + +On a clean tree `check`, `generate-id --dry-run` and `update-snapshot --dry-run` all exit 0 with zero +findings. That is the baseline to restore before opening a PR. + +## What `generate-id` does and does not fix + +Writes: + +- a `setting_id` into any instantiated preset that lacks one, or whose value does not match the formula; +- strips a `setting_id` from a base; +- deletes the misspelled `settings_id` key; +- a `filament_id` into the id-less **root(s)** of an instantiated filament that resolves none; +- rewrites a **declared** `filament_id` that is not the mint of its own triple. + +Refuses to write (reports only): a base62 collision between two products, an empty `filament_vendor` or +`filament_type`, a broken `inherits` chain, roots of one filament resolving divergent `(vendor, type)` +pairs. + +**Does not fix: a preset that *inherits* a wrong `filament_id`.** This is check 3b, and it is the trap +most likely to bite. It happens when a branded filament inherits a generic for its settings: + +```jsonc +{ "name": "Phrozen Aura PETG @Phrozen Arco 0.4 nozzle", + "inherits": "Generic PETG @System" } // resolves the OFL generic's id — wrong product +``` + +The preset resolves *an* id, so `generate-id` neither inserts nor rewrites, and `check` fails with +`inherits filament_id "X" but its own triple "V/T/N" mints "Y"`. + +Two fixes, in order of preference: + +1. **Give the product a `@base` root** inheriting a material base (`fdm_filament_pet`, + `fdm_filament_pla`, …). No `fdm_filament_*` base carries a `filament_id`, so the filament now resolves + none and `generate-id` mints it for you. This is also the shape the rest of the tree uses. +2. **Declare the tool-computed key on the preset itself.** Use the expected value reported by `check` + or compute it with the function below; this is not a manually chosen id. Make sure the preset + resolves the right `filament_vendor` and `filament_type` first — with + neither set, the triple resolves through the generic parent and the branded product is minted, and + then sanctioned in the snapshot, under vendor `Generic`. If you need the id before the file exists: + + ```bash + python3 -c "import sys; sys.path.insert(0,'scripts'); from orca_profile_tool import generate_filament_id as g; print(g('Polymaker','PLA','PolyLite PLA'))" + # -> OF5CgdDq + ``` + + The quoting works unchanged in cmd and PowerShell; only swap `python3` for `py -3`. + + The `setting_id` equivalent is `generate_preset_setting_id('', '', '')`. + +## The snapshot + +`scripts/filament_id_snapshot.json` is the sanctioned state: the id landscape derived from the tree must +equal it exactly, in both directions. **Any change to a filament id or its claims must be committed with +the profiles.** + +To trace an id from an error, search for it in the snapshot. Each entry records its identity triple +and `/` claims, one per bundle/product pair rather than per preset. + +```bash +python3 scripts/orca_profile_tool.py update-snapshot +``` + +Never hand-edit it. It is regenerated deterministically (1-space indent, LF, id-sorted) and +refuses to write two states it could not record truthfully: a tree it could not read whole, and an id +declared under more than one triple. It does **not** judge the ids themselves — it records state, `check` +judges it, so a bad id lands in the diff and fails there instead. `generate-id` never touches the +snapshot, and reminds you with a warning **only when it actually wrote a `filament_id`** — not on a +`--dry-run`, and not when only `setting_id`s changed. + +Reviewing a snapshot diff: + +| Diff | Means | +| --- | --- | +| new id + new claim | a genuinely new product — confirm it is not a rename in disguise | +| id removed | a product left the tree, or its identity changed — the old id is not forwarded anywhere | +| triple changed under an existing id | `filament_vendor`/`filament_type`/name was edited; deliberate? | +| claim added/removed only | a bundle started or stopped shipping that product | + +An entry with an empty `filaments` list is legitimate — declared, but not yet claimed by an instantiated +preset. + +## BBL's exception, precisely + +`RESERVED_VENDORS = {"BBL"}` covers **`setting_id` assignment only**, keyed on the *folder* name: + +- The tool never mints or replaces a BBL `setting_id`. A new instantiated BBL preset with no + `setting_id` therefore **cannot be fixed by the tool**, yet the presence rule still applies to it — + carry over Bambu's authoritative id by hand. +- BBL is not exempt from anything else: bases still get their `setting_id` stripped, ids must still be + globally unique, and BBL `filament_id`s are minted like everyone else's — every id the snapshot records + as claimed by BBL is an `OF*`. + +## Ids other systems compose + +No id from another system is the mint of a triple, so `check` rejects it like any other bad id — same +error, same remedy, whoever wrote it. Three such spaces exist near the tree; recognise them so you do +not copy one into a profile: + +- **Bambu's `GF*` catalog** — external and opaque, correlated to Orca's ids by the generated + `resources/printers/bambu_filament_ids.json`. `GF` is a *prefix*, not a spelling the tree avoids: most + BBL `setting_id`s start with `G`, and `blacklist.json` and + `BBL/filament/filaments_color_codes.json` both reference Bambu catalog ids by design. The rule is + about `filament_id` and nothing else. +- **Qidi's `QD_*`** — composed at runtime by the box (`QD___`), not a preset id. +- **`P` + 7 hex, and `"null"`** — what `CreatePresetsDialog.cpp` gives a *user*-created filament. + +## Tests + +`python3 -m unittest discover -s scripts/tests -t scripts` (`py -3 -m …` on Windows). Note the +`-t scripts` argument; without it the imports fail. CI runs them as the first, non-`continue-on-error` +step of the profile job — see [validation.md](validation.md#ci). diff --git a/.claude/skills/orca-profiles/references/machine-profiles.md b/.claude/skills/orca-profiles/references/machine-profiles.md new file mode 100644 index 0000000000..01071af6b1 --- /dev/null +++ b/.claude/skills/orca-profiles/references/machine-profiles.md @@ -0,0 +1,194 @@ +# Printer models and variants + +Both live in `resources/profiles//machine/*.json`; models go in `machine_model_list`, variants +and shared bases in `machine_list`. Every one of them is registered. Some vendors (Elegoo, Eryone, +InfiMech, FlyingBear) nest a further subfolder under `machine/`, so recurse rather than globbing +`machine/*.json`. + +## A `machine_model` is not a config preset + +It is parsed by a hand-written key switch, and only these keys are stored (`version` and `url` are +matched and discarded): + +`name`, `model_id`, `nozzle_diameter`, `machine_tech`, `family`, `bed_model`, `bed_texture`, +`hotend_model`, `default_materials`, `not_support_bed_type`, `image_bed_type`, +`bottom_texture_end_name`, `bottom_texture_rect`, `bottom_texture_rect_longer`, `middle_texture_rect`, +`use_double_extruder_default_texture`. + +**Everything else is silently dropped.** Only `name` and `nozzle_diameter` are required. Dead keys ship +on real models today — `url`, `default_bed_type`, even a `desciption` typo — so a neighbour carrying a +key is no evidence it does anything. Printer config options belong on the `machine` preset, never here. + +```json +{ + "type": "machine_model", + "name": "Phrozen Arco", + "machine_tech": "FFF", + "family": "Phrozen", + "model_id": "Phrozen Arco", + "nozzle_diameter": "0.4", + "bed_model": "Phrozen Arco_buildplate_model.stl", + "bed_texture": "Phrozen Arco_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "Generic PLA @Phrozen Arco 0.4 nozzle" +} +``` + +| Field | Notes | +| --- | --- | +| identity | **the `name` of the `machine_model_list` entry**, which is what a variant's `printer_model` must equal. `check_name_consistency` forces it to equal the file's `name`, so they coincide. | +| `model_id` | a *separate* cloud/device printer type. Optional, and not required to be unique. Not the model's identity. Changing it changes device matching. | +| `machine_tech` | only `starts_with("SL")` means SLA; everything else is FFF. Write `FFF`; a few models write `FGF`, which is a label with no effect. | +| `nozzle_diameter` | `;`-separated string, one token per available size. Order is free (Qidi writes `0.4;0.2;0.6;0.8` to put the default first). This list is the authoritative set of legal `printer_variant` values. | +| `default_materials` | `;`-separated filament **preset names**. Used to preselect in the wizard *and* by `PresetBundle::load_installed_filaments` to auto-install a printer's filaments on first run, so a dangling entry costs a real user a filament. Not `,`; case-sensitive (`@System`). `check` fails on a dangling name here or in `default_filament_profile`. | +| `family` | a wizard grouping label only; give every model one. | + +### Assets + +`bed_model`, `bed_texture` and `hotend_model` are paths relative to the **vendor folder** (by id). +Majority convention: `_buildplate_model.stl` and `_buildplate_texture.svg`. An empty string +is the legal "none", and is the norm for `hotend_model`. + +**Nothing checks that the file exists.** A missing `hotend_model` falls back to +`resources/profiles/hotend.stl`; a missing `bed_model`/`bed_texture` just renders nothing. Broken +references already ship. Verify by hand. + +Every model also has a `_cover.png` in the vendor folder — treat it as required, not optional. +240×240 is the cap `scripts/optimize_cover_images.py` enforces and the size most covers already use. +A missing cover degrades to a placeholder in both the wizard and the sidebar. + +## The `machine` variant + +```json +{ + "type": "machine", + "name": "Phrozen Arco 0.4 nozzle", + "inherits": "fdm_machine_common", + "from": "system", + "setting_id": "lvaYKTUZr5C9jSwk", + "instantiation": "true", + "printer_model": "Phrozen Arco", + "printer_variant": "0.4", + "nozzle_diameter": ["0.4"], + "default_print_profile": "0.20mm Standard @Phrozen Arco 0.4 nozzle", + "default_filament_profile": ["Generic PLA @Phrozen Arco 0.4 nozzle"], + "printable_area": ["0x0", "300x0", "300x300", "0x300"], + "printable_height": "300" +} +``` + +Minimum viable key set: `type`, `name`, `from`, `instantiation`, `setting_id`, `inherits`, +`printer_model`, `printer_variant`, `nozzle_diameter`, `printable_area`, `printable_height`, +`default_print_profile`. The four keys without which the preset will not load at all are `name`, +`instantiation`, `printer_model` and `printer_variant`; `default_filament_profile` is an array +(`["Generic PLA @System"]`) and the model's `default_materials` a `;`-separated string. Unlike a +`machine_model`, a `machine` **is** config-loaded, so a key belonging to another preset type is a +reported error (a misspelled key is still silent). + +### `printer_variant` — three hard rules + +1. Non-empty, and an exact member of the model's `;`-separated `nozzle_diameter` list. +2. `printer_model` non-empty and naming a model of this vendor. +3. In validation mode, for instantiated presets only: split `printer_variant` on `+`, each token must + start with a number (a trailing non-numeric suffix such as `HF` is ignored), and the resulting **set** + must equal `set(nozzle_diameter)`. + +Rules 1 and 2 are loader-enforced — failing either drops the preset *and* the whole bundle. Rule 3 only +raises a validation error: the preset still loads, but the validator exits non-zero. + +`nozzle_diameter` lists one entry **per physical nozzle**; `printer_variant` lists the **distinct** +diameters joined with `+`. Snapmaker U1 is the worked case: `["0.4","0.4","0.6","0.6"]` against +`"0.4+0.6"` — it passes because the comparison is on sets. + +The conventional values are `0.2`, `0.25`, `0.4`, `0.5`, `0.6`, `0.8` and `1.0`. Suffixed forms +(`0.4HF`, `0.6HF`, `0.8HF`, `0.4HS`) are Flashforge-only and the `+` form is rare. A variant is **not** +required to be unique within a model — Volumic ships `EXO42 IDRE`, `… COPY MODE` and `… MIRROR MODE` all +at `0.4` under the one model `EXO42 IDRE`. + +The converse is **unchecked**: a nozzle size in the model's list with no matching variant is offered in +the wizard and resolves to nothing. `Wanhao France`'s `D12 500 PRO M2 DIRECT` ships that bug today. + +### Other fields worth knowing + +- `default_print_profile` is a **scalar**, matched by exact preset name. Not a `;` list. The named + process must be compatible with this printer through its resolved list or condition. + `validate_slice` attempts to select it and rejects generic Default fallbacks, but compatibility + updates can choose another compatible preset. Check the exact default reference yourself. +- `default_filament_profile` is an **array**, one name per element. +- `printable_area` is an array of `"XxY"` strings — four points for a rectangle, one per segment for a + delta or circular bed. +- `gcode_flavor` is usually set once in the base; `klipper`, `marlin`, `marlin2` and `reprapfirmware` + cover nearly every shipped printer. +- `printer_settings_id` is junk — most files carrying it disagree with their own name. Do not copy it + when cloning a bundle. +- `min_layer_height` / `max_layer_height` are **machine** keys (per extruder), never process keys. + +## Bases + +Nearly every machine-bearing vendor registers a base literally named `fdm_machine_common`, and Klipper +vendors add `fdm_klipper_common` on top of it. Two levels is the usual depth. + +**There is no leading-underscore convention for bases.** + +## Adding a printer to an existing bundle + +1. Choose the names first — model, variant(s), process(es); everything else references them. +2. Add the model (`machine_model_list`) and one `machine` variant per nozzle; the minimum key sets are + above. Bed assets and `_cover.png` go directly in `/`. +3. Add at least one process per variant naming it in `compatible_printers` + ([process-profiles.md](process-profiles.md#adding-a-quality-tier-or-a-nozzles-processes)). +4. Register everything (or run `update-index`), bump the version, run the id tool, validate. + +## Adding a nozzle variant + +1. Extend the model's `nozzle_diameter` (`"0.4"` → `"0.4;0.6"`). +2. Add the variant preset. Either inherit the shared base (the usual choice) or the 0.4 sibling (Elegoo, + BBL, Prusa and Qidi do this — smaller diff, but the sibling's edits now reach this file too). +3. Override what actually changes with nozzle: `nozzle_diameter`, `printer_variant`, + `default_print_profile`, `default_filament_profile`, `min_layer_height`/`max_layer_height`, and + retraction if the vendor tunes it. +4. Add at least one process for the new nozzle — see [process-profiles.md](process-profiles.md). +5. Register both, bump the version, run the id tool, validate. + +## Multi-extruder, IDEX and tool-changers + +Per-extruder vectors are **silently resized** to the nozzle count, with no error. Padding repeats the +**first** value, not the last — `["0.4","0.6"]` on a 4-nozzle machine becomes `0.4, 0.6, 0.4, 0.4`. +Longer vectors are truncated. + +Note the two sizing families: the plain per-extruder keys (`extruder_offset`, `extruder_colour`, +`extruder_printable_height`, `min_layer_height`, `max_layer_height`, `nozzle_diameter`) are sized to the +extruder count, while `printer_options_with_variant_1` (`retraction_length`, `z_hop`, `wipe`, +`nozzle_type`, the rest of the retraction family) is sized to `printer_extruder_variant` instead. + +- Give **one entry per extruder** for ordinary per-extruder vectors such as `extruder_offset`, + `extruder_colour`, `min_layer_height` and `max_layer_height`; size the variant-dependent family + to `printer_extruder_variant` instead. + A single `["0x0"]` `extruder_offset` on a dual or multi-tool machine — which already ships — pads every + toolhead to the same offset, so the offset never applies. +- Overriding `nozzle_diameter` to a different count without re-stating every per-extruder vector is the + other half of the trap — `Snapmaker U1 (0.4+0.6 nozzle)` inherits 5-entry vectors against 4 nozzles. + +Copy targets: `Custom/machine/fdm_toolchanger_common.json` + `Custom/machine/MyToolChanger 0.4 +nozzle.json` (a clean minimal variant on a base that gives every vector five entries), and +`Ratrig/machine/RatRig V-Core 4 IDEX 300 0.4 nozzle.json` for IDEX. The BBL extruder-variant machinery +(`extruder_variant_list`, `printer_extruder_id`, `default_nozzle_volume_type`) is used by a handful of +vendors — do not copy it into a new bundle (`nozzle_volume_type` itself is not a machine-preset key). + +## Custom G-code + +The keys are `machine_start_gcode`, `machine_end_gcode`, `change_filament_gcode`, +`machine_pause_gcode`, `before_layer_change_gcode` and `layer_change_gcode`. Both a single string with +embedded `\n` and a JSON array of lines are legal and both are in use — do not convert one into the +other. Conditionals are `{if …}` / `{elsif …}` / `{else}` / `{endif}`; `{elsif}` is rare but real (Qidi's +`layer_change_gcode` uses it). + +Placeholder errors only surface when the config is actually expanded, which means `validate_slice`: + +```bash +./scripts/check_profile.sh --vendor "" validate_slice +# Windows: scripts\check_profile.bat -Vendor "" validate_slice +``` + +What the sweep covers is in [validation.md](validation.md#validate_slice); no `CP TOOLCHANGE START` in +the output means `change_filament_gcode` never expanded. diff --git a/.claude/skills/orca-profiles/references/process-profiles.md b/.claude/skills/orca-profiles/references/process-profiles.md new file mode 100644 index 0000000000..98f31bac1a --- /dev/null +++ b/.claude/skills/orca-profiles/references/process-profiles.md @@ -0,0 +1,145 @@ +# Process profiles + +Processes live in `resources/profiles//process/` — selectable leaves and shared bases alike, and +every one of them is registered in `process_list`. There are no global processes shared across vendors. + +## Naming + +`"mm @"` — near-universal, so match it. + +Follow the bundle's existing quality vocabulary. BBL's common ladder relates the quality word to +the layer-height / nozzle ratio; it is a naming convention, not a loader constraint: + +| Quality | Ratio | 0.2 nozzle | 0.4 | 0.6 | 0.8 | +| --- | --- | --- | --- | --- | --- | +| Extra Fine | 0.2× | — | 0.08 | — | — | +| Fine | 0.3× | 0.06 | 0.12 | 0.18 | 0.24 | +| Optimal | 0.4× | 0.08 | 0.16 | 0.24 | 0.32 | +| Standard | 0.5× | 0.10 | 0.20 | 0.30 | 0.40 | +| Draft | 0.6× | 0.12 | 0.24 | 0.36 | 0.48 | +| Extra Draft | 0.7× | 0.14 | 0.28 | 0.42 | 0.56 | + +This is the `fdm_process_single__nozzle_` ladder; 0.4 is commonly the unsuffixed nozzle default. +Match neighbouring names rather than renaming shipped tiers to fit the table. + +The `@target` is a human label, not a reference: most do not equal any real printer variant name. +Compatibility comes from the resolved list or condition, not this label. + +## Shape + +A selectable leaf's only truly universal keys are `type`, `setting_id`, `name` and `instantiation`; +`inherits` and `from` are near-universal — plus compatibility. No slicing key is universal; even +`layer_height` is more often inherited than restated. A base has `type`, `name`, `instantiation`, almost +always `from`, and **no** `setting_id`. + +**Target shape: a 7-key leaf.** `OrcaArena` is the cleanest model — +`fdm_process_common` → `fdm_process_arena_common` → `fdm_process_arena__nozzle_` → leaf, where the +leaf carries only `type`, `name`, `inherits`, `from`, `setting_id`, `instantiation`, +`compatible_printers`, and the per-nozzle base holds the layer height and all eight line widths. + +BBL, WonderMaker and Z-Bolt are uniform in *layering* — every leaf inherits a base, names its printers +directly and holds no layer height of its own — but not in key count. Imitate BBL's layering, not its +content: its leaves carry doubled `print_extruder_variant` arrays that no single-variant vendor needs. + +Nearly every vendor ships its own `fdm_process_common` as the inherits-less root. Those files are not +identical; copying another vendor's version into a new bundle is normal. + +Beware leaf-inherits-leaf: Prusa chains several levels deep through sibling leaves, and Elegoo and +Flashforge do it too, so editing one selectable process silently changes others. Check a leaf's children +before editing it. + +## Compatibility + +Most leaves set `compatible_printers` directly; some inherit it from a base, and Prusa's fall through to +`compatible_printers_condition`. After resolving `inherits`, **every selectable process has one or the +other** — that is the invariant to review against. Unlike filaments, inheriting `compatible_printers` is +legitimate for a process, and no check enforces its presence. + +- A non-empty `compatible_printers` makes `compatible_printers_condition` **dead code**. Use one or + the other. +- A condition that fails to parse means *compatible with everything* — a warning, not an error. A typo + widens compatibility instead of narrowing it. +- Matching is `boost::regex` **`regex_match`** — a full-string match, which is why every shipped + condition wraps its keyword in `.*`. Because it is boost rather than `std`, `.` also spans the newlines + inside `printer_notes`. +- A `printer_notes` keyword that prefixes another model's keyword matches both. Prusa guards it: + + ``` + printer_notes=~/.*PRINTER_MODEL_COREONE[^_a-zA-Z0-9].*/ and nozzle_diameter[0]==0.4 and printer_notes=~/.*HF_NOZZLE.*/ + ``` + + The `[^_a-zA-Z0-9]` exists because `PRINTER_MODEL_COREONE_L` also contains `PRINTER_MODEL_COREONE`. + +`compatible_printers` is almost always one element. A leaf listing a whole model family is where a newly +added printer is usually forgotten. + +## What to review per nozzle + +| Key group | Review | +| --- | --- | +| `line_width` and per-region widths | resolved widths suit the nozzle and layer height | +| `layer_height`, `initial_layer_print_height` | within the printer's limits | +| print speeds | consistent with flow limits and hardware tuning | +| shell layers, wall loops, accelerations, support Z distances | preserve the intended thickness, motion and support behavior | + +**A common starting pattern is nozzle + 0.02 mm**: 0.22 / 0.42 / 0.62 / 0.82 / 1.02. In that pattern, at 0.4, +`inner_wall_line_width`, `sparse_infill_line_width`, `skin_infill_line_width` and +`skeleton_infill_line_width` widen to 0.45 and `initial_layer_line_width` to 0.5; at 0.2, +`initial_layer_line_width` widens to 0.25. Also derived, and easily missed: +`ironing_inset = line_width / 2` (0.11 / 0.21 / 0.31 / 0.41). +These are examples, not required values; preserve intentional vendor tuning and percentage/automatic +widths, and validate their resolved values. + +`min_layer_height` and `max_layer_height` are machine keys — no process file sets them. + +## Slice-time content checks + +`Print::validate()` enforces four rules at slice time: + +1. `initial_layer_print_height` ≤ min `nozzle_diameter` +2. `layer_height` ≤ min `nozzle_diameter` — *"Layer height cannot exceed nozzle diameter."* +3. `line_width` and the seven per-region widths (inner/outer wall, sparse infill, internal solid infill, + top surface, skin, skeleton) > `layer_height` — *"Line width too small"*. `support_line_width` only + when the object has support or a raft; `initial_layer_line_width` is never checked. +4. every width ≤ 5 × max `nozzle_diameter` — *"Line width too large"* + +Two further rules cover `bridge_line_width` (≤ nozzle diameter; > `layer_height` unless `thick_bridges` +and `thick_internal_bridges` are both on). The sweep starts from printer defaults rather than +enumerating every process. **A new non-default process gets no dedicated slice coverage in CI.** + +## What CI checks on a process + +Structure, not content: `process_list` name consistency **and** index coverage the other way, two files +claiming one process name, the `extruder_clearance_radius` / `extruder_clearance_max_radius` conflict +pair, duplicate JSON keys, a file `normalize` would rewrite, and the five `setting_id` rules (the fifth +rejects the misspelled key `settings_id`). `compatible_printers` presence is checked for **filaments +only**. + +Note the C++ loader derives a missing `setting_id` on the fly, so the validator will not fail a process +without one — only `orca_profile_tool.py check` catches it. Running the validator alone gives a false +all-clear. + +## Silent failures specific to processes + +- **Unknown or misspelled keys are discarded with no error and no warning.** They ship all over the + process tree, both plain typos (`inital_layer_height`, `tree_support_bramch_diameter_angle`, + `sparse_infill_patter`) and keys copied from other slicers that Orca never defined. +- Keys on the tool's `OBSOLETE_KEYS` list (`adaptive_layer_height`, `overhang_totally_speed`, …) are + rejected by `check`'s normalization pass across preset types; `normalize` removes them. + The additional per-key obsolete warnings read `filament/` only. +- A dangling `compatible_printers` inside an `instantiation: "false"` base is invisible to + `check_preset_references`: a base never becomes a `Preset` at all (its config goes into `config_maps` + and the loader returns early), so it is in no collection for the check to walk. +- Orphan bases that nothing inherits are scattered through the tree — usually the leftover of a + half-finished nozzle addition. + +## Adding a quality tier or a nozzle's processes + +1. Choose the layer height and quality label using the vendor's existing ladder. +2. If the vendor has per-nozzle bases, add one (`fdm_process___nozzle_`) with the layer + height, nozzle-appropriate line widths, `initial_layer_print_height` and `ironing_inset`. +3. Add the leaf: 7 keys, `compatible_printers` naming the exact printer variant(s). +4. Register both in `process_list`, parent first. Bump the version, run the id tool, validate. +5. Slice this process explicitly with its intended printer; the sweep gives non-default tiers no + dedicated coverage. If it is a printer's `default_print_profile`, verify the exact name and + resolved compatibility too — the sweep may fall back or select another compatible process. diff --git a/.claude/skills/orca-profiles/references/review-checklist.md b/.claude/skills/orca-profiles/references/review-checklist.md new file mode 100644 index 0000000000..26f2f7656f --- /dev/null +++ b/.claude/skills/orca-profiles/references/review-checklist.md @@ -0,0 +1,177 @@ +# Reviewing a profile change + +Start with delivery, identity and backward compatibility, then check the affected preset types. +The table highlights gaps that need human review. What CI *does* run: +[validation.md](validation.md). + +| Not checked by CI | Consequence | +| --- | --- | +| The `version` bump | The change never reaches an upgrading user | +| A misspelled setting key | Setting silently has no effect | +| A filename Windows cannot check out, or one that differs from its `sub_path` only in case | Works on the author's machine, breaks the bundle on another platform | +| `bed_model` / `bed_texture` / `hotend_model` pointing at a missing asset | Bed renders as Custom, hotend falls back to the generic model | +| A nozzle size in a model's list with no matching variant | The size is offered and resolves to nothing | +| A non-default process | `validate_slice` gives non-default quality tiers no dedicated coverage | +| Whether the intended default survived compatibility selection | The sweep can select a different compatible preset | +| A dangling `compatible_printers` inside an `instantiation: "false"` base | A base never becomes a `Preset`, so the reference check never sees it (a bad `inherits` in a base *is* caught) | +| A `renamed_from` whose old name is still a live preset | The redirect is inert while a live preset carries that name | +| Per-extruder vector length on a multi-nozzle printer | Silently padded (with the **first** value) or truncated | + +## 1. Was the vendor `version` bumped? + +For **every** bundle whose folder the diff touches, `resources/profiles/.json` must have its +`version` incremented — last component, carrying `.99` into the third component. A library change +means bumping `OrcaFilamentLibrary.json`. + +*Why:* nothing in CI checks it, and `PresetUpdater` reinstalls only when `vendor_ver < resource_ver` — +without a bump the change reaches neither an upgrading user nor the author's own running app. + +## 2. Was the index rebuilt, and does the diff contain only this change? + +`check` now fails on an unregistered file, on an index `update-index` would reorder, and on a file +`normalize` would rewrite — so a PR that skipped them arrives red, and you do not have to spot the +omission yourself. Three things are still yours: + +- **The index diff belongs to this change.** `update-index` rewrites whole `*_list` sections. If the + bundle had drifted, the author's PR now carries someone else's reordering; ask for it in a separate + commit rather than reviewing it inline. +- **A deleted selectable preset needs a successor** as in item 4. `update-index` removes its + registration; `validate_custom` detects the break only for names covered by released fixtures. +- **`normalize` edits content, not just layout.** It drops `version` and `is_custom_defined` from preset + files, removes obsolete keys, deletes six print-speed keys from filament profiles, and resolves + `extruder_clearance_radius` against `extruder_clearance_max_radius` by keeping the larger. + Check that the keys it removed were meant to go. + +Obsolete keys fail `check`'s normalization pass and should be removed with `normalize`. +`check` also reports per-key obsolete warnings for filament profiles in the selected vendors. + +*Why:* the index is the loader's only entry point. Out-of-order entries fail with `can not find inherits` +and take the whole vendor bundle down; an unindexed file gets reviewed, merged and never loads. + +## 3. Are ids generated, not written? + +No hand-typed or copied `setting_id` / `filament_id`. Instantiated presets have a `setting_id`; bases do +not. A filament id change comes with a `scripts/filament_id_snapshot.json` diff in the same commit. +`check` enforces all of that; what it cannot tell you is whether the identity *should* have moved. + +Read the snapshot diff as the identity gate: a removed id or a changed triple means a product's identity +moved, and the old id is not forwarded anywhere. Confirm that was intended. + +*Why:* a duplicate `filament_id` on one printer makes AMS spool matching a coin toss; a copied +`setting_id` breaks preset identity. See [ids.md](ids.md). + +## 4. Does anything disappear for existing users? + +A rename, a deletion, or a flip of `"instantiation": "true"` → `"false"` on a shipped preset removes the +name from the preset collection. It needs `renamed_from` on a successor — and only one preset may claim a +given old name. The claimed old name must **not** still be a live preset; the redirect is inert if it is. + +*Why:* user presets inheriting it die with `can not find parent for config !`; 3MF-embedded +presets are dropped with no error at all. Commit `33923464ae` reverted exactly this for Cubicon; +`6943b6ddc3` redid it correctly. CI's `validate_custom` catches the shipped-name case — but not an inert +`renamed_from`. + +## 5. Is `compatible_printers` right? + +Exact printer **variant** names, non-empty on every instantiated filament outside OrcaFilamentLibrary +and written in the preset's own file — golden rule 6, with the flattened-vs-own-key trap in +[filament-profiles.md](filament-profiles.md#compatible_printers). Watch for a nozzle-specific variant that +inherited or copied the base's full printer list, and for two presets of one product with overlapping +lists — duplicate combobox entries and an ambiguous AMS match. + +*Why:* real shipped bugs twice (`b7b3418baf` "showing up everywhere", `ff83aa41ef` duplicate Flashforge +entries). + +## 6. Model ↔ variant ↔ process consistency + +- New nozzle size → the model's `nozzle_diameter` list extended, a variant with a matching + `printer_variant`, and at least one process listing that variant. +- `default_print_profile` is one exact name (not a `;` list), and that process's resolved + compatibility list or condition includes this printer. +- `default_filament_profile` is an array of names that exist. + +*Why:* an unlisted `printer_variant` is a hard bundle-load failure. Default process selection is +weaker: the sweep attempts the named default, then updates compatibility and rejects generic Default +fallbacks. Another compatible process can conceal a bad reference, so inspect it even after a pass. + +## 7. Types and spellings + +Every value a string or an array of strings; `filament_type` an array; `instantiation` the string +`"true"`/`"false"` — golden rule 7. Check index metadata and model `nozzle_diameter` especially; +wrong types there can abort loading for **every** vendor. + +The part only a reviewer can do: check new setting keys against `src/libslic3r/PrintConfig.cpp`. A +misspelled key is silently discarded (rule 8), the single most common way a profile edit does nothing +while CI stays green. + +## 8. Blast radius of a base edit + +A change to `fdm_*_common.json` reaches every child at once. Ask which presets it touches — several +reverts in this repo are exactly this (`41d1b0d3c8`, `dc491166a8`). Also check whether the edited leaf has +children of its own: Prusa, Flashforge and Elegoo all chain leaf-inherits-leaf several levels deep. + +## 9. Do the numbers make sense for the nozzle? + +Check resolved widths and layer heights against the nozzle, and flow limits / pressure advance +against the actual hardware and material. The patterns in [process-profiles.md](process-profiles.md) +are examples, not mandatory values; [filament-profiles.md](filament-profiles.md) explains what to +revisit for a nozzle change. A cloned preset's unchanged MVS needs particular scrutiny. + +Settings tuned for real hardware cannot be verified by reading the diff. Say so rather than approving +numbers nobody measured. + +## 10. Asset references (not checked anywhere) + +`bed_model`, `bed_texture`, `hotend_model` and `_cover.png` exist under +`resources/profiles//`. Broken references already ship; nothing checks them. + +## 11. `default_materials` (checked by CI) + +`check` fails on a `default_materials` / `default_filament_profile` name that resolves to no system +filament, so a dangling entry no longer reaches review. Scope the run while working on one vendor: + +```bash +python3 scripts/orca_profile_tool.py check --vendor "" # py -3 on Windows +``` + +## 12. Per-extruder vector lengths (not checked) + +One entry per extruder for the plain per-extruder vectors; the `printer_options_with_variant_1` keys are +sized to `printer_extruder_variant` instead. A wrong length is silently padded — repeating the **first** +value, not the last — or truncated. The two sizing families and the worked cases are in +[machine-profiles.md](machine-profiles.md#multi-extruder-idex-and-tool-changers). + +## 13. Non-default processes get no slice coverage + +`validate_slice` starts from printer defaults; it does not enumerate every process. Slice a new or +changed non-default tier explicitly with its intended printer. + +## 14. Housekeeping worth a nit, not a block + +`"from"` other than `"system"` (the preset-bundle loader ignores it, though the CLI's config-file loader +rejects anything but `system`/`user`/`User`), `printer_settings_id` copied from another +vendor, and a filename that disagrees with the preset's `name` (common; the loader keys off `name`). + +## 15. Cross-platform filenames and paths (not checked) + +Check for Windows-invalid characters, reserved device names, trailing path-component spaces/dots, +and case mismatches in `sub_path` or asset paths. See [cross-platform paths](validation.md#cross-platform-paths). + +--- + +## Reporting the review + +A finding is: **one defect**, its file, what breaks at runtime or in CI, and the fix. Split independent +defects into separate findings even when they live in one file — five id problems in one bullet get one +fix and four survivors. + +Severity discriminates only if it is earned: + +| Severity | Means | +| --- | --- | +| blocker | the bundle fails to load, or a preset is unreachable at runtime | +| major | CI fails, or existing users lose a preset | +| minor | wrong-but-working: dead keys, `from`, naming, redundant overrides | + +Compute every number and id (`orca_profile_tool.py`, a scripted count) or omit it — one invented count +makes a reader stop trusting the right ones. Report a command's result only if you ran it. diff --git a/.claude/skills/orca-profiles/references/validation.md b/.claude/skills/orca-profiles/references/validation.md new file mode 100644 index 0000000000..a0537c09ef --- /dev/null +++ b/.claude/skills/orca-profiles/references/validation.md @@ -0,0 +1,264 @@ +# Validating profiles + +```bash +./scripts/check_profile.sh # everything CI runs +./scripts/check_profile.sh --vendor "" # fast loop +./scripts/check_profile.sh profile_tool validate_slice # named checks only +``` + +```bat +scripts\check_profile.bat :: the same three, on Windows +scripts\check_profile.bat -Vendor "" +scripts\check_profile.bat profile_tool validate_slice +``` + +`check_profile.bat` is a shim around `check_profile.ps1` — same checks, same order, same logs; +the flags take PowerShell spellings (`-Vendor`, `-ProfilesDir`, `-Validator`, `-Download`, `-Refresh`, +`-WorkDir`, `-LogLevel`) and positional check names are unchanged. `-p`, `-v` and `-l` are aliases, so +`-v Elegoo -l 2` reads the same on both platforms. It passes `-ExecutionPolicy Bypass` because a +default Windows client refuses to run a checked-out `.ps1` at all. The `.ps1` finds Python itself, +probing `py -3`, then `python`, then `python3`; run the tool by hand with `py -3` for the same reason. + +Every check in the run happens even after an earlier one fails; the script exits non-zero if any did, and writes +`.test/check_profiles/logs/.log` plus, on failure, `.test/check_profiles/pr_comment.md` — the same +report CI posts on the PR. A stale `.test/check_profiles/.lock` after a crash must be removed by hand. + +## The five checks + +| Check | Command it runs | Catches | +| --- | --- | --- | +| `profile_tool` | `python3 scripts/orca_profile_tool.py check` | index coverage **both ways**, preset-name collisions, files `normalize`/`update-index` would still rewrite, duplicate JSON keys, filament `compatible_printers`, `filament_type` array, conflict keys, id length, **all `setting_id` and `filament_id` rules** | +| `validate_system` | `validator -p resources/profiles -l 2` | load errors, missing filament `compatible_printers`, dangling `inherits`/`compatible_*`, duplicate `filament_id` per printer | +| `validate_slice` | `validator -p … -s -l 2` | custom G-code expansion, unresolvable printer defaults | +| `validate_filament_subtypes` | `validator -p … -l 2 -f` | nothing extra — see below | +| `validate_custom` | `validator -p -l 2` | a shipped preset name that a past release offered no longer resolving | + +**`-f` is a no-op.** It is declared `po::bool_switch()->default_value(true)`, so the duplicate-`filament_id` +check runs whether or not you pass it — `validate_system` already fails on duplicates. The binary's own +`--help` ("Off unless this flag is present") does not reflect that default. + +### `validate_custom` — the backward-compatibility gate + +Downloads one fixture archive per past release (v1.9.0 onwards) of *generated mock* user presets — +a `__orca_test` copy of every system preset that +release shipped, cut with the validator's own `-g 1` mode — unpacks each over a copy of the current tree +and loads it. Each entry holds only `inherits` plus a canned diff, so the one failure it adds over +`validate_system` is a shipped preset name disappearing. (The whole current tree sits under each fixture, +so every `validate_system` error fails it too.) This is what makes a rename or an +`instantiation` flip a CI failure rather than just a user complaint, and the reason `renamed_from` is +mandatory. + +### `validate_slice` + +Slices a two-colour cube on every instantiable printer in the tree, sequentially, forcing the prime tower. +It selects `default_print_profile` and the first `default_filament_profile`, then updates compatibility; +that update can select a different compatible preset. Confirm the intended defaults yourself rather +than treating a passing sweep as proof that those exact presets were sliced. +A printer fails if it cannot be selected, falls back to a Default preset, throws, produces no g-code, or +emits no `CP TOOLCHANGE START`. It cannot be scoped to a filament-only vendor +(`No instantiable printer presets found for vendor OrcaFilamentLibrary`); `check_profile.sh` records it +as SKIP for a vendor with no `machine/` folder. + +## `orca_profile_tool.py check` + +`check` is one subcommand of the tool that also owns +`generate-id`, `normalize`, `trim`, `update-index` and `update-snapshot`; see [ids.md](ids.md) for the +writing half. + +| Per vendor | Catches | +| --- | --- | +| `check_preset_name_uniqueness` | two files in one bundle claiming one type + name — indexed or not | +| `check_index_coverage` | a file on disk that no `*_list` references (**an error, not a warning**) | +| `check_name_consistency` | an index entry whose `name` disagrees with the file, or whose `sub_path` is missing | +| `check_normalized` | a file `normalize` would rewrite, and an index `update-index` would rebuild | +| `check_filament_compatible_printers` | an instantiated non-library filament with no `compatible_printers` of its own | +| `check_conflict_keys` | `extruder_clearance_radius` alongside `extruder_clearance_max_radius` | +| `check_vector_type_keys` | a vector option written as a scalar (`"filament_type": "PLA"`) | +| `check_filament_id_length` | a declared `filament_id` longer than 8 characters | +| `check_machine_default_materials` | every `default_materials` / `default_filament_profile` name resolves | +| `check_obsolete_keys` | per-key warnings for ignored options; **filament files only** | + +Tree-wide, **ignoring `--vendor` entirely**: `check_setting_id_uniqueness` and `check_filament_ids`. So a +vendor-scoped run can and does fail on another vendor's files — and it saves seconds, not minutes. + +Unscoped, the per-vendor pass covers every bundle. The only exclusion is the stray `user/` directory +(see below); `OrcaFilamentLibrary` is held to the same rules as any vendor, its sole exemption being +that a library filament may leave `compatible_printers` empty — exactly what +`check_filament_compatible_printers` allows. `check_normalized` covers every bundle with an index. + +Notes that matter: + +- Exit codes: **0** clean, **1** errors found, **2** argparse misuse. Warnings never change the exit code. +- A nonexistent `--vendor` is a hard error — `[ERROR] unknown vendor "" in `, exit 1. +- `--vendor ""` means all vendors; `check_profile.sh` relies on that. `--vendor` is repeatable. +- A **stray directory** under `resources/profiles/` still gets counted as a vendor by the per-vendor pass + and warned about (`No profiles found for vendor: at …/.json`, and the "Checked vendors" count + goes up by one). The one exception is `user/`, the validator's data dir, which an unscoped `check` + skips by name; `--vendor user` still checks and warns about it. Warnings never change the exit code. + `normalize`, `trim` and `update-index` ignore strays too — they define a bundle as *a directory with a + matching index file*. +- Each remedy is printed once for the whole run, not once per file, as a `[WARNING]` under the errors + ("2 unreferenced file(s) above: delete them, or run … update-index"). Read those lines: they name the + command that fixes the batch. +- The trailing summary always suggests `normalize`. That is right for the shape errors and misleading for + everything else — an id error needs `generate-id`, a dangling `default_materials` needs a human. +- `resources/profiles/check_unused_setting_id.py` is a legacy BBL-only diagnostic, not part of + profile CI. Use `orca_profile_tool.py check` for current id validation. + +### Obsolete-key diagnostics + +`check` always reports per-key warnings for obsolete options in filament profiles. +The normalization check also rejects obsolete keys across preset types; `normalize` removes them. + +### Default-material references + +The materials check finds `default_materials` / `default_filament_profile` entries naming a preset +that does not exist. The three authoring errors it surfaces are `,` instead of `;`, wrong case +(`@system`), and a whole `;`-joined string stuffed into one array element. + +### `normalize` and `update-index` are part of the check + +`check` fails when either command would still change something, so they are not optional polish — the +file that gets reviewed has to be the file that ships. What `normalize` changes is narrow and fixed: +adds a missing `type`, deletes a `version` or `is_custom_defined` key from a *preset* file, deletes six +print-speed keys from filament profiles (`initial_layer_print_speed`, `outer_wall_speed`, +`inner_wall_speed`, `infill_speed`, `top_surface_speed`, `travel_speed`), deletes the +obsolete keys in `PrintConfigDef::handle_legacy`'s `ignore` set across preset types, resolves the +`extruder_clearance_*` conflict pair by keeping the larger, arrayifies five filament options besides +`filament_type`, and hoists `type`, `name`, `renamed_from`, `inherits`, `from`, `setting_id`, +`filament_id`, `instantiation` to the front. A file it changes is then rewritten whole — tab-indented, +LF, one trailing newline, keys reordered. + +**Set `type` explicitly when authoring.** For a file in `machine/` without it, normalization guesses +`machine` only if its name contains `nozzle`, otherwise `machine_model`. That heuristic cannot +reliably classify shared machine bases or unusually named variants. + +The Python obsolete-key set is checked against the C++ source by a unit test. Active options +and legacy aliases that the loader migrates (such as `extruder_type` and +`extruder_clearance_max_radius`) are preserved. + +Two things it therefore does **not** enforce: + +- **Formatting and key order on their own.** A file with none of those problems is skipped entirely, so + 4-space indent, a missing trailing newline, and a file that leads with `compatible_printers` all pass + `check`. They stay latent until something else trips `normalize` and the whole file reformats inside an + unrelated diff. (`normalize --force` rewrites every file, which is not something to run on a shipped + bundle.) +- **A misspelled setting key.** `inital_layer_height` and `sparse_infill_densiti` pass `check` cleanly. + Verify new keys against `PrintConfig.cpp` and `PrintConfigDef::handle_legacy`. + +## The validator binary + +Built from `src/dev-utils/OrcaSlicer_profile_validator.cpp` (`-DORCA_TOOLS=ON`). +Both scripts find a local build under `build*/` — `check_profile.sh` tries Release, RelWithDebInfo, then +Debug, and `check_profile.ps1` adds MinSizeRel — else they download the nightly into +`.test/check_profiles/validator`. Pass `--download` / `-Download` to match CI exactly, since a stale +local build is used silently. Windows looks for `OrcaSlicer_profile_validator.exe`. + +If your build lives somewhere else entirely, point at it with `--validator` / `-Validator`, or set +`ORCA_PROFILE_VALIDATOR` (`$env:ORCA_PROFILE_VALIDATOR` in PowerShell). + +| Flag | Meaning | +| --- | --- | +| `-p ` | profile tree (also becomes the data dir) | +| `-l ` | log level; CI uses 2 | +| `-v ` | load only that vendor **plus** OrcaFilamentLibrary | +| `-s` | slice sweep | +| `-f` | no-op (see above) | +| `-g 1` | regenerate user-preset fixtures; takes a value, and wipes the user preset dir first | + +On ARM64 Linux the nightly is x86-64 only — the script warns and downloads anyway, producing a binary +that will not run. Build it locally instead. + +Running the validator directly uses the profile tree as its data directory and can create `user/` +there. Prefer the wrappers, which stash existing user presets and restore them afterward. After a +direct run, inspect `user/` and remove only empty directories created by that run; fixtures or +pre-existing user files may be present. + +## Checking a copy of the tree + +Use `--profiles DIR` on the Python tool and `-p DIR` on the validator. +`check` and `update-snapshot` describe a tree's sanctioned id state, so pointing them elsewhere also +needs `--snapshot PATH` for that tree — passing `--profiles` without it exits 2 rather than silently +judging the copy against `resources/profiles`'s snapshot. + +**The wrappers' `--profiles` / `-ProfilesDir` redirects only their validator checks.** Their +`profile_tool` check still reads this checkout's `resources/profiles`. To validate a copy fully, +run the Python check separately with that tree's snapshot, then name only validator checks: + +```bash +python3 scripts/orca_profile_tool.py check --profiles "" --snapshot "" +./scripts/check_profile.sh --profiles "" validate_system validate_slice validate_filament_subtypes validate_custom +``` + +On Windows use `py -3` and `scripts\check_profile.bat -ProfilesDir ""` with the same check names. + +## Testing in the app + +Editing this checkout's `resources/profiles` does not update a separately installed application. +Test with a build using the edited resources and a bumped bundle version; the updater installs newer +bundles under `/system/`, and the preset cache also depends on the bundle version. +Use Help ▸ Show Configuration Folder to locate the active data directory: + +| Platform | Default data directory | +| --- | --- | +| macOS | `~/Library/Application Support/OrcaSlicer` | +| Linux | `$XDG_CONFIG_HOME/OrcaSlicer`, or `~/.config/OrcaSlicer` when unset | +| Windows | `%APPDATA%\OrcaSlicer` | + +A portable `data_dir` next to the executable takes precedence. Use a separate test configuration +for a clean-install check; preserve the normal configuration and user presets. + +## Cross-platform paths + +Match the exact case of each `sub_path` and asset filename; Linux filesystems commonly distinguish +case even when a macOS or Windows checkout does not. Preset-name references are case-sensitive +on every platform. Avoid Windows-invalid characters (`< > : " | ? *`), reserved device names +such as `CON` / `NUL` (including with extensions), and trailing spaces or dots in path components. +Keep stems tidy too, but a space immediately before `.json` is not a trailing path-component space. + +## Error → remedy + +| Message | Fix | +| --- | --- | +| `can not find inherits for ` | parent missing, unregistered, or listed **after** the child | +| `can not find filament_id for ` | nothing in the chain declares one — run `generate-id` | +| `can not find parent for config !` | a shipped name disappeared — add `renamed_from` | +| `Missing instantiation attribute for ` | key absent **or** not the string `"true"`/`"false"` | +| `contains incorrect keys: , which were removed` | a key valid for a different preset type | +| `defines invalid printer variant ""` | not in the model's `nozzle_diameter` list | +| `has printer_variant "" that does not match its nozzle_diameter` | the set comparison in [machine-profiles.md](machine-profiles.md) | +| `references unknown compatible_printers "

"` | the printer was renamed or deleted; fix the reference | +| `references renamed compatible_printers "" (now "")` | in-tree references must name the current preset; `renamed_from` does not excuse them | +| `Filament preset "" is missing compatible_printers setting` | non-library filaments need a non-empty list in their **own** file — the flattened-vs-own-key trap is in [filament-profiles.md](filament-profiles.md#compatible_printers) | +| `Ambiguous AMS filament match: N presets share filament_id "X" … printer "Y"` | make the lists disjoint, or fix an `inherits` pointing at another material's `@base` | +| `Layer height cannot exceed nozzle diameter.` / `Line width too small` | `Print::validate()` flow rules | +| `[ERROR] … no .json list references it, so it never loads` | `update-index`, or delete the file | +| `[ERROR] … references it and it declares no profile type` | set the correct `type` explicitly, then `normalize` and `update-index` | +| `[ERROR] … normalize would ` / `.json: update-index would rebuild ` | run that command and commit the result | +| `[ERROR] has N profiles named ""` | identify the intended preset and remove or rename the duplicate; use `trim --dry-run` only for deliberate unindexed-file cleanup | +| `[ERROR] … must not have a setting_id` / `is missing a setting_id` | `generate-id --setting-id` | +| `[ERROR] filament_id "" is not sanctioned by …snapshot.json` | `update-snapshot`, commit the diff | +| `inherits filament_id "X" but its own triple … mints "Y"` | `generate-id` will **not** fix this — see [ids.md](ids.md) | +| `vendor 's config version: invalid` | the `version` string is not Semver-parseable | +| `[json.exception.type_error.302] type must be string` | locate the non-string value in the index or model; see [failure scopes](vendor-bundle.md#failure-modes-ranked-by-blast-radius) | +| `Printer "

" fell back to a default preset` | final process or filament selection is a generic Default preset; check named defaults, visibility and available compatible presets. An incompatible default may instead be replaced without this error | +| `Printer "

" sliced but the filament change never fired` | `change_filament_gcode` never expanded | + +## CI + +`.github/workflows/check_profiles.yml`, job **"Check profiles"**, on `pull_request` into `main` or +`release/*`, paths `resources/profiles/**`, `resources/printers/**`, `scripts/**` and the workflow itself. +There is no push trigger — a direct push to main runs no profile validation. + +The job opens with `python3 -m unittest discover -s scripts/tests -t scripts`, the tool's own unit +tests. That step is deliberately **not** `continue-on-error`: a broken tool makes everything it then says +about the profiles worthless. Every check after it is `continue-on-error` with a final gate, so one run +reports all five results. On failure a second workflow posts or replaces a single PR comment marked +``, with each failing log truncated to 30 KB; it deletes the comment +once the run is green. + +The job name is also the required check for the delegated-merge bot, which lets a vendor maintainer +self-merge a `resources/profiles//` PR with no human review — so whatever CI does not check +is what ships unreviewed. Its denied patterns refuse `^scripts/` and any `.py`, so a PR that must update +`scripts/filament_id_snapshot.json` always needs a maintainer. diff --git a/.claude/skills/orca-profiles/references/vendor-bundle.md b/.claude/skills/orca-profiles/references/vendor-bundle.md new file mode 100644 index 0000000000..53b345b623 --- /dev/null +++ b/.claude/skills/orca-profiles/references/vendor-bundle.md @@ -0,0 +1,175 @@ +# The vendor bundle and the loader + +A bundle is `resources/profiles/.json` (the index) plus `resources/profiles//`. +The **vendor id is the filename stem**, not the `name` inside — several differ (`BBL.json` is named +"Bambulab"). Asset paths and the `setting_id` formula use the id; the `validate_custom` fixture prefix +uses the `name`. + +## The index + +```json +{ + "name": "Phrozen", + "version": "02.04.00.03", + "force_update": "0", + "description": "Phrozen configurations", + "machine_model_list": [ { "name": "...", "sub_path": "machine/....json" } ], + "machine_list": [ ... ], + "process_list": [ ... ], + "filament_list": [ ... ] +} +``` + +The loader reads `name`, `version`, `url` and the four `*_list` arrays. +`description` is only logged. `force_update` is read by `PresetUpdater`, never by the loader. +`sub_path` is relative to the **vendor folder**. + +| List | Holds | +| --- | --- | +| `machine_model_list` | `machine_model` records (the printer product) | +| `machine_list` | printer variants **and** shared machine bases | +| `process_list` | selectable processes **and** shared process bases | +| `filament_list` | selectable filaments **and** shared filament bases | + +### Three registration rules + +1. **Everything is registered, bases included.** Every preset file on disk has exactly one entry in the + matching list, and no unindexed preset file is left in the tree. +2. **Parents before children.** `inherits` resolves against a per-kind map filled as the list is walked + (`configs.clear()` then process, filaments, printers). A parent listed after its child produces + `can not find inherits for ` and the bundle is discarded. +3. **The index entry's `name` must equal the `name` inside the sub_path file.** `check_name_consistency` + walks the index looking for the files; `check_index_coverage` walks the files looking for them in the + index. The `renamed_from` escape hatch `check_name_consistency`'s docstring promises is commented out. + +All three are `check` errors now, and `update-index` writes an index that satisfies all three from the +files on disk — including the parents-first ordering, by topological sort. Hand-editing the index is +fine for a one-line addition, but the committed result must equal what `update-index` writes, because +`check` compares them. + +The loader itself reports none of this: an unregistered file, or an entry with a typo'd key +(`"subpath"`), is silently dropped. (A typo'd `sub_path` is a `check` error naming the entry.) + +`BBL/cli_config.json` and `BBL/filament/filaments_color_codes.json` are auxiliary data loaded by path, +not presets. The tool's `NON_PROFILE_FILES` excludes these basenames from preset maintenance. + +## `version` + +Parsed by a four-component Semver where the 4th is folded in as `patch = patch*100 + value`. Write it +zero-padded, `MM.mm.pp.bb`; a couple of bundles drop a component or the padding, but do not imitate them. + +- **Bump the version for every bundle the PR touches.** `PresetUpdater` installs bundled resources + only when their version is newer than the installed version; the `.opc` preset cache is also + versioned. Nothing in profile CI checks the bump. +- **Keep the last component ≤ 99.** `02.04.00.100` and `02.04.01.00` both parse to `2.4.100`. A bundle + that reaches `.99` carries into the third component (`02.03.02.99` → `02.03.03.00`). +- An **absent** version is worse than a stale one: the validator still passes, but `Semver::valid()` + excludes `0.0.0`, so the vendor is dropped from the configuration wizard entirely and the preset cache + is disabled for it. An *unparseable* version is not silent — it throws and discards the whole bundle + (see the failure table below). + +## Common preset keys + +| Key | Value | +| --- | --- | +| `type` | `machine_model` / `machine` / `process` / `filament` | +| `name` | the preset name; the filename is *not* authoritative | +| `inherits` | the parent's exact `name` — no path, no `.json` | +| `instantiation` | the **string** `"true"` (selectable) or `"false"` (base) | +| `from` | `"system"` by convention; the vendor loader never reads it | +| `setting_id` | required on instantiated presets, forbidden on bases — generated | +| `renamed_from` | `;`-separated list of old names this preset supersedes | + +These are config-preset keys; `machine_model` records have their own +[schema](machine-profiles.md#a-machine_model-is-not-a-config-preset). Keep `from` as `"system"` +for shipped presets. The vendor loader ignores it, but the CLI config-file loader accepts only +`system`, `user` or `User` and handles their inheritance differently. + +`instantiation` is the one metadata key that is hard-gated: a missing key or any value other than the +strings `"true"`/`"false"` is an error (`Missing instantiation attribute for `). A JSON boolean +`true` fails harder — it throws inside `load_from_json` and takes the **whole vendor bundle** down. + +### `inherits` + +Resolution is an exact-name lookup **within the same bundle**, plus one exception: filaments may inherit +from `OrcaFilamentLibrary`, which is loaded first and becomes the base bundle. Vendor-to-vendor +inheritance always fails. You can inherit from an instantiated preset as well as from a base; it is +common. + +### `renamed_from` + +One JSON string, `;`-separated for several old names. + +- Write `"A;B"`, never `"A ; B"` — an unquoted item keeps its trailing space and can never match. +- When `renamed_from` is **absent** and the name contains `@`, the loader auto-adds the `@`-removed form + (`X @Y` → `X Y`) as a rename alias. Declaring an explicit `renamed_from` **suppresses** that, so a + preset that needs both the `@`-removed form and a real old name must list both. No shipped profile + currently does, which means any preset that gained a `renamed_from` quietly lost its `X Y` alias. +- It rescues names stored **outside** the tree: user presets and 3MF projects. It does **not** rescue + in-tree `inherits` (exact lookup), it does **not** satisfy `check_name_consistency`, the validator + reports an in-tree reference that only resolves through it (`references renamed compatible_printers + "OLD" (now "NEW")`), and `machine_model` records never read it at all. +- Only one preset may claim a given old name — two that do is a counted error + (`… was marked as renamed from "Y" … as well`). But the redirect is **inert while a live preset still + carries that name**, and nothing checks *that*; Z-Bolt ships a folder of such dead entries. + +## Failure modes, ranked by blast radius + +| Scope | Cause | +| --- | --- | +| **All vendors, zero system profiles** | a non-string `version`, `name` or `url` at the top level of a vendor index (`"version": 2`), or non-string `nozzle_diameter` on a model — `nlohmann::type_error` escapes the per-vendor `std::runtime_error` catch | +| **The whole vendor bundle** | unparseable `version`; index JSON parse error; a `sub_path` file missing or unparseable; unresolvable `inherits`; duplicate preset name within the vendor; empty/unknown `printer_model` or `printer_variant`; a filament resolving no `filament_id` | +| **One preset** | `instantiation` missing or a wrong string; keys belonging to another preset type (`contains incorrect keys: …, which were removed`); a non-string inside a `*_list` entry (`invalid value type for `) | +| **Logged, not counted** | a raw JSON number in a preset — `invalid json type for `, the value is dropped and the exit code stays 0 | +| **Nothing reported by the loader** | unregistered file; misspelled setting key; missing bed/hotend asset. Only the first of those is a `check` error; the other two reach users | + +Deleting a file the index still lists surfaces as a *parse error* on line 1, not "file not found" — the +loader `ifstream`s the missing path and nlohmann reports `unexpected end of input`. + +Preset names are a **single global namespace across every vendor**: a duplicate within one vendor is a +hard bundle failure, a duplicate across vendors is reported as `Found duplicated preset: in +vendor: ` and still counts as an error. `check_preset_name_uniqueness` catches the within-bundle +case earlier and more precisely — including an *unindexed* twin, which is one `sub_path` edit away from +silently becoming the parent every child resolves to (`std::map::emplace` keeps the first insertion, so +index order decides). Base names, by contrast, repeat across bundles by design: `fdm_process_common` +exists in nearly all of them. + +## Starting a whole new vendor bundle + +Nothing generates one; copy the smallest bundle that resembles the hardware. **`Voxelab` or `M3D`** are +the minimal shape — a shared machine base, the model, one variant, a shared process base, two +processes, and an empty `filament_list` that takes the library generics. Do *not* start from `Phrozen`: +it carries local `fdm_filament_*` copies that have drifted from the library, and a filament preset that +restates most of its parent — the style this skill advises against. + +Write the machine files **last**, so you only visit them once: + +1. **Choose the names first** — model, variant(s), process(es). Everything else references them. +2. `resources/profiles/.json`: `name`, `version` (`01.00.00.00`), `force_update: "0"`, + `description`, and all four `*_list` arrays (an empty `filament_list` is fine). +3. The shared bases — `/machine/fdm_machine_common.json` and + `/process/fdm_process_common.json`, both `"instantiation": "false"` with no `setting_id`. + For a Klipper printer add your own `/machine/fdm_klipper_common.json` inheriting the machine + base; there is no shared one, because a `machine` preset can only inherit inside its own bundle. +4. One selectable process per variant, each naming its variant in `compatible_printers`. +5. Bed assets and `_cover.png`, all directly in `/`. None of them is needed for the + bundle to load, and nothing in CI checks them — but the bed files are inert unless the `machine_model` + names them in `bed_model` / `bed_texture`, and the cover is found by convention as + `_cover.png`. +6. The `machine_model` record and the `machine` variants, now that every value they reference exists — + the minimum key sets and the `default_*` shapes are in + [machine-profiles.md](machine-profiles.md#the-machine-variant). +7. Run the tool and validate — follow + [Creating or modifying a profile](../SKILL.md#creating-or-modifying-a-profile). `generate-id` is not + optional for a new bundle: the validator loads presets that have no `setting_id`, but `check` fails + every one of them. `update-index` will fill the four `*_list` arrays for you once the files exist, so + step 2 only needs the bundle metadata to be right. + +## `resources/profiles_template/` + +A separate tree (`Template.json` + `Template/`) holding filament and process templates. It is **not** a +scaffold for shipped profiles — `CreatePresetsDialog.cpp` reads it for the in-app "create a custom +printer/filament" wizard, so editing it changes what users get when they create a custom preset. +`check_profile.sh`'s validator checks default to `resources/profiles` (redirectable with `-p`), and so +does `orca_profile_tool.py` (redirectable with `--profiles`, plus `--snapshot` for the id checks); +neither covers this tree. diff --git a/resources/profiles/Afinia.json b/resources/profiles/Afinia.json index 517d0148c3..e65ced0f68 100644 --- a/resources/profiles/Afinia.json +++ b/resources/profiles/Afinia.json @@ -1,6 +1,6 @@ { "name": "Afinia", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Afinia configurations", "machine_model_list": [ diff --git a/resources/profiles/Afinia/machine/Afinia H+1(HS).json b/resources/profiles/Afinia/machine/Afinia H+1(HS).json index fc724895ef..87e6a0e6a6 100644 --- a/resources/profiles/Afinia/machine/Afinia H+1(HS).json +++ b/resources/profiles/Afinia/machine/Afinia H+1(HS).json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "Afinia ABS;Afinia PLA" + "default_materials": "Afinia ABS@HS;Afinia PLA@HS" } diff --git a/resources/profiles/Afinia/machine/fdm_afinia_common.json b/resources/profiles/Afinia/machine/fdm_afinia_common.json index 9a567074ca..2ddf8bbd40 100644 --- a/resources/profiles/Afinia/machine/fdm_afinia_common.json +++ b/resources/profiles/Afinia/machine/fdm_afinia_common.json @@ -1,9 +1,9 @@ { "type": "machine", "name": "fdm_afinia_common", + "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", - "inherits": "fdm_machine_common", "gcode_flavor": "klipper", "machine_max_acceleration_e": [ "5000", @@ -117,15 +117,12 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ "1" ], - "default_filament_profile": [ - "" - ], + "default_filament_profile": [], "default_print_profile": "0.20mm Standard @Afinia H+1(HS)", "bed_exclude_area": [ "0x0" diff --git a/resources/profiles/Afinia/machine/fdm_machine_common.json b/resources/profiles/Afinia/machine/fdm_machine_common.json index d4a5c3be25..fbe40f97e3 100644 --- a/resources/profiles/Afinia/machine/fdm_machine_common.json +++ b/resources/profiles/Afinia/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Afinia/process/0.18mm Fine @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.18mm Fine @Afinia H+1(HS) 0.6 nozzle.json index 571fdf3e01..8f1a939266 100644 --- a/resources/profiles/Afinia/process/0.18mm Fine @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.18mm Fine @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Afinia H+1(HS) 0.6 nozzle" ] diff --git a/resources/profiles/Afinia/process/0.24mm Standard @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.24mm Standard @Afinia H+1(HS) 0.6 nozzle.json index 1d984a149d..3a3c297454 100644 --- a/resources/profiles/Afinia/process/0.24mm Standard @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.24mm Standard @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a balanced layer height for good quality and reasonable printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Afinia H+1(HS) 0.6 nozzle" ] diff --git a/resources/profiles/Afinia/process/0.30mm Standard @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.30mm Standard @Afinia H+1(HS) 0.6 nozzle.json index 187bb12009..ed544ebe3f 100644 --- a/resources/profiles/Afinia/process/0.30mm Standard @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.30mm Standard @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Afinia H+1(HS) 0.6 nozzle" ] diff --git a/resources/profiles/Afinia/process/0.30mm Strength @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.30mm Strength @Afinia H+1(HS) 0.6 nozzle.json index 63fc4df090..6a87a835c9 100644 --- a/resources/profiles/Afinia/process/0.30mm Strength @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.30mm Strength @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height with optimized settings for stronger parts.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "sparse_infill_density": "25%", "wall_loops": "3", "compatible_printers": [ diff --git a/resources/profiles/Afinia/process/0.36mm Draft @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.36mm Draft @Afinia H+1(HS) 0.6 nozzle.json index c693fc468b..0417c687ec 100644 --- a/resources/profiles/Afinia/process/0.36mm Draft @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.36mm Draft @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a bigger layer height for faster printing but with more visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Afinia H+1(HS) 0.6 nozzle" ] diff --git a/resources/profiles/Afinia/process/0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle.json b/resources/profiles/Afinia/process/0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle.json index e9f4057178..5dcb70660c 100644 --- a/resources/profiles/Afinia/process/0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle.json +++ b/resources/profiles/Afinia/process/0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Afinia H+1(HS) 0.6 nozzle" ] diff --git a/resources/profiles/Afinia/process/fdm_process_afinia_common.json b/resources/profiles/Afinia/process/fdm_process_afinia_common.json index 04c0e678ec..803080ada3 100644 --- a/resources/profiles/Afinia/process/fdm_process_afinia_common.json +++ b/resources/profiles/Afinia/process/fdm_process_afinia_common.json @@ -21,7 +21,6 @@ "top_surface_acceleration": "2000", "initial_layer_acceleration": "500", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_line_width": "0.5", "initial_layer_speed": "50", "initial_layer_infill_speed": "90", diff --git a/resources/profiles/Afinia/process/fdm_process_common.json b/resources/profiles/Afinia/process/fdm_process_common.json index ca4d181e78..26eb3a50a0 100644 --- a/resources/profiles/Afinia/process/fdm_process_common.json +++ b/resources/profiles/Afinia/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "50", diff --git a/resources/profiles/Anker.json b/resources/profiles/Anker.json index 098b1df003..945378db9c 100644 --- a/resources/profiles/Anker.json +++ b/resources/profiles/Anker.json @@ -1,6 +1,6 @@ { "name": "Anker", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Anker configurations", "machine_model_list": [ diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json b/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json index 7fade72381..d88abdbda4 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal Hot End.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V8111v2", - "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker;Generic PLA @Anker 0.2 nozzle;Generic PLA @Anker 0.25 nozzle" } diff --git a/resources/profiles/Anker/machine/Anker M5.json b/resources/profiles/Anker/machine/Anker M5.json index 5c9839d1ff..6cafaebd42 100644 --- a/resources/profiles/Anker/machine/Anker M5.json +++ b/resources/profiles/Anker/machine/Anker M5.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V8111", - "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker;Generic PLA @Anker 0.2 nozzle;Generic PLA @Anker 0.25 nozzle" } diff --git a/resources/profiles/Anker/machine/Anker M5C.json b/resources/profiles/Anker/machine/Anker M5C.json index cf539851e5..91cd139cd8 100644 --- a/resources/profiles/Anker/machine/Anker M5C.json +++ b/resources/profiles/Anker/machine/Anker M5C.json @@ -7,5 +7,5 @@ "family": "Anker", "machine_tech": "FFF", "model_id": "V81101C3", - "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker" + "default_materials": "Generic PLA @Anker;Generic PLA+ @Anker;Generic PLA Silk @Anker;Generic TPU @Anker;Generic PETG @Anker;Generic PLA @Anker 0.2 nozzle;Generic PLA @Anker 0.25 nozzle" } diff --git a/resources/profiles/Anker/machine/fdm_machine_common.json b/resources/profiles/Anker/machine/fdm_machine_common.json index 76e4568f42..b486b69bc1 100644 --- a/resources/profiles/Anker/machine/fdm_machine_common.json +++ b/resources/profiles/Anker/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "extruder_offset": [ "0x0" ], - "silent_mode": "0", "machine_max_acceleration_e": [ "4000" ], diff --git a/resources/profiles/Anycubic.json b/resources/profiles/Anycubic.json index 1c44d6ec69..85dce20a81 100644 --- a/resources/profiles/Anycubic.json +++ b/resources/profiles/Anycubic.json @@ -1,6 +1,6 @@ { "name": "Anycubic", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Anycubic configurations", "machine_model_list": [ diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json index 99d8da0f4b..884c07a791 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json index 95d5884132..1a67149acc 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -204,9 +201,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json index 3a6e2c9073..644fbe9f06 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json index f49664c14b..4aaf07851e 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ABS @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json index 790d365ee5..2356b2b46f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json index 05d943ece7..6e4a5981cf 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -204,9 +201,6 @@ "filament_type": [ "ASA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json index 2a43e7b355..44aecae10a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "ASA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json index 1b038f7ba0..a86f5cf27f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic ASA @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json index 2d5c70f60b..61c9ae06bb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PEBA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json index 213ee1ce70..271c2cbd31 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json index fbab6ab82c..ae2c4ea617 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json index 5966ceb3dd..21a6dab470 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -204,9 +201,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json index 13c1aae54f..b170d4234f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json index 85edb1eca9..a1ea9ea067 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PETG @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json index 7faa84782c..3d41b19d51 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json index 583473ed30..427d09ec0b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json index 8e531b88a4..fdbd1987cb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json index 01b3d45f23..c06ecd26e7 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json index 2898403b36..8263451aa2 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.2 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json index a4e34756ec..36149ebfcb 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json index af7e374dc7..8de722c472 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.6 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json index 5c8936316f..35173c7c21 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 0.8 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json index 504a4b382c..3c612d7aca 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json index df464f2fa9..2a33fab35f 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json index 4e60bf4527..e08e57acf0 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json index 80c120870e..7c49813853 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json index 43ec857824..bb8d9f2424 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA @Anycubic Kobra S1 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json index 9cb1eef59f..ee4ba7f373 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json index 5b069135b3..4a8f9c4fff 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json index eb59d710e0..18baed2def 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json index 9b37a8911c..dab5df7d46 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json index 03ea837c0c..50ab8dc649 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json index 474deb3deb..c0b72e9dc8 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json index 7dad057149..ddd4e1d96c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json index d7832ced4c..655ce81b7c 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json index 9aebb3860e..48fa611ab1 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json index 166e46e620..89813c64cc 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json index 0ea21e81ed..ab7642a285 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json index 59fd701496..9f28aa798a 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle.json @@ -111,9 +111,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -183,9 +180,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json index a80ab1d88f..fd51691282 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json index d31d75f532..a44bbfac9d 100644 --- a/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json index 5141d90404..9831c55484 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "TPU" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json index d6b5217879..d38d83684b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -204,9 +201,6 @@ "filament_type": [ "TPU" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json index a5f6e735b0..5972bc0d37 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "TPU" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json index d17fd1217a..e1649e5b0b 100644 --- a/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Anycubic TPU @Anycubic Kobra S1 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json index 988340c1eb..0f273afbef 100644 --- a/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic ABS @Anycubic Kobra 3 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json index a81795f7c0..1a2368dcfd 100644 --- a/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -120,9 +120,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "28" ], @@ -204,9 +201,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json index 369198b146..6b5dc78c98 100644 --- a/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/filament/Generic TPU @Anycubic Kobra 3 0.4 nozzle.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max 0.4 nozzle.json index 9497594f62..663294b14b 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max 0.4 nozzle.json @@ -197,7 +197,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max.json index f28ac191b3..c0d013f4ae 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Max.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra 2 Max_buildplate_model.stl", "bed_texture": "Anycubic Kobra 2 Max_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra 2 Max 0.4 nozzle;Generic ABS @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PETG @Anycubic Kobra 2 Max 0.4 nozzle;Generic TPU @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra 2 Max 0.4 nozzle;Anycubic PLA Slik @Anycubic Kobra 2 Max 0.4 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra 2 Max 0.4 nozzle;Generic ABS @System;Generic TPU @System" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Neo 0.4 nozzle.json index f3d67776af..43e6d317ef 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -201,7 +201,6 @@ "100" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus 0.4 nozzle.json index 1cce9bddff..bbf71349cf 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus 0.4 nozzle.json @@ -204,7 +204,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus.json index 9db9eec174..30b4b2c084 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Plus.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra 2 Plus_buildplate_model.stl", "bed_texture": "Anycubic Kobra 2 Plus_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra 2 Plus 0.4 nozzle;Generic ABS @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PETG @Anycubic Kobra 2 Plus 0.4 nozzle;Generic TPU @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra 2 Plus 0.4 nozzle;Anycubic PLA Slik @Anycubic Kobra 2 Plus 0.4 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra 2 Plus 0.4 nozzle;Generic ABS @System;Generic TPU @System" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro 0.4 nozzle.json index 690f77a01c..64e1da1fb9 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -202,7 +202,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro.json index 87a629fea2..e278a2357f 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 Pro.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra 2 Pro_buildplate_model.stl", "bed_texture": "Anycubic Kobra 2 Pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra 2 Pro 0.4 nozzle;Generic ABS @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PETG @Anycubic Kobra 2 Pro 0.4 nozzle;Generic TPU @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra 2 Pro 0.4 nozzle;Anycubic PLA Slik @Anycubic Kobra 2 Pro 0.4 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra 2 Pro 0.4 nozzle;Generic ABS @System;Generic TPU @System" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.2 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.2 nozzle.json index cbd4a67cfb..0543b1818f 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.2 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.2 nozzle.json @@ -208,7 +208,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.4 nozzle.json index 624233053e..e3cc91d26b 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.4 nozzle.json @@ -210,7 +210,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.6 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.6 nozzle.json index d613138128..ec4e3ef986 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.6 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.6 nozzle.json @@ -208,7 +208,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.8 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.8 nozzle.json index 60b3864454..4e67d80ac1 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.8 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 0.8 nozzle.json @@ -208,7 +208,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.4 nozzle.json index dbb112bfae..ed52a91b21 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.4 nozzle.json @@ -20,15 +20,15 @@ "Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle", "Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle", "Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle", - "Generic PLA @Anycubic Kobra 3 Max 0.4 nozzle", - "Generic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle", + "Generic PLA @Anycubic", + "Generic PLA Silk @System", "Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle", "Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle", "Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle", "Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle", - "Generic ABS @Anycubic Kobra 3 Max 0.4 nozzle", - "Generic PETG @Anycubic Kobra 3 Max 0.4 nozzle", - "Generic TPU @Anycubic Kobra 3 Max 0.4 nozzle" + "Generic ABS @Anycubic", + "Generic PETG @Anycubic", + "Generic TPU @Anycubic" ], "disable_m73": "0", "gcode_flavor": "klipper", @@ -252,7 +252,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "1", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.6 nozzle.json index 272d19cd75..811abb2d5f 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.6 nozzle.json @@ -222,7 +222,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "1", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.8 nozzle.json index 993258d59b..41c5a6c2a3 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max 0.8 nozzle.json @@ -225,7 +225,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "1", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max.json index 03047b45ea..990c65bae9 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3 Max.json @@ -9,5 +9,5 @@ "bed_texture": "Anycubic Kobra 3 Max_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle;Generic PLA @Anycubic Kobra 3 Max 0.4 nozzle;Generic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle;Generic ABS @Anycubic Kobra 3 Max 0.4 nozzle;Generic PETG @Anycubic Kobra 3 Max 0.4 nozzle;Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle;Generic TPU @Anycubic Kobra 3 Max 0.4 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic PLA @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic PLA High Speed @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Luminous @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 3 Max 0.4 nozzle;Generic PLA @Anycubic;Generic PLA Silk @System;Anycubic ABS @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic ABS @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic ABS @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic ASA @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic ASA @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic PEBA 95A @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic PETG @Anycubic Kobra 3 Max 0.8 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.4 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.6 nozzle;Anycubic TPU @Anycubic Kobra 3 Max 0.8 nozzle;Generic ABS @Anycubic;Generic PETG @Anycubic;Generic PETG Basic @Anycubic Kobra 3 Max 0.4 nozzle;Generic TPU @Anycubic" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 3.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 3.json index b33c096a26..f87f47ad68 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra 3.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 3.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra 3_buildplate_model.stl", "bed_texture": "Anycubic Kobra 3_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle;Generic ABS @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra 3 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 0.4 nozzle;Generic TPU @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle;Anycubic ASA @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA @Anycubic Kobra 3 0.2 nozzle;Anycubic PLA @Anycubic Kobra 3 0.6 nozzle;Anycubic PLA @Anycubic Kobra 3 0.8 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra 3 0.4 nozzle;Generic ABS @Anycubic Kobra 3 0.4 nozzle;Anycubic PETG @Anycubic Kobra 3 0.4 nozzle;Generic TPU @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA Slik @Anycubic Kobra 3 0.4 nozzle;Anycubic ASA @Anycubic Kobra 3 0.4 nozzle;Anycubic PLA @Anycubic Kobra 3 0.2 nozzle;Anycubic PLA @Anycubic Kobra 3 0.6 nozzle;Anycubic PLA @Anycubic Kobra 3 0.8 nozzle" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json index 41b6e7b3e1..fc99bbd49f 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo 0.4 nozzle.json @@ -201,7 +201,6 @@ "100" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json index 25a16805e1..d940eeb745 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra Neo.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra Neo_buildplate_model.stl", "bed_texture": "Anycubic Kobra Neo_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic PLA @Anycubic" + "default_materials": "Generic PLA @Anycubic;Anycubic PLA @Anycubic Kobra Neo 0.4 nozzle" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 0.4 nozzle.json index 9ca15821da..94d82b7c27 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 0.4 nozzle.json @@ -201,7 +201,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.25 nozzle.json index 7e6195aca7..8786b75afa 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,252 +1,251 @@ -{ - "type": "machine", - "name": "Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_machine_common", - "from": "system", - "setting_id": "Puudpg2z8v7I6IQA", - "instantiation": "true", - "printer_technology": "FFF", - "printer_settings_id": "Anycubic Kobra S1 Max 0.25 nozzle", - "printer_model": "Anycubic Kobra S1 Max", - "printer_variant": "0.25", - "nozzle_diameter": [ - "0.25" - ], - "default_print_profile": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "default_filament_profile": [ - "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle" - ], - "disable_m73": "0", - "gcode_flavor": "klipper", - "printable_area": [ - "0x0", - "350x0", - "350x350", - "0x350" - ], - "printable_height": "350", - "thumbnails": "230x110/PNG", - "thumbnails_format": "PNG", - "thumbnails_internal": "512x512/PNG/top", - "thumbnails_internal_switch": "1", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [], - "bed_mesh_max": "0,0", - "bed_mesh_min": "0,0", - "bed_mesh_probe_distance": "0,0", - "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "deretraction_speed": [ - "0" - ], - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "340", - "extruder_clearance_height_to_rod": "30", - "extruder_clearance_radius": "55", - "extruder_colour": [ - "FF4D4F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "400", - "400", - "400" - ], - "machine_max_jerk_e": [ - "1", - "1", - "1" - ], - "machine_max_jerk_x": [ - "15", - "15", - "15" - ], - "machine_max_jerk_y": [ - "15", - "15", - "15" - ], - "machine_max_jerk_z": [ - "1", - "1", - "1" - ], - "machine_max_speed_e": [ - "80", - "40", - "104" - ], - "machine_max_speed_x": [ - "600", - "300", - "780" - ], - "machine_max_speed_y": [ - "600", - "300", - "780" - ], - "machine_max_speed_z": [ - "10", - "5", - "13" - ], - "machine_min_extruding_rate": [ - "0", - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0", - "0" - ], - "machine_pause_gcode": "M600", - "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.18" - ], - "min_layer_height": [ - "0.05" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "brass", - "nozzle_volume": "107", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printer_flush_multiplier": "1", - "printer_notes": "", - "printer_structure": "corexy", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "348" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_on_top_layer": [ - "1" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "0" - ], - "retraction_length": [ - "0.4" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "1", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Slope Lift" - ], - "z_offset": "0" -} +{ + "type": "machine", + "name": "Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_machine_common", + "from": "system", + "setting_id": "Puudpg2z8v7I6IQA", + "instantiation": "true", + "printer_technology": "FFF", + "printer_settings_id": "Anycubic Kobra S1 Max 0.25 nozzle", + "printer_model": "Anycubic Kobra S1 Max", + "printer_variant": "0.25", + "nozzle_diameter": [ + "0.25" + ], + "default_print_profile": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "default_filament_profile": [ + "Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle" + ], + "disable_m73": "0", + "gcode_flavor": "klipper", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "350", + "thumbnails": "230x110/PNG", + "thumbnails_format": "PNG", + "thumbnails_internal": "512x512/PNG/top", + "thumbnails_internal_switch": "1", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [], + "bed_mesh_max": "0,0", + "bed_mesh_min": "0,0", + "bed_mesh_probe_distance": "0,0", + "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "deretraction_speed": [ + "0" + ], + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "340", + "extruder_clearance_height_to_rod": "30", + "extruder_clearance_radius": "55", + "extruder_colour": [ + "FF4D4F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "400", + "400", + "400" + ], + "machine_max_jerk_e": [ + "1", + "1", + "1" + ], + "machine_max_jerk_x": [ + "15", + "15", + "15" + ], + "machine_max_jerk_y": [ + "15", + "15", + "15" + ], + "machine_max_jerk_z": [ + "1", + "1", + "1" + ], + "machine_max_speed_e": [ + "80", + "40", + "104" + ], + "machine_max_speed_x": [ + "600", + "300", + "780" + ], + "machine_max_speed_y": [ + "600", + "300", + "780" + ], + "machine_max_speed_z": [ + "10", + "5", + "13" + ], + "machine_min_extruding_rate": [ + "0", + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0", + "0" + ], + "machine_pause_gcode": "M600", + "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.18" + ], + "min_layer_height": [ + "0.05" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "brass", + "nozzle_volume": "107", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printer_flush_multiplier": "1", + "printer_notes": "", + "printer_structure": "corexy", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "348" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "0" + ], + "retraction_length": [ + "0.4" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Slope Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.4 nozzle.json index 482534d2de..f0ba840124 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,252 +1,251 @@ -{ - "type": "machine", - "name": "Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_machine_common", - "from": "system", - "setting_id": "gI3IJRLKNc1fyiO6", - "instantiation": "true", - "printer_technology": "FFF", - "printer_settings_id": "Anycubic Kobra S1 Max 0.4 nozzle", - "printer_model": "Anycubic Kobra S1 Max", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "default_print_profile": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "default_filament_profile": [ - "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle" - ], - "disable_m73": "0", - "gcode_flavor": "klipper", - "printable_area": [ - "0x0", - "350x0", - "350x350", - "0x350" - ], - "printable_height": "350", - "thumbnails": "230x110/PNG", - "thumbnails_format": "PNG", - "thumbnails_internal": "512x512/PNG/top", - "thumbnails_internal_switch": "1", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [], - "bed_mesh_max": "0,0", - "bed_mesh_min": "0,0", - "bed_mesh_probe_distance": "0,0", - "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "deretraction_speed": [ - "0" - ], - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "340", - "extruder_clearance_height_to_rod": "30", - "extruder_clearance_radius": "55", - "extruder_colour": [ - "FF4D4F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "400", - "400", - "400" - ], - "machine_max_jerk_e": [ - "1", - "1", - "1" - ], - "machine_max_jerk_x": [ - "15", - "15", - "15" - ], - "machine_max_jerk_y": [ - "15", - "15", - "15" - ], - "machine_max_jerk_z": [ - "1", - "1", - "1" - ], - "machine_max_speed_e": [ - "80", - "40", - "104" - ], - "machine_max_speed_x": [ - "600", - "300", - "780" - ], - "machine_max_speed_y": [ - "600", - "300", - "780" - ], - "machine_max_speed_z": [ - "10", - "5", - "13" - ], - "machine_min_extruding_rate": [ - "0", - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0", - "0" - ], - "machine_pause_gcode": "M600", - "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.28" - ], - "min_layer_height": [ - "0.08" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "107", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printer_flush_multiplier": "1", - "printer_notes": "", - "printer_structure": "corexy", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "348" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_on_top_layer": [ - "1" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "0" - ], - "retraction_length": [ - "0.4" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "1", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Slope Lift" - ], - "z_offset": "0" -} +{ + "type": "machine", + "name": "Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_machine_common", + "from": "system", + "setting_id": "gI3IJRLKNc1fyiO6", + "instantiation": "true", + "printer_technology": "FFF", + "printer_settings_id": "Anycubic Kobra S1 Max 0.4 nozzle", + "printer_model": "Anycubic Kobra S1 Max", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "default_print_profile": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "default_filament_profile": [ + "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle" + ], + "disable_m73": "0", + "gcode_flavor": "klipper", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "350", + "thumbnails": "230x110/PNG", + "thumbnails_format": "PNG", + "thumbnails_internal": "512x512/PNG/top", + "thumbnails_internal_switch": "1", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [], + "bed_mesh_max": "0,0", + "bed_mesh_min": "0,0", + "bed_mesh_probe_distance": "0,0", + "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "deretraction_speed": [ + "0" + ], + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "340", + "extruder_clearance_height_to_rod": "30", + "extruder_clearance_radius": "55", + "extruder_colour": [ + "FF4D4F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "400", + "400", + "400" + ], + "machine_max_jerk_e": [ + "1", + "1", + "1" + ], + "machine_max_jerk_x": [ + "15", + "15", + "15" + ], + "machine_max_jerk_y": [ + "15", + "15", + "15" + ], + "machine_max_jerk_z": [ + "1", + "1", + "1" + ], + "machine_max_speed_e": [ + "80", + "40", + "104" + ], + "machine_max_speed_x": [ + "600", + "300", + "780" + ], + "machine_max_speed_y": [ + "600", + "300", + "780" + ], + "machine_max_speed_z": [ + "10", + "5", + "13" + ], + "machine_min_extruding_rate": [ + "0", + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0", + "0" + ], + "machine_pause_gcode": "M600", + "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "107", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printer_flush_multiplier": "1", + "printer_notes": "", + "printer_structure": "corexy", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "348" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "0" + ], + "retraction_length": [ + "0.4" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Slope Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.6 nozzle.json index 0feeec8104..604d488bdb 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,252 +1,251 @@ -{ - "type": "machine", - "name": "Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_machine_common", - "from": "system", - "setting_id": "p7ilBBLpGn5OYr2e", - "instantiation": "true", - "printer_technology": "FFF", - "printer_settings_id": "Anycubic Kobra S1 Max 0.6 nozzle", - "printer_model": "Anycubic Kobra S1 Max", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "default_print_profile": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "default_filament_profile": [ - "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle" - ], - "disable_m73": "0", - "gcode_flavor": "klipper", - "printable_area": [ - "0x0", - "350x0", - "350x350", - "0x350" - ], - "printable_height": "350", - "thumbnails": "230x110/PNG", - "thumbnails_format": "PNG", - "thumbnails_internal": "512x512/PNG/top", - "thumbnails_internal_switch": "1", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [], - "bed_mesh_max": "0,0", - "bed_mesh_min": "0,0", - "bed_mesh_probe_distance": "0,0", - "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "deretraction_speed": [ - "0" - ], - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "340", - "extruder_clearance_height_to_rod": "30", - "extruder_clearance_radius": "55", - "extruder_colour": [ - "FF4D4F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "400", - "400", - "400" - ], - "machine_max_jerk_e": [ - "1", - "1", - "1" - ], - "machine_max_jerk_x": [ - "15", - "15", - "15" - ], - "machine_max_jerk_y": [ - "15", - "15", - "15" - ], - "machine_max_jerk_z": [ - "1", - "1", - "1" - ], - "machine_max_speed_e": [ - "80", - "40", - "104" - ], - "machine_max_speed_x": [ - "600", - "300", - "780" - ], - "machine_max_speed_y": [ - "600", - "300", - "780" - ], - "machine_max_speed_z": [ - "10", - "5", - "13" - ], - "machine_min_extruding_rate": [ - "0", - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0", - "0" - ], - "machine_pause_gcode": "M600", - "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.12" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "107", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printer_flush_multiplier": "1", - "printer_notes": "", - "printer_structure": "corexy", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "348" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_on_top_layer": [ - "1" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "0" - ], - "retraction_length": [ - "0.4" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "1", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Slope Lift" - ], - "z_offset": "0" -} +{ + "type": "machine", + "name": "Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_machine_common", + "from": "system", + "setting_id": "p7ilBBLpGn5OYr2e", + "instantiation": "true", + "printer_technology": "FFF", + "printer_settings_id": "Anycubic Kobra S1 Max 0.6 nozzle", + "printer_model": "Anycubic Kobra S1 Max", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "default_print_profile": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "default_filament_profile": [ + "Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle" + ], + "disable_m73": "0", + "gcode_flavor": "klipper", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "350", + "thumbnails": "230x110/PNG", + "thumbnails_format": "PNG", + "thumbnails_internal": "512x512/PNG/top", + "thumbnails_internal_switch": "1", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [], + "bed_mesh_max": "0,0", + "bed_mesh_min": "0,0", + "bed_mesh_probe_distance": "0,0", + "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "deretraction_speed": [ + "0" + ], + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "340", + "extruder_clearance_height_to_rod": "30", + "extruder_clearance_radius": "55", + "extruder_colour": [ + "FF4D4F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "400", + "400", + "400" + ], + "machine_max_jerk_e": [ + "1", + "1", + "1" + ], + "machine_max_jerk_x": [ + "15", + "15", + "15" + ], + "machine_max_jerk_y": [ + "15", + "15", + "15" + ], + "machine_max_jerk_z": [ + "1", + "1", + "1" + ], + "machine_max_speed_e": [ + "80", + "40", + "104" + ], + "machine_max_speed_x": [ + "600", + "300", + "780" + ], + "machine_max_speed_y": [ + "600", + "300", + "780" + ], + "machine_max_speed_z": [ + "10", + "5", + "13" + ], + "machine_min_extruding_rate": [ + "0", + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0", + "0" + ], + "machine_pause_gcode": "M600", + "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "107", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printer_flush_multiplier": "1", + "printer_notes": "", + "printer_structure": "corexy", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "348" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "0" + ], + "retraction_length": [ + "0.4" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Slope Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.8 nozzle.json index 172c30885e..d51a6fc560 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,252 +1,251 @@ -{ - "type": "machine", - "name": "Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_machine_common", - "from": "system", - "setting_id": "eD3ZKZ62sl6JMvUr", - "instantiation": "true", - "printer_technology": "FFF", - "printer_settings_id": "Anycubic Kobra S1 Max 0.8 nozzle", - "printer_model": "Anycubic Kobra S1 Max", - "printer_variant": "0.8", - "nozzle_diameter": [ - "0.8" - ], - "default_print_profile": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "default_filament_profile": [ - "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle" - ], - "disable_m73": "0", - "gcode_flavor": "klipper", - "printable_area": [ - "0x0", - "350x0", - "350x350", - "0x350" - ], - "printable_height": "350", - "thumbnails": "230x110/PNG", - "thumbnails_format": "PNG", - "thumbnails_internal": "512x512/PNG/top", - "thumbnails_internal_switch": "1", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "1", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [], - "bed_mesh_max": "0,0", - "bed_mesh_min": "0,0", - "bed_mesh_probe_distance": "0,0", - "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", - "cooling_tube_length": "0", - "cooling_tube_retraction": "0", - "deretraction_speed": [ - "0" - ], - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "0", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "0", - "extruder_clearance_height_to_lid": "340", - "extruder_clearance_height_to_rod": "30", - "extruder_clearance_radius": "55", - "extruder_colour": [ - "FF4D4F" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_retracting": [ - "5000", - "5000", - "5000" - ], - "machine_max_acceleration_travel": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_x": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_y": [ - "20000", - "20000", - "20000" - ], - "machine_max_acceleration_z": [ - "400", - "400", - "400" - ], - "machine_max_jerk_e": [ - "1", - "1", - "1" - ], - "machine_max_jerk_x": [ - "15", - "15", - "15" - ], - "machine_max_jerk_y": [ - "15", - "15", - "15" - ], - "machine_max_jerk_z": [ - "1", - "1", - "1" - ], - "machine_max_speed_e": [ - "80", - "40", - "104" - ], - "machine_max_speed_x": [ - "600", - "300", - "780" - ], - "machine_max_speed_y": [ - "600", - "300", - "780" - ], - "machine_max_speed_z": [ - "10", - "5", - "13" - ], - "machine_min_extruding_rate": [ - "0", - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0", - "0" - ], - "machine_pause_gcode": "M600", - "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.56" - ], - "min_layer_height": [ - "0.16" - ], - "nozzle_height": "4", - "nozzle_hrc": "0", - "nozzle_type": "hardened_steel", - "nozzle_volume": "107", - "parking_pos_retraction": "0", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printer_flush_multiplier": "1", - "printer_notes": "", - "printer_structure": "corexy", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "0" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "348" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_on_top_layer": [ - "1" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "0" - ], - "retraction_length": [ - "0.4" - ], - "retraction_minimum_travel": [ - "1" - ], - "retraction_speed": [ - "30" - ], - "scan_first_layer": "0", - "silent_mode": "1", - "single_extruder_multi_material": "1", - "support_air_filtration": "0", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "1", - "template_custom_gcode": "", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "2" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Slope Lift" - ], - "z_offset": "0" -} +{ + "type": "machine", + "name": "Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_machine_common", + "from": "system", + "setting_id": "eD3ZKZ62sl6JMvUr", + "instantiation": "true", + "printer_technology": "FFF", + "printer_settings_id": "Anycubic Kobra S1 Max 0.8 nozzle", + "printer_model": "Anycubic Kobra S1 Max", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "default_print_profile": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "default_filament_profile": [ + "Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle" + ], + "disable_m73": "0", + "gcode_flavor": "klipper", + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "350", + "thumbnails": "230x110/PNG", + "thumbnails_format": "PNG", + "thumbnails_internal": "512x512/PNG/top", + "thumbnails_internal_switch": "1", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [], + "bed_mesh_max": "0,0", + "bed_mesh_min": "0,0", + "bed_mesh_probe_distance": "0,0", + "before_layer_change_gcode": "{if layer_num==0} ; PURGE LINE\nM204 P500\nSET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=9\nG1 Z0.75 F900 ; for object exclusion\nG1 X135 Y352 F18000\nG1 Z.25 F900\nG1 E0.8 F2400\nG1 E0.6 F2400\nG1 F3000\nG1 X205 Y352 E3.72454\nG1 X205 Y352.45 E.0252\nG1 X135 Y352.45 E3.72454\nG1 X135 Y352.02 E.02305\nG1 Z0.5 F600\n{endif}\n", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 S1M\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_+89.9) / 90))}\n{local extrude_length_=flush_length_ / loops_}\n{local time_flush_=int(extrude_length_ * loops_ * 300)}\n;;; M400 P{time_flush_} ; ={flush_length_}*300\n\n; retract and z hop\n; G1 E-0.4 F2400\n; G1 Z{toolchange_z+0.6} F600\n\n; MOVE_TO_IMPACT_POSITION\n;;; G1 X352 Y23 F18000\n;;; G1 X356.5 F6000\n;;; M400\n\n; cut filament\n;;; G1 Y13\n;;; G1 Y23 F600\n;;; M400 P76250\n;;; M400 P35780\n\nT[next_extruder] ; change extruder\n\n; MOVE_TO_PRE_SWEEP_POSITION_SAFE\n;;; G1 Y0 F12000\n;;; G1 X0 F12000\n\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; MOVE_TO_PRE_SWEEP_POSITION\n;;; G1 Y375 F12000\n;;; G1 X105 F12000\n;;; M400\n\n; MOVE_TO_SWEEP_POSITION\n;;; G1 X87 F6000\n;;; G1 Y375 F12000\n;;; M400\n\n; EXIT_THROW_POSITION\n;;; G1 Z{toolchange_z+2.1} F6000\n;;; G1 X105 F12000\n;;; G1 Y352 F12000\n;;; G1 Z{toolchange_z} F600\n;;; G1 E0.4 F2400\n;;; M400\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END\n", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "deretraction_speed": [ + "0" + ], + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "340", + "extruder_clearance_height_to_rod": "30", + "extruder_clearance_radius": "55", + "extruder_colour": [ + "FF4D4F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": "; AFTER_LAYER_CHANGE [layer_num] @ [layer_z]mm", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "M400\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM141 S0 ; turn off box temperature\nM106 P1 S0 ; turn off fan\nM106 P2 S0\nM106 P3 S0\nM84; disable motors \n; disable stepper motors", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "400", + "400", + "400" + ], + "machine_max_jerk_e": [ + "1", + "1", + "1" + ], + "machine_max_jerk_x": [ + "15", + "15", + "15" + ], + "machine_max_jerk_y": [ + "15", + "15", + "15" + ], + "machine_max_jerk_z": [ + "1", + "1", + "1" + ], + "machine_max_speed_e": [ + "80", + "40", + "104" + ], + "machine_max_speed_x": [ + "600", + "300", + "780" + ], + "machine_max_speed_y": [ + "600", + "300", + "780" + ], + "machine_max_speed_z": [ + "10", + "5", + "13" + ], + "machine_min_extruding_rate": [ + "0", + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0", + "0" + ], + "machine_pause_gcode": "M600", + "machine_start_gcode": "G9111 bedTemp=[first_layer_bed_temperature] extruderTemp=[first_layer_temperature[initial_tool]]\nM117\n; print_bed_min = {print_bed_min[0]},{print_bed_min[1]}\n; print_bed_max = {print_bed_max[0]},{print_bed_max[1]}\n; print_bed_size = {print_bed_size[0]},{print_bed_size[1]}\n; first_layer_print_min = {first_layer_print_min[0]},{first_layer_print_min[1]}\n; first_layer_print_max = {first_layer_print_max[0]},{first_layer_print_max[1]}\n; first_layer_print_size = {first_layer_print_size[0]},{first_layer_print_size[1]}\n; first_layer_fan_speed = 2, {int(additional_cooling_fan_speed[initial_tool] * 255 / 100)}", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "nozzle_height": "4", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "107", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printer_flush_multiplier": "1", + "printer_notes": "", + "printer_structure": "corexy", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "0", + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "348" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "0" + ], + "retraction_length": [ + "0.4" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "30" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "1", + "support_air_filtration": "0", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Slope Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max.json index c47f2e7fa2..0f35afd33f 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1 Max.json @@ -1,12 +1,12 @@ -{ - "type": "machine_model", - "machine_tech": "FFF", - "family": "Anycubic", - "name": "Anycubic Kobra S1 Max", - "model_id": "Anycubic Kobra S1 Max", - "nozzle_diameter": "0.4;0.25;0.6;0.8", - "bed_model": "Anycubic Kobra S1 Max_buildplate_model.stl", - "bed_texture": "Anycubic Kobra S1 Max_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle" -} +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Anycubic", + "name": "Anycubic Kobra S1 Max", + "model_id": "Anycubic Kobra S1 Max", + "nozzle_diameter": "0.4;0.25;0.6;0.8", + "bed_model": "Anycubic Kobra S1 Max_buildplate_model.stl", + "bed_texture": "Anycubic Kobra S1 Max_buildplate_texture.svg", + "hotend_model": "", + "default_materials": "Anycubic PLA @Anycubic Kobra S1 Max 0.4 nozzle;Anycubic PLA @Anycubic Kobra S1 Max 0.25 nozzle;Anycubic PLA @Anycubic Kobra S1 Max 0.6 nozzle;Anycubic PLA @Anycubic Kobra S1 Max 0.8 nozzle" +} diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra S1.json b/resources/profiles/Anycubic/machine/Anycubic Kobra S1.json index 07b3b61536..45a7404183 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra S1.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra S1.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Kobra S1_buildplate_model.stl", "bed_texture": "Anycubic Kobra S1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA SE @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle;Anycubic PETG @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra S1 0.4 nozzle;Anycubic ASA @Anycubic Kobra S1 0.4 nozzle;Anycubic ABS @Anycubic Kobra S1 0.4 nozzle;Anycubic ASA @Anycubic Kobra S1 0.4 nozzle;Anycubic PA @Anycubic Kobra S1 0.4 nozzle;Anycubic PC @Anycubic Kobra S1 0.4 nozzle;Anycubic PETG @Anycubic Kobra S1 0.4 nozzle;Anycubic PVA @Anycubic Kobra S1 0.4 nozzle;Anycubic TPU @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle" + "default_materials": "Anycubic PLA @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra S1 0.4 nozzle;Anycubic PETG @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle;Anycubic ASA @Anycubic Kobra S1 0.4 nozzle;Anycubic ABS @Anycubic Kobra S1 0.4 nozzle;Anycubic ASA @Anycubic Kobra S1 0.4 nozzle;Anycubic PETG @Anycubic Kobra S1 0.4 nozzle;Anycubic TPU @Anycubic Kobra S1 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra S1 0.4 nozzle" } diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json index 5dc35e5584..8e2952b123 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json @@ -14,7 +14,19 @@ ], "default_print_profile": "0.20mm Standard @Anycubic Kobra X 0.4 nozzle;0.08mm Standard @Anycubic Kobra X 0.4 nozzle", "default_filament_profile": [ - "Anycubic PLA @Anycubic Kobra X 0.4 nozzle;Anycubic ABS @Anycubic Kobra X 0.4 nozzle;Anycubic ASA @Anycubic Kobra X 0.4 nozzle;Anycubic PETG @Anycubic Kobra X 0.4 nozzle;Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle;Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle;Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle;Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle;Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle;Anycubic PVA @Anycubic Kobra X 0.4 nozzle;Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle;Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle;Anycubic Generetic PETG @Anycubic Kobra X 0.4 nozzle" + "Anycubic PLA @Anycubic Kobra X 0.4 nozzle", + "Anycubic ABS @Anycubic Kobra X 0.4 nozzle", + "Anycubic ASA @Anycubic Kobra X 0.4 nozzle", + "Anycubic PETG @Anycubic Kobra X 0.4 nozzle", + "Anycubic PLA+ @Anycubic Kobra X 0.4 nozzle", + "Anycubic PLA Glow @Anycubic Kobra X 0.4 nozzle", + "Anycubic PLA High Speed @Anycubic Kobra X 0.4 nozzle", + "Anycubic PLA Matte @Anycubic Kobra X 0.4 nozzle", + "Anycubic PLA Silk @Anycubic Kobra X 0.4 nozzle", + "Anycubic PVA @Anycubic Kobra X 0.4 nozzle", + "Anycubic TPU 95A @Anycubic Kobra X 0.4 nozzle", + "Anycubic TPU for ACE @Anycubic Kobra X 0.4 nozzle", + "Generic PETG @Anycubic Kobra X 0.4 nozzle" ], "disable_m73": "0", "gcode_flavor": "klipper", @@ -188,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "1", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Anycubic/machine/Anycubic Predator.json b/resources/profiles/Anycubic/machine/Anycubic Predator.json index a3b100c166..b4490d79f9 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Predator.json +++ b/resources/profiles/Anycubic/machine/Anycubic Predator.json @@ -8,5 +8,5 @@ "bed_model": "Anycubic Predator_buildplate_model.stl", "bed_texture": "Anycubic Predator_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic" + "default_materials": "Generic ABS @Anycubic;Generic PLA @Anycubic;Generic PLA-CF @Anycubic;Generic PETG @Anycubic;Generic TPU @Anycubic;Generic ASA @Anycubic;Generic PC @Anycubic;Generic PVA @Anycubic;Generic PA @Anycubic;Generic PA-CF @Anycubic;Generic PLA @System" } diff --git a/resources/profiles/Anycubic/machine/fdm_machine_common.json b/resources/profiles/Anycubic/machine/fdm_machine_common.json index c4ff46a6bf..ac44b6a964 100644 --- a/resources/profiles/Anycubic/machine/fdm_machine_common.json +++ b/resources/profiles/Anycubic/machine/fdm_machine_common.json @@ -126,7 +126,6 @@ "deretraction_speed": [ "30" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Anycubic/process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json index 6ba2afe3b3..80fd42d391 100644 --- a/resources/profiles/Anycubic/process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/process/0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "bZRQrVuJgsKO0PYK", - "instantiation": "true", - "print_settings_id": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "layer_height": "0.06", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.25 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "50", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.3", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "2000", - "internal_solid_infill_line_width": "0.27", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.27", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.27", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.3", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.06", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.27", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.06", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.27", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "4", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "bZRQrVuJgsKO0PYK", + "instantiation": "true", + "print_settings_id": "0.06mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "layer_height": "0.06", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.25 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "50", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.3", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "2000", + "internal_solid_infill_line_width": "0.27", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.27", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.27", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.3", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.06", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.27", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.06", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.27", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "4", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json index 54a0df5369..5670e7a135 100644 --- a/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "7", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index a4a88b3149..6c8575201a 100644 --- a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json index 5626bb449c..7b045f6b74 100644 --- a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "bfq9DtBsHIrbsZfD", - "instantiation": "true", - "print_settings_id": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "layer_height": "0.08", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.25 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "50", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.3", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "2000", - "internal_solid_infill_line_width": "0.27", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.27", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.27", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.3", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.08", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.27", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.08", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.27", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "4", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "bfq9DtBsHIrbsZfD", + "instantiation": "true", + "print_settings_id": "0.08mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "layer_height": "0.08", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.25 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "50", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.3", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "2000", + "internal_solid_infill_line_width": "0.27", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.27", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.27", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.3", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.08", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.27", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.08", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.27", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "4", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index e49ba929c0..386505ff8e 100644 --- a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "E2tI71ShF3oOgMME", - "instantiation": "true", - "print_settings_id": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.08", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "7", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "80", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "120", - "ironing_angle": "-1", - "ironing_flow": "8%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "60", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.08", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "15", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.08", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "9", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "E2tI71ShF3oOgMME", + "instantiation": "true", + "print_settings_id": "0.08mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.08", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "7", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "80", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "120", + "ironing_angle": "-1", + "ironing_flow": "8%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "60", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.08", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "15", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.08", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "9", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json index 2b02de44b3..ec1137ad11 100644 --- a/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json b/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json index 1e8c4a2c90..b508189668 100644 --- a/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json +++ b/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "5", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json index 14fe54d530..58a70cf403 100644 --- a/resources/profiles/Anycubic/process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/process/0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "OmytVExIkdNyyyKT", - "instantiation": "true", - "print_settings_id": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "layer_height": "0.1", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.25 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "50", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.3", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "2000", - "internal_solid_infill_line_width": "0.27", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.27", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.27", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.3", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.1", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.27", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.1", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.27", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "4", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "OmytVExIkdNyyyKT", + "instantiation": "true", + "print_settings_id": "0.10mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "layer_height": "0.1", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.25 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "50", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.3", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "2000", + "internal_solid_infill_line_width": "0.27", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.27", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.27", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.3", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.1", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.27", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.1", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.27", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "4", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json index 6fd6f1ace7..95a383016b 100644 --- a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json index a33932e016..d6f37a93c0 100644 --- a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "5", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json index c8d7c6f284..39acfedd36 100644 --- a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json index 0a67e8371a..1ffa05956a 100644 --- a/resources/profiles/Anycubic/process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm High Quality @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index 38fd80bfae..7bd3131f87 100644 --- a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json index b20feba94a..f01d005bf4 100644 --- a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "z8TDucaoilYiK8V1", - "instantiation": "true", - "print_settings_id": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "layer_height": "0.12", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.25 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "50", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.3", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "2000", - "internal_solid_infill_line_width": "0.27", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.27", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.27", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.3", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.12", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.27", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.12", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.27", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "4", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "z8TDucaoilYiK8V1", + "instantiation": "true", + "print_settings_id": "0.12mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "layer_height": "0.12", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.25 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "50", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.3", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "2000", + "internal_solid_infill_line_width": "0.27", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.27", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.27", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.3", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.12", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.27", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.12", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.27", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "4", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index 99957845b8..33fcd005e4 100644 --- a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "D1bJFkXoVSZ2QLSA", - "instantiation": "true", - "print_settings_id": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.12", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "180", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "180", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "60", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "180", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.12", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "20", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.12", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "D1bJFkXoVSZ2QLSA", + "instantiation": "true", + "print_settings_id": "0.12mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.12", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "180", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "180", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "60", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "180", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.12", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "20", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.12", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json index 29dd4e03f9..73acca4322 100644 --- a/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json b/resources/profiles/Anycubic/process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json index b31c2c5af4..15b3b89ad7 100644 --- a/resources/profiles/Anycubic/process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json +++ b/resources/profiles/Anycubic/process/0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "Hl64YdObrtpqJM2s", - "instantiation": "true", - "print_settings_id": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", - "layer_height": "0.14", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.25 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "5", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "50", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.3", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.15", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.3", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "2000", - "internal_solid_infill_line_width": "0.27", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.27", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.27", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.3", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.14", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.27", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.14", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "7", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.27", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "120", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "4", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "Hl64YdObrtpqJM2s", + "instantiation": "true", + "print_settings_id": "0.14mm Standard @Anycubic Kobra S1 Max 0.25 nozzle", + "layer_height": "0.14", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.25 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "50", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.3", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.15", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.3", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "2000", + "internal_solid_infill_line_width": "0.27", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.27", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.27", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.3", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.14", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.27", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.14", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "7", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.27", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "120", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "4", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic 4MaxPro2.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic 4MaxPro2.json index 35c1d4b30a..be2f8b3e9a 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic 4MaxPro2.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic 4MaxPro2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "2Qq27PfeoCqMAZKw", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Chiron.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Chiron.json index ff48fca663..0facf331d1 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Chiron.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Chiron.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fcqsKbEsGbAs6rUU", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra.json index e74fae9dad..ae5f046053 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "E1VHkuwE0sHTzmb2", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra2.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra2.json index 3618dac281..84b0eb87fe 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra2.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7H2BzvHgy0o9nc1g", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraMax.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraMax.json index a14a4961dd..8b6af27046 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraMax.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ukTEpT2XRtJyGKUp", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraPlus.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraPlus.json index e974680931..27c3ca627f 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraPlus.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "3Gu40CNOXnzDsZfD", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Vyper.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Vyper.json index 0da034eeb7..0cfc8e7463 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Vyper.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Vyper.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ln2Zw2E5e3Azq3nc", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic i3MegaS.json b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic i3MegaS.json index b4647a7c39..15a208302e 100644 --- a/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic i3MegaS.json +++ b/resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic i3MegaS.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "zKGotAmWJTB14cT8", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json index 04c0b4d8e5..e8180a0034 100644 --- a/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "Hiz2L1qh67izjl1e", - "instantiation": "true", - "print_settings_id": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.16", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "4000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "250", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "0", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "200", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "2000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "60", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "gyroid", - "sparse_infill_speed": "200", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.16", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "25", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "6", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "Hiz2L1qh67izjl1e", + "instantiation": "true", + "print_settings_id": "0.16mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.16", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "4000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "250", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "0", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "200", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "2000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "60", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "200", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.16", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "25", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "6", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json index 055dc89ed1..d195a61226 100644 --- a/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm High Quality @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json index 13f0e7e127..283d8c72b4 100644 --- a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json index 469c3c4ba3..8d8e8222e5 100644 --- a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "4", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json index aab5a3f23c..e4d3bc3a19 100644 --- a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "4", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index 09ff8e393c..02f7fccb93 100644 --- a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json index 4b83264a1d..596f35c405 100644 --- a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "4", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index edf43e2875..eeee68080f 100644 --- a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "Yl10d32pjposFVu9", - "instantiation": "true", - "print_settings_id": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.16", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "4", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "250", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "300", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "250", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "200", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "350", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.16", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "25", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.16", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "6", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "200", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "Yl10d32pjposFVu9", + "instantiation": "true", + "print_settings_id": "0.16mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.16", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "250", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "300", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "250", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "350", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.16", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "25", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.16", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "6", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json index 664f118e3d..0b682648d7 100644 --- a/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json index ac80f014ab..f6c96e3155 100644 --- a/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json index 4b2fd1df30..bcd1decabe 100644 --- a/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "Y55zuAyFSNMHZlCt", - "instantiation": "true", - "print_settings_id": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "layer_height": "0.18", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "5000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.62", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.62", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.62", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.62", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.18", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.62", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.18", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.62", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "5000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "Y55zuAyFSNMHZlCt", + "instantiation": "true", + "print_settings_id": "0.18mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "layer_height": "0.18", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "5000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.62", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.62", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.62", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.62", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.18", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.62", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.18", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.62", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "5000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json index f276232436..2f639acd63 100644 --- a/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "M7CigEUqzwefI8ed", - "instantiation": "true", - "print_settings_id": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.2", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "250", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "250", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "250", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.2", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "5", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "200", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0.05" -} +{ + "type": "process", + "name": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "M7CigEUqzwefI8ed", + "instantiation": "true", + "print_settings_id": "0.20mm High Quality @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.2", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "250", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "250", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "250", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.2", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0.05" +} diff --git a/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json index 75fb6457ea..425e43b467 100644 --- a/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm High Quality @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro2.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro2.json index f0e718b0ff..d446d567b7 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro2.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "4fNa2Y66ms9j0vdh", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Chiron.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Chiron.json index b92ce992ca..6f1b6475cf 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Chiron.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Chiron.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "4tYPv79lny7OAesb", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json index 0e65291255..4180755994 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json index dc555a5838..ca551062d5 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json index 863a0a0af9..747646cb59 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json index 96fa4642c9..7476d37ea1 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json index 5573902ecf..8e94d72687 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index 58b0b90e5e..827ef63836 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json index b1af0fb13d..48307606ae 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json index 0626025cc4..8c1a97ff5e 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json index 6a02522e0e..f345acb65d 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 0.4 nozzle.json @@ -127,8 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "1", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index 4a00460633..2fef8f1bb5 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "h9txQrwg5GiCgORR", - "instantiation": "true", - "print_settings_id": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.2", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "250", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "300", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "250", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "200", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "300", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.2", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "5", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "200", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0.05" -} +{ + "type": "process", + "name": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "h9txQrwg5GiCgORR", + "instantiation": "true", + "print_settings_id": "0.20mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.2", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "250", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "300", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "250", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "300", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.2", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0.05" +} diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json index cbe349b771..3afbbb25f8 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra.json index c9d3e750a3..393233a992 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "PCsMHJ36HdywhVBA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra2.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra2.json index b68731cb78..c0a529e50c 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra2.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dd3a8DNtunKVpWWY", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraMax.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraMax.json index 77e3b32b80..b1a00dda27 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraMax.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pqXeGE9OxboQGBMi", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraPlus.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraPlus.json index 326db3295d..365a863cb5 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraPlus.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ZnZf41QpEAXorp2U", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Vyper.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Vyper.json index 341ece7bef..e6e5f5ab8a 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Vyper.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Vyper.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jvz2LYWpcGJVgzZn", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic i3MegaS.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic i3MegaS.json index d0eb582143..d6ffbab4a9 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic i3MegaS.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic i3MegaS.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lI7dHvKmsEmoSw1k", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json index 2ac098d8a7..48a7d490b4 100644 --- a/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index 587aaecfe8..63324007cc 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json index 548f9050fc..fdebb701a7 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json index aef03dc9b2..a367b48df4 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index 28aeb2a4a6..338d36d1ac 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "NDu3QAQvTHNboRRR", - "instantiation": "true", - "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.24", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "230", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "230", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "230", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "200", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "35", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "230", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "35", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.2", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "4", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "200", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "NDu3QAQvTHNboRRR", + "instantiation": "true", + "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.24", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "230", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "230", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "230", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "35", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "230", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "35", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.2", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "4", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json index de6d9f4c09..4363919787 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "ehgM1Fri1VLP8d2m", - "instantiation": "true", - "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "layer_height": "0.24", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "5000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.62", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.62", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.62", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.62", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.62", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.62", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "5000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "ehgM1Fri1VLP8d2m", + "instantiation": "true", + "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "layer_height": "0.24", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "5000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.62", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.62", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.62", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.62", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.62", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.62", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "5000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json index 8d42e7ab86..48b693bb69 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "9oyIahCs4Md5T140", - "instantiation": "true", - "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "layer_height": "0.24", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.15", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "100", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "50", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.82", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.4", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.82", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "0", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.82", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "5", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "5", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.82", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "50", - "support_interface_top_layers": "2", - "support_line_width": "0.82", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "9oyIahCs4Md5T140", + "instantiation": "true", + "print_settings_id": "0.24mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "layer_height": "0.24", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.15", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "100", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.82", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.4", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.82", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "0", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "5", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.82", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "50", + "support_interface_top_layers": "2", + "support_line_width": "0.82", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json index e4ca7f3027..33f4c80798 100644 --- a/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json index dcb8ee9848..f314b9f3b4 100644 --- a/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json index a256d2e635..893f1af1e3 100644 --- a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json index 5deb25af55..255b805b88 100644 --- a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra 3 Max 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -136,8 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -198,7 +195,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json index 7b19ca18ba..108a9202ab 100644 --- a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra Neo 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0.6", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json index 213c1bd438..e4839e61bb 100644 --- a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle.json @@ -1,320 +1,317 @@ -{ - "type": "process", - "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "P21QEQqy7DYRu61b", - "instantiation": "true", - "print_settings_id": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", - "layer_height": "0.28", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.4 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "200", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "100", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.5", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "50", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "200", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "50%", - "internal_solid_infill_line_width": "0.42", - "internal_solid_infill_pattern": "zig-zag", - "internal_solid_infill_speed": "200", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.42", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.42", - "outer_wall_speed": "200", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "35", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "1", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "200", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "0", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.42", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "150", - "support_style": "default", - "support_threshold_angle": "40", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.2", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "1", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "4", - "top_shell_thickness": "1", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.42", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "200", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_bridging": "10", - "wipe_tower_cone_angle": "15", - "wipe_tower_extra_flow": "100%", - "wipe_tower_extra_spacing": "120%", - "wipe_tower_filament": "0", - "wipe_tower_max_purge_speed": "90", - "wipe_tower_no_sparse_layers": "0", - "wipe_tower_rotation_angle": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "P21QEQqy7DYRu61b", + "instantiation": "true", + "print_settings_id": "0.28mm Standard @Anycubic Kobra S1 Max 0.4 nozzle", + "layer_height": "0.28", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.4 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "200", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "100", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.5", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "200", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "50%", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_pattern": "zig-zag", + "internal_solid_infill_speed": "200", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.42", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "200", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "35", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "1", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.45", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "200", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "0", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.42", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "150", + "support_style": "default", + "support_threshold_angle": "40", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.2", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "1", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "4", + "top_shell_thickness": "1", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.42", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "200", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_bridging": "10", + "wipe_tower_cone_angle": "15", + "wipe_tower_extra_flow": "100%", + "wipe_tower_extra_spacing": "120%", + "wipe_tower_filament": "0", + "wipe_tower_max_purge_speed": "90", + "wipe_tower_no_sparse_layers": "0", + "wipe_tower_rotation_angle": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json index debbe6e0cf..d22e3ef4f4 100644 --- a/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Standard @Anycubic Kobra X 0.4 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json index fa16040b96..46dd14c923 100644 --- a/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "0%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic 4MaxPro2.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic 4MaxPro2.json index 974306bcd2..0b3e4b84c8 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic 4MaxPro2.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic 4MaxPro2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "SnMGK6A5jGzj9KAm", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Chiron.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Chiron.json index 0fd1a8efeb..d4d629ba75 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Chiron.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Chiron.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "B0Ar6gbysEbWId84", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra.json index 3ec6a42418..505c1f10b6 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jzWHjr9rKzgX2mbz", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra2.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra2.json index 18456d7b99..9193fc6aaa 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra2.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "IWsii200XlEuhz3n", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraMax.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraMax.json index bb3ddf9389..0535084c51 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraMax.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "IB9gk84SYRkMza9u", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraPlus.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraPlus.json index 4190064c90..33f3822993 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraPlus.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lSoaR17JUQSesbgG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Vyper.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Vyper.json index e72286dd06..a21298d85c 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Vyper.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Vyper.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pXawQlRvbdiJJANG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic i3MegaS.json b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic i3MegaS.json index 70bb8ad91e..d1a4fc798a 100644 --- a/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic i3MegaS.json +++ b/resources/profiles/Anycubic/process/0.30mm Draft @Anycubic i3MegaS.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7PNQ3S9tucM5wFyj", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json index 03ed5252c7..2b4da65c06 100644 --- a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json index 4820247cd2..c76f636af6 100644 --- a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json index 1c8042a175..02a1b0466f 100644 --- a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "O8vKonzzc8WA5pYY", - "instantiation": "true", - "print_settings_id": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "layer_height": "0.3", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "5000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.62", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.62", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.62", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "4", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.62", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.62", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "0", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.62", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "O8vKonzzc8WA5pYY", + "instantiation": "true", + "print_settings_id": "0.30mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "layer_height": "0.3", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "5000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.62", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.62", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.62", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.62", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.62", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "0", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.62", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json index 745f784736..0faa168582 100644 --- a/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json index 10b86fe268..34542cfb19 100644 --- a/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "0bCUIOLe0kqiwAIZ", - "instantiation": "true", - "print_settings_id": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "layer_height": "0.32", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.15", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "100", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "50", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.82", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.4", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.82", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.82", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "5", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "5", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.82", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "50", - "support_interface_top_layers": "2", - "support_line_width": "0.82", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "0bCUIOLe0kqiwAIZ", + "instantiation": "true", + "print_settings_id": "0.32mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "layer_height": "0.32", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.15", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "100", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.82", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.4", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.82", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "5", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.82", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "50", + "support_interface_top_layers": "2", + "support_line_width": "0.82", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json index 93ff4febe6..62bce8d582 100644 --- a/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json index 66eb279711..81d042d0e8 100644 --- a/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "ii1Ycsf3xI93uZy9", - "instantiation": "true", - "print_settings_id": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "layer_height": "0.36", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "5000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.62", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.62", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.62", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.62", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.62", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.62", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "5000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "ii1Ycsf3xI93uZy9", + "instantiation": "true", + "print_settings_id": "0.36mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "layer_height": "0.36", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "5000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.62", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.62", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.62", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.62", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.62", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.62", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "5000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json index 1130f63061..b29ffd16ef 100644 --- a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json @@ -13,7 +13,6 @@ ], "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "1", "alternate_extra_wall": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", @@ -128,7 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json index fadd6675d3..0002ce4d9b 100644 --- a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json index 1085832db4..0c68a35165 100644 --- a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "O5xBpGApHGyVlyLw", - "instantiation": "true", - "print_settings_id": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "layer_height": "0.4", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.15", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "0", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "0", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "100", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "50", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.82", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.4", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "120", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.82", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.82", - "outer_wall_speed": "60", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "5", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "5", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "40", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.82", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "50", - "support_interface_top_layers": "2", - "support_line_width": "0.82", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "O5xBpGApHGyVlyLw", + "instantiation": "true", + "print_settings_id": "0.40mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "layer_height": "0.4", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.15", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "0", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "0", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "100", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.82", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.4", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "120", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.82", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "60", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "5", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.82", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "50", + "support_interface_top_layers": "2", + "support_line_width": "0.82", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json index 12b7ec1ebf..f890e66ae7 100644 --- a/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra 3 Max 0.6 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "80", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json index f11acb406f..7233849603 100644 --- a/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "rPalfYXk0fCx0yjv", - "instantiation": "true", - "print_settings_id": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", - "layer_height": "0.42", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.6 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.1", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "5000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "50", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "60", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.62", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.3", - "initial_layer_speed": "40", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.62", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.62", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.62", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "1", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.62", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "10", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.62", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_interface_top_layers": "2", - "support_line_width": "0.62", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.62", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "5000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "rPalfYXk0fCx0yjv", + "instantiation": "true", + "print_settings_id": "0.42mm Standard @Anycubic Kobra S1 Max 0.6 nozzle", + "layer_height": "0.42", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.6 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.1", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "5000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "50", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "60", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.62", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.3", + "initial_layer_speed": "40", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.62", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.62", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.62", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "1", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.62", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.62", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_interface_top_layers": "2", + "support_line_width": "0.62", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.62", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "5000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json index 98b75e6a31..4ae39e9b01 100644 --- a/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra 3 Max 0.8 nozzle.json @@ -146,8 +146,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", @@ -209,7 +207,6 @@ ], "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "40", "smooth_speed_discontinuity_area": "1", "solid_infill_direction": "45", "internal_solid_filament_id": "0", diff --git a/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json index 88705184ec..34cd6518ab 100644 --- a/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "y0r7Q7PMNRH8ujFF", - "instantiation": "true", - "print_settings_id": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "layer_height": "0.48", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.15", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "100", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "50", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.82", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.4", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.82", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "0", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.82", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "5", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "5", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.82", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "50", - "support_interface_top_layers": "2", - "support_line_width": "0.82", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "y0r7Q7PMNRH8ujFF", + "instantiation": "true", + "print_settings_id": "0.48mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "layer_height": "0.48", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.15", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "100", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.82", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.4", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.82", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "0", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "5", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.82", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "50", + "support_interface_top_layers": "2", + "support_line_width": "0.82", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json index 84ab9fa483..bdd7741e0b 100644 --- a/resources/profiles/Anycubic/process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle.json @@ -1,323 +1,320 @@ -{ - "type": "process", - "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "inherits": "fdm_process_common", - "from": "system", - "setting_id": "rOL0gJh6Y7pDsBnk", - "instantiation": "true", - "print_settings_id": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", - "layer_height": "0.56", - "compatible_printers": [ - "Anycubic Kobra S1 Max 0.8 nozzle" - ], - "accel_to_decel_enable": "1", - "accel_to_decel_factor": "50%", - "alternate_extra_wall": "0", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bottom_solid_infill_flow_ratio": "1", - "bottom_surface_pattern": "monotonic", - "bridge_acceleration": "50%", - "bridge_angle": "0", - "bridge_density": "100%", - "bridge_flow": "1", - "bridge_no_support": "0", - "bridge_speed": "30", - "brim_ears_detection_length": "1", - "brim_ears_max_angle": "125", - "brim_object_gap": "0.15", - "brim_type": "auto_brim", - "brim_width": "5", - "compatible_printers_condition": "", - "counterbore_hole_bridging": "none", - "default_acceleration": "10000", - "default_jerk": "9", - "detect_narrow_internal_solid_infill": "1", - "detect_overhang_wall": "1", - "detect_thin_wall": "1", - "dont_filter_internal_bridges": "disabled", - "draft_shield": "disabled", - "elefant_foot_compensation": "0.1", - "elefant_foot_compensation_layers": "1", - "enable_arc_fitting": "0", - "enable_extra_bridge_layer": "disabled", - "enable_overhang_speed": "1", - "enable_prime_tower": "1", - "enable_support": "0", - "enforce_support_layers": "0", - "ensure_vertical_shell_thickness": "ensure_all", - "exclude_object": "1", - "extra_perimeters_on_overhangs": "1", - "extrusion_rate_smoothing_external_perimeter_only": "0", - "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", - "filter_out_gap_fill": "0", - "flush_into_infill": "0", - "flush_into_objects": "0", - "flush_into_support": "1", - "fuzzy_skin": "none", - "fuzzy_skin_first_layer": "0", - "fuzzy_skin_noise_type": "classic", - "fuzzy_skin_octaves": "4", - "fuzzy_skin_persistence": "0.5", - "fuzzy_skin_point_distance": "0.8", - "fuzzy_skin_scale": "1", - "fuzzy_skin_thickness": "0.3", - "gap_fill_target": "topbottom", - "gap_infill_speed": "100", - "gcode_add_line_number": "0", - "gcode_comments": "0", - "gcode_label_objects": "1", - "hole_to_polyhole": "0", - "hole_to_polyhole_threshold": "0.01", - "hole_to_polyhole_twisted": "1", - "independent_support_layer_height": "1", - "infill_anchor": "400%", - "infill_anchor_max": "20", - "infill_combination": "0", - "infill_combination_max_layer_height": "100%", - "infill_direction": "45", - "infill_jerk": "9", - "infill_wall_overlap": "15%", - "initial_layer_acceleration": "500", - "initial_layer_infill_speed": "50", - "initial_layer_jerk": "9", - "initial_layer_line_width": "0.82", - "initial_layer_min_bead_width": "85%", - "initial_layer_print_height": "0.4", - "initial_layer_speed": "30", - "initial_layer_travel_speed": "100%", - "inner_wall_acceleration": "5000", - "inner_wall_jerk": "9", - "inner_wall_line_width": "0.82", - "inner_wall_speed": "150", - "interface_shells": "0", - "interlocking_beam": "0", - "interlocking_beam_layer_count": "2", - "interlocking_beam_width": "0.8", - "interlocking_boundary_avoidance": "2", - "interlocking_depth": "2", - "interlocking_orientation": "22.5", - "internal_bridge_angle": "0", - "internal_bridge_density": "100%", - "internal_bridge_flow": "1", - "internal_bridge_speed": "150%", - "internal_solid_infill_acceleration": "5000", - "internal_solid_infill_line_width": "0.82", - "internal_solid_infill_pattern": "monotonic", - "internal_solid_infill_speed": "150", - "ironing_angle": "-1", - "ironing_flow": "10%", - "ironing_inset": "0", - "ironing_pattern": "zig-zag", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "is_infill_first": "0", - "lattice_angle_1": "-45", - "lattice_angle_2": "45", - "line_width": "0.82", - "make_overhang_printable": "0", - "make_overhang_printable_angle": "55", - "make_overhang_printable_hole_size": "0", - "max_bridge_length": "10", - "max_travel_detour_distance": "0", - "max_volumetric_extrusion_rate_slope": "0", - "max_volumetric_extrusion_rate_slope_segment_length": "3", - "min_bead_width": "85%", - "min_feature_size": "25%", - "min_length_factor": "0.5", - "min_skirt_length": "0", - "min_width_top_surface": "300%", - "minimum_sparse_infill_area": "15", - "mmu_segmented_region_interlocking_depth": "0", - "mmu_segmented_region_max_width": "0", - "notes": "", - "only_one_wall_first_layer": "0", - "only_one_wall_top": "0", - "ooze_prevention": "0", - "outer_wall_acceleration": "5000", - "outer_wall_jerk": "9", - "outer_wall_line_width": "0.82", - "outer_wall_speed": "120", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "40", - "overhang_3_4_speed": "15", - "overhang_4_4_speed": "5", - "overhang_reverse": "0", - "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "5", - "post_process": [], - "precise_outer_wall": "0", - "precise_z_height": "0", - "preheat_steps": "1", - "preheat_time": "0", - "prime_tower_brim_width": "5", - "prime_tower_extra_rib_length": "0", - "prime_tower_fillet_wall": "1", - "prime_tower_flat_ironing": "0", - "prime_tower_infill_gap": "150%", - "prime_tower_max_speed": "90", - "prime_tower_rib_wall": "1", - "prime_tower_rib_width": "8", - "prime_tower_skip_points": "1", - "prime_tower_width": "30", - "prime_volume": "30", - "print_flow_ratio": "1", - "print_order": "default", - "print_sequence": "by layer", - "raft_contact_distance": "0.1", - "raft_expansion": "1.5", - "raft_first_layer_density": "90%", - "raft_first_layer_expansion": "5", - "raft_layers": "0", - "reduce_crossing_wall": "0", - "reduce_infill_retraction": "1", - "resolution": "0.012", - "role_based_wipe_speed": "1", - "rotate_solid_infill_direction": "1", - "scarf_angle_threshold": "155", - "scarf_joint_flow_ratio": "1", - "scarf_joint_speed": "30", - "scarf_overhang_threshold": "40%", - "seam_gap": "10%", - "seam_position": "aligned", - "seam_slope_conditional": "1", - "seam_slope_entire_loop": "0", - "seam_slope_inner_walls": "1", - "seam_slope_min_length": "10", - "seam_slope_start_height": "10%", - "seam_slope_steps": "10", - "seam_slope_type": "none", - "single_extruder_multi_material_priming": "0", - "single_loop_draft_shield": "0", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "skirt_speed": "50", - "skirt_start_angle": "-135", - "skirt_type": "combined", - "slice_closing_radius": "0.049", - "slicing_mode": "regular", - "slow_down_layers": "0", - "slowdown_for_curled_perimeters": "0", - "small_area_infill_flow_compensation": "0", - "small_area_infill_flow_compensation_model": [ - "0,0", - "\n0.2,0.4444", - "\n0.4,0.6145", - "\n0.6,0.7059", - "\n0.8,0.7619", - "\n1.5,0.8571", - "\n2,0.8889", - "\n3,0.9231", - "\n5,0.9520", - "\n10,1" - ], - "small_perimeter_speed": "50%", - "small_perimeter_threshold": "0", - "smooth_coefficient": "80", - "smooth_speed_discontinuity_area": "1", - "solid_infill_direction": "45", - "solid_infill_filament": "1", - "sparse_infill_acceleration": "100%", - "sparse_infill_density": "15%", - "sparse_infill_filament": "1", - "sparse_infill_line_width": "0.82", - "sparse_infill_pattern": "grid", - "sparse_infill_speed": "100", - "spiral_finishing_flow_ratio": "0", - "spiral_mode": "0", - "spiral_mode_max_xy_smoothing": "200%", - "spiral_mode_smooth": "0", - "spiral_starting_flow_ratio": "0", - "staggered_inner_seams": "0", - "standby_temperature_delta": "-5", - "support_angle": "0", - "support_base_pattern": "default", - "support_base_pattern_spacing": "2.5", - "support_bottom_interface_spacing": "0.5", - "support_bottom_z_distance": "0.2", - "support_critical_regions_only": "0", - "support_expansion": "0", - "support_filament": "0", - "support_interface_bottom_layers": "2", - "support_interface_filament": "0", - "support_interface_loop_pattern": "0", - "support_interface_not_for_body": "1", - "support_interface_pattern": "auto", - "support_interface_spacing": "0.5", - "support_interface_speed": "50", - "support_interface_top_layers": "2", - "support_line_width": "0.82", - "support_object_first_layer_gap": "0.2", - "support_object_xy_distance": "0.35", - "support_on_build_plate_only": "1", - "support_remove_small_overhang": "1", - "support_speed": "100", - "support_style": "default", - "support_threshold_angle": "30", - "support_threshold_overlap": "50%", - "support_top_z_distance": "0.25", - "support_type": "tree(auto)", - "thick_bridges": "0", - "thick_internal_bridges": "0", - "timelapse_type": "0", - "top_bottom_infill_wall_overlap": "15%", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "top_solid_infill_flow_ratio": "1", - "top_surface_acceleration": "2000", - "top_surface_jerk": "9", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonicline", - "top_surface_speed": "150", - "travel_acceleration": "10000", - "travel_jerk": "9", - "travel_speed": "300", - "travel_speed_z": "0", - "tree_support_adaptive_layer_height": "1", - "tree_support_angle_slow": "25", - "tree_support_auto_brim": "1", - "tree_support_branch_angle": "45", - "tree_support_branch_angle_organic": "40", - "tree_support_branch_diameter": "2", - "tree_support_branch_diameter_angle": "5", - "tree_support_branch_diameter_organic": "2", - "tree_support_branch_distance": "5", - "tree_support_branch_distance_organic": "1", - "tree_support_brim_width": "3", - "tree_support_tip_diameter": "0.8", - "tree_support_top_rate": "30%", - "tree_support_wall_count": "0", - "wall_direction": "auto", - "wall_distribution_count": "1", - "wall_filament": "1", - "wall_generator": "classic", - "wall_loops": "2", - "wall_sequence": "inner wall/outer wall", - "wall_transition_angle": "10", - "wall_transition_filter_deviation": "25%", - "wall_transition_length": "100%", - "wipe_before_external_loop": "0", - "wipe_on_loops": "0", - "wipe_speed": "80%", - "wipe_tower_extra_flow": "100%", - "wipe_tower_filament": "0", - "wipe_tower_no_sparse_layers": "0", - "wiping_volumes_extruders": [ - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70", - "70" - ], - "xy_contour_compensation": "0", - "xy_hole_compensation": "0" -} +{ + "type": "process", + "name": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "inherits": "fdm_process_common", + "from": "system", + "setting_id": "rOL0gJh6Y7pDsBnk", + "instantiation": "true", + "print_settings_id": "0.56mm Standard @Anycubic Kobra S1 Max 0.8 nozzle", + "layer_height": "0.56", + "compatible_printers": [ + "Anycubic Kobra S1 Max 0.8 nozzle" + ], + "accel_to_decel_enable": "1", + "accel_to_decel_factor": "50%", + "alternate_extra_wall": "0", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bottom_solid_infill_flow_ratio": "1", + "bottom_surface_pattern": "monotonic", + "bridge_acceleration": "50%", + "bridge_angle": "0", + "bridge_density": "100%", + "bridge_flow": "1", + "bridge_no_support": "0", + "bridge_speed": "30", + "brim_ears_detection_length": "1", + "brim_ears_max_angle": "125", + "brim_object_gap": "0.15", + "brim_type": "auto_brim", + "brim_width": "5", + "compatible_printers_condition": "", + "counterbore_hole_bridging": "none", + "default_acceleration": "10000", + "default_jerk": "9", + "detect_narrow_internal_solid_infill": "1", + "detect_overhang_wall": "1", + "detect_thin_wall": "1", + "dont_filter_internal_bridges": "disabled", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "elefant_foot_compensation_layers": "1", + "enable_arc_fitting": "0", + "enable_extra_bridge_layer": "disabled", + "enable_overhang_speed": "1", + "enable_prime_tower": "1", + "enable_support": "0", + "enforce_support_layers": "0", + "ensure_vertical_shell_thickness": "ensure_all", + "exclude_object": "1", + "extra_perimeters_on_overhangs": "1", + "extrusion_rate_smoothing_external_perimeter_only": "0", + "filename_format": "{timestamp}-{if plate_name==\"\" then input_filename_base+\"_plate\" else plate_name endif}{\"(\"+plate_number+\")\"}_{filament_type[initial_tool]}_{layer_height}_{print_time}.gcode", + "filter_out_gap_fill": "0", + "flush_into_infill": "0", + "flush_into_objects": "0", + "flush_into_support": "1", + "fuzzy_skin": "none", + "fuzzy_skin_first_layer": "0", + "fuzzy_skin_noise_type": "classic", + "fuzzy_skin_octaves": "4", + "fuzzy_skin_persistence": "0.5", + "fuzzy_skin_point_distance": "0.8", + "fuzzy_skin_scale": "1", + "fuzzy_skin_thickness": "0.3", + "gap_fill_target": "topbottom", + "gap_infill_speed": "100", + "gcode_add_line_number": "0", + "gcode_comments": "0", + "gcode_label_objects": "1", + "hole_to_polyhole": "0", + "hole_to_polyhole_threshold": "0.01", + "hole_to_polyhole_twisted": "1", + "independent_support_layer_height": "1", + "infill_anchor": "400%", + "infill_anchor_max": "20", + "infill_combination": "0", + "infill_combination_max_layer_height": "100%", + "infill_direction": "45", + "infill_jerk": "9", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "50", + "initial_layer_jerk": "9", + "initial_layer_line_width": "0.82", + "initial_layer_min_bead_width": "85%", + "initial_layer_print_height": "0.4", + "initial_layer_speed": "30", + "initial_layer_travel_speed": "100%", + "inner_wall_acceleration": "5000", + "inner_wall_jerk": "9", + "inner_wall_line_width": "0.82", + "inner_wall_speed": "150", + "interface_shells": "0", + "interlocking_beam": "0", + "interlocking_beam_layer_count": "2", + "interlocking_beam_width": "0.8", + "interlocking_boundary_avoidance": "2", + "interlocking_depth": "2", + "interlocking_orientation": "22.5", + "internal_bridge_angle": "0", + "internal_bridge_density": "100%", + "internal_bridge_flow": "1", + "internal_bridge_speed": "150%", + "internal_solid_infill_acceleration": "5000", + "internal_solid_infill_line_width": "0.82", + "internal_solid_infill_pattern": "monotonic", + "internal_solid_infill_speed": "150", + "ironing_angle": "-1", + "ironing_flow": "10%", + "ironing_inset": "0", + "ironing_pattern": "zig-zag", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "is_infill_first": "0", + "lattice_angle_1": "-45", + "lattice_angle_2": "45", + "line_width": "0.82", + "make_overhang_printable": "0", + "make_overhang_printable_angle": "55", + "make_overhang_printable_hole_size": "0", + "max_bridge_length": "10", + "max_travel_detour_distance": "0", + "max_volumetric_extrusion_rate_slope": "0", + "max_volumetric_extrusion_rate_slope_segment_length": "3", + "min_bead_width": "85%", + "min_feature_size": "25%", + "min_length_factor": "0.5", + "min_skirt_length": "0", + "min_width_top_surface": "300%", + "minimum_sparse_infill_area": "15", + "mmu_segmented_region_interlocking_depth": "0", + "mmu_segmented_region_max_width": "0", + "notes": "", + "only_one_wall_first_layer": "0", + "only_one_wall_top": "0", + "ooze_prevention": "0", + "outer_wall_acceleration": "5000", + "outer_wall_jerk": "9", + "outer_wall_line_width": "0.82", + "outer_wall_speed": "120", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "5", + "overhang_reverse": "0", + "overhang_reverse_internal_only": "0", + "overhang_reverse_threshold": "50%", + "post_process": [], + "precise_outer_wall": "0", + "precise_z_height": "0", + "preheat_steps": "1", + "preheat_time": "0", + "prime_tower_brim_width": "5", + "prime_tower_extra_rib_length": "0", + "prime_tower_fillet_wall": "1", + "prime_tower_flat_ironing": "0", + "prime_tower_infill_gap": "150%", + "prime_tower_max_speed": "90", + "prime_tower_rib_wall": "1", + "prime_tower_rib_width": "8", + "prime_tower_skip_points": "1", + "prime_tower_width": "30", + "prime_volume": "30", + "print_flow_ratio": "1", + "print_order": "default", + "print_sequence": "by layer", + "raft_contact_distance": "0.1", + "raft_expansion": "1.5", + "raft_first_layer_density": "90%", + "raft_first_layer_expansion": "5", + "raft_layers": "0", + "reduce_crossing_wall": "0", + "reduce_infill_retraction": "1", + "resolution": "0.012", + "role_based_wipe_speed": "1", + "rotate_solid_infill_direction": "1", + "scarf_angle_threshold": "155", + "scarf_joint_flow_ratio": "1", + "scarf_joint_speed": "30", + "scarf_overhang_threshold": "40%", + "seam_gap": "10%", + "seam_position": "aligned", + "seam_slope_conditional": "1", + "seam_slope_entire_loop": "0", + "seam_slope_inner_walls": "1", + "seam_slope_min_length": "10", + "seam_slope_start_height": "10%", + "seam_slope_steps": "10", + "seam_slope_type": "none", + "single_extruder_multi_material_priming": "0", + "single_loop_draft_shield": "0", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "skirt_speed": "50", + "skirt_start_angle": "-135", + "skirt_type": "combined", + "slice_closing_radius": "0.049", + "slicing_mode": "regular", + "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", + "small_area_infill_flow_compensation": "0", + "small_area_infill_flow_compensation_model": [ + "0,0", + "\n0.2,0.4444", + "\n0.4,0.6145", + "\n0.6,0.7059", + "\n0.8,0.7619", + "\n1.5,0.8571", + "\n2,0.8889", + "\n3,0.9231", + "\n5,0.9520", + "\n10,1" + ], + "small_perimeter_speed": "50%", + "small_perimeter_threshold": "0", + "smooth_speed_discontinuity_area": "1", + "solid_infill_direction": "45", + "solid_infill_filament": "1", + "sparse_infill_acceleration": "100%", + "sparse_infill_density": "15%", + "sparse_infill_filament": "1", + "sparse_infill_line_width": "0.82", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "100", + "spiral_finishing_flow_ratio": "0", + "spiral_mode": "0", + "spiral_mode_max_xy_smoothing": "200%", + "spiral_mode_smooth": "0", + "spiral_starting_flow_ratio": "0", + "staggered_inner_seams": "0", + "standby_temperature_delta": "-5", + "support_angle": "0", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_bottom_interface_spacing": "0.5", + "support_bottom_z_distance": "0.2", + "support_critical_regions_only": "0", + "support_expansion": "0", + "support_filament": "0", + "support_interface_bottom_layers": "2", + "support_interface_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_not_for_body": "1", + "support_interface_pattern": "auto", + "support_interface_spacing": "0.5", + "support_interface_speed": "50", + "support_interface_top_layers": "2", + "support_line_width": "0.82", + "support_object_first_layer_gap": "0.2", + "support_object_xy_distance": "0.35", + "support_on_build_plate_only": "1", + "support_remove_small_overhang": "1", + "support_speed": "100", + "support_style": "default", + "support_threshold_angle": "30", + "support_threshold_overlap": "50%", + "support_top_z_distance": "0.25", + "support_type": "tree(auto)", + "thick_bridges": "0", + "thick_internal_bridges": "0", + "timelapse_type": "0", + "top_bottom_infill_wall_overlap": "15%", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "top_solid_infill_flow_ratio": "1", + "top_surface_acceleration": "2000", + "top_surface_jerk": "9", + "top_surface_line_width": "0.82", + "top_surface_pattern": "monotonicline", + "top_surface_speed": "150", + "travel_acceleration": "10000", + "travel_jerk": "9", + "travel_speed": "300", + "travel_speed_z": "0", + "tree_support_adaptive_layer_height": "1", + "tree_support_angle_slow": "25", + "tree_support_auto_brim": "1", + "tree_support_branch_angle": "45", + "tree_support_branch_angle_organic": "40", + "tree_support_branch_diameter": "2", + "tree_support_branch_diameter_angle": "5", + "tree_support_branch_diameter_organic": "2", + "tree_support_branch_distance": "5", + "tree_support_branch_distance_organic": "1", + "tree_support_brim_width": "3", + "tree_support_tip_diameter": "0.8", + "tree_support_top_rate": "30%", + "tree_support_wall_count": "0", + "wall_direction": "auto", + "wall_distribution_count": "1", + "wall_filament": "1", + "wall_generator": "classic", + "wall_loops": "2", + "wall_sequence": "inner wall/outer wall", + "wall_transition_angle": "10", + "wall_transition_filter_deviation": "25%", + "wall_transition_length": "100%", + "wipe_before_external_loop": "0", + "wipe_on_loops": "0", + "wipe_speed": "80%", + "wipe_tower_extra_flow": "100%", + "wipe_tower_filament": "0", + "wipe_tower_no_sparse_layers": "0", + "wiping_volumes_extruders": [ + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70", + "70" + ], + "xy_contour_compensation": "0", + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Anycubic/process/fdm_process_common.json b/resources/profiles/Anycubic/process/fdm_process_common.json index 868bbc1a2e..f813b8fa7f 100644 --- a/resources/profiles/Anycubic/process/fdm_process_common.json +++ b/resources/profiles/Anycubic/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -78,7 +77,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_surface_line_width": "0.4", diff --git a/resources/profiles/Artillery.json b/resources/profiles/Artillery.json index 66a3a05247..180622cf3a 100644 --- a/resources/profiles/Artillery.json +++ b/resources/profiles/Artillery.json @@ -1,6 +1,6 @@ { "name": "Artillery", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Artillery configurations", "machine_model_list": [ diff --git a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.2 nozzle.json index e5617c4fe6..f168beb458 100644 --- a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.2 nozzle.json @@ -439,7 +439,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.4 nozzle.json index a265906570..626b3d23ab 100644 --- a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.4 nozzle.json @@ -199,7 +199,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.6 nozzle.json index 85be2e70be..c052fb721f 100644 --- a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.6 nozzle.json @@ -439,7 +439,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.8 nozzle.json index db91e5320b..1a0d950914 100644 --- a/resources/profiles/Artillery/machine/Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery M1 Pro 0.8 nozzle.json @@ -439,7 +439,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery M1 Pro.json b/resources/profiles/Artillery/machine/Artillery M1 Pro.json index b7e4c1baaa..9b1e63a89d 100644 --- a/resources/profiles/Artillery/machine/Artillery M1 Pro.json +++ b/resources/profiles/Artillery/machine/Artillery M1 Pro.json @@ -10,5 +10,5 @@ "hotend_model": "", "default_bed_type": "Textured PEI Plate", "not_support_bed_type": "Engineering Plate;Textured Cool Plate;Smooth PEI Plate", - "default_materials": "Artillery PLA Basic;Artillery ABS;Artillery ASA;Artillery PA;Artillery PA-CF;Artillery PC;Artillery PET;Artillery PETG Basic;Artillery PETG-CF;Artillery PLA Basic;Artillery PLA Matte;Artillery PLA Silk;Artillery PLA-CF;Artillery PVA;Artillery TPU;Artillery PLA" + "default_materials": "Artillery PLA Basic @Artillery M1 Pro 0.4 nozzle;Artillery ABS @Artillery M1 Pro 0.4 nozzle;Artillery ASA @Artillery M1 Pro 0.4 nozzle;Artillery PA @Artillery M1 Pro 0.4 nozzle;Artillery PA-CF @Artillery M1 Pro 0.4 nozzle;Artillery PC @Artillery M1 Pro 0.4 nozzle;Artillery PET @Artillery M1 Pro 0.4 nozzle;Artillery PETG Basic @Artillery M1 Pro 0.4 nozzle;Artillery PETG-CF @Artillery M1 Pro 0.4 nozzle;Artillery PLA Matte @Artillery M1 Pro 0.4 nozzle;Artillery PLA Silk @Artillery M1 Pro 0.4 nozzle;Artillery PLA-CF @Artillery M1 Pro 0.4 nozzle;Artillery PVA @Artillery M1 Pro 0.4 nozzle;Artillery TPU @Artillery M1 Pro 0.4 nozzle;Artillery PLA Basic @Artillery M1 Pro 0.2 nozzle;Artillery PLA Basic @Artillery M1 Pro 0.6 nozzle;Artillery PLA Basic @Artillery M1 Pro 0.8 nozzle" } diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json index 42e66ff875..98af67eaa7 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Plus 0.4 nozzle.json @@ -196,7 +196,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json index 3b12ce6ede..4a961d2113 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X3 Pro 0.4 nozzle.json @@ -196,7 +196,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json index b9013a99bf..0e2d82e209 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Plus 0.4 nozzle.json @@ -196,7 +196,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json index 4642e015a1..2102a9e857 100644 --- a/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/machine/Artillery Sidewinder X4 Pro 0.4 nozzle.json @@ -196,7 +196,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Artillery/machine/fdm_machine_common.json b/resources/profiles/Artillery/machine/fdm_machine_common.json index fcf2e2670b..e5e5341b22 100644 --- a/resources/profiles/Artillery/machine/fdm_machine_common.json +++ b/resources/profiles/Artillery/machine/fdm_machine_common.json @@ -126,7 +126,6 @@ "deretraction_speed": [ "30" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery M1 Pro 0.4 nozzle.json index a1175a96f5..a336001bbe 100644 --- a/resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.08mm Extra Fine @Artillery M1 Pro 0.4 nozzle.json @@ -137,7 +137,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.2 nozzle.json b/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.2 nozzle.json index 929fafed81..17279f7852 100644 --- a/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.2 nozzle.json +++ b/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.2 nozzle.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.4 nozzle.json index 5a53fa08fd..d2c323a468 100644 --- a/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.08mm High Quality @Artillery M1 Pro 0.4 nozzle.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.12mm Fine @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.12mm Fine @Artillery M1 Pro 0.4 nozzle.json index a7647a1f00..2f6d888558 100644 --- a/resources/profiles/Artillery/process/0.12mm Fine @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.12mm Fine @Artillery M1 Pro 0.4 nozzle.json @@ -135,7 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.12mm High Quality @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.12mm High Quality @Artillery M1 Pro 0.4 nozzle.json index b6f6ae5347..e5f12b7fb4 100644 --- a/resources/profiles/Artillery/process/0.12mm High Quality @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.12mm High Quality @Artillery M1 Pro 0.4 nozzle.json @@ -134,7 +134,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius Pro.json b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius Pro.json index 8112e2e609..6490399347 100644 --- a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius Pro.json +++ b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius Pro.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "lF4fXJjfALsU4vVF", "name": "0.15mm Optimal @Artillery Genius Pro", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "lF4fXJjfALsU4vVF", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json index 9a6cac5bec..7c54deaa45 100644 --- a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "vo47lgntuWkTLKZb", "name": "0.15mm Optimal @Artillery Genius", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "vo47lgntuWkTLKZb", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.15", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.16mm High Quality @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.16mm High Quality @Artillery M1 Pro 0.4 nozzle.json index 238359be48..b2a81b40fa 100644 --- a/resources/profiles/Artillery/process/0.16mm High Quality @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.16mm High Quality @Artillery M1 Pro 0.4 nozzle.json @@ -135,7 +135,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json index 25d53a28f7..9617aac2c8 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "XEpSP538KuWRSmGA", "name": "0.16mm Optimal @Artillery Hornet", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "XEpSP538KuWRSmGA", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery M1 Pro 0.4 nozzle.json index a31ce771ad..adacdcf7fd 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery M1 Pro 0.4 nozzle.json @@ -138,7 +138,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json index 06244e2d4a..355c6078d5 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "3bBfTCC809w3YcXr", "name": "0.16mm Optimal @Artillery X1", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "3bBfTCC809w3YcXr", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius Pro.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius Pro.json index 99516c7732..9a91eb82a4 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius Pro.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius Pro.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "CsTy51kncEm8X0yJ", "name": "0.20mm Standard @Artillery Genius Pro", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "CsTy51kncEm8X0yJ", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json index 0a36259661..6ef1ed280e 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "lzsTJzIBChXesgUG", "name": "0.20mm Standard @Artillery Genius", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "lzsTJzIBChXesgUG", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json index b8eecf1f0f..8c846f2996 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "i2UAXXKCEaBJmX5R", "name": "0.20mm Standard @Artillery Hornet", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "i2UAXXKCEaBJmX5R", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery M1 Pro 0.4 nozzle.json index 3baeec4a3b..02851bc832 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery M1 Pro 0.4 nozzle.json @@ -141,7 +141,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json index fcb3b2fea1..a32ba399ff 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "A2tF591xYPxvYPYn", "name": "0.20mm Standard @Artillery X1", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "A2tF591xYPxvYPYn", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json index 815e9b00c0..bff0dadb1a 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "Uuco1eKObqt1aypG", "name": "0.20mm Standard @Artillery X2", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "Uuco1eKObqt1aypG", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json index b13efe200b..4a18b18ad0 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Plus 0.4 nozzle.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json index 264a3e5f15..472b2cdb30 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X3Pro 0.4 nozzle.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json index 8bf69da267..0df8955ecd 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Plus 0.4 nozzle.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json index 56f172e941..3462f3c7f3 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X4Pro 0.4 nozzle.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.20mm Strength @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.20mm Strength @Artillery M1 Pro 0.4 nozzle.json index 837e4eb6a7..f74639343a 100644 --- a/resources/profiles/Artillery/process/0.20mm Strength @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.20mm Strength @Artillery M1 Pro 0.4 nozzle.json @@ -136,7 +136,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json index 33893b53df..c01ebe2271 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "vK3z8VB7eFi5wSEy", "name": "0.24mm Draft @Artillery Hornet", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "vK3z8VB7eFi5wSEy", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.4 nozzle.json index d175fb9f9d..6c3911a578 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.4 nozzle.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.6 nozzle.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.6 nozzle.json index 5f3c183e51..d6d80212ce 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.6 nozzle.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.6 nozzle.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.8 nozzle.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.8 nozzle.json index 38a240bad5..4b2d68d114 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.8 nozzle.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery M1 Pro 0.8 nozzle.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json index 6abc742265..fee39f4d0b 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "pMfIpILEXxTfa574", "name": "0.24mm Draft @Artillery X1", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "pMfIpILEXxTfa574", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius Pro.json b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius Pro.json index 500c492659..851b63d27d 100644 --- a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius Pro.json +++ b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius Pro.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "OGYrkEdpgzTfzZLw", "name": "0.25mm Draft @Artillery Genius Pro", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "OGYrkEdpgzTfzZLw", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json index f17fd83593..1489269c39 100644 --- a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "UditC85gTRgxvpSp", "name": "0.25mm Draft @Artillery Genius", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_common", - "adaptive_layer_height": "1", + "from": "system", + "setting_id": "UditC85gTRgxvpSp", + "instantiation": "true", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery M1 Pro 0.4 nozzle.json b/resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery M1 Pro 0.4 nozzle.json index 6540876295..efee8340aa 100644 --- a/resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery M1 Pro 0.4 nozzle.json +++ b/resources/profiles/Artillery/process/0.28mm Extra Draft @Artillery M1 Pro 0.4 nozzle.json @@ -136,7 +136,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Artillery/process/fdm_process_common.json b/resources/profiles/Artillery/process/fdm_process_common.json index c74a84adbb..976ff7cf68 100644 --- a/resources/profiles/Artillery/process/fdm_process_common.json +++ b/resources/profiles/Artillery/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -78,7 +77,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_surface_line_width": "0.4", diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index d7ee1e6b6c..3f655ddd22 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.01.00.25", + "version": "02.01.00.27", "force_update": "0", "description": "BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json index 6ebecc0ecf..33cf76e05b 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json @@ -11,5 +11,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N1", - "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M;Bambu PETG HF @BBL A1M" + "default_materials": "Bambu PLA Matte @BBL A1M;Bambu PLA Basic @BBL A1M;Bambu PLA Silk @BBL A1M;Bambu Support For PLA @BBL A1M;Bambu TPU 95A @BBL A1M;Generic PLA @BBL A1M;Generic PLA High Speed @BBL A1M;Bambu PLA Metal @BBL A1M;Generic PETG @BBL A1M;Bambu PLA Marble @BBL A1M;Bambu PLA-CF @BBL A1M;Bambu PETG-CF @BBL A1M;Bambu PETG HF @BBL A1M;Bambu PLA Basic @BBL A1M 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab A1.json b/resources/profiles/BBL/machine/Bambu Lab A1.json index efade2a7d2..1ce5f24296 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N2S", - "default_materials": "Bambu PLA Matte @BBL A1;Bambu PLA Basic @BBL A1;Bambu PLA Silk @BBL A1;Bambu Support For PA/PET @BBL A1;Bambu ABS @BBL A1;Bambu TPU 95A @BBL A1;Bambu PLA Tough @BBL A1;Generic PLA @BBL A1;Generic PLA High Speed @BBL A1;Generic PETG @BBL A1;Generic PVA @BBL A1;Bambu PETG HF @BBL A1" + "default_materials": "Bambu PLA Matte @BBL A1;Bambu PLA Basic @BBL A1;Bambu PLA Silk @BBL A1;Bambu Support For PA/PET @BBL A1;Bambu ABS @BBL A1;Bambu TPU 95A @BBL A1;Bambu PLA Tough @BBL A1;Generic PLA @BBL A1;Generic PLA High Speed @BBL A1;Generic PETG @BBL A1;Generic PVA @BBL A1;Bambu PETG HF @BBL A1;Bambu PLA Basic @BBL A1 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab A2L.json b/resources/profiles/BBL/machine/Bambu Lab A2L.json index b9ad344d22..62a9a0fddf 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A2L.json +++ b/resources/profiles/BBL/machine/Bambu Lab A2L.json @@ -13,5 +13,5 @@ "model_id": "N9", "not_support_bed_type": "Cool Plate", "use_double_extruder_default_texture": "true", - "default_materials": "Bambu PLA Matte @BBL A2L;Bambu PLA Basic @BBL A2L;Bambu PLA Silk @BBL A2L;Bambu Support For PLA/PETG @BBL A2L;Bambu TPU 95A @BBL A2L;Bambu PLA Tough @BBL A2L;Generic PLA @BBL A2L;Generic PLA High Speed @BBL A2L;Generic PETG @BBL A2L;Generic PVA @BBL A2L;Bambu PETG HF @BBL A2L" + "default_materials": "Bambu PLA Matte @BBL A2L 0.4 nozzle;Bambu PLA Basic @BBL A2L 0.4 nozzle;Bambu PLA Silk @BBL A2L 0.4 nozzle;Bambu Support For PLA/PETG @BBL A2L;Bambu TPU 95A @BBL A2L;Bambu PLA Tough @BBL A2L;Generic PLA @BBL A2L;Generic PLA High Speed @BBL A2L;Generic PETG @BBL A2L;Generic PVA @BBL A2L;Bambu PETG HF @BBL A2L;Bambu PLA Basic @BBL A2L 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab H2C.json b/resources/profiles/BBL/machine/Bambu Lab H2C.json index 92645a5933..b9734a34c5 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2C.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2C.json @@ -12,5 +12,5 @@ "machine_tech": "FFF", "model_id": "O1C2", "not_support_bed_type": "Cool Plate;Smooth PEI Plate / High Temp Plate", - "default_materials": "Bambu PLA Basic @BBL H2C;Bambu PLA-CF @BBL H2C;Bambu PETG Basic @BBL H2C;Bambu ABS @BBL H2C;Bambu PETG HF @BBL H2C;Bambu PLA Silk @BBL H2C;Bambu PLA Matte @BBL H2C;Bambu PC @BBL H2C;Bambu PA-CF @BBL H2C;Bambu PLA Pure @BBL H2C" + "default_materials": "Bambu PLA Basic @BBL H2C;Bambu PLA-CF @BBL H2C;Bambu PETG Basic @BBL H2C;Bambu ABS @BBL H2C;Bambu PETG HF @BBL H2C;Bambu PLA Silk @BBL H2C;Bambu PLA Matte @BBL H2C;Bambu PC @BBL H2C;Bambu PA-CF @BBL H2C;Bambu PLA Pure @BBL H2C;Bambu PLA Basic @BBL H2C 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab H2D Pro.json b/resources/profiles/BBL/machine/Bambu Lab H2D Pro.json index 8fd12972e7..d2be50fe67 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2D Pro.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2D Pro.json @@ -11,5 +11,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "O1E", - "default_materials": "Bambu PLA Basic @BBL H2DP;Bambu PLA-CF @BBL H2DP;Bambu PETG Basic @BBL H2DP;Bambu ABS @BBL H2DP;Bambu PETG HF @BBL H2DP;Bambu PLA Silk @BBL H2DP;Bambu PLA Matte @BBL H2DP;Bambu PC @BBL H2DP;Bambu PA-CF @BBL H2DP;Bambu PLA Pure @BBL H2DP" + "default_materials": "Bambu PLA Basic @BBL H2DP;Bambu PLA-CF @BBL H2DP 0.4 nozzle;Bambu PETG Basic @BBL H2DP 0.4 nozzle;Bambu ABS @BBL H2DP;Bambu PETG HF @BBL H2DP 0.4 nozzle;Bambu PLA Silk @BBL H2DP;Bambu PLA Matte @BBL H2DP;Bambu PC @BBL H2DP 0.4 nozzle;Bambu PA-CF @BBL H2DP;Bambu PLA Pure @BBL H2DP;Bambu PLA Basic @BBL H2DP 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab H2D.json b/resources/profiles/BBL/machine/Bambu Lab H2D.json index 9a277c4b7e..a264365c94 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2D.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2D.json @@ -12,5 +12,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "O1D", - "default_materials": "Bambu PLA Basic @BBL H2D;Bambu PLA-CF @BBL H2D;Bambu PETG Basic @BBL H2D;Bambu ABS @BBL H2D;Bambu PETG HF @BBL H2D;Bambu PLA Silk @BBL H2D;Bambu PLA Matte @BBL H2D;Bambu PC @BBL H2D;Bambu PA-CF @BBL H2D;Bambu PLA Pure @BBL H2D" + "default_materials": "Bambu PLA Basic @BBL H2D;Bambu PLA-CF @BBL H2D 0.4 nozzle;Bambu PETG Basic @BBL H2D 0.4 nozzle;Bambu ABS @BBL H2D;Bambu PETG HF @BBL H2D 0.4 nozzle;Bambu PLA Silk @BBL H2D;Bambu PLA Matte @BBL H2D;Bambu PC @BBL H2D 0.4 nozzle;Bambu PA-CF @BBL H2D;Bambu PLA Pure @BBL H2D;Bambu PLA Basic @BBL H2D 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab H2S.json b/resources/profiles/BBL/machine/Bambu Lab H2S.json index 11c2cde471..2ead7abc09 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2S.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2S.json @@ -14,5 +14,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "O1S", - "default_materials": "Bambu PLA Basic @BBL H2S;Bambu PLA Matte @BBL H2S;Bambu PLA Tough @BBL H2S;Bambu PLA Marble @BBL H2S;Bambu PLA Metal @BBL H2S;Bambu PLA Silk @BBL H2S;Bambu TPU 95A HF @BBL H2S;Bambu PETG Basic @BBL H2S;Bambu PLA Pure @BBL H2S" + "default_materials": "Bambu PLA Basic @BBL H2S;Bambu PLA Matte @BBL H2S;Bambu PLA Tough @BBL H2S;Bambu PLA Marble @BBL H2S;Bambu PLA Metal @BBL H2S;Bambu PLA Silk @BBL H2S;Bambu TPU 95A HF @BBL H2S;Bambu PETG Basic @BBL H2S;Bambu PLA Pure @BBL H2S;Bambu PLA Basic @BBL H2S 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P.json b/resources/profiles/BBL/machine/Bambu Lab P1P.json index c5062699d6..7365599b1c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C11", - "default_materials": "Bambu PLA Matte @BBL P1P;Bambu PLA Basic @BBL P1P;Bambu PLA-CF @BBL P1P;Bambu PETG-CF @BBL P1P;Bambu ABS @BBL P1P;Bambu PLA Silk @BBL P1P;Bambu PAHT-CF @BBL P1P;Bambu Support For PA/PET @BBL P1P;Bambu Support For PLA @BBL P1P;Generic PLA @BBL P1P;Generic PLA High Speed @BBL P1P;Generic PETG @BBL P1P;Bambu PETG HF @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL P1P;Bambu PLA Basic @BBL P1P;Bambu PLA-CF @BBL P1P;Bambu PETG-CF @BBL P1P;Bambu ABS @BBL P1P;Bambu PLA Silk @BBL P1P;Bambu PAHT-CF @BBL P1P;Bambu Support For PA/PET @BBL P1P;Bambu Support For PLA @BBL P1P;Generic PLA @BBL P1P;Generic PLA High Speed @BBL P1P;Generic PETG @BBL P1P;Bambu PETG HF @BBL X1C;Bambu PLA Basic @BBL P1P 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S.json b/resources/profiles/BBL/machine/Bambu Lab P1S.json index f5e81affe6..76d1a92839 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C12", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C;Bambu PLA Basic @BBL X1C 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab P2S.json b/resources/profiles/BBL/machine/Bambu Lab P2S.json index 19939adeff..869cb56016 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P2S.json +++ b/resources/profiles/BBL/machine/Bambu Lab P2S.json @@ -12,5 +12,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N7", - "default_materials": "Bambu PLA Matte @BBL P2S;Bambu PLA Basic @BBL P2S;Bambu PLA Silk @BBL P2S;Bambu PLA Marble @BBL P2S;Bambu PLA Sparkle @BBL P2S;Generic PLA @BBL P2S;Bambu TPU 95A @BBL P2S;Bambu ABS @BBL P2S;Bambu PC @BBL P2S 0.4 nozzle" + "default_materials": "Bambu PLA Matte @BBL P2S;Bambu PLA Basic @BBL P2S;Bambu PLA Silk @BBL P2S;Bambu PLA Marble @BBL P2S;Bambu PLA Sparkle @BBL P2S;Generic PLA @BBL P2S;Bambu TPU 95A @BBL P2S;Bambu ABS @BBL P2S;Bambu PC @BBL P2S 0.4 nozzle;Bambu PLA Basic @BBL P2S 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json index 6a504195c7..a3a89c14de 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P001", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu TPU 95A @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Bambu PETG HF @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu TPU 95A @BBL X1C;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Bambu PETG HF @BBL X1C;Bambu PLA Basic @BBL X1C 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1.json b/resources/profiles/BBL/machine/Bambu Lab X1.json index 843ddcf3a7..23a90ded95 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P002", - "default_materials": "Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1C;Bambu PLA Silk @BBL X1;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PLA;Generic PLA High Speed @BBL X1C;Generic PETG;Bambu PETG HF @BBL X1C;Bambu PLA Basic @BBL X1C 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X1E.json b/resources/profiles/BBL/machine/Bambu Lab X1E.json index d0c5f3660c..0c4d6faf76 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1E.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1E.json @@ -9,5 +9,5 @@ "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C13", - "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1E;Bambu ASA @BBL X1E;Bambu PC @BBL X1E;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PPA-CF @BBL X1E;Generic PPS @BBL X1E;Generic PPS-CF @BBL X1E;Bambu PETG HF @BBL X1C" + "default_materials": "Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu PLA-CF @BBL X1C;Bambu PETG-CF @BBL X1C;Bambu ABS @BBL X1E;Bambu ASA @BBL X1E;Bambu PC @BBL X1E;Bambu PAHT-CF @BBL X1C;Bambu Support For PLA @BBL X1C;Bambu Support For PA/PET @BBL X1C;Generic PPA-CF @BBL X1E;Generic PPS @BBL X1E;Generic PPS-CF @BBL X1E;Bambu PETG HF @BBL X1C;Bambu PLA Basic @BBL X1C 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/Bambu Lab X2D.json b/resources/profiles/BBL/machine/Bambu Lab X2D.json index df2ca2c45b..95e65f3b1e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X2D.json +++ b/resources/profiles/BBL/machine/Bambu Lab X2D.json @@ -14,5 +14,5 @@ "machine_tech": "FFF", "model_id": "N6", "not_support_bed_type": "Cool Plate", - "default_materials": "Bambu PLA Matte @BBL X2D;Bambu PLA Matte @BBL X2D 0.4 nozzle;Bambu PLA Basic @BBL X2D;Bambu PLA Basic @BBL X2D 0.4 nozzle;Bambu TPU 95A @BBL X2D;Bambu TPU 95A @BBL X2D 0.4 nozzle;Generic TPU @BBL X2D;Generic TPU @BBL X2D 0.4 nozzle;Bambu PETG Basic @BBL X2D;Bambu PETG Basic @BBL X2D 0.4 nozzle;Bambu PETG HF @BBL X2D;Bambu PETG HF @BBL X2D 0.4 nozzle;Bambu ABS @BBL X2D;Bambu ABS @BBL X2D 0.4 nozzle;Bambu PC @BBL X2D;Bambu PC @BBL X2D 0.4 nozzle" + "default_materials": "Bambu PLA Matte @BBL X2D;Bambu PLA Matte @BBL X2D 0.4 nozzle;Bambu PLA Basic @BBL X2D;Bambu PLA Basic @BBL X2D 0.4 nozzle;Bambu TPU 95A @BBL X2D;Bambu TPU 95A @BBL X2D 0.4 nozzle;Generic TPU @BBL X2D;Generic TPU @BBL X2D 0.4 nozzle;Bambu PETG Basic @BBL X2D;Bambu PETG Basic @BBL X2D 0.4 nozzle;Bambu PETG HF @BBL X2D;Bambu PETG HF @BBL X2D 0.4 nozzle;Bambu ABS @BBL X2D;Bambu ABS @BBL X2D 0.4 nozzle;Bambu PC @BBL X2D;Bambu PC @BBL X2D 0.4 nozzle;Bambu PLA Basic @BBL X2D 0.2 nozzle" } diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index f793f3bc1d..b10072a284 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -137,7 +137,6 @@ ], "scan_first_layer": "0", "enable_power_loss_recovery": "printer_configuration", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_cooling_filter": "0", diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json index 7a2803376a..7eae54fd49 100644 --- a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json index 49cc379d96..9ccca5434e 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json index 946d06033d..80edd032c6 100644 --- a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -92,7 +88,6 @@ "Direct Drive High Flow" ], "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json index 904a4c36b3..b1bfc9052a 100644 --- a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json index fb11c1a4bf..0c9ed0c2d3 100644 --- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json index 4894472048..60ba1abfa7 100644 --- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "450", "450" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L 0.2 nozzle.json index 18c97c02a0..c87e2d5d0e 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L 0.2 nozzle.json @@ -33,7 +33,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "travel_acceleration": [ "8000" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L.json index 1c1c67efdd..1d1eb841da 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A2L.json @@ -48,7 +48,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "sparse_infill_speed": [ "150" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S 0.2 nozzle.json index a7b0dd5cdf..521f97aad2 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S 0.2 nozzle.json @@ -124,10 +124,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -144,7 +140,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S.json index 74424205a8..d30d85cdc6 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL H2S.json @@ -120,10 +120,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -140,7 +136,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json index 6dffdd807a..1d72dc8bc2 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json index 6449810abc..ab50f11c4d 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S 0.2 nozzle.json index ef8582cf08..fba6cdf18b 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S 0.2 nozzle.json @@ -80,10 +80,6 @@ "20", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -94,7 +90,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "sparse_infill_speed": [ "100", diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S.json index 33bcdcb417..89bca9df5b 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P2S.json @@ -79,10 +79,6 @@ "20", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "150", "150" ], - "smooth_coefficient": "1", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json index 2d4a5a4aa9..9ecb07315c 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -92,7 +88,6 @@ "Direct Drive High Flow" ], "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json index d43fa0b542..46391c740a 100644 --- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -95,7 +91,6 @@ "150", "150" ], - "smooth_coefficient": "150", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json index 1ac71a0e27..748fa47e60 100644 --- a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json index e63c318451..de2043ca5f 100644 --- a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json index 9e79020dde..88b2bc08df 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json index dda11fcea8..5dcdb588f1 100644 --- a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -92,7 +88,6 @@ "Direct Drive High Flow" ], "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL A2L 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL A2L 0.2 nozzle.json index 3eeeae65e0..c122c78e09 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL A2L 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL A2L 0.2 nozzle.json @@ -30,9 +30,6 @@ "overhang_4_4_speed": [ "35" ], - "overhang_totally_speed": [ - "25" - ], "prime_tower_brim_width": "-1", "slowdown_end_acc": [ "1000" @@ -40,7 +37,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "support_line_width": "0.4", "travel_acceleration": [ "8000" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL H2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL H2S 0.2 nozzle.json index 594822c2fa..698c0ba106 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL H2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL H2S 0.2 nozzle.json @@ -79,10 +79,6 @@ "100", "100" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_flat_ironing": "1", "prime_tower_width": "60", "print_extruder_id": [ @@ -117,7 +113,6 @@ "80", "80" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json index 9d65e320a6..8c7c9415a1 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P2S 0.2 nozzle.json index 8d545a01f4..51fcbc71d4 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL P2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P2S 0.2 nozzle.json @@ -80,10 +80,6 @@ "20", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -92,7 +88,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json index e1078c5844..5145c45b42 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json index e1fbd88049..3fd94d41ca 100644 --- a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL A2L 0.2 nozzle.json @@ -27,7 +27,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL H2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL H2S 0.2 nozzle.json index 62b5351a18..f35eccf500 100644 --- a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL H2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL H2S 0.2 nozzle.json @@ -123,10 +123,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -143,7 +139,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL P2S 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL P2S 0.2 nozzle.json index e1b48ac5b8..f7a7639857 100644 --- a/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL P2S 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Balanced Quality @BBL P2S 0.2 nozzle.json @@ -79,10 +79,6 @@ "20", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -93,7 +89,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json index 1a99892c5f..83afb88fd8 100644 --- a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json index ee9683d868..96047bf831 100644 --- a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json index 24ff340202..1758049a79 100644 --- a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "430", "430" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A2L.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A2L.json index dd64b185c9..9b7a3a9504 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A2L.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A2L.json @@ -48,7 +48,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "sparse_infill_speed": [ "180" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL H2S.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL H2S.json index eadb61d48f..99aa118b84 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL H2S.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL H2S.json @@ -120,10 +120,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -140,7 +136,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json index ea4c5fc5a0..6cdae36ed1 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P2S.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P2S.json index d1464e4305..6f86d4824b 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL P2S.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P2S.json @@ -79,10 +79,6 @@ "20", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "180", "180" ], - "smooth_coefficient": "1", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json index d7784db216..94f8634116 100644 --- a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -95,7 +91,6 @@ "180", "180" ], - "smooth_coefficient": "150", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json index d3640ed715..b0186048dd 100644 --- a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json index 218a787534..437f17bf44 100644 --- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json index 54ed08993e..8e36589ccd 100644 --- a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A2L.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A2L.json index 9b6218b86c..5c75e20bdd 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A2L.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A2L.json @@ -48,7 +48,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "sparse_infill_speed": [ "200" diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL H2S.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL H2S.json index 890ce852c5..903eb3749d 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL H2S.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL H2S.json @@ -120,10 +120,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -140,7 +136,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json index 38b6bb521b..b7b7d2bd55 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P2S.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P2S.json index e8c99baf95..65e4674832 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL P2S.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P2S.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -99,7 +95,6 @@ "200", "200" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json index 4906acb367..0e281022a3 100644 --- a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -95,7 +91,6 @@ "200", "200" ], - "smooth_coefficient": "150", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json index d9b1741a52..4f536ba2cf 100644 --- a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json index 6d73a50989..867d939dce 100644 --- a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "330", "330" diff --git a/resources/profiles/BBL/process/0.16mm Standard @BBL A2L.json b/resources/profiles/BBL/process/0.16mm Standard @BBL A2L.json index cfe8b823aa..b3eef2ee33 100644 --- a/resources/profiles/BBL/process/0.16mm Standard @BBL A2L.json +++ b/resources/profiles/BBL/process/0.16mm Standard @BBL A2L.json @@ -33,7 +33,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.16mm Standard @BBL H2S.json b/resources/profiles/BBL/process/0.16mm Standard @BBL H2S.json index 34db04a866..ec829b7ee4 100644 --- a/resources/profiles/BBL/process/0.16mm Standard @BBL H2S.json +++ b/resources/profiles/BBL/process/0.16mm Standard @BBL H2S.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -129,7 +125,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.16mm Standard @BBL P2S.json b/resources/profiles/BBL/process/0.16mm Standard @BBL P2S.json index 3936f388e6..ba295d7a52 100644 --- a/resources/profiles/BBL/process/0.16mm Standard @BBL P2S.json +++ b/resources/profiles/BBL/process/0.16mm Standard @BBL P2S.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json index 2a76dd472d..8995eeb48f 100644 --- a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL A2L 0.6 nozzle.json @@ -21,7 +21,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL H2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL H2S 0.6 nozzle.json index afb20240c5..c0061a0b41 100644 --- a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL H2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL H2S 0.6 nozzle.json @@ -124,10 +124,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -144,7 +140,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL P2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL P2S 0.6 nozzle.json index 1357450ea1..74dccd56d7 100644 --- a/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL P2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Balanced Quality @BBL P2S 0.6 nozzle.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json index f763af69b5..9598dfcfea 100644 --- a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json index 2d4396b050..b865adf071 100644 --- a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.20mm High Quality @BBL A2L.json b/resources/profiles/BBL/process/0.20mm High Quality @BBL A2L.json index 86e4fdd103..d7c3d6468d 100644 --- a/resources/profiles/BBL/process/0.20mm High Quality @BBL A2L.json +++ b/resources/profiles/BBL/process/0.20mm High Quality @BBL A2L.json @@ -53,7 +53,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "sparse_infill_density": "25%", "sparse_infill_speed": [ "200" diff --git a/resources/profiles/BBL/process/0.20mm High Quality @BBL H2S.json b/resources/profiles/BBL/process/0.20mm High Quality @BBL H2S.json index 6c26a52279..0e6064052d 100644 --- a/resources/profiles/BBL/process/0.20mm High Quality @BBL H2S.json +++ b/resources/profiles/BBL/process/0.20mm High Quality @BBL H2S.json @@ -119,10 +119,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -139,7 +135,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.20mm High Quality @BBL P2S.json b/resources/profiles/BBL/process/0.20mm High Quality @BBL P2S.json index fc29792372..d6170c2c44 100644 --- a/resources/profiles/BBL/process/0.20mm High Quality @BBL P2S.json +++ b/resources/profiles/BBL/process/0.20mm High Quality @BBL P2S.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "200", "200" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "slowdown_start_height": [ "0", diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL A2L.json b/resources/profiles/BBL/process/0.20mm Standard @BBL A2L.json index b26ff6f9e6..9eee3748dc 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL A2L.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL A2L.json @@ -33,7 +33,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL H2S.json b/resources/profiles/BBL/process/0.20mm Standard @BBL H2S.json index ea157f757c..d807f16450 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL H2S.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL H2S.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_flat_ironing": "1", "prime_tower_width": "60", "print_extruder_id": [ @@ -92,7 +88,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "350", "600" diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json index c3fec1fa83..2d96c4fc4d 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL P2S.json b/resources/profiles/BBL/process/0.20mm Standard @BBL P2S.json index 2c4de0d7bc..b1696e1fa5 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL P2S.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL P2S.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -92,7 +88,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "270", "600" diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json index 57646a32c1..c5528cf17a 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "270", "270" diff --git a/resources/profiles/BBL/process/0.20mm Steady @BBL A2L.json b/resources/profiles/BBL/process/0.20mm Steady @BBL A2L.json index d41f51faf1..cee984c300 100644 --- a/resources/profiles/BBL/process/0.20mm Steady @BBL A2L.json +++ b/resources/profiles/BBL/process/0.20mm Steady @BBL A2L.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "print_extruder_id": [ "1", @@ -125,7 +121,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json index 9008bd79e2..932890cad3 100644 --- a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json index dcb64e1ec5..3cb1ff5984 100644 --- a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_density": "25%", "skeleton_infill_density": "25%", "skin_infill_density": "25%", diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json index 74c9994732..fe0d6589ac 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.6 nozzle.json @@ -21,7 +21,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json index 83900ad084..d776a52d25 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL A2L 0.8 nozzle.json @@ -21,7 +21,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.6 nozzle.json index 0cdc5bb25e..373149f7ee 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.6 nozzle.json @@ -124,10 +124,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -144,7 +140,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.8 nozzle.json index 098cce840c..f9b4a1ab8d 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL H2S 0.8 nozzle.json @@ -124,10 +124,6 @@ "50", "50" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -144,7 +140,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.6 nozzle.json index 7b7f633040..6ec3215684 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.6 nozzle.json @@ -80,10 +80,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.8 nozzle.json index 4a303b27d9..1a925b86c3 100644 --- a/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Balanced Quality @BBL P2S 0.8 nozzle.json @@ -80,10 +80,6 @@ "50", "50" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json index 6d716dfdbf..f59e06d60b 100644 --- a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json index 17cd1d829c..5a32b21d55 100644 --- a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "230", "230" diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json index 963d8945ad..dc80b360fa 100644 --- a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json index 5cae9a0bf0..a8eb1b516b 100644 --- a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL A2L.json b/resources/profiles/BBL/process/0.24mm Standard @BBL A2L.json index f99e4ec24f..920c0743fd 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL A2L.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL A2L.json @@ -33,7 +33,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL H2S.json b/resources/profiles/BBL/process/0.24mm Standard @BBL H2S.json index 1807668e08..11717ad604 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL H2S.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL H2S.json @@ -118,10 +118,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -138,7 +134,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL P2S.json b/resources/profiles/BBL/process/0.24mm Standard @BBL P2S.json index a6dae0a6dd..b0655b0f55 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL P2S.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL P2S.json @@ -79,10 +79,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -97,7 +93,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json index 2cf71d9ad9..7b3f2d2293 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json index 1a639b0ad3..9f3bd73c59 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json index ca4b6a55c1..92fadb9054 100644 --- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json index d3560f7224..255d2a806a 100644 --- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json @@ -78,10 +78,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -90,7 +86,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "200", "200" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL A2L 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL A2L 0.6 nozzle.json index 4fa0523bb4..800dad889c 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL A2L 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL A2L 0.6 nozzle.json @@ -30,7 +30,6 @@ "slowdown_start_speed": [ "500" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL H2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL H2S 0.6 nozzle.json index c3f1962e55..1e4493c397 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL H2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL H2S 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "500" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_flat_ironing": "1", "prime_tower_width": "60", "print_extruder_id": [ @@ -141,7 +137,6 @@ "80", "80" ], - "smooth_coefficient": "4", "travel_speed": [ "1000", "1000" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json index b8993d012d..66a2c3a007 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL P2S 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL P2S 0.6 nozzle.json index 9f4c86e17a..b10573aa5e 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL P2S 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL P2S 0.6 nozzle.json @@ -81,10 +81,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -93,7 +89,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "270", "600" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json index a960492fdc..f4f72db014 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json index a76b7f9bd5..7b04010bf2 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json index fb8c7de72b..4394c363d0 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json index ab0e52733c..99b2f43361 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -94,7 +90,6 @@ "sparse_infill_density": "25%", "skeleton_infill_density": "25%", "skin_infill_density": "25%", - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json index 20b865e2cd..1e60033ace 100644 --- a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL A2L 0.8 nozzle.json @@ -21,7 +21,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL H2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL H2S 0.8 nozzle.json index c7c44a1b1f..cd60ebe8af 100644 --- a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL H2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL H2S 0.8 nozzle.json @@ -124,10 +124,6 @@ "50", "50" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -144,7 +140,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%" diff --git a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL P2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL P2S 0.8 nozzle.json index ffa69df36b..f0049b42e3 100644 --- a/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL P2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Balanced Quality @BBL P2S 0.8 nozzle.json @@ -80,10 +80,6 @@ "50", "50" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_brim_width": "-1", "prime_tower_width": "60", "print_extruder_id": [ @@ -98,7 +94,6 @@ "270", "270" ], - "smooth_coefficient": "4", "slowdown_start_height": [ "0", "0" diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json index 84d042d8b0..8100421664 100644 --- a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json index b8f052e179..304b99974a 100644 --- a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json index 6a34e7b93b..a36c99978a 100644 --- a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json index bdae37307f..9103a177a7 100644 --- a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL A2L 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL A2L 0.8 nozzle.json index c0af67dba9..74c452d588 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL A2L 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL A2L 0.8 nozzle.json @@ -21,7 +21,6 @@ "slowdown_end_height": [ "225" ], - "smooth_coefficient": "4", "travel_acceleration": [ "8000" ], diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL H2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL H2S 0.8 nozzle.json index 2c4d4b26e5..9f8035e903 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL H2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL H2S 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "500" ], - "overhang_totally_speed": [ - "10", - "10" - ], "prime_tower_flat_ironing": "1", "prime_tower_width": "60", "print_extruder_id": [ @@ -141,7 +137,6 @@ "80", "80" ], - "smooth_coefficient": "4", "travel_speed": [ "1000", "1000" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json index 74ab7c414e..b6596c47d5 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL P2S 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL P2S 0.8 nozzle.json index e1fe009797..eee70ed075 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL P2S 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL P2S 0.8 nozzle.json @@ -81,10 +81,6 @@ "50", "50" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -93,7 +89,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "270", "600" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json index ce865a363b..dabf9e5308 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json index 8777997db3..f15e9e7a91 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json index 54d9bb8666..e4a31d3d12 100644 --- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json index f136450576..ebc423cf93 100644 --- a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json index 31ede55d0c..cf788c3832 100644 --- a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json index 62122ff25d..12de9a8108 100644 --- a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json index e98fa844d7..1b4d5ee0c3 100644 --- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" diff --git a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json index 255af5a125..2745935c6c 100644 --- a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json @@ -79,10 +79,6 @@ "120", "120" ], - "overhang_totally_speed": [ - "10", - "10" - ], "print_extruder_id": [ "1", "1" @@ -91,7 +87,6 @@ "Direct Drive Standard", "Direct Drive High Flow" ], - "smooth_coefficient": "150", "sparse_infill_speed": [ "100", "100" diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index 6f715882cc..5af292b424 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "bottom_shell_layers": "3", "bottom_color_penetration_layers": "3", "bottom_shell_thickness": "0", @@ -47,7 +46,6 @@ "40" ], "interface_shells": "0", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": [ "40" @@ -77,9 +75,6 @@ "outer_wall_speed": [ "120" ], - "overhang_totally_speed": [ - "10" - ], "override_filament_scarf_seam_setting": "0", "pre_start_fan_time": [ "0" @@ -105,7 +100,6 @@ "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", - "smooth_coefficient": "80", "sparse_infill_density": "15%", "skeleton_infill_density": "15%", "skin_infill_density": "15%", diff --git a/resources/profiles/BBL/process/fdm_process_dual_common.json b/resources/profiles/BBL/process/fdm_process_dual_common.json index 95a58bfb78..b247f2ffb1 100644 --- a/resources/profiles/BBL/process/fdm_process_dual_common.json +++ b/resources/profiles/BBL/process/fdm_process_dual_common.json @@ -113,12 +113,6 @@ "10", "10" ], - "overhang_totally_speed": [ - "10", - "10", - "10", - "10" - ], "print_extruder_id": [ "1", "1", @@ -180,7 +174,6 @@ "0", "0" ], - "smooth_coefficient": "4", "sparse_infill_acceleration": [ "100%", "100%", diff --git a/resources/profiles/BIQU.json b/resources/profiles/BIQU.json index 6c28578e82..2dd4115290 100644 --- a/resources/profiles/BIQU.json +++ b/resources/profiles/BIQU.json @@ -1,6 +1,6 @@ { "name": "BIQU", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "BIQU configurations", "machine_model_list": [ diff --git a/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json index cc0e00d7e0..93ad734a32 100644 --- a/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json +++ b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json @@ -134,7 +134,6 @@ "40" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE\n", diff --git a/resources/profiles/BIQU/machine/fdm_biqu_common.json b/resources/profiles/BIQU/machine/fdm_biqu_common.json index 45c676c60b..8adf13d5f9 100644 --- a/resources/profiles/BIQU/machine/fdm_biqu_common.json +++ b/resources/profiles/BIQU/machine/fdm_biqu_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/BIQU/machine/fdm_klipper_common.json b/resources/profiles/BIQU/machine/fdm_klipper_common.json index ad76cd3c5b..5ec9283827 100644 --- a/resources/profiles/BIQU/machine/fdm_klipper_common.json +++ b/resources/profiles/BIQU/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "40" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE\n", diff --git a/resources/profiles/BIQU/machine/fdm_machine_common.json b/resources/profiles/BIQU/machine/fdm_machine_common.json index 22ba444121..5355d94467 100644 --- a/resources/profiles/BIQU/machine/fdm_machine_common.json +++ b/resources/profiles/BIQU/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" diff --git a/resources/profiles/BIQU/process/fdm_process_biqu_common.json b/resources/profiles/BIQU/process/fdm_process_biqu_common.json index 901b90ae08..b2aebda8a5 100644 --- a/resources/profiles/BIQU/process/fdm_process_biqu_common.json +++ b/resources/profiles/BIQU/process/fdm_process_biqu_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/BIQU/process/fdm_process_common.json b/resources/profiles/BIQU/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/BIQU/process/fdm_process_common.json +++ b/resources/profiles/BIQU/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json index a5e106f0ed..fcd275537c 100644 --- a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json +++ b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_biqu_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Blocks.json b/resources/profiles/Blocks.json index f8243c252d..f24bcb81da 100644 --- a/resources/profiles/Blocks.json +++ b/resources/profiles/Blocks.json @@ -1,6 +1,6 @@ { "name": "Blocks", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "Blocks configurations", "machine_model_list": [ diff --git a/resources/profiles/Blocks/machine/fdm_klipper_common.json b/resources/profiles/Blocks/machine/fdm_klipper_common.json index 1756ac178a..5372b42547 100644 --- a/resources/profiles/Blocks/machine/fdm_klipper_common.json +++ b/resources/profiles/Blocks/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "35" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "CHANGE_FILAMENT", "machine_pause_gcode": "PAUSE", diff --git a/resources/profiles/Blocks/machine/fdm_machine_common.json b/resources/profiles/Blocks/machine/fdm_machine_common.json index 27cde99c12..e250ba2e3c 100644 --- a/resources/profiles/Blocks/machine/fdm_machine_common.json +++ b/resources/profiles/Blocks/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Blocks/process/0.12mm Fine 0.4 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.12mm Fine 0.4 nozzle @Blocks_RF50.json index 86f9cb5adb..315256dcab 100644 --- a/resources/profiles/Blocks/process/0.12mm Fine 0.4 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.12mm Fine 0.4 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json index ae773410b3..ca6facb720 100644 --- a/resources/profiles/Blocks/process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.20mm Optimal 0.6 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.20mm Optimal 0.6 nozzle @Blocks_RF50.json index 7c02d847bc..b80b051a71 100644 --- a/resources/profiles/Blocks/process/0.20mm Optimal 0.6 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.20mm Optimal 0.6 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json index 32beb61fe9..5c88e00c2a 100644 --- a/resources/profiles/Blocks/process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json @@ -41,7 +41,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.24mm Draft 0.4 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.24mm Draft 0.4 nozzle @Blocks_RF50.json index d9d6895c3d..edb1bfcc2d 100644 --- a/resources/profiles/Blocks/process/0.24mm Draft 0.4 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.24mm Draft 0.4 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json index 6744554909..d2f853b638 100644 --- a/resources/profiles/Blocks/process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json index 0b3b324664..dd6b60d371 100644 --- a/resources/profiles/Blocks/process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json @@ -38,7 +38,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.30mm Optimal 0.8 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.30mm Optimal 0.8 nozzle @Blocks_RF50.json index 704d355221..9d909c1dd4 100644 --- a/resources/profiles/Blocks/process/0.30mm Optimal 0.8 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.30mm Optimal 0.8 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.32mm Draft 0.6 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.32mm Draft 0.6 nozzle @Blocks_RF50.json index 05c4c06e22..60c6eae19e 100644 --- a/resources/profiles/Blocks/process/0.32mm Draft 0.6 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.32mm Draft 0.6 nozzle @Blocks_RF50.json @@ -38,7 +38,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json index 18d38c7c34..f28a975208 100644 --- a/resources/profiles/Blocks/process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json index b4359ae990..7b94febc1c 100644 --- a/resources/profiles/Blocks/process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json @@ -38,7 +38,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json index 6e286f3309..d49633e89d 100644 --- a/resources/profiles/Blocks/process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json @@ -38,7 +38,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json b/resources/profiles/Blocks/process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json index e0d5a486de..a0e9121ceb 100644 --- a/resources/profiles/Blocks/process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json +++ b/resources/profiles/Blocks/process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json @@ -37,7 +37,6 @@ "support_speed": "300", "detect_overhang_wall": "1", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "0", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", diff --git a/resources/profiles/Blocks/process/fdm_process_blocks_common.json b/resources/profiles/Blocks/process/fdm_process_blocks_common.json index 2e9e81b262..4eac1c83d7 100644 --- a/resources/profiles/Blocks/process/fdm_process_blocks_common.json +++ b/resources/profiles/Blocks/process/fdm_process_blocks_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Blocks/process/fdm_process_common 0.6 nozzle.json b/resources/profiles/Blocks/process/fdm_process_common 0.6 nozzle.json index 51ecf6c306..ef7dcc12bf 100644 --- a/resources/profiles/Blocks/process/fdm_process_common 0.6 nozzle.json +++ b/resources/profiles/Blocks/process/fdm_process_common 0.6 nozzle.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_blocks_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "brim_width": "5", diff --git a/resources/profiles/Blocks/process/fdm_process_common 0.8 nozzle.json b/resources/profiles/Blocks/process/fdm_process_common 0.8 nozzle.json index 10089234ee..6a32e4abb4 100644 --- a/resources/profiles/Blocks/process/fdm_process_common 0.8 nozzle.json +++ b/resources/profiles/Blocks/process/fdm_process_common 0.8 nozzle.json @@ -18,7 +18,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "brim_width": "5", diff --git a/resources/profiles/Blocks/process/fdm_process_common 1.0 nozzle.json b/resources/profiles/Blocks/process/fdm_process_common 1.0 nozzle.json index c1e7f74673..a09804b95d 100644 --- a/resources/profiles/Blocks/process/fdm_process_common 1.0 nozzle.json +++ b/resources/profiles/Blocks/process/fdm_process_common 1.0 nozzle.json @@ -14,7 +14,6 @@ "internal_solid_infill_line_width": "1.02", "support_line_width": "1.02", "top_surface_line_width": "1.02", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "brim_width": "5", diff --git a/resources/profiles/Blocks/process/fdm_process_common 1.2 nozzle.json b/resources/profiles/Blocks/process/fdm_process_common 1.2 nozzle.json index 292d413e96..4764a600fd 100644 --- a/resources/profiles/Blocks/process/fdm_process_common 1.2 nozzle.json +++ b/resources/profiles/Blocks/process/fdm_process_common 1.2 nozzle.json @@ -14,7 +14,6 @@ "internal_solid_infill_line_width": "1.22", "support_line_width": "1.22", "top_surface_line_width": "1.22", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "brim_width": "5", diff --git a/resources/profiles/Blocks/process/fdm_process_common.json b/resources/profiles/Blocks/process/fdm_process_common.json index e6614cb911..2caa139d1f 100644 --- a/resources/profiles/Blocks/process/fdm_process_common.json +++ b/resources/profiles/Blocks/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/CONSTRUCT3D.json b/resources/profiles/CONSTRUCT3D.json index efc7c78972..55845903b0 100644 --- a/resources/profiles/CONSTRUCT3D.json +++ b/resources/profiles/CONSTRUCT3D.json @@ -1,6 +1,6 @@ { "name": "CONSTRUCT3D", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Construct3D configurations", "machine_model_list": [ diff --git a/resources/profiles/CONSTRUCT3D/machine/fdm_machine_common.json b/resources/profiles/CONSTRUCT3D/machine/fdm_machine_common.json index 7459504984..ff5aca073b 100644 --- a/resources/profiles/CONSTRUCT3D/machine/fdm_machine_common.json +++ b/resources/profiles/CONSTRUCT3D/machine/fdm_machine_common.json @@ -22,7 +22,6 @@ "printhost_port": "", "printhost_ssl_ignore_revoke": "0", "printhost_user": "", - "silent_mode": "0", "machine_max_acceleration_e": [ "8000" ], @@ -121,7 +120,6 @@ "thumbnails": [ "160x160" ], - "z_lift_type": "Auto Lift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", diff --git a/resources/profiles/CONSTRUCT3D/process/fdm_process_common.json b/resources/profiles/CONSTRUCT3D/process/fdm_process_common.json index baaf57a50b..1378aca57f 100644 --- a/resources/profiles/CONSTRUCT3D/process/fdm_process_common.json +++ b/resources/profiles/CONSTRUCT3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -81,7 +80,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Chuanying.json b/resources/profiles/Chuanying.json index 9ce88c574c..5434e13bb8 100644 --- a/resources/profiles/Chuanying.json +++ b/resources/profiles/Chuanying.json @@ -1,7 +1,7 @@ { "name": "Chuanying", "url": "", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Chuanying configurations", "machine_model_list": [ diff --git a/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json index f5cc9c8419..3196464cc2 100644 --- a/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic ASA @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ASA @Chuanying", - "inherits": "fdm_filament_asa", "renamed_from": "Chuanying Generic ASA", + "inherits": "fdm_filament_asa", "from": "system", "setting_id": "39OBrSE3RugtTPPR", "filament_id": "OFLPAxz3", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "0" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json b/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json index 4d8edd7298..25910a1f55 100644 --- a/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic HIPS @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic HIPS @Chuanying", - "inherits": "Generic ABS @Chuanying", "renamed_from": "Chuanying Generic HIPS", + "inherits": "Generic ABS @Chuanying", "from": "system", "setting_id": "TV3UktlnP0aTLsOZ", "filament_id": "OFsFon5l", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "HIPS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json index 8b0529814e..c209ab1022 100644 --- a/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic HS PLA @Chuanying.json @@ -1,15 +1,12 @@ { "type": "filament", "name": "Generic HS PLA @Chuanying", - "inherits": "fdm_filament_pla", "renamed_from": "Chuanying Generic HS PLA", + "inherits": "fdm_filament_pla", "from": "system", "setting_id": "uw7SQpFnhFiO8i1N", "filament_id": "OFvxghTE", "instantiation": "true", - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -84,9 +81,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -159,9 +153,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json b/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json index 85d42dad84..e8c812c7d5 100644 --- a/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic PETG-CF10 @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG-CF10 @Chuanying", - "inherits": "fdm_filament_pet", "renamed_from": "Chuanying Generic PETG-CF10", + "inherits": "fdm_filament_pet", "from": "system", "setting_id": "Pr70SnbXDjOF9EvU", "filament_id": "OFO5djrM", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json b/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json index c76c4de977..46be8ddf90 100644 --- a/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic PLA-CF10 @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA-CF10 @Chuanying", - "inherits": "fdm_filament_pla", "renamed_from": "Chuanying Generic PLA-CF10", + "inherits": "fdm_filament_pla", "from": "system", "setting_id": "I4FjaXNkWl8Mr4ie", "filament_id": "OFX2zcrM", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -87,9 +84,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -162,9 +156,6 @@ "filament_type": [ "PLA-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json b/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json index a38af95d65..0c6abd3c0f 100644 --- a/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic PVA @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PVA @Chuanying", - "inherits": "Generic PLA @Chuanying", "renamed_from": "Chuanying Generic PVA", + "inherits": "Generic PLA @Chuanying", "from": "system", "setting_id": "UTutnObeQqlZxe0B", "filament_id": "OFDvXujf", @@ -96,9 +96,6 @@ "filament_is_support": [ "1" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "PVA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json b/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json index 9bea6c388d..b9a325ce8c 100644 --- a/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json +++ b/resources/profiles/Chuanying/filament/Generic TPU @Chuanying.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic TPU @Chuanying", - "inherits": "fdm_filament_tpu", "renamed_from": "Chuanying Generic TPU", + "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "gYsq1HqkgyfmVpvz", "filament_id": "OFgbpcy9", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Chuanying/machine/Chuanying X1.json b/resources/profiles/Chuanying/machine/Chuanying X1.json index 9e9c3f015d..c62df68589 100644 --- a/resources/profiles/Chuanying/machine/Chuanying X1.json +++ b/resources/profiles/Chuanying/machine/Chuanying X1.json @@ -8,5 +8,5 @@ "bed_model": "chuanying_x1_buildplate_model.STL", "bed_texture": "chuanying_x1_buildplate_texture.svg", "hotend_model": "chuanying_x1_hotend.STL", - "default_materials": "Generic PETG @Chuanying;Generic PLA @Chuanying" + "default_materials": "Generic PETG @Chuanying;Generic PLA @Chuanying;Generic PLA @Chuanying X1 0.25 Nozzle" } diff --git a/resources/profiles/Chuanying/machine/fdm_chuanying_common.json b/resources/profiles/Chuanying/machine/fdm_chuanying_common.json index 41d7339cf0..406b6045d0 100644 --- a/resources/profiles/Chuanying/machine/fdm_chuanying_common.json +++ b/resources/profiles/Chuanying/machine/fdm_chuanying_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", diff --git a/resources/profiles/Chuanying/machine/fdm_klipper_common.json b/resources/profiles/Chuanying/machine/fdm_klipper_common.json index 16fb20b900..93631dfa17 100644 --- a/resources/profiles/Chuanying/machine/fdm_klipper_common.json +++ b/resources/profiles/Chuanying/machine/fdm_klipper_common.json @@ -116,8 +116,6 @@ "deretraction_speed": [ "80" ], - "z_lift_type": "NormalLift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", diff --git a/resources/profiles/Chuanying/machine/fdm_machine_common.json b/resources/profiles/Chuanying/machine/fdm_machine_common.json index a751c264bb..3adc42a1ff 100644 --- a/resources/profiles/Chuanying/machine/fdm_machine_common.json +++ b/resources/profiles/Chuanying/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "0.20mm Standard @Chuanying X1", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/Chuanying/process/fdm_process_chuanying_0.20.json b/resources/profiles/Chuanying/process/fdm_process_chuanying_0.20.json index 82e196aa1e..e4ad2518a3 100644 --- a/resources/profiles/Chuanying/process/fdm_process_chuanying_0.20.json +++ b/resources/profiles/Chuanying/process/fdm_process_chuanying_0.20.json @@ -11,7 +11,6 @@ "gap_infill_speed": "200", "sparse_infill_speed": "270", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "internal_solid_infill_acceleration": "7000", "accel_to_decel_enable": "0", diff --git a/resources/profiles/Chuanying/process/fdm_process_chuanying_0.30.json b/resources/profiles/Chuanying/process/fdm_process_chuanying_0.30.json index 1a722cc07c..e2c36526ce 100644 --- a/resources/profiles/Chuanying/process/fdm_process_chuanying_0.30.json +++ b/resources/profiles/Chuanying/process/fdm_process_chuanying_0.30.json @@ -19,7 +19,6 @@ "top_surface_speed": "120", "gap_infill_speed": "150", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "internal_solid_infill_acceleration": "7000", "accel_to_decel_enable": "0", diff --git a/resources/profiles/Chuanying/process/fdm_process_chuanying_common.json b/resources/profiles/Chuanying/process/fdm_process_chuanying_common.json index 6254ffd087..ccad22dca3 100644 --- a/resources/profiles/Chuanying/process/fdm_process_chuanying_common.json +++ b/resources/profiles/Chuanying/process/fdm_process_chuanying_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "travel_acceleration": "10000", "inner_wall_acceleration": "5000", diff --git a/resources/profiles/Chuanying/process/fdm_process_common.json b/resources/profiles/Chuanying/process/fdm_process_common.json index 362b69213e..fc96799afe 100644 --- a/resources/profiles/Chuanying/process/fdm_process_common.json +++ b/resources/profiles/Chuanying/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Co Print.json b/resources/profiles/Co Print.json index e6f9fe967c..2e1ad809eb 100644 --- a/resources/profiles/Co Print.json +++ b/resources/profiles/Co Print.json @@ -1,6 +1,6 @@ { "name": "Co Print", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "CoPrint configurations", "machine_model_list": [ diff --git a/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json b/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json index 2a8510b3ab..5a6c5287c0 100644 --- a/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json +++ b/resources/profiles/Co Print/filament/Generic PLA @CoPrint.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @CoPrint", - "inherits": "fdm_filament_pla", "renamed_from": "CoPrint Generic PLA", + "inherits": "fdm_filament_pla", "from": "system", "setting_id": "9tNsM3FhIDgKJ05R", "filament_id": "OFDSrzZ8", @@ -10,12 +10,6 @@ "filament_vendor": [ "Generic" ], - "filament_load_time": [ - "9.75" - ], - "filament_unload_time": [ - "9.75" - ], "compatible_printers": [ "Co Print ChromaSet 0.4 nozzle", "Co Print ChromaSet 0.4 nozzle - Ender-3 V3", diff --git a/resources/profiles/Co Print/filament/fdm_filament_pla.json b/resources/profiles/Co Print/filament/fdm_filament_pla.json index 203e643a85..d83834504f 100644 --- a/resources/profiles/Co Print/filament/fdm_filament_pla.json +++ b/resources/profiles/Co Print/filament/fdm_filament_pla.json @@ -173,12 +173,6 @@ "filament_unloading_speed": [ "90" ], - "filament_load_time": [ - "9.75" - ], - "filament_unload_time": [ - "9.75" - ], "filament_toolchange_delay": [ "0" ], diff --git a/resources/profiles/Co Print/machine/fdm_machine_common.json b/resources/profiles/Co Print/machine/fdm_machine_common.json index 4b04bfff04..2d0acb2170 100644 --- a/resources/profiles/Co Print/machine/fdm_machine_common.json +++ b/resources/profiles/Co Print/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Co Print/process/fdm_process_common.json b/resources/profiles/Co Print/process/fdm_process_common.json index 5d6760a85b..72aa53a2a2 100644 --- a/resources/profiles/Co Print/process/fdm_process_common.json +++ b/resources/profiles/Co Print/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "bridge_flow": "0.9031", "bridge_speed": "25", diff --git a/resources/profiles/Co Print/process/fdm_process_coprint_common.json b/resources/profiles/Co Print/process/fdm_process_coprint_common.json index c6d5478a6d..6c1b1a99ee 100644 --- a/resources/profiles/Co Print/process/fdm_process_coprint_common.json +++ b/resources/profiles/Co Print/process/fdm_process_coprint_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "bridge_flow": "0.9031", "bridge_speed": "25", diff --git a/resources/profiles/CoLiDo.json b/resources/profiles/CoLiDo.json index 31d1812a06..f27623c7bc 100644 --- a/resources/profiles/CoLiDo.json +++ b/resources/profiles/CoLiDo.json @@ -1,6 +1,6 @@ { "name": "CoLiDo", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "CoLiDo configurations", "machine_model_list": [ diff --git a/resources/profiles/CoLiDo/filament/fdm_filament_pla.json b/resources/profiles/CoLiDo/filament/fdm_filament_pla.json index 5939811113..92db5ad83c 100644 --- a/resources/profiles/CoLiDo/filament/fdm_filament_pla.json +++ b/resources/profiles/CoLiDo/filament/fdm_filament_pla.json @@ -85,9 +85,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -163,9 +160,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json index 8e9b4b34c5..b02f431b3e 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo 160 V2 0.4 nozzle.json @@ -189,7 +189,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json index bbecec1d48..3c35344e79 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo DIY 4.0 0.4 nozzle.json @@ -203,7 +203,6 @@ "20" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json b/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json index 228580eece..4110cbe15d 100644 --- a/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json +++ b/resources/profiles/CoLiDo/machine/CoLiDo X16 0.4 nozzle.json @@ -189,7 +189,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/CoLiDo/machine/fdm_klipper_common.json b/resources/profiles/CoLiDo/machine/fdm_klipper_common.json index 25eeb1c066..76dbed1936 100644 --- a/resources/profiles/CoLiDo/machine/fdm_klipper_common.json +++ b/resources/profiles/CoLiDo/machine/fdm_klipper_common.json @@ -117,14 +117,13 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ "1" ], "default_filament_profile": [ - "My Generic ABS" + "Generic ABS @CoLiDo X16" ], "default_print_profile": "0.20mm Standard @MyKlipper", "bed_exclude_area": [ diff --git a/resources/profiles/CoLiDo/machine/fdm_machine_common.json b/resources/profiles/CoLiDo/machine/fdm_machine_common.json index d4a5c3be25..fbe40f97e3 100644 --- a/resources/profiles/CoLiDo/machine/fdm_machine_common.json +++ b/resources/profiles/CoLiDo/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/CoLiDo/process/fdm_process_colido_common.json b/resources/profiles/CoLiDo/process/fdm_process_colido_common.json index 86621b85e2..ac0b89ecf6 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_colido_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_colido_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "30", diff --git a/resources/profiles/CoLiDo/process/fdm_process_colidodiy40_common.json b/resources/profiles/CoLiDo/process/fdm_process_colidodiy40_common.json index b1a9fbe2b2..ade45d3c30 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_colidodiy40_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_colidodiy40_common.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/CoLiDo/process/fdm_process_colidodiy40v2_common.json b/resources/profiles/CoLiDo/process/fdm_process_colidodiy40v2_common.json index 63cb950583..89f7687d09 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_colidodiy40v2_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_colidodiy40v2_common.json @@ -38,7 +38,6 @@ "gap_infill_speed": "100", "sparse_infill_speed": "200", "exclude_object": "1", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -103,7 +102,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/CoLiDo/process/fdm_process_colidosr1_common.json b/resources/profiles/CoLiDo/process/fdm_process_colidosr1_common.json index ab06f6a756..7b12f463d5 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_colidosr1_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_colidosr1_common.json @@ -37,7 +37,6 @@ "gap_infill_speed": "100", "sparse_infill_speed": "200", "exclude_object": "1", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -102,7 +101,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/CoLiDo/process/fdm_process_colidox16_common.json b/resources/profiles/CoLiDo/process/fdm_process_colidox16_common.json index ac5b507cce..66c147c002 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_colidox16_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_colidox16_common.json @@ -133,7 +133,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/CoLiDo/process/fdm_process_common.json b/resources/profiles/CoLiDo/process/fdm_process_common.json index 916ca91f84..21b6c070fa 100644 --- a/resources/profiles/CoLiDo/process/fdm_process_common.json +++ b/resources/profiles/CoLiDo/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", @@ -69,7 +68,5 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [], - "smooth_coefficient": "80", - "overhang_totally_speed": "19", "scarf_angle_threshold": "155" } diff --git a/resources/profiles/Comgrow.json b/resources/profiles/Comgrow.json index d506431ce8..e3eb237518 100644 --- a/resources/profiles/Comgrow.json +++ b/resources/profiles/Comgrow.json @@ -1,6 +1,6 @@ { "name": "Comgrow", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "Comgrow configurations", "machine_model_list": [ diff --git a/resources/profiles/Comgrow/machine/fdm_comgrow_common.json b/resources/profiles/Comgrow/machine/fdm_comgrow_common.json index ef8ce3ba93..f01aca4c88 100644 --- a/resources/profiles/Comgrow/machine/fdm_comgrow_common.json +++ b/resources/profiles/Comgrow/machine/fdm_comgrow_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "PAUSE", "machine_pause_gcode": "PAUSE", diff --git a/resources/profiles/Comgrow/machine/fdm_machine_common.json b/resources/profiles/Comgrow/machine/fdm_machine_common.json index 7bddc2a449..6c15932ff6 100644 --- a/resources/profiles/Comgrow/machine/fdm_machine_common.json +++ b/resources/profiles/Comgrow/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Comgrow/process/0.16mm Opitmal @Comgrow T500 0.6.json b/resources/profiles/Comgrow/process/0.16mm Opitmal @Comgrow T500 0.6.json index f9fe24a86e..5d63eecaeb 100644 --- a/resources/profiles/Comgrow/process/0.16mm Opitmal @Comgrow T500 0.6.json +++ b/resources/profiles/Comgrow/process/0.16mm Opitmal @Comgrow T500 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "VXNVLkCAnWrWUyuq", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.16mm Optimal @Comgrow T500 0.4.json b/resources/profiles/Comgrow/process/0.16mm Optimal @Comgrow T500 0.4.json index 75b32fd2bc..6c716b7448 100644 --- a/resources/profiles/Comgrow/process/0.16mm Optimal @Comgrow T500 0.4.json +++ b/resources/profiles/Comgrow/process/0.16mm Optimal @Comgrow T500 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fHx55sqqkzl0l6vD", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.18mm Optimal @Comgrow T500.json b/resources/profiles/Comgrow/process/0.18mm Optimal @Comgrow T500.json index 9ea2e4419a..82c4edfd04 100644 --- a/resources/profiles/Comgrow/process/0.18mm Optimal @Comgrow T500.json +++ b/resources/profiles/Comgrow/process/0.18mm Optimal @Comgrow T500.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "s2ySRT9zoN0MzFMG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.20mm Optimal @Comgrow T300 0.4 - official.json b/resources/profiles/Comgrow/process/0.20mm Optimal @Comgrow T300 0.4 - official.json index a19f2568d7..85e1eb5eb8 100644 --- a/resources/profiles/Comgrow/process/0.20mm Optimal @Comgrow T300 0.4 - official.json +++ b/resources/profiles/Comgrow/process/0.20mm Optimal @Comgrow T300 0.4 - official.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "VFKy39bkuifq4aEz", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.4.json b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.4.json index 4d428aca40..ad93a3003b 100644 --- a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.4.json +++ b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "zwEXxLeBYeJlVsrU", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.6.json b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.6.json index a50b6ac485..9683ba86ef 100644 --- a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.6.json +++ b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "MwfGKEFTGptYVgVg", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500.json b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500.json index 1ef23da2af..3db25ca6c5 100644 --- a/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500.json +++ b/resources/profiles/Comgrow/process/0.20mm Standard @Comgrow T500.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "D15fxV5mACh2XWMT", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.4.json b/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.4.json index d79d7afe4c..8fcbf04693 100644 --- a/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.4.json +++ b/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "INYjczFN5gWflgRJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.6.json b/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.6.json index 326c4c7d26..bb7fc4f905 100644 --- a/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.6.json +++ b/resources/profiles/Comgrow/process/0.24mm Draft @Comgrow T500 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "CDKsOIpM74w1NhsA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.24mm Optimal @Comgrow T500 0.8.json b/resources/profiles/Comgrow/process/0.24mm Optimal @Comgrow T500 0.8.json index 7118e614d2..3b51d2b5aa 100644 --- a/resources/profiles/Comgrow/process/0.24mm Optimal @Comgrow T500 0.8.json +++ b/resources/profiles/Comgrow/process/0.24mm Optimal @Comgrow T500 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "gHH8QHbtpAr7iSj3", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.4.json b/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.4.json index 82140f2a11..012d382d6d 100644 --- a/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.4.json +++ b/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QU9R8iFuvSrnijkO", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.6.json b/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.6.json index 2088fd5d01..1b345c51d8 100644 --- a/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.6.json +++ b/resources/profiles/Comgrow/process/0.28mm SuperDraft @Comgrow T500 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "oQkDbf0FdMb4nV0i", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.32mm Standard @Comgrow T500 0.8.json b/resources/profiles/Comgrow/process/0.32mm Standard @Comgrow T500 0.8.json index 1f9ad6050d..f24b345690 100644 --- a/resources/profiles/Comgrow/process/0.32mm Standard @Comgrow T500 0.8.json +++ b/resources/profiles/Comgrow/process/0.32mm Standard @Comgrow T500 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1IxP6FaNbkCM6bz8", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.32", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.40mm Draft @Comgrow T500 0.8.json b/resources/profiles/Comgrow/process/0.40mm Draft @Comgrow T500 0.8.json index 515bcfdde8..32958ee493 100644 --- a/resources/profiles/Comgrow/process/0.40mm Draft @Comgrow T500 0.8.json +++ b/resources/profiles/Comgrow/process/0.40mm Draft @Comgrow T500 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "67PM6ka97wMVLSJV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.40", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.48mm Draft @Comgrow T500 0.8.json b/resources/profiles/Comgrow/process/0.48mm Draft @Comgrow T500 0.8.json index bdae66b5e8..21009bb931 100644 --- a/resources/profiles/Comgrow/process/0.48mm Draft @Comgrow T500 0.8.json +++ b/resources/profiles/Comgrow/process/0.48mm Draft @Comgrow T500 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7fJumwUT4xqMSvYo", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.48", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/0.56mm SuperDraft @Comgrow T500 0.8.json b/resources/profiles/Comgrow/process/0.56mm SuperDraft @Comgrow T500 0.8.json index fae10074b2..6a4d439820 100644 --- a/resources/profiles/Comgrow/process/0.56mm SuperDraft @Comgrow T500 0.8.json +++ b/resources/profiles/Comgrow/process/0.56mm SuperDraft @Comgrow T500 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "407WH0SRTXRCg7Gz", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.56", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json b/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json index b926f2ee86..04b9a6bd06 100644 --- a/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json +++ b/resources/profiles/Comgrow/process/fdm_process_comgrow_common.json @@ -107,7 +107,6 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Comgrow/process/fdm_process_common.json b/resources/profiles/Comgrow/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Comgrow/process/fdm_process_common.json +++ b/resources/profiles/Comgrow/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 13221d752c..a870a8d7d6 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1,6 +1,6 @@ { "name": "Creality", - "version": "02.03.02.78", + "version": "02.03.02.80", "force_update": "0", "description": "Creality configurations", "machine_model_list": [ diff --git a/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json index faa9404b3b..fe03c214e1 100644 --- a/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @Ender-3 V4-all.json @@ -1,177 +1,175 @@ { - "type": "filament", - "name": "CR-ABS @Ender-3 V4-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "3MchJTc47Au6MkZ0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", - "pressure_advance": "0.024", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @Ender-3 V4-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "3MchJTc47Au6MkZ0", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", + "pressure_advance": "0.024", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @Hi-all.json b/resources/profiles/Creality/filament/CR-ABS @Hi-all.json index 10c1cce09d..98cb5ccd2a 100644 --- a/resources/profiles/Creality/filament/CR-ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @Hi-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "CR-ABS @Hi-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "OkztCpBxncDuPVQP", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "70" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @Hi-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "OkztCpBxncDuPVQP", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json index 12afdde3cd..9ce194cf28 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 Max_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-ABS @K1 Max_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "IuBXEntaBaPVFQXh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1 Max_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "IuBXEntaBaPVFQXh", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json index 00340895f4..c463f498c8 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 SE-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "CR-ABS @K1 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "yhGkKM6yZnFFn8IW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "yhGkKM6yZnFFn8IW", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json index d80c98423f..f482eba998 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1 SE_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "CR-ABS @K1 SE_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "ERk97K6VotgHJfWy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1 SE_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "ERk97K6VotgHJfWy", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1C-all.json index f41b1bb940..b61bdae377 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-ABS @K1C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "HaRbfdv0e9gKF3Qp", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "HaRbfdv0e9gKF3Qp", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json index f91677ab31..8707ea2a53 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1C_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-ABS @K1C_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "jhNERXYu8aq28Ppb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1C_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "jhNERXYu8aq28Ppb", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json index b83d103747..73b8b024d1 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K1_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-ABS @K1_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "3irrf86tjxODkbIf", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K1_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "3irrf86tjxODkbIf", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json index d807936bfc..10bdfa06e1 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-ABS @K2 Plus-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "5CD3YjRfabJ1lA6a", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K2 Plus-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "5CD3YjRfabJ1lA6a", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json index b6334a93b6..ea99164d21 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 Pro-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "CR-ABS @K2 Pro-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "QuBAuyBqoGyFHMpP", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle", - "Creality K2 Pro 0.6 nozzle", - "Creality K2 Pro 0.8 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K2 Pro-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "QuBAuyBqoGyFHMpP", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle", + "Creality K2 Pro 0.6 nozzle", + "Creality K2 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json b/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json index f49bf5dd93..07b9274321 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2 SE-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "CR-ABS @K2 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "8hrvutX54fd4gUGn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K2 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "8hrvutX54fd4gUGn", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-ABS @K2-all.json b/resources/profiles/Creality/filament/CR-ABS @K2-all.json index d0f92634b1..2ffd9662f3 100644 --- a/resources/profiles/Creality/filament/CR-ABS @K2-all.json +++ b/resources/profiles/Creality/filament/CR-ABS @K2-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "CR-ABS @K2-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "rvItkEWAJNGXJrVF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle", - "Creality K2 0.6 nozzle", - "Creality K2 0.8 nozzle" - ], - "filament_id": "OFGwZmgS" -} \ No newline at end of file + "type": "filament", + "name": "CR-ABS @K2-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "rvItkEWAJNGXJrVF", + "filament_id": "OFGwZmgS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle", + "Creality K2 0.6 nozzle", + "Creality K2 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json index bc9719ad07..30c7842edb 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1 Max_CFS-C-all.json @@ -1,191 +1,189 @@ { - "type": "filament", - "name": "CR-Nylon @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "vRp7fYNhHQuLUArq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "52" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFvLppPU" -} \ No newline at end of file + "type": "filament", + "name": "CR-Nylon @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "vRp7fYNhHQuLUArq", + "filament_id": "OFvLppPU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "52" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json index bf9ce0c9e1..a95d8b9b3b 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1C-all.json @@ -1,192 +1,190 @@ { - "type": "filament", - "name": "CR-Nylon @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "IAXnmE8e2ADhcMZG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "52" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFvLppPU" -} \ No newline at end of file + "type": "filament", + "name": "CR-Nylon @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "IAXnmE8e2ADhcMZG", + "filament_id": "OFvLppPU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "52" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json index e2a7ef32fa..71b5cceb41 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1C_CFS-C-all.json @@ -1,192 +1,190 @@ { - "type": "filament", - "name": "CR-Nylon @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "vIpGcKrZM6vbICRT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "52" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFvLppPU" -} \ No newline at end of file + "type": "filament", + "name": "CR-Nylon @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "vIpGcKrZM6vbICRT", + "filament_id": "OFvLppPU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "52" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json index 48747723f0..e3b4dc6f21 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K1_CFS-C-all.json @@ -1,192 +1,190 @@ { - "type": "filament", - "name": "CR-Nylon @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "eb1T3avlK6EzZ5NT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "52" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "4" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFvLppPU" -} \ No newline at end of file + "type": "filament", + "name": "CR-Nylon @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "eb1T3avlK6EzZ5NT", + "filament_id": "OFvLppPU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "52" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json index d665bb8d16..ba322bd8c7 100644 --- a/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Nylon @K2 Plus-all.json @@ -1,198 +1,196 @@ { - "type": "filament", - "name": "CR-Nylon @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "LLuS5zOOxSWnZoyb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "52" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "16" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.064", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFvLppPU" -} \ No newline at end of file + "type": "filament", + "name": "CR-Nylon @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "LLuS5zOOxSWnZoyb", + "filament_id": "OFvLppPU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "52" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "16" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.064", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json index bfa6bd0bc7..82d0370573 100644 --- a/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "CR-PETG @Ender-3 V4-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "ZucTDurgG1yttTTE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,230],[1.0,230],[1.2,250]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @Ender-3 V4-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "ZucTDurgG1yttTTE", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,230],[1.0,230],[1.2,250]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @Hi-all.json b/resources/profiles/Creality/filament/CR-PETG @Hi-all.json index 4b3ab33892..6a37e9a7e3 100644 --- a/resources/profiles/Creality/filament/CR-PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @Hi-all.json @@ -1,152 +1,150 @@ { - "type": "filament", - "name": "CR-PETG @Hi-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "DGnnBUZoF5EJdo8y", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[4.0,225],[7.0,230],[10.0,240]]", - "pressure_advance": "0.072", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.2 nozzle", - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle", - "Creality Hi 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @Hi-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "DGnnBUZoF5EJdo8y", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[4.0,225],[7.0,230],[10.0,240]]", + "pressure_advance": "0.072", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.2 nozzle", + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle", + "Creality Hi 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json index bc597f92b3..873e8c8174 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 Max_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PETG @K1 Max_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "7zmI8UK4VCbkrHth", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "1" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", - "pressure_advance": "0.078", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1 Max_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "7zmI8UK4VCbkrHth", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "1" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", + "pressure_advance": "0.078", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json index 1c92de9916..18de1bb62f 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 SE-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "CR-PETG @K1 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "oR9hRU1vmcDXuEdN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "9" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "85" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,250]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "oR9hRU1vmcDXuEdN", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "85" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "85" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,250]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json index be3983b772..4732ece2ae 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1 SE_CFS-C-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "CR-PETG @K1 SE_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "O5oj2seoJOMoRQeH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "9" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "85" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,250]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1 SE_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "O5oj2seoJOMoRQeH", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "85" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "9" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "85" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,250]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1C-all.json index 2829598e5a..6bb86df975 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PETG @K1C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "TCoincnHkpTkdbgr", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "1" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", - "pressure_advance": "0.062", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "TCoincnHkpTkdbgr", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "1" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", + "pressure_advance": "0.062", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json index a6ee2af473..537ab817e9 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1C_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "CR-PETG @K1C_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "tEizEoyTjR2jsMjb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "1" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", - "pressure_advance": "0.062", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1C_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "tEizEoyTjR2jsMjb", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "1" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", + "pressure_advance": "0.062", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json index d05baf33af..936ec3ba8c 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K1_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PETG @K1_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "GyuPdDlFigxqfNdh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "1" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", - "pressure_advance": "0.072", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K1_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "GyuPdDlFigxqfNdh", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "1" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220], [1.2,220], [1.3,250]]", + "pressure_advance": "0.072", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json index ead310f41c..4a9e23750b 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 Plus-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "CR-PETG @K2 Plus-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "L9YgZiTMEbGueIUB", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K2 Plus-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "L9YgZiTMEbGueIUB", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json index b73011595f..a7a5eec9be 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 Pro-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "CR-PETG @K2 Pro-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "cpZpusYQklJHwF7C", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle", - "Creality K2 Pro 0.6 nozzle", - "Creality K2 Pro 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K2 Pro-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "cpZpusYQklJHwF7C", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle", + "Creality K2 Pro 0.6 nozzle", + "Creality K2 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json b/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json index 2137f18ef6..6c2a833714 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2 SE-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PETG @K2 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "wszfgAr4wGMhfak4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K2 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "wszfgAr4wGMhfak4", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "85" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @K2-all.json b/resources/profiles/Creality/filament/CR-PETG @K2-all.json index 16bd7c7053..c53735d1d4 100644 --- a/resources/profiles/Creality/filament/CR-PETG @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @K2-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "CR-PETG @K2-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "twFraQUSFLNuYrQd", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle", - "Creality K2 0.6 nozzle", - "Creality K2 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @K2-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "twFraQUSFLNuYrQd", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle", + "Creality K2 0.6 nozzle", + "Creality K2 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json index befe270b95..a5ae82bc50 100644 --- a/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PETG @SPARKX i7-all.json @@ -1,139 +1,137 @@ { - "type": "filament", - "name": "CR-PETG @SPARKX i7-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "RFW04K7trMKi3cYq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[1.0,205],[1.2,220]]", - "pressure_advance": "0.3", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.2 nozzle", - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OF3WQaKK" -} \ No newline at end of file + "type": "filament", + "name": "CR-PETG @SPARKX i7-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "RFW04K7trMKi3cYq", + "filament_id": "OF3WQaKK", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[1.0,205],[1.2,220]]", + "pressure_advance": "0.3", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.2 nozzle", + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json index 83548daafd..5b3868f3be 100644 --- a/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "CR-PLA @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "hy5Zpwpkx46UQlFy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "hy5Zpwpkx46UQlFy", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @Hi-all.json b/resources/profiles/Creality/filament/CR-PLA @Hi-all.json index 0dc26b51ba..89c8609ea5 100644 --- a/resources/profiles/Creality/filament/CR-PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @Hi-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "CR-PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "2g9MEZ7yniK64tVA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.2 nozzle", - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "2g9MEZ7yniK64tVA", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.2 nozzle", + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json index 84fb331f5b..b606e1ba81 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 Max_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "rkd11EbVutxkB4Yy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "rkd11EbVutxkB4Yy", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json index 1f5d2b746a..37191e5b4b 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 SE-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "CR-PLA @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "dFig6q8KlgjU4stK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "70%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "dFig6q8KlgjU4stK", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json index f8517e48b5..cf13c1845e 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1 SE_CFS-C-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "CR-PLA @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "2sTv8VK78NAkgv22", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "70%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "2sTv8VK78NAkgv22", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1C-all.json index 092a18533d..e5f40ce73b 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "3chsaV1fugQudOqC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "3chsaV1fugQudOqC", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json index e564114150..8e3aff7029 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1C_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Xu46QkbGLqe9nSxT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Xu46QkbGLqe9nSxT", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json index 2796306e7f..a9bb576d9a 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K1_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "dDLVUGD8AqxJuSb2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "dDLVUGD8AqxJuSb2", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json index a175fcdb46..48d6542c23 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 Plus-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "CR-PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "FsNcay7aLjZKGih8", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "FsNcay7aLjZKGih8", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json index b30c6e90fe..c97cda56fa 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 Pro-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "yXWDlqzGqqIg2tbx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "yXWDlqzGqqIg2tbx", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json b/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json index 4de70e5062..c3fe4a1f36 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2 SE-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "CR-PLA @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "j8Iaz6y4iiOw2I5n", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "j8Iaz6y4iiOw2I5n", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @K2-all.json b/resources/profiles/Creality/filament/CR-PLA @K2-all.json index 26a62766b0..fbcb4cfb49 100644 --- a/resources/profiles/Creality/filament/CR-PLA @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @K2-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "7f0r4XOgIhVG2OPH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "7f0r4XOgIhVG2OPH", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json index ad5aad1c66..a4cbf4f3f9 100644 --- a/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA @SPARKX i7-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "CR-PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "G1KqKgylj61LrtiS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[1.2,220]]", - "pressure_advance": "0.032", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFp4ETDP" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "G1KqKgylj61LrtiS", + "filament_id": "OFp4ETDP", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[1.2,220]]", + "pressure_advance": "0.032", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json index cfc58c9cf8..09421321fe 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1 Max_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Carbon @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "VzHBAqKC0WWSEga0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFrM4hdm" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Carbon @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "VzHBAqKC0WWSEga0", + "filament_id": "OFrM4hdm", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json index e6eaf070f8..ec102d33a4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Carbon @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "2ve6KpyKswcbHPJi", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFrM4hdm" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Carbon @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "2ve6KpyKswcbHPJi", + "filament_id": "OFrM4hdm", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json index 2e369e8a3c..1b363a0c68 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1C_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Carbon @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "MbgilTqqbN9QZvtq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFrM4hdm" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Carbon @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "MbgilTqqbN9QZvtq", + "filament_id": "OFrM4hdm", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json index 47bfd16093..4847bc1620 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K1_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Carbon @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "e5ACy8cJonV9q1pe", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFrM4hdm" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Carbon @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "e5ACy8cJonV9q1pe", + "filament_id": "OFrM4hdm", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json index b7fb77695e..3a8c3cf1ca 100644 --- a/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Carbon @K2 Plus-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Carbon @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ua3BCvZtfYAgH7nN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFrM4hdm" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Carbon @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ua3BCvZtfYAgH7nN", + "filament_id": "OFrM4hdm", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json index ee3510a9cc..761fd855b4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1 Max_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "njQE4bpSlZHrCqrg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "njQE4bpSlZHrCqrg", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json index 22d113814a..4bc597182f 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "eCuLoIdPsTEiLxZB", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "eCuLoIdPsTEiLxZB", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json index 59bf2e48e6..384e74eb75 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1C_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "5vTZFUcLv6DL06Nr", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "5vTZFUcLv6DL06Nr", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json index 4a3a27bfb5..ae580ced18 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K1_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "HDRiQNtbO8jZR6tW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "HDRiQNtbO8jZR6tW", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json index 5b3aaccd1f..fc0b3e724a 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Plus-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "gKRZWt2XVBGFoQ6t", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "gKRZWt2XVBGFoQ6t", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json index c2dbe07744..b54f3e6745 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2 Pro-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "yGc6fpse4MyUXWXa", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "yGc6fpse4MyUXWXa", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json index 98a41262c4..179e2c9421 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @K2-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Fluo @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "BJwFbpJ8baT3vyEU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "BJwFbpJ8baT3vyEU", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json index 759d5cbd88..69dd52a125 100644 --- a/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Fluo @SPARKX i7-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Fluo @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "0xviyTPYLAxrpVGK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFgpQwkk" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Fluo @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "0xviyTPYLAxrpVGK", + "filament_id": "OFgpQwkk", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json index 1ed05bed21..2ec7cab65d 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @Ender-3 V4-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "CR-PLA Matte @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "0edq8qWqKaGPZc1t", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "0edq8qWqKaGPZc1t", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json index 80373199ad..c18a9dc8c4 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1 Max_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Matte @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ZFXelUe4vcYytBIg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ZFXelUe4vcYytBIg", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json index ac4a9fc0ff..cde0fa3c9b 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Matte @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "mQDyxAEILwLuFWAw", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "mQDyxAEILwLuFWAw", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json index cd8ea92f5a..4773356cc7 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1C_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Matte @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "38NjxetvurFFPPEy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "38NjxetvurFFPPEy", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json index 1779ce9a54..76654b9172 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K1_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Matte @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "KFNeCYp4ck8diZRG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "KFNeCYp4ck8diZRG", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.1,190], [1.5,190], [1.6,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json index ebfe70bac1..ae46802d71 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-PLA Matte @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "WXOXHiNp1tvh4Y5T", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "WXOXHiNp1tvh4Y5T", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json index 90436b9e4b..adc321314c 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2 Pro-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Matte @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "LNN1w66GDTFxTCMq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "LNN1w66GDTFxTCMq", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json index b2bc9f1bc4..9569a1ce13 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @K2-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "CR-PLA Matte @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "nk9dxS7bcChQ26pZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "nk9dxS7bcChQ26pZ", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json index 5cf37492a4..7ada0c085a 100644 --- a/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-PLA Matte @SPARKX i7-all.json @@ -1,170 +1,168 @@ { - "type": "filament", - "name": "CR-PLA Matte @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "NNx1aU5NjcyeKPec", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", - "pressure_advance": "0.23", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.2 nozzle", - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OFM0xjBG" -} \ No newline at end of file + "type": "filament", + "name": "CR-PLA Matte @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "NNx1aU5NjcyeKPec", + "filament_id": "OFM0xjBG", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", + "pressure_advance": "0.23", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.2 nozzle", + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json b/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json index 494d7245c9..9f62ca07bc 100644 --- a/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "CR-Silk @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "96xBgfns6PJljRBO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "96xBgfns6PJljRBO", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @Hi-all.json b/resources/profiles/Creality/filament/CR-Silk @Hi-all.json index 497ddcd169..2d811b10f5 100644 --- a/resources/profiles/Creality/filament/CR-Silk @Hi-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @Hi-all.json @@ -1,145 +1,143 @@ { - "type": "filament", - "name": "CR-Silk @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "tCMjuQOR2yj66jPW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", - "pressure_advance": "0.026", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "tCMjuQOR2yj66jPW", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", + "pressure_advance": "0.026", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json index bffe643c8c..23e8a0762d 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 Max_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Silk @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ljLSobQ4S3BAkBNk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ljLSobQ4S3BAkBNk", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json index 39ba90b647..04624cfc25 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 SE-all.json @@ -1,147 +1,145 @@ { - "type": "filament", - "name": "CR-Silk @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "jHEDkgKkZAy21Ali", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "jHEDkgKkZAy21Ali", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json index 33b0ddc999..0755c45631 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1 SE_CFS-C-all.json @@ -1,147 +1,145 @@ { - "type": "filament", - "name": "CR-Silk @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GbHXYf8i8km1Ox5r", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GbHXYf8i8km1Ox5r", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1C-all.json index 7ba2624bae..ea9fad8877 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1C-all.json @@ -1,162 +1,160 @@ { - "type": "filament", - "name": "CR-Silk @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "I4LxzBtRIwagIQUJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "I4LxzBtRIwagIQUJ", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json index ddbf57b5f2..6150166773 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1C_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Silk @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "JMpBkMELewelYBDU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "JMpBkMELewelYBDU", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json index 3e0e45cd87..47b4468887 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K1_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Silk @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "dVxmGRP36D3lampi", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "dVxmGRP36D3lampi", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json index a2320f3f4e..d1d211884e 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 Plus-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "CR-Silk @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "8mKZzYS3ykGEMqjH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "8mKZzYS3ykGEMqjH", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json index 4c1f433c61..75c276d993 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 Pro-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "CR-Silk @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "KBVdrZA7bYRpGztN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "KBVdrZA7bYRpGztN", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json b/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json index 9c1415001b..b598e9df65 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2 SE-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "CR-Silk @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "0bvCEevcKO0uubLD", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,190],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "0bvCEevcKO0uubLD", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[1.2,190],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @K2-all.json b/resources/profiles/Creality/filament/CR-Silk @K2-all.json index 97e5d7da31..49486812c4 100644 --- a/resources/profiles/Creality/filament/CR-Silk @K2-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @K2-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "CR-Silk @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "MXAd3uHJUNHLFA4i", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "MXAd3uHJUNHLFA4i", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json index 11a92b0357..e3c2ae9f62 100644 --- a/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-Silk @SPARKX i7-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "CR-Silk @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "A30ICaD1Lz0cWkEH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", - "pressure_advance": "0.13", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.2 nozzle", - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OF3OMgrI" -} \ No newline at end of file + "type": "filament", + "name": "CR-Silk @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "A30ICaD1Lz0cWkEH", + "filament_id": "OF3OMgrI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[1.2,220]]", + "pressure_advance": "0.13", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.2 nozzle", + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json index 8ad140c757..8e5ab63281 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1 Max_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "CR-TPU @K1 Max_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "KkOkqdyd9DekhhNx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K1 Max_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "KkOkqdyd9DekhhNx", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K1C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1C-all.json index 001f3c5e5c..5740a6c8fb 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "CR-TPU @K1C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "7IDbEU7GXQfJbFQz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K1C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "7IDbEU7GXQfJbFQz", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json index 9d10ae7b5c..60f72ca75e 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1C_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "CR-TPU @K1C_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "m33d4hGzs5ZC1faF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K1C_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "m33d4hGzs5ZC1faF", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json index 5be19a6852..526fc9daad 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K1_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "CR-TPU @K1_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "kt3VziPx3umU4Q5R", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K1_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "kt3VziPx3umU4Q5R", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json index b79e38758b..c68afd06dc 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2 Plus-all.json @@ -1,170 +1,168 @@ { - "type": "filament", - "name": "CR-TPU @K2 Plus-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "KioNr9VhBOnLMtnm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.02" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.34", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K2 Plus-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "KioNr9VhBOnLMtnm", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.02" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.34", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json index e3ea591f17..5e1ca5fef1 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2 Pro-all.json @@ -1,175 +1,173 @@ { - "type": "filament", - "name": "CR-TPU @K2 Pro-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "8akFfk1Evt6aKtRL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "24" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.02" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.34", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K2 Pro-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "8akFfk1Evt6aKtRL", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.02" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.34", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @K2-all.json b/resources/profiles/Creality/filament/CR-TPU @K2-all.json index a336ca1e66..5ba623ff46 100644 --- a/resources/profiles/Creality/filament/CR-TPU @K2-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @K2-all.json @@ -1,175 +1,173 @@ { - "type": "filament", - "name": "CR-TPU @K2-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "ZXIOQXEGhsUn2x8j", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "24" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @K2-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "ZXIOQXEGhsUn2x8j", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json index 3b6e8923eb..ca5cb0fbfc 100644 --- a/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/CR-TPU @SPARKX i7-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "CR-TPU @SPARKX i7-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "mCfhjDYJc8oh3k2X", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.12" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "1.8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.34", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFG2RkhN" -} \ No newline at end of file + "type": "filament", + "name": "CR-TPU @SPARKX i7-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "mCfhjDYJc8oh3k2X", + "filament_id": "OFG2RkhN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.12" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "1.8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.34", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json index 2d59b01143..3b695ef493 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1 Max_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "CR-Wood @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "vIzshYLqN5j6pkDn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.22" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGxC8gB" -} \ No newline at end of file + "type": "filament", + "name": "CR-Wood @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "vIzshYLqN5j6pkDn", + "filament_id": "OFGxC8gB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.22" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Wood @K1C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1C-all.json index 20477f04a9..ee30ee419d 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Wood @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zSfzwta4F6MAXAn7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.22" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFGxC8gB" -} \ No newline at end of file + "type": "filament", + "name": "CR-Wood @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zSfzwta4F6MAXAn7", + "filament_id": "OFGxC8gB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.22" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json index 95dc4f4c95..a36e476dd4 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1C_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Wood @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "5n4iNCttBHmnXKaT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.22" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGxC8gB" -} \ No newline at end of file + "type": "filament", + "name": "CR-Wood @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "5n4iNCttBHmnXKaT", + "filament_id": "OFGxC8gB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.22" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json b/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json index e029b37f79..eac27b5a22 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K1_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "CR-Wood @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "kBGvS0Npk3V5eY8j", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.22" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGxC8gB" -} \ No newline at end of file + "type": "filament", + "name": "CR-Wood @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "kBGvS0Npk3V5eY8j", + "filament_id": "OFGxC8gB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.22" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json b/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json index aa7a1f5eee..160a0cd258 100644 --- a/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/CR-Wood @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "CR-Wood @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "NFRGg9wmbojJ0Ye9", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.22" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFGxC8gB" -} \ No newline at end of file + "type": "filament", + "name": "CR-Wood @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "NFRGg9wmbojJ0Ye9", + "filament_id": "OFGxC8gB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.22" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json index cb50c6f7fb..91bd548a37 100644 --- a/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper ABS @Ender-5Max-all.json @@ -43,7 +43,6 @@ ], "filament_flow_ratio": "0.92", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -73,7 +72,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json index 6a71e56fff..3333526fd3 100644 --- a/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper PLA @Ender-5Max-all.json @@ -43,7 +43,6 @@ ], "filament_flow_ratio": "0.97", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json index d44e4d96bf..eed4198aea 100644 --- a/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Hyper PLA-CF @Ender-5Max-all.json @@ -43,7 +43,6 @@ ], "filament_flow_ratio": "0.9", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -73,7 +72,6 @@ "filament_type": [ "PLA-CF" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json b/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json index d8a060f9b5..24b7aec597 100644 --- a/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Creality Silk PLA @Ender-5Max-all.json @@ -43,7 +43,6 @@ ], "filament_flow_ratio": "0.85", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -73,7 +72,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json index a7c696718f..6a01014a09 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1 Max_CFS-C-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "EN-PLA+ @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "158lgUy4NWVKp625", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "90" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "158lgUy4NWVKp625", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "90" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json index c680265601..68a1c41f23 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1C-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "EN-PLA+ @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GGgjz1BfWVm9G9oO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "90" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GGgjz1BfWVm9G9oO", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "90" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json index 50816aed69..fac99aa191 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1C_CFS-C-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "EN-PLA+ @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "gZVVoUCJ7QRhAHjO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "90" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "gZVVoUCJ7QRhAHjO", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "90" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json index 43728032ef..6ff1d73bc7 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K1_CFS-C-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "EN-PLA+ @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Av0kmRfBxzfEtFMI", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "90" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Av0kmRfBxzfEtFMI", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "90" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json index 25642697d9..7df41a79d8 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2 Plus-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "EN-PLA+ @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "8jntA1DA7UKpFB5D", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "8jntA1DA7UKpFB5D", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json index 16a318a1e0..45ac03cfdc 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2 Pro-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "EN-PLA+ @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "xIghXweOHDN6eUJA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "xIghXweOHDN6eUJA", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json b/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json index e9693dabcc..1b3877c95f 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @K2-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "EN-PLA+ @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "knIpfA9wHBoyClD9", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "knIpfA9wHBoyClD9", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json b/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json index e19e06f40e..22552b9ec9 100644 --- a/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/EN-PLA+ @SPARKX i7-all.json @@ -1,170 +1,168 @@ { - "type": "filament", - "name": "EN-PLA+ @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "noCevEGFMtClqvDZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFks6esg" -} \ No newline at end of file + "type": "filament", + "name": "EN-PLA+ @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "noCevEGFMtClqvDZ", + "filament_id": "OFks6esg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json index 3fd9b4ef24..4c3854163c 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @Hi-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "ENDER FAST PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ZK9la4OwCbY6P1Ka", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "24" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.3" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFfSqS4R" -} \ No newline at end of file + "type": "filament", + "name": "ENDER FAST PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ZK9la4OwCbY6P1Ka", + "filament_id": "OFfSqS4R", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.3" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json index a27a828dfb..cf7a5ef46a 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Plus-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "ENDER FAST PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "aX5GTeSuTe2xMM6U", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "53" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFfSqS4R" -} \ No newline at end of file + "type": "filament", + "name": "ENDER FAST PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "aX5GTeSuTe2xMM6U", + "filament_id": "OFfSqS4R", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "6" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "53" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json index 4f831d47ab..f9d5b70345 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2 Pro-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "ENDER FAST PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "rPu8RtmT8ketxiKn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "24" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFfSqS4R" -} \ No newline at end of file + "type": "filament", + "name": "ENDER FAST PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "rPu8RtmT8ketxiKn", + "filament_id": "OFfSqS4R", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json index 9c2fd90d30..cc020aeb91 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @K2-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "ENDER FAST PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "KXmnvtnGjZiXVYVs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "24" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFfSqS4R" -} \ No newline at end of file + "type": "filament", + "name": "ENDER FAST PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "KXmnvtnGjZiXVYVs", + "filament_id": "OFfSqS4R", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json index c96ff98d72..e365bffac4 100644 --- a/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/ENDER FAST PLA @SPARKX i7-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "ENDER FAST PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "EOJUiD8x2hx3y4HO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "53" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFfSqS4R" -} \ No newline at end of file + "type": "filament", + "name": "ENDER FAST PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "EOJUiD8x2hx3y4HO", + "filament_id": "OFfSqS4R", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "53" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json index 711b1b22a7..bfd0581d4a 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @Ender-3 V4-all.json @@ -1,147 +1,145 @@ { - "type": "filament", - "name": "Ender-PLA @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "4ZsPBPTcW7Nbud94", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", - "pressure_advance": "0.024", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "4ZsPBPTcW7Nbud94", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", + "pressure_advance": "0.024", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json b/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json index 27ea82bdd3..011f599d96 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @Hi-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "Ender-PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "3cpofydFoBjnKdNH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "3cpofydFoBjnKdNH", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json index ed995443e3..88a1f5a286 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1 Max_CFS-C-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "Ender-PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "CHtytKAUVFpAy8Qm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "CHtytKAUVFpAy8Qm", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json index c220fa54ac..20407c7014 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1C-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "Ender-PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "xnFY6LUmvd7zH1kQ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "xnFY6LUmvd7zH1kQ", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json index 2471ec31bb..2c5af7fd59 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1C_CFS-C-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "Ender-PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Q3cb72JAry8Nj9Jc", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Q3cb72JAry8Nj9Jc", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json index f10bf01177..5e3bbc2075 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K1_CFS-C-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "Ender-PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "tITLcxwReOtBn4un", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "tITLcxwReOtBn4un", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200], [1.1,210], [1.4,220]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json index 51b85450b3..2215821808 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2 Plus-all.json @@ -1,152 +1,150 @@ { - "type": "filament", - "name": "Ender-PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "CZfEiMPan3Lz1qK6", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "CZfEiMPan3Lz1qK6", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json index 8e04e8fee9..f2bd325441 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2 Pro-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Ender-PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "QqeD0acLtTx3o8hq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "QqeD0acLtTx3o8hq", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.2,195],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @K2-all.json b/resources/profiles/Creality/filament/Ender-PLA @K2-all.json index b26145bea9..364a6e25a8 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @K2-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Ender-PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "r81gYSIP0AGeFowj", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "r81gYSIP0AGeFowj", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json index 11a85cc128..7cf95acc28 100644 --- a/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Ender-PLA @SPARKX i7-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Ender-PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "I8mV3hBRdyGTSqgt", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.034", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFWao3Ic" -} \ No newline at end of file + "type": "filament", + "name": "Ender-PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "I8mV3hBRdyGTSqgt", + "filament_id": "OFWao3Ic", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.034", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json index 5a6f7a93c9..f385b23057 100644 --- a/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ABS @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic ABS @Ender-5Max-all;Creality Generic ABS Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "qurtvw5OhkVfgpaC", "filament_id": "OFY9muEs", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "0.85", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json index d1f8662025..0c1700464a 100644 --- a/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Ender-3 V4-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "Generic ABS @Ender-3 V4-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "4uYoekJTerUnoYl8", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", - "pressure_advance": "0.026", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @Ender-3 V4-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "4uYoekJTerUnoYl8", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "90", + "customized_plate_temp_initial_layer": "90", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", + "pressure_advance": "0.026", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @Hi-all.json b/resources/profiles/Creality/filament/Generic ABS @Hi-all.json index 9f43259110..dad6fd75a7 100644 --- a/resources/profiles/Creality/filament/Generic ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @Hi-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic ABS @Hi-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "9z0uoXnHksedYsyq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "70" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @Hi-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "9z0uoXnHksedYsyq", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json index 4d1de77b9e..47623ecde9 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 Max_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic ABS @K1 Max_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "VF8DUfOECtADXXXT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1 Max_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "VF8DUfOECtADXXXT", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json index 974ca3a49a..f69924da6e 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 SE-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic ABS @K1 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "6tqh2NX6hGdsR8Gy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "6tqh2NX6hGdsR8Gy", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json index 8fa83c2dbf..7c54336fe3 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1 SE_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic ABS @K1 SE_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "D95cc9TGmWbPC8em", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1 SE_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "D95cc9TGmWbPC8em", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1C-all.json index 0d8c23a2e7..5f883ca259 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic ABS @K1C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "CGDrkpaby0ZdpoSH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "CGDrkpaby0ZdpoSH", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json index 888b283059..1877f70bc7 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1C_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic ABS @K1C_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "eMQXlXLK9wyeqYEx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1C_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "eMQXlXLK9wyeqYEx", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json index 58d749dea3..2621ca7398 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K1_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic ABS @K1_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "3YcpDd1XsJKf2T02", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K1_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "3YcpDd1XsJKf2T02", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json index 425411f466..93a01f5a2d 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 Plus-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Generic ABS @K2 Plus-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "ju8Vp3ee2mBYGzKr", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K2 Plus-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "ju8Vp3ee2mBYGzKr", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json index a03c0fbfcb..7b20d35951 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 Pro-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "Generic ABS @K2 Pro-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "CKz3942iA5I2gfaA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K2 Pro-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "CKz3942iA5I2gfaA", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json b/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json index 846dc3b748..b711a5eefd 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2 SE-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "Generic ABS @K2 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "PdjEPWVOSloevfUZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K2 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "PdjEPWVOSloevfUZ", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ABS @K2-all.json b/resources/profiles/Creality/filament/Generic ABS @K2-all.json index 0eefa273a9..15ecff7328 100644 --- a/resources/profiles/Creality/filament/Generic ABS @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ABS @K2-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic ABS @K2-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "v8K9u7osBIzsrQCh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFY9muEs" -} \ No newline at end of file + "type": "filament", + "name": "Generic ABS @K2-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "v8K9u7osBIzsrQCh", + "filament_id": "OFY9muEs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json index 0fa424b522..66cb8a6eb8 100644 --- a/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ASA @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic ASA @Ender-5Max-all;Creality Generic ASA Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "7qyRWm8KXa1YUPpl", "filament_id": "OFLPAxz3", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "0.85", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "ASA" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json index 6f9ee6971e..f4b1fd74fb 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 Max_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic ASA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "JS8oDrWmlTmmZ9VJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "JS8oDrWmlTmmZ9VJ", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json index d5850749d2..81854fca9b 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 SE-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "Generic ASA @K1 SE-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "XK0E9L6nEGz9410w", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "55", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1 SE-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "XK0E9L6nEGz9410w", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "55", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json index 8894ee7af1..450ccb9a72 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1 SE_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "Generic ASA @K1 SE_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "U4HDFaHTS7EtgCJj", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "55", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1 SE_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "U4HDFaHTS7EtgCJj", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "55", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K1C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1C-all.json index 2669b08f43..3d8bdcc19e 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic ASA @K1C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "Yya6SGcDEMvAKLYs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "Yya6SGcDEMvAKLYs", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json index 0a5dc5d18a..46af0e1676 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1C_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic ASA @K1C_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "1nVS1yN0psDyFajd", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1C_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "1nVS1yN0psDyFajd", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json index 33cf5b2860..f94d0c06f5 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K1_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic ASA @K1_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "62EZvOkMH6gWc6CU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K1_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "62EZvOkMH6gWc6CU", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json index f1bdbc1310..d67a15b081 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 Plus-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic ASA @K2 Plus-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "bPiPJ2MrgMOq01jX", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K2 Plus-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "bPiPJ2MrgMOq01jX", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "40" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "5" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json index 346f7bfec6..6ed2f4deed 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 Pro-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "Generic ASA @K2 Pro-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "RScrAM7qssIS1RQC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "40" - ], - "fan_max_speed": [ - "90" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "100" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.032", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K2 Pro-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "RScrAM7qssIS1RQC", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "90" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.032", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json b/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json index 758d45606e..ef2fe096e9 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2 SE-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "Generic ASA @K2 SE-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "B3KqWjy2YfMDxjbS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K2 SE-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "B3KqWjy2YfMDxjbS", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA @K2-all.json b/resources/profiles/Creality/filament/Generic ASA @K2-all.json index 68b9b71b9e..0b12417aa3 100644 --- a/resources/profiles/Creality/filament/Generic ASA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic ASA @K2-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Generic ASA @K2-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "nmVYYCCRebt7sRKj", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "20" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFLPAxz3" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA @K2-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "nmVYYCCRebt7sRKj", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "20" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json index f98421ad49..c31060aa30 100644 --- a/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic ASA-CF @K2 Plus-all.json @@ -1,148 +1,146 @@ { - "type": "filament", - "name": "Generic ASA-CF @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "DnKtg4yCiafeDBIu", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "40" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.2" - ], - "filament_flow_ratio": [ - "0.92" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_type": [ - "ASA-CF" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF53eLVD" -} \ No newline at end of file + "type": "filament", + "name": "Generic ASA-CF @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "DnKtg4yCiafeDBIu", + "filament_id": "OF53eLVD", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.2" + ], + "filament_flow_ratio": [ + "0.92" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_type": [ + "ASA-CF" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json b/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json index 33ac63d296..3395945ad0 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @Hi-all.json @@ -1,131 +1,129 @@ { - "type": "filament", - "name": "Generic BVOH @Hi-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "5HO5PysrHUKqReVb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "150" - ], - "filament_density": [ - "1.138" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @Hi-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "5HO5PysrHUKqReVb", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "150" + ], + "filament_density": [ + "1.138" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json index e0cfdb7090..62b0ea6edd 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1 Max_CFS-C-all.json @@ -1,162 +1,160 @@ { - "type": "filament", - "name": "Generic BVOH @K1 Max_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "rzpKPYQdPjzN3oVS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.138" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K1 Max_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "rzpKPYQdPjzN3oVS", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.138" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "7" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json index 9f2cbf4200..e1c3414cd5 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1C-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic BVOH @K1C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "sBNRrUUShVPgFlD2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.138" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K1C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "sBNRrUUShVPgFlD2", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.138" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "7" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json index e79e575992..e068c8e767 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1C_CFS-C-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic BVOH @K1C_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "F35hv7Jv8sdPpHuG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.138" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K1C_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "F35hv7Jv8sdPpHuG", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.138" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "7" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json index 9bd399cbf0..34418ac001 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K1_CFS-C-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic BVOH @K1_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "quzQIkhGomoTlGMy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.138" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "7" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K1_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "quzQIkhGomoTlGMy", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.138" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "7" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json index c525c695d7..efbf6d921a 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2 Plus-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic BVOH @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "s7taqaFnDhBFXnJQ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.138" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "s7taqaFnDhBFXnJQ", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.138" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json index 4d3492a70f..671072f839 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2 Pro-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic BVOH @K2 Pro-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "WN4gUC7lL433UeUa", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "150" - ], - "filament_density": [ - "1.138" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K2 Pro-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "WN4gUC7lL433UeUa", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "150" + ], + "filament_density": [ + "1.138" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic BVOH @K2-all.json b/resources/profiles/Creality/filament/Generic BVOH @K2-all.json index 1f8bea7aef..bd5c265ca3 100644 --- a/resources/profiles/Creality/filament/Generic BVOH @K2-all.json +++ b/resources/profiles/Creality/filament/Generic BVOH @K2-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic BVOH @K2-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "appeb6xRpTFbyGsM", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "150" - ], - "filament_density": [ - "1.138" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "BVOH" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "filament_adhesiveness_category": "797", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFo2UF2C" -} \ No newline at end of file + "type": "filament", + "name": "Generic BVOH @K2-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "appeb6xRpTFbyGsM", + "filament_id": "OFo2UF2C", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "150" + ], + "filament_density": [ + "1.138" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "BVOH" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "filament_adhesiveness_category": "797", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json index 9549195611..68517664f2 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1 Max_CFS-C-all.json @@ -1,173 +1,171 @@ { - "type": "filament", - "name": "Generic HIPS @K1 Max_CFS-C-all", - "inherits": "fdm_filament_hips", - "from": "system", - "setting_id": "un4bn2cxbFdGO3DR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "HIPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFsFon5l" -} \ No newline at end of file + "type": "filament", + "name": "Generic HIPS @K1 Max_CFS-C-all", + "inherits": "fdm_filament_hips", + "from": "system", + "setting_id": "un4bn2cxbFdGO3DR", + "filament_id": "OFsFon5l", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "HIPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json index 5016c1e5a5..1b5d0ceaaf 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic HIPS @K1C-all", - "inherits": "fdm_filament_hips", - "from": "system", - "setting_id": "e1wQQnbsFK0eOT76", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "HIPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFsFon5l" -} \ No newline at end of file + "type": "filament", + "name": "Generic HIPS @K1C-all", + "inherits": "fdm_filament_hips", + "from": "system", + "setting_id": "e1wQQnbsFK0eOT76", + "filament_id": "OFsFon5l", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "HIPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json index 33950552d8..21f3ff5869 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1C_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic HIPS @K1C_CFS-C-all", - "inherits": "fdm_filament_hips", - "from": "system", - "setting_id": "5ZZon4W5GRf2ilKk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "HIPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFsFon5l" -} \ No newline at end of file + "type": "filament", + "name": "Generic HIPS @K1C_CFS-C-all", + "inherits": "fdm_filament_hips", + "from": "system", + "setting_id": "5ZZon4W5GRf2ilKk", + "filament_id": "OFsFon5l", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "HIPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json index 7b1ab3190b..20dac07db8 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K1_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic HIPS @K1_CFS-C-all", - "inherits": "fdm_filament_hips", - "from": "system", - "setting_id": "81vAelQ8KbUPkNAL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "HIPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFsFon5l" -} \ No newline at end of file + "type": "filament", + "name": "Generic HIPS @K1_CFS-C-all", + "inherits": "fdm_filament_hips", + "from": "system", + "setting_id": "81vAelQ8KbUPkNAL", + "filament_id": "OFsFon5l", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "HIPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json index 255e9e8b6e..e24516c121 100644 --- a/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic HIPS @K2 Plus-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic HIPS @K2 Plus-all", - "inherits": "fdm_filament_hips", - "from": "system", - "setting_id": "eaR3AeSZnfqfAKaX", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.05" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "HIPS" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFsFon5l" -} \ No newline at end of file + "type": "filament", + "name": "Generic HIPS @K2 Plus-all", + "inherits": "fdm_filament_hips", + "from": "system", + "setting_id": "eaR3AeSZnfqfAKaX", + "filament_id": "OFsFon5l", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.05" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "HIPS" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json index 500722f1e9..ce836188d0 100644 --- a/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PA @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PA @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic PA @Ender-5Max-all;Creality Generic PA Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "ChQOX6JlKujFwFcB", "filament_id": "OFg8ndtj", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "0.9", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "PA" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json index 12c3698ca6..2485bd9622 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1 Max_CFS-C-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Generic PA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "kJAlbLyNyUBh772X", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "kJAlbLyNyUBh772X", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K1C-all.json b/resources/profiles/Creality/filament/Generic PA @K1C-all.json index 310dfb7abd..95bc3ec40d 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PA @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "Y68qR47SYWUENSKm", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "Y68qR47SYWUENSKm", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json index 0d134ae474..c398f7f3ac 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1C_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PA @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "VtABl7yMx0yDOnz0", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "VtABl7yMx0yDOnz0", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json index 1396769307..58121767fa 100644 --- a/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K1_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PA @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "ivl9C3evnuPMgB0F", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "ivl9C3evnuPMgB0F", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json index 950b84e7f0..61984bcc11 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2 Plus-all.json @@ -1,183 +1,181 @@ { - "type": "filament", - "name": "Generic PA @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "E5tvF6Xpv7jZzLgm", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "E5tvF6Xpv7jZzLgm", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json index c8ddd05024..7eb34e526c 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2 Pro-all.json @@ -1,196 +1,194 @@ { - "type": "filament", - "name": "Generic PA @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "0139pzgdlOAScB7g", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.058", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "0139pzgdlOAScB7g", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.058", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA @K2-all.json b/resources/profiles/Creality/filament/Generic PA @K2-all.json index b98aac22a0..8993af315d 100644 --- a/resources/profiles/Creality/filament/Generic PA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PA @K2-all.json @@ -1,196 +1,194 @@ { - "type": "filament", - "name": "Generic PA @K2-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "gxCrQfCHpKO4p5IT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.12" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.058", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFg8ndtj" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA @K2-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "gxCrQfCHpKO4p5IT", + "filament_id": "OFg8ndtj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.12" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.058", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json index c047fb7774..7ec3b0c3e8 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1 Max_CFS-C-all.json @@ -1,152 +1,150 @@ { - "type": "filament", - "name": "Generic PA-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "jEl76gFz2QQyvW6A", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "45" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQLcbps" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "jEl76gFz2QQyvW6A", + "filament_id": "OFQLcbps", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "45" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json index 360ecbf35b..c4eeb50de9 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1C-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PA-CF @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "eGoj7kJxL2NfqY5o", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "45" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFQLcbps" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA-CF @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "eGoj7kJxL2NfqY5o", + "filament_id": "OFQLcbps", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "45" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json index 022474e6f1..ac5d2c00c8 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1C_CFS-C-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PA-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "zbiMNXMvHACEqLfK", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "45" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQLcbps" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "zbiMNXMvHACEqLfK", + "filament_id": "OFQLcbps", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "45" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json index 40586091b0..8e3ed28c4d 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K1_CFS-C-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PA-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "DB1549abK4ZDVWG2", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "5" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "45" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "2" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.01", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQLcbps" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "DB1549abK4ZDVWG2", + "filament_id": "OFQLcbps", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "45" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.01", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json index 0b0042c6c8..f8a9f12be6 100644 --- a/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA-CF @K2 Plus-all.json @@ -1,182 +1,180 @@ { - "type": "filament", - "name": "Generic PA-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "aBR3ODfDoxJOLx8k", - "instantiation": "true", - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "45" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "2" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFQLcbps" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "aBR3ODfDoxJOLx8k", + "filament_id": "OFQLcbps", + "instantiation": "true", + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "45" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json index fb65088525..309c16cda1 100644 --- a/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA12-CF @K2 Plus-all.json @@ -1,182 +1,180 @@ { - "type": "filament", - "name": "Generic PA12-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "rZP36BUTvc68sHWI", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "120" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFM4iJlv" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA12-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "rZP36BUTvc68sHWI", + "filament_id": "OFM4iJlv", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "120" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json index 04260f4d8e..23230df015 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1 Max_CFS-C-all.json @@ -1,188 +1,186 @@ { - "type": "filament", - "name": "Generic PA6-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "QSCyT35VNEEMhvud", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "QSCyT35VNEEMhvud", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json index b141bc04ec..0189d06e7b 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PA6-CF @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "fhFfYR7jZE4EbV0j", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "fhFfYR7jZE4EbV0j", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json index 6dd6902397..905c209072 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1C_CFS-C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PA6-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "Go0O3gXzk3QyyBGk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "Go0O3gXzk3QyyBGk", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json index 9c70b899f0..f0fc90ad44 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K1_CFS-C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PA6-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "dOmhoYus5mupLjle", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "dOmhoYus5mupLjle", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json index 75cd58773a..dbfa45091c 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Plus-all.json @@ -1,191 +1,189 @@ { - "type": "filament", - "name": "Generic PA6-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "3UftFI9726wU6cBK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "3UftFI9726wU6cBK", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json index 6388151090..91f79c1377 100644 --- a/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-CF @K2 Pro-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Generic PA6-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "p6hDaLrNJvnvejQv", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "50" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA6-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFhTPf6L" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "p6hDaLrNJvnvejQv", + "filament_id": "OFhTPf6L", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "50" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json index 5919945b58..927a1c8016 100644 --- a/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA6-GF @K2 Plus-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PA6-GF @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "Snwr9UFekvFcj8lx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "42" - ], - "filament_density": [ - "1.2" - ], - "filament_flow_ratio": [ - "0.88" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retraction_length": [ - "0.5" - ], - "filament_type": [ - "PA-GF" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "60" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "2" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFh9u9c0" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA6-GF @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "Snwr9UFekvFcj8lx", + "filament_id": "OFh9u9c0", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "42" + ], + "filament_density": [ + "1.2" + ], + "filament_flow_ratio": [ + "0.88" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_type": [ + "PA-GF" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "60" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json index d1decb74cc..f4e776ceae 100644 --- a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Plus-all.json @@ -1,182 +1,180 @@ { - "type": "filament", - "name": "Generic PA612-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "Od0K6cY5fZtDAOOF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.17" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF8eaY7j" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA612-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "Od0K6cY5fZtDAOOF", + "filament_id": "OF8eaY7j", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.17" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json index 5ccb21724d..972a0ccd17 100644 --- a/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PA612-CF @K2 Pro-all.json @@ -1,184 +1,182 @@ { - "type": "filament", - "name": "Generic PA612-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "YZr7lxLJZjL71WzO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.17" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF8eaY7j" -} \ No newline at end of file + "type": "filament", + "name": "Generic PA612-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "YZr7lxLJZjL71WzO", + "filament_id": "OF8eaY7j", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.17" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json index 3e007d79c6..d8b314ffdb 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1 Max_CFS-C-all.json @@ -1,197 +1,195 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "Q6f7jvJqw2gyNBFZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "Q6f7jvJqw2gyNBFZ", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json index dcc9738515..559df69e3a 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C-all.json @@ -1,198 +1,196 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "Rt7TNUSJlBGzxbcN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "Rt7TNUSJlBGzxbcN", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json index 2f5ae88e9d..7d1ea509cb 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1C_CFS-C-all.json @@ -1,198 +1,196 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "CbUS1kiIgsHTZa28", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "CbUS1kiIgsHTZa28", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json index e7ffe11efa..c42e41adf4 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K1_CFS-C-all.json @@ -1,198 +1,196 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "71tO55hudcpbpReV", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "71tO55hudcpbpReV", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json index 8d4157e8cd..05d9ace84a 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Plus-all.json @@ -1,197 +1,195 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "p3nXM3BSnsmS2XHO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "p3nXM3BSnsmS2XHO", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json index a013abb416..d752fdf84d 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2 Pro-all.json @@ -1,184 +1,182 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "gwXDISorxlzhqE2L", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "gwXDISorxlzhqE2L", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json index e8032a6b4c..4756391f64 100644 --- a/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PAHT-CF @K2-all.json @@ -1,184 +1,182 @@ { - "type": "filament", - "name": "Generic PAHT-CF @K2-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "OK8a49qQ1ooSpYKe", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFH7b12v" -} \ No newline at end of file + "type": "filament", + "name": "Generic PAHT-CF @K2-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "OK8a49qQ1ooSpYKe", + "filament_id": "OFH7b12v", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json index 67c0d17aa6..65f146c1f4 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1 Max_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PC @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "Dh2hSCE4xEmmv601", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "Dh2hSCE4xEmmv601", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K1C-all.json b/resources/profiles/Creality/filament/Generic PC @K1C-all.json index 30bb957e88..fc13d05730 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PC @K1C-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "KWaWn7qw5WFhxP6u", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K1C-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "KWaWn7qw5WFhxP6u", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json index 450b46b2af..19b0ebd6e6 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1C_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PC @K1C_CFS-C-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "YXZbtzq7xTHm1L1k", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K1C_CFS-C-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "YXZbtzq7xTHm1L1k", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json index 353610592a..9788c706b6 100644 --- a/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K1_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PC @K1_CFS-C-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "ZzPtJF9WrqfZa29N", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K1_CFS-C-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "ZzPtJF9WrqfZa29N", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json index e4a1d358f7..5a489077b9 100644 --- a/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K2 Plus-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PC @K2 Plus-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "3knMGS1s49r6Z9eL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "cool_plate_temp_initial_layer": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K2 Plus-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "3knMGS1s49r6Z9eL", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "cool_plate_temp_initial_layer": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json index 99c3232a10..d2e6e6bc9c 100644 --- a/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PC @K2 Pro-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Generic PC @K2 Pro-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "CSAIxm75n407CqTG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "1.18" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFLakOUI" -} \ No newline at end of file + "type": "filament", + "name": "Generic PC @K2 Pro-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "CSAIxm75n407CqTG", + "filament_id": "OFLakOUI", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "1.18" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json index c84c58a220..c83a904526 100644 --- a/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PCTG @K2 Plus-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic PCTG @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "zmSP0G2uQvugDqZs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "40" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PCTG" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.13", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFu1evlr" -} \ No newline at end of file + "type": "filament", + "name": "Generic PCTG @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "zmSP0G2uQvugDqZs", + "filament_id": "OFu1evlr", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PCTG" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.13", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json index 047bacd756..e50ac427e6 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1 Max_CFS-C-all.json @@ -1,188 +1,186 @@ { - "type": "filament", - "name": "Generic PET @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "rbuxBWsJ43mXgEIi", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "rbuxBWsJ43mXgEIi", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K1C-all.json b/resources/profiles/Creality/filament/Generic PET @K1C-all.json index ae435635dd..c07ef2c0d9 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PET @K1C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "yblsYcRQlWMPyE2X", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K1C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "yblsYcRQlWMPyE2X", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json index 93e9cd11f0..cb81e6743c 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1C_CFS-C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PET @K1C_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "Yhi1n5iQJpQPQQAp", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K1C_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "Yhi1n5iQJpQPQQAp", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json index 4e860053d9..0dca9e321e 100644 --- a/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K1_CFS-C-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "Generic PET @K1_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "HrEHGzilsq8F3ne7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K1_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "HrEHGzilsq8F3ne7", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json index cf56f3c9af..6ea61d280b 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2 Plus-all.json @@ -1,192 +1,190 @@ { - "type": "filament", - "name": "Generic PET @K2 Plus-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "OFMSlAPXoITrhmPG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "95" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K2 Plus-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "OFMSlAPXoITrhmPG", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "95" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json index 4da77efe33..8d19366d15 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2 Pro-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Generic PET @K2 Pro-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "fIxga8QpAboN7reJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "95" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.13", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K2 Pro-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "fIxga8QpAboN7reJ", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "95" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.13", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET @K2-all.json b/resources/profiles/Creality/filament/Generic PET @K2-all.json index ef761807b0..13dbc77901 100644 --- a/resources/profiles/Creality/filament/Generic PET @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PET @K2-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Generic PET @K2-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "K7DNfNNpWlGriQip", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "95" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF6MOPWx" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET @K2-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "K7DNfNNpWlGriQip", + "filament_id": "OF6MOPWx", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "95" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json index 4c9fadfbc6..55792e2c7d 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1 Max_CFS-C-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "Generic PET-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "iAykK8PMYs9LdxrP", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "iAykK8PMYs9LdxrP", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json index e98f8773a6..e8a239cf78 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1C-all.json @@ -1,177 +1,175 @@ { - "type": "filament", - "name": "Generic PET-CF @K1C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "WhGF57kMBW9hM9zv", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K1C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "WhGF57kMBW9hM9zv", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json index 36c9dc92a6..87742e819e 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1C_CFS-C-all.json @@ -1,177 +1,175 @@ { - "type": "filament", - "name": "Generic PET-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "IiR1UEHx5RrOeAWM", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "IiR1UEHx5RrOeAWM", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json index c1955e0667..db7b7602d8 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K1_CFS-C-all.json @@ -1,177 +1,175 @@ { - "type": "filament", - "name": "Generic PET-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "2a9xvwlw1X0qsA26", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "2a9xvwlw1X0qsA26", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json index 44eb974cdf..d35cb1556c 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K2 Plus-all.json @@ -1,195 +1,193 @@ { - "type": "filament", - "name": "Generic PET-CF @K2 Plus-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "srmb3jsHHpFDnfsp", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.034", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K2 Plus-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "srmb3jsHHpFDnfsp", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.034", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json index ddfb603d30..30a47753d0 100644 --- a/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PET-CF @K2 Pro-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Generic PET-CF @K2 Pro-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "5tjKAfZmtCNClyrd", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "290" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "40", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFQdaVZS" -} \ No newline at end of file + "type": "filament", + "name": "Generic PET-CF @K2 Pro-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "5tjKAfZmtCNClyrd", + "filament_id": "OFQdaVZS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "40", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json index df6509395f..e9a463bd1a 100644 --- a/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic PETG @Ender-5Max-all;Creality Generic PETG Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "TFS4Fi1PuE7WgnPr", "filament_id": "OFYPdQJh", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "0.85", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json index cbdc915a23..072a4e3f7e 100644 --- a/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic PETG @Ender-3 V4-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "P9ZP95oPCCBeXhGC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "16" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,230],[1.0,230],[1.2,250]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @Ender-3 V4-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "P9ZP95oPCCBeXhGC", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "16" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,230],[1.0,230],[1.2,250]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @Hi-all.json b/resources/profiles/Creality/filament/Generic PETG @Hi-all.json index 32b171416b..a36395f952 100644 --- a/resources/profiles/Creality/filament/Generic PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @Hi-all.json @@ -1,151 +1,149 @@ { - "type": "filament", - "name": "Generic PETG @Hi-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "1N9muT0ILCJ7pdQq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220],[1.1,220],[1.3,250]]", - "pressure_advance": "0.078", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @Hi-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "1N9muT0ILCJ7pdQq", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220],[1.1,220],[1.3,250]]", + "pressure_advance": "0.078", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json index 40fecf5d33..1666762dad 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 Max_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Generic PETG @K1 Max_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "j2R2SrPu6U5fde21", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe": [ - "1" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1 Max_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "j2R2SrPu6U5fde21", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_type": [ + "PETG" + ], + "filament_wipe": [ + "1" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json index e82036ef1c..c1d8612475 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 SE-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PETG @K1 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "ktn07NL2acbf4FzZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,240]]", - "pressure_advance": "0.086", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "ktn07NL2acbf4FzZ", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,240]]", + "pressure_advance": "0.086", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json index 649d2057b3..917188d870 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1 SE_CFS-C-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PETG @K1 SE_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "8isRtWlMhY6f6OTg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,240]]", - "pressure_advance": "0.086", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1 SE_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "8isRtWlMhY6f6OTg", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,230],[6.0,240],[10.0,240]]", + "pressure_advance": "0.086", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1C-all.json index 5d05e2a977..2e368f0e59 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Generic PETG @K1C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "983sxUds4Bih3OCl", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe": [ - "1" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "983sxUds4Bih3OCl", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_type": [ + "PETG" + ], + "filament_wipe": [ + "1" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json index 7f7459382a..a614803613 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1C_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Generic PETG @K1C_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "rMTi8mSKdtnzsMbr", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe": [ - "1" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1C_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "rMTi8mSKdtnzsMbr", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_type": [ + "PETG" + ], + "filament_wipe": [ + "1" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json index 568b5a1cf5..6c81dc803e 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K1_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Generic PETG @K1_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "9Ay01Nq2Dv2SfQVR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe": [ - "1" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K1_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "9Ay01Nq2Dv2SfQVR", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_type": [ + "PETG" + ], + "filament_wipe": [ + "1" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,235], [1.3,250]]", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json index 6b10eac4c6..4704b0e89c 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 Plus-all.json @@ -1,142 +1,140 @@ { - "type": "filament", - "name": "Generic PETG @K2 Plus-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "z4vClzn8RViHNLgk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K2 Plus-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "z4vClzn8RViHNLgk", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json index 5d007dfff3..d819485f07 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 Pro-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PETG @K2 Pro-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "huEA8Ry63opxcD4n", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_type": [ - "PETG" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,220],[1.1,220],[1.3,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K2 Pro-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "huEA8Ry63opxcD4n", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_type": [ + "PETG" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,220],[1.1,220],[1.3,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json index 69af8255c5..1de0675bdb 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2 SE-all.json @@ -1,152 +1,150 @@ { - "type": "filament", - "name": "Generic PETG @K2 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "awADayXExBihbXgS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.24" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K2 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "awADayXExBihbXgS", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @K2-all.json b/resources/profiles/Creality/filament/Generic PETG @K2-all.json index a8e2308613..3d1e74f03b 100644 --- a/resources/profiles/Creality/filament/Generic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @K2-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Generic PETG @K2-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "7iDx59I7g14YDF8w", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "35" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "95" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "16" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.0,220],[1.2,250]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @K2-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "7iDx59I7g14YDF8w", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "95" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "16" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.0,220],[1.2,250]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json index 301fc96ef9..a7c58188b0 100644 --- a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic PETG @SPARKX i7-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "5jgqjcjpqHPzxm6H", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "14" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,240],[1.2,250]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OFYPdQJh" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG @SPARKX i7-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "5jgqjcjpqHPzxm6H", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "14" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,240],[1.2,250]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json index 5f03c5b211..38eea406a6 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1 Max_CFS-C-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Generic PETG-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "4aNmHiMKdF9f0qdK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "4aNmHiMKdF9f0qdK", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json index 4044297ea9..43d2d6d056 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PETG-CF @K1C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "J9U6OONEnIpwmjf1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K1C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "J9U6OONEnIpwmjf1", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json index 5c22d3e902..055dc6c674 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1C_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PETG-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "WaKz2m5F97gq2Lm2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "WaKz2m5F97gq2Lm2", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json index 00f8180634..8c516d09b8 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K1_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PETG-CF @K1_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "37j0QrLekeU2z2q6", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K1_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "37j0QrLekeU2z2q6", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json index 5ed6aa15ea..eb1bb1e4eb 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Plus-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Generic PETG-CF @K2 Plus-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "OEzFehmwiMscMC7x", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K2 Plus-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "OEzFehmwiMscMC7x", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json index a801d09c9b..6c85e2d3e4 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2 Pro-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Generic PETG-CF @K2 Pro-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "XNo4wgLuyPeOqInw", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K2 Pro-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "XNo4wgLuyPeOqInw", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json index a2b844f80f..72452d8af0 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @K2-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Generic PETG-CF @K2-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "LrzCY2ZsMGzQ9hZW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.26" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @K2-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "LrzCY2ZsMGzQ9hZW", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.26" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json index 954782024a..5dd48f17a3 100644 --- a/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-CF @SPARKX i7-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PETG-CF @SPARKX i7-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "0UI0C81wu0FTlutg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "90" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", - "pressure_advance": "0.024", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFoYSJKi" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-CF @SPARKX i7-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "0UI0C81wu0FTlutg", + "filament_id": "OFoYSJKi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", + "pressure_advance": "0.024", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json index 63dead723c..de7c1c7cbe 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Plus-all.json @@ -1,152 +1,150 @@ { - "type": "filament", - "name": "Generic PETG-GF @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "Bn3MV8VSTFbpxsJK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "17" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "0.5" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PETG-GF" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFyLWVF3" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-GF @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "Bn3MV8VSTFbpxsJK", + "filament_id": "OFyLWVF3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "17" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PETG-GF" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json index 5405f7dbcd..fc176da918 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2 Pro-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Generic PETG-GF @K2 Pro-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "Q5qYSWKf0YGbomey", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "17" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFyLWVF3" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-GF @K2 Pro-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "Q5qYSWKf0YGbomey", + "filament_id": "OFyLWVF3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "17" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json b/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json index 7d52685214..8a5ffa2ac2 100644 --- a/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PETG-GF @K2-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Generic PETG-GF @K2-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "mirtPgYBmAcUOLCg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "17" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "filament_vendor": [ - "Generic" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFyLWVF3" -} \ No newline at end of file + "type": "filament", + "name": "Generic PETG-GF @K2-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "mirtPgYBmAcUOLCg", + "filament_id": "OFyLWVF3", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "17" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "filament_vendor": [ + "Generic" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json index ff55c41e81..f4714b8acc 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic PLA @Ender-5Max-all;Creality Generic PLA Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "xGTd14Qwc0JbI6kg", "filament_id": "OFDSrzZ8", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "0.9", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json b/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json index 452c7854ae..9bdc93548b 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Creality Hi-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Creality Hi-all", - "inherits": "Generic PLA @Creality", "renamed_from": "Creality Generic PLA @Hi-all;Creality Generic PLA Hi-all", + "inherits": "Generic PLA @Creality", "from": "system", "setting_id": "6rwK4GqvNrgaw4kF", "instantiation": "true", @@ -45,9 +45,6 @@ "filament_cooling_moves": [ "4" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -57,9 +54,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json index ce8231d11a..112c869ae8 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Ender-3 V4-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PLA @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "prD5vMrpYGccWzdn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "prD5vMrpYGccWzdn", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA @Hi-all.json index 43bb0786ea..25ca83f1c6 100644 --- a/resources/profiles/Creality/filament/Generic PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @Hi-all.json @@ -1,142 +1,140 @@ { - "type": "filament", - "name": "Generic PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "eza77EPrdoTvZdw7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.8 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "eza77EPrdoTvZdw7", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json index 315347fc4f..291aca3b0d 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 Max_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "Generic PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ARsPmEmVZlsfqy4L", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "45" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ARsPmEmVZlsfqy4L", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "45" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "45" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json index 11bd5fd68a..4b4e3e0125 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 SE-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "Generic PLA @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ZzKNiMtyn93fR8Hq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ZzKNiMtyn93fR8Hq", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json index 167ef73d00..60212b6a51 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1 SE_CFS-C-all.json @@ -1,141 +1,139 @@ { - "type": "filament", - "name": "Generic PLA @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "grHcTUEdjD6jxza1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,230]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "grHcTUEdjD6jxza1", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,230]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1C-all.json index 7cad23ed0e..d242a5b389 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "Generic PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "qSoHwF6RKEDk9oy0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "45" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "qSoHwF6RKEDk9oy0", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "45" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "45" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json index 50db3c5fb5..80affeffc9 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1C_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "Generic PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "5oIZY7x0t6ORAd5y", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "45" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "5oIZY7x0t6ORAd5y", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "45" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "45" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json index ddbc57ab8d..ab014109f1 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K1_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "Generic PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "LVSGrfS4cac3vRgQ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "45" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "45" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "LVSGrfS4cac3vRgQ", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "45" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "45" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json index 6514b99d50..530e929d3a 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zgZhX3yZ3m9HZ8AF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zgZhX3yZ3m9HZ8AF", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "6" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json index 96eafd022b..a4d6fb7509 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 Pro-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "umMGfkURWkPH7wY2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "umMGfkURWkPH7wY2", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json index f8e0beaefe..a229efd77e 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2 SE-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Generic PLA @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "03mMqzkFvH7rS8wz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "03mMqzkFvH7rS8wz", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @K2-all.json b/resources/profiles/Creality/filament/Generic PLA @K2-all.json index ee71e52517..ab794d1dec 100644 --- a/resources/profiles/Creality/filament/Generic PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @K2-all.json @@ -1,162 +1,160 @@ { - "type": "filament", - "name": "Generic PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "WD6bTDOOwBE72RaU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190],[1.2,190],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "WD6bTDOOwBE72RaU", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190],[1.2,190],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json index 07d9aa02e0..bfa143866e 100644 --- a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "09RAKy1b3XyRqJlV", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.2,210],[0.6,220]]", - "pressure_advance": "0.12", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.2 nozzle", - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OFDSrzZ8" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "09RAKy1b3XyRqJlV", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.2,210],[0.6,220]]", + "pressure_advance": "0.12", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.2 nozzle", + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json index 3fd2827231..92e04c7694 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @Ender-3 V4-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Generic PLA-CF @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "9EtBYoxLtP3BuplP", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", - "pressure_advance": "0.028", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "9EtBYoxLtP3BuplP", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", + "pressure_advance": "0.028", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json index 698bdc2927..1cddecd143 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 Max_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "gMlu34zMrx0IX0GY", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "gMlu34zMrx0IX0GY", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json index 57228d8b7f..74e0bd293d 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "kCiZBqAiO5Jc8RgA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "kCiZBqAiO5Jc8RgA", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json index 647819f8ea..0757355a82 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1 SE_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "dCS3zA3Z3QmsUMav", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "dCS3zA3Z3QmsUMav", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json index ae3aa14a7a..062866dce8 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "6p7VGPRhpUjCVmrs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "6p7VGPRhpUjCVmrs", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json index 7c1b681b1e..0c4ef3d146 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1C_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "eL5STunwFpRYoNwx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "eL5STunwFpRYoNwx", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json index ab73ebe1ba..088a22bf9c 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K1_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "RGCRo5t8SRI85Oyz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "RGCRo5t8SRI85Oyz", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json index 381f25f899..f6adbdd926 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Plus-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Generic PLA-CF @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "nZoZ1KL4YYwCdBYo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "nZoZ1KL4YYwCdBYo", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json index f1ce0ce42d..c9a217569f 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 Pro-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "eXbFz3H9NBjDv3fy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "eXbFz3H9NBjDv3fy", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json index 4dab8f0c8a..f0da0a4507 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2 SE-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Generic PLA-CF @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "4PnBWB1vn3jXYDcV", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "4PnBWB1vn3jXYDcV", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json index 111ac7470a..e234a96124 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @K2-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic PLA-CF @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Vp7iPE7R08sUpbNM", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Vp7iPE7R08sUpbNM", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json index 4184a05737..3f01d3a846 100644 --- a/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-CF @SPARKX i7-all.json @@ -1,183 +1,181 @@ { - "type": "filament", - "name": "Generic PLA-CF @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "KnXh5yN3mZ1zFs7t", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210][1.2,230]]", - "pressure_advance": "0.023", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFWbdGsC" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-CF @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "KnXh5yN3mZ1zFs7t", + "filament_id": "OFWbdGsC", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210][1.2,230]]", + "pressure_advance": "0.023", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json index da5c1ba172..b1f9ee266f 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @Ender-3 V4-all.json @@ -1,147 +1,145 @@ { - "type": "filament", - "name": "Generic PLA-Silk @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "4oKiaxCpzOVuq7JT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "16" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.068", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "4oKiaxCpzOVuq7JT", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "16" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.068", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json index a3dfac28d1..c793b2490e 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @Hi-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PLA-Silk @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "yiXBAJwZHe0yW8MN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", - "pressure_advance": "0.026", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "yiXBAJwZHe0yW8MN", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,195],[1.0,195],[1.2,220]]", + "pressure_advance": "0.026", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json index c7ce2639ae..e0a29c56c5 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 Max_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "a8WrKJxnm4xNe1HK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "a8WrKJxnm4xNe1HK", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json index 418248ed71..4f67885551 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "inmumMkeEas0Maw3", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "inmumMkeEas0Maw3", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json index 1ba33bf6dc..8f6c7fdadc 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1 SE_CFS-C-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "WaWMHS0yaaoiG98Q", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "80" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "WaWMHS0yaaoiG98Q", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[12.0,210],[18.0,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json index f37ef16d31..9d1700be22 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GpGBUE0LBkVKGtO1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GpGBUE0LBkVKGtO1", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json index 1b4298f035..2b2d9151a3 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1C_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "cZIEiMZQbIcvP57r", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "cZIEiMZQbIcvP57r", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json index f81638a23f..2fe542ff60 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K1_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "jJ8kRNXq2iz98qTh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "jJ8kRNXq2iz98qTh", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,205], [1.1,205], [1.4,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json index 50f7dac4eb..406d0e71d7 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "8DTZKlZEArr9Exd7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "8DTZKlZEArr9Exd7", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json index 2c18b858e8..3c7d1e7373 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 Pro-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "hzbRwh2RichDUBMU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "hzbRwh2RichDUBMU", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.4,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json index 8b7030ff73..bbd1c2802e 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2 SE-all.json @@ -1,137 +1,135 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GdPDY6XouAmn2Sw4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GdPDY6XouAmn2Sw4", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json index 5826a18ba9..3806eba238 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @K2-all.json @@ -1,162 +1,160 @@ { - "type": "filament", - "name": "Generic PLA-Silk @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "VhDF33Mt4h0SUIZH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "95" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "VhDF33Mt4h0SUIZH", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "95" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json index e67d570ad4..730f709814 100644 --- a/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA-Silk @SPARKX i7-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Generic PLA-Silk @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "veZcyFoa3uiS0oel", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.3,215],[1.6,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFi6PfUM" -} \ No newline at end of file + "type": "filament", + "name": "Generic PLA-Silk @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "veZcyFoa3uiS0oel", + "filament_id": "OFi6PfUM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.3,215],[1.6,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json index 7aec44400e..91c5497f52 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1 Max_CFS-C-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Generic PP @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "SpL486LVpIbISfQj", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PP" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "SpL486LVpIbISfQj", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PP" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K1C-all.json b/resources/profiles/Creality/filament/Generic PP @K1C-all.json index ad01f49d51..a417e0d801 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic PP @K1C-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "iY30mqnBJOeybNin", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PP" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K1C-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "iY30mqnBJOeybNin", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PP" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json index fb56912bf1..e4d01f17b1 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1C_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic PP @K1C_CFS-C-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "27bAcMgt0jDcUvLF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PP" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K1C_CFS-C-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "27bAcMgt0jDcUvLF", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PP" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json index 88acdf3d32..bc2e1342f4 100644 --- a/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K1_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic PP @K1_CFS-C-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "8c9klBh6C7O76Lgc", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "30" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PP" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K1_CFS-C-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "8c9klBh6C7O76Lgc", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PP" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json index e34d70a902..9c04230e2a 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2 Plus-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PP @K2 Plus-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "sevgawCx7xvOFLXm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PP" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K2 Plus-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "sevgawCx7xvOFLXm", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PP" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json index e3167109d8..df4168d24e 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2 Pro-all.json @@ -1,142 +1,140 @@ { - "type": "filament", - "name": "Generic PP @K2 Pro-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "bAxYHHsv8COKiIFG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PP" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "45", - "customized_plate_temp_initial_layer": "45", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "35", - "epoxy_resin_plate_temp_initial_layer": "35", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K2 Pro-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "bAxYHHsv8COKiIFG", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PP" + ], + "hot_plate_temp": [ + "45" + ], + "hot_plate_temp_initial_layer": [ + "45" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "45" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "45", + "customized_plate_temp_initial_layer": "45", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "35", + "epoxy_resin_plate_temp_initial_layer": "35", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP @K2-all.json b/resources/profiles/Creality/filament/Generic PP @K2-all.json index 8f0075422c..5b033c2bb7 100644 --- a/resources/profiles/Creality/filament/Generic PP @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PP @K2-all.json @@ -1,142 +1,140 @@ { - "type": "filament", - "name": "Generic PP @K2-all", - "inherits": "fdm_filament_pp", - "from": "system", - "setting_id": "dMhTxpF3ipepME4p", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "40" - ], - "filament_density": [ - "0.91" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PP" - ], - "hot_plate_temp": [ - "45" - ], - "hot_plate_temp_initial_layer": [ - "45" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "45" - ], - "textured_plate_temp_initial_layer": [ - "45" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "45", - "customized_plate_temp_initial_layer": "45", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "35", - "epoxy_resin_plate_temp_initial_layer": "35", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.08", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF1UNk9P" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP @K2-all", + "inherits": "fdm_filament_pp", + "from": "system", + "setting_id": "dMhTxpF3ipepME4p", + "filament_id": "OF1UNk9P", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "0.91" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PP" + ], + "hot_plate_temp": [ + "45" + ], + "hot_plate_temp_initial_layer": [ + "45" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "45" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "45", + "customized_plate_temp_initial_layer": "45", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "35", + "epoxy_resin_plate_temp_initial_layer": "35", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.08", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json index e557ac36e4..53df078b03 100644 --- a/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PP-CF @K2 Plus-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic PP-CF @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "lHJWTFXiSKzWrX1A", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "23" - ], - "filament_density": [ - "1.01" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PP-CF" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFXkm8q1" -} \ No newline at end of file + "type": "filament", + "name": "Generic PP-CF @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "lHJWTFXiSKzWrX1A", + "filament_id": "OFXkm8q1", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "23" + ], + "filament_density": [ + "1.01" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PP-CF" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json index 01f7c52bc9..68a2c3a2d9 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1 Max_CFS-C-all.json @@ -1,173 +1,171 @@ { - "type": "filament", - "name": "Generic PPS @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "OCjDOWQ5tgZgZB0R", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.38" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "320" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "320" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFq9svOz" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "OCjDOWQ5tgZgZB0R", + "filament_id": "OFq9svOz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.38" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "320" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS @K1C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1C-all.json index 39a3449351..e29921dab2 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS @K1C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "9HAL1MdIgM7fyklo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.38" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "320" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "320" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFq9svOz" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS @K1C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "9HAL1MdIgM7fyklo", + "filament_id": "OFq9svOz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.38" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "320" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json index af12995572..440948c387 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1C_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS @K1C_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "DVtMTnkEsr8o5Vzh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.38" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "320" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "320" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFq9svOz" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS @K1C_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "DVtMTnkEsr8o5Vzh", + "filament_id": "OFq9svOz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.38" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "320" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json index dd22fcf107..6b2cd34fc7 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K1_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS @K1_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "2HTODPgc4aIZ3XG8", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.38" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "320" - ], - "nozzle_temperature_initial_layer": [ - "320" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "320" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFq9svOz" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS @K1_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "2HTODPgc4aIZ3XG8", + "filament_id": "OFq9svOz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.38" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "320" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json index deff12cad5..a48497fb88 100644 --- a/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PPS @K2 Plus-all.json @@ -1,151 +1,149 @@ { - "type": "filament", - "name": "Generic PPS @K2 Plus-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "nGEhRfiizC0emg2M", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.38" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_length": [ - "0.4" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "310" - ], - "nozzle_temperature_initial_layer": [ - "310" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_threshold": [ - "0%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFq9svOz" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS @K2 Plus-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "nGEhRfiizC0emg2M", + "filament_id": "OFq9svOz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.38" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "310" + ], + "nozzle_temperature_initial_layer": [ + "310" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_threshold": [ + "0%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json index f07eed6f9a..c845f5cc04 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1 Max_CFS-C-all.json @@ -1,173 +1,171 @@ { - "type": "filament", - "name": "Generic PPS-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "Lo64lIBBBOVC7X0f", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "130" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "305" - ], - "nozzle_temperature_initial_layer": [ - "305" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "305" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6rdQ6M" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "Lo64lIBBBOVC7X0f", + "filament_id": "OF6rdQ6M", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "130" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "305" + ], + "nozzle_temperature_initial_layer": [ + "305" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "305" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json index 78f5a33e87..69ea7be859 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS-CF @K1C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "IGMvRXBFMXKpLJmO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "130" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "305" - ], - "nozzle_temperature_initial_layer": [ - "305" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "305" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF6rdQ6M" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS-CF @K1C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "IGMvRXBFMXKpLJmO", + "filament_id": "OF6rdQ6M", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "130" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "305" + ], + "nozzle_temperature_initial_layer": [ + "305" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "305" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json index 8975f9792c..dc0e63e0b1 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1C_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "TaXzrJiCydy8MS3f", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "130" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "305" - ], - "nozzle_temperature_initial_layer": [ - "305" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "305" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6rdQ6M" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "TaXzrJiCydy8MS3f", + "filament_id": "OF6rdQ6M", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "130" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "305" + ], + "nozzle_temperature_initial_layer": [ + "305" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "305" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json index 11b1b3a155..4d4d30a0a7 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K1_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic PPS-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "KqN1ZnjnbBaLjVK5", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "130" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_flow_ratio": [ - "0.926" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_type": [ - "PPS-CF" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "305" - ], - "nozzle_temperature_initial_layer": [ - "305" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "305" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "3" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF6rdQ6M" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "KqN1ZnjnbBaLjVK5", + "filament_id": "OF6rdQ6M", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "130" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_type": [ + "PPS-CF" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "305" + ], + "nozzle_temperature_initial_layer": [ + "305" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "305" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "3" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json index 3bbcf8f992..e45f769de2 100644 --- a/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PPS-CF @K2 Plus-all.json @@ -1,144 +1,142 @@ { - "type": "filament", - "name": "Generic PPS-CF @K2 Plus-all", - "inherits": "fdm_filament_pps", - "from": "system", - "setting_id": "tIoEmhVZ47jiEg2Q", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "105" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "130" - ], - "filament_density": [ - "1.27" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PPS-CF" - ], - "hot_plate_temp": [ - "105" - ], - "hot_plate_temp_initial_layer": [ - "105" - ], - "nozzle_temperature": [ - "310" - ], - "nozzle_temperature_initial_layer": [ - "310" - ], - "nozzle_temperature_range_high": [ - "350" - ], - "nozzle_temperature_range_low": [ - "300" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "105" - ], - "textured_plate_temp_initial_layer": [ - "105" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.058", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF6rdQ6M" -} \ No newline at end of file + "type": "filament", + "name": "Generic PPS-CF @K2 Plus-all", + "inherits": "fdm_filament_pps", + "from": "system", + "setting_id": "tIoEmhVZ47jiEg2Q", + "filament_id": "OF6rdQ6M", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "105" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "130" + ], + "filament_density": [ + "1.27" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PPS-CF" + ], + "hot_plate_temp": [ + "105" + ], + "hot_plate_temp_initial_layer": [ + "105" + ], + "nozzle_temperature": [ + "310" + ], + "nozzle_temperature_initial_layer": [ + "310" + ], + "nozzle_temperature_range_high": [ + "350" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "105" + ], + "textured_plate_temp_initial_layer": [ + "105" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.058", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @Hi-all.json b/resources/profiles/Creality/filament/Generic PVA @Hi-all.json index 6fdad0ad0b..ff30a27f95 100644 --- a/resources/profiles/Creality/filament/Generic PVA @Hi-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @Hi-all.json @@ -1,136 +1,134 @@ { - "type": "filament", - "name": "Generic PVA @Hi-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "M3oK19GPHF4pXnE1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @Hi-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "M3oK19GPHF4pXnE1", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json index ba02942df2..a2bb83f510 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1 Max_CFS-C-all.json @@ -1,128 +1,126 @@ { - "type": "filament", - "name": "Generic PVA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "GVvpekUbUn6UPw2h", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "4" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "GVvpekUbUn6UPw2h", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "4" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K1C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1C-all.json index 34d0a7231d..2f949f1e05 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1C-all.json @@ -1,129 +1,127 @@ { - "type": "filament", - "name": "Generic PVA @K1C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "DnCH1X6KBNi1m0LO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "4" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K1C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "DnCH1X6KBNi1m0LO", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "4" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json index 607cf3b0dd..6e9b038448 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1C_CFS-C-all.json @@ -1,129 +1,127 @@ { - "type": "filament", - "name": "Generic PVA @K1C_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "16V0liTfFopXs9hz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "4" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K1C_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "16V0liTfFopXs9hz", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "4" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json index e5eff7fb64..b698258f50 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K1_CFS-C-all.json @@ -1,129 +1,127 @@ { - "type": "filament", - "name": "Generic PVA @K1_CFS-C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "tomLVSBIaoZzTLo0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "4" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K1_CFS-C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "tomLVSBIaoZzTLo0", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "4" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json index a4499aa85d..c34bf5aa64 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2 Plus-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Generic PVA @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "rCyivt0j7lJ11Obc", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "rCyivt0j7lJ11Obc", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json index 9cf5bfd6bc..c6c4771162 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2 Pro-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Generic PVA @K2 Pro-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "Q3FPysmnAH6EI5QJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K2 Pro-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "Q3FPysmnAH6EI5QJ", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic PVA @K2-all.json b/resources/profiles/Creality/filament/Generic PVA @K2-all.json index d69eab7457..246340a80c 100644 --- a/resources/profiles/Creality/filament/Generic PVA @K2-all.json +++ b/resources/profiles/Creality/filament/Generic PVA @K2-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Generic PVA @K2-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "8ZOmE6qGjxxL8H0b", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "50" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "filament_cost": [ - "80" - ], - "filament_density": [ - "1.37" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_soluble": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "225" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "50%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFDvXujf" -} \ No newline at end of file + "type": "filament", + "name": "Generic PVA @K2-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "8ZOmE6qGjxxL8H0b", + "filament_id": "OFDvXujf", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "50" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "80" + ], + "filament_density": [ + "1.37" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_soluble": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "225" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json index a59be37173..f862a9cefd 100644 --- a/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic Support for PA @K2 Plus-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "Generic Support for PA @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "jqyOG2srSFDU3HCN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "38" - ], - "filament_density": [ - "1.17" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "0%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.034", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFDtop41" -} \ No newline at end of file + "type": "filament", + "name": "Generic Support for PA @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "jqyOG2srSFDU3HCN", + "filament_id": "OFDtop41", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "38" + ], + "filament_density": [ + "1.17" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "0%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.034", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json index 5135c5ee68..e70cab2e96 100644 --- a/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic Support for PLA @K2 Plus-all.json @@ -1,162 +1,160 @@ { - "type": "filament", - "name": "Generic Support for PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "W6AEYBcheMyorkN1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "60" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "36" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "1" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFin64Qg" -} \ No newline at end of file + "type": "filament", + "name": "Generic Support for PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "W6AEYBcheMyorkN1", + "filament_id": "OFin64Qg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "60" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "36" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "1" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json index da1860ce3c..8351d1d3db 100644 --- a/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic TPU 64D @K2 Plus-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Generic TPU 64D @K2 Plus-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "0qV6lVuaNDT3U2HK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFF3cuzT" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU 64D @K2 Plus-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "0qV6lVuaNDT3U2HK", + "filament_id": "OFF3cuzT", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json index 54d1fd6680..2cbfbc8335 100644 --- a/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic TPU 64D @SPARKX i7-all.json @@ -1,185 +1,183 @@ { - "type": "filament", - "name": "Generic TPU 64D @SPARKX i7-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "MCElfOpYpjeuwZju", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "40" - ], - "eng_plate_temp_initial_layer": [ - "40" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "215" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.28", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFF3cuzT" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU 64D @SPARKX i7-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "MCElfOpYpjeuwZju", + "filament_id": "OFF3cuzT", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.28", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json index 62f4916a99..c90e9ddcd4 100644 --- a/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Creality Ender-5Max-all.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic TPU @Creality Ender-5Max-all", - "inherits": "fdm_filament_common", "renamed_from": "Creality Generic TPU @Ender-5Max-all;Creality Generic TPU Ender-5Max-all", + "inherits": "fdm_filament_common", "from": "system", "setting_id": "XqW2iYrRTVlXuCwD", "filament_id": "OFgbpcy9", @@ -44,7 +44,6 @@ ], "filament_flow_ratio": "1", "filament_is_support": "0", - "filament_load_time": "0", "filament_loading_speed": "28", "filament_loading_speed_start": "3", "filament_max_volumetric_speed": [ @@ -74,7 +73,6 @@ "filament_type": [ "TPU" ], - "filament_unload_time": "0", "filament_unloading_speed": "90", "filament_unloading_speed_start": "100", "filament_vendor": [ diff --git a/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json index 18e8caacda..6daccee813 100644 --- a/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @Ender-3 V4-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Generic TPU @Ender-3 V4-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "iJozGH7KvOHz8smj", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "1.6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.46", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @Ender-3 V4-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "iJozGH7KvOHz8smj", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "1.6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.46", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json index 0e093087d3..a1bc6f0e61 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 Max_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Generic TPU @K1 Max_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "h9xCBpYO0jR5I5PG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1 Max_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "h9xCBpYO0jR5I5PG", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json index 12f548e797..b8083ab997 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 SE-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic TPU @K1 SE-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "euSJIgcrA95IBrYT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.8", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1 SE-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "euSJIgcrA95IBrYT", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.8", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json index c7aa82e060..d3bf797574 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1 SE_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Generic TPU @K1 SE_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "nHZN4EVW9T6dcG2v", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.8", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1 SE_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "nHZN4EVW9T6dcG2v", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.8", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1C-all.json index 4d77ed28a7..36e01b8138 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1C-all.json @@ -1,151 +1,149 @@ { - "type": "filament", - "name": "Generic TPU @K1C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "170MDhVcDn1dM9eK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "170MDhVcDn1dM9eK", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json index 4c29062659..a62959b7e3 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1C_CFS-C-all.json @@ -1,151 +1,149 @@ { - "type": "filament", - "name": "Generic TPU @K1C_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "XyaRiGJD4khUkwUe", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1C_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "XyaRiGJD4khUkwUe", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json index 88523dd930..2b0def8d3f 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K1_CFS-C-all.json @@ -1,151 +1,149 @@ { - "type": "filament", - "name": "Generic TPU @K1_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "5e2FELlHtgaCc0K3", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "0" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "0" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "0" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Normal Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K1_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "5e2FELlHtgaCc0K3", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "0" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "0" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Normal Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json index a06cdec298..b1b97a4e9a 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Generic TPU @K2 Plus-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "kcwtAbqZkxRwtCE3", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.3", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K2 Plus-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "kcwtAbqZkxRwtCE3", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.3", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json index 07e97acb84..f30cb1b863 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 Pro-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic TPU @K2 Pro-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "AZzxNf1i5qruVcBL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.3", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K2 Pro-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "AZzxNf1i5qruVcBL", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.3", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json b/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json index 8793fc167e..237974d0ae 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2 SE-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Generic TPU @K2 SE-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "pjhl2ytSAdJgb8tc", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K2 SE-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "pjhl2ytSAdJgb8tc", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @K2-all.json b/resources/profiles/Creality/filament/Generic TPU @K2-all.json index 03d44388f5..5b72422498 100644 --- a/resources/profiles/Creality/filament/Generic TPU @K2-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @K2-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Generic TPU @K2-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "sjSoPLBLcYw8AJKV", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.3", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @K2-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "sjSoPLBLcYw8AJKV", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.3", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json index c1d0268024..9bcc5709be 100644 --- a/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic TPU @SPARKX i7-all.json @@ -1,172 +1,170 @@ { - "type": "filament", - "name": "Generic TPU @SPARKX i7-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "v6uEvu5qbKX9kE7T", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "40" - ], - "eng_plate_temp_initial_layer": [ - "40" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "1.8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFgbpcy9" -} \ No newline at end of file + "type": "filament", + "name": "Generic TPU @SPARKX i7-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "v6uEvu5qbKX9kE7T", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "1.8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json index e300daac38..c6e0cee888 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1 Max_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "HP Ultra PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "mNVwdo8Tu3M8MAMQ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCJpR7a" -} \ No newline at end of file + "type": "filament", + "name": "HP Ultra PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "mNVwdo8Tu3M8MAMQ", + "filament_id": "OFCJpR7a", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json index d437c91d60..a960581182 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "HP Ultra PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "7mN3GsHHQb2sziH9", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFCJpR7a" -} \ No newline at end of file + "type": "filament", + "name": "HP Ultra PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "7mN3GsHHQb2sziH9", + "filament_id": "OFCJpR7a", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json index 2c354d95bc..933b225962 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1C_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "HP Ultra PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "xYIC2SFJ9IeGcVuC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCJpR7a" -} \ No newline at end of file + "type": "filament", + "name": "HP Ultra PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "xYIC2SFJ9IeGcVuC", + "filament_id": "OFCJpR7a", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json index db920a7f56..326ae95b43 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K1_CFS-C-all.json @@ -1,160 +1,158 @@ { - "type": "filament", - "name": "HP Ultra PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "HfPCXm8gwCtZnkjJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCJpR7a" -} \ No newline at end of file + "type": "filament", + "name": "HP Ultra PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "HfPCXm8gwCtZnkjJ", + "filament_id": "OFCJpR7a", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json index 8f912cf729..fb92b41577 100644 --- a/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP Ultra PLA @K2 Plus-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "HP Ultra PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "yHu1ZjX5BoH8dw5z", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFCJpR7a" -} \ No newline at end of file + "type": "filament", + "name": "HP Ultra PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "yHu1ZjX5BoH8dw5z", + "filament_id": "OFCJpR7a", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json index 16810d1886..92f0630114 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1 Max_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "HP-ASA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "RInV2wT54da08tvW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "100", - "epoxy_resin_plate_temp_initial_layer": "100", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.046", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "RInV2wT54da08tvW", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "100", + "epoxy_resin_plate_temp_initial_layer": "100", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.046", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K1C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1C-all.json index c720b4d1b0..abf38f523a 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "HP-ASA @K1C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "Iw7dIqafCnOnBgDE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "100", - "epoxy_resin_plate_temp_initial_layer": "100", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.046", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K1C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "Iw7dIqafCnOnBgDE", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "100", + "epoxy_resin_plate_temp_initial_layer": "100", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.046", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json index 01a49e2392..bb6bc6e1bd 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1C_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "HP-ASA @K1C_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "A5zG0GNhQnOlhTOU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "100", - "epoxy_resin_plate_temp_initial_layer": "100", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.046", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K1C_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "A5zG0GNhQnOlhTOU", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "100", + "epoxy_resin_plate_temp_initial_layer": "100", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.046", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json index d3a45386ad..50c39a8f96 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K1_CFS-C-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "HP-ASA @K1_CFS-C-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "umNqcyYhx49DC2Ki", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "100", - "epoxy_resin_plate_temp_initial_layer": "100", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.046", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K1_CFS-C-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "umNqcyYhx49DC2Ki", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "100", + "epoxy_resin_plate_temp_initial_layer": "100", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.046", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json index 1b97d61b93..6aadd53bf2 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 Plus-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "HP-ASA @K2 Plus-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "cH8oKyQX9jde7Bf8", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "40" - ], - "fan_max_speed": [ - "40" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "100" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K2 Plus-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "cH8oKyQX9jde7Bf8", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json index 33a4406fdd..e4c917d083 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 Pro-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "HP-ASA @K2 Pro-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "HxNkP2GYbTD7yrUZ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "40" - ], - "fan_max_speed": [ - "40" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "100" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K2 Pro-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "HxNkP2GYbTD7yrUZ", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json b/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json index f29ffdd702..3ef8e7467e 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2 SE-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "HP-ASA @K2 SE-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "TbIud8JJSMQ0nYz0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K2 SE-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "TbIud8JJSMQ0nYz0", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-ASA @K2-all.json b/resources/profiles/Creality/filament/HP-ASA @K2-all.json index 2d38575630..da6c53d8a3 100644 --- a/resources/profiles/Creality/filament/HP-ASA @K2-all.json +++ b/resources/profiles/Creality/filament/HP-ASA @K2-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "HP-ASA @K2-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "j9EXhFUKSE3c2awm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "40" - ], - "filament_cost": [ - "29" - ], - "filament_density": [ - "1.15" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "10%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "20" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFPHLnoe" -} \ No newline at end of file + "type": "filament", + "name": "HP-ASA @K2-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "j9EXhFUKSE3c2awm", + "filament_id": "OFPHLnoe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "29" + ], + "filament_density": [ + "1.15" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "10%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "20" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json b/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json index 9d7767c4d8..87a84f8781 100644 --- a/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @Ender-3 V4-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "HP-TPU @Ender-3 V4-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "x7fQ7w2dCpvVfOLw", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "28" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.36", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @Ender-3 V4-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "x7fQ7w2dCpvVfOLw", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "28" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.36", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @Hi-all.json b/resources/profiles/Creality/filament/HP-TPU @Hi-all.json index c9b6766149..fa70245521 100644 --- a/resources/profiles/Creality/filament/HP-TPU @Hi-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @Hi-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "HP-TPU @Hi-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "x5v3sNNZYWbPIsPN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.36", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @Hi-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "x5v3sNNZYWbPIsPN", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.36", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json index 079dfebfe2..402f2ee5aa 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 Max_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "HP-TPU @K1 Max_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "eY1DCIW7WyTnmRYP", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.32", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1 Max_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "eY1DCIW7WyTnmRYP", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.32", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json index 7e5935cdf7..10df3a7aac 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 SE-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "HP-TPU @K1 SE-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "3YN3jfV75qyfUZWm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "28" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3.5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Auto Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1 SE-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "3YN3jfV75qyfUZWm", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "28" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3.5" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Auto Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "215" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json index 62184e78e3..5c684617fd 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1 SE_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "HP-TPU @K1 SE_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "WnGZuBiSGSoGru8C", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_cost": [ - "28" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3.5" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Auto Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "215" - ], - "nozzle_temperature_initial_layer": [ - "215" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "35" - ], - "textured_plate_temp_initial_layer": [ - "35" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1 SE_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "WnGZuBiSGSoGru8C", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_cost": [ + "28" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3.5" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Auto Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "215" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1C-all.json index 6762f0d2d4..b05e59eef3 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "HP-TPU @K1C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "USI47rUnoJXanAFI", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.32", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "USI47rUnoJXanAFI", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.32", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json index e7534ade92..fbc05c1853 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1C_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "HP-TPU @K1C_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "rCn7lAeHr77FziYn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.32", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1C_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "rCn7lAeHr77FziYn", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.32", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json b/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json index 077936057a..27315ae2b3 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K1_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "HP-TPU @K1_CFS-C-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "N3NDaZzc5XyUm3b1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "35" - ], - "cool_plate_temp_initial_layer": [ - "35" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.32", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K1_CFS-C-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "N3NDaZzc5XyUm3b1", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.32", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json index 5b979963f0..06c8959858 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 Plus-all.json @@ -1,172 +1,170 @@ { - "type": "filament", - "name": "HP-TPU @K2 Plus-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "CNm35YCN42NAgbU1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K2 Plus-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "CNm35YCN42NAgbU1", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json index 90201f7dcf..5207b1fb9a 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 Pro-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "HP-TPU @K2 Pro-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "tfrclH3VqZ4nPzi7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle", - "Creality K2 Pro 0.6 nozzle", - "Creality K2 Pro 0.8 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K2 Pro-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "tfrclH3VqZ4nPzi7", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle", + "Creality K2 Pro 0.6 nozzle", + "Creality K2 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json b/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json index b3779225c2..27161d5505 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2 SE-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "HP-TPU @K2 SE-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "IgniOuVC4DtRnxS0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "40" - ], - "eng_plate_temp_initial_layer": [ - "40" - ], - "filament_cost": [ - "28" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.4", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[1.2,190],[1.3,220]]", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K2 SE-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "IgniOuVC4DtRnxS0", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "filament_cost": [ + "28" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.4", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[1.2,190],[1.3,220]]", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @K2-all.json b/resources/profiles/Creality/filament/HP-TPU @K2-all.json index 3768b17547..6e2f542b0c 100644 --- a/resources/profiles/Creality/filament/HP-TPU @K2-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @K2-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "HP-TPU @K2-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "l9E5f6JLwfKo4aG9", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "3" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "220" - ], - "overhang_fan_threshold": [ - "95%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle", - "Creality K2 0.6 nozzle", - "Creality K2 0.8 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @K2-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "l9E5f6JLwfKo4aG9", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "220" + ], + "overhang_fan_threshold": [ + "95%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle", + "Creality K2 0.6 nozzle", + "Creality K2 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json b/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json index 1d225ec253..fd4b842959 100644 --- a/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/HP-TPU @SPARKX i7-all.json @@ -1,183 +1,181 @@ { - "type": "filament", - "name": "HP-TPU @SPARKX i7-all", - "inherits": "fdm_filament_tpu", - "from": "system", - "setting_id": "oINMsmmxspqPOW8b", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "40" - ], - "cool_plate_temp_initial_layer": [ - "40" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "35" - ], - "eng_plate_temp_initial_layer": [ - "35" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "28" - ], - "filament_density": [ - "1.26" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1.1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "2" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "40" - ], - "hot_plate_temp_initial_layer": [ - "40" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "overhang_fan_threshold": [ - "50%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "textured_plate_temp": [ - "40" - ], - "textured_plate_temp_initial_layer": [ - "40" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "40", - "customized_plate_temp_initial_layer": "40", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "30", - "epoxy_resin_plate_temp_initial_layer": "30", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.4", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OFGcMkEB" -} \ No newline at end of file + "type": "filament", + "name": "HP-TPU @SPARKX i7-all", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "oINMsmmxspqPOW8b", + "filament_id": "OFGcMkEB", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "28" + ], + "filament_density": [ + "1.26" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1.1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_threshold": [ + "50%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "40", + "customized_plate_temp_initial_layer": "40", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "30", + "epoxy_resin_plate_temp_initial_layer": "30", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.4", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json index e4a50b5fec..f0b164f891 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @Ender-3 V4-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Hyper ABS @Ender-3 V4-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "utCV4AwQPV4Ums35", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "90", - "customized_plate_temp_initial_layer": "90", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", - "pressure_advance": "0.038", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @Ender-3 V4-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "utCV4AwQPV4Ums35", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "90", + "customized_plate_temp_initial_layer": "90", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,240],[0.8,240],[1.0,260]]", + "pressure_advance": "0.038", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json b/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json index bb93a96d02..cea3dbeaf2 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @Hi-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Hyper ABS @Hi-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "LO4MgYNCtAlMyD11", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "70" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @Hi-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "LO4MgYNCtAlMyD11", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json index 9749f95e35..5ebb98f5ec 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 Max_CFS-C-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Hyper ABS @K1 Max_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "PjT9gDai5g9iVBf3", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1 Max_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "PjT9gDai5g9iVBf3", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json index a303e41640..41d9eb71e1 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 SE-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Hyper ABS @K1 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "dWKTm246jz7e4QRy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "dWKTm246jz7e4QRy", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json index b4780cb82d..2e144ab3f0 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1 SE_CFS-C-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Hyper ABS @K1 SE_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "GCj4hOsf9S9DqFdh", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1 SE_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "GCj4hOsf9S9DqFdh", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,20],[6.0,240],[10.0,250]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json index 1ae0bc6ddf..4892e7f33e 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1C-all.json @@ -1,170 +1,168 @@ { - "type": "filament", - "name": "Hyper ABS @K1C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "DlsL5Ex7MQ54Yje6", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "DlsL5Ex7MQ54Yje6", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json index 03f8fbc354..a94b9da7d7 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1C_CFS-C-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Hyper ABS @K1C_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "psgahhKiXE7koRWY", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1C_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "psgahhKiXE7koRWY", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json index d6c76e777f..3d2ad45efd 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K1_CFS-C-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Hyper ABS @K1_CFS-C-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "YbYUo1FfZlLJg4zm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K1_CFS-C-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "YbYUo1FfZlLJg4zm", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json index 7ecce97627..3b7f42cf81 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 Plus-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Hyper ABS @K2 Plus-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "lGXmZiCrrwfTeERC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K2 Plus-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "lGXmZiCrrwfTeERC", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json index de032398b5..90e79e46fd 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 Pro-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Hyper ABS @K2 Pro-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "01z4QYF33KN1OsBM", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K2 Pro-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "01z4QYF33KN1OsBM", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json index c3132a18b5..06a397761f 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2 SE-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "Hyper ABS @K2 SE-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "X3WH0zaUg8WyahsO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "1" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K2 SE-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "X3WH0zaUg8WyahsO", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper ABS @K2-all.json b/resources/profiles/Creality/filament/Hyper ABS @K2-all.json index 63bf93483d..7b0696e39c 100644 --- a/resources/profiles/Creality/filament/Hyper ABS @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper ABS @K2-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Hyper ABS @K2-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "B0mfi4oxoUIDW2Lv", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "80" - ], - "eng_plate_temp_initial_layer": [ - "80" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "22" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF8GnyFU" -} \ No newline at end of file + "type": "filament", + "name": "Hyper ABS @K2-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "B0mfi4oxoUIDW2Lv", + "filament_id": "OF8GnyFU", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "22" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json index d4deb0be89..f33623ab68 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @Hi-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Hyper L-W PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "snqNKAAquQRA20Ik", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.84" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "3" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "snqNKAAquQRA20Ik", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.84" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "3" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json index 182364977c..6627a67132 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 Max_CFS-C-all.json @@ -1,170 +1,168 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "nhmKUDLK6wxVO1vH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_long_retractions_when_cut": "nil", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_retraction_distances_when_cut": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_stamping_distance": "0", - "filament_stamping_loading_speed": "0", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "idle_temperature": "0", - "material_flow_dependent_temperature": "0", - "pellet_flow_coefficient": "0.4157", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "nhmKUDLK6wxVO1vH", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_long_retractions_when_cut": "nil", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_retraction_distances_when_cut": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_stamping_distance": "0", + "filament_stamping_loading_speed": "0", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "idle_temperature": "0", + "material_flow_dependent_temperature": "0", + "pellet_flow_coefficient": "0.4157", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json index 2bc12a6918..fe2b9f7363 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE-all.json @@ -1,148 +1,146 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "MEaOGHy3pWSd1Gj3", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "MEaOGHy3pWSd1Gj3", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json index 065b9ac77e..8327a3c474 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1 SE_CFS-C-all.json @@ -1,148 +1,146 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "xCioj1jNunIX2GBK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "xCioj1jNunIX2GBK", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json index 872eeca4dc..2e44a0a1e1 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "xye2OhGeKqg44ya7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "xye2OhGeKqg44ya7", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json index 3685dbd854..7aee7bad01 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1C_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "EXxV0Fo4rexuxidn", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "EXxV0Fo4rexuxidn", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json index 718112bd7b..b104bf3181 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K1_CFS-C-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "lfP5u92yfXRedGuy", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.09", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "lfP5u92yfXRedGuy", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.09", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json index df0df361ad..8a6a13f3d5 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Plus-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "U1kZq5P21qnFe5NC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "U1kZq5P21qnFe5NC", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json index cf2c873e77..22fa11fcbd 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2 Pro-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "4O7avB3eSA1pKDxz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.76" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "4O7avB3eSA1pKDxz", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.76" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json b/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json index 9b06765831..36aa61a725 100644 --- a/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper L-W PLA @K2-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Hyper L-W PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "gkzTfze1OQmP8zgE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "48.9" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.85" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF70zbGS" -} \ No newline at end of file + "type": "filament", + "name": "Hyper L-W PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "gkzTfze1OQmP8zgE", + "filament_id": "OF70zbGS", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "48.9" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.85" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json b/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json index 4c39c1ac1a..c73ae6faaf 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @Hi-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Hyper Luminous @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "8PNVp96HmPvjOBVq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "299", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.052", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle", - "Creality Hi 0.8 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "8PNVp96HmPvjOBVq", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "299", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.052", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle", + "Creality Hi 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json index 53ab1e078e..33bbebc96c 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K1C-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Hyper Luminous @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "MHaJR8CAtuSwUOIx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,210], [1.2,210], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "MHaJR8CAtuSwUOIx", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,210], [1.2,210], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json index 9e267d07cf..c1db54775e 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2 Plus-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Luminous @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zY0hIYvTg3v2wyOJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.2,210],[1.5,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zY0hIYvTg3v2wyOJ", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.2,210],[1.5,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json index 67c567791c..04cf190fe5 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2 Pro-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Luminous @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "14znq0LtaUx1RUP5", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.2,210],[1.5,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle", - "Creality K2 Pro 0.6 nozzle", - "Creality K2 Pro 0.8 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "14znq0LtaUx1RUP5", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.2,210],[1.5,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle", + "Creality K2 Pro 0.6 nozzle", + "Creality K2 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json b/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json index b5182102e4..d1f28127d9 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @K2-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Luminous @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zD3EOJFcZOuhQHmk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle", - "Creality K2 0.6 nozzle", - "Creality K2 0.8 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zD3EOJFcZOuhQHmk", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle", + "Creality K2 0.6 nozzle", + "Creality K2 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json index 9817bd9701..c15cf1eb24 100644 --- a/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Luminous @SPARKX i7-all.json @@ -1,183 +1,181 @@ { - "type": "filament", - "name": "Hyper Luminous @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "DKQgoZvvkOBsEJCA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "28.9" - ], - "filament_density": [ - "1.3" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.028", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFC1PzXz" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Luminous @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "DKQgoZvvkOBsEJCA", + "filament_id": "OFC1PzXz", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "28.9" + ], + "filament_density": [ + "1.3" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.028", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json b/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json index 614c8a9ac8..8e9c401520 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @Hi-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper Marble @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "K6SS7X2jvyXsEgaR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.5,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "K6SS7X2jvyXsEgaR", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.5,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json index 1fdeb7e4d3..03b8df1632 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1 Max_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "8dYJk1STVIRB2JWw", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "299", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "8dYJk1STVIRB2JWw", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "299", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json index 3430271e86..442f07f967 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "SWzt8p5UBfgMauNE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "SWzt8p5UBfgMauNE", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json index f92a629e09..faf5d0decc 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1C_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "gZLo5W0F3NLFCkvg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "gZLo5W0F3NLFCkvg", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json index 0443b606a1..3431ed9ef6 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K1_CFS-C-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "JDAiAZKjxEoWKDwW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "JDAiAZKjxEoWKDwW", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json index 87c217d5db..90d07ec109 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 Plus-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "X2fgUYasv7lNEoqK", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "3" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.2,200],[1.1,200],[1.2,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "X2fgUYasv7lNEoqK", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "35" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "35" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "3" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.2,200],[1.1,200],[1.2,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json index 90047e7778..5713b0658d 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 Pro-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "CITMYaFiwchQ3xoo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "CITMYaFiwchQ3xoo", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json index a0bc0bbfbc..3173e61657 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2 SE-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Hyper Marble @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "PyazquNRWsPUM2bt", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "3" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "244", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "PyazquNRWsPUM2bt", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "3" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "244", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @K2-all.json b/resources/profiles/Creality/filament/Hyper Marble @K2-all.json index 09eb2487d3..db38166659 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @K2-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper Marble @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "YxvU7wRdgrtckCa7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "YxvU7wRdgrtckCa7", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json index 746332ab6a..5b053dbfb6 100644 --- a/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Marble @SPARKX i7-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "Hyper Marble @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "teddd8l8D8ASmYQs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "23.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFLzx3J4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Marble @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "teddd8l8D8ASmYQs", + "filament_id": "OFLzx3J4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "23.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json index d5d494f3f4..8898401856 100644 --- a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Plus-all.json @@ -1,199 +1,197 @@ { - "type": "filament", - "name": "Hyper PA6-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "ns7xy8v6L92XsDy2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "45.9" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFn2GlhY" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PA6-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "ns7xy8v6L92XsDy2", + "filament_id": "OFn2GlhY", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "45.9" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "290" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json index 97f41d5746..3b38cfe77c 100644 --- a/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PA6-CF @K2 Pro-all.json @@ -1,199 +1,197 @@ { - "type": "filament", - "name": "Hyper PA6-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "FNuPosBKWyq79bjR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "45.9" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFn2GlhY" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PA6-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "FNuPosBKWyq79bjR", + "filament_id": "OFn2GlhY", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "45.9" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "290" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json index 658908446c..23cdb0975c 100644 --- a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Plus-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Hyper PA612-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "2xgxuOoGNlO9lEs4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "60" - ], - "cool_plate_temp_initial_layer": [ - "60" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "59.9" - ], - "filament_density": [ - "1.03" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFhkN0a7" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PA612-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "2xgxuOoGNlO9lEs4", + "filament_id": "OFhkN0a7", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "59.9" + ], + "filament_density": [ + "1.03" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "290" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json index 40870d5cd3..08b65aaff2 100644 --- a/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PA612-CF @K2 Pro-all.json @@ -1,193 +1,191 @@ { - "type": "filament", - "name": "Hyper PA612-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "sDTzKRsBAaiOxA5I", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "59.9" - ], - "filament_density": [ - "1.03" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "290" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "60" - ], - "textured_plate_temp_initial_layer": [ - "60" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.048", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFhkN0a7" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PA612-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "sDTzKRsBAaiOxA5I", + "filament_id": "OFhkN0a7", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "59.9" + ], + "filament_density": [ + "1.03" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "290" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.048", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json index 915b8b67d9..9b72dd5cb9 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1 Max_CFS-C-all.json @@ -1,196 +1,194 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "98Dhy7By3Sp6lISa", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "98Dhy7By3Sp6lISa", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json index 3529603ba6..47b8eac520 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C-all.json @@ -1,197 +1,195 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K1C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "SpXh27tlQXEbxDUk", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K1C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "SpXh27tlQXEbxDUk", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json index a2c841f463..c2f554abca 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1C_CFS-C-all.json @@ -1,197 +1,195 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "ShD1PW5HWkjnHXrd", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "ShD1PW5HWkjnHXrd", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json index c597cd9c95..564d6b08e9 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K1_CFS-C-all.json @@ -1,197 +1,195 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "wzYQ0bizO8RDWjSX", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "105" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "wzYQ0bizO8RDWjSX", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "105" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json index 67d0b403cc..57a1904fdd 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Plus-all.json @@ -1,194 +1,192 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "NneN5bFLYVXNPzlM", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "NneN5bFLYVXNPzlM", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json index f7e37afe69..0e9eb9a6c1 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2 Pro-all.json @@ -1,184 +1,182 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "wl8JhmCp9Be3cYMJ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.042", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "wl8JhmCp9Be3cYMJ", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.042", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json index 1f97108309..7077971f51 100644 --- a/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PAHT-CF @K2-all.json @@ -1,184 +1,182 @@ { - "type": "filament", - "name": "Hyper PAHT-CF @K2-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "jtElnQJxHKLDQSHo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "74.9" - ], - "filament_density": [ - "1.06" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "4" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "100", - "customized_plate_temp_initial_layer": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF4APyxe" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PAHT-CF @K2-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "jtElnQJxHKLDQSHo", + "filament_id": "OF4APyxe", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "74.9" + ], + "filament_density": [ + "1.06" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "100", + "customized_plate_temp_initial_layer": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json index 85d5d66252..a1c7e7d72f 100644 --- a/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PC @K2 Plus-all.json @@ -1,171 +1,169 @@ { - "type": "filament", - "name": "Hyper PC @K2 Plus-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "zhN9dkzeJWtsAKj8", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "110" - ], - "cool_plate_temp_initial_layer": [ - "110" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_max_speed": [ - "40" - ], - "filament_cost": [ - "100" - ], - "filament_density": [ - "1.19" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.03", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFUF7oA4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PC @K2 Plus-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "zhN9dkzeJWtsAKj8", + "filament_id": "OFUF7oA4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "110" + ], + "cool_plate_temp_initial_layer": [ + "110" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.19" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.03", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json index 7592b6dbcf..d0d64e7b44 100644 --- a/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PC @K2 Pro-all.json @@ -1,173 +1,171 @@ { - "type": "filament", - "name": "Hyper PC @K2 Pro-all", - "inherits": "fdm_filament_pc", - "from": "system", - "setting_id": "6NMso8XW9632vz5s", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_max_speed": [ - "40" - ], - "filament_cost": [ - "37" - ], - "filament_density": [ - "1.19" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "70%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "80" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFUF7oA4" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PC @K2 Pro-all", + "inherits": "fdm_filament_pc", + "from": "system", + "setting_id": "6NMso8XW9632vz5s", + "filament_id": "OFUF7oA4", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "37" + ], + "filament_density": [ + "1.19" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json index a333d63f3d..0ee32c0b6b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Hyper PETG @Ender-3 V4-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "EDl8nfZRP1T8CBOs", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,230],[1.2,250]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @Ender-3 V4-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "EDl8nfZRP1T8CBOs", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,230],[1.2,250]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json b/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json index 5998e1e8bd..ad9fd276d2 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @Hi-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Hyper PETG @Hi-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "ZKLZLxxyjfbdAYZ4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "cool_plate_temp_initial_layer": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", - "pressure_advance": "0.066", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @Hi-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "ZKLZLxxyjfbdAYZ4", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", + "pressure_advance": "0.066", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json index 6bd1f3afea..0a066f747d 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 Max_CFS-C-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Hyper PETG @K1 Max_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "Bcgdo3fx6xntQ68t", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1 Max_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "Bcgdo3fx6xntQ68t", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json index 058dfe5bd6..cc22c69934 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 SE-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper PETG @K1 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "huvZfn5aMetsY1qr", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.068", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "huvZfn5aMetsY1qr", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.068", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json index f1ceb825e9..226e28d3b5 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1 SE_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper PETG @K1 SE_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "cyl9yuFghMkUh21u", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.068", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1 SE_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "cyl9yuFghMkUh21u", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.068", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json index 175aa8099c..db25402dd2 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1C-all.json @@ -1,155 +1,153 @@ { - "type": "filament", - "name": "Hyper PETG @K1C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "HYCr4pafWTw3btkg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.072", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "HYCr4pafWTw3btkg", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.072", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json index be8e2c58f5..f7407295d3 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1C_CFS-C-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Hyper PETG @K1C_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "6vOJLefZfaXZTSae", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.072", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1C_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "6vOJLefZfaXZTSae", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.072", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json index 9bf2512abe..ce72e4463d 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K1_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper PETG @K1_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "FeLhYkEwkavAVWlq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.5" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", - "pressure_advance": "0.068", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K1_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "FeLhYkEwkavAVWlq", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.5" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,220],[5.0,230],[14.0,240],[23.0,250]]", + "pressure_advance": "0.068", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json index 983556224b..18a4380b95 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 Plus-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Hyper PETG @K2 Plus-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "LLehESBAwc7JG1sb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "24.99" - ], - "filament_density": [ - "1.28" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "240" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "74.3" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K2 Plus-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "LLehESBAwc7JG1sb", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "74.3" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json index 32a8fae98b..ab7da092fd 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 Pro-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Hyper PETG @K2 Pro-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "FEZohKnhkTIWLIGo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K2 Pro-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "FEZohKnhkTIWLIGo", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json index cc058c4511..cd1a81f895 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2 SE-all.json @@ -1,158 +1,156 @@ { - "type": "filament", - "name": "Hyper PETG @K2 SE-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "YKt97IZEOlPbNE45", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", - "pressure_advance": "0.07", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K2 SE-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "YKt97IZEOlPbNE45", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,240],[1.2,240],[1.3,250]]", + "pressure_advance": "0.07", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG @K2-all.json index 9bbf24c47f..a65c05ac70 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @K2-all.json @@ -1,148 +1,146 @@ { - "type": "filament", - "name": "Hyper PETG @K2-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "tA9uY8ONg89tnmBS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @K2-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "tA9uY8ONg89tnmBS", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,220],[1.2,220],[1.2,250]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json index d8db7fd923..6f13c7f91b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG @SPARKX i7-all.json @@ -1,164 +1,162 @@ { - "type": "filament", - "name": "Hyper PETG @SPARKX i7-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "KCinMkKfbIlmgNY5", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "25" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.96" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFujZSdh" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG @SPARKX i7-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "KCinMkKfbIlmgNY5", + "filament_id": "OFujZSdh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "25" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json index 69662a0296..9eb34dc9bf 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1 Max_CFS-C-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "Xas7n19K71hs4LDE", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "Xas7n19K71hs4LDE", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "90" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json index 1005d22d7f..8f75ada3bd 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C-all.json @@ -1,139 +1,137 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K1C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "Qb08ZrBwuO8zt4AH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K1C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "Qb08ZrBwuO8zt4AH", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "90" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json index e9008aede1..452436bc5f 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1C_CFS-C-all.json @@ -1,139 +1,137 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "DoTcUw5GMoTHQg7e", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "DoTcUw5GMoTHQg7e", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "90" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json index 2358ec054e..57d1162f5c 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K1_CFS-C-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K1_CFS-C-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "CcmwXMNgZWg8VguD", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "90" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "80", - "epoxy_resin_plate_temp_initial_layer": "80", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K1_CFS-C-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "CcmwXMNgZWg8VguD", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "90" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "80", + "epoxy_resin_plate_temp_initial_layer": "80", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json index 252b6dad9c..cbc2e8a34c 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Plus-all.json @@ -1,142 +1,140 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K2 Plus-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "DyG4SbAXKKPcZtrz", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K2 Plus-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "DyG4SbAXKKPcZtrz", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json index 1962c54912..55789a7c2e 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2 Pro-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K2 Pro-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "kit5JfJiicLJF4zF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K2 Pro-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "kit5JfJiicLJF4zF", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json index 68ae2439d7..953587853c 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @K2-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper PETG-CF @K2-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "sqyA1OhRFwfJdaQC", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.25" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "75" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @K2-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "sqyA1OhRFwfJdaQC", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "75" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json index a3ab600254..f0feb6547b 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-CF @SPARKX i7-all.json @@ -1,167 +1,165 @@ { - "type": "filament", - "name": "Hyper PETG-CF @SPARKX i7-all", - "inherits": "fdm_filament_petg", - "from": "system", - "setting_id": "ysPPxXtL5M7eQwOp", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "80" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "70" - ], - "filament_density": [ - "1.24" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_type": [ - "PETG-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "2" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "80", - "customized_plate_temp_initial_layer": "80", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "70", - "epoxy_resin_plate_temp_initial_layer": "70", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", - "pressure_advance": "0.028", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFusbWjj" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-CF @SPARKX i7-all", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "ysPPxXtL5M7eQwOp", + "filament_id": "OFusbWjj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.24" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n{if(initial_extruder != current_extruder || layer_z > first_layer_height)}\n{if (layer_z +0.4 < printable_height) }\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X205 Y345 F20000\nG1 Z{layer_z } F1200\n{else}\nG1 X205 Y345 F20000\n{endif}\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "80", + "customized_plate_temp_initial_layer": "80", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "70", + "epoxy_resin_plate_temp_initial_layer": "70", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,240],[1.2,260]]", + "pressure_advance": "0.028", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json index 9fdfe1559b..39f76b7763 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K1C-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Hyper PETG-GF @K1C-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "nEDeotPVKPCQe8Nb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFLgwqp2" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-GF @K1C-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "nEDeotPVKPCQe8Nb", + "filament_id": "OFLgwqp2", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.32" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json index 820b021b9e..ec871d7de8 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Plus-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper PETG-GF @K2 Plus-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "usQ7v9aSP9GkBJlW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "70", - "customized_plate_temp_initial_layer": "70", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFLgwqp2" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-GF @K2 Plus-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "usQ7v9aSP9GkBJlW", + "filament_id": "OFLgwqp2", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.32" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "70", + "customized_plate_temp_initial_layer": "70", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json index 3129330404..37cf3dfdc2 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2 Pro-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper PETG-GF @K2 Pro-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "9cVMYbupJs6RNOy7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFLgwqp2" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-GF @K2 Pro-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "9cVMYbupJs6RNOy7", + "filament_id": "OFLgwqp2", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.32" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json b/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json index eafa06d339..6e883d6663 100644 --- a/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PETG-GF @K2-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper PETG-GF @K2-all", - "inherits": "fdm_filament_common", - "from": "system", - "setting_id": "LFtfaG6s8REfWmjg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "29.9" - ], - "filament_density": [ - "1.32" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_type": [ - "PETG-GF" - ], - "filament_vendor": [ - "Creality" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "required_nozzle_HRC": [ - "0" - ], - "temperature_vitrification": [ - "80" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFLgwqp2" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PETG-GF @K2-all", + "inherits": "fdm_filament_common", + "from": "system", + "setting_id": "LFtfaG6s8REfWmjg", + "filament_id": "OFLgwqp2", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "29.9" + ], + "filament_density": [ + "1.32" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_type": [ + "PETG-GF" + ], + "filament_vendor": [ + "Creality" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "temperature_vitrification": [ + "80" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json index 8fbc885c07..ed04e85cd6 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @Ender-3 V4-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Hyper PLA @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "jO61I2nsJ2yY0WG4", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "jO61I2nsJ2yY0WG4", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,210],[1.0,210],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json b/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json index c5297f78ed..231c96f808 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @Hi-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Hyper PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "AG1UL48Bof1wFYDF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[2.2,200],[3.0,210],[10.0,215],[23.0,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.2 nozzle", - "Creality Hi 0.4 nozzle", - "Creality Hi 0.6 nozzle", - "Creality Hi 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "AG1UL48Bof1wFYDF", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[2.2,200],[3.0,210],[10.0,215],[23.0,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.2 nozzle", + "Creality Hi 0.4 nozzle", + "Creality Hi 0.6 nozzle", + "Creality Hi 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json index be08cd5bb4..131fc6166d 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 Max_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "lRYhcdi64EmFem40", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "lRYhcdi64EmFem40", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json index 2d764065a5..c9a1c2ec02 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 SE-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Hyper PLA @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "w22rt5ipwYogeRyf", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.038", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle", - "Creality K1 SE 0.6 nozzle", - "Creality K1 SE 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "w22rt5ipwYogeRyf", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.038", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle", + "Creality K1 SE 0.6 nozzle", + "Creality K1 SE 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json index 0c80515aaa..edb0299bd1 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1 SE_CFS-C-all.json @@ -1,138 +1,136 @@ { - "type": "filament", - "name": "Hyper PLA @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "qV4HvI6OV80255YA", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.038", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "qV4HvI6OV80255YA", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.038", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json index 4b3f6b5a60..1b5cb0960a 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "TnpXw6J6vdHtcI0m", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle", - "Creality K1C 0.6 nozzle", - "Creality K1C 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "TnpXw6J6vdHtcI0m", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "35" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "35" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle", + "Creality K1C 0.6 nozzle", + "Creality K1C 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json index f0513b112b..545ca6d21e 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1C_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "NkW5cDCzmoseCFmO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "NkW5cDCzmoseCFmO", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "35" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "35" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json index c4175d3ead..363e4d1fff 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K1_CFS-C-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Q74GgG8YgUE29949", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Q74GgG8YgUE29949", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,190], [1.2,190], [1.3,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json index 193bf2dee6..a56f03f226 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 Plus-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "CCn1pBWY533DPO2I", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.2 nozzle", - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "CCn1pBWY533DPO2I", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.2 nozzle", + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json index 3d8a1cbdd6..8a7ba55748 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 Pro-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "1KX2t8HgeGnCF4Mt", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "30", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle", - "Creality K2 Pro 0.6 nozzle", - "Creality K2 Pro 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "1KX2t8HgeGnCF4Mt", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "30", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,195],[1.2,195],[1.5,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle", + "Creality K2 Pro 0.6 nozzle", + "Creality K2 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json index 34f98b70ae..ff07932212 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2 SE-all.json @@ -1,140 +1,138 @@ { - "type": "filament", - "name": "Hyper PLA @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zTFbjztyji63caxW", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zTFbjztyji63caxW", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @K2-all.json b/resources/profiles/Creality/filament/Hyper PLA @K2-all.json index f47ea8a5d8..ff2f92dafc 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @K2-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "Hyper PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "klq59FDTiu0dk3WO", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "30", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle", - "Creality K2 0.6 nozzle", - "Creality K2 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "klq59FDTiu0dk3WO", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "30", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle", + "Creality K2 0.6 nozzle", + "Creality K2 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json index 00afa33b11..8487bf8565 100644 --- a/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA @SPARKX i7-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Hyper PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "pvnoJu0FPBxRAX6w", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "30" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "21" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "0", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,205],[1.2,220]]", - "pressure_advance": "0.28", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.2 nozzle", - "Creality SPARKX i7 0.4 nozzle", - "Creality SPARKX i7 0.6 nozzle", - "Creality SPARKX i7 0.8 nozzle" - ], - "filament_id": "OFCZsqXg" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "pvnoJu0FPBxRAX6w", + "filament_id": "OFCZsqXg", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "30" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "0", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,205],[1.2,220]]", + "pressure_advance": "0.28", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.2 nozzle", + "Creality SPARKX i7 0.4 nozzle", + "Creality SPARKX i7 0.6 nozzle", + "Creality SPARKX i7 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json index fb92e57672..6aa016c0a5 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @Ender-3 V4-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper PLA-CF @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "30n5mJl8L6az4Ugt", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", - "pressure_advance": "0.028", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "30n5mJl8L6az4Ugt", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", + "pressure_advance": "0.028", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json index e63ee3717d..87a03604c7 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @Hi-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Hyper PLA-CF @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "l4gTfu7FrFCXseZR", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "l4gTfu7FrFCXseZR", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json index d1a9cb3a38..eef42d1c01 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 Max_CFS-C-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "jNMBQgVxJOyIVLcq", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "jNMBQgVxJOyIVLcq", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json index 368b104901..b6fa3185df 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "qmyerfbWbH0wbbk7", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "qmyerfbWbH0wbbk7", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json index 215a01e8a7..b205835d92 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1 SE_CFS-C-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1 SE_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "l8sx6lH2mvQLZObS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", - "pressure_advance": "0.036", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 SE_CFS-C 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1 SE_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "l8sx6lH2mvQLZObS", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,190],[5.0,200],[14.0,210],[23.0,220]]", + "pressure_advance": "0.036", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 SE_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json index d6d269db66..89a64caad9 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "23SZfDiYXhm9hn5G", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "23SZfDiYXhm9hn5G", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json index 5ed8fbe15f..7c2ebcd7fa 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1C_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ITQgXSnjWFeY68wT", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ITQgXSnjWFeY68wT", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json index fe506e1147..5947f13e5c 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K1_CFS-C-all.json @@ -1,157 +1,155 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "9rf6iQ0xQuReogCt", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "0", - "filament_retract_lift_enforce": "All Surfaces", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", - "pressure_advance": "0.02", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "9rf6iQ0xQuReogCt", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "0", + "filament_retract_lift_enforce": "All Surfaces", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210], [10.0,220], [12.0,230]]", + "pressure_advance": "0.02", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json index f9267d07e8..078a075008 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GjpBicP4kPE8flGx", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GjpBicP4kPE8flGx", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json index 9c465b0d30..2e1f5752d6 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 Pro-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Y4er7SRg27NLBiG1", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Y4er7SRg27NLBiG1", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json index 94ac06f8bb..a22777631f 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2 SE-all.json @@ -1,149 +1,147 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "NBqaRVKwrOk8znjG", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "40" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "40" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "NBqaRVKwrOk8znjG", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "40" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json index d0344132b6..ef5c46b673 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @K2-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Hyper PLA-CF @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "L7pciawKG1j3Q543", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "23" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "L7pciawKG1j3Q543", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json index 53b640d939..7427735721 100644 --- a/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper PLA-CF @SPARKX i7-all.json @@ -1,176 +1,174 @@ { - "type": "filament", - "name": "Hyper PLA-CF @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "18bK3EZVaHGwGmsL", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "32" - ], - "filament_density": [ - "1.27" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFTnWzBs" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PLA-CF @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "18bK3EZVaHGwGmsL", + "filament_id": "OFTnWzBs", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "32" + ], + "filament_density": [ + "1.27" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json index c817224955..11b26eae81 100644 --- a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Plus-all.json @@ -1,185 +1,183 @@ { - "type": "filament", - "name": "Hyper PPA-CF @K2 Plus-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "ltnrZwbu4XXaDTkF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "50" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "89.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "70" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "8" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle", - "Creality K2 Plus 0.6 nozzle", - "Creality K2 Plus 0.8 nozzle" - ], - "filament_id": "OFNvBIL0" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PPA-CF @K2 Plus-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "ltnrZwbu4XXaDTkF", + "filament_id": "OFNvBIL0", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "89.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "70" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle", + "Creality K2 Plus 0.6 nozzle", + "Creality K2 Plus 0.8 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json index 4f7d4ddf2f..1c76caff66 100644 --- a/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper PPA-CF @K2 Pro-all.json @@ -1,181 +1,179 @@ { - "type": "filament", - "name": "Hyper PPA-CF @K2 Pro-all", - "inherits": "fdm_filament_pa", - "from": "system", - "setting_id": "wrCqzQPdSReyJSfo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "filament_cost": [ - "89.9" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_is_support": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PA-CF" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature": [ - "300" - ], - "nozzle_temperature_initial_layer": [ - "300" - ], - "nozzle_temperature_range_high": [ - "320" - ], - "nozzle_temperature_range_low": [ - "280" - ], - "overhang_fan_speed": [ - "80" - ], - "overhang_fan_threshold": [ - "10%" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "slow_down_layer_time": [ - "12" - ], - "temperature_vitrification": [ - "110" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "0", - "epoxy_resin_plate_temp_initial_layer": "0", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.044", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFNvBIL0" -} \ No newline at end of file + "type": "filament", + "name": "Hyper PPA-CF @K2 Pro-all", + "inherits": "fdm_filament_pa", + "from": "system", + "setting_id": "wrCqzQPdSReyJSfo", + "filament_id": "OFNvBIL0", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "89.9" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_is_support": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "320" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "10%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "110" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "0", + "epoxy_resin_plate_temp_initial_layer": "0", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.044", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json b/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json index 02756e4af3..05abf81f1d 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @Hi-all.json @@ -1,156 +1,154 @@ { - "type": "filament", - "name": "Hyper Stardust @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Jg5EAOLRZBLTvozN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.5,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Jg5EAOLRZBLTvozN", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200],[1.2,200],[1.5,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json index 0af9505f19..9a050ee4b8 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1 Max_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "hwto2aYfebw6i6sm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "hwto2aYfebw6i6sm", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json index 7afa71cd4c..37d9c6b652 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "GC5jc2gUOL34TtA2", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "GC5jc2gUOL34TtA2", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json index 058d4439ea..6a55b510b4 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1C_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zqZR6xEtm9Gokib0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "0" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.8" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "0.4" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "0", - "filament_retract_lift_below": "249", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zqZR6xEtm9Gokib0", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "0" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "0.4" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "0", + "filament_retract_lift_below": "249", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json index f90af90902..c61f91d90a 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K1_CFS-C-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "fWmKrIlCzeemGvXQ", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "30" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "30" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "fWmKrIlCzeemGvXQ", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "30" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "30" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.8,200], [1.2,200], [1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json index 7580e9f4e9..d33ce12919 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 Plus-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "Q0hz1XpiWQeZhcjF", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "35" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "35" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "3" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.2,200],[1.1,200],[1.2,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "Q0hz1XpiWQeZhcjF", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "35" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "35" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "3" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.2,200],[1.1,200],[1.2,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json index 1e307464b1..b6fa563aa5 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 Pro-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "SjkfsdLhjA5CFsCl", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "SjkfsdLhjA5CFsCl", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json index 9134285053..5781afd1cd 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2 SE-all.json @@ -1,143 +1,141 @@ { - "type": "filament", - "name": "Hyper Stardust @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "O2BLGgWwKLgovOmm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "3" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "O2BLGgWwKLgovOmm", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "3" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json b/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json index 154376069e..3ff2394a43 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @K2-all.json @@ -1,161 +1,159 @@ { - "type": "filament", - "name": "Hyper Stardust @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "4OC4zOZaAUUsyu27", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "Slope Lift" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "4OC4zOZaAUUsyu27", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "Slope Lift" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,200],[1.0,200],[1.2,220]]", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json b/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json index 43ccb7898c..8d0475a9e7 100644 --- a/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Hyper Stardust @SPARKX i7-all.json @@ -1,179 +1,177 @@ { - "type": "filament", - "name": "Hyper Stardust @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "flyQf6Emi8ND7BDe", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "60" - ], - "filament_cost": [ - "26.9" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1" - ], - "filament_retraction_minimum_travel": [ - "2" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "1" - ], - "filament_wipe_distance": [ - "2" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "overhang_fan_speed": [ - "90" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", - "pressure_advance": "0.028", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OFXnToSX" -} \ No newline at end of file + "type": "filament", + "name": "Hyper Stardust @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "flyQf6Emi8ND7BDe", + "filament_id": "OFXnToSX", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_cost": [ + "26.9" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1" + ], + "filament_retraction_minimum_travel": [ + "2" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.6,210],[1.2,220]]", + "pressure_advance": "0.028", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json index 62f308a71b..5eddb9e5dd 100644 --- a/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Panchroma PLA Matte @K2 Plus-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "Panchroma PLA Matte @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "ArTNQCA0xnqZKZk9", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "20.99" - ], - "filament_density": [ - "1.31" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Polymaker" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "210" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "55" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFrOh600" -} \ No newline at end of file + "type": "filament", + "name": "Panchroma PLA Matte @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "ArTNQCA0xnqZKZk9", + "filament_id": "OFrOh600", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "20.99" + ], + "filament_density": [ + "1.31" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Polymaker" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "55" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json b/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json index 5d7f4818bd..8016cb164e 100644 --- a/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Panchroma PLA Satin @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "Panchroma PLA Satin @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "dK0jvrB1WOFjPf7g", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19.99" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Polymaker" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "55" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFPkCJKE" -} \ No newline at end of file + "type": "filament", + "name": "Panchroma PLA Satin @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "dK0jvrB1WOFjPf7g", + "filament_id": "OFPkCJKE", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19.99" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Polymaker" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "55" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json index 20bd0700ab..f6ca211c24 100644 --- a/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/PolySonic PLA @K2 Plus-all.json @@ -1,172 +1,170 @@ { - "type": "filament", - "name": "PolySonic PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "K3kUZYddQO8SUKKa", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "24.99" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Polymaker" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature": [ - "230" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "55" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF66KUAN" -} \ No newline at end of file + "type": "filament", + "name": "PolySonic PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "K3kUZYddQO8SUKKa", + "filament_id": "OF66KUAN", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Polymaker" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "55" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json b/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json index acd8558abe..384df90aea 100644 --- a/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/PolySonic PLA Pro @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "PolySonic PLA Pro @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "DEU6e8l8Gbz616Fi", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "29.99" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Polymaker" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "55" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFKbdiiJ" -} \ No newline at end of file + "type": "filament", + "name": "PolySonic PLA Pro @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "DEU6e8l8Gbz616Fi", + "filament_id": "OFKbdiiJ", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "29.99" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Polymaker" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "55" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json index b159f9141b..d8da599f2e 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Ender-3 V4-all.json @@ -1,153 +1,151 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @Ender-3 V4-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "lMmOE3j5nMNIukQN", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "1" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "60", - "customized_plate_temp_initial_layer": "60", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", - "pressure_advance": "0.024", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Ender-3 V4 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @Ender-3 V4-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "lMmOE3j5nMNIukQN", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "60", + "customized_plate_temp_initial_layer": "60", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,220]]", + "pressure_advance": "0.024", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Ender-3 V4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json index 163ed96d8a..3e8218631a 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @Hi-all.json @@ -1,146 +1,144 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @Hi-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "DzjjhzaPhKF7olJU", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - " ; filament end gcode" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "dont_slow_down_outer_wall": "1", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", - "pressure_advance": "0.068", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality Hi 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @Hi-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "DzjjhzaPhKF7olJU", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + " ; filament end gcode" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "dont_slow_down_outer_wall": "1", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", + "pressure_advance": "0.068", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality Hi 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json index 5612fad4d2..02f2e4e522 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1 Max_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K1 Max_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "9dhggId2Cg5oR8Qo", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.066", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1 Max_CFS-C 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K1 Max_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "9dhggId2Cg5oR8Qo", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > initial_layer_print_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.066", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1 Max_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json index f975e2b6c4..9bf300cddd 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K1C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "XP2BDRK5jZOC4TYv", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.066", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K1C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "XP2BDRK5jZOC4TYv", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.066", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json index 9f4c2d9029..f679fcd5cf 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1C_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K1C_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "98NLzuVoD8d35zrm", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.066", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1C_CFS-C 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K1C_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "98NLzuVoD8d35zrm", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.066", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1C_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json index 0c7bd485be..511b5d54c5 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K1_CFS-C-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K1_CFS-C-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "zovui7ZsQ26KEgYY", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.99" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "50", - "epoxy_resin_plate_temp_initial_layer": "50", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.074", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K1_CFS-C 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K1_CFS-C-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "zovui7ZsQ26KEgYY", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + ";filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "50", + "epoxy_resin_plate_temp_initial_layer": "50", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.074", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K1_CFS-C 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json index 06b1fc8729..95cf3dce88 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Plus-all.json @@ -1,165 +1,163 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "QJjtgwE6G4TS3V6y", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "80" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "QJjtgwE6G4TS3V6y", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "80" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json index 37702f76c0..bae012fbbf 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 Pro-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K2 Pro-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "cprQoD8o6UmetOxS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "95" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "0" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Pro 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K2 Pro-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "cprQoD8o6UmetOxS", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "95" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json index 7ff723f655..8c52ebabe2 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2 SE-all.json @@ -1,150 +1,148 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K2 SE-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "vAzjJYRL4Swmyq0z", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "90%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "customized_plate_temp": "0", - "customized_plate_temp_initial_layer": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 SE 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K2 SE-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "vAzjJYRL4Swmyq0z", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "90%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "customized_plate_temp": "0", + "customized_plate_temp_initial_layer": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,200],[1.2,200],[1.3,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 SE 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json index 2d68106751..b8eb3d503b 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @K2-all.json @@ -1,168 +1,166 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @K2-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "UhE9df2kH6LealCb", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "95" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.97" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "16" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", - "pressure_advance": "0.06", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @K2-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "UhE9df2kH6LealCb", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "95" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[0.5,190],[1.0,190],[1.2,220]]", + "pressure_advance": "0.06", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json index 9bad5351c2..c7f54e1c4b 100644 --- a/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Soleyin Ultra PLA @SPARKX i7-all.json @@ -1,174 +1,172 @@ { - "type": "filament", - "name": "Soleyin Ultra PLA @SPARKX i7-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "SlwK2b9m8ZQJY4nH", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "0" - ], - "cool_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "during_print_exhaust_fan_speed": [ - "0" - ], - "eng_plate_temp": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "80" - ], - "filament_cost": [ - "6" - ], - "filament_density": [ - "1.25" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "0.6" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "Creality" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_high": [ - "240" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "14" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - ";filament start gcode" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "1", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", - "pressure_advance": "0.05", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality SPARKX i7 0.4 nozzle" - ], - "filament_id": "OF02UAVh" -} \ No newline at end of file + "type": "filament", + "name": "Soleyin Ultra PLA @SPARKX i7-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "SlwK2b9m8ZQJY4nH", + "filament_id": "OF02UAVh", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "55" + ], + "cool_plate_temp_initial_layer": [ + "55" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "80" + ], + "filament_cost": [ + "6" + ], + "filament_density": [ + "1.25" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "0.6" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "Creality" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "14" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + ";filament start gcode" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "1", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[1.0,210],[1.2,220]]", + "pressure_advance": "0.05", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality SPARKX i7 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json index 77f2c6a6bf..7e5976dfdf 100644 --- a/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN ABS+ @K2 Plus-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "eSUN ABS+ @K2 Plus-all", - "inherits": "fdm_filament_abs", - "from": "system", - "setting_id": "7plEfQUFL6qclQ8B", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_max_speed": [ - "60" - ], - "filament_cost": [ - "15" - ], - "filament_density": [ - "1.08" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "textured_plate_temp": [ - "100" - ], - "textured_plate_temp_initial_layer": [ - "100" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "60", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFTXduCM" -} \ No newline at end of file + "type": "filament", + "name": "eSUN ABS+ @K2 Plus-all", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "7plEfQUFL6qclQ8B", + "filament_id": "OFTXduCM", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_max_speed": [ + "60" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.08" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "60", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json index 1afd5f1511..01e9994985 100644 --- a/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN ASA+ @K2 Plus-all.json @@ -1,159 +1,157 @@ { - "type": "filament", - "name": "eSUN ASA+ @K2 Plus-all", - "inherits": "fdm_filament_asa", - "from": "system", - "setting_id": "WjM4WIPAamvbee7G", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "100" - ], - "cool_plate_temp_initial_layer": [ - "100" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "fan_cooling_layer_time": [ - "40" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.1" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "nozzle_temperature": [ - "270" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "5" - ], - "slow_down_min_speed": [ - "20" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_layer": "2", - "activate_chamber_temp_control": "1", - "chamber_temperature": "50", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "90", - "epoxy_resin_plate_temp_initial_layer": "90", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFUmS5z5" -} \ No newline at end of file + "type": "filament", + "name": "eSUN ASA+ @K2 Plus-all", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "WjM4WIPAamvbee7G", + "filament_id": "OFUmS5z5", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "100" + ], + "cool_plate_temp_initial_layer": [ + "100" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "fan_cooling_layer_time": [ + "40" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.1" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "5" + ], + "slow_down_min_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_layer": "2", + "activate_chamber_temp_control": "1", + "chamber_temperature": "50", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "90", + "epoxy_resin_plate_temp_initial_layer": "90", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json index 08ab12e2c9..f7822a2487 100644 --- a/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PET-Basic @K2 Plus-all.json @@ -1,189 +1,187 @@ { - "type": "filament", - "name": "eSUN PET-Basic @K2 Plus-all", - "inherits": "fdm_filament_pet", - "from": "system", - "setting_id": "fJJfZCZc5MrXX1Lg", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "105" - ], - "eng_plate_temp_initial_layer": [ - "105" - ], - "fan_cooling_layer_time": [ - "30" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "40" - ], - "filament_cost": [ - "20" - ], - "filament_density": [ - "1.28" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PET" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "nozzle_temperature": [ - "250" - ], - "nozzle_temperature_initial_layer": [ - "250" - ], - "nozzle_temperature_range_low": [ - "250" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "10" - ], - "temperature_vitrification": [ - "110" - ], - "textured_plate_temp": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "60", - "epoxy_resin_plate_temp_initial_layer": "60", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFHaYaB1" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PET-Basic @K2 Plus-all", + "inherits": "fdm_filament_pet", + "from": "system", + "setting_id": "fJJfZCZc5MrXX1Lg", + "filament_id": "OFHaYaB1", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "40" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.28" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PET" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "110" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "60", + "epoxy_resin_plate_temp_initial_layer": "60", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json index d4f35de9be..83240e0283 100644 --- a/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA+ @K2 Plus-all.json @@ -1,163 +1,161 @@ { - "type": "filament", - "name": "eSUN PLA+ @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "AW7HLQJ78DAEUjge", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "80%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "6" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "53" - ], - "textured_plate_temp": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "55", - "customized_plate_temp_initial_layer": "55", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "45", - "epoxy_resin_plate_temp_initial_layer": "45", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFqINlYj" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PLA+ @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "AW7HLQJ78DAEUjge", + "filament_id": "OFqINlYj", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "6" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "53" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "55", + "customized_plate_temp_initial_layer": "55", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "45", + "epoxy_resin_plate_temp_initial_layer": "45", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json index 2e4b7703a0..6db1c4631d 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-LW @K2 Plus-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "eSUN PLA-LW @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "9lAD1qJIwwtcSvk0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "0" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "45" - ], - "eng_plate_temp_initial_layer": [ - "45" - ], - "fan_min_speed": [ - "50" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.2" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.86" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "6" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "1" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "12" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "100" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "0", - "chamber_temperature": "0", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "0", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_shrinkage_compensation_z": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", - "pressure_advance": "0.1", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFi5RSve" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PLA-LW @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "9lAD1qJIwwtcSvk0", + "filament_id": "OFi5RSve", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "fan_min_speed": [ + "50" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.2" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.86" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "1" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "0", + "chamber_temperature": "0", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "0", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_shrinkage_compensation_z": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", + "pressure_advance": "0.1", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json index d5f4324da1..b9be49bb1c 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Lite @K2 Plus-all.json @@ -1,169 +1,167 @@ { - "type": "filament", - "name": "eSUN PLA-Lite @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "om2444MoWYK7ZCqS", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.23" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "13" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "53" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFhbolij" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PLA-Lite @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "om2444MoWYK7ZCqS", + "filament_id": "OFhbolij", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.23" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "13" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "53" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json index bca728ae00..3bdb36e816 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Matte @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "eSUN PLA-Matte @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "BYYGdJpoZG5BXr1r", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_density": [ - "1.33" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "1" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "14" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "51" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode \n" - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFDETOM6" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PLA-Matte @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "BYYGdJpoZG5BXr1r", + "filament_id": "OFDETOM6", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_density": [ + "1.33" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "51" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode \n" + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json b/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json index fa57453069..2d41fc01a8 100644 --- a/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json +++ b/resources/profiles/Creality/filament/eSUN PLA-Silk @K2 Plus-all.json @@ -1,166 +1,164 @@ { - "type": "filament", - "name": "eSUN PLA-Silk @K2 Plus-all", - "inherits": "fdm_filament_pla", - "from": "system", - "setting_id": "IfZwVzcyYM0D5XR0", - "instantiation": "true", - "activate_air_filtration": [ - "0" - ], - "additional_cooling_fan_speed": [ - "100" - ], - "complete_print_exhaust_fan_speed": [ - "80" - ], - "cool_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "during_print_exhaust_fan_speed": [ - "60" - ], - "eng_plate_temp": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "filament_cost": [ - "19" - ], - "filament_density": [ - "1.21" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_flow_ratio": [ - "0.98" - ], - "filament_is_support": [ - "0" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retract_before_wipe": [ - "100%" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "1.2" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_soluble": [ - "0" - ], - "filament_vendor": [ - "eSUN" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "full_fan_speed_layer": [ - "0" - ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], - "nozzle_temperature_range_low": [ - "210" - ], - "required_nozzle_HRC": [ - "0" - ], - "slow_down_layer_time": [ - "10" - ], - "slow_down_min_speed": [ - "20" - ], - "temperature_vitrification": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" - ], - "filament_end_gcode": [ - ";filament end gcode " - ], - "activate_chamber_temp_control": "1", - "chamber_temperature": "35", - "cool_cds_fan_start_at_height": "0.5", - "cool_special_cds_fan_speed": "100", - "customized_plate_temp": "50", - "customized_plate_temp_initial_layer": "50", - "default_filament_colour": "\"\"", - "enable_overhang_bridge_fan": "1", - "enable_pressure_advance": "0", - "enable_special_area_additional_cooling_fan": "0", - "epoxy_resin_plate_temp": "40", - "epoxy_resin_plate_temp_initial_layer": "40", - "filament_cooling_final_speed": "3.4", - "filament_cooling_initial_speed": "2.2", - "filament_cooling_moves": "4", - "filament_load_time": "0", - "filament_loading_speed": "28", - "filament_loading_speed_start": "3", - "filament_multitool_ramming": "0", - "filament_multitool_ramming_flow": "10", - "filament_multitool_ramming_volume": "10", - "filament_notes": "\"\"", - "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", - "filament_retract_lift_above": "nil", - "filament_retract_lift_below": "nil", - "filament_retract_lift_enforce": "nil", - "filament_shrink": "100%", - "filament_toolchange_delay": "0", - "filament_unload_time": "0", - "filament_unloading_speed": "90", - "filament_unloading_speed_start": "100", - "material_flow_dependent_temperature": "0", - "pressure_advance": "0.04", - "support_material_interface_fan_speed": "-1", - "compatible_printers": [ - "Creality K2 Plus 0.4 nozzle" - ], - "filament_id": "OFIRUqWi" -} \ No newline at end of file + "type": "filament", + "name": "eSUN PLA-Silk @K2 Plus-all", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "IfZwVzcyYM0D5XR0", + "filament_id": "OFIRUqWi", + "instantiation": "true", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "50" + ], + "cool_plate_temp_initial_layer": [ + "50" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "eng_plate_temp": [ + "50" + ], + "eng_plate_temp_initial_layer": [ + "50" + ], + "filament_cost": [ + "19" + ], + "filament_density": [ + "1.21" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "100%" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_soluble": [ + "0" + ], + "filament_vendor": [ + "eSUN" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "50" + ], + "hot_plate_temp_initial_layer": [ + "50" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "50" + ], + "textured_plate_temp": [ + "50" + ], + "textured_plate_temp_initial_layer": [ + "50" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (layer_z > first_layer_height) }\nM104 S[nozzle_temperature]\n{else} \nM104 S[first_layer_temperature]\n{endif}" + ], + "filament_end_gcode": [ + ";filament end gcode " + ], + "activate_chamber_temp_control": "1", + "chamber_temperature": "35", + "cool_cds_fan_start_at_height": "0.5", + "cool_special_cds_fan_speed": "100", + "customized_plate_temp": "50", + "customized_plate_temp_initial_layer": "50", + "default_filament_colour": "\"\"", + "enable_overhang_bridge_fan": "1", + "enable_pressure_advance": "0", + "enable_special_area_additional_cooling_fan": "0", + "epoxy_resin_plate_temp": "40", + "epoxy_resin_plate_temp_initial_layer": "40", + "filament_cooling_final_speed": "3.4", + "filament_cooling_initial_speed": "2.2", + "filament_cooling_moves": "4", + "filament_loading_speed": "28", + "filament_loading_speed_start": "3", + "filament_multitool_ramming": "0", + "filament_multitool_ramming_flow": "10", + "filament_multitool_ramming_volume": "10", + "filament_notes": "\"\"", + "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"", + "filament_retract_lift_above": "nil", + "filament_retract_lift_below": "nil", + "filament_retract_lift_enforce": "nil", + "filament_shrink": "100%", + "filament_toolchange_delay": "0", + "filament_unloading_speed": "90", + "filament_unloading_speed_start": "100", + "material_flow_dependent_temperature": "0", + "pressure_advance": "0.04", + "support_material_interface_fan_speed": "-1", + "compatible_printers": [ + "Creality K2 Plus 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json index 1911d1f0d0..f28e3fc7a6 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE.json @@ -8,5 +8,5 @@ "bed_model": "creality_ender3v3ke_buildplate_model.stl", "bed_texture": "creality_ender3v3ke_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all" + "default_materials": "Generic ABS @Creality Ender-3V3-all;Generic ASA @Creality Ender-3V3-all;Generic PETG @Creality Ender-3V3-all;Generic PLA @Creality Ender-3V3-all;Generic PLA High Speed @Creality Ender-3V3-all;Generic PLA Matte @Creality Ender-3V3-all;Generic PLA Silk @Creality Ender-3V3-all;Generic TPU @Creality Ender-3V3-all;Generic PLA @System" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json index 3c1fcae969..5829268d2e 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality Ender-3 V4 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "R96v98fNsXyf9HXq", + "instantiation": "true", "printer_model": "Creality Ender-3 V4", "auxiliary_fan": "0", "bbl_use_printhost": "0", @@ -69,7 +71,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -105,7 +106,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality Ender-3 V4 0.4 nozzle", - "setting_id": "R96v98fNsXyf9HXq" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V4.json b/resources/profiles/Creality/machine/Creality Ender-3 V4.json index 22fc2a9c6a..3229f33792 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V4.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V4.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_Ender_3_V4", - "default_materials": "Creality Generic ABS @Ender-3 V4-all;Creality Generic ASA @Ender-3 V4-all;Creality Generic PETG @Ender-3 V4-all;Creality Generic PLA @Ender-3 V4-all;Creality Generic PLA Matte @Ender-3 V4-all;Creality Generic PLA Silk @Ender-3 V4-all;Creality Generic TPU @Ender-3 V4-all" + "default_materials": "Generic ABS @Ender-3 V4-all;Generic ASA @System;Generic PETG @Ender-3 V4-all;Generic PLA @Ender-3 V4-all;Generic PLA Matte @System;Generic PLA-Silk @Ender-3 V4-all;Generic TPU @Ender-3 V4-all" } diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.4 nozzle.json index fb15db7ab3..496a977127 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.4 nozzle.json @@ -72,7 +72,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.6 nozzle.json index f895c93b42..59d08460d5 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.6 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality Ender-5 Max 0.6 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "1idSrUiK9hZwCJNy", + "instantiation": "true", "printer_model": "Creality Ender-5 Max", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -74,7 +76,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -113,7 +114,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality Ender-5 Max 0.6 nozzle", - "setting_id": "1idSrUiK9hZwCJNy" -} \ No newline at end of file + "z_hop_types": "Slope Lift" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.8 nozzle.json index 2fad99bcea..fcfa26e790 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Max 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Max 0.8 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality Ender-5 Max 0.8 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "mPvxCeNkSTMYta2L", + "instantiation": "true", "printer_model": "Creality Ender-5 Max", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -74,7 +76,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -113,7 +114,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality Ender-5 Max 0.8 nozzle", - "setting_id": "mPvxCeNkSTMYta2L" -} \ No newline at end of file + "z_hop_types": "Slope Lift" +} diff --git a/resources/profiles/Creality/machine/Creality Ender-5 Max.json b/resources/profiles/Creality/machine/Creality Ender-5 Max.json index 9c10f97f05..08079fdfca 100644 --- a/resources/profiles/Creality/machine/Creality Ender-5 Max.json +++ b/resources/profiles/Creality/machine/Creality Ender-5 Max.json @@ -9,5 +9,5 @@ "bed_texture": "creality_ender5max_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Creality Hyper PLA-CF @Ender-5Max-all;Creality Hyper PLA @Ender-5Max-all;Creality Hyper ABS @Ender-5Max-all;Generic TPU @Creality Ender-5Max-all;Generic ASA @Creality Ender-5Max-all;Creality Silk PLA @Ender-5Max-all;Generic PLA @Creality Ender-5Max-all;Generic PETG @Creality Ender-5Max-all;Generic ABS @Creality Ender-5Max-all;Generic PA @Creality Ender-5Max-all" + "default_materials": "Creality Hyper PLA-CF @Ender-5Max-all;Creality Hyper PLA @Ender-5Max-all;Creality Hyper ABS @Ender-5Max-all;Generic TPU @Creality Ender-5Max-all;Generic ASA @Creality Ender-5Max-all;Creality Silk PLA @Ender-5Max-all;Generic PLA @Creality Ender-5Max-all;Generic PETG @Creality Ender-5Max-all;Generic ABS @Creality Ender-5Max-all;Generic PA @Creality Ender-5Max-all;Generic PLA @System" } diff --git a/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json index 57dcd7e949..2acc80fe3d 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.2 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality Hi 0.2 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "Qr6oR8AJNy1QmytY", + "instantiation": "true", "printer_model": "Creality Hi", "printer_structure": "i3", "default_print_profile": "0.1mm Standard @Creality Hi 0.2 nozzle", @@ -78,7 +80,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "1", @@ -118,7 +119,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Auto Lift", - "name": "Creality Hi 0.2 nozzle", - "setting_id": "Qr6oR8AJNy1QmytY" -} \ No newline at end of file + "z_hop_types": "Auto Lift" +} diff --git a/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json index 0372431a1e..613089a72c 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.4 nozzle.json @@ -178,7 +178,6 @@ "printer_technology": "FFF", "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", - "silent_mode": "0", "support_chamber_temp_control": "1", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json index f7bcd5884d..95d55f0a56 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.6 nozzle.json @@ -178,7 +178,6 @@ "printer_technology": "FFF", "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", - "silent_mode": "0", "support_chamber_temp_control": "1", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json index 23e19a2a66..dcf32371d4 100644 --- a/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Hi 0.8 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality Hi 0.8 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "Q7M2ihdHisSVLDGF", + "instantiation": "true", "printer_model": "Creality Hi", "printer_structure": "i3", "default_print_profile": "0.40mm Standard @Creality Hi 0.8 nozzle", @@ -73,7 +75,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "1", @@ -110,7 +111,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Auto Lift", - "name": "Creality Hi 0.8 nozzle", - "setting_id": "Q7M2ihdHisSVLDGF" -} \ No newline at end of file + "z_hop_types": "Auto Lift" +} diff --git a/resources/profiles/Creality/machine/Creality Hi.json b/resources/profiles/Creality/machine/Creality Hi.json index 279daf531c..8bb1244b8d 100644 --- a/resources/profiles/Creality/machine/Creality Hi.json +++ b/resources/profiles/Creality/machine/Creality Hi.json @@ -9,5 +9,5 @@ "bed_texture": "creality_hi_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "", - "default_materials": "Generic ABS @Creality Hi-all;Generic ABS @Hi-all;Generic ASA @Creality Hi-all;Generic ASA-CF @Creality Hi-all;Generic PETG @Creality Hi-all;Generic PETG @Hi-all;Generic PETG-CF @Creality Hi-all;Generic PLA @Creality Hi-all;Generic PLA @Hi-all;Generic PLA High Speed @Creality Hi-all;Generic PLA Matte @Creality Hi-all;Generic PLA Silk @Creality Hi-all;Generic PLA-CF @Creality Hi-all;Generic PLA Wood @Creality Hi-all;Generic TPU @Creality Hi-all" + "default_materials": "Generic ABS @Creality Hi-all;Generic ABS @Hi-all;Generic ASA @Creality Hi-all;Generic ASA-CF @Creality Hi-all;Generic PETG @Creality Hi-all;Generic PETG @Hi-all;Generic PETG-CF @Creality Hi-all;Generic PLA @Creality Hi-all;Generic PLA @Hi-all;Generic PLA High Speed @Creality Hi-all;Generic PLA Matte @Creality Hi-all;Generic PLA Silk @Creality Hi-all;Generic PLA-CF @Creality Hi-all;Generic PLA Wood @Creality Hi-all;Generic TPU @Creality Hi-all;Hyper PLA @Hi-all" } diff --git a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json index 4cde2d1f5e..01a3bc7d5d 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json @@ -121,7 +121,7 @@ "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X42 Y180 F30000\nG1 Z{z_after_toolchange} F600", "machine_pause_gcode": "PAUSE", "default_filament_profile": [ - "Generic PLA HF @Creality" + "Generic PLA HF @Creality" ], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", @@ -167,7 +167,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_air_filtration": "1", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json index afaa516e7e..fdb83b032e 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json @@ -172,7 +172,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_air_filtration": "1", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json index 417c088cb7..8cb8e6f169 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json @@ -172,7 +172,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_air_filtration": "1", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index c3978a05eb..291affba77 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -168,7 +168,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 2ebe0a97c2..523abd4de4 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -173,7 +173,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index b59c1f54a4..c67622c90b 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -173,7 +173,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json index 992ae60a0f..6d382f4c09 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1 Max_CFS-C 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "zx1WGvi1Ff3X3RpP", + "instantiation": "true", "printer_model": "Creality K1 Max_CFS-C", "auxiliary_fan": "1", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Auto Lift", - "name": "Creality K1 Max_CFS-C 0.4 nozzle", - "setting_id": "zx1WGvi1Ff3X3RpP" + "z_hop_types": "Auto Lift" } diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json index 012ad881ea..7170d6b6fb 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_Max_CFS_C", - "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality;Generic PLA @K1 Max_CFS-C-all" } diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index 95db217016..f8aa68f3c0 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -168,7 +168,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "time_cost": "0", "use_firmware_retraction": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json index b78cf80658..bbc97a8f5a 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1 SE 0.6 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "x2DzbcUOES62gJTj", + "instantiation": "true", "printer_model": "Creality K1 SE", "auxiliary_fan": "0", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "1", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality K1 SE 0.6 nozzle", - "setting_id": "x2DzbcUOES62gJTj" -} \ No newline at end of file + "z_hop_types": "Slope Lift" +} diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json index 175ff1da66..00282be149 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1 SE 0.8 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "sJR1oCXnOEQ2HZ5O", + "instantiation": "true", "printer_model": "Creality K1 SE", "auxiliary_fan": "0", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "1", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality K1 SE 0.8 nozzle", - "setting_id": "sJR1oCXnOEQ2HZ5O" -} \ No newline at end of file + "z_hop_types": "Slope Lift" +} diff --git a/resources/profiles/Creality/machine/Creality K1 SE.json b/resources/profiles/Creality/machine/Creality K1 SE.json index 1cb9769e0e..5d6d0dd51d 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE.json +++ b/resources/profiles/Creality/machine/Creality K1 SE.json @@ -9,5 +9,5 @@ "bed_texture": "creality_k1se_buildplate_texture.svg", "hotend_model": "", "default_bed_type": "Textured PEI Plate", - "default_materials": "Generic ABS @Creality K1-all;Generic ABS @K1 SE-all;Generic ASA @Creality K1-all;Generic ASA @K1 SE-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PETG @K1 SE-all;Generic PLA @Creality K1-all;Generic PLA @K1 SE-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic PLA-CF @K1 SE-all;Generic TPU @Creality K1-all;Generic TPU @K1 SE-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ABS @K1 SE-all;Generic ASA @Creality K1-all;Generic ASA @K1 SE-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PETG @K1 SE-all;Generic PLA @Creality K1-all;Generic PLA @K1 SE-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic PLA-CF @K1 SE-all;Generic TPU @Creality K1-all;Generic TPU @K1 SE-all;Hyper PLA @K1 SE-all" } diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json index 510e17ecf5..8fda2c9f43 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1 SE_CFS-C 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "jAWMfHFcVBnqEqb1", + "instantiation": "true", "printer_model": "Creality K1 SE_CFS-C", "auxiliary_fan": "0", "bbl_use_printhost": "0", @@ -70,7 +72,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -106,7 +107,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality K1 SE_CFS-C 0.4 nozzle", - "setting_id": "jAWMfHFcVBnqEqb1" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json index 835c133338..4c9ed70211 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_SE_CFS_C", - "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all;Generic PLA @K1 SE_CFS-C-all" } diff --git a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json index 5d8154c1f1..ac6fd03393 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json @@ -168,7 +168,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json index 73328c69f4..58e7fa841f 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json @@ -173,7 +173,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json index 2c59727abf..82edb57d82 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json @@ -173,7 +173,6 @@ "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", - "silent_mode": "0", "support_chamber_temp_control": "0", "thumbnails_format": "PNG", "time_cost": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json index b3221b0dd5..a49967f597 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1C_CFS-C 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "ZhdzT48wvUDLGpPp", + "instantiation": "true", "printer_model": "Creality K1C_CFS-C", "auxiliary_fan": "1", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Auto Lift", - "name": "Creality K1C_CFS-C 0.4 nozzle", - "setting_id": "ZhdzT48wvUDLGpPp" + "z_hop_types": "Auto Lift" } diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C.json index 6e80f1fbd4..d68987dd16 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1C_CFS_C", - "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all" + "default_materials": "Generic ABS @Creality K1-all;Generic ASA @Creality K1-all;Generic PA-CF @Creality K1-all;Generic PC @Creality K1-all;Generic PETG @Creality K1-all;Generic PLA @Creality K1-all;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PLA-CF @Creality K1-all;Generic TPU @Creality K1-all;Generic PLA @K1C_CFS-C-all" } diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json index 04cb946b94..4da0be155c 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K1_CFS-C 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "AnvSIapWvZ2Jpc3T", + "instantiation": "true", "printer_model": "Creality K1_CFS-C", "auxiliary_fan": "1", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Auto Lift", - "name": "Creality K1_CFS-C 0.4 nozzle", - "setting_id": "AnvSIapWvZ2Jpc3T" + "z_hop_types": "Auto Lift" } diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C.json b/resources/profiles/Creality/machine/Creality K1_CFS-C.json index c5986ae635..70ea42818a 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K1_CFS_C", - "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PC @Creality K1-all;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PETG @Creality;Generic TPU @Creality" + "default_materials": "Generic ABS @Creality;Generic ASA @Creality;Generic PC @Creality K1-all;Generic PLA @Creality;Generic PLA HF @Creality;Generic Speed PLA @Creality HF;Generic PLA High Speed @Creality K1-all;Generic PLA Matte @Creality K1-all;Generic PLA Silk @Creality K1-all;Generic PETG @Creality;Generic TPU @Creality;Generic PLA @K1_CFS-C-all" } diff --git a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json index c75b9d04f1..7c12aeadf0 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json @@ -1,9 +1,10 @@ { "type": "machine", + "name": "Creality K2 0.2 nozzle", + "inherits": "fdm_creality_common", "from": "system", "setting_id": "8aX66GbijkwrT7DY", "instantiation": "true", - "inherits": "fdm_creality_common", "printer_model": "Creality K2", "printer_settings_id": "Creality", "auxiliary_fan": "1", @@ -108,7 +109,6 @@ "printhost_authorization_type": "key", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -181,6 +181,5 @@ "z_hop": [ "0.4" ], - "name": "Creality K2 0.2 nozzle", "nozzle_height": "4" } diff --git a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json index 1c28315013..867cc80255 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K2 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "XiWyoJJ90uesQMGs", + "instantiation": "true", "printer_model": "Creality K2", "printer_settings_id": "Creality", "auxiliary_fan": "1", @@ -104,7 +106,6 @@ "printhost_authorization_type": "key", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -177,7 +178,6 @@ "z_hop": [ "0.4" ], - "name": "Creality K2 0.4 nozzle", "bbl_use_printhost": "0", "bed_exclude_area": "0x0", "bed_mesh_max": "99999,99999", @@ -201,6 +201,5 @@ "long_retractions_when_cut": "1", "retract_lift_enforce": "All Surfaces", "retraction_distances_when_cut": "30", - "z_hop_types": "Auto Lift", - "setting_id": "XiWyoJJ90uesQMGs" + "z_hop_types": "Auto Lift" } diff --git a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json index 8eb0c83877..65b7831c56 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json @@ -1,9 +1,10 @@ { "type": "machine", + "name": "Creality K2 0.6 nozzle", + "inherits": "fdm_creality_common", "from": "system", "setting_id": "xjllrWDeH0ABMI8K", "instantiation": "true", - "inherits": "fdm_creality_common", "printer_model": "Creality K2", "printer_settings_id": "Creality", "auxiliary_fan": "1", @@ -106,7 +107,6 @@ "printhost_authorization_type": "key", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -179,7 +179,6 @@ "z_hop": [ "0.4" ], - "name": "Creality K2 0.6 nozzle", "adaptive_bed_mesh_margin": "0", "bbl_use_printhost": "0", "bed_exclude_area": "0x0", diff --git a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json index 1281d5934d..cfebdec178 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json @@ -1,9 +1,10 @@ { "type": "machine", + "name": "Creality K2 0.8 nozzle", + "inherits": "fdm_creality_common", "from": "system", "setting_id": "O1ardlnBQ2nqCs07", "instantiation": "true", - "inherits": "fdm_creality_common", "printer_model": "Creality K2", "printer_settings_id": "Creality", "auxiliary_fan": "1", @@ -106,7 +107,6 @@ "printhost_authorization_type": "key", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", @@ -179,7 +179,6 @@ "z_hop": [ "0.4" ], - "name": "Creality K2 0.8 nozzle", "adaptive_bed_mesh_margin": "0", "bbl_use_printhost": "0", "bed_exclude_area": "0x0", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json index e55e947fac..9f7b11b43f 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json @@ -181,7 +181,6 @@ "printer_technology": "FFF", "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", - "silent_mode": "0", "time_cost": "0", "use_firmware_retraction": "0", "use_relative_e_distances": "1", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json index 9ca340c779..e43f1ab2b5 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json @@ -181,7 +181,6 @@ "printer_technology": "FFF", "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", - "silent_mode": "0", "time_cost": "0", "use_firmware_retraction": "0", "use_relative_e_distances": "1", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json index 4cadba6946..423aaf9373 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json @@ -181,7 +181,6 @@ "printer_technology": "FFF", "printhost_authorization_type": "key", "printhost_ssl_ignore_revoke": "0", - "silent_mode": "0", "time_cost": "0", "use_firmware_retraction": "0", "use_relative_e_distances": "1", diff --git a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json index 4b0e4754fc..a1c33a0026 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality K2 SE 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "Blm3dYf9xWwUoaYJ", + "instantiation": "true", "printer_model": "Creality K2 SE", "auxiliary_fan": "0", "bbl_use_printhost": "0", @@ -71,7 +73,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "1", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -107,7 +108,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality K2 SE 0.4 nozzle", - "setting_id": "Blm3dYf9xWwUoaYJ" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality K2 SE.json b/resources/profiles/Creality/machine/Creality K2 SE.json index 5b7ec27ea0..1a0c0901b1 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE.json +++ b/resources/profiles/Creality/machine/Creality K2 SE.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_K2_SE", - "default_materials": "Generic ABS @Creality K2-all;Generic ASA @Creality K2-all;Generic PETG @Creality K2-all;Generic PLA @Creality K2-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all" + "default_materials": "Generic ABS @Creality K2-all;Generic ASA @Creality K2-all;Generic PETG @Creality K2-all;Generic PLA @Creality K2-all;Generic PLA High Speed @Creality K2-all;Generic PLA Matte @Creality K2-all;Generic PLA Silk @Creality K2-all;Generic PLA @K2 SE-all" } diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json index c2ea633914..6a499942bf 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality SPARKX i7 0.2 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "I4qasXKWnIbPgYbu", + "instantiation": "true", "printer_model": "Creality SPARKX i7", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -78,7 +80,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -118,7 +119,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality SPARKX i7 0.2 nozzle", - "setting_id": "I4qasXKWnIbPgYbu" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json index 8ee1efeebd..68dedf568b 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality SPARKX i7 0.4 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "4usBaKppjmBSZy8N", + "instantiation": "true", "printer_model": "Creality SPARKX i7", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -78,7 +80,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -118,7 +119,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality SPARKX i7 0.4 nozzle", - "setting_id": "4usBaKppjmBSZy8N" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json index 70c72ec78f..f13761fa81 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality SPARKX i7 0.6 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "6R7l1V4liyafB0lf", + "instantiation": "true", "printer_model": "Creality SPARKX i7", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -78,7 +80,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -118,7 +119,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality SPARKX i7 0.6 nozzle", - "setting_id": "6R7l1V4liyafB0lf" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json index d8358eb9dc..053f23fd77 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json @@ -1,8 +1,10 @@ { "type": "machine", - "from": "system", - "instantiation": "true", + "name": "Creality SPARKX i7 0.8 nozzle", "inherits": "fdm_creality_common", + "from": "system", + "setting_id": "kwyQHmNESgzBBCr0", + "instantiation": "true", "printer_model": "Creality SPARKX i7", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", @@ -78,7 +80,6 @@ "printhost_ssl_ignore_revoke": "0", "purge_in_prime_tower": "0", "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -118,7 +119,5 @@ "wipe": "1", "wipe_distance": "2", "z_hop": "0.4", - "z_hop_types": "Slope Lift", - "name": "Creality SPARKX i7 0.8 nozzle", - "setting_id": "kwyQHmNESgzBBCr0" + "z_hop_types": "Slope Lift" } diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7.json b/resources/profiles/Creality/machine/Creality SPARKX i7.json index 73a5e85ead..4ec6a2a935 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7.json @@ -9,5 +9,5 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Creality_SPARKX_i7", - "default_materials": "Generic PETG @SPARKX i7-all;Generic PLA @SPARKX i7-all;CR-PLA Matte @SPARKX i7-all;Generic PLA Silk @SPARKX i7-all" + "default_materials": "Generic PETG @SPARKX i7-all;Generic PLA @SPARKX i7-all;CR-PLA Matte @SPARKX i7-all;Generic PLA-Silk @SPARKX i7-all" } diff --git a/resources/profiles/Creality/machine/fdm_creality_common.json b/resources/profiles/Creality/machine/fdm_creality_common.json index 1818e8b54b..1defbe311e 100644 --- a/resources/profiles/Creality/machine/fdm_creality_common.json +++ b/resources/profiles/Creality/machine/fdm_creality_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/Creality/machine/fdm_machine_common.json b/resources/profiles/Creality/machine/fdm_machine_common.json index 26e3032451..88b73d03e3 100644 --- a/resources/profiles/Creality/machine/fdm_machine_common.json +++ b/resources/profiles/Creality/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "support_chamber_temp_control": "0", "support_air_filtration": "0", "machine_max_acceleration_e": [ diff --git a/resources/profiles/Creality/process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json index 0ff5143efe..fa3f86d8c1 100644 --- a/resources/profiles/Creality/process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "5FeO8mZypv8CHDpj", "name": "0.06mm SuperDetail @Creality K2 Plus 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "5FeO8mZypv8CHDpj", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,100,6000], [1.0,1.5,80,5500], [1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm HueForge @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm HueForge @Creality Hi 0.4 nozzle.json index e993c77b6c..1ee91f8cad 100644 --- a/resources/profiles/Creality/process/0.08mm HueForge @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm HueForge @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "peqHRWTyVxZ2w5WU", "name": "0.08mm HueForge @Creality Hi 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "peqHRWTyVxZ2w5WU", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,100,6000,210],[1.0,1.5,80,5500,200],[1.5,2.0,60,5000,190]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", diff --git a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 0.4 nozzle.json index 3f0ff3b207..d5f49f7674 100644 --- a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "rWpJRnZscjXyKngw", "name": "0.08mm HueForge @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "rWpJRnZscjXyKngw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json index 6ddf78e2d2..1570aed7cc 100644 --- a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "nOd96z5QquzKG3iu", "name": "0.08mm HueForge @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "nOd96z5QquzKG3iu", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json index ab5c252c2b..cfbba070ec 100644 --- a/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm HueForge @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "uUPLPuPdvODZdBSU", "name": "0.08mm HueForge @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "uUPLPuPdvODZdBSU", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json index f584a86449..95593ff7f2 100644 --- a/resources/profiles/Creality/process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm HueForge @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "KQXt6EPU3DFJ4xLr", "name": "0.08mm HueForge @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "KQXt6EPU3DFJ4xLr", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "20", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -176,7 +174,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "1", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "80%", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json index 05da7204cf..121b745758 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "Gzis5yvHXQD9PnSf", "name": "0.08mm SuperDetail @Creality Hi", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "Gzis5yvHXQD9PnSf", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,100,6000,210],[1.0,1.5,80,5500,200],[1.5,2.0,60,5000,190]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", @@ -244,4 +242,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json index 7300c45c8d..df9ee89c29 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "jgP5JZdbxUbg8lfB", "name": "0.08mm SuperDetail @Creality K1 (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "jgP5JZdbxUbg8lfB", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json index adc86b4768..31523e47f4 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "715XKCccsul5FKvC", "name": "0.08mm SuperDetail @Creality K1 Max_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "715XKCccsul5FKvC", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json index 976756a212..626636bc5d 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "OhhZPXABlfjJun3o", "name": "0.08mm SuperDetail @Creality K1C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "OhhZPXABlfjJun3o", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json index 6748914ae7..b16583d310 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "DMPF0xf2yvEWmu4L", "name": "0.08mm SuperDetail @Creality K1C_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "DMPF0xf2yvEWmu4L", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json index f3f37caca7..c857595ddb 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1Max (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "CaqcNDTSGWeJ81xw", "name": "0.08mm SuperDetail @Creality K1Max (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "CaqcNDTSGWeJ81xw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json index 0144a35372..474a37c964 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "ZqIhsxrzqVs6cFvM", "name": "0.08mm SuperDetail @Creality K1_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "ZqIhsxrzqVs6cFvM", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json index 7690eb0206..8bf4ce990c 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json index 229c5be38a..7edb449976 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "VK8qeRg8ZEHRo2Rk", "name": "0.08mm SuperDetail @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "VK8qeRg8ZEHRo2Rk", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,7 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -242,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json index 26e877b4bf..3db7735d91 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "d22VPSF1SXi5gPOI", "name": "0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "d22VPSF1SXi5gPOI", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json index f9b00d5283..cd8fe57a81 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "T181USiYx4xlKGI9", "name": "0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "T181USiYx4xlKGI9", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json index 11833d41bc..822b4ce721 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json index 2edfea780c..de6729076e 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "Qq07eSaIWdVHr9mr", "name": "0.08mm SuperDetail @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "Qq07eSaIWdVHr9mr", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,7 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -242,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json index 94b622d674..ae638706d1 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "1PSmepdqo0eFyI23", "name": "0.08mm SuperDetail @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "1PSmepdqo0eFyI23", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "20", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -154,7 +152,6 @@ "slowdown_for_curled_perimeters": "0", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "1", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "80%", diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 0.2 nozzle.json index fbf0043f01..262ad0538c 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json index 6bf1baf2d2..c8e196966b 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "V2oWbmagKmmoxbv3", "name": "0.10mm HighDetail @Creality K2 Plus 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "V2oWbmagKmmoxbv3", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json index d104a68e6a..d25fe06205 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Pro 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json index 16bc203a9c..bcdad2f20e 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "GqPrfjfOMnakeSmK", "name": "0.10mm HighDetail @Creality SPARKX i7 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "GqPrfjfOMnakeSmK", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -176,7 +174,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "4", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "100%", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.2 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.2 nozzle.json index d8e1f7255d..db8752f98d 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.4 nozzle.json index 2003ecc36d..27e4e5d21a 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "RxVB6dYHB7XghTJM", "name": "0.12mm Detail @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "RxVB6dYHB7XghTJM", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json index d2c0488bd9..b33edd07d6 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "4QIsAhoHoAXDecGF", "name": "0.12mm Detail @Creality K2 Plus 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "4QIsAhoHoAXDecGF", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json index 6abaf12607..7571ba459e 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "fY34NxARSSe2qjvw", "name": "0.12mm Detail @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "fY34NxARSSe2qjvw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json index 3936bfee46..569f61bcd5 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json index 0c06c325fa..8220879a98 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "g1QZLRXoH1joFYs3", "name": "0.12mm Detail @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "g1QZLRXoH1joFYs3", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10Max.json b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10Max.json index b753d5d697..dc15cc7123 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10Max.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10Max.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "eeiPSOyL4ergqQ07", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.2.json b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.2.json index 420946637a..63bf9e3041 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.2.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "wrSsDTXZmqGP7jI6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.4.json b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.4.json index 080d492adb..0060f44220 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.4.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cDZYl2hgnh7Cc99L", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.6.json b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.6.json index fdac5e080f..7ae0e8f685 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.6.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "tSCiJ9olpnfuFwwH", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.8.json b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.8.json index e6d532895c..0b0eaa5cb6 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.8.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality CR10SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QheGOjs9kbqt0RIz", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.2.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.2.json index 9d3526378a..41f8e5b490 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.2.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "TduEizRFdShIDRcm", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.4.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.4.json index e54dac4c6f..10c03ba2a4 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.4.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Vkv3aPxQr9VEJvaF", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.6.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.6.json index dc47420779..8be588c2d6 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.6.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Oc6OFEFHUMPYMB63", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.8.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.8.json index 25c255507a..b87ff8fad8 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.8.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "UntNzp8KmgY2dJp5", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.2.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.2.json index bdbcde0c09..2abe6f6862 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.2.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "29EqYizz07WCqLH6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.4.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.4.json index e094dec366..cd3243dc7d 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.4.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Ud8sbqOYEtSQQT6z", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.6.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.6.json index f04f45f8fb..93e4e9b816 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.6.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "NZt7TVAsYcO4KVUO", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.8.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.8.json index 4a98444b8b..0dfcd85243 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.8.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3 Pro 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "hYyzb4pWqSMccfku", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2.json index 0c89db070e..1ef7613160 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "BYotUlZcqUXYiUJD", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2Neo.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2Neo.json index f5f2c12992..111278f30e 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2Neo.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2Neo.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cRgPV5JRbPRakGVF", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3 0.4 nozzle.json index 311aa9f18b..f48c53a417 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Rs3jP38ZEjdPihGT", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3KE.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3KE.json index a9beb01fcf..332c15154f 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3KE.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3KE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "EJAHGtrssuw5Z6ul", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3Plus 0.4 nozzle.json index 82c3f7e5f9..b31ed27ee6 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3Plus 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "qPcJyOUL611jQfcb", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.2.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.2.json index 812595bf28..411ea32b28 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.2.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "JM7OGS3Cjxqg6wFn", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.4.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.4.json index c01491ecfa..9e4bb3c054 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.4.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.4.json @@ -6,7 +6,6 @@ "from": "system", "setting_id": "W68mSPdmat2rCXuD", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.6.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.6.json index 797cbcafc9..66a4aa97e0 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.6.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "WS8Z9BGDgjWP3pQJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.8.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.8.json index 202ac828bc..5bcec917a2 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.8.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V3SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "kkfspmZozKFg5BA4", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json index d452d0e75e..753f7dee03 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Ender5Pro (2019).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pMT5vO5IBWX9wZLG", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality Hi 0.4 nozzle.json index d332eeaf3b..13ab3bb638 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "BqQTYLbb22LCHEJN", "name": "0.12mm Fine @Creality Hi", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "BqQTYLbb22LCHEJN", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,180,5000],[1.0,1.5,160,4000],[1.5,2.0,150,3000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 (0.4 nozzle).json index 56e76e7a03..b871ea6cdb 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 (0.4 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "g6zPlZ8mKj4YHC9l", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json index 0d9c5f4f5b..b54cb6302f 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality K1 SE 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cAcjLnedHgi2zJ05", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", @@ -116,4 +114,4 @@ "xy_contour_compensation": "0", "gcode_label_objects": "0", "precise_outer_wall": "1" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality K1C 0.4 nozzle.json index 00e10594e3..cf08bcd873 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality K1C 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "G93LbyixXNXBiA0c", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", @@ -115,4 +113,4 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "gcode_label_objects": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality K1Max (0.4 nozzle).json b/resources/profiles/Creality/process/0.12mm Fine @Creality K1Max (0.4 nozzle).json index 0afe3367a5..fc5daba4ac 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality K1Max (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality K1Max (0.4 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "hfAhnivnymhUKkuS", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -31,7 +30,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.12", diff --git a/resources/profiles/Creality/process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json index db05c36733..97da9d42d5 100644 --- a/resources/profiles/Creality/process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Fine @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "gHnRFCfQOiqEOQhq", "name": "0.12mm Fine @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "gHnRFCfQOiqEOQhq", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "20", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -174,7 +172,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "1", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "80%", diff --git a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 0.2 nozzle.json b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 0.2 nozzle.json index 23ee07ff02..dca59ca762 100644 --- a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json index acdb2c2403..59fc3954db 100644 --- a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "AgwKETM82R6PNW8u", "name": "0.14mm Optimal @Creality K2 Plus 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "AgwKETM82R6PNW8u", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,100,6000], [1.0,1.5,80,5500], [1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json index dc2ded50f4..af11446856 100644 --- a/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Pro 0.2 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Creality/process/0.15mm Optimal @Creality CR10Max.json b/resources/profiles/Creality/process/0.15mm Optimal @Creality CR10Max.json index e04a25a2e7..997f874554 100644 --- a/resources/profiles/Creality/process/0.15mm Optimal @Creality CR10Max.json +++ b/resources/profiles/Creality/process/0.15mm Optimal @Creality CR10Max.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "AhVlBBKSgNv8gtzF", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender3V2.json b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender3V2.json index 91fa465acc..979f70e7a5 100644 --- a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender3V2.json +++ b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender3V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ZlLapzGj5AcZJW7n", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json index cae991ff76..f731a0fbac 100644 --- a/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json +++ b/resources/profiles/Creality/process/0.15mm Optimal @Creality Ender5Pro (2019).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ysg14LXoki3gnanY", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json index aeb29cee0a..f85c92a4e5 100644 --- a/resources/profiles/Creality/process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Fine @Creality Ender-3 V4 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "cFlbPrdjMi4CLWZF", "name": "0.16mm Fine @Creality Ender-3 V4 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "cFlbPrdjMi4CLWZF", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -263,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR-6 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR-6 0.4.json index 44e22d33e9..c5dc0794c6 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR-6 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR-6 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "hB2b43wb6zlKNwM7", "instantiation": "true", - "adaptive_layer_height": "1", "brim_object_gap": "0", "brim_width": "0", "default_acceleration": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.2.json index 77f4e754f6..9f69042388 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "KJS40SDSHBwiqODl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.4.json index 336e78ac1c..866a2c05d9 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "0MJLzTqNgW25Uheg", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.6.json index 1f1a708b4b..d3a63e4193 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "N8cFrOUSa1yfMrv0", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.8.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.8.json index b98f76289e..82c26510c7 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.8.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cjrvnlS7gkkm0pNy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10V2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10V2.json index 067aa42760..a0c88be82a 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10V2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality CR10V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QussxQZJlCnscRO8", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.2.json index a41f412f45..1664978e87 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cply3AO1zRZSsHgR", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.4.json index 9a42f54448..ac767b8490 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "11bH6lpigIvL8u8f", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.6.json index 0c74372dee..2a5050d2b7 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Fke1V31Lx19EoKIA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.8.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.8.json index 0ecee26eb0..329db47286 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.8.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "9fSweJ4F7gua7Uc7", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.2.json index e2ab351bc7..4096165c24 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "DwpNJnb8eEz7L9Bb", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.4.json index c21dcdd143..ed65a2fb18 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "43mtG5xlkphvMKKd", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.6.json index c8f9692039..9425a012a8 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Jhb6GdIOKHntN1Ya", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.8.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.8.json index a90a14ce26..4dd044f031 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.8.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3 Pro 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fxgj9J397IulykPl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1.json index 1adc7edee9..16ef9d5d29 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "O0dOiNS7TEZtCZ8R", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.2.json index 6ec52bb438..90151f2c75 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "eWDWBHYshBLl925f", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.4.json index dc0b13a54d..de800c7b94 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "HjQX9RTDFKq7QGtA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.6.json index 4dca077fd8..9030c8abe9 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "sFUH487ulcosG1Aj", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.8.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.8.json index 0b360bbdf5..95b568b104 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.8.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Plus 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dDjBGlXptHbFRkZe", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Pro.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Pro.json index dc75dd8a6b..42661ac38d 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Pro.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "XL3fQRXNDiWlirhY", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V2Neo.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V2Neo.json index ee244e17c8..423c828055 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V2Neo.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V2Neo.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "aoBTpFYHhbpg1kuj", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3 0.4 nozzle.json index c3487fcff2..e361cd3784 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "2Nrbq8PxssUPBLza", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.16", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3KE.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3KE.json index 3ae447f19b..ab29d7af18 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3KE.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3KE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ujKrpcMbGeL1pnX6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3Plus 0.4 nozzle.json index 9139a9ab80..63a173201c 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3Plus 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "eni3OChSXVGLB0NB", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.16", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.2.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.2.json index b7113edd45..9691a8e555 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.2.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "CSSjT637cJ1BSrDa", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.4.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.4.json index 052142f6ec..7970cd9ec4 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.4.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.4.json @@ -6,7 +6,6 @@ "from": "system", "setting_id": "jvnrh3jh6Btbs1Ja", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.6.json index 1bc4ed673f..5a8f264e9b 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "oFqTILkrvntT8uHM", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.8.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.8.json index 676751fa1e..a9e589bf62 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.8.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3V3SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "kLTt1KBtPskehSHv", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5.json index 8912d61ace..837a2b1a56 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dIPbjfE0UjFaq6YU", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Plus.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Plus.json index 704cd3756a..569e6c021f 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Plus.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "A7RB0AQ0t1UkCN5G", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S.json index fb485bbf21..d59abbd109 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "qVu6mv4sVrVzWxvy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S1.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S1.json index 45d61838d5..a5ce9a6b3a 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S1.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S1.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "03w4e0cMfUFjZcv6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender6.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender6.json index 4669bff842..8e1c2e74f8 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender6.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Ender6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cjGhLiKivneRnlNJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Hi 0.4 nozzle.json index 77b1295186..6f7f4a0154 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "NtD3nnUvAO8aSUDJ", "name": "0.16mm Optimal @Creality Hi", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "NtD3nnUvAO8aSUDJ", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,180,5000],[1.0,1.5,160,4000],[1.5,2.0,150,3000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 (0.4 nozzle).json index d6caa5e775..7c9548b0f5 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "A0a8psWEQGdmYiPj", "name": "0.16mm Optimal @Creality K1 (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "A0a8psWEQGdmYiPj", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json index a1896fa377..f3b0e35677 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "BQiQnQJpN2Yy4c7u", "name": "0.16mm Optimal @Creality K1 Max_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "BQiQnQJpN2Yy4c7u", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json index 087d90a584..bece32d26b 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "xHoh6Y8AfDzNA5Mf", "name": "0.16mm Optimal @Creality K1 SE", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "xHoh6Y8AfDzNA5Mf", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,8 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json index 62708a822a..07778ded42 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "ZhEEAnJ5eh6QES40", "name": "0.16mm Optimal @Creality K1 SE_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "ZhEEAnJ5eh6QES40", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -263,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C 0.4 nozzle.json index 5deb17002e..c4952f98a6 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "i25lsWBmZF21XcdV", "name": "0.16mm Optimal @Creality K1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "i25lsWBmZF21XcdV", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json index 2365a82d31..3165987f20 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "CpdVjCmJkN3pWssv", "name": "0.16mm Optimal @Creality K1C_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "CpdVjCmJkN3pWssv", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json index 02507c806f..dd4772c4d0 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "IN9EjcbeLmwzyIrt", "name": "0.16mm Optimal @Creality K1Max (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "IN9EjcbeLmwzyIrt", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json index cda928b2e7..8c67647925 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "a76Q90iyWf1az7Fv", "name": "0.16mm Optimal @Creality K1_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "a76Q90iyWf1az7Fv", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 0.4 nozzle.json index d8e00651f2..61d916d5ba 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "xcJYMZt1N40vmszc", "name": "0.16mm Optimal @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "xcJYMZt1N40vmszc", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json index 1f9b68b300..e4337f090c 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "Qh4PUdesKrjSUXFm", "name": "0.16mm Optimal @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "Qh4PUdesKrjSUXFm", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json index 80277008a0..df397e484f 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "FCUUtHpYIxeokc0a", "name": "0.16mm Optimal @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "FCUUtHpYIxeokc0a", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json index c23d00fba0..a5baecce55 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "8z63KIGeDgitLqPe", "name": "0.16mm Optimal @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "8z63KIGeDgitLqPe", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "30", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -174,7 +172,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "2", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "100%", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality Sermoon V1.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality Sermoon V1.json index 1500b58edd..8a5cb6d850 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality Sermoon V1.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality Sermoon V1.json @@ -34,7 +34,6 @@ "inner_wall_acceleration": "6000", "inner_wall_line_width": "0.61", "inner_wall_speed": "195", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.32", "internal_solid_infill_speed": "195", "ironing_flow": "10%", diff --git a/resources/profiles/Creality/process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json index 4511db51d8..e21d0b231a 100644 --- a/resources/profiles/Creality/process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Standard @Creality K2 SE 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "KopqA4S2dMBSCBSD", "name": "0.16mm Standard @Creality K2 SE 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "KopqA4S2dMBSCBSD", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 0.6 nozzle.json b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 0.6 nozzle.json index c6aff2c46c..62262e67cc 100644 --- a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json index 9111e8a395..84c61a1cf3 100644 --- a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "3wVXi8pXkGNmKm53", "name": "0.18mm Detail @Creality K2 Plus 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "3wVXi8pXkGNmKm53", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json index d2299f536e..ec97ecf362 100644 --- a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Pro 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.1mm Standard @Creality Hi 0.2 nozzle.json b/resources/profiles/Creality/process/0.1mm Standard @Creality Hi 0.2 nozzle.json index 40475733fd..6d1c733aaf 100644 --- a/resources/profiles/Creality/process/0.1mm Standard @Creality Hi 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.1mm Standard @Creality Hi 0.2 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "tkSkduU7S0ysAtM7", "name": "0.1mm Standard @Creality Hi 0.2 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "tkSkduU7S0ysAtM7", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,180,5000],[1.0,1.5,160,4000],[1.5,2.0,150,3000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", diff --git a/resources/profiles/Creality/process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json index 422e928cc0..422d65d29a 100644 --- a/resources/profiles/Creality/process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm High Quality @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "UR1b2Z2o4t2uXsDO", "name": "0.20mm High Quality @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "UR1b2Z2o4t2uXsDO", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10Max.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10Max.json index 702fcf8ea8..dd416019bd 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10Max.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10Max.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ZShSFfwlxaYTLPyk", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.2.json index d540f01b05..c632f50d4e 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "SUpsCvktcGgKFOwG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.4.json index 2ed8c6707f..d9fb92fa07 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Mi0CWgKQO5QtCUgX", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.6.json index 36616153a4..62e00bd7c9 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ogY513sf2Ht92CNe", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.8.json index fe5cba1347..36c9f430d3 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.8.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "athOsWrvUS4bdchK", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V2.json index 4a37e7aed6..339f526068 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pRsZ1fGFRb5LxTi6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.4.json index 8d5f34c010..6a21dbbb0f 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "oThS7cBtZl2ycbIR", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.6.json index d468da293f..17fc2be073 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR10V3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "BDjZsZ3Eron3yC6o", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json index b6d6703693..5f373ce662 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-3 V4 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "V6277KGs62IwLGt2", "name": "0.20mm Standard @Creality Ender-3 V4 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "V6277KGs62IwLGt2", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-5 Max 0.4mm nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-5 Max 0.4mm nozzle.json index c8decdadad..2e08e610f9 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-5 Max 0.4mm nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender-5 Max 0.4mm nozzle.json @@ -126,7 +126,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.2.json index 84722ac71c..f1cfbfe8f3 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "NUOwkxvz6bzH12be", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.4.json index 9e7ec845b1..b27666455f 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "aPYE2hHFn4jp6hHd", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.6.json index b24bac30e1..ee6e2ed895 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "iuwxYTfWfZ4RyZEg", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.8.json index e85725b2db..0a9358e108 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.8.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fhwVxG08WJloBcrL", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.2.json index 6912aaebab..0c2b09e737 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "V3Ik8iTHlZh5QNKm", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.4.json index 3e1b899446..b93111451e 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "g5sSMikMlHAPS2go", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.6.json index 9ddf750136..c190f844a8 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "vuh1vEUnXIvFGssp", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.8.json index 537fff135e..260cb03123 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.8.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3 Pro 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "l6niLUptIm4MfRTB", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3.json index 9abea8d074..dc1e84e791 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "XzSinPHka1JNcgdc", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1.json index c8e6b39c19..1c2f7de443 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "6n6QHp6IAmmgmTy7", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.2.json index 9aba5bb71d..6d9ab2fe28 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "BmsBXICyG0DusAHS", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.4.json index 219119b0b9..cd152d2d75 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "FFWB7dkbWTGsR5a1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.6.json index 71fadd1ded..e97c038247 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Fo07KIkbZydVaBgi", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.8.json index 4ce194a79e..49582a273f 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.8.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Plus 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "FiSvC283VqqMpr41", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Pro.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Pro.json index 022e911acc..19346b5d19 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Pro.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dPims9blQsZMrtnN", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2.json index 0e16e788ef..c20ff406ed 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pmPzGC04PU62qjcz", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2Neo.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2Neo.json index 89c4f56fa8..1862dc394d 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2Neo.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2Neo.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "bVXaGFQ7f2jkilWk", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3 0.4 nozzle.json index 0f5aae0bd6..1cf983d9bd 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "wG01ybBcp59pX5lB", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3KE.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3KE.json index 4041987d50..f01fbe0a46 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3KE.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3KE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "H198VcahxwpEdma0", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3Plus 0.4 nozzle.json index 97892cc203..74a046068b 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3Plus 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "rG5BalEQ9WpjxWXr", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.2.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.2.json index cdd841907d..05e6f8075d 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.2.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "JrWxHTh4DZ7zRaog", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.4.json index a5ea94dfcc..12caa25379 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.4.json @@ -6,7 +6,6 @@ "from": "system", "setting_id": "YLkw9eyyK7cm97ek", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.6.json index 694492b626..52c9d083dc 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "8xefmMVdxxfX5MTl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.8.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.8.json index ec49bea8c6..f9776005d8 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.8.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V3SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "DLABbffpOkmSzZrG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5.json index 7d4eef8be2..efaba44268 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "8Ok1ykiLVdEftiJO", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Plus.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Plus.json index 4de5bed1c6..a1ad472270 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Plus.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "y5dNuwrcPQ1xUKOM", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json index 3abc3478f3..4c9413c6e1 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Pro (2019).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jy8Ih6XxbX6mY2Z2", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S.json index 9dfdc2bc12..761c7164c8 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5x3ZLLMD1JScujiM", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S1.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S1.json index 5546e8b916..fac00205d0 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S1.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S1.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lRpMOtyu8tTd4q5C", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender6.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender6.json index 98e7815784..3ffeed2563 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Ender6.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Ender6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "HWmFUQgTTKxAkHnA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Hi 0.4 nozzle.json index 5a5b6096a0..36e31c387e 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Hi 0.4 nozzle.json @@ -187,8 +187,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", "prime_volume": "45", @@ -266,4 +264,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "90", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 (0.4 nozzle).json index eaaeb4529f..0a1aa84ab7 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 (0.4 nozzle).json @@ -182,8 +182,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "30", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -264,4 +262,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json index 1a4bd4a3f3..1d3aaa5305 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "aBAXeSGAYu5QgS8m", "name": "0.20mm Standard @Creality K1 Max_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "aBAXeSGAYu5QgS8m", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json index 19b01a9964..343dc08735 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE 0.4.json @@ -179,8 +179,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", "prime_volume": "45", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json index b7365760f4..020d100487 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "RBEfIJsnl68JBPDc", "name": "0.20mm Standard @Creality K1 SE_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "RBEfIJsnl68JBPDc", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1C 0.4 nozzle.json index aa8e7b440a..cc45207d21 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1C 0.4 nozzle.json @@ -182,8 +182,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -264,4 +262,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json index 882703434d..d5f8e9f5a9 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "KXIWcAo9MAwFwT70", "name": "0.20mm Standard @Creality K1C_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "KXIWcAo9MAwFwT70", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1Max (0.4 nozzle).json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1Max (0.4 nozzle).json index 51ada298d8..b49612f90d 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1Max (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1Max (0.4 nozzle).json @@ -182,8 +182,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "30", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -264,4 +262,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json index 85dd6bbf3d..6a48c91240 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K1_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "x8wjQRt9jfXwd6cJ", "name": "0.20mm Standard @Creality K1_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "x8wjQRt9jfXwd6cJ", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 0.4 nozzle.json index ab4c3c4581..f0678f0fb0 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "4xypdknoIfLrsbrs", "name": "0.20mm Standard @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "4xypdknoIfLrsbrs", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -270,6 +269,5 @@ "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", - "xy_hole_compensation": "0", - "overhang_totally_speed": "25" -} \ No newline at end of file + "xy_hole_compensation": "0" +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json index 9faaa2515e..b3270bcfc1 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json @@ -172,8 +172,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "prime_tower_brim_width": "3", "prime_volume": "45", "print_flow_ratio": "1", @@ -243,4 +241,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json index d46a33f97e..7ef44f3d9a 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Pro 0.4 nozzle.json @@ -180,8 +180,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", "prime_volume": "45", @@ -266,4 +264,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json index 39876b77dd..debcf747fb 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 SE 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "eXLuYlHmWAomEpIp", "name": "0.20mm Standard @Creality K2 SE 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "eXLuYlHmWAomEpIp", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json index 11e1f6ed45..19e58926e3 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "VxY2jazB2Kn4930i", "name": "0.20mm Standard @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "VxY2jazB2Kn4930i", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -176,7 +174,6 @@ "small_area_infill_flow_compensation_model": "0,0;\n0.2,0.4444;\n0.4,0.6145;\n0.6,0.7059;\n0.8,0.7619;\n1.5,0.8571;\n2,0.8889;\n3,0.9231;\n5,0.9520;\n10,1", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "2", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "100%", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality Sermoon V1.json b/resources/profiles/Creality/process/0.20mm Standard @Creality Sermoon V1.json index d06447035a..35a4cab279 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality Sermoon V1.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality Sermoon V1.json @@ -34,7 +34,6 @@ "inner_wall_acceleration": "6000", "inner_wall_line_width": "0.61", "inner_wall_speed": "195", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.32", "internal_solid_infill_speed": "195", "ironing_flow": "10%", diff --git a/resources/profiles/Creality/process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json index e98933167c..68eb579518 100644 --- a/resources/profiles/Creality/process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Strength @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "wApX9tYxw2iElGhq", "name": "0.20mm Strength @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "wApX9tYxw2iElGhq", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", diff --git a/resources/profiles/Creality/process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json b/resources/profiles/Creality/process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json index d84217d2ff..944efd7c84 100644 --- a/resources/profiles/Creality/process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Ultrafast @Creality Ender-5 Max 0.4mm nozzle.json @@ -128,7 +128,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 0.8 nozzle.json b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 0.8 nozzle.json index 010b4aecbf..ee41e3758a 100644 --- a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json index 0d11e5ac33..87c0158459 100644 --- a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "fIlqMCEz5fbmGHKW", "name": "0.24mm Detail @Creality K2 Plus 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "fIlqMCEz5fbmGHKW", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json index 4e6400fb7c..a7ac8696b2 100644 --- a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Pro 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10Max.json b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10Max.json index 0b24f4d0b7..30dceb8779 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10Max.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10Max.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5RGkaM3sTHAC90DK", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.2.json index 5b1ef5fde1..995a5865a4 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "mEhTPVNyKIXwHM6R", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.4.json b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.4.json index 19d6768727..7d9b92f31e 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.4.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "qZkT2BU9Kg4n9tnF", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.6.json index 68257a4de4..6da20505ee 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.6.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "g0NQSWW3BZbgAMRl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.8.json index 0c9c307c6b..528033e0ff 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.8.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality CR10SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ZdimPQfRwZ0VDiZM", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json index 494a97b4e4..65d672322e 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender-3 V4 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "JxRqFqk1obhdGIKZ", "name": "0.24mm Draft @Creality Ender-3 V4 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "JxRqFqk1obhdGIKZ", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -263,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.2.json index 6f950b8905..321a209d41 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5bb8SQOestc8UdQe", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.4.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.4.json index 5458a1290e..a7eeb4b431 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.4.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "sP41jQScaMnkdanj", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.6.json index c2cffefbc8..0f72e86f78 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.6.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5z5F9heoZFK48zCY", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.8.json index 5b0b8ef11a..bb97f10bd8 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.8.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "61RvRyfbHgGvr6eQ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.2.json index 6dfcdc172a..ae13bbdc2e 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "nDVndS7HUxU2wT2D", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.4.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.4.json index f0e543f232..b75a5f183d 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.4.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jGm1nCGpwxxtCtvT", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.6.json index 80ee65edbd..435d40e856 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.6.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "2eTryig3fd51wgQ3", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.8.json index ad27324794..80677ecbe6 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.8.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3 Pro 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "3Q7LIYMDI349jST9", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.2.json index 653d012433..40969e1d77 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ZLzHZO4Db6sjb1f1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.4.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.4.json index 231e7a82ff..2366b2862a 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.4.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "mxnyxP2RYe284OB7", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.6.json index a55b4541b3..5889b22d33 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.6.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5sa2VFy1tjN907oW", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.8.json index e20cc6741e..2790d07d1b 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.8.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3S1Plus 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "MadcYvntjYi46IDu", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2.json index 5b8482f537..af0c60205c 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "u9TtIf0XBhnWrwND", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2Neo.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2Neo.json index 73c5f253ce..d7ad5c5844 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2Neo.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2Neo.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "De7wK4KBVZ2BzRx5", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3 0.4 nozzle.json index c4669560cf..67dd47f057 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "O0jM8sqvBLR5aNfE", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3KE.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3KE.json index f4374f84d0..7e6bde3e85 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3KE.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3KE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7ZtffBsXW6wPWj7k", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3Plus 0.4 nozzle.json index 0c781beb53..de48c92b5a 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3Plus 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lH3j14miQE62zlSj", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -34,7 +33,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.2.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.2.json index 93a2507428..27b156c5d7 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.2.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "0SJNhii84pYiz380", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.4.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.4.json index beefae6aa5..94e6d6d0f6 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.4.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.4.json @@ -6,7 +6,6 @@ "from": "system", "setting_id": "Hg10EUNCLMEYYBN1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.6.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.6.json index 17015f12de..a40edcd2e2 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.6.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "6F8olUrpFz6cSOfX", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.8.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.8.json index f0c9c02f7e..d5970f77bc 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.8.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V3SE 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "L6Qdsyt0yW2TCRyk", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json index 0d210f5c9f..389f793d31 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Ender5Pro (2019).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "k1Qi7hPIAi1qp7cA", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality Hi 0.4 nozzle.json index 1fce19f64e..1cc8cfed58 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "csR8yY0OEnt7SU6T", "name": "0.24mm Draft @Creality Hi", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "csR8yY0OEnt7SU6T", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,180,5000],[1.0,1.5,160,4000],[1.5,2.0,150,3000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 (0.4 nozzle).json index ce0abbf5ac..1c72943250 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "NGQAnSKnUVHcq0sR", "name": "0.24mm Draft @Creality K1 (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "NGQAnSKnUVHcq0sR", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json index afd921a54b..a4bde680d7 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "Lxyn5qXHZh4GIGS1", "name": "0.24mm Draft @Creality K1 Max_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "Lxyn5qXHZh4GIGS1", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json index 34a577c896..53e2e515f4 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "KJc1HuWgcYJkoy32", "name": "0.24mm Draft @Creality K1 SE", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "KJc1HuWgcYJkoy32", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,8 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json index 3522e46d5a..dd17499dfd 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "dPPC73WnlF20wbsm", "name": "0.24mm Draft @Creality K1 SE_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "dPPC73WnlF20wbsm", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -263,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1C 0.4 nozzle.json index 697593d8c4..685f7fb7a3 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "POMxfD8I0LnZO9CB", "name": "0.24mm Draft @Creality K1C", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "POMxfD8I0LnZO9CB", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json index b3bf816290..c081aa886a 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "wGXybdgPzFWozZLw", "name": "0.24mm Draft @Creality K1C_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "wGXybdgPzFWozZLw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1Max (0.4 nozzle).json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1Max (0.4 nozzle).json index 9f886804e3..eeccdcc58e 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1Max (0.4 nozzle).json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1Max (0.4 nozzle).json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "rIeugRR6BYXplcpT", "name": "0.24mm Draft @Creality K1Max (0.4 nozzle)", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "rIeugRR6BYXplcpT", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json index 16ebf21b9a..28c0573cff 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K1_CFS-C 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "vGw6lrXZLHRNpR6r", "name": "0.24mm Draft @Creality K1_CFS-C 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "vGw6lrXZLHRNpR6r", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,7 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "0", "prime_tower_enhance_type": "chamfer", @@ -265,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 0.4 nozzle.json index cb761dd7cd..263a8b2c80 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "G1PKSuPoCcbIA7Yh", "name": "0.24mm Draft @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "G1PKSuPoCcbIA7Yh", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json index 4676faab10..ab8447edf4 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "sPONNeyRg4CxHD1r", "name": "0.24mm Draft @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "sPONNeyRg4CxHD1r", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json index 7c1f71451e..51e23a19c6 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "7V16er03IuXDpO4U", "name": "0.24mm Draft @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "7V16er03IuXDpO4U", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json index f8c9f5dea6..caf35701c4 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "1E0byJ2cjuoubstC", "name": "0.24mm Draft @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "1E0byJ2cjuoubstC", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "30", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -174,7 +172,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "6", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "100%", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json index 5d8dd67e1f..478422242f 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "s3qAAYV2gY2x4rrB", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -31,7 +30,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3Plus 0.6 nozzle.json index 1d9da9088e..ffe2624415 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality Ender3V3Plus 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "w5MuLpLSpMMuLXwf", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -31,7 +30,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality Hi 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality Hi 0.6 nozzle.json index edb3f7e2db..c4f3b2f024 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality Hi 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality Hi 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7uxCpPqUS9Lz1TK8", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -33,7 +32,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1 (0.6 nozzle).json index 3af9088dcd..f8e4b74c0c 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1 (0.6 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "GDs3Z2oIlW5O1tCx", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1C 0.6 nozzle.json index 9e582fad28..1595bb641e 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1C 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "eF3su8pOiDbEHiOy", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1Max (0.6 nozzle).json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1Max (0.6 nozzle).json index cf81e4557b..95dc5074d5 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K1Max (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K1Max (0.6 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "IZxO4Gmrh0sqyiC8", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.24", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 0.6 nozzle.json index d57ff66332..cf188dace1 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json index 7cefcf50f9..0cb962d8f0 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "rFcFwPDRfrVVWCmp", "name": "0.24mm Optimal @Creality K2 Plus 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "rFcFwPDRfrVVWCmp", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json index 8a246c2245..4255d84839 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Pro 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json index ab6b0843f4..ae766b65ff 100644 --- a/resources/profiles/Creality/process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Standard @Creality K2 SE 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "7DN0tghSeRVYQcde", "name": "0.24mm Standard @Creality K2 SE 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "7DN0tghSeRVYQcde", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.28mm Standard @Creality Sermoon V1.json b/resources/profiles/Creality/process/0.28mm Standard @Creality Sermoon V1.json index b67ba120ee..0a403950b9 100644 --- a/resources/profiles/Creality/process/0.28mm Standard @Creality Sermoon V1.json +++ b/resources/profiles/Creality/process/0.28mm Standard @Creality Sermoon V1.json @@ -34,7 +34,6 @@ "inner_wall_acceleration": "6000", "inner_wall_line_width": "0.61", "inner_wall_speed": "195", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.32", "internal_solid_infill_speed": "195", "ironing_flow": "10%", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json index fcd0453ca2..c3f66146d0 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "nuR9SZ4PCShEC1Cw", "name": "0.28mm SuperDraft @Creality Ender-3 V4 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "nuR9SZ4PCShEC1Cw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -263,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.2.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.2.json index 4ca758ed55..4c2962dd26 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.2.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "aQmsfZyAfVbBZ9Lh", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.4.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.4.json index 79a99fa000..9eba8aff2a 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.4.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "oFne48238nyyTRRV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.6.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.6.json index 9b6cbd3e33..6ac861cab4 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.6.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1ByZYdK7bEtBcJGG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.8.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.8.json index 59bd2ac292..3ae69265a6 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.8.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "3uR1DRElzIYQ9TDK", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.2.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.2.json index 700148dc36..ee377bed8a 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.2.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "OWrIrHWU7qzlQyqs", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.4.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.4.json index 5a871b4730..ce72fbf16b 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.4.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "yMRcZG70S3Vgb3Qh", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.6.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.6.json index 2693520fa5..6231185dad 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.6.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "N90MCWu17jFkXr2H", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.8.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.8.json index 992fc85d7e..364fab8fa5 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.8.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Ender3 Pro 0.8.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jFWnCrXEW5bNSLzq", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json index a416d5e082..a7f11d9c78 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality Hi 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "XLp864DPRIWcjHvv", "name": "0.28mm SuperDraft @Creality Hi 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "XLp864DPRIWcjHvv", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,180,5000],[1.0,1.5,160,4000],[1.5,2.0,150,3000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", @@ -264,4 +262,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json index 5686279f27..f6589c4826 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "ELCUvdTCSg4N4HVC", "name": "0.28mm SuperDraft @Creality K2 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "ELCUvdTCSg4N4HVC", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json index 3b2f7e5cc1..2311278057 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "lFZeFNWUsNRW3bvN", "name": "0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "lFZeFNWUsNRW3bvN", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "50", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json index 39760a5c12..6d7f955897 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "KO1MgETYTo42CfhQ", "name": "0.28mm SuperDraft @Creality K2 Pro 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "KO1MgETYTo42CfhQ", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -131,8 +131,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -266,4 +264,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json index e0538e6868..142f71e8bb 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "ruhDJCxvTN1nB60Z", "name": "0.28mm SuperDraft @Creality SPARKX i7 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "ruhDJCxvTN1nB60Z", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "30", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -174,7 +172,6 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", - "smooth_coefficient": "6", "smooth_speed_discontinuity_area": "1", "solid_infill_filament": "1", "sparse_infill_acceleration": "100%", diff --git a/resources/profiles/Creality/process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json b/resources/profiles/Creality/process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json index b3499fa406..32a280fd55 100644 --- a/resources/profiles/Creality/process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.2mm Standard @Creality Ender-5 Max 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "bG25lTbxHzhcGGQg", "name": "0.2mm Standard @Creality Ender-5 Max 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "bG25lTbxHzhcGGQg", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -128,7 +128,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json b/resources/profiles/Creality/process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json index 248cfee870..75bd7bb2e1 100644 --- a/resources/profiles/Creality/process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "7i9DCEZHvxgrYciY", "name": "0.2mm Ultrafast @Creality Ender-5 Max 0.4 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "7i9DCEZHvxgrYciY", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "25%", "acceleration_limit_mess_enable": "0", @@ -130,7 +130,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json index 14950f486e..f13e0672f3 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender-5 Max 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "eoPcs8fDihwCYFUB", "name": "0.30mm Standard @Creality Ender-5 Max 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "eoPcs8fDihwCYFUB", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -128,7 +128,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json index 92a4a8fc48..87930f8456 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "KZjGEI0aqppw5c55", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json index f1f3d5ce1a..9d192b3877 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "MX5VSmoPcOiBESP3", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality Hi 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality Hi 0.6 nozzle.json index a0bce0af8a..d77680e241 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality Hi 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality Hi 0.6 nozzle.json @@ -185,7 +185,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", "prime_volume": "45", @@ -263,4 +262,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "90", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/process/0.30mm Standard @Creality K1 (0.6 nozzle).json index a4bd5b2abc..9370ba6586 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K1 (0.6 nozzle).json @@ -181,8 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -262,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json index d4073f4221..29e07b4305 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K1 SE 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "qd4AsuXVsp5pvPg4", "name": "0.30mm Standard @Creality K1 SE 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "qd4AsuXVsp5pvPg4", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -128,8 +128,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K1C 0.6 nozzle.json index 3f86d9e613..e8dbe2f076 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K1C 0.6 nozzle.json @@ -181,8 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -262,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K1Max (0.6 nozzle).json b/resources/profiles/Creality/process/0.30mm Standard @Creality K1Max (0.6 nozzle).json index 54ac0870a4..07539ae51a 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K1Max (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K1Max (0.6 nozzle).json @@ -181,8 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "15", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -262,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 0.6 nozzle.json index 71facd89ff..fa678432b0 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "nRmO47B1VhqIi2KU", "name": "0.30mm Standard @Creality K2 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "nRmO47B1VhqIi2KU", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess_enable": "0", @@ -123,7 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -254,7 +253,6 @@ "material_flow_dependent_temperature": "0", "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", "min_length_factor": "0.5", - "overhang_totally_speed": "25", "prime_tower_enhance_type": "chamfer", "print_order": "default", "scarf_angle_threshold": "155", @@ -272,4 +270,4 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "speed_limit_to_height": "[[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]]", "wall_direction": "auto" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json index 216d964e6e..b414b50315 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json @@ -171,8 +171,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "prime_tower_brim_width": "3", "prime_volume": "45", "print_flow_ratio": "1", @@ -241,4 +239,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json index 2bf82bc989..677f36d515 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Pro 0.6 nozzle.json @@ -180,8 +180,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", "prime_volume": "45", @@ -266,4 +264,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json index 4da92d3732..b0ff7dc5aa 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality SPARKX i7 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "obWYPAVrLuKr93Xe", "name": "0.30mm Standard @Creality SPARKX i7 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "obWYPAVrLuKr93Xe", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json index c9a7069a2a..8af2bedd6f 100644 --- a/resources/profiles/Creality/process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Strength @Creality K2 Plus 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "h9vwxtNQGvgHVldi", "name": "0.30mm Strength @Creality K2 Plus 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "h9vwxtNQGvgHVldi", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1 (0.8 nozzle).json index 24fedd0965..3f0410b08f 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1 (0.8 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Rc7DUtP8slk0zORl", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.32", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1C 0.8 nozzle.json index 2823947840..ba7e74b9a4 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1C 0.8 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "8Yz1tYKgOhlRhEFw", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.32", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1Max (0.8 nozzle).json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1Max (0.8 nozzle).json index 40f87281de..2f03446779 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K1Max (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K1Max (0.8 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "yDUagPaIFkVkQ7aL", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.32", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 0.8 nozzle.json index e376b9dfe3..cd7aaf30b1 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json index ca58516410..969f802a02 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "wUXKe2HJBnrZhwCJ", "name": "0.32mm Optimal @Creality K2 Plus 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "wUXKe2HJBnrZhwCJ", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000], [1.0,1.5,80,5500], [1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json index 0308bb49f6..d0566f4bc1 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Pro 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3 0.6 nozzle.json index f12fb8b016..1886dd1561 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "5L1oQB22HBdoaocC", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3Plus 0.6 nozzle.json index 7a1a3c401d..b3e49730a3 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality Ender3V3Plus 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "r3dweAtprgzF0jON", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality Hi 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality Hi 0.6 nozzle.json index 0ada896430..929f9951eb 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality Hi 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality Hi 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lD86ZxmhqaFLOXs7", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -33,7 +32,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/process/0.36mm Draft @Creality K1 (0.6 nozzle).json index d3de4eb889..002d380f9f 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K1 (0.6 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "XCDNFQBF7Kx54Z2Y", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K1C 0.6 nozzle.json index 86e132abb4..620d9cc2df 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K1C 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "3yO02rZelrUrGct2", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K1Max (0.6 nozzle).json b/resources/profiles/Creality/process/0.36mm Draft @Creality K1Max (0.6 nozzle).json index 69d90fbef6..d4f253fa0c 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K1Max (0.6 nozzle).json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K1Max (0.6 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "OzKdcW8QjYz9Ekfg", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.36", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 0.6 nozzle.json index da7ca48be3..5e4b57e685 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json index 8edd6e869f..81191f9511 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "psLMoG691hQ5PSrK", "name": "0.36mm Draft @Creality K2 Plus 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "psLMoG691hQ5PSrK", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -241,4 +239,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json index 955f1332ed..55a9d77ea2 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Pro 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json index 15943f5c2c..c51f64becf 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality Ender-5 Max 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "7HQvsdltfdC8N5Hw", "name": "0.40mm Standard @Creality Ender-5 Max 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "7HQvsdltfdC8N5Hw", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess_enable": "0", @@ -128,7 +128,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality Hi 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality Hi 0.8 nozzle.json index aa0efb8f49..5f625055bc 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality Hi 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality Hi 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "1xCIS6DBlkVcCLSf", "name": "0.40mm Standard @Creality Hi 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "1xCIS6DBlkVcCLSf", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -129,7 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "1", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "cone", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/process/0.40mm Standard @Creality K1 (0.8 nozzle).json index 2de391b8ad..ba5420a888 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K1 (0.8 nozzle).json @@ -181,7 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -261,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json index 88bc46add2..4d73fdaa0c 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K1 SE 0.8 nozzle.json @@ -181,7 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K1C 0.8 nozzle.json index 5cd1a9cb6a..e8b1548947 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K1C 0.8 nozzle.json @@ -181,7 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -261,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K1Max (0.8 nozzle).json b/resources/profiles/Creality/process/0.40mm Standard @Creality K1Max (0.8 nozzle).json index c1c968cbb6..e245d5acd2 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K1Max (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K1Max (0.8 nozzle).json @@ -181,7 +181,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", @@ -261,4 +260,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 0.8 nozzle.json index b084f1cf47..00160429ce 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "mvjFUBLuSrZ1fm1e", "name": "0.40mm Standard @Creality K2 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "mvjFUBLuSrZ1fm1e", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100", "acceleration_limit_mess_enable": "0", @@ -123,7 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "40", @@ -254,7 +253,6 @@ "material_flow_dependent_temperature": "0", "material_flow_temp_graph": "[[3.0,210],[10.0,220],[12.0,230]]", "min_length_factor": "0.5", - "overhang_totally_speed": "20", "prime_tower_enhance_type": "chamfer", "print_order": "default", "scarf_angle_threshold": "155", @@ -272,4 +270,4 @@ "small_area_infill_flow_compensation_model": "0,0;\"\\n0.2,0.4444\";\"\\n0.4,0.6145\";\"\\n0.6,0.7059\";\"\\n0.8,0.7619\";\"\\n1.5,0.8571\";\"\\n2,0.8889\";\"\\n3,0.9231\";\"\\n5,0.9520\";\"\\n10,1\"", "speed_limit_to_height": "[[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]]", "wall_direction": "auto" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json index 3baf52acf5..4452d1a7bb 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json @@ -171,8 +171,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "prime_tower_brim_width": "3", "prime_volume": "45", "print_flow_ratio": "1", @@ -241,4 +239,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json index df23b1f46c..64c18db3e6 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Pro 0.8 nozzle.json @@ -180,8 +180,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "20", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", "prime_volume": "45", @@ -266,4 +264,4 @@ "wipe_tower_extra_spacing": "100%", "wipe_tower_rotation_angle": "0", "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json index 13c3d5986f..675dabd694 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality SPARKX i7 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "auHhZ5g7PonLi942", "name": "0.40mm Standard @Creality SPARKX i7 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "auHhZ5g7PonLi942", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", "acceleration_limit_mess": "[[1,1.2,150,5000]]", @@ -129,8 +129,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "20", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_enhance_type": "chamfer", diff --git a/resources/profiles/Creality/process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json index c164cd88d4..aabb6ed9b2 100644 --- a/resources/profiles/Creality/process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Strength @Creality K2 Plus 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "DPs3K2D8t8dGscqK", "name": "0.40mm Strength @Creality K2 Plus 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "DPs3K2D8t8dGscqK", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess_enable": "0", @@ -123,8 +123,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", diff --git a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json index d732c7015c..d131d479a0 100644 --- a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json index d3076515c9..836a7a1bac 100644 --- a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "kaJFaxUX6gSqC3Y7", "name": "0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "kaJFaxUX6gSqC3Y7", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json index 78bd43a0d9..d4ef78cc34 100644 --- a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Pro 0.6 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.62", "initial_layer_print_height": "0.3", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/process/0.48mm Draft @Creality K1 (0.8 nozzle).json index 3fa885318e..6c008ce9e1 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K1 (0.8 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "VMUL5DemqZSKkMEJ", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.48", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K1C 0.8 nozzle.json index 600550ddc5..d7192ac77c 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K1C 0.8 nozzle.json @@ -6,7 +6,6 @@ "from": "system", "setting_id": "qaiff3f8gSQ1GVj1", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -31,7 +30,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.48", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K1Max (0.8 nozzle).json b/resources/profiles/Creality/process/0.48mm Draft @Creality K1Max (0.8 nozzle).json index 6041d4c030..70a73e2f58 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K1Max (0.8 nozzle).json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K1Max (0.8 nozzle).json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dIWKOSX80OJ6ixTT", "instantiation": "true", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -30,7 +29,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.7", "initial_layer_print_height": "0.48", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 0.8 nozzle.json index b3508aab5c..6ce76e1469 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json index 97da7fe92e..afb293a330 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "s3FIq2ua0ODDqxtm", "name": "0.48mm Draft @Creality K2 Plus 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "s3FIq2ua0ODDqxtm", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json index 0cd49b9a89..ac12558c55 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Pro 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json index 5f97213187..f10bb8ddfb 100644 --- a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json index 8113cadf74..17fdbca6e3 100644 --- a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json @@ -1,10 +1,10 @@ { "type": "process", - "setting_id": "OUVOMZEwJDilvXiO", "name": "0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle", - "from": "system", - "instantiation": "true", "inherits": "fdm_process_creality_common", + "from": "system", + "setting_id": "OUVOMZEwJDilvXiO", + "instantiation": "true", "accel_to_decel_enable": "1", "accel_to_decel_factor": "100%", "acceleration_limit_mess": "[[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]]", @@ -124,8 +124,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "overhang_totally_speed": "25", "precise_outer_wall": "0", "prime_tower_brim_width": "3", "prime_tower_width": "60", @@ -243,4 +241,4 @@ "wiping_volumes_extruders": "70,70,70,70,70,70,70,70,70,70", "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json index 3b12ac6944..db588cb657 100644 --- a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Pro 0.8 nozzle.json @@ -31,7 +31,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.82", "initial_layer_print_height": "0.4", diff --git a/resources/profiles/Creality/process/fdm_process_common.json b/resources/profiles/Creality/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Creality/process/fdm_process_common.json +++ b/resources/profiles/Creality/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Creality/process/fdm_process_creality_common.json b/resources/profiles/Creality/process/fdm_process_creality_common.json index 7ec48d4800..2fccc865d8 100644 --- a/resources/profiles/Creality/process/fdm_process_creality_common.json +++ b/resources/profiles/Creality/process/fdm_process_creality_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Cubicon.json b/resources/profiles/Cubicon.json index ffb363c807..f70517a0b1 100644 --- a/resources/profiles/Cubicon.json +++ b/resources/profiles/Cubicon.json @@ -1,6 +1,6 @@ { "name": "Cubicon", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "Cubicon configurations", "machine_model_list": [ diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json index 2844a543a4..60ab5eac11 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-I 0.4 nozzle.json @@ -213,7 +213,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json index 85bd7be03f..8020cac27e 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Mini 0.4 nozzle.json @@ -213,7 +213,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json index 9c38452bf5..398f4e3457 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json @@ -213,7 +213,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Cubicon/machine/fdm_machine_common.json b/resources/profiles/Cubicon/machine/fdm_machine_common.json index 1264456731..2654ef5927 100644 --- a/resources/profiles/Cubicon/machine/fdm_machine_common.json +++ b/resources/profiles/Cubicon/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "support_chamber_temp_control": "0", "support_air_filtration": "0", "machine_max_acceleration_e": [ diff --git a/resources/profiles/Cubicon/process/fdm_process_common.json b/resources/profiles/Cubicon/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Cubicon/process/fdm_process_common.json +++ b/resources/profiles/Cubicon/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Cubicon/process/process template @base.json b/resources/profiles/Cubicon/process/process template @base.json index 74ddfa11d6..073bf4ea23 100644 --- a/resources/profiles/Cubicon/process/process template @base.json +++ b/resources/profiles/Cubicon/process/process template @base.json @@ -147,7 +147,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "precise_z_height": "0", diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index a8cef36ca5..aceecc557a 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json index bf48e0488b..615d3aafa4 100644 --- a/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json index ad26608bff..cef361767f 100644 --- a/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json index d710282360..f8a3f9d4ff 100644 --- a/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json index 481fd04152..3db93c2e10 100644 --- a/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json index 9aec5f168f..8fbc18b513 100644 --- a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json index 685482342e..faba4cf7cb 100644 --- a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json index 0913752501..5f20b83ec5 100644 --- a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json index 6e17b6e4c0..ccfc71ebb7 100644 --- a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json index a70aeffe29..67a46e0129 100644 --- a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json @@ -15,9 +15,6 @@ "filament_cooling_moves": [ "2" ], - "filament_load_time": [ - "10.5" - ], "filament_loading_speed": [ "10" ], @@ -30,9 +27,6 @@ "filament_stamping_loading_speed": [ "29" ], - "filament_unload_time": [ - "8.5" - ], "filament_unloading_speed": [ "100" ], diff --git a/resources/profiles/Custom/machine/fdm_klipper_common.json b/resources/profiles/Custom/machine/fdm_klipper_common.json index a0ee0f1a47..0080d0ebb0 100644 --- a/resources/profiles/Custom/machine/fdm_klipper_common.json +++ b/resources/profiles/Custom/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Slope Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Custom/machine/fdm_machine_common.json b/resources/profiles/Custom/machine/fdm_machine_common.json index 963f39c9d8..bf8f2249cf 100644 --- a/resources/profiles/Custom/machine/fdm_machine_common.json +++ b/resources/profiles/Custom/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Custom/machine/fdm_repetier_common.json b/resources/profiles/Custom/machine/fdm_repetier_common.json index b36b716e4e..27b4dd7741 100644 --- a/resources/profiles/Custom/machine/fdm_repetier_common.json +++ b/resources/profiles/Custom/machine/fdm_repetier_common.json @@ -119,7 +119,6 @@ "30" ], "z_hop_types": "Slope Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ @@ -140,4 +139,4 @@ "scan_first_layer": "0", "nozzle_type": "undefine", "auxiliary_fan": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Custom/machine/fdm_rrf_common.json b/resources/profiles/Custom/machine/fdm_rrf_common.json index 2fc9df9a3d..e9a1301622 100644 --- a/resources/profiles/Custom/machine/fdm_rrf_common.json +++ b/resources/profiles/Custom/machine/fdm_rrf_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Slope Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Custom/process/fdm_process_common.json b/resources/profiles/Custom/process/fdm_process_common.json index b8e882770a..0d558129af 100644 --- a/resources/profiles/Custom/process/fdm_process_common.json +++ b/resources/profiles/Custom/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -83,7 +82,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Custom/process/fdm_process_marlin_common.json b/resources/profiles/Custom/process/fdm_process_marlin_common.json index 6b1b1434a7..5f5c10f173 100644 --- a/resources/profiles/Custom/process/fdm_process_marlin_common.json +++ b/resources/profiles/Custom/process/fdm_process_marlin_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Custom/process/fdm_process_repetier_common.json b/resources/profiles/Custom/process/fdm_process_repetier_common.json index 3a9bc23306..66df7ad018 100644 --- a/resources/profiles/Custom/process/fdm_process_repetier_common.json +++ b/resources/profiles/Custom/process/fdm_process_repetier_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -105,4 +104,4 @@ "compatible_printers": [ "MyRepetier 0.4 nozzle" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Custom/process/fdm_process_rrf_common.json b/resources/profiles/Custom/process/fdm_process_rrf_common.json index e22df25aab..469ca6ecfd 100644 --- a/resources/profiles/Custom/process/fdm_process_rrf_common.json +++ b/resources/profiles/Custom/process/fdm_process_rrf_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/DeltaMaker.json b/resources/profiles/DeltaMaker.json index c7209bdf2b..6ef943d248 100755 --- a/resources/profiles/DeltaMaker.json +++ b/resources/profiles/DeltaMaker.json @@ -1,7 +1,7 @@ { "name": "DeltaMaker", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "DeltaMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json b/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json index ecfe431ef6..653ec60927 100755 --- a/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json +++ b/resources/profiles/DeltaMaker/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "1", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/DeltaMaker/machine/fdm_machine_common.json b/resources/profiles/DeltaMaker/machine/fdm_machine_common.json index 12c0e7d104..7e49364d76 100755 --- a/resources/profiles/DeltaMaker/machine/fdm_machine_common.json +++ b/resources/profiles/DeltaMaker/machine/fdm_machine_common.json @@ -11,7 +11,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "1", "machine_max_acceleration_e": [ "5000" ], @@ -102,7 +101,6 @@ ], "single_extruder_multi_material": "0", "change_filament_gcode": "", - "z_lift_type": "NormalLift", "default_print_profile": "", "nozzle_type": "undefine", "auxiliary_fan": "0", diff --git a/resources/profiles/DeltaMaker/process/0.25mm Draft @DeltaMaker.json b/resources/profiles/DeltaMaker/process/0.25mm Draft @DeltaMaker.json index a5a64bfede..3587ef7e7d 100755 --- a/resources/profiles/DeltaMaker/process/0.25mm Draft @DeltaMaker.json +++ b/resources/profiles/DeltaMaker/process/0.25mm Draft @DeltaMaker.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "CPkjzrLXDcdnT5u1", "instantiation": "true", - "adaptive_layer_height": "1", "layer_height": "0.25", "bottom_shell_layers": "3", "bridge_speed": "60", diff --git a/resources/profiles/DeltaMaker/process/fdm_process_common.json b/resources/profiles/DeltaMaker/process/fdm_process_common.json index 80c74007f0..09d47aab9d 100755 --- a/resources/profiles/DeltaMaker/process/fdm_process_common.json +++ b/resources/profiles/DeltaMaker/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "20.0", "bottom_surface_pattern": "monotonic", @@ -82,7 +81,6 @@ "support_object_xy_distance": "0.8", "tree_support_branch_angle": "45", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Dremel.json b/resources/profiles/Dremel.json index 71f13d0dc8..3d804f6a1b 100644 --- a/resources/profiles/Dremel.json +++ b/resources/profiles/Dremel.json @@ -1,6 +1,6 @@ { "name": "Dremel", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Dremel configurations", "machine_model_list": [ diff --git a/resources/profiles/Dremel/machine/fdm_dremel_common.json b/resources/profiles/Dremel/machine/fdm_dremel_common.json index 0dae7eb9ea..d032e63646 100644 --- a/resources/profiles/Dremel/machine/fdm_dremel_common.json +++ b/resources/profiles/Dremel/machine/fdm_dremel_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/Dremel/machine/fdm_machine_common.json b/resources/profiles/Dremel/machine/fdm_machine_common.json index 1264456731..2654ef5927 100644 --- a/resources/profiles/Dremel/machine/fdm_machine_common.json +++ b/resources/profiles/Dremel/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "support_chamber_temp_control": "0", "support_air_filtration": "0", "machine_max_acceleration_e": [ diff --git a/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D40 0.4.json b/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D40 0.4.json index 6b97a85444..377d1a67a7 100644 --- a/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D40 0.4.json +++ b/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D40 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "9KpA5yblUW2rVLZY", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "40", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D45 0.4.json b/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D45 0.4.json index 734b6e5c69..1b4090e8fc 100644 --- a/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D45 0.4.json +++ b/resources/profiles/Dremel/process/.05mm Super Detail @Dremel 3D45 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "wSAun08YCT9u9pOY", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "40", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D20 0.4.json b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D20 0.4.json index 716b2ca2dc..b757aa1bb0 100644 --- a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D20 0.4.json +++ b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D20 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "n2k8VXfPE45lzxmq", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "5000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "45", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D40 0.4.json b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D40 0.4.json index 6089ca8f5b..b2a12da6ab 100644 --- a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D40 0.4.json +++ b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D40 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1dgGvgPtncRPdWVX", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D45 0.4.json b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D45 0.4.json index ad07216741..e48ad6212f 100644 --- a/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D45 0.4.json +++ b/resources/profiles/Dremel/process/.10mm Detail @Dremel 3D45 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "DXivoqKpf6E0edQV", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "40", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D20 0.4.json b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D20 0.4.json index 358fef4448..06ffde36b7 100644 --- a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D20 0.4.json +++ b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D20 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1EacU2rT7gdsnkP4", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "0.95", "bridge_speed": "25", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "5000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "15%", "ironing_spacing": "0.1", diff --git a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D40 0.4.json b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D40 0.4.json index 4c083240de..ac92266b97 100644 --- a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D40 0.4.json +++ b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D40 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "iraCyWuqWZ9D0Zw1", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D45 0.4.json b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D45 0.4.json index a974c3097b..7ff03cb876 100644 --- a/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D45 0.4.json +++ b/resources/profiles/Dremel/process/.20mm Standard @Dremel 3D45 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "DU8Yd6C1GF2uIuNF", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "50", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D20 0.4.json b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D20 0.4.json index 5d16155453..601268bac0 100644 --- a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D20 0.4.json +++ b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D20 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "iX1Z2gHIGCWuZAJC", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "5000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D40 0.4.json b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D40 0.4.json index 27175afdf2..19719d7008 100644 --- a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D40 0.4.json +++ b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D40 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "N3x1hdUv74ecskhv", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D45 0.4.json b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D45 0.4.json index ca224bf687..24be67d78e 100644 --- a/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D45 0.4.json +++ b/resources/profiles/Dremel/process/.30mm Draft @Dremel 3D45 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "O6ulsZPXdb1dpOTB", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.4", "internal_solid_infill_speed": "50", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D40 0.4.json b/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D40 0.4.json index 8db1965a59..eca0dfe6ff 100644 --- a/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D40 0.4.json +++ b/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D40 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "WMm4Yxia1QjZCK3h", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "60", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D45 0.4.json b/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D45 0.4.json index d7a6db964e..3801591ebc 100644 --- a/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D45 0.4.json +++ b/resources/profiles/Dremel/process/.34mm SuperDraft @Dremel 3D45 0.4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "verN5otUrqpeDtY4", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50", "brim_width": "5", @@ -30,7 +29,6 @@ "inner_wall_acceleration": "2000", "internal_solid_infill_line_width": "0.56", "internal_solid_infill_speed": "50", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "2000", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Dremel/process/fdm_process_common.json b/resources/profiles/Dremel/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Dremel/process/fdm_process_common.json +++ b/resources/profiles/Dremel/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Dremel/process/fdm_process_dremel_common.json b/resources/profiles/Dremel/process/fdm_process_dremel_common.json index b68c7230b3..92358dc814 100644 --- a/resources/profiles/Dremel/process/fdm_process_dremel_common.json +++ b/resources/profiles/Dremel/process/fdm_process_dremel_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index 9d2da9692c..b2e2c21f14 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,6 +1,6 @@ { "name": "Elegoo", - "version": "02.04.00.08", + "version": "02.04.00.09", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ diff --git a/resources/profiles/Elegoo/machine/fdm_elegoo_common.json b/resources/profiles/Elegoo/machine/fdm_elegoo_common.json index fffd18ea44..5bbfacf133 100644 --- a/resources/profiles/Elegoo/machine/fdm_elegoo_common.json +++ b/resources/profiles/Elegoo/machine/fdm_elegoo_common.json @@ -1,9 +1,9 @@ { "type": "machine", "name": "fdm_elegoo_common", + "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", - "inherits": "fdm_machine_common", "gcode_flavor": "marlin", "printer_technology": "FFF", "nozzle_diameter": [ @@ -141,7 +141,6 @@ "thumbnails_format": "PNG", "nozzle_type": "brass", "machine_end_gcode": "G90 ;Absolute positionning\nM83 ; extruder relative mode\nG1 X10 Y{print_bed_max[1]*0.8} Z{min(max_layer_z+100, printable_height)} E-8 F{travel_speed*60} ; Move print head up\nG1 Z{min(max_layer_z+100, printable_height-2)} F600\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM84 ;Disable all steppers", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M600", diff --git a/resources/profiles/Elegoo/machine/fdm_machine_common.json b/resources/profiles/Elegoo/machine/fdm_machine_common.json index 249e760920..283197aa4e 100644 --- a/resources/profiles/Elegoo/machine/fdm_machine_common.json +++ b/resources/profiles/Elegoo/machine/fdm_machine_common.json @@ -20,7 +20,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Elegoo/process/fdm_process_common.json b/resources/profiles/Elegoo/process/fdm_process_common.json index a2bd0ea5f1..01b285b7f0 100644 --- a/resources/profiles/Elegoo/process/fdm_process_common.json +++ b/resources/profiles/Elegoo/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", @@ -28,7 +27,6 @@ "sparse_infill_line_width": "0.45", "infill_wall_overlap": "15%", "sparse_infill_speed": "50", - "overhang_speed_classic": "1", "interface_shells": "0", "detect_overhang_wall": "0", "reduce_infill_retraction": "1", diff --git a/resources/profiles/Elegoo/process/fdm_process_elegoo_common.json b/resources/profiles/Elegoo/process/fdm_process_elegoo_common.json index 2ca6daf45b..1e61b87f49 100644 --- a/resources/profiles/Elegoo/process/fdm_process_elegoo_common.json +++ b/resources/profiles/Elegoo/process/fdm_process_elegoo_common.json @@ -16,7 +16,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "30", diff --git a/resources/profiles/Eryone.json b/resources/profiles/Eryone.json index 488ba18337..1ee1f88ed8 100644 --- a/resources/profiles/Eryone.json +++ b/resources/profiles/Eryone.json @@ -1,6 +1,6 @@ { "name": "Eryone", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Eryone configurations", "machine_model_list": [ diff --git a/resources/profiles/Eryone/filament/Eryone Standard PLA.json b/resources/profiles/Eryone/filament/Eryone Standard PLA.json index 103bb592d5..5b06b12ef6 100644 --- a/resources/profiles/Eryone/filament/Eryone Standard PLA.json +++ b/resources/profiles/Eryone/filament/Eryone Standard PLA.json @@ -90,9 +90,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -165,9 +162,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Eryone/machine/ER20/Eryone ER20.json b/resources/profiles/Eryone/machine/ER20/Eryone ER20.json index 26d223d2f1..c555d904dc 100644 --- a/resources/profiles/Eryone/machine/ER20/Eryone ER20.json +++ b/resources/profiles/Eryone/machine/ER20/Eryone ER20.json @@ -5,6 +5,7 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Eryone ER20", + "default_materials": "Generic PLA @System", "name": "Eryone ER20", "nozzle_diameter": "0.4;0.2;0.5;0.6;0.8", "type": "machine_model" diff --git a/resources/profiles/Eryone/machine/ER20_Klipper/Eryone ER20 Klipper.json b/resources/profiles/Eryone/machine/ER20_Klipper/Eryone ER20 Klipper.json index 2dcf3d7882..11d48a7859 100644 --- a/resources/profiles/Eryone/machine/ER20_Klipper/Eryone ER20 Klipper.json +++ b/resources/profiles/Eryone/machine/ER20_Klipper/Eryone ER20 Klipper.json @@ -6,6 +6,7 @@ "hotend_model": "", "machine_tech": "FFF", "model_id": "Eryone ER20 Klipper", + "default_materials": "Generic PLA @System", "name": "Eryone ER20 Klipper", "nozzle_diameter": "0.4;0.2;0.5;0.6;0.8", "type": "machine_model", diff --git a/resources/profiles/Eryone/machine/Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/machine/Thinker X400 0.4 nozzle.json index f45febbdbb..20f82b5fa9 100644 --- a/resources/profiles/Eryone/machine/Thinker X400 0.4 nozzle.json +++ b/resources/profiles/Eryone/machine/Thinker X400 0.4 nozzle.json @@ -182,7 +182,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Eryone/machine/Thinker X400.json b/resources/profiles/Eryone/machine/Thinker X400.json index 8293d5693e..66bd0888de 100644 --- a/resources/profiles/Eryone/machine/Thinker X400.json +++ b/resources/profiles/Eryone/machine/Thinker X400.json @@ -8,5 +8,5 @@ "bed_model": "X400_bed.stl", "bed_texture": "Thinker_texture.svg", "hotend_model": "", - "default_materials": "Eryone PLA;Eryone ABS;Eryone ASA;Eryone PETG;Eryone Silk PLA;Eryone TPU;Eryone ABS-CF;Eryone ASA-CF;Eryone PA;Eryone PA-CF;Eryone PA-GF;Eryone PETG-CF;Eryone PLA-CF;Eryone PP;Eryone PP-CF" + "default_materials": "Eryone PLA;Eryone ABS;Eryone ASA;Eryone PETG;Eryone Silk PLA;Eryone TPU;Eryone ABS-CF;Eryone ASA-CF;Eryone PA;Eryone PA-CF;Eryone PA-GF;Eryone PETG-CF;Eryone PLA-CF;Eryone PP;Eryone PP-CF;Eryone PLA @0.2 nozzle" } diff --git a/resources/profiles/Eryone/machine/fdm_machine_common.json b/resources/profiles/Eryone/machine/fdm_machine_common.json index 517cbdd10d..5d0c5e680c 100644 --- a/resources/profiles/Eryone/machine/fdm_machine_common.json +++ b/resources/profiles/Eryone/machine/fdm_machine_common.json @@ -141,7 +141,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_Klipper_common.json b/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_Klipper_common.json index e6cb922e70..82df729a08 100644 --- a/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_Klipper_common.json +++ b/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_Klipper_common.json @@ -115,7 +115,6 @@ "retraction_speed": [ "25" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_common.json b/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_common.json index 6e0d263b6a..3152866ae3 100644 --- a/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_common.json +++ b/resources/profiles/Eryone/machine/fdm_machine_eryone_ER20_common.json @@ -132,7 +132,6 @@ "50" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Eryone/process/0.20mm Standard @Thinker X400.json b/resources/profiles/Eryone/process/0.20mm Standard @Thinker X400.json index 588628cfab..311167c579 100644 --- a/resources/profiles/Eryone/process/0.20mm Standard @Thinker X400.json +++ b/resources/profiles/Eryone/process/0.20mm Standard @Thinker X400.json @@ -113,7 +113,6 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Eryone/process/eryone_ER20/0.12mm High Quality @Eryone ER20.json b/resources/profiles/Eryone/process/eryone_ER20/0.12mm High Quality @Eryone ER20.json index bb5638f010..158064d7bb 100644 --- a/resources/profiles/Eryone/process/eryone_ER20/0.12mm High Quality @Eryone ER20.json +++ b/resources/profiles/Eryone/process/eryone_ER20/0.12mm High Quality @Eryone ER20.json @@ -1,12 +1,13 @@ { + "type": "process", + "name": "0.12mm High Quality @Eryone ER20", + "inherits": "fdm_process_ER20_0.12", + "from": "system", + "setting_id": "H7ODK5fAAYDUoeSH", + "instantiation": "true", "compatible_printers": [ "Eryone ER20 0.4 nozzle" ], - "from": "system", - "inherits": "fdm_process_ER20_0.12", - "setting_id": "H7ODK5fAAYDUoeSH", - "instantiation": "true", - "name": "0.12mm High Quality @Eryone ER20", "sparse_infill_pattern": "gyroid", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", @@ -14,7 +15,5 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "type": "process" + "overhang_reverse_threshold": "50%" } diff --git a/resources/profiles/Eryone/process/eryone_ER20/0.16mm Optimal @Eryone ER20.json b/resources/profiles/Eryone/process/eryone_ER20/0.16mm Optimal @Eryone ER20.json index c59e1da21f..413d651249 100644 --- a/resources/profiles/Eryone/process/eryone_ER20/0.16mm Optimal @Eryone ER20.json +++ b/resources/profiles/Eryone/process/eryone_ER20/0.16mm Optimal @Eryone ER20.json @@ -1,12 +1,13 @@ { + "type": "process", + "name": "0.16mm Optimal @Eryone ER20", + "inherits": "fdm_process_ER20_0.16", + "from": "system", + "setting_id": "T7CLbKpkDxOdqBWk", + "instantiation": "true", "compatible_printers": [ "Eryone ER20 0.4 nozzle" ], - "from": "system", - "inherits": "fdm_process_ER20_0.16", - "setting_id": "T7CLbKpkDxOdqBWk", - "instantiation": "true", - "name": "0.16mm Optimal @Eryone ER20", "sparse_infill_pattern": "gyroid", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", @@ -14,7 +15,5 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "type": "process" + "overhang_reverse_threshold": "50%" } diff --git a/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.12mm High Quality @Eryone ER20 Klipper.json b/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.12mm High Quality @Eryone ER20 Klipper.json index bd685a42c6..8fb5c24641 100644 --- a/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.12mm High Quality @Eryone ER20 Klipper.json +++ b/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.12mm High Quality @Eryone ER20 Klipper.json @@ -1,12 +1,13 @@ { + "type": "process", + "name": "0.12mm High Quality @Eryone ER20 Klipper", + "inherits": "fdm_process_ER20_Klipper_0.12", + "from": "system", + "setting_id": "FdNIlqPmjcMxniJL", + "instantiation": "true", "compatible_printers": [ "Eryone ER20 Klipper 0.4 nozzle" ], - "from": "system", - "inherits": "fdm_process_ER20_Klipper_0.12", - "setting_id": "FdNIlqPmjcMxniJL", - "instantiation": "true", - "name": "0.12mm High Quality @Eryone ER20 Klipper", "sparse_infill_pattern": "gyroid", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", @@ -14,7 +15,5 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "type": "process" + "overhang_reverse_threshold": "50%" } diff --git a/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.16mm Optimal @Eryone ER20 Klipper.json b/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.16mm Optimal @Eryone ER20 Klipper.json index 0526d10668..8c3faa69d7 100644 --- a/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.16mm Optimal @Eryone ER20 Klipper.json +++ b/resources/profiles/Eryone/process/eryone_ER20_Klipper/0.16mm Optimal @Eryone ER20 Klipper.json @@ -1,12 +1,13 @@ { + "type": "process", + "name": "0.16mm Optimal @Eryone ER20 Klipper", + "inherits": "fdm_process_ER20_Klipper_0.16", + "from": "system", + "setting_id": "T6D9ljLTeYJNh7LY", + "instantiation": "true", "compatible_printers": [ "Eryone ER20 Klipper 0.4 nozzle" ], - "from": "system", - "inherits": "fdm_process_ER20_Klipper_0.16", - "setting_id": "T6D9ljLTeYJNh7LY", - "instantiation": "true", - "name": "0.16mm Optimal @Eryone ER20 Klipper", "sparse_infill_pattern": "gyroid", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", @@ -14,7 +15,5 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_internal_only": "0", - "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", - "type": "process" + "overhang_reverse_threshold": "50%" } diff --git a/resources/profiles/Eryone/process/fdm_process_common.json b/resources/profiles/Eryone/process/fdm_process_common.json index 3fd9decf3f..d724d1b629 100644 --- a/resources/profiles/Eryone/process/fdm_process_common.json +++ b/resources/profiles/Eryone/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -78,7 +77,6 @@ "support_object_xy_distance": "2.5", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_surface_line_width": "0.4", diff --git a/resources/profiles/Eryone/process/fdm_process_eryone_ER20_common.json b/resources/profiles/Eryone/process/fdm_process_eryone_ER20_common.json index c4d744f31e..c628cbd726 100644 --- a/resources/profiles/Eryone/process/fdm_process_eryone_ER20_common.json +++ b/resources/profiles/Eryone/process/fdm_process_eryone_ER20_common.json @@ -5,7 +5,6 @@ "instantiation": "false", "accel_to_decel_enable": "1", "accel_to_decel_factor": "50%", - "adaptive_layer_height": "0", "alternate_extra_wall": "0", "bottom_shell_layers": "4", "bottom_shell_thickness": "0", @@ -62,7 +61,6 @@ "inner_wall_line_width": "0.45", "inner_wall_speed": "80", "interface_shells": "0", - "internal_bridge_support_thickness": "0.8", "internal_bridge_angle": "0", "internal_bridge_density": "100%", "internal_bridge_flow": "1", @@ -99,7 +97,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "precise_outer_wall": "1", "precise_z_height": "1", "preheat_time": "30", @@ -131,7 +128,6 @@ "single_extruder_multi_material_priming": "1", "single_loop_draft_shield": "0", "skirt_loops": "0", - "smooth_coefficient": "80", "slow_down_layers": "1", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 384b31f464..36d0129015 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,6 +1,6 @@ { "name": "FLSun", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "FLSun configurations", "machine_model_list": [ diff --git a/resources/profiles/FLSun/machine/fdm_machine_common.json b/resources/profiles/FLSun/machine/fdm_machine_common.json index df5041bb50..11f5a9e934 100644 --- a/resources/profiles/FLSun/machine/fdm_machine_common.json +++ b/resources/profiles/FLSun/machine/fdm_machine_common.json @@ -126,7 +126,6 @@ "deretraction_speed": [ "30" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json index 6279861202..0b5512970a 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun Q5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "pIcVuwwQ8EWmPKgZ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.08", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json index 391b7743a1..90320d5dc3 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun QQSPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Ypz6DmDfVK0nHsGe", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.08", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json b/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json index 03a66178ad..9b4585d43c 100644 --- a/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.08mm Fine @FLSun SR.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "WMx2mtWIuLTNAPHS", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.08", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json index 5c9f752ee6..a28bf094f4 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun Q5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "TZdqXwp7bC2m9tpO", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json index 2d5e2ab82b..45f0558cae 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun QQSPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "HVdXArEX5vgTZkQK", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json index 6b33217ea2..df47580b4d 100644 --- a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun SR.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "tqesgSzTbrfXG1mY", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json index d9c7f3799b..f6796345a4 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun Q5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "CUzDbhgZMATkwFSg", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json index a4ec969711..692b394d94 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun QQSPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "FV3PZ6zjZP5chJlp", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json index 478126620d..41627d8ab0 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun SR.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "EzioqGPSbnBNftNw", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json index 66b5bc2fe6..f6a220ad6c 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun Q5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "PjpsLsUYSt1jfY7G", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json index 92ef6cc2e4..578adb54ee 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun QQSPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "9mHQwwo6UoNaD07z", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json index 3ab6730d9c..db0a84e5f7 100644 --- a/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun SR.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ehSWBo2Q9G7QS3Wt", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.24", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json index 2c2f123e71..c729094bb6 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun Q5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "iEXqwmSaxdLWpN8K", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json index e1e50c074e..356c2830c9 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun QQSPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fJPwsjRdFJRka84X", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json index 1c1917adc2..387fe3edb3 100644 --- a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun SR.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "kOtY4iPbqQlkQPef", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/FLSun/process/fdm_process_common.json b/resources/profiles/FLSun/process/fdm_process_common.json index 8371968b2e..47666d8d16 100644 --- a/resources/profiles/FLSun/process/fdm_process_common.json +++ b/resources/profiles/FLSun/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -78,7 +77,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_surface_line_width": "0.4", diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 1f252e507b..5bccaf9dfb 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.04.00.06", + "version": "02.04.00.08", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ diff --git a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json b/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json index c1d48bf1ff..6d4221e732 100644 --- a/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/filament/FusRock PET @FF G4P 0.8 HF nozzle.json @@ -15,9 +15,6 @@ "during_print_exhaust_fan_speed": [ "40" ], - "filament_load_time": [ - "29" - ], "filament_max_volumetric_speed": [ "12" ], @@ -33,9 +30,6 @@ "filament_type": [ "PET" ], - "filament_unload_time": [ - "29" - ], "compatible_printers": [ "Flashforge Guider4 Pro 0.8 HF nozzle" ], diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json b/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json index 249060ab5c..f228bdd769 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock NexPA-CF25.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "FusRock NexPA-CF25", - "inherits": "Generic PETG @Flashforge", "renamed_from": "FusRock Generic NexPA-CF25", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "sVoga8454H2oKuKI", "filament_id": "OFjt8dDO", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PA-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json index d47b7f865c..3666353817 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PAHT-CF.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "FusRock PAHT-CF", - "inherits": "Generic PETG @Flashforge", "renamed_from": "FusRock Generic PAHT-CF", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "OGhhxVvR4O4VYuCK", "filament_id": "OFKW5hEW", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "PAHT-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json index 4dee20a476..5de8912224 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock PET-CF.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "FusRock PET-CF", - "inherits": "Generic PETG @Flashforge", "renamed_from": "FusRock Generic PET-CF", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "nGtsrswmS2Fj4Uev", "filament_id": "OFDu1qE7", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "PET-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json index 895d10aa12..e6f32aace1 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-Multi.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "FusRock S-Multi", - "inherits": "Generic PETG @Flashforge", "renamed_from": "FusRock Generic S-Multi", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "zAqGdmTsz4Z0qbaa", "filament_id": "OF0AquDh", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json index 792b12c949..ebe48dc6dd 100644 --- a/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json +++ b/resources/profiles/Flashforge/filament/FusRock/FusRock S-PAHT.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "FusRock S-PAHT", - "inherits": "Generic PETG @Flashforge", "renamed_from": "FusRock Generic S-PAHT", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "mBQzgKKsV8Qo3gAr", "filament_id": "OFCn83wF", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PAHT" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json index 8422875984..a429c5be48 100644 --- a/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic ABS @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ABS @Flashforge G3U", - "inherits": "Generic ABS @Flashforge", "renamed_from": "Flashforge Generic ABS @G3U;Flashforge Generic ABS G3U", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "dxCNYDhcaJqAfDpR", "filament_id": "OFY9muEs", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "ABS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json index 42f9b00a60..07aae7b634 100644 --- a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge AD4.json @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "0" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "40", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json index 20a3e61da2..cfb156dd52 100644 --- a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ASA @Flashforge G3U", - "inherits": "Generic ABS @Flashforge", "renamed_from": "Flashforge Generic ASA @G3U;Flashforge Generic ASA G3U", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "N1vm5hhMHdSNvUwk", "filament_id": "OFLPAxz3", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "ASA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json index b80ad322c3..cc73a2a479 100644 --- a/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic ASA @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ASA @Flashforge", - "inherits": "fdm_filament_asa", "renamed_from": "Flashforge Generic ASA", + "inherits": "fdm_filament_asa", "from": "system", "setting_id": "tzs0HcyEZow99A2J", "filament_id": "OFLPAxz3", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "0" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "2" diff --git a/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json index 3012161923..54badf52ae 100644 --- a/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic HIPS @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic HIPS @Flashforge", - "inherits": "Generic ABS @Flashforge", "renamed_from": "Flashforge Generic HIPS", + "inherits": "Generic ABS @Flashforge", "from": "system", "setting_id": "zMQa7Squ3p3jKYwB", "filament_id": "OFsFon5l", @@ -96,9 +96,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -171,9 +168,6 @@ "filament_type": [ "HIPS" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json b/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json index b6b4f26221..7fabff8e93 100644 --- a/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic HS PLA @Flashforge.json @@ -1,15 +1,12 @@ { "type": "filament", "name": "Generic HS PLA @Flashforge", - "inherits": "fdm_filament_pla", "renamed_from": "Flashforge Generic HS PLA", + "inherits": "fdm_filament_pla", "from": "system", "setting_id": "GTqLzBcGP2Rmmc9X", "filament_id": "OFvxghTE", "instantiation": "true", - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -90,9 +87,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -165,9 +159,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json index 119b9e3349..9c37ea85a7 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PETG @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG @Flashforge G3U", - "inherits": "Generic PETG @Flashforge", "renamed_from": "Flashforge Generic PETG @G3U;Flashforge Generic PETG G3U", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "umrO2bL7ihLROx0B", "filament_id": "OFYPdQJh", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PETG" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json index d298fa5b12..2464363ce9 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG-CF @Flashforge G3U", - "inherits": "Generic PETG @Flashforge", "renamed_from": "Flashforge Generic PETG-CF @G3U;Flashforge Generic PETG-CF G3U", + "inherits": "Generic PETG @Flashforge", "from": "system", "setting_id": "XXoNSerT8aqG5dlL", "filament_id": "OFoYSJKi", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PETG-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json index bcf3f0926c..b310bf8d5b 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge AD4.json @@ -9,9 +9,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json index ca45c4fe25..8908c41081 100644 --- a/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic PETG-CF10 @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG-CF10 @Flashforge", - "inherits": "fdm_filament_pet", "renamed_from": "Flashforge Generic PETG-CF10", + "inherits": "fdm_filament_pet", "from": "system", "setting_id": "0oCfWHsyqpBCbD62", "filament_id": "OFO5djrM", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json index b0c0ce9597..20f0ba7403 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.6 Nozzle.json @@ -3,7 +3,8 @@ "name": "Generic PLA @Flashforge G3U 0.6 Nozzle", "inherits": "Generic PLA @Flashforge", "from": "system", - "instantiation": "false", + "setting_id": "YSbpdZWmgTvjJmZZ", + "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.6 Nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json index 49aa73c7eb..6a9af67be1 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U 0.8 Nozzle.json @@ -3,7 +3,8 @@ "name": "Generic PLA @Flashforge G3U 0.8 Nozzle", "inherits": "Generic PLA @Flashforge", "from": "system", - "instantiation": "false", + "setting_id": "CsPPXQWXhwz5fUww", + "instantiation": "true", "compatible_printers": [ "Flashforge Guider 3 Ultra 0.8 Nozzle" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json index 48b66814ca..630c4c723b 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PLA @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Flashforge G3U", - "inherits": "Generic PLA @Flashforge", "renamed_from": "Flashforge Generic PLA @G3U;Flashforge Generic PLA G3U", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "8ZlELnZzCa3UsztB", "filament_id": "OFDSrzZ8", @@ -24,8 +24,6 @@ ], "compatible_printers": [ "Flashforge Guider 3 Ultra 0.4 Nozzle", - "Flashforge Guider 3 Ultra 0.6 Nozzle", - "Flashforge Guider 3 Ultra 0.8 Nozzle", "Flashforge Guider 2s 0.4 nozzle" ], "compatible_printers_condition": "", @@ -97,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -172,9 +167,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json index 85741e007d..eb4e1ec0ec 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA High Speed @Flashforge AD4.json @@ -6,9 +6,6 @@ "setting_id": "B4EWBUa9G36lZUd7", "filament_id": "OFmpMwxS", "instantiation": "true", - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -84,9 +81,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -159,9 +153,6 @@ "filament_type": [ "PLA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json index 7f79c0753e..595ca9e63d 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF @Flashforge G3U.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA-CF @Flashforge G3U", - "inherits": "Generic PLA @Flashforge", "renamed_from": "Flashforge Generic PLA-CF @G3U;Flashforge Generic PLA-CF G3U", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "J2zu45Q3zu7Tor3W", "filament_id": "OFWbdGsC", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PLA-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json index c03c616a0e..d1c860e830 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge AD4.json @@ -9,9 +9,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -86,9 +83,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -161,9 +155,6 @@ "filament_type": [ "PLA-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json index 8b2e1efb14..06307637e7 100644 --- a/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic PLA-CF10 @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA-CF10 @Flashforge", - "inherits": "fdm_filament_pla", "renamed_from": "Flashforge Generic PLA-CF10", + "inherits": "fdm_filament_pla", "from": "system", "setting_id": "cckB4CXjFwZKC0l0", "filament_id": "OFX2zcrM", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": [ "0" ], @@ -90,9 +87,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -165,9 +159,6 @@ "filament_type": [ "PLA-CF" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json b/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json index 6c76493158..92c2a5e54a 100644 --- a/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic PVA @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PVA @Flashforge", - "inherits": "Generic PLA @Flashforge", "renamed_from": "Flashforge Generic PVA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "yiCXuEb87vNMhytL", "filament_id": "OFDvXujf", @@ -97,9 +97,6 @@ "filament_is_support": [ "1" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -172,9 +169,6 @@ "filament_type": [ "PVA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "35" ], diff --git a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json index 610777d347..4fb3c96b08 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json +++ b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge AD4.json @@ -9,9 +9,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json index 45a6b2e6f9..5ebb19eb68 100644 --- a/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json +++ b/resources/profiles/Flashforge/filament/Generic TPU @Flashforge.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic TPU @Flashforge", - "inherits": "fdm_filament_tpu", "renamed_from": "Flashforge Generic TPU", + "inherits": "fdm_filament_tpu", "from": "system", "setting_id": "luh9xN4STlD0sTyt", "filament_id": "OFgbpcy9", @@ -10,9 +10,6 @@ "additional_cooling_fan_speed": [ "100" ], - "bed_temperature_difference": [ - "10" - ], "chamber_temperature": "0", "close_fan_the_first_x_layers": [ "1" diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json index 533af6688b..77a59b4bbf 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker CoPA.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Polymaker CoPA", - "inherits": "Generic PLA @Flashforge", "renamed_from": "Polymaker Generic CoPA", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "5Dt1APJ8qd5pzmzK", "filament_id": "OFQyyO0l", @@ -95,9 +95,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "30" ], diff --git a/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json b/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json index c7eb2fb58c..91e636a3d4 100644 --- a/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json +++ b/resources/profiles/Flashforge/filament/Polymaker/Polymaker S1.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Polymaker S1", - "inherits": "Generic PLA @Flashforge", "renamed_from": "Polymaker Generic S1", + "inherits": "Generic PLA @Flashforge", "from": "system", "setting_id": "auChFegT1xViXxGe", "filament_id": "OFaDsTE0", @@ -95,9 +95,6 @@ "filament_is_support": [ "1" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -170,9 +167,6 @@ "filament_type": [ "PA" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "30" ], diff --git a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json index 50a7d88ff5..6d03066d38 100644 --- a/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/FlashForge AD5X 0.25 nozzle.json @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json index 9dcd0f86dd..682594f99a 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.4 nozzle.json @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json index a88cbb9e80..ff7251562e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.6 nozzle.json @@ -199,7 +199,6 @@ "35" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json index 47ac21c2ec..806e5cda1f 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X 0.8 nozzle.json @@ -199,7 +199,6 @@ "35" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge AD5X.json b/resources/profiles/Flashforge/machine/Flashforge AD5X.json index 42cfac7967..cd36362249 100644 --- a/resources/profiles/Flashforge/machine/Flashforge AD5X.json +++ b/resources/profiles/Flashforge/machine/Flashforge AD5X.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_ad5x_buildplate_texture.svg", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", "url": "", - "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge;Generic PLA @FF AD5M 0.25 Nozzle" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 4 Series.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 4 Series.json index 8c5f7ec4bf..d9864c599d 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 4 Series.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 4 Series.json @@ -2,6 +2,7 @@ "type": "machine_model", "name": "Flashforge Adventurer 4 Series", "model_id": "Flashforge Adventurer 4 Series", + "default_materials": "Generic PLA @Flashforge AD4;Generic PLA High Speed @Flashforge AD4", "nozzle_diameter": "0.3;0.4;0.6;0.4HS", "machine_tech": "FFF", "family": "Flashforge", diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json index 476d036a95..45023ac132 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M Pro.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_adventurer5m_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge;Generic PLA @FF AD5M 0.25 Nozzle" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json index b69dc12126..9d4de80c6e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer 5M.json @@ -9,5 +9,5 @@ "bed_texture": "flashforge_adventurer5m_buildplate_texture.svg", "default_bed_type": "Textured PEI Plate", "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", - "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge" + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge;Generic PLA @FF AD5M 0.25 Nozzle" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Artemis.json b/resources/profiles/Flashforge/machine/Flashforge Artemis.json index 22e9963a24..069a71de70 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Artemis.json +++ b/resources/profiles/Flashforge/machine/Flashforge Artemis.json @@ -2,6 +2,7 @@ "type": "machine_model", "name": "Flashforge Artemis", "model_id": "Flashforge-Artemis", + "default_materials": "Generic PETG @Flashforge Artemis", "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "Flashforge", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json index 54be573cf7..c3cb7aa570 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.25 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle", "deretraction_speed": [ @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json index 5ffbd6a7fc..474e697fa1 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.4 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json index ce7727209f..a10c65d83e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.6 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json index e747961d1e..0e3a29a2ad 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 0.8 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json index 3eea1c58cf..911c09f29c 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.25 nozzle.json @@ -24,7 +24,7 @@ "cooling_tube_retraction": "0", "default_bed_type": "", "default_filament_profile": [ - "Flashforge Generic PLA" + "Generic PLA @Flashforge" ], "default_print_profile": "0.12mm Standard @FF C5 0.25 nozzle", "deretraction_speed": [ @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json index 620fb3dec3..ec69837a3a 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.4 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json index 43c07989c6..d3d189d4e9 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.6 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json index 71d101c355..e596675ad0 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro 0.8 nozzle.json @@ -264,7 +264,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "0", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json index 4ef02628d1..c33735a4bb 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5 Pro.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_c5_buildplate_model.stl", "bed_texture": "flashforge_c5_buildplate_texture.png", "hotend_model": "", - "default_materials": "" + "default_materials": "Generic PLA @System;Generic PLA @FF C5P" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Creator 5.json b/resources/profiles/Flashforge/machine/Flashforge Creator 5.json index 7ef9c172c0..358cd4aaee 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Creator 5.json +++ b/resources/profiles/Flashforge/machine/Flashforge Creator 5.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_c5_buildplate_model.stl", "bed_texture": "flashforge_c5_buildplate_texture.png", "hotend_model": "", - "default_materials": "" + "default_materials": "Generic PLA @System;Generic PLA @FF C5" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json index dcde8504e9..aeb84117fd 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra 0.4 Nozzle.json @@ -186,7 +186,6 @@ "35" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json index a830f2db98..3b3aa553e7 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider 3 Ultra.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g3u_buildplate_model.stl", "bed_texture": "flashforge_g3u_buildplate_texture.svg", "hotend_model": "", - "default_materials": "FusRock NexPA-CF25;FusRock PAHT-CF;FusRock PAHT-CF @G3U 0.6 Nozzle;FusRock PET-CF;FusRock PET-CF @G3U 0.6 Nozzle;FusRock S-Multi;FusRock S-PAHT;Generic ABS @Flashforge G3U;Generic ABS @Flashforge G3U 0.6 Nozzle;Generic ASA @Flashforge G3U;Generic ASA @Flashforge G3U 0.6 Nozzle;Generic HIPS @Flashforge;Generic HIPS @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U;Generic PETG @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U 0.8 Nozzle;Generic PETG-CF @Flashforge G3U;Generic PETG-CF @Flashforge G3U 0.6 Nozzle;Generic PETG-CF @Flashforge G3U 0.8 Nozzle;Generic PLA @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA-CF @Flashforge G3U 0.6 Nozzle;Generic PLA-CF @Flashforge G3U 0.8 Nozzle;Generic PVA @Flashforge;Polymaker CoPA;Polymaker S1" + "default_materials": "FusRock NexPA-CF25;FusRock PAHT-CF;FusRock PAHT-CF @G3U 0.6 Nozzle;FusRock PET-CF;FusRock PET-CF @G3U 0.6 Nozzle;FusRock S-Multi;FusRock S-PAHT;Generic ABS @Flashforge G3U;Generic ABS @Flashforge G3U 0.6 Nozzle;Generic ASA @Flashforge G3U;Generic ASA @Flashforge G3U 0.6 Nozzle;Generic HIPS @Flashforge;Generic HIPS @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U;Generic PETG @Flashforge G3U 0.6 Nozzle;Generic PETG @Flashforge G3U 0.8 Nozzle;Generic PETG-CF @Flashforge G3U;Generic PETG-CF @Flashforge G3U 0.6 Nozzle;Generic PETG-CF @Flashforge G3U 0.8 Nozzle;Generic PLA @Flashforge G3U;Generic PLA @Flashforge G3U 0.6 Nozzle;Generic PLA @Flashforge G3U 0.8 Nozzle;Generic PLA-CF @Flashforge G3U;Generic PLA-CF @Flashforge G3U 0.6 Nozzle;Generic PLA-CF @Flashforge G3U 0.8 Nozzle;Generic PVA @Flashforge;Polymaker CoPA;Polymaker S1" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json index b7a7d5f6ba..85efedf8f9 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.25 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge" + "Flashforge PLA Basic @FF G4 0.25 nozzle" ], "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "deretraction_speed": [ @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json index f13d0aa125..b8e60f92d3 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U" + "Flashforge PLA Basic @FF G4 HF" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json index 22148f62db..f60d1df816 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge" + "Flashforge PLA Basic @FF G4" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json index 4eb27093aa..38d0321592 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4 0.6 HF nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json index 56a63623fd..ceece27959 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.6 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4 0.6 nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json index 64853e95fa..35c85dc400 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 0.8 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4 0.8 HF nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json index 4fbf0d684e..fdddbe17ed 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.25 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge" + "Flashforge PLA Basic @FF G4P 0.25 nozzle" ], "default_print_profile": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "deretraction_speed": [ @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json index 9c0b57c05c..7b3566197e 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U" + "Flashforge PLA Basic @FF G4P HF" ], "default_print_profile": "0.20mm Standard @Flashforge G3U 0.4 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json index 58daabb444..3ea39fdb11 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.4 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge" + "Flashforge PLA Basic @FF G4P" ], "default_print_profile": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", "deretraction_speed": [ @@ -199,7 +199,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json index 49756682ba..0a7d2dd29b 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4P 0.6 HF nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json index 8c1a60781b..6b9031f8fe 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.6 nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4P 0.6 nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json index 1140b773e3..37efacacde 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro 0.8 HF nozzle.json @@ -23,7 +23,7 @@ "cooling_tube_length": "0", "cooling_tube_retraction": "0", "default_filament_profile": [ - "Generic PLA @Flashforge G3U 0.6 Nozzle" + "Flashforge PLA Basic @FF G4P 0.8 HF nozzle" ], "default_print_profile": "0.30mm Standard @Flashforge G3U 0.6 Nozzle", "deretraction_speed": [ @@ -200,7 +200,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json index 4bcdc78d4a..cac18081f6 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4 Pro.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g4pro_buildplate_model.stl", "bed_texture": "flashforge_g4pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1" + "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1;Flashforge PLA Basic @FF G4P 0.25 nozzle;Flashforge PLA Basic @FF G4P HF;Flashforge PLA Basic @FF G4P;Flashforge PLA Basic @FF G4P 0.6 HF nozzle;Flashforge PLA Basic @FF G4P 0.6 nozzle;Flashforge PLA Basic @FF G4P 0.8 HF nozzle" } diff --git a/resources/profiles/Flashforge/machine/Flashforge Guider4.json b/resources/profiles/Flashforge/machine/Flashforge Guider4.json index 0cd89727d1..6633eb093f 100644 --- a/resources/profiles/Flashforge/machine/Flashforge Guider4.json +++ b/resources/profiles/Flashforge/machine/Flashforge Guider4.json @@ -8,5 +8,5 @@ "bed_model": "flashforge_g4pro_buildplate_model.stl", "bed_texture": "flashforge_g4pro_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1" + "default_materials": "Generic PVA @Flashforge;Generic HIPS @Flashforge;Generic PETG-CF @Flashforge G3U;Generic PETG @Flashforge G3U;Generic PLA-CF @Flashforge G3U;Generic PLA @Flashforge G3U;Generic ASA @Flashforge G3U;Generic ABS @Flashforge G3U;FusRock PET-CF;FusRock PAHT-CF;FusRock NexPA-CF25;FusRock S-Multi;FusRock S-PAHT;Polymaker CoPA;Polymaker S1;Flashforge PLA Basic @FF G4 0.25 nozzle;Flashforge PLA Basic @FF G4 HF;Flashforge PLA Basic @FF G4;Flashforge PLA Basic @FF G4 0.6 HF nozzle;Flashforge PLA Basic @FF G4 0.6 nozzle;Flashforge PLA Basic @FF G4 0.8 HF nozzle" } diff --git a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json index 7e2e700885..1c71c396eb 100644 --- a/resources/profiles/Flashforge/machine/fdm_flashforge_common.json +++ b/resources/profiles/Flashforge/machine/fdm_flashforge_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", diff --git a/resources/profiles/Flashforge/machine/fdm_klipper_common.json b/resources/profiles/Flashforge/machine/fdm_klipper_common.json index 3126f70c76..d11eb22558 100644 --- a/resources/profiles/Flashforge/machine/fdm_klipper_common.json +++ b/resources/profiles/Flashforge/machine/fdm_klipper_common.json @@ -116,8 +116,6 @@ "deretraction_speed": [ "80" ], - "z_lift_type": "NormalLift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25", diff --git a/resources/profiles/Flashforge/machine/fdm_machine_common.json b/resources/profiles/Flashforge/machine/fdm_machine_common.json index d4bef57491..6361133d45 100644 --- a/resources/profiles/Flashforge/machine/fdm_machine_common.json +++ b/resources/profiles/Flashforge/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "0.20mm Standard @Flashforge AD5M", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json index 1b85975878..38862d967c 100644 --- a/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.12mm Detail @Flashforge Guider 2s 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1VeWY2d3H1hYEkzL", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "80%", "brim_width": "5", @@ -33,7 +32,6 @@ "inner_wall_speed": "200", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "200", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json index 577586baaf..1dde9465a0 100644 --- a/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.16mm Optimal @Flashforge Guider 2s 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "VPKIYFY99e6eS9Nd", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "25", "internal_bridge_speed": "150%", @@ -34,7 +33,6 @@ "inner_wall_speed": "60", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "200", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Flashforge/process/0.20mm High-Speed @Flashforge AD4 HS Nozzle.json b/resources/profiles/Flashforge/process/0.20mm High-Speed @Flashforge AD4 HS Nozzle.json index ad89354ae1..176e4c0031 100644 --- a/resources/profiles/Flashforge/process/0.20mm High-Speed @Flashforge AD4 HS Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm High-Speed @Flashforge AD4 HS Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "60", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json index 619014c8a4..54cb9bd666 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD3 0.4 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "48", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD4 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD4 0.4 Nozzle.json index 2e81b9758f..a2867c886b 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD4 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge AD4 0.4 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Artemis 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Artemis 0.4 Nozzle.json index 1b9fd03771..cb003b72c7 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Artemis 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Artemis 0.4 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "80%", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json index aeb81d2dd9..fd4dda1aea 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge G3U 0.4 Nozzle.json @@ -116,7 +116,6 @@ "overhang_4_4_speed": "10", "overhang_reverse": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "5", diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json index 97d51bec7f..c3d5382f70 100644 --- a/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.20mm Standard @Flashforge Guider 2s 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "uknnclg0sGPLeGcN", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50%", "internal_bridge_speed": "70%", @@ -34,7 +33,6 @@ "inner_wall_speed": "200", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "200", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json index a2b3f3db1d..12f44410c9 100644 --- a/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.25mm Standard @FF G4P 0.6 nozzle.json @@ -40,7 +40,6 @@ "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", "prime_tower_width": "45", "prime_volume": "45", "print_settings_id": "0.25mm Standard @FF G4P 0.6 nozzle", diff --git a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json index 3eda3c3d34..b7cbce9215 100644 --- a/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Draft @Flashforge Guider 2s 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "twWwqkfSRYeAkuzT", "instantiation": "true", - "adaptive_layer_height": "0", "bridge_flow": "1", "bridge_speed": "50%", "internal_bridge_speed": "70%", @@ -34,7 +33,6 @@ "inner_wall_speed": "200", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "200", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "200", "ironing_flow": "10%", "ironing_spacing": "0.15", diff --git a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json index e17b0e8d9f..6520c4fb48 100644 --- a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD3 0.4 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "64", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD4 0.4 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD4 0.4 Nozzle.json index ea65c7de1b..52155fcc22 100644 --- a/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD4 0.4 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Fast @Flashforge AD4 0.4 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json index 238d3e3330..03dc328fd6 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF G4P 0.6 nozzle.json @@ -35,7 +35,6 @@ "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", "prime_tower_width": "45", "prime_volume": "45", "print_settings_id": "0.30mm Standard @FF G4P 0.6 nozzle", diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json index 65f1ad351a..5485ef51e7 100644 --- a/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json +++ b/resources/profiles/Flashforge/process/0.30mm Standard @Flashforge AD3 0.6 Nozzle.json @@ -45,7 +45,6 @@ "min_bead_width": "100", "elefant_foot_compensation": "0.15", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "accel_to_decel_enable": "0", "filter_out_gap_fill": "0.5", diff --git a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json index 7c7e132ac3..8f7bd267cb 100644 --- a/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.36mm Standard @FF G4P 0.6 nozzle.json @@ -36,7 +36,6 @@ "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", "prime_tower_width": "45", "prime_volume": "45", "print_settings_id": "0.36mm Standard @FF G4P 0.6 nozzle", diff --git a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json index 66a91699de..054f652ea8 100644 --- a/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json +++ b/resources/profiles/Flashforge/process/0.42mm Standard @FF G4P 0.6 nozzle.json @@ -36,7 +36,6 @@ "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "overhang_4_4_speed": "12", - "overhang_speed_classic": "1", "prime_tower_width": "45", "prime_volume": "45", "print_settings_id": "0.42mm Standard @FF G4P 0.6 nozzle", diff --git a/resources/profiles/Flashforge/process/fdm_process_common.json b/resources/profiles/Flashforge/process/fdm_process_common.json index 362b69213e..fc96799afe 100644 --- a/resources/profiles/Flashforge/process/fdm_process_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json index 8d5afce023..1288ef847e 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.20.json @@ -11,7 +11,6 @@ "gap_infill_speed": "200", "sparse_infill_speed": "270", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "internal_solid_infill_acceleration": "7000", "accel_to_decel_enable": "0", diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json index c55ea16d6b..9ef898d154 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.30.json @@ -19,7 +19,6 @@ "top_surface_speed": "120", "gap_infill_speed": "150", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "internal_solid_infill_acceleration": "7000", "accel_to_decel_enable": "0", diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json index 570bc9b175..12571d7331 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_0.40.json @@ -19,7 +19,6 @@ "top_surface_speed": "120", "gap_infill_speed": "150", "small_perimeter_speed": "50%", - "overhang_speed_classic": "0", "internal_bridge_speed": "50", "internal_solid_infill_acceleration": "7000", "accel_to_decel_enable": "0", diff --git a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json index 09beed2646..9149caaef1 100644 --- a/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json +++ b/resources/profiles/Flashforge/process/fdm_process_flashforge_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "travel_acceleration": "10000", "inner_wall_acceleration": "5000", diff --git a/resources/profiles/FlyingBear.json b/resources/profiles/FlyingBear.json index 5be5a8d4a3..8c09e115e2 100644 --- a/resources/profiles/FlyingBear.json +++ b/resources/profiles/FlyingBear.json @@ -1,6 +1,6 @@ { "name": "FlyingBear", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "1", "description": "FlyingBear configurations", "machine_model_list": [ diff --git a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7 0.4 nozzle.json index 4da21780a1..fd14f77ebf 100644 --- a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7 0.4 nozzle.json @@ -180,7 +180,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json index 795743dc1f..67d3d6181a 100644 --- a/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json +++ b/resources/profiles/FlyingBear/machine/Ghost7/FlyingBear Ghost7.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear Ghost7-bed.stl", "bed_texture": "FlyingBear Ghost7-texture.png", "hotend_model": "", - "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear;FlyingBear PLA Basic @Ghost7" } diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json index 4e176dca31..442050312c 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json @@ -177,7 +177,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json index 53ca3accb9..0e0627029b 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1.json @@ -8,5 +8,5 @@ "bed_model": "FlyingBear S1-bed.stl", "bed_texture": "FlyingBear S1-texture.png", "hotend_model": "", - "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear" + "default_materials": "Generic ABS @FlyingBear;Generic PA-CF @FlyingBear;Generic PC @FlyingBear;Generic PETG @FlyingBear;Generic PLA @FlyingBear;Generic TPU @FlyingBear;FlyingBear PLA @S1" } diff --git a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json index d9170b7fec..f70809115f 100644 --- a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json @@ -176,7 +176,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/FlyingBear/machine/fdm_machine_common.json b/resources/profiles/FlyingBear/machine/fdm_machine_common.json index 9b3574e7de..c6309bb273 100644 --- a/resources/profiles/FlyingBear/machine/fdm_machine_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_machine_common.json @@ -172,7 +172,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/FlyingBear/machine/fdm_marlin_common.json b/resources/profiles/FlyingBear/machine/fdm_marlin_common.json index 41ac0f91ca..d3c1abf330 100644 --- a/resources/profiles/FlyingBear/machine/fdm_marlin_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_marlin_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json index b8200ed6aa..4f4f7c8ae5 100644 --- a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/FlyingBear/process/Ghost7/0.16mm Optimal @FlyingBear Ghost7.json b/resources/profiles/FlyingBear/process/Ghost7/0.16mm Optimal @FlyingBear Ghost7.json index 36f8e3705c..70b79e5397 100644 --- a/resources/profiles/FlyingBear/process/Ghost7/0.16mm Optimal @FlyingBear Ghost7.json +++ b/resources/profiles/FlyingBear/process/Ghost7/0.16mm Optimal @FlyingBear Ghost7.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/FlyingBear/process/Ghost7/fdm_process_common_Ghost7.json b/resources/profiles/FlyingBear/process/Ghost7/fdm_process_common_Ghost7.json index 9b34de8437..5c020a7a1e 100644 --- a/resources/profiles/FlyingBear/process/Ghost7/fdm_process_common_Ghost7.json +++ b/resources/profiles/FlyingBear/process/Ghost7/fdm_process_common_Ghost7.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "150", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json index 27c9643f05..965f71c7f4 100644 --- a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json index d922fcf3dc..3b7cdda9e9 100644 --- a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json +++ b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "200", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/FlyingBear/process/fdm_process_common.json b/resources/profiles/FlyingBear/process/fdm_process_common.json index 7e7bc9ddb1..bfd2a604e6 100644 --- a/resources/profiles/FlyingBear/process/fdm_process_common.json +++ b/resources/profiles/FlyingBear/process/fdm_process_common.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "200", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/FlyingBear/process/fdm_process_marlin_common.json b/resources/profiles/FlyingBear/process/fdm_process_marlin_common.json index 6dd6b765be..72d4365446 100644 --- a/resources/profiles/FlyingBear/process/fdm_process_marlin_common.json +++ b/resources/profiles/FlyingBear/process/fdm_process_marlin_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -83,7 +82,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "45", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Folgertech.json b/resources/profiles/Folgertech.json index a20dc8992e..24f68067e7 100644 --- a/resources/profiles/Folgertech.json +++ b/resources/profiles/Folgertech.json @@ -1,6 +1,6 @@ { "name": "Folgertech", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Folgertech configurations", "machine_model_list": [ diff --git a/resources/profiles/Folgertech/machine/fdm_folgertech_common.json b/resources/profiles/Folgertech/machine/fdm_folgertech_common.json index 035e434afe..c534b9cacb 100644 --- a/resources/profiles/Folgertech/machine/fdm_folgertech_common.json +++ b/resources/profiles/Folgertech/machine/fdm_folgertech_common.json @@ -115,7 +115,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/Folgertech/machine/fdm_machine_common.json b/resources/profiles/Folgertech/machine/fdm_machine_common.json index 04ab524f9c..f7f0f31d7e 100644 --- a/resources/profiles/Folgertech/machine/fdm_machine_common.json +++ b/resources/profiles/Folgertech/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", diff --git a/resources/profiles/Folgertech/process/fdm_process_common.json b/resources/profiles/Folgertech/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Folgertech/process/fdm_process_common.json +++ b/resources/profiles/Folgertech/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Folgertech/process/fdm_process_folgertech_common.json b/resources/profiles/Folgertech/process/fdm_process_folgertech_common.json index d04362b5af..caecb87a65 100644 --- a/resources/profiles/Folgertech/process/fdm_process_folgertech_common.json +++ b/resources/profiles/Folgertech/process/fdm_process_folgertech_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Geeetech.json b/resources/profiles/Geeetech.json index cdd862e161..26651c6109 100644 --- a/resources/profiles/Geeetech.json +++ b/resources/profiles/Geeetech.json @@ -1,6 +1,6 @@ { "name": "Geeetech", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Geeetech configurations", "machine_model_list": [ diff --git a/resources/profiles/Geeetech/machine/fdm_geeetech_common.json b/resources/profiles/Geeetech/machine/fdm_geeetech_common.json index 341fe0a126..8113b62d4c 100644 --- a/resources/profiles/Geeetech/machine/fdm_geeetech_common.json +++ b/resources/profiles/Geeetech/machine/fdm_geeetech_common.json @@ -117,7 +117,6 @@ "deretraction_speed": [ "20" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/Geeetech/machine/fdm_machine_common.json b/resources/profiles/Geeetech/machine/fdm_machine_common.json index 97e8b60691..e08af83a05 100644 --- a/resources/profiles/Geeetech/machine/fdm_machine_common.json +++ b/resources/profiles/Geeetech/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -111,7 +110,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "before_layer_change_gcode": "G92 E0", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", diff --git a/resources/profiles/Geeetech/process/fdm_process_common.json b/resources/profiles/Geeetech/process/fdm_process_common.json index ef52351d98..b7313353c8 100644 --- a/resources/profiles/Geeetech/process/fdm_process_common.json +++ b/resources/profiles/Geeetech/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Ginger Additive.json b/resources/profiles/Ginger Additive.json index 249c3e9906..d9a38ccfba 100644 --- a/resources/profiles/Ginger Additive.json +++ b/resources/profiles/Ginger Additive.json @@ -1,6 +1,6 @@ { "name": "Ginger Additive", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "1", "description": "Ginger configuration", "machine_model_list": [ diff --git a/resources/profiles/Ginger Additive/filament/fdm_filament_common.json b/resources/profiles/Ginger Additive/filament/fdm_filament_common.json index 71e447d01e..d6603a932e 100644 --- a/resources/profiles/Ginger Additive/filament/fdm_filament_common.json +++ b/resources/profiles/Ginger Additive/filament/fdm_filament_common.json @@ -93,9 +93,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -165,9 +162,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/Ginger Additive/machine/fdm_machine_common.json b/resources/profiles/Ginger Additive/machine/fdm_machine_common.json index 751c0e71f4..60cbb522c5 100644 --- a/resources/profiles/Ginger Additive/machine/fdm_machine_common.json +++ b/resources/profiles/Ginger Additive/machine/fdm_machine_common.json @@ -191,7 +191,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/Ginger Additive/process/fdm_process_common.json b/resources/profiles/Ginger Additive/process/fdm_process_common.json index cd590b710e..3a582c6bc3 100644 --- a/resources/profiles/Ginger Additive/process/fdm_process_common.json +++ b/resources/profiles/Ginger Additive/process/fdm_process_common.json @@ -122,7 +122,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index cdfb2ad80b..78c54e0b4d 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -1,6 +1,6 @@ { "name": "InfiMech", - "version": "02.04.00.04", + "version": "02.04.00.06", "force_update": "1", "description": "InfiMech configurations", "machine_model_list": [ diff --git a/resources/profiles/InfiMech/machine/EX+APS/InfiMech EX+APS 0.4 nozzle.json b/resources/profiles/InfiMech/machine/EX+APS/InfiMech EX+APS 0.4 nozzle.json index 149177562f..a77186c2fd 100644 --- a/resources/profiles/InfiMech/machine/EX+APS/InfiMech EX+APS 0.4 nozzle.json +++ b/resources/profiles/InfiMech/machine/EX+APS/InfiMech EX+APS 0.4 nozzle.json @@ -180,7 +180,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/InfiMech/machine/EX/InfiMech EX 0.4 nozzle.json b/resources/profiles/InfiMech/machine/EX/InfiMech EX 0.4 nozzle.json index 2bf51ab627..a018e3f8a3 100644 --- a/resources/profiles/InfiMech/machine/EX/InfiMech EX 0.4 nozzle.json +++ b/resources/profiles/InfiMech/machine/EX/InfiMech EX 0.4 nozzle.json @@ -180,7 +180,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json index 8b8fd4e586..87fd816638 100644 --- a/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json +++ b/resources/profiles/InfiMech/machine/HSN/InfiMech TX Hardened Steel Nozzle.json @@ -8,5 +8,5 @@ "bed_model": "InfiMech TX-bed.stl", "bed_texture": "InfiMech TX-texture.svg", "hotend_model": "", - "default_materials": "Generic ABS @InfiMech;Generic PA-CF @InfiMech;Generic PC @InfiMech;Generic PETG @InfiMech;Generic PLA @InfiMech;Generic TPU @InfiMech" + "default_materials": "Generic ABS @InfiMech;Generic PA-CF @InfiMech;Generic PC @InfiMech;Generic PETG @InfiMech;Generic PLA @InfiMech;Generic TPU @InfiMech;InfiMech PLA @HSN" } diff --git a/resources/profiles/InfiMech/machine/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/fdm_klipper_common.json index a95fea09c0..457c3b1d9d 100644 --- a/resources/profiles/InfiMech/machine/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/fdm_klipper_common.json @@ -177,7 +177,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/InfiMech/machine/fdm_machine_common.json b/resources/profiles/InfiMech/machine/fdm_machine_common.json index 35501555bb..c6847d7db3 100644 --- a/resources/profiles/InfiMech/machine/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/fdm_machine_common.json @@ -173,7 +173,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "template_custom_gcode": "", "thumbnails": [ diff --git a/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json b/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json index c3fb83348f..1886e33d56 100644 --- a/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json +++ b/resources/profiles/InfiMech/process/0.16mm Optimal @InfiMech TX.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/InfiMech/process/EX+APS/0.16mm Optimal @InfiMech EX+APS.json b/resources/profiles/InfiMech/process/EX+APS/0.16mm Optimal @InfiMech EX+APS.json index 783db122a4..9ca14195f7 100644 --- a/resources/profiles/InfiMech/process/EX+APS/0.16mm Optimal @InfiMech EX+APS.json +++ b/resources/profiles/InfiMech/process/EX+APS/0.16mm Optimal @InfiMech EX+APS.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/InfiMech/process/EX+APS/fdm_process_common_EX+APS.json b/resources/profiles/InfiMech/process/EX+APS/fdm_process_common_EX+APS.json index 6a755b74f1..1529d65ac8 100644 --- a/resources/profiles/InfiMech/process/EX+APS/fdm_process_common_EX+APS.json +++ b/resources/profiles/InfiMech/process/EX+APS/fdm_process_common_EX+APS.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "150", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/InfiMech/process/EX/0.16mm Optimal @InfiMech EX.json b/resources/profiles/InfiMech/process/EX/0.16mm Optimal @InfiMech EX.json index d95e84cedc..99dfa56787 100644 --- a/resources/profiles/InfiMech/process/EX/0.16mm Optimal @InfiMech EX.json +++ b/resources/profiles/InfiMech/process/EX/0.16mm Optimal @InfiMech EX.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/InfiMech/process/EX/fdm_process_common_EX.json b/resources/profiles/InfiMech/process/EX/fdm_process_common_EX.json index e5846e2cc4..888a67861a 100644 --- a/resources/profiles/InfiMech/process/EX/fdm_process_common_EX.json +++ b/resources/profiles/InfiMech/process/EX/fdm_process_common_EX.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "150", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json b/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json index 546464ce49..57f844d7f5 100644 --- a/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json +++ b/resources/profiles/InfiMech/process/HSN/0.16mm Optimal @InfiMech TX HSN.json @@ -24,7 +24,6 @@ "layer_height": "0.16", "line_width": "0.42", "outer_wall_line_width": "0.42", - "overhang_speed_classic": "0", "precise_outer_wall": "0", "print_flow_ratio": "0.95", "seam_gap": "10%", diff --git a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json index dc9e9ace24..8b53078f6d 100644 --- a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json +++ b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "200", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/InfiMech/process/fdm_process_common.json b/resources/profiles/InfiMech/process/fdm_process_common.json index 7e7bc9ddb1..bfd2a604e6 100644 --- a/resources/profiles/InfiMech/process/fdm_process_common.json +++ b/resources/profiles/InfiMech/process/fdm_process_common.json @@ -64,7 +64,6 @@ "inner_wall_line_width": "0.45", "interface_shells": "0", "internal_bridge_speed": "50%", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_pattern": "monotonic", @@ -92,7 +91,6 @@ "outer_wall_line_width": "0.42", "outer_wall_speed": "200", "overhang_4_4_speed": "10", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/Kingroon.json b/resources/profiles/Kingroon.json index 0d0f98e733..4c9a128ead 100644 --- a/resources/profiles/Kingroon.json +++ b/resources/profiles/Kingroon.json @@ -1,7 +1,7 @@ { "name": "Kingroon", "url": "https://kingroon.com/", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "1", "description": "Kingroon configuration files", "machine_model_list": [ diff --git a/resources/profiles/Kingroon/machine/fdm_machine_common.json b/resources/profiles/Kingroon/machine/fdm_machine_common.json index ab1a5d4253..6e7afe6f63 100644 --- a/resources/profiles/Kingroon/machine/fdm_machine_common.json +++ b/resources/profiles/Kingroon/machine/fdm_machine_common.json @@ -156,7 +156,6 @@ "deretraction_speed": [ "30" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "M600", "wipe": [ diff --git a/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json index f91fc639a0..a29141daf1 100644 --- a/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json +++ b/resources/profiles/Kingroon/process/0.20mm Standard @Kingroon KP3S V1.json @@ -24,7 +24,6 @@ "overhang_reverse": "1", "overhang_reverse_internal_only": "1", "overhang_reverse_threshold": "0%", - "overhang_speed_classic": "1", "seam_gap": "0.1", "seam_position": "back", "slow_down_layers": "2", diff --git a/resources/profiles/Kingroon/process/fdm_process_common.json b/resources/profiles/Kingroon/process/fdm_process_common.json index ed478c1aaa..48f60ee2ab 100644 --- a/resources/profiles/Kingroon/process/fdm_process_common.json +++ b/resources/profiles/Kingroon/process/fdm_process_common.json @@ -10,7 +10,6 @@ "bottom_solid_infill_flow_ratio": "1", "bottom_surface_pattern": "monotonic", "bridge_acceleration": "50%", - "adaptive_layer_height": "0", "bridge_flow": "0.9", "brim_object_gap": "0.1", "brim_type": "auto_brim", @@ -44,7 +43,6 @@ "fuzzy_skin_point_distance": "0.8", "fuzzy_skin_thickness": "0.3", "gap_infill_speed": "100", - "tree_support_with_infill": "0", "overhang_1_4_speed": "50", "overhang_2_4_speed": "40", "overhang_3_4_speed": "20", @@ -70,7 +68,6 @@ "inner_wall_line_width": "0.45", "inner_wall_speed": "100", "interface_shells": "0", - "internal_bridge_support_thickness": "0", "internal_solid_infill_acceleration": "100%", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "100", @@ -90,7 +87,6 @@ "outer_wall_jerk": "9", "outer_wall_line_width": "0.42", "outer_wall_speed": "80", - "overhang_speed_classic": "0", "post_process": [], "precise_outer_wall": "0", "prime_tower_brim_width": "3", diff --git a/resources/profiles/LH.json b/resources/profiles/LH.json index 99a7049fa5..7784b42bed 100644 --- a/resources/profiles/LH.json +++ b/resources/profiles/LH.json @@ -1,7 +1,7 @@ { "name": "LH", "url": "https://github.com/lhndo/LH-Stinger", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "LH 3D Printer Configuration", "machine_model_list": [ diff --git a/resources/profiles/LH/machine/fdm_lh_common.json b/resources/profiles/LH/machine/fdm_lh_common.json index 277e0762eb..02a4412838 100644 --- a/resources/profiles/LH/machine/fdm_lh_common.json +++ b/resources/profiles/LH/machine/fdm_lh_common.json @@ -128,7 +128,6 @@ "z_hop_types": [ "Auto Lift" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "manual_filament_change": "1", @@ -136,7 +135,7 @@ "1" ], "default_filament_profile": [ - "LH Generic PLA" + "LHS PLA" ], "enable_filament_ramming": "0", "default_print_profile": "0.20mm Daily @LH Stinger", @@ -154,4 +153,4 @@ ], "bed_temperature_formula": "by_first_filament", "auxiliary_fan": "1" -} \ No newline at end of file +} diff --git a/resources/profiles/LH/machine/fdm_machine_common.json b/resources/profiles/LH/machine/fdm_machine_common.json index a46315dc8c..bf8f2249cf 100644 --- a/resources/profiles/LH/machine/fdm_machine_common.json +++ b/resources/profiles/LH/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -116,4 +115,4 @@ "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_pause_gcode": "M601" -} \ No newline at end of file +} diff --git a/resources/profiles/LH/process/fdm_process_common.json b/resources/profiles/LH/process/fdm_process_common.json index df8283904a..f09e319bd6 100644 --- a/resources/profiles/LH/process/fdm_process_common.json +++ b/resources/profiles/LH/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -83,7 +82,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", @@ -105,4 +103,4 @@ "top_surface_speed": "50", "gap_infill_speed": "30", "travel_speed": "200" -} \ No newline at end of file +} diff --git a/resources/profiles/LONGER.json b/resources/profiles/LONGER.json index dbf3cc3277..b4d6c3a1fb 100644 --- a/resources/profiles/LONGER.json +++ b/resources/profiles/LONGER.json @@ -1,6 +1,6 @@ { "name": "LONGER", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "LONGER configurations", "machine_model_list": [ diff --git a/resources/profiles/LONGER/machine/LONGER LK10 Plus.json b/resources/profiles/LONGER/machine/LONGER LK10 Plus.json index 609ed74444..69dd7c11c0 100644 --- a/resources/profiles/LONGER/machine/LONGER LK10 Plus.json +++ b/resources/profiles/LONGER/machine/LONGER LK10 Plus.json @@ -12,5 +12,5 @@ "0x0" ], "hotend_model": "", - "default_materials": "Generic PLA @System;Generic PETG @System" + "default_materials": "Generic PLA @LONGER LK10 Plus;Generic PETG @LONGER LK10 Plus" } diff --git a/resources/profiles/LONGER/machine/LONGER LK10.json b/resources/profiles/LONGER/machine/LONGER LK10.json index 7bc3ab48d4..99d27e4506 100644 --- a/resources/profiles/LONGER/machine/LONGER LK10.json +++ b/resources/profiles/LONGER/machine/LONGER LK10.json @@ -12,5 +12,5 @@ "0x0" ], "hotend_model": "", - "default_materials": "Generic PLA @System;Generic PETG @System" + "default_materials": "Generic PLA @LONGER LK10;Generic PETG @LONGER LK10" } diff --git a/resources/profiles/LONGER/machine/fdm_machine_common.json b/resources/profiles/LONGER/machine/fdm_machine_common.json index 61af4026c0..159c2c0f37 100644 --- a/resources/profiles/LONGER/machine/fdm_machine_common.json +++ b/resources/profiles/LONGER/machine/fdm_machine_common.json @@ -5,7 +5,6 @@ "instantiation": "false", "printer_technology": "FFF", "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/LONGER/process/fdm_process_common.json b/resources/profiles/LONGER/process/fdm_process_common.json index a1c777bc4b..fa3d9c97eb 100644 --- a/resources/profiles/LONGER/process/fdm_process_common.json +++ b/resources/profiles/LONGER/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Lulzbot.json b/resources/profiles/Lulzbot.json index 1d8e31dc93..1ca47d7cba 100644 --- a/resources/profiles/Lulzbot.json +++ b/resources/profiles/Lulzbot.json @@ -1,7 +1,7 @@ { "name": "Lulzbot", "url": "https://ohai.lulzbot.com/group/taz-6/", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Lulzbot configurations", "machine_model_list": [ diff --git a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro S.json b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro S.json index ebb151d2b0..115d886301 100644 --- a/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro S.json +++ b/resources/profiles/Lulzbot/machine/Lulzbot Taz Pro S.json @@ -15,5 +15,5 @@ "machine_load_filament_time": "20", "machine_unload_filament_time": "20", "machine_tool_change_time": "5", - "default_materials": "Generic PLA @System, Generic PETG @System, Generic ABS @System" + "default_materials": "Generic PLA @System;Generic PETG @System;Generic ABS @System" } diff --git a/resources/profiles/Lulzbot/machine/fdm_machine_common.json b/resources/profiles/Lulzbot/machine/fdm_machine_common.json index b376e28164..2874e7b0fb 100644 --- a/resources/profiles/Lulzbot/machine/fdm_machine_common.json +++ b/resources/profiles/Lulzbot/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin2", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 4 or 5.json b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 4 or 5.json index 8114e206de..e1bf7498eb 100644 --- a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 4 or 5.json +++ b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 4 or 5.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7AJRQW7g8u7CnKhZ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json index 5cf84c2791..5b5d4fa70b 100644 --- a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json +++ b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz 6.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "K4uIiLjmRJfy0GZv", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro Dual.json b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro Dual.json index f6f88cee34..c1b93d4fed 100644 --- a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro Dual.json +++ b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro Dual.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jEDhBnfwOyj5oEO8", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro S.json b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro S.json index 05bf1ecca0..e70182aa1a 100644 --- a/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro S.json +++ b/resources/profiles/Lulzbot/process/0.25mm Standard @Lulzbot Taz Pro S.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "uAws1KNEUyrcJTSy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Lulzbot/process/fdm_process_common.json b/resources/profiles/Lulzbot/process/fdm_process_common.json index 7c4803ab96..1437b79995 100644 --- a/resources/profiles/Lulzbot/process/fdm_process_common.json +++ b/resources/profiles/Lulzbot/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/M3D.json b/resources/profiles/M3D.json index cb24edb886..17d760face 100644 --- a/resources/profiles/M3D.json +++ b/resources/profiles/M3D.json @@ -1,6 +1,6 @@ { "name": "M3D", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Configuration for M3D printers", "machine_model_list": [ diff --git a/resources/profiles/M3D/machine/M3D Enabler D8500 MM Model.json b/resources/profiles/M3D/machine/M3D Enabler D8500 MM Model.json index 941348c128..d661bed3d1 100644 --- a/resources/profiles/M3D/machine/M3D Enabler D8500 MM Model.json +++ b/resources/profiles/M3D/machine/M3D Enabler D8500 MM Model.json @@ -7,6 +7,6 @@ "nozzle_diameter": "0.4", "bed_model": "M3D Enabler D8500 MM Model_bed_model.stl", "bed_texture": "M3D Enabler D8500 MM Model_bed_texture.svg", - "default_materials": "Generic PLA @system", + "default_materials": "Generic PLA @System", "scan_folder": "1" } diff --git a/resources/profiles/MagicMaker.json b/resources/profiles/MagicMaker.json index cfb4c10ac2..08e5774547 100644 --- a/resources/profiles/MagicMaker.json +++ b/resources/profiles/MagicMaker.json @@ -1,6 +1,6 @@ { "name": "MagicMaker", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "MagicMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/MagicMaker/machine/MM BoneKing 0.4 nozzle.json b/resources/profiles/MagicMaker/machine/MM BoneKing 0.4 nozzle.json index 59f622953b..91054a666d 100644 --- a/resources/profiles/MagicMaker/machine/MM BoneKing 0.4 nozzle.json +++ b/resources/profiles/MagicMaker/machine/MM BoneKing 0.4 nozzle.json @@ -73,7 +73,7 @@ "30" ], "default_filament_profile": [ - "MM Generic PLA" + "Generic PLA @System" ], "machine_max_acceleration_e": [ "10000" diff --git a/resources/profiles/MagicMaker/machine/fdm_machine_common.json b/resources/profiles/MagicMaker/machine/fdm_machine_common.json index 256eca42de..64d90f6246 100644 --- a/resources/profiles/MagicMaker/machine/fdm_machine_common.json +++ b/resources/profiles/MagicMaker/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "10000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "0.10mm Fine @MM hj", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.10mm Fine @MM BoneKing.json index d980bd9ffa..e15e8a8268 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "JoLMVPh4bNahqirV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hj SK.json b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hj SK.json index a27ed5c8ac..7c3ca0f4c7 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "m6Y453vyMDxFz4c7", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs SF.json index 263c3c7e02..46feed3806 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QI9sXxzUoh2A8c0S", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs hj.json b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs hj.json index f04d1862e1..be0c7fa9f2 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs hj.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine @MM hqs hj.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "vCIBhcj3X7d07y9G", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine @MM slb.json b/resources/profiles/MagicMaker/process/0.10mm Fine @MM slb.json index 740aa73f40..8431418656 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine @MM slb.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine @MM slb.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "BLrg8vEj3xZyxNTo", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM BoneKing.json index fab1e63f1d..dea3d51d65 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "fIzlKlmcI4pDKviy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hj SK.json b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hj SK.json index f7cbb71eda..331e13b30e 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "xngBXACjTNqOZNyB", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hqs SF.json index e24e6c7fd3..4039971a72 100644 --- a/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.10mm Fine Fast @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "wHOzdPcMWYZNhny2", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.12mm Fine BestFast @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.12mm Fine BestFast @MM BoneKing.json index ad71011496..f9c45c30f9 100644 --- a/resources/profiles/MagicMaker/process/0.12mm Fine BestFast @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.12mm Fine BestFast @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "PVbARB8V8JUBbIZG", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.12mm Fine SuperFast @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.12mm Fine SuperFast @MM BoneKing.json index ffabaed092..cae9a2f15a 100644 --- a/resources/profiles/MagicMaker/process/0.12mm Fine SuperFast @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.12mm Fine SuperFast @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "gR34Ioeioizl1UXy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.20mm Standard @MM BoneKing.json index 2c252a73e3..a308842d2c 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ON1x9dQTQTgGNLCw", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hj SK.json b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hj SK.json index be5f745572..487aba341c 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "JoTnXrNSnHKraaeB", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs SF.json index 5e8078a0ca..02cbfacae2 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "J9s3XNTCUjsYusKD", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs hj.json b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs hj.json index 1fa581bbde..f749464d1c 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs hj.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard @MM hqs hj.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "MPfzxLi2GBioXdOp", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard @MM slb.json b/resources/profiles/MagicMaker/process/0.20mm Standard @MM slb.json index 59d7797359..d52e01a20e 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard @MM slb.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard @MM slb.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Ivz7U0RTrX558HQ4", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM BoneKing.json index b3e9571756..6073685cc6 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "OZKDJHIsKAZtJTeq", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hj SK.json b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hj SK.json index 20ab75cbc9..8e80392ab7 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "RL1Irvbsm9Fh3jNz", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hqs SF.json index b56e29914f..85edf0082d 100644 --- a/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.20mm Standard Fast @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "TkBYOyBebm3pMHrl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.30mm Draft @MM BoneKing.json index 318575eb72..3a65f152ad 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QuoLlC961atuxMnn", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hj SK.json b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hj SK.json index 19ac9c25a5..f9775b7624 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "aXpG4y73oeV4p4by", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs SF.json index e5cc84d0fb..4931eba26c 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lZ3guqhwMGxBFtIh", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs hj.json b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs hj.json index 1a3d053cd2..611002258a 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs hj.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft @MM hqs hj.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "yBdZW946qhSKDU4w", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft @MM slb.json b/resources/profiles/MagicMaker/process/0.30mm Draft @MM slb.json index fdf6c572e6..b02add4e63 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft @MM slb.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft @MM slb.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Clfnw7cqNtWmzjB1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM BoneKing.json b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM BoneKing.json index ef49cf7d48..82fbed8b1f 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM BoneKing.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM BoneKing.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "g2unBNIOfILyLrLQ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hj SK.json b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hj SK.json index 4488948238..f9e8ebcf1d 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hj SK.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hj SK.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "bVabJjzFcaYFQ77o", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hqs SF.json b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hqs SF.json index adb7fe1465..b27c6f994a 100644 --- a/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hqs SF.json +++ b/resources/profiles/MagicMaker/process/0.30mm Draft Fast @MM hqs SF.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "G2b2NRdM3geucH0v", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/MagicMaker/process/fdm_process_common.json b/resources/profiles/MagicMaker/process/fdm_process_common.json index 99fcd508d0..45c9bcf236 100644 --- a/resources/profiles/MagicMaker/process/fdm_process_common.json +++ b/resources/profiles/MagicMaker/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Mellow.json b/resources/profiles/Mellow.json index f0b81c832c..6f34f757a7 100644 --- a/resources/profiles/Mellow.json +++ b/resources/profiles/Mellow.json @@ -1,6 +1,6 @@ { "name": "Mellow", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Mellow Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/Mellow/machine/fdm_common_M1.json b/resources/profiles/Mellow/machine/fdm_common_M1.json index 0d7a37436a..1556cf630a 100644 --- a/resources/profiles/Mellow/machine/fdm_common_M1.json +++ b/resources/profiles/Mellow/machine/fdm_common_M1.json @@ -117,7 +117,6 @@ "40" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Mellow/machine/fdm_machine_common.json b/resources/profiles/Mellow/machine/fdm_machine_common.json index 11833be972..a07212bae7 100644 --- a/resources/profiles/Mellow/machine/fdm_machine_common.json +++ b/resources/profiles/Mellow/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Mellow/process/fdm_process_common.json b/resources/profiles/Mellow/process/fdm_process_common.json index feb86df0e1..f37dc52e73 100644 --- a/resources/profiles/Mellow/process/fdm_process_common.json +++ b/resources/profiles/Mellow/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -84,7 +83,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/OpenEYE.json b/resources/profiles/OpenEYE.json index e29674323e..36f4ae9fac 100644 --- a/resources/profiles/OpenEYE.json +++ b/resources/profiles/OpenEYE.json @@ -1,7 +1,7 @@ { "name": "OpenEYE", "url": "http://www.openeye.tech", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "OpenEYE Printers Configurations", "machine_model_list": [ diff --git a/resources/profiles/OpenEYE/machine/fdm_machine_common.json b/resources/profiles/OpenEYE/machine/fdm_machine_common.json index 86cbf26376..d8845ab892 100644 --- a/resources/profiles/OpenEYE/machine/fdm_machine_common.json +++ b/resources/profiles/OpenEYE/machine/fdm_machine_common.json @@ -1,4 +1,8 @@ { + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "best_object_pos": "0.5x0.5", "change_filament_gcode": "", @@ -16,9 +20,7 @@ "extruder_offset": [ "0x0" ], - "from": "system", "gcode_flavor": "marlin", - "instantiation": "false", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end", "machine_max_acceleration_e": [ @@ -77,7 +79,6 @@ "min_layer_height": [ "0.08" ], - "name": "fdm_machine_common", "nozzle_diameter": [ "0.4" ], @@ -109,9 +110,7 @@ "retraction_speed": [ "60" ], - "silent_mode": "0", "single_extruder_multi_material": "1", - "type": "machine", "wipe": [ "1" ], diff --git a/resources/profiles/OpenEYE/machine/fdm_openeye_common.json b/resources/profiles/OpenEYE/machine/fdm_openeye_common.json index 8af6ea96eb..6bfd69da55 100644 --- a/resources/profiles/OpenEYE/machine/fdm_openeye_common.json +++ b/resources/profiles/OpenEYE/machine/fdm_openeye_common.json @@ -1,4 +1,9 @@ { + "type": "machine", + "name": "fdm_openeye_common", + "inherits": "fdm_machine_common", + "from": "system", + "instantiation": "false", "adaptive_bed_mesh_margin": "0", "auxiliary_fan": "0", "bed_exclude_area": [ @@ -38,14 +43,11 @@ "fan_kickstart": "0", "fan_speedup_overhangs": "1", "fan_speedup_time": "0", - "from": "system", "gcode_flavor": "klipper", "head_wrap_detect_zone": [], "high_current_on_filament_swap": "0", "host_type": "octoprint", "printer_agent": "moonraker", - "inherits": "fdm_machine_common", - "instantiation": "false", "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}\n_MMU_UPDATE_HEIGHT", "long_retractions_when_cut": [ "0" @@ -137,7 +139,6 @@ "0.08" ], "min_resonance_avoidance_speed": "70", - "name": "fdm_openeye_common", "nozzle_diameter": [ "0.4", "0.4" @@ -195,7 +196,6 @@ "40" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "0", "support_chamber_temp_control": "0", @@ -208,7 +208,6 @@ "travel_slope": [ "3" ], - "type": "machine", "use_firmware_retraction": "0", "use_relative_e_distances": "1", "wipe": [ diff --git a/resources/profiles/OpenEYE/process/fdm_process_common.json b/resources/profiles/OpenEYE/process/fdm_process_common.json index a1e9d13605..9ac1223f30 100644 --- a/resources/profiles/OpenEYE/process/fdm_process_common.json +++ b/resources/profiles/OpenEYE/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", "bottom_surface_pattern": "monotonic", @@ -33,7 +32,6 @@ "inner_wall_line_width": "0.45", "inner_wall_speed": "40", "interface_shells": "0", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "40", "ironing_flow": "10%", diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json index 866b720b78..dd5f307a95 100644 --- a/resources/profiles/OrcaArena.json +++ b/resources/profiles/OrcaArena.json @@ -1,7 +1,7 @@ { "name": "Orca Arena Printer", "url": "", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Orca Arena configuration files", "machine_model_list": [ diff --git a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json index e375904da2..aa166a4c90 100644 --- a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json +++ b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json @@ -9,5 +9,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "Generic PLA Silk @OrcaArena;Generic PLA @OrcaArena;Arena PLA Matte @Arena X1C;Arena PLA Basic @Arena X1C;Arena ABS @Arena X1C;Arena PC @Arena X1C;Arena Support W @Arena X1C;Arena TPU 95A @Arena X1C;PolyTerra PLA @Arena X1C;PolyLite PLA @Arena X1C;" + "default_materials": "Generic PLA Silk @OrcaArena;Generic PLA @OrcaArena;Arena PLA Matte @Arena X1C;Arena PLA Basic @Arena X1C;Arena ABS @Arena X1C;Arena PC @Arena X1C;Arena Support W @Arena X1C;Arena TPU 95A @Arena X1C;PolyTerra PLA @Arena X1C;PolyLite PLA @Arena X1C;Generic PLA @OrcaArena 0.2 nozzle" } diff --git a/resources/profiles/OrcaArena/machine/fdm_bbl_3dp_001_common.json b/resources/profiles/OrcaArena/machine/fdm_bbl_3dp_001_common.json index 84096e978c..0ce40a051a 100644 --- a/resources/profiles/OrcaArena/machine/fdm_bbl_3dp_001_common.json +++ b/resources/profiles/OrcaArena/machine/fdm_bbl_3dp_001_common.json @@ -144,7 +144,6 @@ "Spiral Lift" ], "nozzle_type": "hardened_steel", - "silent_mode": "0", "single_extruder_multi_material": "1", "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM109 S[nozzle_temperature_initial_layer]\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n", "machine_end_gcode": "PRINT_END", diff --git a/resources/profiles/OrcaArena/machine/fdm_machine_common.json b/resources/profiles/OrcaArena/machine/fdm_machine_common.json index 01ece7b8a0..84a8829a59 100644 --- a/resources/profiles/OrcaArena/machine/fdm_machine_common.json +++ b/resources/profiles/OrcaArena/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/OrcaArena/process/fdm_process_arena_common.json b/resources/profiles/OrcaArena/process/fdm_process_arena_common.json index 2fda69d729..f0171b1731 100644 --- a/resources/profiles/OrcaArena/process/fdm_process_arena_common.json +++ b/resources/profiles/OrcaArena/process/fdm_process_arena_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -31,7 +30,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "crosshatch", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/OrcaArena/process/fdm_process_common.json b/resources/profiles/OrcaArena/process/fdm_process_common.json index abe5fe9e01..f78b43e241 100644 --- a/resources/profiles/OrcaArena/process/fdm_process_common.json +++ b/resources/profiles/OrcaArena/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 2d58684985..6d9885f942 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.04.00.05", + "version": "02.04.00.06", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json index c234e34567..36849ed63d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS @base.json @@ -23,12 +23,6 @@ "nozzle_temperature_initial_layer": [ "255" ], - "bed_temperature": [ - "100" - ], - "bed_temperature_initial_layer": [ - "100" - ], "temperature_vitrification": [ "100" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json index 7e965bc256..833356e37a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ABS PRIME @base.json @@ -23,12 +23,6 @@ "nozzle_temperature_initial_layer": [ "255" ], - "bed_temperature": [ - "100" - ], - "bed_temperature_initial_layer": [ - "100" - ], "temperature_vitrification": [ "100" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json index 1bc1230eae..207c17790d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX ASA PRIME @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "265" ], - "bed_temperature": [ - "100" - ], - "bed_temperature_initial_layer": [ - "100" - ], "temperature_vitrification": [ "95" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json index c023668f4a..cc924787f8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX PA6-CF @base.json @@ -23,12 +23,6 @@ "nozzle_temperature_initial_layer": [ "285" ], - "bed_temperature": [ - "100" - ], - "bed_temperature_initial_layer": [ - "100" - ], "temperature_vitrification": [ "170" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json index 15de223500..504c6dde2b 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX NYLEX UNFILLED @base.json @@ -23,12 +23,6 @@ "nozzle_temperature_initial_layer": [ "260" ], - "bed_temperature": [ - "100" - ], - "bed_temperature_initial_layer": [ - "100" - ], "temperature_vitrification": [ "100" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json index 9fce322405..f15437f295 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PCTG PRIME @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "275" ], - "bed_temperature": [ - "80" - ], - "bed_temperature_initial_layer": [ - "85" - ], "temperature_vitrification": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json index 9f22293450..39afcd6759 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PETG @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "250" ], - "bed_temperature": [ - "80" - ], - "bed_temperature_initial_layer": [ - "85" - ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json index a0b2f76888..cc9b7f8e54 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA @base.json @@ -23,12 +23,6 @@ "nozzle_temperature_initial_layer": [ "235" ], - "bed_temperature": [ - "60" - ], - "bed_temperature_initial_layer": [ - "60" - ], "temperature_vitrification": [ "55" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json index a9a5e83c0b..b2cc99d390 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA PRIME @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "240" ], - "bed_temperature": [ - "60" - ], - "bed_temperature_initial_layer": [ - "60" - ], "temperature_vitrification": [ "60" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json index f06642c432..d5c9a7a87d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX PLA+Silk @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "245" ], - "bed_temperature": [ - "60" - ], - "bed_temperature_initial_layer": [ - "60" - ], "temperature_vitrification": [ "55" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json index 5c715dea33..35e3c75bc3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 30D @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "240" ], - "bed_temperature": [ - "30" - ], - "bed_temperature_initial_layer": [ - "35" - ], "temperature_vitrification": [ "60" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json index 81d5d81f1c..b6f622635f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 40D @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "240" ], - "bed_temperature": [ - "30" - ], - "bed_temperature_initial_layer": [ - "35" - ], "temperature_vitrification": [ "60" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json index b2e0aab688..d1c1d2963f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPE 60D @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "240" ], - "bed_temperature": [ - "30" - ], - "bed_temperature_initial_layer": [ - "35" - ], "temperature_vitrification": [ "60" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json index 027ff45226..0338bb2929 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/COEX/COEX TPU 60A @base.json @@ -24,12 +24,6 @@ "nozzle_temperature_initial_layer": [ "225" ], - "bed_temperature": [ - "0" - ], - "bed_temperature_initial_layer": [ - "0" - ], "temperature_vitrification": [ "60" ], diff --git a/resources/profiles/Peopoly.json b/resources/profiles/Peopoly.json index 2a73d251f1..9b95c24bb3 100644 --- a/resources/profiles/Peopoly.json +++ b/resources/profiles/Peopoly.json @@ -1,6 +1,6 @@ { "name": "Peopoly", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Peopoly configurations", "machine_model_list": [ diff --git a/resources/profiles/Peopoly/machine/fdm_klipper_common.json b/resources/profiles/Peopoly/machine/fdm_klipper_common.json index e9a5185767..00e4209105 100644 --- a/resources/profiles/Peopoly/machine/fdm_klipper_common.json +++ b/resources/profiles/Peopoly/machine/fdm_klipper_common.json @@ -119,7 +119,6 @@ "z_hop_types": [ "Auto Lift" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE", diff --git a/resources/profiles/Peopoly/machine/fdm_machine_common.json b/resources/profiles/Peopoly/machine/fdm_machine_common.json index f6bd23139c..c47cfdced1 100644 --- a/resources/profiles/Peopoly/machine/fdm_machine_common.json +++ b/resources/profiles/Peopoly/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Peopoly/process/fdm_process_common.json b/resources/profiles/Peopoly/process/fdm_process_common.json index 5e2f73458e..9b48c69b28 100644 --- a/resources/profiles/Peopoly/process/fdm_process_common.json +++ b/resources/profiles/Peopoly/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Peopoly/process/fdm_process_peopoly_common.json b/resources/profiles/Peopoly/process/fdm_process_peopoly_common.json index d4da354499..014fdb8ffb 100644 --- a/resources/profiles/Peopoly/process/fdm_process_peopoly_common.json +++ b/resources/profiles/Peopoly/process/fdm_process_peopoly_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Peopoly/process/fdm_process_pply_common.json b/resources/profiles/Peopoly/process/fdm_process_pply_common.json index be008f5478..1bfb430465 100644 --- a/resources/profiles/Peopoly/process/fdm_process_pply_common.json +++ b/resources/profiles/Peopoly/process/fdm_process_pply_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "80", diff --git a/resources/profiles/Phrozen.json b/resources/profiles/Phrozen.json index fc5b795c37..f07568bb29 100644 --- a/resources/profiles/Phrozen.json +++ b/resources/profiles/Phrozen.json @@ -1,6 +1,6 @@ { "name": "Phrozen", - "version": "02.04.00.04", + "version": "02.04.00.05", "force_update": "0", "description": "Phrozen configurations", "machine_model_list": [ diff --git a/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json b/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json index d909765bad..c53abee956 100644 --- a/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json +++ b/resources/profiles/Phrozen/filament/Generic PLA @Phrozen Arco 0.4 nozzle.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Phrozen Arco 0.4 nozzle", - "inherits": "Generic PLA @System", "renamed_from": "Phrozen PLA @Phrozen Arco 0.4 nozzle;Phrozen PLA Phrozen Arco 0.4 nozzle", + "inherits": "Generic PLA @System", "from": "system", "setting_id": "xTeHmDOY48Bik10J", "instantiation": "true", @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "31.925" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "24.75" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json b/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json index c34d188507..963b3b4727 100644 --- a/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json +++ b/resources/profiles/Phrozen/machine/Phrozen Arco 0.4 nozzle.json @@ -202,7 +202,6 @@ "45" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "0", diff --git a/resources/profiles/Phrozen/process/0.20mm Standard @Phrozen Arco 0.4 nozzle.json b/resources/profiles/Phrozen/process/0.20mm Standard @Phrozen Arco 0.4 nozzle.json index 74be068c38..d4bb3d5479 100644 --- a/resources/profiles/Phrozen/process/0.20mm Standard @Phrozen Arco 0.4 nozzle.json +++ b/resources/profiles/Phrozen/process/0.20mm Standard @Phrozen Arco 0.4 nozzle.json @@ -127,8 +127,6 @@ "overhang_reverse": "0", "overhang_reverse_internal_only": "0", "overhang_reverse_threshold": "50%", - "overhang_speed_classic": "1", - "overhang_totally_speed": "10", "post_process": [], "precise_outer_wall": "1", "precise_z_height": "0", diff --git a/resources/profiles/Phrozen/process/fdm_process_common.json b/resources/profiles/Phrozen/process/fdm_process_common.json index 868bbc1a2e..f813b8fa7f 100644 --- a/resources/profiles/Phrozen/process/fdm_process_common.json +++ b/resources/profiles/Phrozen/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -78,7 +77,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_surface_line_width": "0.4", diff --git a/resources/profiles/Positron3D.json b/resources/profiles/Positron3D.json index d8e066ce73..d8008abb55 100644 --- a/resources/profiles/Positron3D.json +++ b/resources/profiles/Positron3D.json @@ -1,6 +1,6 @@ { "name": "Positron 3D", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Positron 3D Printer Profile", "machine_model_list": [ diff --git a/resources/profiles/Positron3D/machine/fdm_common_the_positron.json b/resources/profiles/Positron3D/machine/fdm_common_the_positron.json index 4226a5a0e4..68e95b626e 100644 --- a/resources/profiles/Positron3D/machine/fdm_common_the_positron.json +++ b/resources/profiles/Positron3D/machine/fdm_common_the_positron.json @@ -117,7 +117,6 @@ "40" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Positron3D/machine/fdm_machine_common.json b/resources/profiles/Positron3D/machine/fdm_machine_common.json index 11833be972..a07212bae7 100644 --- a/resources/profiles/Positron3D/machine/fdm_machine_common.json +++ b/resources/profiles/Positron3D/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Positron3D/process/fdm_process_common.json b/resources/profiles/Positron3D/process/fdm_process_common.json index b8e882770a..0d558129af 100644 --- a/resources/profiles/Positron3D/process/fdm_process_common.json +++ b/resources/profiles/Positron3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -83,7 +82,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index 57d1e2c282..723874f67d 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.04.00.04", + "version": "02.04.00.06", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json index 7d53f66645..ee328ff399 100644 --- a/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL 5T.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ABS @Prusa XL 5T", - "inherits": "Generic ABS @Prusa base", "renamed_from": "Prusa Generic ABS @XL 5T;Prusa Generic ABS XL 5T", + "inherits": "Generic ABS @Prusa base", "from": "system", "setting_id": "XfavDzEzzrXDQVUC", "instantiation": "true", @@ -36,8 +36,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json index abf7986c12..f6a0a45d88 100644 --- a/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json +++ b/resources/profiles/Prusa/filament/Generic ABS @Prusa XL.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic ABS @Prusa XL", - "inherits": "Generic ABS @Prusa base", "renamed_from": "Prusa Generic ABS @XL;Prusa Generic ABS XL", + "inherits": "Generic ABS @Prusa base", "from": "system", "setting_id": "HYHkGEjr6Kid2Xg2", "instantiation": "true", @@ -36,8 +36,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json index c0501006d2..9be4ea1ba0 100644 --- a/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL 5T.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic FLEX @Prusa XL 5T", - "inherits": "fdm_filament_flex", "renamed_from": "Prusa Generic FLEX @XL 5T;Prusa Generic FLEX XL 5T", + "inherits": "fdm_filament_flex", "from": "system", "setting_id": "ef8fSryRYselyr4G", "filament_id": "OFbPuPKY", @@ -11,8 +11,6 @@ "filament_loading_speed": "28", "filament_unloading_speed_start": "100", "filament_unloading_speed": "90", - "filament_load_time": "0", - "filament_unload_time": "0", "filament_cooling_moves": "4", "filament_cooling_initial_speed": "2.2", "filament_cooling_final_speed": "3.4", diff --git a/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json index ea56f3a8b5..24f34f49ab 100644 --- a/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json +++ b/resources/profiles/Prusa/filament/Generic FLEX @Prusa XL.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic FLEX @Prusa XL", - "inherits": "fdm_filament_flex", "renamed_from": "Prusa Generic FLEX @XL;Prusa Generic FLEX XL", + "inherits": "fdm_filament_flex", "from": "system", "setting_id": "qrFWrwgQSXgU7oCb", "filament_id": "OFbPuPKY", @@ -11,8 +11,6 @@ "filament_loading_speed": "28", "filament_unloading_speed_start": "100", "filament_unloading_speed": "90", - "filament_load_time": "0", - "filament_unload_time": "0", "filament_cooling_moves": "4", "filament_cooling_initial_speed": "2.2", "filament_cooling_final_speed": "3.4", diff --git a/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json index 9f70295142..52e208e7c9 100644 --- a/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL 5T.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG @Prusa XL 5T", - "inherits": "Generic PETG @Prusa base", "renamed_from": "Prusa Generic PETG @XL 5T;Prusa Generic PETG XL 5T", + "inherits": "Generic PETG @Prusa base", "from": "system", "setting_id": "DNJECSjW6zKYALxE", "instantiation": "true", @@ -37,8 +37,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "3", "filament_cooling_initial_speed": "5", "filament_cooling_final_speed": "2.5", diff --git a/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json index 0cdcbfc1c4..78a3e589b2 100644 --- a/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json +++ b/resources/profiles/Prusa/filament/Generic PETG @Prusa XL.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PETG @Prusa XL", - "inherits": "Generic PETG @Prusa base", "renamed_from": "Prusa Generic PETG @XL;Prusa Generic PETG XL", + "inherits": "Generic PETG @Prusa base", "from": "system", "setting_id": "8vcNv4b4H7aYA01G", "instantiation": "true", @@ -37,8 +37,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "3", "filament_cooling_initial_speed": "5", "filament_cooling_final_speed": "2.5", diff --git a/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json index 6dbefec6be..532ccba57a 100644 --- a/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL 5T.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Prusa XL 5T", - "inherits": "Generic PLA @Prusa base", "renamed_from": "Prusa Generic PLA @XL 5T;Prusa Generic PLA XL 5T", + "inherits": "Generic PLA @Prusa base", "from": "system", "setting_id": "wDxtZLt5J2JODMBq", "instantiation": "true", @@ -34,8 +34,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json index ff8f343b41..4e560f4bac 100644 --- a/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json +++ b/resources/profiles/Prusa/filament/Generic PLA @Prusa XL.json @@ -1,8 +1,8 @@ { "type": "filament", "name": "Generic PLA @Prusa XL", - "inherits": "Generic PLA @Prusa base", "renamed_from": "Prusa Generic PLA @XL;Prusa Generic PLA XL", + "inherits": "Generic PLA @Prusa base", "from": "system", "setting_id": "27u5AiklUhmExsys", "instantiation": "true", @@ -34,8 +34,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json index fdb63e2e68..43aed0f993 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL 5T.json @@ -6,7 +6,9 @@ "setting_id": "IQu91UAWOJOQcUq9", "filament_id": "OFmFwUWM", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "260", "nozzle_temperature": "260", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament ASA @XL.json b/resources/profiles/Prusa/filament/Prusament ASA @XL.json index c07021a9c3..d118538809 100644 --- a/resources/profiles/Prusa/filament/Prusament ASA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament ASA @XL.json @@ -6,7 +6,9 @@ "setting_id": "RaEoFoZdXkkOz9yh", "filament_id": "OFmFwUWM", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "260", "nozzle_temperature": "260", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json index af306fd2a7..80a9653148 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL 5T.json @@ -6,7 +6,9 @@ "setting_id": "FYerOcjToJ3ABpu1", "filament_id": "OF54SvEe", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json index f843be92a0..957a27f8cc 100644 --- a/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PA-CF @XL.json @@ -6,7 +6,9 @@ "setting_id": "IrL4iU2kkMBHIw3e", "filament_id": "OF54SvEe", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "275", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json index 922492ce7c..ff60e677cb 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL 5T.json @@ -41,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json index 2ea273902c..d3fdac3873 100644 --- a/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC Blend @XL.json @@ -41,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json index 0c6d1a3cdb..7ef720791d 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL 5T.json @@ -6,7 +6,9 @@ "setting_id": "m1YND6uz3GWeVIBG", "filament_id": "OFjz0a3m", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "285", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json index 572b970d02..44abf2918e 100644 --- a/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PC-CF @XL.json @@ -6,7 +6,9 @@ "setting_id": "Eq5x2CcEUUAZ5aof", "filament_id": "OFjz0a3m", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "285", "nozzle_temperature": "285", "hot_plate_temp_initial_layer": "100", @@ -39,8 +41,6 @@ "filament_loading_speed": "14", "filament_unloading_speed_start": "100", "filament_unloading_speed": "20", - "filament_load_time": "15", - "filament_unload_time": "12", "filament_cooling_moves": "5", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "50", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json index e0db59fde9..95e9ecc79b 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL 5T.json @@ -36,8 +36,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "3", "filament_cooling_initial_speed": "5", "filament_cooling_final_speed": "2.5", diff --git a/resources/profiles/Prusa/filament/Prusament PETG @XL.json b/resources/profiles/Prusa/filament/Prusament PETG @XL.json index f26140a0eb..56c2fa7a2b 100644 --- a/resources/profiles/Prusa/filament/Prusament PETG @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PETG @XL.json @@ -36,8 +36,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "3", "filament_cooling_initial_speed": "5", "filament_cooling_final_speed": "2.5", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json index efda9cf4e3..ae302e09eb 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL 5T.json @@ -33,8 +33,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament PLA @XL.json b/resources/profiles/Prusa/filament/Prusament PLA @XL.json index 9d02a67491..b5d006dc46 100644 --- a/resources/profiles/Prusa/filament/Prusament PLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PLA @XL.json @@ -33,8 +33,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json index 366c6043cd..2c689937cf 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL 5T.json @@ -6,7 +6,9 @@ "setting_id": "DIrPylH6rmu6YA43", "filament_id": "OFh7mvPO", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "215", "hot_plate_temp_initial_layer": "75", @@ -40,8 +42,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament PVB @XL.json b/resources/profiles/Prusa/filament/Prusament PVB @XL.json index 4a9a858c06..01df675ba1 100644 --- a/resources/profiles/Prusa/filament/Prusament PVB @XL.json +++ b/resources/profiles/Prusa/filament/Prusament PVB @XL.json @@ -6,7 +6,9 @@ "setting_id": "RF55nfxQwqUqe00Q", "filament_id": "OFh7mvPO", "instantiation": "true", - "filament_vendor": ["Prusa Polymers"], + "filament_vendor": [ + "Prusa Polymers" + ], "nozzle_temperature_intial_layer": "215", "nozzle_temperature": "215", "hot_plate_temp_initial_layer": "75", @@ -40,8 +42,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json index 8bfc482af6..1b847cb1c8 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL 5T.json @@ -36,8 +36,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json index 9ed3d9af74..97c4f6d108 100644 --- a/resources/profiles/Prusa/filament/Prusament rPLA @XL.json +++ b/resources/profiles/Prusa/filament/Prusament rPLA @XL.json @@ -36,8 +36,6 @@ "filament_loading_speed": "10", "filament_unloading_speed_start": "100", "filament_unloading_speed": "100", - "filament_load_time": "10.5", - "filament_unload_time": "8.5", "filament_cooling_moves": "2", "filament_cooling_initial_speed": "10", "filament_cooling_final_speed": "3.5", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One HF.json b/resources/profiles/Prusa/machine/Prusa CORE One HF.json index 027ef3e2d0..2c75795ff5 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One HF.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One HF.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One HF", "bed_model": "coreone_bed.stl", "bed_texture": "coreone.svg", - "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One;Generic PLA @Prusa CORE One HF 0.6;Generic PLA @Prusa CORE One HF 0.8", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One L HF.json b/resources/profiles/Prusa/machine/Prusa CORE One L HF.json index 57287f0380..08f23ca781 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One L HF.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One L HF.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One L HF", "bed_model": "coreonel_bed.stl", "bed_texture": "coreonel.svg", - "default_materials": "Generic PLA @Prusa CORE One", + "default_materials": "Generic PLA @Prusa CORE One;Generic PLA @Prusa CORE One HF 0.4;Generic PLA @System", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One L.json b/resources/profiles/Prusa/machine/Prusa CORE One L.json index 87bc587830..290659a2a4 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One L.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One L.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One L", "bed_model": "coreonel_bed.stl", "bed_texture": "coreonel.svg", - "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One;Generic PLA @System", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa CORE One.json b/resources/profiles/Prusa/machine/Prusa CORE One.json index b9907aca2e..3388083a65 100644 --- a/resources/profiles/Prusa/machine/Prusa CORE One.json +++ b/resources/profiles/Prusa/machine/Prusa CORE One.json @@ -3,7 +3,7 @@ "name": "Prusa CORE One", "bed_model": "coreone_bed.stl", "bed_texture": "coreone.svg", - "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One", + "default_materials": "Generic ABS @Prusa CORE One;Generic ASA @Prusa CORE One;Generic PETG @Prusa CORE One;Generic PLA @Prusa CORE One;Generic PLA Silk @Prusa CORE One;Generic TPU @Prusa CORE One;Generic PLA @Prusa CORE One 0.6;Generic PLA @Prusa CORE One 0.8", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S HF.json b/resources/profiles/Prusa/machine/Prusa MK4S HF.json index 088715b835..157766c122 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S HF.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S HF.json @@ -3,7 +3,7 @@ "name": "Prusa MK4S HF", "bed_model": "mk4_bed.stl", "bed_texture": "mk4s.svg", - "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S", + "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S;Generic PLA @Prusa MK4S HF0.6;Generic PLA @Prusa MK4S HF0.8", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/machine/Prusa MK4S.json b/resources/profiles/Prusa/machine/Prusa MK4S.json index 2f6bd3e45f..e3f598023b 100644 --- a/resources/profiles/Prusa/machine/Prusa MK4S.json +++ b/resources/profiles/Prusa/machine/Prusa MK4S.json @@ -3,7 +3,7 @@ "name": "Prusa MK4S", "bed_model": "mk4_bed.stl", "bed_texture": "mk4s.svg", - "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S", + "default_materials": "Generic ABS @Prusa MK4S;Generic ASA @Prusa MK4S;Generic PETG @Prusa MK4S;Generic PLA @Prusa MK4S;Generic PLA Silk @Prusa MK4S;Generic TPU @Prusa MK4S;Generic PLA @Prusa MK4S 0.6;Generic PLA @Prusa MK4S 0.8", "family": "Prusa", "hotend_model": "", "machine_tech": "FFF", diff --git a/resources/profiles/Prusa/process/fdm_process_common.json b/resources/profiles/Prusa/process/fdm_process_common.json index b8e882770a..0d558129af 100644 --- a/resources/profiles/Prusa/process/fdm_process_common.json +++ b/resources/profiles/Prusa/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -83,7 +82,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index 9a67c47cd0..25ffa10171 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -1,6 +1,6 @@ { "name": "Qidi", - "version": "02.04.00.12", + "version": "02.04.00.14", "force_update": "0", "description": "Qidi configurations", "machine_model_list": [ diff --git a/resources/profiles/Qidi/machine/Qidi Q2.json b/resources/profiles/Qidi/machine/Qidi Q2.json index d7f9e8bf62..6b05ae57b0 100644 --- a/resources/profiles/Qidi/machine/Qidi Q2.json +++ b/resources/profiles/Qidi/machine/Qidi Q2.json @@ -8,5 +8,5 @@ "bed_model": "qidi_q2_buildplate_model.stl", "bed_texture": "qidi_q2_buildplate_texture.svg", "hotend_model": "X-Series_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;QIDI PET-CF" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;QIDI PET-CF;QIDI PLA Rapido @Qidi Q2 0.2 nozzle;QIDI PLA Rapido @Qidi Q2 0.4 nozzle;QIDI PLA Rapido @Qidi Q2 0.6 nozzle;QIDI PLA Rapido @Qidi Q2 0.8 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi Q2C.json b/resources/profiles/Qidi/machine/Qidi Q2C.json index cdc45e8f5e..462814d225 100644 --- a/resources/profiles/Qidi/machine/Qidi Q2C.json +++ b/resources/profiles/Qidi/machine/Qidi Q2C.json @@ -8,5 +8,5 @@ "bed_model": "qidi_q2c_buildplate_model.stl", "bed_texture": "qidi_q2c_buildplate_texture.svg", "hotend_model": "X-Series_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;QIDI PET-CF" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;QIDI PET-CF;QIDI PLA Rapido @Qidi Q2C 0.2 nozzle;QIDI PLA Rapido @Qidi Q2C 0.4 nozzle;QIDI PLA Rapido @Qidi Q2C 0.6 nozzle;QIDI PLA Rapido @Qidi Q2C 0.8 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3.json b/resources/profiles/Qidi/machine/Qidi X-Max 3.json index 99888a8acf..ce2cfe8c26 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xmax3_buildplate_model.stl", "bed_texture": "qidi_xmax3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA @Qidi X-Max 3 0.2 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 4.json b/resources/profiles/Qidi/machine/Qidi X-Max 4.json index 4d67f77537..5e1b05cc11 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 4.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 4.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xmax4_buildplate_model.stl", "bed_texture": "qidi_xmax4_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "Generic ABS @Qidi X-Max 4 0.4 nozzle;Generic PLA @Qidi X-Max 4 0.4 nozzle;QIDI ABS Odorless @Qidi X-Max 4 0.4 nozzle;QIDI ABS Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido Matte @Qidi X-Max 4 0.4 nozzle;QIDI PLA-CF @Qidi X-Max 4 0.4 nozzle;Generic PLA Silk @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido Silk @Qidi X-Max 4 0.4 nozzle;QIDI ASA @Qidi X-Max 4 0.4 nozzle;QIDI PETG Basic @Qidi X-Max 4 0.4 nozzle;QIDI PETG Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PETG Tough @Qidi X-Max 4 0.4 nozzle;QIDI PETG Translucent @Qidi X-Max 4 0.4 nozzle;QIDI PLA Basic @Qidi X-Max 4 0.4 nozzle;QIDI PLA Matte Basic @Qidi X-Max 4 0.4 nozzle;Generic PETG @Qidi X-Max 4 0.4 nozzle" + "default_materials": "Generic ABS @Qidi X-Max 4 0.4 nozzle;Generic PLA @Qidi X-Max 4 0.4 nozzle;QIDI ABS Odorless @Qidi X-Max 4 0.4 nozzle;QIDI ABS Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido Matte @Qidi X-Max 4 0.4 nozzle;QIDI PLA-CF @Qidi X-Max 4 0.4 nozzle;Generic PLA Silk @Qidi X-Max 4 0.4 nozzle;QIDI PLA Rapido Silk @Qidi X-Max 4 0.4 nozzle;QIDI ASA @Qidi X-Max 4 0.4 nozzle;QIDI PETG Basic @Qidi X-Max 4 0.4 nozzle;QIDI PETG Rapido @Qidi X-Max 4 0.4 nozzle;QIDI PETG Tough @Qidi X-Max 4 0.4 nozzle;QIDI PETG Translucent @Qidi X-Max 4 0.4 nozzle;QIDI PLA Basic @Qidi X-Max 4 0.4 nozzle;QIDI PLA Matte Basic @Qidi X-Max 4 0.4 nozzle;Generic PETG @Qidi X-Max 4 0.4 nozzle;Generic PLA @Qidi X-Max 4 0.2 nozzle;Generic PLA @Qidi X-Max 4 0.6 nozzle;Generic PLA @Qidi X-Max 4 0.8 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3.json index 84df7f37be..e527fe85b4 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xplus3_buildplate_model.stl", "bed_texture": "qidi_xplus3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA @Qidi X-Plus 3 0.2 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4.json index ac34a73e34..69a757212e 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xplus4_buildplate_model.stl", "bed_texture": "qidi_xplus4_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;Generic PETG @Qidi" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;Generic PETG @Qidi;QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle;QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle;QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle;QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3.json index 75b3d2e252..7cacb82e87 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3.json @@ -8,5 +8,5 @@ "bed_model": "qidi_xsmart3_buildplate_model.stl", "bed_texture": "qidi_xsmart3_buildplate_texture.svg", "hotend_model": "qidi_xseries_gen3_hotend.stl", - "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi" + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PLA Rapido Matte;QIDI PETG Tough;QIDI ASA;Generic ASA @Qidi;Generic ABS @Qidi;Generic PETG @Qidi;Generic PLA Silk @Qidi;Generic PLA @Qidi;Generic PLA @Qidi X-Smart 3 0.2 nozzle" } diff --git a/resources/profiles/Qidi/machine/fdm_machine_common.json b/resources/profiles/Qidi/machine/fdm_machine_common.json index 2d5fc3ead3..50bcc2255c 100644 --- a/resources/profiles/Qidi/machine/fdm_machine_common.json +++ b/resources/profiles/Qidi/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Qidi/machine/fdm_machine_x_common.json b/resources/profiles/Qidi/machine/fdm_machine_x_common.json index b8a14c80ec..b2b0359a39 100644 --- a/resources/profiles/Qidi/machine/fdm_machine_x_common.json +++ b/resources/profiles/Qidi/machine/fdm_machine_x_common.json @@ -133,7 +133,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "wipe_tower_type": "type1", "support_air_filtration": [ diff --git a/resources/profiles/Qidi/machine/fdm_q_common.json b/resources/profiles/Qidi/machine/fdm_q_common.json index 94fbffd64d..a8915e8895 100644 --- a/resources/profiles/Qidi/machine/fdm_q_common.json +++ b/resources/profiles/Qidi/machine/fdm_q_common.json @@ -126,7 +126,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "wipe_tower_type": "type1", "support_air_filtration": [ diff --git a/resources/profiles/Qidi/machine/fdm_qidi_common.json b/resources/profiles/Qidi/machine/fdm_qidi_common.json index 38b39c4591..69ca7c731f 100644 --- a/resources/profiles/Qidi/machine/fdm_qidi_common.json +++ b/resources/profiles/Qidi/machine/fdm_qidi_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "wipe_tower_type": "type1", "change_filament_gcode": "", diff --git a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json index 93be914bd5..ce87f787ca 100644 --- a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json @@ -46,7 +46,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.22", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json index 499d8ad5cb..741e7b059d 100644 --- a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json @@ -51,7 +51,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "450" ], diff --git a/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json index 2f49cb3ba1..b80777804a 100644 --- a/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json @@ -37,7 +37,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.22", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json index 70d97f84ab..ab474d3b97 100644 --- a/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json @@ -40,7 +40,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.22", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi X3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi X3.json index 7bafb22f06..170ab2c68d 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi X3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi X3.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_qidi_x3_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json index 993afe4898..1bb3d04914 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "iQXhsvqnRSjNDxK1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json index 897fdb4504..5dfa794d9f 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Ls6f3OYdkl6qG2i2", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json index ab371384d3..3ec7004f02 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "4Gy3FqymogmRSeVq", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json b/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json index 932a708742..900f78219e 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json @@ -50,7 +50,6 @@ "small_perimeter_threshold": [ "50" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "430" ], diff --git a/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json b/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json index d734a14634..9273f4b6b9 100644 --- a/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json @@ -41,7 +41,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_pattern": "gyroid", "sparse_infill_speed": [ "200" diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi X3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi X3.json index 4b5aa16e59..242cce03cd 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi X3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi X3.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_qidi_x3_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json index 3f0504ddb3..e5154cf932 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "HLcracgY90tIkYwN", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json index 7e058d924d..0546913457 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "6Be5iq2K9VppN5gE", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json index 7cb52d8cbc..fa3e8bf18a 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "R1lqL3bMvvg6NMgD", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json index 91d939fec5..4d2d0ff172 100644 --- a/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json @@ -44,7 +44,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "330" ], diff --git a/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json index 8d281627ea..9fb86119f4 100644 --- a/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json @@ -56,7 +56,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.62", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json b/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json index 5c879d83ab..ab94482de0 100644 --- a/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json @@ -39,7 +39,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "270" ], diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json index 2866bac399..490386d1a6 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "WqYCTn83Ln11dpYC", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json index 74cc5c814f..edca0c62d1 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "2lJE6tuEIL22NBc2", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json index 4dd2935975..4e5922dd23 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "MDu610revkMyZze1", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json index 4bbea2ec6d..74d0ebc2d0 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json @@ -32,7 +32,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "270" ], diff --git a/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json index 53429a10d1..f6a25ed90b 100644 --- a/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json @@ -56,7 +56,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.82", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json index 646cf814e4..8579e2af21 100644 --- a/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json @@ -53,7 +53,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.62", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.24mm Draft @Qidi X3.json b/resources/profiles/Qidi/process/0.24mm Draft @Qidi X3.json index 787113e6c6..467be12aec 100644 --- a/resources/profiles/Qidi/process/0.24mm Draft @Qidi X3.json +++ b/resources/profiles/Qidi/process/0.24mm Draft @Qidi X3.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_qidi_x3_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json index 3aeb4203e4..ff6aba1a7a 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json @@ -39,7 +39,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_speed": [ "230" ], diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q1 Pro.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q1 Pro.json index c6e0b75c76..7a0387f859 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q1 Pro.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q1 Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "o9SQqZdG3BoviCAx", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json index 1aa6974b57..e59977ac1c 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QyCGFIxjMVprexDS", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json index 7a5d9d09aa..af40d35529 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "e0Mbd6kjHG3Tc7Zm", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json index f29ef5d037..e8640beb97 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QfqK00Ymn3ss9qtU", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json index 1eca5fc51b..c97620af69 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "YomLQtTbuHeQfrip", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json index 529864b872..16d7d96f97 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "M8F4v1shW7h3QyzC", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json index a9026d4c86..93b6d30ab5 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "g73f1lIj9eH0MZjW", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json index 7767956bb8..c5adf500e1 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "tAV9akzom1NHWPNJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json index 75bf45cef6..b09aa82c4e 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QvbM5h9XXrvsmdX6", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json index 4990f0d9f0..0bc4fd8252 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "lag9UwMZ0uLbg6P2", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi X3.json b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi X3.json index 555f8f19d0..3d88261b84 100644 --- a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi X3.json +++ b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi X3.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_qidi_x3_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q1 Pro.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q1 Pro.json index aa4f96eb58..a9245997d2 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q1 Pro.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q1 Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "D5MjSxw3jZYf2Nja", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json index d9ea812425..fa5d74ece1 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "xV59wYWbrstGW5c5", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json index cc97b6c1b8..1565426d32 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "96u0HvMr7kqleKBl", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json index d5237c4d37..0279d555da 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "gR2HeEDYyNSjL2K7", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json index a0dba6c233..f4f34baaa8 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "UA6RvPAtMfb2ryBL", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.30", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json index d4abe3eeb6..10a1ed451b 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "QECWa3aznaYRN11W", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json index 72754c9145..d115d557cf 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "jjrl5R7LpUXnxA8d", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json index 732f5aa155..16e6bc8ee2 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "TPJTTWCWFbrVv0bx", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json index 9825272cce..dd498c072d 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "PypLIvy1do9mp98q", "instantiation": "true", - "adaptive_layer_height": "1", "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json index 4e5d2e235c..462a355cf9 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "gzZakw9J3bzbD5D8", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json index 7622dd4325..a57a8f3f24 100644 --- a/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json @@ -53,7 +53,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.62", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json index 052f88bb4a..4e1a4b322f 100644 --- a/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json @@ -56,7 +56,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.82", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json index 4aa16d0e45..1589706881 100644 --- a/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json @@ -56,7 +56,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "4", "sparse_infill_line_width": "0.82", "sparse_infill_speed": [ "100" diff --git a/resources/profiles/Qidi/process/fdm_process_common.json b/resources/profiles/Qidi/process/fdm_process_common.json index 134d389c22..2216d70bd0 100644 --- a/resources/profiles/Qidi/process/fdm_process_common.json +++ b/resources/profiles/Qidi/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Qidi/process/fdm_process_n_common.json b/resources/profiles/Qidi/process/fdm_process_n_common.json index 629d64338d..599becff50 100644 --- a/resources/profiles/Qidi/process/fdm_process_n_common.json +++ b/resources/profiles/Qidi/process/fdm_process_n_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "apply_top_surface_compensation": "0", "avoid_crossing_wall_includes_support": "0", "bottom_color_penetration_layers": "3", @@ -70,7 +69,6 @@ "150" ], "interface_shells": "0", - "internal_bridge_support_thickness": "0.8", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": [ "150" @@ -105,9 +103,6 @@ "overhang_4_4_speed": [ "10" ], - "overhang_totally_speed": [ - "10" - ], "override_filament_scarf_seam_setting": "0", "prime_tower_width": "35", "print_sequence": "by layer", @@ -149,7 +144,6 @@ "small_perimeter_threshold": [ "4" ], - "smooth_coefficient": "90", "smooth_speed_discontinuity_area": "1", "sparse_infill_density": "15%", "sparse_infill_line_width": "0.45", diff --git a/resources/profiles/Qidi/process/fdm_process_qidi_common.json b/resources/profiles/Qidi/process/fdm_process_qidi_common.json index 3a7676e3fe..bf4d53c8ca 100644 --- a/resources/profiles/Qidi/process/fdm_process_qidi_common.json +++ b/resources/profiles/Qidi/process/fdm_process_qidi_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json index 176add07f7..2f044b9790 100644 --- a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json +++ b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -46,7 +45,6 @@ "infill_direction": "45", "sparse_infill_density": "15%", "sparse_infill_pattern": "grid", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/RH3D.json b/resources/profiles/RH3D.json index 4cb9ab573e..dbf9500ca0 100644 --- a/resources/profiles/RH3D.json +++ b/resources/profiles/RH3D.json @@ -1,6 +1,6 @@ { "name": "RH3D", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "RH3D - printer profiles", "machine_model_list": [ diff --git a/resources/profiles/RH3D/process/fdm_process_common.json b/resources/profiles/RH3D/process/fdm_process_common.json index 2cf6e41151..4f02e37fa6 100644 --- a/resources/profiles/RH3D/process/fdm_process_common.json +++ b/resources/profiles/RH3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonicline", @@ -86,7 +85,6 @@ "support_object_xy_distance": "0.4", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Raise3D.json b/resources/profiles/Raise3D.json index b224025f6d..5f98b967d4 100644 --- a/resources/profiles/Raise3D.json +++ b/resources/profiles/Raise3D.json @@ -1,7 +1,7 @@ { "name": "Raise3D", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Raise3D configurations", "machine_model_list": [ diff --git a/resources/profiles/Raise3D/machine/fdm_machine_common.json b/resources/profiles/Raise3D/machine/fdm_machine_common.json index b4aada4829..a2c7c89e17 100644 --- a/resources/profiles/Raise3D/machine/fdm_machine_common.json +++ b/resources/profiles/Raise3D/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3.json b/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3.json index 30d3f1cc61..8a6759c78a 100644 --- a/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3.json +++ b/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "mlb2242fJxu26dnV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.1", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3Plus.json b/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3Plus.json index 35e21d67e7..a288122e2e 100644 --- a/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3Plus.json +++ b/resources/profiles/Raise3D/process/0.10mm Fine @Raise3D Pro3Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "u9vhB9uigwzA2mli", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.1", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3.json b/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3.json index bdcccf16fb..a027a6d90c 100644 --- a/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3.json +++ b/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ADqZgpU4D612lSnf", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3Plus.json b/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3Plus.json index 7f88195b88..981c91f39a 100644 --- a/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3Plus.json +++ b/resources/profiles/Raise3D/process/0.20mm Standard @Raise3D Pro3Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "GhwsrGu8tZexCrOy", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3.json b/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3.json index 91e24b6ebf..4fd5df2d25 100644 --- a/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3.json +++ b/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "p0KdJttce5WMx30N", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3Plus.json b/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3Plus.json index d2d299ca64..ff1b0f158c 100644 --- a/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3Plus.json +++ b/resources/profiles/Raise3D/process/0.25mm Draft @Raise3D Pro3Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "tgWE9Ph7i1F7OweA", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Raise3D/process/fdm_process_common.json b/resources/profiles/Raise3D/process/fdm_process_common.json index 164ff9d58a..d3568a9bec 100644 --- a/resources/profiles/Raise3D/process/fdm_process_common.json +++ b/resources/profiles/Raise3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "10", diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index 09ce326368..743333f9aa 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -1,6 +1,6 @@ { "name": "RatRig", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "RatRig configurations", "machine_model_list": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json index 3b43d60a23..decababc1c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json index 71eb9724f9..c6cea0faf6 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json index 47cd8fba2f..e7b6ab132a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json index 4731e90901..bbe022e658 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json index 86963d7e73..8269490619 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json index 7b61ebe531..87aa3dd70d 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json index f2831e5919..9868dae17f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json index a14770104f..26a3f7fb1f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json index 1a477fb750..ce26c28226 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 300.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-300.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json index 327c56d036..ad2080aa77 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json index 2e72109e25..09e28665d4 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json index e6c7405f9a..f37a7eabca 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 400.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-400.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json index bc27a53e94..2169db2cbd 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 COPY MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500-clone-mode.stl", "bed_texture": "ratrig_logo_copy_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json index 3518748830..c8996519f6 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500 MIRROR MODE.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500-clone-mode.stl", "bed_texture": "ratrig_logo_mirror_mode.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json index 59ff011a82..3950a331e8 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 IDEX 500.json @@ -8,5 +8,5 @@ "bed_model": "ratrig-vcore-bed-500.stl", "bed_texture": "ratrig_logo.svg", "hotend_model": "", - "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig" + "default_materials": "Generic ABS @RatRig;Generic PLA @RatRig;Generic PLA-CF @RatRig;Generic PCTG @RatRig;Generic PETG @RatRig;Generic TPU @RatRig;Generic ASA @RatRig;Generic PC @RatRig;Generic PVA @RatRig;Generic PA @RatRig;Generic PA-CF @RatRig;Generic PLA @System" } diff --git a/resources/profiles/Ratrig/machine/fdm_klipper_common.json b/resources/profiles/Ratrig/machine/fdm_klipper_common.json index 28ad9ce02c..ecd93a2346 100644 --- a/resources/profiles/Ratrig/machine/fdm_klipper_common.json +++ b/resources/profiles/Ratrig/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "manual_filament_change": "1", "change_filament_gcode": "M600", diff --git a/resources/profiles/Ratrig/machine/fdm_machine_common.json b/resources/profiles/Ratrig/machine/fdm_machine_common.json index ad1efd697f..36f0b6ec55 100644 --- a/resources/profiles/Ratrig/machine/fdm_machine_common.json +++ b/resources/profiles/Ratrig/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Ratrig/process/fdm_process_common.json b/resources/profiles/Ratrig/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Ratrig/process/fdm_process_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index 65ccb82fa2..486cc31dd5 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common_idex.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common_idex.json index d17f7836a1..cd96b51721 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common_idex.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common_idex.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_idex.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_idex.json index 120b8835a5..72aa3cf9bc 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_idex.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_idex.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/RolohaunDesign.json b/resources/profiles/RolohaunDesign.json index 398937c127..e0b7a33301 100644 --- a/resources/profiles/RolohaunDesign.json +++ b/resources/profiles/RolohaunDesign.json @@ -1,6 +1,6 @@ { "name": "RolohaunDesign", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "RolohaunDesign Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/RolohaunDesign/machine/fdm_common_Rook MK1 LDO.json b/resources/profiles/RolohaunDesign/machine/fdm_common_Rook MK1 LDO.json index 8438cea7a1..a3c418d16b 100644 --- a/resources/profiles/RolohaunDesign/machine/fdm_common_Rook MK1 LDO.json +++ b/resources/profiles/RolohaunDesign/machine/fdm_common_Rook MK1 LDO.json @@ -117,7 +117,6 @@ "40" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/RolohaunDesign/machine/fdm_machine_common.json b/resources/profiles/RolohaunDesign/machine/fdm_machine_common.json index 11833be972..a07212bae7 100644 --- a/resources/profiles/RolohaunDesign/machine/fdm_machine_common.json +++ b/resources/profiles/RolohaunDesign/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/RolohaunDesign/process/fdm_process_common.json b/resources/profiles/RolohaunDesign/process/fdm_process_common.json index feb86df0e1..f37dc52e73 100644 --- a/resources/profiles/RolohaunDesign/process/fdm_process_common.json +++ b/resources/profiles/RolohaunDesign/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -84,7 +83,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/SecKit.json b/resources/profiles/SecKit.json index 42ac381eb6..91804bff0a 100644 --- a/resources/profiles/SecKit.json +++ b/resources/profiles/SecKit.json @@ -1,6 +1,6 @@ { "name": "SecKit", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "SecKit configurations", "machine_model_list": [ diff --git a/resources/profiles/SecKit/machine/fdm_klipper_common.json b/resources/profiles/SecKit/machine/fdm_klipper_common.json index 4bb08f7367..ed2826f9b4 100644 --- a/resources/profiles/SecKit/machine/fdm_klipper_common.json +++ b/resources/profiles/SecKit/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "120" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "M600", "machine_pause_gcode": "M601", diff --git a/resources/profiles/SecKit/machine/fdm_machine_common.json b/resources/profiles/SecKit/machine/fdm_machine_common.json index 010f5b7f8d..555c649235 100644 --- a/resources/profiles/SecKit/machine/fdm_machine_common.json +++ b/resources/profiles/SecKit/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "8000" ], diff --git a/resources/profiles/SecKit/process/fdm_process_common.json b/resources/profiles/SecKit/process/fdm_process_common.json index dc8cfe5838..11a4dc616e 100644 --- a/resources/profiles/SecKit/process/fdm_process_common.json +++ b/resources/profiles/SecKit/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/SecKit/process/fdm_process_seckit_common.json b/resources/profiles/SecKit/process/fdm_process_seckit_common.json index d5aca251f3..f29305479e 100644 --- a/resources/profiles/SecKit/process/fdm_process_seckit_common.json +++ b/resources/profiles/SecKit/process/fdm_process_seckit_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/SeeMeCNC.json b/resources/profiles/SeeMeCNC.json index 43a273d52c..21db5e4e3e 100644 --- a/resources/profiles/SeeMeCNC.json +++ b/resources/profiles/SeeMeCNC.json @@ -1,6 +1,6 @@ { "name": "SeeMeCNC", - "version": "2.4.0.04", + "version": "2.4.0.05", "force_update": "1", "description": "SeeMeCNC configurations - Full profile set for Artemis, BOSSdelta, and RostockMAX printers", "machine_model_list": [ diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_4mm.json index 4230dbffa0..23ccc8cd08 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC Artemis 300", "thumbnail": "SeeMeCNC Artemis 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_5mm.json index 4ed8e34f2a..f16bdf8620 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC Artemis 300", "thumbnail": "SeeMeCNC Artemis 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_7mm.json index 7e457fd6d4..7bf1733799 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC Artemis 300", "thumbnail": "SeeMeCNC Artemis 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_1_0mm.json index e6beab9437..68316ff085 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_Artemis_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC Artemis 300", "thumbnail": "SeeMeCNC Artemis 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_4mm.json index b3c0d66457..4709989e11 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0505", "thumbnail": "SeeMeCNC BOSSdelta 500 0505_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_5mm.json index 3171ed1d16..a09599a118 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0505", "thumbnail": "SeeMeCNC BOSSdelta 500 0505_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_7mm.json index 60aea06e56..a045d6acb6 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0505", "thumbnail": "SeeMeCNC BOSSdelta 500 0505_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_1_0mm.json index 52131a4df3..4fbdc6cdf0 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0505_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0505", "thumbnail": "SeeMeCNC BOSSdelta 500 0505_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_4mm.json index d9bbabfd46..1d40d2b7d8 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0510", "thumbnail": "SeeMeCNC BOSSdelta 500 0510_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_5mm.json index 48054cbc25..f007e2c307 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0510", "thumbnail": "SeeMeCNC BOSSdelta 500 0510_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_7mm.json index 60653bd138..ae455b50bc 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0510", "thumbnail": "SeeMeCNC BOSSdelta 500 0510_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_1_0mm.json index 29aab8351f..28a865c33e 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0510_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0510", "thumbnail": "SeeMeCNC BOSSdelta 500 0510_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_4mm.json index ca0c54be9b..6db1c32408 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0521", "thumbnail": "SeeMeCNC BOSSdelta 500 0521_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_5mm.json index e66ebbb170..0bba926946 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0521", "thumbnail": "SeeMeCNC BOSSdelta 500 0521_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_7mm.json index 33db8f630d..623edc7966 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0521", "thumbnail": "SeeMeCNC BOSSdelta 500 0521_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_1_0mm.json index 2b9d48d170..9f1b324a3b 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta500_0521_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 500 0521", "thumbnail": "SeeMeCNC BOSSdelta 500 0521_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_4mm.json index 765cbd623f..51ca348ee2 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 300", "thumbnail": "SeeMeCNC BOSSdelta 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_5mm.json index 20c6446d2e..78638f67ad 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 300", "thumbnail": "SeeMeCNC BOSSdelta 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_7mm.json index fc91f14b28..d3d58505ed 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 300", "thumbnail": "SeeMeCNC BOSSdelta 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_1_0mm.json index 01ab5d5a2a..c2ffdb20a0 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_BOSSdelta_300_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC BOSSdelta 300", "thumbnail": "SeeMeCNC BOSSdelta 300_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_4mm.json index 2b0a6a71ae..c53c7f7085 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v3.2", "thumbnail": "SeeMeCNC RostockMAX v3.2_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_5mm.json index b2ba2a38aa..3e8b24699f 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v3.2", "thumbnail": "SeeMeCNC RostockMAX v3.2_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_7mm.json index fae10fc27c..d1fd58da56 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v3.2", "thumbnail": "SeeMeCNC RostockMAX v3.2_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_1_0mm.json index f65c62f6fe..648c797d61 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v3.2_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v3.2", "thumbnail": "SeeMeCNC RostockMAX v3.2_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_4mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_4mm.json index 38c29c2462..39252fa29e 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_4mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_4mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v4", "thumbnail": "SeeMeCNC RostockMAX v4_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_5mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_5mm.json index f54bc1bcb6..f1dbfc5e2f 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_5mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_5mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v4", "thumbnail": "SeeMeCNC RostockMAX v4_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_7mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_7mm.json index 51cef23180..c7bce4faca 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_7mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_0_7mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v4", "thumbnail": "SeeMeCNC RostockMAX v4_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_1_0mm.json b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_1_0mm.json index 0342bbae65..f1ec174cf2 100644 --- a/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_1_0mm.json +++ b/resources/profiles/SeeMeCNC/machine/SeeMeCNC_RostockMAX_v4_1_0mm.json @@ -312,7 +312,6 @@ "60" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "1", "support_air_filtration": "1", "support_chamber_temp_control": "1", @@ -349,4 +348,4 @@ "model": "SeeMeCNC RostockMAX v4", "thumbnail": "SeeMeCNC RostockMAX v4_cover.png", "description": "SeeMeCNC configurations" -} \ No newline at end of file +} diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index d2309f6974..06acef0b0e 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.04.00.13", + "version": "02.04.00.15", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json index 48740f94bc..af8c929c82 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS @U1 base.json @@ -35,12 +35,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json index b75f8d84d3..409bbdd793 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA @U1 base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json index f421f08c94..21638631aa 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json @@ -43,12 +43,6 @@ "filament_unloading_speed": [ "25" ], - "filament_load_time": [ - "0" - ], - "filament_unload_time": [ - "0" - ], "filament_cooling_moves": [ "0" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json index 2629e15051..478a0195bd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json index 5f1f1bd74f..4344959e27 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json @@ -40,12 +40,6 @@ "filament_unloading_speed": [ "25" ], - "filament_load_time": [ - "0" - ], - "filament_unload_time": [ - "0" - ], "filament_cooling_moves": [ "0" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json index 7f54df76bb..fe567e1744 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json @@ -29,12 +29,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json index bdb539a065..46644cc06a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json @@ -17,12 +17,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json index 5390ffe222..de2e0c9765 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json @@ -29,12 +29,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json index 84cd37dfe7..4a93202495 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json index ea5c61eb3b..12b546ebb1 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json @@ -29,12 +29,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json index 5e8a40a8af..8e9a3b5f12 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json @@ -44,12 +44,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json index 1d8a6fe9ba..dff0922c5c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json @@ -20,12 +20,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json index 0f880ac980..86540058c8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json index 6838983e1b..9daad839c2 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json index 7080dddad1..3cb49e16e7 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json @@ -26,12 +26,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json index f2024f8ddf..1272b220a1 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json index d9b45b5f79..768a85d0db 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json index d9bc0f80ed..2fd81db581 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json @@ -17,12 +17,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json index 903ea5c744..327f146f45 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json @@ -17,12 +17,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json index 3d3e47b701..83a7666218 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json @@ -54,12 +54,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json index 62b54feb70..b402e7f76a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF @U1 base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json index 2dae11ec36..0741102696 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @U1 base.json @@ -26,12 +26,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json index ce0e7c8122..d081c6f9d8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG @U1 base.json @@ -32,12 +32,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json index 47869c9779..076dc7e2b9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @U1 base.json @@ -47,12 +47,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json index 5611cb34f3..3f41d5579e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA @U1 base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json index d6e7e209c6..e29003f72c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Basic @U1 base.json @@ -25,12 +25,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json index c305704269..67e0d74b2e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco @U1 base.json @@ -26,12 +26,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json index e69ca63254..97d2a7ea61 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Glow @U1 base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json index 21384a0567..9f4ff4b7f9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Lite @U1 base.json @@ -22,12 +22,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json index d8b3ebef60..31607ed7c6 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base.json @@ -22,12 +22,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json index 109dbc19e7..6c56447e5a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Matte @U1 base2.json @@ -25,12 +25,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json index 1db2d82548..87c26fdb09 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Metal @U1 base.json @@ -29,12 +29,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json index 37bc90db26..5f0ca9ed36 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @U1 base.json @@ -35,12 +35,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json index b87c48cbe5..5391a85078 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA SnapSpeed @U1 base.json @@ -22,12 +22,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json index 1ed79183c9..4b67d00391 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Translucent @U1 base.json @@ -23,12 +23,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json index 962c6fcccb..cfdfe78b74 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF @U1 base.json @@ -35,12 +35,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json index 206f024091..f2b2033dd9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA @U1 base.json @@ -20,12 +20,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json index 6ad1de856e..7a43d5715a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU @U1 base.json @@ -20,12 +20,6 @@ "filament_unloading_speed": [ "35" ], - "filament_load_time": [ - "2" - ], - "filament_unload_time": [ - "2" - ], "filament_cooling_moves": [ "2" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_common.json b/resources/profiles/Snapmaker/filament/fdm_filament_common.json index 04c0a64a6f..82b033cda5 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_common.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_common.json @@ -114,12 +114,6 @@ "filament_unloading_speed": [ "25" ], - "filament_load_time": [ - "0" - ], - "filament_unload_time": [ - "0" - ], "filament_toolchange_delay": [ "0" ], diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json index a6e55cb7bd..6a96cfb494 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "1921635482", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json index 3544179344..80ace374c7 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "1463587605", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json index 89845097d4..733d7096fb 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "3396626756", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json index f6c9ae9663..83e77458c1 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "2661871200", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json index a1c0587025..86085a641a 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "2728546690", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json index c28a8b0e39..937bf20bdd 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "3626883798", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json index a47a224e8f..dd0b5e8e46 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "3817522582", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250.json b/resources/profiles/Snapmaker/machine/Snapmaker A250.json index acdd0983c6..16a93e5957 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "261851393", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json index 69dbfea029..60a09d7519 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "3190019076", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json index b0d390f5e3..321002ad53 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "2326416016", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json index a2971119fb..6ca04fc169 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "1305649671", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json index 0154fcf801..7798d13413 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "61280022", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json index 5c7b9aede1..f18dc6cfcf 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "1846038812", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json index 0d780ef3d5..dd71d8312c 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "1133024953", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json index 433fffebef..80573646c4 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "4109488597", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350.json b/resources/profiles/Snapmaker/machine/Snapmaker A350.json index 231c8a7137..de5b92e6c5 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "240771894", + "default_materials": "PolyTerra PLA @0.2 nozzle;Snapmaker PLA", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json index 667d195628..e3a3f17c24 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "797581801", + "default_materials": "PolyTerra Dual PLA @0.2 nozzle;Snapmaker Dual PLA", "bed_model": "Snapmaker Artisan_bed.stl", "bed_texture": "Snapmaker Artisan_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker J1.json b/resources/profiles/Snapmaker/machine/Snapmaker J1.json index 46ef45fa15..087d33768f 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker J1.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker J1.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "https://github.com/macdylan", "model_id": "199828459", + "default_materials": "PolyTerra J1 PLA @0.2 nozzle;PolyTerra J1 PLA", "bed_model": "Snapmaker J1_bed.stl", "bed_texture": "Snapmaker J1_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker U1.json b/resources/profiles/Snapmaker/machine/Snapmaker U1.json index fb703f2e75..96eb53f81a 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker U1.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker U1.json @@ -5,6 +5,7 @@ "family": "Snapmaker", "url": "", "model_id": "797581801", + "default_materials": "Snapmaker PLA SnapSpeed @U1 0.2 nozzle;Panchroma PLA @Snapmaker U1;Generic PLA @System;Snapmaker PLA SnapSpeed @U1 0.6 nozzle;Snapmaker PLA SnapSpeed @U1 0.8 nozzle", "bed_model": "Snapmaker U1_bed.stl", "bed_texture": "Snapmaker U1_texture.svg", "nozzle_diameter": "0.2;0.4;0.4+0.6;0.6;0.8" diff --git a/resources/profiles/Snapmaker/machine/fdm_common.json b/resources/profiles/Snapmaker/machine/fdm_common.json index 50b8cb2cdd..fac7898ce3 100644 --- a/resources/profiles/Snapmaker/machine/fdm_common.json +++ b/resources/profiles/Snapmaker/machine/fdm_common.json @@ -7,7 +7,6 @@ "pause_gcode": "M600 ;pause print", "nozzle_type": "hardened_steel", "use_relative_e_distances": "1", - "silent_mode": "0", "auxiliary_fan": "0", "remaining_times": "1", "single_extruder_multi_material": "0", diff --git a/resources/profiles/Snapmaker/machine/fdm_klipper.json b/resources/profiles/Snapmaker/machine/fdm_klipper.json index ccb53f7e7d..ca389bdf37 100644 --- a/resources/profiles/Snapmaker/machine/fdm_klipper.json +++ b/resources/profiles/Snapmaker/machine/fdm_klipper.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Snapmaker/machine/fdm_toolchanger.json b/resources/profiles/Snapmaker/machine/fdm_toolchanger.json index 1b6a068387..aadd744bf0 100644 --- a/resources/profiles/Snapmaker/machine/fdm_toolchanger.json +++ b/resources/profiles/Snapmaker/machine/fdm_toolchanger.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Snapmaker/process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json index 3dec06228e..15546ce4bb 100644 --- a/resources/profiles/Snapmaker/process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.06 High Quality @Snapmaker U1 (0.2 nozzle).json @@ -11,8 +11,6 @@ "outer_wall_acceleration": "2000", "outer_wall_speed": "60", "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json index 7c80e048f6..3881460bda 100644 --- a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker U1 (0.2 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and results in minimal layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker U1 (0.4 nozzle).json index b8a8e126aa..0a3ba43c86 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "Tayg0K1WRyJMLoke", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json index 27d3903f06..2aeb309d58 100644 --- a/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.2 nozzle).json @@ -11,8 +11,6 @@ "outer_wall_acceleration": "2000", "outer_wall_speed": "60", "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.4 nozzle).json index 677e6742d9..107731b2cb 100644 --- a/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 High Quality @Snapmaker U1 (0.4 nozzle).json @@ -15,8 +15,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json index b4728bd60f..ea8c719085 100644 --- a/resources/profiles/Snapmaker/process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Standard @Snapmaker U1 (0.2 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and results in almost invisible layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json index 80b2120807..6fc26cd55f 100644 --- a/resources/profiles/Snapmaker/process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.10 High Quality @Snapmaker U1 (0.2 nozzle).json @@ -11,8 +11,6 @@ "outer_wall_acceleration": "2000", "outer_wall_speed": "60", "sparse_infill_pattern": "gyroid", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json index 80739205ac..d33ce1c083 100644 --- a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker U1 (0.2 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker U1 (0.4 nozzle).json index 2da54a6dc3..6de6d483da 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "xBU1j8ldOefYfosp", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.12 High Quality @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 High Quality @Snapmaker U1 (0.4 nozzle).json index 9302a40421..a5f215d7f3 100644 --- a/resources/profiles/Snapmaker/process/0.12 High Quality @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 High Quality @Snapmaker U1 (0.4 nozzle).json @@ -15,8 +15,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json index cc93a97e99..632d9614f7 100644 --- a/resources/profiles/Snapmaker/process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Standard @Snapmaker U1 (0.2 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer height, and results in almost negligible layer lines, and slightly shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json index 54513eb14b..0de823db1f 100644 --- a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker U1 (0.2 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and results in slightly visible layer lines, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.2 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.16 High Quality @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 High Quality @Snapmaker U1 (0.4 nozzle).json index 416d85881c..1306485d6f 100644 --- a/resources/profiles/Snapmaker/process/0.16 High Quality @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 High Quality @Snapmaker U1 (0.4 nozzle).json @@ -15,8 +15,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker U1 (0.4 nozzle).json index 6871a3e120..838f250e8c 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "ERcgRLp5bQo1hgz8", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json index 77b756bffc..88fbb33812 100644 --- a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.20 Quality @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Quality @Snapmaker U1 (0.4 nozzle).json index da92006d49..be894aa221 100644 --- a/resources/profiles/Snapmaker/process/0.20 Quality @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Quality @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "BBXxXQCXCme2Mvy0", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4 nozzle).json index 5d873d5efd..443afe55dd 100644 --- a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "XR5r9SuWmSag5Qjo", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json index 63bb6ea170..b4e22777e8 100644 --- a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.4+0.6 nozzle).json @@ -17,8 +17,6 @@ "internal_solid_infill_line_width": "105%", "support_line_width": "105%", "top_surface_line_width": "105%", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "prime_tower_width": "30", "slowdown_for_curled_perimeters": "0", diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json index d1bb174a62..5c87ff68d0 100644 --- a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Standard 0.2 mm layer height profile for the Snapmaker U1 with 0.6 mm nozzles. Balances print speed and surface quality for everyday prints.", "layer_height": "0.20", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker U1 (0.4 nozzle).json index 91c5995b92..1d051fc801 100644 --- a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker U1 (0.4 nozzle).json @@ -8,8 +8,6 @@ "description": "Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher sparse infill density. So, it results in higher strength of the prints, but more filament consumption and longer printing time.", "outer_wall_speed": "60", "sparse_infill_density": "25%", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "wall_loops": "6", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" diff --git a/resources/profiles/Snapmaker/process/0.20 Support @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Support @Snapmaker U1 (0.4 nozzle).json index 0cb85cc26d..577065ca3f 100644 --- a/resources/profiles/Snapmaker/process/0.20 Support @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Support @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "4whjHJVCN44w8SPE", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker U1 (0.4 nozzle).json index f98007b6e1..8e09376daf 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "MYRo7jTenu7F0Zv4", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but slightly shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json index 7a9f4e2154..2fa2eeabdb 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json index d9e1a2bf94..316bb0dbee 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker U1 (0.8 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker U1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker U1 (0.4 nozzle).json index 4382b11e41..8829efafdb 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker U1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker U1 (0.4 nozzle).json @@ -6,8 +6,6 @@ "setting_id": "0fSeyAIS6z75A1r3", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.4 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json index 52eb63a64d..defbc6740b 100644 --- a/resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Draft @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Fast draft profile for the Snapmaker U1 with 0.6 mm nozzles. 0.3 mm layer height for quick prototypes and functional parts.", "layer_height": "0.30", - "smooth_coefficient": "80", - "overhang_totally_speed": "40", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json index e2d5c192bb..92bebf6219 100644 --- a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json index c216eb09d2..f268a92446 100644 --- a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker U1 (0.6 nozzle).json @@ -9,8 +9,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json index d2c20559fd..de7559f827 100644 --- a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker U1 (0.8 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json index 44ea3bb3f4..6dc9f26329 100644 --- a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json index 37238fb0ea..b18e30c210 100644 --- a/resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.40 Extra Draft @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Maximum-speed profile for the Snapmaker U1 with 0.6 mm nozzles. 0.4 mm layer height for rapid prototyping where surface finish is not critical.", "layer_height": "0.40", - "smooth_coefficient": "80", - "overhang_totally_speed": "30", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json index 8d00eb9fab..b0cf935465 100644 --- a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker U1 (0.8 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json index d3e4bf7f07..eaa04faadc 100644 --- a/resources/profiles/Snapmaker/process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.42 Standard @Snapmaker U1 (0.6 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.6 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json index d6cdf607dd..599cf24db5 100644 --- a/resources/profiles/Snapmaker/process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.48 Standard @Snapmaker U1 (0.8 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json index 9f67114c20..ca728fe66a 100644 --- a/resources/profiles/Snapmaker/process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.56 Standard @Snapmaker U1 (0.8 nozzle).json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, and results in extremely apparent layer lines and much lower printing quality, but much shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Snapmaker U1 (0.8 nozzle)" ], diff --git a/resources/profiles/Snapmaker/process/fdm_process_U1.json b/resources/profiles/Snapmaker/process/fdm_process_U1.json index 72dab0c16b..4e0d7bf6e6 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_U1.json +++ b/resources/profiles/Snapmaker/process/fdm_process_U1.json @@ -3,7 +3,6 @@ "name": "fdm_process_U1", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", @@ -66,7 +65,5 @@ "prime_tower_width": "60", "xy_hole_compensation": "0", "xy_contour_compensation": "0", - "compatible_printers": [], - "smooth_coefficient": "80", - "overhang_totally_speed": "24" + "compatible_printers": [] } diff --git a/resources/profiles/Snapmaker/process/fdm_process_U1_common.json b/resources/profiles/Snapmaker/process/fdm_process_U1_common.json index 462ddb53ae..5240f242c4 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_U1_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_U1_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "30", diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index 458a0f6162..13e5825ebd 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "layer_height": "0.2", "initial_layer_print_height": "0.3", "line_width": "0.42", @@ -72,7 +71,6 @@ "infill_combination": "0", "detect_narrow_internal_solid_infill": "1", "ensure_vertical_shell_thickness": "1", - "internal_bridge_support_thickness": "0.8", "initial_layer_speed": "50", "initial_layer_infill_speed": "50", "initial_layer_travel_speed": "80%", @@ -86,7 +84,6 @@ "support_interface_speed": "50", "ironing_speed": "35", "enable_overhang_speed": "1", - "overhang_speed_classic": "0", "overhang_1_4_speed": "35", "overhang_2_4_speed": "25", "overhang_3_4_speed": "15", @@ -129,7 +126,6 @@ "tree_support_adaptive_layer_height": "1", "tree_support_auto_brim": "1", "tree_support_brim_width": "3", - "tree_support_with_infill": "0", "support_top_z_distance": "0.12", "support_bottom_z_distance": "0.12", "support_base_pattern": "rectilinear", diff --git a/resources/profiles/Sovol.json b/resources/profiles/Sovol.json index 9562873886..7f08417ed7 100644 --- a/resources/profiles/Sovol.json +++ b/resources/profiles/Sovol.json @@ -1,7 +1,7 @@ { "name": "Sovol", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Sovol configurations", "machine_model_list": [ diff --git a/resources/profiles/Sovol/machine/Sovol SV08 MAX.json b/resources/profiles/Sovol/machine/Sovol SV08 MAX.json index 92a92a9a1d..df4690f54b 100644 --- a/resources/profiles/Sovol/machine/Sovol SV08 MAX.json +++ b/resources/profiles/Sovol/machine/Sovol SV08 MAX.json @@ -8,5 +8,5 @@ "bed_model": "sovol_sv08_max_buildplate_model.stl", "bed_texture": "sovol_sv08_max_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic PLA;Generic PLA Silk;Generic ABS;Generic PETG;Polymaker PETG;SUNLU PETG;Generic TPU;Generic PC" + "default_materials": "Generic PLA @Sovol SV08 MAX;Generic PLA Silk @Sovol SV08 MAX;Generic ABS @Sovol SV08 MAX;Generic PETG @Sovol SV08 MAX;Polymaker PETG @Sovol SV08 MAX;SUNLU PETG @Sovol SV08 MAX;Generic TPU @Sovol SV08 MAX;Generic PC @Sovol SV08 MAX" } diff --git a/resources/profiles/Sovol/machine/fdm_machine_common.json b/resources/profiles/Sovol/machine/fdm_machine_common.json index 017b725d2e..0a804a2e5e 100644 --- a/resources/profiles/Sovol/machine/fdm_machine_common.json +++ b/resources/profiles/Sovol/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -113,7 +112,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "z_hop_types": "Normal Lift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Sovol/process/0.08mm High Quality @Sovol SV06 ACE 0.4 nozzle.json b/resources/profiles/Sovol/process/0.08mm High Quality @Sovol SV06 ACE 0.4 nozzle.json index 9d44b2f112..ebe3c8679f 100644 --- a/resources/profiles/Sovol/process/0.08mm High Quality @Sovol SV06 ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.08mm High Quality @Sovol SV06 ACE 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "WQqoRN1avqbX8Pgd", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.08", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.10mm Standard @Sovol SV08 0.2 nozzle.json b/resources/profiles/Sovol/process/0.10mm Standard @Sovol SV08 0.2 nozzle.json index 8ab14fe775..9718bacd69 100644 --- a/resources/profiles/Sovol/process/0.10mm Standard @Sovol SV08 0.2 nozzle.json +++ b/resources/profiles/Sovol/process/0.10mm Standard @Sovol SV08 0.2 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "sTiNnwPQInBM8oMT", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.10", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.12mm Quality @Sovol SV06 ACE 0.4 nozzle.json b/resources/profiles/Sovol/process/0.12mm Quality @Sovol SV06 ACE 0.4 nozzle.json index f95e107e59..fcc8cb2817 100644 --- a/resources/profiles/Sovol/process/0.12mm Quality @Sovol SV06 ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.12mm Quality @Sovol SV06 ACE 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "EGRlZsIz0TvybH5a", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.12mm Standard @Sovol SV06 ACE 0.2 nozzle.json b/resources/profiles/Sovol/process/0.12mm Standard @Sovol SV06 ACE 0.2 nozzle.json index 27723eb6fb..f4fc63ed23 100644 --- a/resources/profiles/Sovol/process/0.12mm Standard @Sovol SV06 ACE 0.2 nozzle.json +++ b/resources/profiles/Sovol/process/0.12mm Standard @Sovol SV06 ACE 0.2 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "1nAnGTBSg9NbEjRl", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV01Pro.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV01Pro.json index 5a9ceee897..2f41d5a509 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV01Pro.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV01Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "C5l9Xp7PFZJ8EUuI", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV02.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV02.json index b86f3c50ab..f46285f806 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV02.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV02.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "XGwpYXpDBGmz3IST", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV05.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV05.json index 3f5b032956..b4b0c6acaa 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV05.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV05.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "hx4TRRO93eAhKRlo", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06.json index 3c7bc35311..f23714d5aa 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "rDtPKzMhHP85acXh", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06Plus.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06Plus.json index ab14ae1852..1c62c68ea7 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06Plus.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV06Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "L1YTQWBe8jGxUG5n", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07.json index ca8fffec79..b11502689c 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "CCj4nI9LPvB6tBwv", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07Plus.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07Plus.json index 0f1251d22d..e84fae24b7 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07Plus.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV07Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Y7BQqmsJc3sCg5M4", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV08.json b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV08.json index a36b67382e..45a9e0f34d 100644 --- a/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV08.json +++ b/resources/profiles/Sovol/process/0.18mm Optimal @Sovol SV08.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dtNZVowJXglP0ygk", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm High-Speed @Sovol SV06.json b/resources/profiles/Sovol/process/0.20mm High-Speed @Sovol SV06.json index d4102b9521..bedd71ef41 100644 --- a/resources/profiles/Sovol/process/0.20mm High-Speed @Sovol SV06.json +++ b/resources/profiles/Sovol/process/0.20mm High-Speed @Sovol SV06.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "S1iAf6JiKSas9AMw", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01.json index a830bec966..56a3c7ad3e 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "CFwXlxanOmqsdA48", "name": "0.20mm Standard @Sovol SV01", - "from": "system", "inherits": "fdm_process_common", + "from": "system", + "setting_id": "CFwXlxanOmqsdA48", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01Pro.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01Pro.json index 4d7be1276a..298356b0a5 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01Pro.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV01Pro.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "i3AkK2cR13YkyVrJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV02.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV02.json index 65a6f16806..836581fbca 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV02.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV02.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ASEHMkWIP3Z7M6Eg", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV05.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV05.json index 529ffbc648..e53d0f99ee 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV05.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV05.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "qz3ogX30ClF0lLRt", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 ACE.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 ACE.json index 22efbbb514..44bd8afa66 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 ACE.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 ACE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "vJmKSRBaoZ7y02CV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 Plus ACE.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 Plus ACE.json index 39f9f21d9c..28c730ac6b 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 Plus ACE.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06 Plus ACE.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "7qkFiEhE4BGMZrDJ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06.json index 45d822eb85..b913b12187 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "cremVs4Sj00nBWtu", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06Plus.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06Plus.json index 700232a310..511c44ad5f 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06Plus.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV06Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "bku5PsptBdjUrbQ6", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07.json index 4781a94d88..865a30cb6d 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "D6GOAXI1isGTNnfb", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07Plus.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07Plus.json index 5e8957e16c..8d6484e7f8 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07Plus.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV07Plus.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "88ExWsak5lVw9qYZ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 0.4 nozzle.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 0.4 nozzle.json index 7178632118..84450ca0f0 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "v0m5eV5ZVA813MVP", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 MAX 0.4 nozzle.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 MAX 0.4 nozzle.json index 32cbc84429..c3da799594 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 MAX 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08 MAX 0.4 nozzle.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "sPSDTG9mKjIOuy4m", "name": "0.20mm Standard @Sovol SV08 MAX 0.4 nozzle", - "from": "system", "inherits": "fdm_process_common", + "from": "system", + "setting_id": "sPSDTG9mKjIOuy4m", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "100%", "layer_height": "0.20", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08.json index 3411f92dab..3584a15477 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol SV08.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "vYejAtfzNoeBDq00", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.20", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.20mm Standard @Sovol Zero 0.4 nozzle.json b/resources/profiles/Sovol/process/0.20mm Standard @Sovol Zero 0.4 nozzle.json index 6b1ea0db9a..323553beaa 100644 --- a/resources/profiles/Sovol/process/0.20mm Standard @Sovol Zero 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.20mm Standard @Sovol Zero 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "ShJTVnJ492No1j2j", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "1", "max_travel_detour_distance": "100%", "layer_height": "0.20", diff --git a/resources/profiles/Sovol/process/0.28mm Fast @Sovol SV06 ACE 0.4 nozzle.json b/resources/profiles/Sovol/process/0.28mm Fast @Sovol SV06 ACE 0.4 nozzle.json index 19862486c1..d4a0610587 100644 --- a/resources/profiles/Sovol/process/0.28mm Fast @Sovol SV06 ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/process/0.28mm Fast @Sovol SV06 ACE 0.4 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Ydon9OsrFa7A8L1F", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.28", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV06 ACE 0.6 nozzle.json b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV06 ACE 0.6 nozzle.json index 0b4210b7f3..39612b5a56 100644 --- a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV06 ACE 0.6 nozzle.json +++ b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV06 ACE 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "n7KDWYlaTDObslGp", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.30", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 0.6 nozzle.json b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 0.6 nozzle.json index aa4c3fb129..3b2cb68b92 100644 --- a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 0.6 nozzle.json +++ b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 0.6 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "VGWhB6OKWJrzkfrC", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.30", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 MAX 0.6 nozzle.json b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 MAX 0.6 nozzle.json index be242638fa..dc8d3df0ba 100644 --- a/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 MAX 0.6 nozzle.json +++ b/resources/profiles/Sovol/process/0.30mm Standard @Sovol SV08 MAX 0.6 nozzle.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "EhJl99Rdzr3bYnjW", "name": "0.30mm Standard @Sovol SV08 MAX 0.6 nozzle", - "from": "system", "inherits": "fdm_process_common", + "from": "system", + "setting_id": "EhJl99Rdzr3bYnjW", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "100%", "layer_height": "0.30", diff --git a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV06 ACE 0.8 nozzle.json b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV06 ACE 0.8 nozzle.json index 165d9817f9..964172accb 100644 --- a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV06 ACE 0.8 nozzle.json +++ b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV06 ACE 0.8 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "hkA5BT13eWBp5BKQ", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.40", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 0.8 nozzle.json b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 0.8 nozzle.json index ccb9e95529..10e154842a 100644 --- a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 0.8 nozzle.json +++ b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 0.8 nozzle.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "THLtL3Q597dBsUgK", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.40", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 MAX 0.8 nozzle.json b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 MAX 0.8 nozzle.json index e56135a018..20481d3719 100644 --- a/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 MAX 0.8 nozzle.json +++ b/resources/profiles/Sovol/process/0.40mm Standard @Sovol SV08 MAX 0.8 nozzle.json @@ -1,11 +1,10 @@ { "type": "process", - "setting_id": "5UL3y12LS7RXWO0d", "name": "0.40mm Standard @Sovol SV08 MAX 0.8 nozzle", - "from": "system", "inherits": "fdm_process_common", + "from": "system", + "setting_id": "5UL3y12LS7RXWO0d", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "max_travel_detour_distance": "100%", "layer_height": "0.40", diff --git a/resources/profiles/Sovol/process/fdm_process_common.json b/resources/profiles/Sovol/process/fdm_process_common.json index 0d9a2c994f..4f32e17501 100644 --- a/resources/profiles/Sovol/process/fdm_process_common.json +++ b/resources/profiles/Sovol/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Tiertime.json b/resources/profiles/Tiertime.json index 0aab493c03..a7efecf420 100644 --- a/resources/profiles/Tiertime.json +++ b/resources/profiles/Tiertime.json @@ -1,6 +1,6 @@ { "name": "Tiertime", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Tiertime configurations", "machine_model_list": [ diff --git a/resources/profiles/Tiertime/machine/Tiertime UP300 HS.json b/resources/profiles/Tiertime/machine/Tiertime UP300 HS.json index 7f937ef561..18e17f9b05 100644 --- a/resources/profiles/Tiertime/machine/Tiertime UP300 HS.json +++ b/resources/profiles/Tiertime/machine/Tiertime UP300 HS.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "Tiertime ABS;Tiertime PLA" + "default_materials": "Tiertime ABS;Tiertime PLA;Tiertime PLA@300HS" } diff --git a/resources/profiles/Tiertime/machine/Tiertime UP600 HS.json b/resources/profiles/Tiertime/machine/Tiertime UP600 HS.json index 0ae3b64d9a..cab3e4503c 100644 --- a/resources/profiles/Tiertime/machine/Tiertime UP600 HS.json +++ b/resources/profiles/Tiertime/machine/Tiertime UP600 HS.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "", "hotend_model": "", - "default_materials": "Tiertime ABS;Tiertime PLA" + "default_materials": "Tiertime ABS;Tiertime PLA;Tiertime PLA@300HS" } diff --git a/resources/profiles/Tiertime/machine/fdm_machine_common.json b/resources/profiles/Tiertime/machine/fdm_machine_common.json index d4a5c3be25..fbe40f97e3 100644 --- a/resources/profiles/Tiertime/machine/fdm_machine_common.json +++ b/resources/profiles/Tiertime/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Tiertime/machine/fdm_tiertime_common.json b/resources/profiles/Tiertime/machine/fdm_tiertime_common.json index de802f566a..66d1d1e858 100644 --- a/resources/profiles/Tiertime/machine/fdm_tiertime_common.json +++ b/resources/profiles/Tiertime/machine/fdm_tiertime_common.json @@ -1,9 +1,9 @@ { "type": "machine", "name": "fdm_tiertime_common", + "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", - "inherits": "fdm_machine_common", "gcode_flavor": "klipper", "machine_max_acceleration_e": [ "5000", @@ -117,15 +117,12 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ "1" ], - "default_filament_profile": [ - "" - ], + "default_filament_profile": [], "default_print_profile": "0.20mm Standard @Tiertime UP400 Pro", "bed_exclude_area": [ "0x0" diff --git a/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP400 Pro 0.6 nozzle.json index d9ef9fe332..53b0175f21 100644 --- a/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP600 HS 0.6 nozzle.json index 241b319114..902078336c 100644 --- a/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.18mm Fine @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP400 Pro 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP400 Pro 0.8 nozzle.json index c45c24b84a..81ab969572 100644 --- a/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP400 Pro 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP400 Pro 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP600 HS 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP600 HS 0.8 nozzle.json index 0eadac356d..d62180d9aa 100644 --- a/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP600 HS 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.24mm Fine @Tiertime UP600 HS 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP400 Pro 0.6 nozzle.json index abccc0329b..a2248af5dc 100644 --- a/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a balanced layer height for good quality and reasonable printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP600 HS 0.6 nozzle.json index 9e04a6e6b5..26b61969cc 100644 --- a/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.24mm Standard @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a balanced layer height for good quality and reasonable printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP400 Pro 0.6 nozzle.json index 34d74cb1ad..50635f3825 100644 --- a/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP600 HS 0.6 nozzle.json index 747872499e..95bffc096b 100644 --- a/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.30mm Standard @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP400 Pro 0.6 nozzle.json index 82e011345f..38a14009e4 100644 --- a/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height with optimized settings for stronger parts.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "sparse_infill_density": "25%", "wall_loops": "3", "compatible_printers": [ diff --git a/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP600 HS 0.6 nozzle.json index 03d21e34d1..41c823cfa7 100644 --- a/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.30mm Strength @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height with optimized settings for stronger parts.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "sparse_infill_density": "25%", "wall_loops": "3", "compatible_printers": [ diff --git a/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP400 Pro 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP400 Pro 0.8 nozzle.json index ff33334f90..f03358440b 100644 --- a/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP400 Pro 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP400 Pro 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a balanced layer height for good quality and reasonable printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP600 HS 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP600 HS 0.8 nozzle.json index 8eaeb571af..ffa7019f3d 100644 --- a/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP600 HS 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.32mm Standard @Tiertime UP600 HS 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a balanced layer height for good quality and reasonable printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP400 Pro 0.6 nozzle.json index 71090fa613..fc918c5c68 100644 --- a/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a bigger layer height for faster printing but with more visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP600 HS 0.6 nozzle.json index 5e192e28ee..45772b22a5 100644 --- a/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.36mm Draft @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a bigger layer height for faster printing but with more visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP400 Pro 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP400 Pro 0.8 nozzle.json index d3518d81d5..f308def5b4 100644 --- a/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP400 Pro 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP400 Pro 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP600 HS 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP600 HS 0.8 nozzle.json index ef0ee0040d..ae3b7dc3d3 100644 --- a/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP600 HS 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.40mm Standard @Tiertime UP600 HS 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP400 Pro 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP400 Pro 0.6 nozzle.json index 1e850801ca..3e06b09767 100644 --- a/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP400 Pro 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP400 Pro 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP600 HS 0.6 nozzle.json b/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP600 HS 0.6 nozzle.json index 7d2afaea09..dfa351b066 100644 --- a/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP600 HS 0.6 nozzle.json +++ b/resources/profiles/Tiertime/process/0.42mm Extra Draft @Tiertime UP600 HS 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.6 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP400 Pro 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP400 Pro 0.8 nozzle.json index f48c94c1b1..0e5575991d 100644 --- a/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP400 Pro 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP400 Pro 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a bigger layer height for faster printing but with more visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP600 HS 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP600 HS 0.8 nozzle.json index c09e4c24e8..34a9b0439b 100644 --- a/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP600 HS 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.48mm Draft @Tiertime UP600 HS 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a bigger layer height for faster printing but with more visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP400 Pro 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP400 Pro 0.8 nozzle.json index 4ba7a7af61..059ac43c3f 100644 --- a/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP400 Pro 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP400 Pro 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP400 Pro 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP600 HS 0.8 nozzle.json b/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP600 HS 0.8 nozzle.json index dab79b259d..54af1e8588 100644 --- a/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP600 HS 0.8 nozzle.json +++ b/resources/profiles/Tiertime/process/0.56mm Extra Draft @Tiertime UP600 HS 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Tiertime UP600 HS 0.8 nozzle" ] diff --git a/resources/profiles/Tiertime/process/fdm_process_common.json b/resources/profiles/Tiertime/process/fdm_process_common.json index ca4d181e78..26eb3a50a0 100644 --- a/resources/profiles/Tiertime/process/fdm_process_common.json +++ b/resources/profiles/Tiertime/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "50", diff --git a/resources/profiles/Tiertime/process/fdm_process_tiertime_common.json b/resources/profiles/Tiertime/process/fdm_process_tiertime_common.json index 3b0906e2e9..6cd3aa3014 100644 --- a/resources/profiles/Tiertime/process/fdm_process_tiertime_common.json +++ b/resources/profiles/Tiertime/process/fdm_process_tiertime_common.json @@ -21,7 +21,6 @@ "top_surface_acceleration": "2000", "initial_layer_acceleration": "500", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_line_width": "0.5", "initial_layer_speed": "50", "initial_layer_infill_speed": "90", diff --git a/resources/profiles/Tronxy.json b/resources/profiles/Tronxy.json index 32cf5ffa69..ac146b9850 100644 --- a/resources/profiles/Tronxy.json +++ b/resources/profiles/Tronxy.json @@ -1,6 +1,6 @@ { "name": "Tronxy", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Tronxy configurations", "machine_model_list": [ diff --git a/resources/profiles/Tronxy/machine/fdm_machine_common.json b/resources/profiles/Tronxy/machine/fdm_machine_common.json index fc02a60619..2ca47511d7 100644 --- a/resources/profiles/Tronxy/machine/fdm_machine_common.json +++ b/resources/profiles/Tronxy/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Tronxy/process/fdm_process_common.json b/resources/profiles/Tronxy/process/fdm_process_common.json index 8c2401bfb7..7f80f8bc79 100644 --- a/resources/profiles/Tronxy/process/fdm_process_common.json +++ b/resources/profiles/Tronxy/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Tronxy/process/fdm_process_tronxy_common.json b/resources/profiles/Tronxy/process/fdm_process_tronxy_common.json index beca23a8bb..940a5e590d 100644 --- a/resources/profiles/Tronxy/process/fdm_process_tronxy_common.json +++ b/resources/profiles/Tronxy/process/fdm_process_tronxy_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/TwoTrees.json b/resources/profiles/TwoTrees.json index 7817792c99..5d97581ffc 100644 --- a/resources/profiles/TwoTrees.json +++ b/resources/profiles/TwoTrees.json @@ -1,6 +1,6 @@ { "name": "TwoTrees", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "1", "description": "TwoTrees configurations", "machine_model_list": [ diff --git a/resources/profiles/TwoTrees/machine/TwoTrees SK1.json b/resources/profiles/TwoTrees/machine/TwoTrees SK1.json index 5674e7c408..a15fdfd12e 100644 --- a/resources/profiles/TwoTrees/machine/TwoTrees SK1.json +++ b/resources/profiles/TwoTrees/machine/TwoTrees SK1.json @@ -8,5 +8,5 @@ "bed_model": "TwoTrees SK1_buildplate_model.stl", "bed_texture": "TwoTrees SK1_buildplate_texture.svg", "hotend_model": "", - "default_materials": "Generic TPU 95A @TwoTrees SK1;TwoTrees Generic PETG @SK1;Generic HS PLA @TwoTrees SK1;TwoTrees Generic PLA @SK1;TwoTrees Generic PLA-CF @SK1;TwoTrees Generic PLA Matte @SK1;TwoTrees Generic PLA Silk @SK1" + "default_materials": "Generic TPU 95A @TwoTrees SK1;Generic PETG @System;Generic HS PLA @TwoTrees SK1;Generic PLA @System;Generic PLA-CF @System;Generic PLA Matte @System;Generic PLA Silk @System" } diff --git a/resources/profiles/TwoTrees/machine/TwoTrees SP-5 Klipper.json b/resources/profiles/TwoTrees/machine/TwoTrees SP-5 Klipper.json index a1e8548b5b..cde6900374 100644 --- a/resources/profiles/TwoTrees/machine/TwoTrees SP-5 Klipper.json +++ b/resources/profiles/TwoTrees/machine/TwoTrees SP-5 Klipper.json @@ -8,5 +8,5 @@ "bed_model": "SP-5_bed.stl", "bed_texture": "SP-5_texture.svg", "hotend_model": "", - "default_materials": "TwoTrees Generic ABS;TwoTrees Generic PLA;TwoTrees Generic PLA-CF;TwoTrees Generic PETG;TwoTrees Generic TPU;TwoTrees Generic ASA;TwoTrees Generic PC;TwoTrees Generic PVA;TwoTrees Generic PA;TwoTrees 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/TwoTrees/machine/fdm_klipper_common.json b/resources/profiles/TwoTrees/machine/fdm_klipper_common.json index ce04b2d6e8..596334cf2e 100644 --- a/resources/profiles/TwoTrees/machine/fdm_klipper_common.json +++ b/resources/profiles/TwoTrees/machine/fdm_klipper_common.json @@ -118,7 +118,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE\n", @@ -126,7 +125,7 @@ "1" ], "default_filament_profile": [ - "TwoTrees Generic PLA" + "Generic PLA @System" ], "bed_exclude_area": [ "0x0" diff --git a/resources/profiles/TwoTrees/machine/fdm_machine_common.json b/resources/profiles/TwoTrees/machine/fdm_machine_common.json index fc02a60619..2ca47511d7 100644 --- a/resources/profiles/TwoTrees/machine/fdm_machine_common.json +++ b/resources/profiles/TwoTrees/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/TwoTrees/process/fdm_process_TwoTrees_common.json b/resources/profiles/TwoTrees/process/fdm_process_TwoTrees_common.json index db4e413741..bcfdfdbb66 100644 --- a/resources/profiles/TwoTrees/process/fdm_process_TwoTrees_common.json +++ b/resources/profiles/TwoTrees/process/fdm_process_TwoTrees_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/TwoTrees/process/fdm_process_common.json b/resources/profiles/TwoTrees/process/fdm_process_common.json index c769a23e7c..651e12c439 100644 --- a/resources/profiles/TwoTrees/process/fdm_process_common.json +++ b/resources/profiles/TwoTrees/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/UltiMaker.json b/resources/profiles/UltiMaker.json index da2b5442a1..52daf03cec 100644 --- a/resources/profiles/UltiMaker.json +++ b/resources/profiles/UltiMaker.json @@ -1,7 +1,7 @@ { "name": "UltiMaker", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "UltiMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/UltiMaker/machine/fdm_machine_common.json b/resources/profiles/UltiMaker/machine/fdm_machine_common.json index bcb191c0b1..035efc68ba 100644 --- a/resources/profiles/UltiMaker/machine/fdm_machine_common.json +++ b/resources/profiles/UltiMaker/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "10000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json index 02e0127bef..a71eed1b78 100644 --- a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "4iVomDxutraufw6B", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.12", "max_travel_detour_distance": "0", diff --git a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json index 8c5596cfab..5026572ee8 100644 --- a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "Mo2NUdUehA5y4OwV", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.18", "max_travel_detour_distance": "0", diff --git a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json index 7df1292a9d..bd77f960ac 100644 --- a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "dBum79P8qUSRgT90", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/UltiMaker/process/fdm_process_common.json b/resources/profiles/UltiMaker/process/fdm_process_common.json index 99fcd508d0..45c9bcf236 100644 --- a/resources/profiles/UltiMaker/process/fdm_process_common.json +++ b/resources/profiles/UltiMaker/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Vivedino.json b/resources/profiles/Vivedino.json index bd7228a295..c8f6b65c3e 100644 --- a/resources/profiles/Vivedino.json +++ b/resources/profiles/Vivedino.json @@ -1,6 +1,6 @@ { "name": "Vivedino", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Vivedino configurations", "machine_model_list": [ diff --git a/resources/profiles/Vivedino/machine/fdm_klipper_common.json b/resources/profiles/Vivedino/machine/fdm_klipper_common.json index 23bfda64f1..3712765b66 100644 --- a/resources/profiles/Vivedino/machine/fdm_klipper_common.json +++ b/resources/profiles/Vivedino/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "wipe": [ diff --git a/resources/profiles/Vivedino/machine/fdm_machine_common.json b/resources/profiles/Vivedino/machine/fdm_machine_common.json index 3c5f92be16..7b8f13e442 100644 --- a/resources/profiles/Vivedino/machine/fdm_machine_common.json +++ b/resources/profiles/Vivedino/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Vivedino/machine/fdm_rrf_common.json b/resources/profiles/Vivedino/machine/fdm_rrf_common.json index b639ec3fd7..08fd49e3ad 100644 --- a/resources/profiles/Vivedino/machine/fdm_rrf_common.json +++ b/resources/profiles/Vivedino/machine/fdm_rrf_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE\n", diff --git a/resources/profiles/Vivedino/process/fdm_process_common.json b/resources/profiles/Vivedino/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Vivedino/process/fdm_process_common.json +++ b/resources/profiles/Vivedino/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Vivedino/process/fdm_process_klipper_common.json b/resources/profiles/Vivedino/process/fdm_process_klipper_common.json index 9736bc5c0d..a10193f25a 100644 --- a/resources/profiles/Vivedino/process/fdm_process_klipper_common.json +++ b/resources/profiles/Vivedino/process/fdm_process_klipper_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Volumic.json b/resources/profiles/Volumic.json index af7aa294bc..7923f2d92f 100644 --- a/resources/profiles/Volumic.json +++ b/resources/profiles/Volumic.json @@ -1,6 +1,6 @@ { "name": "Volumic", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "1", "description": "VOLUMIC configurations", "machine_model_list": [ diff --git a/resources/profiles/Volumic/machine/EXO42 IDRE.json b/resources/profiles/Volumic/machine/EXO42 IDRE.json index ad6ad5ba44..185924e798 100644 --- a/resources/profiles/Volumic/machine/EXO42 IDRE.json +++ b/resources/profiles/Volumic/machine/EXO42 IDRE.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "EXO42_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/EXO42 Performance.json b/resources/profiles/Volumic/machine/EXO42 Performance.json index 14979aca7c..0ae9738e0e 100644 --- a/resources/profiles/Volumic/machine/EXO42 Performance.json +++ b/resources/profiles/Volumic/machine/EXO42 Performance.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "EXO42_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/EXO65 IDRE.json b/resources/profiles/Volumic/machine/EXO65 IDRE.json index 4d6060a134..3532466902 100644 --- a/resources/profiles/Volumic/machine/EXO65 IDRE.json +++ b/resources/profiles/Volumic/machine/EXO65 IDRE.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "EXO65_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/EXO65 Performance.json b/resources/profiles/Volumic/machine/EXO65 Performance.json index c34582d5f0..4e1ffaa2b0 100644 --- a/resources/profiles/Volumic/machine/EXO65 Performance.json +++ b/resources/profiles/Volumic/machine/EXO65 Performance.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "EXO65_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/SH65 IDRE.json b/resources/profiles/Volumic/machine/SH65 IDRE.json index ee9d97b97f..79c2fee79c 100644 --- a/resources/profiles/Volumic/machine/SH65 IDRE.json +++ b/resources/profiles/Volumic/machine/SH65 IDRE.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "SH65_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/SH65 Performance.json b/resources/profiles/Volumic/machine/SH65 Performance.json index b5e4eb2bf0..4091b52b93 100644 --- a/resources/profiles/Volumic/machine/SH65 Performance.json +++ b/resources/profiles/Volumic/machine/SH65 Performance.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "SH65_bed.STL", - "default_materials": "Volumic PLA Ultra" + "default_materials": "Volumic PLA Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/VS30SC2 Performance.json b/resources/profiles/Volumic/machine/VS30SC2 Performance.json index 93f1ac8c28..74fa8c1fc8 100644 --- a/resources/profiles/Volumic/machine/VS30SC2 Performance.json +++ b/resources/profiles/Volumic/machine/VS30SC2 Performance.json @@ -6,5 +6,5 @@ "machine_tech": "FFF", "family": "VOLUMIC", "bed_model": "VS30U_bed.STL", - "default_materials": "Volumic UNIVERSAL Ultra" + "default_materials": "Volumic UNIVERSAL Ultra;Volumic PLA Ultra (Performance)" } diff --git a/resources/profiles/Volumic/machine/fdm_volumic_common.json b/resources/profiles/Volumic/machine/fdm_volumic_common.json index a0f8a16b48..59a9facfde 100644 --- a/resources/profiles/Volumic/machine/fdm_volumic_common.json +++ b/resources/profiles/Volumic/machine/fdm_volumic_common.json @@ -31,7 +31,6 @@ "retraction_speed": [ "30" ], - "silent_mode": "0", "machine_max_acceleration_e": [ "0", "0" diff --git a/resources/profiles/Volumic/process/fdm_process_volumic_common.json b/resources/profiles/Volumic/process/fdm_process_volumic_common.json index 52dfcb1eb8..5a7ff0840a 100644 --- a/resources/profiles/Volumic/process/fdm_process_volumic_common.json +++ b/resources/profiles/Volumic/process/fdm_process_volumic_common.json @@ -5,7 +5,6 @@ "instantiation": "false", "precise_outer_wall": "1", "enable_overhang_speed": "1", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "max_travel_detour_distance": "0", "extra_perimeters_on_overhangs": "1", diff --git a/resources/profiles/Voron.json b/resources/profiles/Voron.json index 74df754a9d..9f6f785ad7 100644 --- a/resources/profiles/Voron.json +++ b/resources/profiles/Voron.json @@ -1,6 +1,6 @@ { "name": "Voron", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Voron configurations", "machine_model_list": [ diff --git a/resources/profiles/Voron/machine/fdm_klipper_common.json b/resources/profiles/Voron/machine/fdm_klipper_common.json index b4ffd1a4bb..4eedd71412 100644 --- a/resources/profiles/Voron/machine/fdm_klipper_common.json +++ b/resources/profiles/Voron/machine/fdm_klipper_common.json @@ -117,7 +117,6 @@ "30" ], "z_hop_types": "Slope Lift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE", diff --git a/resources/profiles/Voron/machine/fdm_machine_common.json b/resources/profiles/Voron/machine/fdm_machine_common.json index 921560eee8..f7f0f31d7e 100644 --- a/resources/profiles/Voron/machine/fdm_machine_common.json +++ b/resources/profiles/Voron/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Voron/process/fdm_process_common.json b/resources/profiles/Voron/process/fdm_process_common.json index d8955e2bfb..c118c4a2c9 100644 --- a/resources/profiles/Voron/process/fdm_process_common.json +++ b/resources/profiles/Voron/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Voron/process/fdm_process_voron_common.json b/resources/profiles/Voron/process/fdm_process_voron_common.json index f5ad2128d0..d06e0e7e9a 100644 --- a/resources/profiles/Voron/process/fdm_process_voron_common.json +++ b/resources/profiles/Voron/process/fdm_process_voron_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Voxelab.json b/resources/profiles/Voxelab.json index 758b9d0cd3..6d1fa00061 100644 --- a/resources/profiles/Voxelab.json +++ b/resources/profiles/Voxelab.json @@ -1,7 +1,7 @@ { "name": "Voxelab", "url": "", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Voxelab configurations", "machine_model_list": [ diff --git a/resources/profiles/Voxelab/machine/fdm_machine_common.json b/resources/profiles/Voxelab/machine/fdm_machine_common.json index b4aada4829..a2c7c89e17 100644 --- a/resources/profiles/Voxelab/machine/fdm_machine_common.json +++ b/resources/profiles/Voxelab/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", "machine_start_gcode": "", diff --git a/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json b/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json index f595e8b16b..29a42d75ec 100644 --- a/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json +++ b/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "xCSbqEmBX0IB51ZS", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.16", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json b/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json index 97d049eb14..ec6f76816d 100644 --- a/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json +++ b/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json @@ -5,7 +5,6 @@ "from": "system", "setting_id": "DbIfKn2knpsOQT7H", "instantiation": "true", - "adaptive_layer_height": "1", "reduce_crossing_wall": "0", "layer_height": "0.2", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Voxelab/process/fdm_process_common.json b/resources/profiles/Voxelab/process/fdm_process_common.json index 99fcd508d0..45c9bcf236 100644 --- a/resources/profiles/Voxelab/process/fdm_process_common.json +++ b/resources/profiles/Voxelab/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Vzbot.json b/resources/profiles/Vzbot.json index bcefdaf26c..a64b4807e8 100644 --- a/resources/profiles/Vzbot.json +++ b/resources/profiles/Vzbot.json @@ -1,6 +1,6 @@ { "name": "Vzbot", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Vzbot configurations", "machine_model_list": [ diff --git a/resources/profiles/Vzbot/machine/fdm_klipper_common.json b/resources/profiles/Vzbot/machine/fdm_klipper_common.json index 97e546f272..26bac7d0f3 100644 --- a/resources/profiles/Vzbot/machine/fdm_klipper_common.json +++ b/resources/profiles/Vzbot/machine/fdm_klipper_common.json @@ -116,8 +116,6 @@ "deretraction_speed": [ "80" ], - "z_lift_type": "NormalLift", - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "PAUSE\n", diff --git a/resources/profiles/Vzbot/machine/fdm_machine_common.json b/resources/profiles/Vzbot/machine/fdm_machine_common.json index 7c66fd5988..407e718f94 100644 --- a/resources/profiles/Vzbot/machine/fdm_machine_common.json +++ b/resources/profiles/Vzbot/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], diff --git a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json index dc8a25695d..de407b2612 100644 --- a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json +++ b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.5_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.5_nozzle.json index 110151e4f8..f5b58f9df2 100644 --- a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.5_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.5_nozzle.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common_0.5_nozzle", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.6_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.6_nozzle.json index 7375f8d03f..3d0a6667be 100644 --- a/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.6_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_Vzbot_common_0.6_nozzle.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common_0.6_nozzle", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/Vzbot/process/fdm_process_common.json b/resources/profiles/Vzbot/process/fdm_process_common.json index d8955e2bfb..c118c4a2c9 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common.json +++ b/resources/profiles/Vzbot/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json index d07534d8b5..30b508b5ad 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_common_0.5_nozzle.json @@ -3,7 +3,6 @@ "name": "fdm_process_common_0.5_nozzle", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "150", diff --git a/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json b/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json index 8d0c3ec113..f61615dd8c 100644 --- a/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json +++ b/resources/profiles/Vzbot/process/fdm_process_common_0.6_nozzle.json @@ -3,7 +3,6 @@ "name": "fdm_process_common_0.6_nozzle", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "150", diff --git a/resources/profiles/WEMAKE3D.json b/resources/profiles/WEMAKE3D.json index 399d342641..feeeba132b 100644 --- a/resources/profiles/WEMAKE3D.json +++ b/resources/profiles/WEMAKE3D.json @@ -1,6 +1,6 @@ { "name": "WEMAKE3D", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "WEMAKE3D configurations", "machine_model_list": [ diff --git a/resources/profiles/WEMAKE3D/process/fdm_process_common.json b/resources/profiles/WEMAKE3D/process/fdm_process_common.json index 3708fca48b..1dc5f32da4 100644 --- a/resources/profiles/WEMAKE3D/process/fdm_process_common.json +++ b/resources/profiles/WEMAKE3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -92,7 +91,6 @@ "support_top_z_distance": "0.275", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/Wanhao France.json b/resources/profiles/Wanhao France.json index ce18d5c5d0..9087899761 100644 --- a/resources/profiles/Wanhao France.json +++ b/resources/profiles/Wanhao France.json @@ -1,6 +1,6 @@ { "name": "Wanhao France", - "version": "02.04.00.03", + "version": "02.04.00.05", "force_update": "0", "description": "Wanhao France D12 configurations", "machine_model_list": [ diff --git a/resources/profiles/Wanhao France/filament/YUMI PETG.json b/resources/profiles/Wanhao France/filament/YUMI PETG.json index 9d1bf0288a..7495416e39 100644 --- a/resources/profiles/Wanhao France/filament/YUMI PETG.json +++ b/resources/profiles/Wanhao France/filament/YUMI PETG.json @@ -108,9 +108,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "42" - ], "filament_loading_speed": [ "0" ], @@ -180,9 +177,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "0" ], diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json index b15cecc588..366c7b8ad8 100644 --- a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -8,7 +8,7 @@ "printer_model": "D12 230 PRO SMARTPAD DIRECT", "default_print_profile": "0.20mm Standard @Wanhao-D12-230", "default_filament_profile": [ - "Direct Drive" + "YUMI PLA Direct Drive" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", "change_filament_gcode": "M600", diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json index 88fc2fa519..f7308b5838 100644 --- a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json @@ -26,7 +26,7 @@ "auxiliary_fan": "0", "printer_variant": "0.4", "default_filament_profile": [ - "Direct Drive" + "YUMI PLA Direct Drive" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", "change_filament_gcode": "M600", diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json index 5795ec87f1..81e3bfe34b 100644 --- a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -22,7 +22,7 @@ "auxiliary_fan": "0", "printer_variant": "0.4", "default_filament_profile": [ - "Direct Drive" + "YUMI PLA Direct Drive" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", "change_filament_gcode": "M600", diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json index d49638c216..916c24cef6 100644 --- a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json @@ -22,7 +22,7 @@ "auxiliary_fan": "0", "printer_variant": "0.4", "default_filament_profile": [ - "Direct Drive" + "YUMI PLA Direct Drive" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", "change_filament_gcode": "M600", diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json index 4b41bbee33..d79e811b91 100644 --- a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -22,7 +22,7 @@ "auxiliary_fan": "0", "printer_variant": "0.4", "default_filament_profile": [ - "Direct Drive" + "YUMI PLA Direct Drive" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", "change_filament_gcode": "M600", diff --git a/resources/profiles/Wanhao France/machine/fdm_machine_common.json b/resources/profiles/Wanhao France/machine/fdm_machine_common.json index 38881092e1..e72b821fa1 100644 --- a/resources/profiles/Wanhao France/machine/fdm_machine_common.json +++ b/resources/profiles/Wanhao France/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "support_chamber_temp_control": "0", "support_air_filtration": "0", "machine_max_acceleration_e": [ diff --git a/resources/profiles/Wanhao France/process/fdm_process_common.json b/resources/profiles/Wanhao France/process/fdm_process_common.json index fb15ba32dd..ce18f8a69a 100644 --- a/resources/profiles/Wanhao France/process/fdm_process_common.json +++ b/resources/profiles/Wanhao France/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Wanhao.json b/resources/profiles/Wanhao.json index d534a75d8b..81afe3eff5 100644 --- a/resources/profiles/Wanhao.json +++ b/resources/profiles/Wanhao.json @@ -1,6 +1,6 @@ { "name": "Wanhao", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Wanhao configurations", "machine_model_list": [ diff --git a/resources/profiles/Wanhao/machine/fdm_machine_common.json b/resources/profiles/Wanhao/machine/fdm_machine_common.json index 20d52ddf93..654d066697 100644 --- a/resources/profiles/Wanhao/machine/fdm_machine_common.json +++ b/resources/profiles/Wanhao/machine/fdm_machine_common.json @@ -14,7 +14,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -110,7 +109,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle", "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" diff --git a/resources/profiles/Wanhao/machine/fdm_wanhao_common.json b/resources/profiles/Wanhao/machine/fdm_wanhao_common.json index 90c105b44d..0b8e77b013 100644 --- a/resources/profiles/Wanhao/machine/fdm_wanhao_common.json +++ b/resources/profiles/Wanhao/machine/fdm_wanhao_common.json @@ -116,7 +116,6 @@ "deretraction_speed": [ "40" ], - "silent_mode": "0", "single_extruder_multi_material": "1", "change_filament_gcode": "", "machine_pause_gcode": "M25 ;pause print", diff --git a/resources/profiles/Wanhao/process/fdm_process_common.json b/resources/profiles/Wanhao/process/fdm_process_common.json index a3fe34bea4..d7da41458a 100644 --- a/resources/profiles/Wanhao/process/fdm_process_common.json +++ b/resources/profiles/Wanhao/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", diff --git a/resources/profiles/Wanhao/process/fdm_process_wanhao_common.json b/resources/profiles/Wanhao/process/fdm_process_wanhao_common.json index f3ec727575..d8b026f624 100644 --- a/resources/profiles/Wanhao/process/fdm_process_wanhao_common.json +++ b/resources/profiles/Wanhao/process/fdm_process_wanhao_common.json @@ -4,7 +4,6 @@ "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", diff --git a/resources/profiles/WonderMaker.json b/resources/profiles/WonderMaker.json index 0eeffdb045..35a1b5c8fa 100755 --- a/resources/profiles/WonderMaker.json +++ b/resources/profiles/WonderMaker.json @@ -1,7 +1,7 @@ { "name": "WonderMaker", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "WonderMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/WonderMaker/machine/fdm_machine_common.json b/resources/profiles/WonderMaker/machine/fdm_machine_common.json index 6e812d4a1a..3fc194fe33 100755 --- a/resources/profiles/WonderMaker/machine/fdm_machine_common.json +++ b/resources/profiles/WonderMaker/machine/fdm_machine_common.json @@ -20,7 +20,6 @@ "0x0" ], "gcode_flavor": "klipper", - "silent_mode": "0", "long_retractions_when_cut": [ "0" ], diff --git a/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR 0.2 nozzle.json index 0b113f9f01..231a6d61b5 100755 --- a/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and results in minimal layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.2 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR Ultra 0.2 nozzle.json index 27b1b48eca..400c52194c 100755 --- a/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.06mm Fine @WonderMaker ZR Ultra 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of 0.2 mm nozzle, it has a smaller layer height, and results in minimal layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR Ultra.json index 7b393336df..840a438931 100755 --- a/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "S9bZmEeAYQKyQW6v", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR.json index 1f4a7fed3b..51c704a726 100755 --- a/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.08mm Extra Fine @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "MDzBBVuT9evcSDUx", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR 0.2 nozzle.json index 4713c9c6ef..1e32bc43f8 100755 --- a/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and results in almost invisible layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.2 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR Ultra 0.2 nozzle.json index 422b17646b..b2e1739b53 100755 --- a/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.08mm Optimal @WonderMaker ZR Ultra 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer height, and results in almost invisible layer lines and higher printing quality, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR 0.2 nozzle.json index 1c298bcab0..d8db56e028 100755 --- a/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.2 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle.json index eeddb0e9f8..f83e6254f7 100755 --- a/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR 0.2 nozzle.json index a1275857de..954e3ae8ed 100755 --- a/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer height, and results in almost negligible layer lines, and slightly shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.2 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR Ultra 0.2 nozzle.json index f9a1aedca2..7f4a704c05 100755 --- a/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.12mm Draft @WonderMaker ZR Ultra 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger layer height, and results in almost negligible layer lines, and slightly shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR Ultra.json index f270e60327..a5b2aa0d55 100755 --- a/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "bSzDzVfhYbOfsvrm", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR.json index 1e0fd84bfd..cb96ef20a9 100755 --- a/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.12mm Fine @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "RNjDYmMvSgIjaGUB", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR 0.2 nozzle.json index 5c24551f11..9fb20debdd 100755 --- a/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and results in slightly visible layer lines, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.2 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR Ultra 0.2 nozzle.json index d10132d333..3eb2a453ff 100755 --- a/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.14mm Extra Draft @WonderMaker ZR Ultra 0.2 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer height, and results in slightly visible layer lines, but shorter printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR Ultra.json index 49e6dee9e5..33adc94625 100755 --- a/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "CJRH0KVoqMhAKf7b", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR.json index d6837e19f2..fef4b0de51 100755 --- a/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.16mm Optimal @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "Gq8p7VLck61epJRQ", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR 0.6 nozzle.json index 5ac88d7e8c..97c2009db6 100755 --- a/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.6 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR Ultra 0.6 nozzle.json index b3c7bc33da..82699880de 100755 --- a/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.18mm Fine @WonderMaker ZR Ultra 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR Ultra.json index 88320865b2..0655aa9194 100755 --- a/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "5UnvGUSJUfxiX3Oh", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR.json index da46084462..fcfeabbcd9 100755 --- a/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.20mm Standard @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "nalI7H3j0Qhs6qig", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR Ultra.json index 0c33e1a7f1..0463b259bd 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "hSxtB6qUwhhTkAtv", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but slightly shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR.json index f0b4ba5369..f56e519bef 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.24mm Draft @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "ptoXhTDH4PGy8H4w", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but slightly shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR 0.8 nozzle.json index 0808b7056e..764c717695 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.8 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR Ultra 0.8 nozzle.json index 433cc33740..70a708ba46 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.24mm Fine @WonderMaker ZR Ultra 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR 0.6 nozzle.json index ec5029b95a..b21d155153 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.6 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR Ultra 0.6 nozzle.json index e31b67eb36..f9667fface 100755 --- a/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.24mm Optimal @WonderMaker ZR Ultra 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR Ultra.json b/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR Ultra.json index 52b01c70c4..1785ba49f5 100755 --- a/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR Ultra.json +++ b/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR Ultra.json @@ -6,8 +6,6 @@ "setting_id": "sGfFFynEl5ot8fzq", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR.json b/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR.json index 3c61b187bf..e598576f17 100755 --- a/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR.json +++ b/resources/profiles/WonderMaker/process/0.28mm Extra Draft @WonderMaker ZR.json @@ -6,8 +6,6 @@ "setting_id": "cns9NtEbZzQRnUOq", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.4 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR 0.6 nozzle.json index 3818aa0c7f..45bc88f11c 100755 --- a/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.6 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle.json index 35257448ee..749427287a 100755 --- a/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR 0.8 nozzle.json index 01040bc97d..5117bec5c7 100755 --- a/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.8 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR Ultra 0.8 nozzle.json index 9387e0bd31..650f2b16bd 100755 --- a/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.32mm Optimal @WonderMaker ZR Ultra 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR 0.6 nozzle.json index 32e8d231a0..5da20d13fe 100755 --- a/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.6 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR Ultra 0.6 nozzle.json index aec25c67cd..c5d787805f 100755 --- a/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.36mm Draft @WonderMaker ZR Ultra 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR 0.8 nozzle.json index 9e040a39f7..178371f567 100755 --- a/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.8 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle.json index 1e5fbadf5a..b05bad45c8 100755 --- a/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR 0.6 nozzle.json index 23b41cff0f..3de31e9320 100755 --- a/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.6 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR Ultra 0.6 nozzle.json index 0499dd48ff..cfce9cde18 100755 --- a/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.42mm Extra Draft @WonderMaker ZR Ultra 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR 0.8 nozzle.json index b2d1696c4f..37089b0318 100755 --- a/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.8 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR Ultra 0.8 nozzle.json index 526dd3db7d..93311ca1d2 100755 --- a/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.48mm Draft @WonderMaker ZR Ultra 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR 0.8 nozzle.json index 399b583429..5ffbf26b77 100755 --- a/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, and results in extremely apparent layer lines and much lower printing quality, but much shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "WonderMaker ZR 0.8 nozzle" ] diff --git a/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR Ultra 0.8 nozzle.json index 4708bbfed9..f5b2d333a9 100755 --- a/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/process/0.56mm Extra Draft @WonderMaker ZR Ultra 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger layer height, and results in extremely apparent layer lines and much lower printing quality, but much shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "ooze_prevention": "1", "preheat_time": "30", "standby_temperature_delta": "-80", diff --git a/resources/profiles/WonderMaker/process/fdm_process_common.json b/resources/profiles/WonderMaker/process/fdm_process_common.json index ba67f8406c..a9d67585ce 100755 --- a/resources/profiles/WonderMaker/process/fdm_process_common.json +++ b/resources/profiles/WonderMaker/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "bridge_speed": "25", @@ -69,7 +68,5 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [], - "smooth_coefficient": "80", - "overhang_totally_speed": "19", "scarf_angle_threshold": "155" } diff --git a/resources/profiles/WonderMaker/process/fdm_process_wm_common.json b/resources/profiles/WonderMaker/process/fdm_process_wm_common.json index 3b7fb2ba74..72e8a815a2 100755 --- a/resources/profiles/WonderMaker/process/fdm_process_wm_common.json +++ b/resources/profiles/WonderMaker/process/fdm_process_wm_common.json @@ -20,7 +20,6 @@ "inner_wall_acceleration": "8000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "30", diff --git a/resources/profiles/Z-Bolt.json b/resources/profiles/Z-Bolt.json index aa092cc8b2..7c16785c62 100644 --- a/resources/profiles/Z-Bolt.json +++ b/resources/profiles/Z-Bolt.json @@ -1,7 +1,7 @@ { "name": "Z-Bolt", "url": "", - "version": "02.04.00.02", + "version": "02.04.00.03", "force_update": "0", "description": "Z-Bolt configurations", "machine_model_list": [ diff --git a/resources/profiles/Z-Bolt/machine/fdm_machine_common.json b/resources/profiles/Z-Bolt/machine/fdm_machine_common.json index 2a5cddb2f2..e9350c430c 100644 --- a/resources/profiles/Z-Bolt/machine/fdm_machine_common.json +++ b/resources/profiles/Z-Bolt/machine/fdm_machine_common.json @@ -19,7 +19,6 @@ "0x0" ], "gcode_flavor": "marlin", - "silent_mode": "0", "machine_max_acceleration_e": [ "5000" ], @@ -111,7 +110,6 @@ "wipe": [ "1" ], - "z_lift_type": "NormalLift", "default_print_profile": "", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_BEFORE_LAYER_CHANGE", "layer_change_gcode": "_AFTER_LAYER_CHANGE Z={layer_z}", diff --git a/resources/profiles/Z-Bolt/process/0.08mm Extra Fine @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.08mm Extra Fine @Z-Bolt 0.4 nozzle.json index 52e9dae00d..fa724bd573 100644 --- a/resources/profiles/Z-Bolt/process/0.08mm Extra Fine @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.08mm Extra Fine @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "aQbSyiYUXanu2sjX", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.08mm High Quality @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.08mm High Quality @Z-Bolt 0.4 nozzle.json index c71a6ae5ef..8535207de5 100644 --- a/resources/profiles/Z-Bolt/process/0.08mm High Quality @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.08mm High Quality @Z-Bolt 0.4 nozzle.json @@ -16,8 +16,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "150", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.12mm Fine @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.12mm Fine @Z-Bolt 0.4 nozzle.json index 74108d7eb6..4cd386a5a9 100644 --- a/resources/profiles/Z-Bolt/process/0.12mm Fine @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.12mm Fine @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "FXUuYzz6QKb2B8NO", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in almost negligible layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.12mm High Quality @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.12mm High Quality @Z-Bolt 0.4 nozzle.json index b7faeba25f..f79c91e16c 100644 --- a/resources/profiles/Z-Bolt/process/0.12mm High Quality @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.12mm High Quality @Z-Bolt 0.4 nozzle.json @@ -16,8 +16,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "180", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.4 nozzle.json index 06b6c23e34..72b2a62857 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.4 nozzle.json @@ -16,8 +16,6 @@ "sparse_infill_pattern": "gyroid", "sparse_infill_speed": "200", "top_surface_speed": "150", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.6 nozzle.json index e826d762af..036b2ae886 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm High Quality @Z-Bolt 0.6 nozzle.json @@ -12,8 +12,6 @@ "top_surface_speed": "100", "default_acceleration": "5000", "outer_wall_acceleration": "2500", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm Optimal @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Optimal @Z-Bolt 0.4 nozzle.json index ccd2dbcd33..7f375e45f5 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Optimal @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Optimal @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "TrwuaRthXrp9Aqc2", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt 0.6 nozzle.json index 62e3e30a66..831f6dabdd 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S300 0.6 nozzle.json index a2651b61b8..4d70dc3505 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S400 0.6 nozzle.json index 7dceacb4d0..058a3a870c 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S600 0.6 nozzle.json index db42d946e5..977400fb28 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S800 0.6 nozzle.json index 053a3b9593..15405feb72 100644 --- a/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.16mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.20mm High Quality @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm High Quality @Z-Bolt 0.6 nozzle.json index d926fede96..df9e3494fd 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm High Quality @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm High Quality @Z-Bolt 0.6 nozzle.json @@ -13,8 +13,6 @@ "top_surface_speed": "100", "default_acceleration": "5000", "outer_wall_acceleration": "2500", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.4 nozzle.json index e10958dbfe..740f23349e 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "jSA9QDV6RfL4eb5X", "instantiation": "true", "description": "It has a general layer height, and results in general layer lines and printing quality. It is suitable for most general printing cases.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.6 nozzle.json index 92e55765eb..b5ccd2ba7a 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S300 0.6 nozzle.json index 97f40201d2..43f9ea536b 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S400 0.6 nozzle.json index 6366647a6f..641a53bd80 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S600 0.6 nozzle.json index 7b31b4afbb..2843e854cb 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S800 0.6 nozzle.json index 27808d012c..37ddf5b15d 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.20mm Strength @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.20mm Strength @Z-Bolt 0.4 nozzle.json index 177a7d1f87..ab0077d73a 100644 --- a/resources/profiles/Z-Bolt/process/0.20mm Strength @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.20mm Strength @Z-Bolt 0.4 nozzle.json @@ -9,8 +9,6 @@ "description": "Compared with the default profile of a 0.4 mm nozzle, it has more wall loops and a higher sparse infill density. So, it results in higher strength of the prints, but more filament consumption and longer printing time.", "outer_wall_speed": "60", "sparse_infill_density": "25%", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "wall_loops": "6", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Draft @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Draft @Z-Bolt 0.4 nozzle.json index 358ae59e06..9505267903 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Draft @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Draft @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "L1bdHzIO1OKLDT3Q", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but slightly shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.6 nozzle.json index 5ef55f74f5..627d9ea582 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.8 nozzle.json index dad1890533..f16cccf104 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt 0.8 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.6 nozzle.json index fce0f0dc27..e646fce399 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.8 nozzle.json index 1f84b54785..9d8d457f31 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S300 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.6 nozzle.json index fe57ad2149..b304c7d305 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.8 nozzle.json index c1a1f9d3ba..ad2726dc6a 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S400 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.8 nozzle", "Z-Bolt S400 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.6 nozzle.json index e12643bd2a..5780b16d09 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.8 nozzle.json index 962ba3a32a..f4f133b107 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S600 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.8 nozzle", "Z-Bolt S600 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.6 nozzle.json index 8ba32b08b9..9ea1286a91 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer height, and results in less apparent layer lines and slight higher printing quality, but longer printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.8 nozzle.json index 7ff2da7c2d..309d3ea585 100644 --- a/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.24mm Standard @Z-Bolt S800 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer height, and results in less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.8 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.28mm Extra Draft @Z-Bolt 0.4 nozzle.json b/resources/profiles/Z-Bolt/process/0.28mm Extra Draft @Z-Bolt 0.4 nozzle.json index f442650a69..3304756c78 100644 --- a/resources/profiles/Z-Bolt/process/0.28mm Extra Draft @Z-Bolt 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.28mm Extra Draft @Z-Bolt 0.4 nozzle.json @@ -7,8 +7,6 @@ "setting_id": "U6WOuHSZoT8XksE5", "instantiation": "true", "description": "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time.", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.4 nozzle", "Z-Bolt S300 Dual 0.4 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt 0.6 nozzle.json index 006f1c4d0a..0d00b00d51 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S300 0.6 nozzle.json index 5bc3a498b3..b040598949 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S400 0.6 nozzle.json index 6984af380f..611ec1a723 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S600 0.6 nozzle.json index 6df85166a4..34e6b16951 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S800 0.6 nozzle.json index 5add162efc..219a9150dc 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt 0.6 nozzle.json index 8fea281789..14c5183ddb 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt 0.6 nozzle.json @@ -10,8 +10,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S300 0.6 nozzle.json index 127c42f19c..aed5e54271 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S300 0.6 nozzle.json @@ -9,8 +9,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S400 0.6 nozzle.json index d03ac505d5..67525a87b8 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S400 0.6 nozzle.json @@ -9,8 +9,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S600 0.6 nozzle.json index 14dcc0f4ee..01745da5e5 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S600 0.6 nozzle.json @@ -9,8 +9,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S800 0.6 nozzle.json index 9dd0eb0728..a03c875c2a 100644 --- a/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.30mm Strength @Z-Bolt S800 0.6 nozzle.json @@ -9,8 +9,6 @@ "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", "wall_loops": "4", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt 0.8 nozzle.json index 7a8f7ea2e9..8587bb3e67 100644 --- a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt 0.8 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S300 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S300 0.8 nozzle.json index e639b6b277..f36ba77e24 100644 --- a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S300 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S300 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S400 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S400 0.8 nozzle.json index dc7e570d65..0ad0f9371a 100644 --- a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S400 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S400 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.8 nozzle", "Z-Bolt S400 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S600 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S600 0.8 nozzle.json index e7a77f55a1..f449cfd705 100644 --- a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S600 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S600 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.8 nozzle", "Z-Bolt S600 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S800 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S800 0.8 nozzle.json index 7fe7708930..7732bb1c18 100644 --- a/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S800 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.32mm Standard @Z-Bolt S800 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a slightly smaller layer height, and results in slightly less but still apparent layer lines and slightly higher printing quality, but longer printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.8 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt 0.6 nozzle.json index 236979d112..8f5029d11d 100644 --- a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S300 0.6 nozzle.json index 32ec85d70d..d782d7d919 100644 --- a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S400 0.6 nozzle.json index 5f0e926991..a196f43fea 100644 --- a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S600 0.6 nozzle.json index e58fecfbe1..42f2d6defc 100644 --- a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S800 0.6 nozzle.json index 3d2af55bd0..e06c917d53 100644 --- a/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.36mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in more apparent layer lines and lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt 0.8 nozzle.json index b8c39f25b3..652815aeb7 100644 --- a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt 0.8 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S300 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S300 0.8 nozzle.json index bacba10332..b00f4442af 100644 --- a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S300 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S300 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S400 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S400 0.8 nozzle.json index 1234ff53d8..103dd99e63 100644 --- a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S400 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S400 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.8 nozzle", "Z-Bolt S400 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S600 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S600 0.8 nozzle.json index 6b05db5f96..30f9ef5ff1 100644 --- a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S600 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S600 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.8 nozzle", "Z-Bolt S600 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S800 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S800 0.8 nozzle.json index 0d0475e7d9..57a59eb902 100644 --- a/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S800 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.40mm Standard @Z-Bolt S800 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "It has a very big layer height, and results in very apparent layer lines, low printing quality and general printing time.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.8 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt 0.6 nozzle.json index ccaab4f070..b64b0028f9 100644 --- a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt 0.6 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S300 0.6 nozzle.json index 9a5e4b5aa5..87f866d958 100644 --- a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S300 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.6 nozzle", "Z-Bolt S300 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S400 0.6 nozzle.json index c84e8895c0..c82284df22 100644 --- a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S400 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.6 nozzle", "Z-Bolt S400 Dual 0.6 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S600 0.6 nozzle.json index 20f0a155e3..110605f717 100644 --- a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S600 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.6 nozzle", "Z-Bolt S600 Dual 0.6 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S800 0.6 nozzle.json b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S800 0.6 nozzle.json index ed319c209f..c042b0bea2 100644 --- a/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S800 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.42mm Standard @Z-Bolt S800 0.6 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer height, and results in much more apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.6 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt 0.8 nozzle.json index b26b749a81..c67e1d42fa 100644 --- a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt 0.8 nozzle.json @@ -8,8 +8,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S300 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S300 0.8 nozzle.json index 42ddc4ff8d..c1d19c312e 100644 --- a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S300 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S300 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S300 0.8 nozzle", "Z-Bolt S300 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S400 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S400 0.8 nozzle.json index 916e7a28e6..efed7665fe 100644 --- a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S400 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S400 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S400 0.8 nozzle", "Z-Bolt S400 Dual 0.8 nozzle" diff --git a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S600 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S600 0.8 nozzle.json index 32dc534606..49092fb651 100644 --- a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S600 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S600 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S600 0.8 nozzle", "Z-Bolt S600 Dual 0.8 nozzle", diff --git a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S800 0.8 nozzle.json b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S800 0.8 nozzle.json index 21c660ae18..cdea08b5f2 100644 --- a/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S800 0.8 nozzle.json +++ b/resources/profiles/Z-Bolt/process/0.48mm Standard @Z-Bolt S800 0.8 nozzle.json @@ -7,8 +7,6 @@ "instantiation": "true", "description": "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer height, and results in very apparent layer lines and much lower printing quality, but shorter printing time in some printing cases.", "elefant_foot_compensation": "0.15", - "smooth_coefficient": "150", - "overhang_totally_speed": "50", "compatible_printers": [ "Z-Bolt S800 Dual 0.8 nozzle" ] diff --git a/resources/profiles/Z-Bolt/process/fdm_process_common.json b/resources/profiles/Z-Bolt/process/fdm_process_common.json index 4859096b3d..a685416c9b 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_common.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "bridge_flow": "0.95", "bridge_no_support": "0", "bridge_speed": "25", @@ -41,7 +40,6 @@ "internal_solid_infill_speed": "40", "outer_wall_line_width": "0.42", "outer_wall_speed": "120", - "overhang_totally_speed": "19", "print_sequence": "by layer", "spiral_mode": "0", "standby_temperature_delta": "-5", @@ -70,6 +68,5 @@ "xy_hole_compensation": "0", "xy_contour_compensation": "0", "compatible_printers": [], - "smooth_coefficient": "80", "scarf_angle_threshold": "155" } diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_common.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_common.json index 627ed0f9f9..dd205e9370 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_common.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_common.json @@ -17,7 +17,6 @@ "outer_wall_acceleration": "5000", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", - "internal_bridge_support_thickness": "0.8", "initial_layer_acceleration": "500", "initial_layer_line_width": "0.5", "initial_layer_speed": "30", diff --git a/resources/profiles/iQ.json b/resources/profiles/iQ.json index 4b1f83b354..1148b112f3 100644 --- a/resources/profiles/iQ.json +++ b/resources/profiles/iQ.json @@ -1,6 +1,6 @@ { "name": "innovatiQ", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "1", "description": "innovatiQ configuration", "machine_model_list": [ diff --git a/resources/profiles/iQ/filament/fdm_filament_common.json b/resources/profiles/iQ/filament/fdm_filament_common.json index 4bf9b7986c..5d8d059f91 100644 --- a/resources/profiles/iQ/filament/fdm_filament_common.json +++ b/resources/profiles/iQ/filament/fdm_filament_common.json @@ -84,9 +84,6 @@ "filament_is_support": [ "0" ], - "filament_load_time": [ - "0" - ], "filament_loading_speed": [ "28" ], @@ -153,9 +150,6 @@ "filament_toolchange_delay": [ "0" ], - "filament_unload_time": [ - "0" - ], "filament_unloading_speed": [ "90" ], diff --git a/resources/profiles/iQ/machine/TiQ2.json b/resources/profiles/iQ/machine/TiQ2.json index 36c04edf6e..3a24cd308a 100644 --- a/resources/profiles/iQ/machine/TiQ2.json +++ b/resources/profiles/iQ/machine/TiQ2.json @@ -7,5 +7,5 @@ "family": "TiQ", "bed_model": "TiQ2.stl", "bed_texture": "TiQ2_texture.svg", - "default_materials": "Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle" + "default_materials": "Fiberthree PACF Pro P1 @iQ TiQ2 0.4 Nozzle;Generic PLA @System" } diff --git a/resources/profiles/iQ/machine/TiQ8.json b/resources/profiles/iQ/machine/TiQ8.json index 21d9c23413..0243125926 100644 --- a/resources/profiles/iQ/machine/TiQ8.json +++ b/resources/profiles/iQ/machine/TiQ8.json @@ -7,5 +7,5 @@ "family": "TiQ", "bed_model": "TiQ8.stl", "bed_texture": "TiQ8_texture.svg", - "default_materials": "Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle" + "default_materials": "Material4Print ABS Natur P1 @iQ TiQ8 0.4 Nozzle;Generic PLA @System" } diff --git a/resources/profiles/iQ/machine/fdm_tiq_common.json b/resources/profiles/iQ/machine/fdm_tiq_common.json index 2f1b6b8415..42fda68609 100644 --- a/resources/profiles/iQ/machine/fdm_tiq_common.json +++ b/resources/profiles/iQ/machine/fdm_tiq_common.json @@ -176,7 +176,6 @@ "30" ], "scan_first_layer": "0", - "silent_mode": "0", "single_extruder_multi_material": "0", "support_air_filtration": "1", "support_chamber_temp_control": "1", diff --git a/resources/profiles/iQ/process/fdm_process_tiq_common.json b/resources/profiles/iQ/process/fdm_process_tiq_common.json index 3214a995d5..d89538b598 100644 --- a/resources/profiles/iQ/process/fdm_process_tiq_common.json +++ b/resources/profiles/iQ/process/fdm_process_tiq_common.json @@ -30,7 +30,6 @@ "standby_temperature_delta": "-40", "preheat_time": "30", "preheat_steps": "1", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", @@ -100,7 +99,6 @@ "support_object_xy_distance": "0.35", "tree_support_branch_angle": "30", "tree_support_wall_count": "0", - "tree_support_with_infill": "0", "detect_thin_wall": "0", "top_surface_pattern": "monotonicline", "top_shell_thickness": "0.8", diff --git a/resources/profiles/re3D.json b/resources/profiles/re3D.json index 52ad3a3fc5..da34373d47 100644 --- a/resources/profiles/re3D.json +++ b/resources/profiles/re3D.json @@ -1,7 +1,7 @@ { "name": "re3D", "url": "", - "version": "03.00.10", + "version": "03.00.11", "force_update": "0", "description": "re3D configurations", "machine_model_list": [ diff --git a/resources/profiles/re3D/machine/fdm_machine_common.json b/resources/profiles/re3D/machine/fdm_machine_common.json index 736342291d..8c7a63cff5 100644 --- a/resources/profiles/re3D/machine/fdm_machine_common.json +++ b/resources/profiles/re3D/machine/fdm_machine_common.json @@ -4,10 +4,11 @@ "from": "system", "instantiation": "false", "auxiliary_fan": "0", - "bed_exclude_area": ["0x0"], + "bed_exclude_area": [ + "0x0" + ], "family": "re3D", "gcode_flavor": "klipper", "emit_machine_limits_to_gcode": "0", - "silent_mode": "0", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/re3D/machine/fgf_re3D_common.json b/resources/profiles/re3D/machine/fgf_re3D_common.json index 3e0e409228..553bd126ee 100644 --- a/resources/profiles/re3D/machine/fgf_re3D_common.json +++ b/resources/profiles/re3D/machine/fgf_re3D_common.json @@ -1,9 +1,9 @@ { "type": "machine", "name": "fgf_re3D_common", + "inherits": "fdm_machine_common", "from": "system", "instantiation": "false", - "inherits": "fdm_machine_common", "gcode_flavor": "klipper", "printer_settings_id": "", "printer_technology": "FFF", @@ -43,7 +43,6 @@ "30" ], "z_hop_types": "Normal Lift", - "silent_mode": "0", "single_extruder_multi_material": "0", "change_filament_gcode": "M600", "machine_pause_gcode": "PAUSE", @@ -60,4 +59,4 @@ "scan_first_layer": "0", "nozzle_type": "undefine", "auxiliary_fan": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/re3D/process/fdm_process_common.json b/resources/profiles/re3D/process/fdm_process_common.json index dcd5c826ae..8a8f884b10 100644 --- a/resources/profiles/re3D/process/fdm_process_common.json +++ b/resources/profiles/re3D/process/fdm_process_common.json @@ -3,7 +3,6 @@ "name": "fdm_process_common", "from": "system", "instantiation": "false", - "adaptive_layer_height": "0", "reduce_crossing_wall": "0", "bridge_flow": "0.95", "brim_width": "5", diff --git a/resources/profiles/re3D/process/fdm_process_re3D_common.json b/resources/profiles/re3D/process/fdm_process_re3D_common.json index ea169330f4..d72e984ae1 100644 --- a/resources/profiles/re3D/process/fdm_process_re3D_common.json +++ b/resources/profiles/re3D/process/fdm_process_re3D_common.json @@ -1,88 +1,87 @@ { - "type": "process", - "name": "fdm_process_re3D_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_common", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "1", - "bridge_flow": "0.985", - "brim_width": "8", - "print_sequence": "by layer", - "bridge_no_support": "0", - "elefant_foot_compensation": "0", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "rectilinear", - "infill_combination": "0", - "infill_wall_overlap": "25%", - "detect_overhang_wall": "1", - "reduce_infill_retraction": "0", - "filename_format": "{input_filename_base}.gcode", - "wall_loops": "3", - "wall_generator": "arachne", - "raft_layers": "0", - "seam_position": "nearest", - "skirt_distance": "8", - "skirt_height": "1", - "minimum_sparse_infill_area": "0", - "spiral_mode": "0", - "standby_temperature_delta": "-75", - "enable_support": "1", - "support_filament": "0", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0.05", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.5", - "detect_thin_wall": "0", - "enable_prime_tower": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "draft_shield": "disabled", - "enable_arc_fitting": "1", - "wall_infill_order": "inner wall/outer wall/infill", - "infill_direction": "45", - "interface_shells": "0", - "ironing_flow": "10%", - "ironing_spacing": "0.1", - "ironing_type": "no ironing", - "print_settings_id": "fdm_process_re3D_common", - "skirt_loops": "2", - "resolution": "0.0", - "support_type": "normal(auto)", - "support_style": "snug", - "support_interface_bottom_layers": "2", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "top_surface_pattern": "monotonicline", - "top_shell_layers": "4", - "top_shell_thickness": "0.6", - "wipe_tower_no_sparse_layers": "0", - "precise_outer_wall": "0", - "accel_to_decel_enable": "0", - "prime_volume": "200", - "ooze_prevention": "1", - "preheat_time": "30", - "slow_down_layers": "2", - "small_perimeter_threshold": "10", - "exclude_object": "1", - "compatible_printers": [ - "re3D Gigabot 4 0.4 nozzle", - "re3D Gigabot 4 0.8 nozzle", - "re3D Gigabot 4 XLT 0.4 nozzle", - "re3D Gigabot 4 XLT 0.8 nozzle", - "re3D Terabot 4 0.4 nozzle", - "re3D Terabot 4 0.8 nozzle" - ] + "type": "process", + "name": "fdm_process_re3D_common", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "1", + "bridge_flow": "0.985", + "brim_width": "8", + "print_sequence": "by layer", + "bridge_no_support": "0", + "elefant_foot_compensation": "0", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "rectilinear", + "infill_combination": "0", + "infill_wall_overlap": "25%", + "detect_overhang_wall": "1", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "wall_generator": "arachne", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "8", + "skirt_height": "1", + "minimum_sparse_infill_area": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-75", + "enable_support": "1", + "support_filament": "0", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0.05", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "draft_shield": "disabled", + "enable_arc_fitting": "1", + "wall_infill_order": "inner wall/outer wall/infill", + "infill_direction": "45", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.1", + "ironing_type": "no ironing", + "print_settings_id": "fdm_process_re3D_common", + "skirt_loops": "2", + "resolution": "0.0", + "support_type": "normal(auto)", + "support_style": "snug", + "support_interface_bottom_layers": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_shell_layers": "4", + "top_shell_thickness": "0.6", + "wipe_tower_no_sparse_layers": "0", + "precise_outer_wall": "0", + "accel_to_decel_enable": "0", + "prime_volume": "200", + "ooze_prevention": "1", + "preheat_time": "30", + "slow_down_layers": "2", + "small_perimeter_threshold": "10", + "exclude_object": "1", + "compatible_printers": [ + "re3D Gigabot 4 0.4 nozzle", + "re3D Gigabot 4 0.8 nozzle", + "re3D Gigabot 4 XLT 0.4 nozzle", + "re3D Gigabot 4 XLT 0.8 nozzle", + "re3D Terabot 4 0.4 nozzle", + "re3D Terabot 4 0.8 nozzle" + ] } diff --git a/resources/profiles/re3D/process/fgf_process_re3D_common.json b/resources/profiles/re3D/process/fgf_process_re3D_common.json index 3258753500..902366c830 100644 --- a/resources/profiles/re3D/process/fgf_process_re3D_common.json +++ b/resources/profiles/re3D/process/fgf_process_re3D_common.json @@ -1,10 +1,9 @@ { "type": "process", "name": "fgf_process_re3D_common", + "inherits": "fdm_process_common", "from": "system", "instantiation": "false", - "inherits": "fdm_process_common", - "adaptive_layer_height": "0", "reduce_crossing_wall": "1", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonicline", @@ -112,4 +111,4 @@ "re3D TerabotX 2 0.8 nozzle", "re3D TerabotX 2 1.75 nozzle" ] -} \ No newline at end of file +} diff --git a/scripts/orca_profile_tool.py b/scripts/orca_profile_tool.py index 8c2b4c1854..b889a1bc39 100755 --- a/scripts/orca_profile_tool.py +++ b/scripts/orca_profile_tool.py @@ -24,9 +24,11 @@ options shared by several commands: since the snapshot describes resources/profiles alone After adding, renaming or deleting profile files, run: - normalize -> trim -> update-index -> generate-id -> update-snapshot -> check -Each step feeds the next: normalize writes the "type" update-index files a -profile by, and trim judges against the index update-index is about to rebuild. + normalize -> update-index -> generate-id -> update-snapshot -> check +normalize supplies missing types; update-index registers presets before id +generation. update-snapshot is needed when filament ids or claims change. +Use trim only for deliberate cleanup, previewed with --dry-run: it judges against +the current index and can delete newly added, unindexed presets. Run from anywhere; "python scripts/orca_profile_tool.py --help" repeats this list and "... --help" documents one command in full. @@ -128,6 +130,9 @@ BAMBU_MAP_PATH = os.path.normpath( os.path.join(SCRIPTS_DIR, "..", "resources", "printers", "bambu_filament_ids.json")) OFL = "OrcaFilamentLibrary" +# The validator's data dir, created under resources/profiles by a local run; +# not a vendor bundle, so an unscoped pass leaves it alone. +USER_DIR = "user" # Bambu (BBL) is the only vendor exempt from the setting_id rule: it keeps its # authoritative "G*" cloud ids. No vendor is exempt from the filament_id rule. @@ -146,7 +151,9 @@ PROFILE_TYPES = ("machine_model", "process", "filament", "machine") # Data files that sit under a vendor bundle but are not presets: no name, no type. NON_PROFILE_FILES = {"filaments_color_codes.json", "cli_config.json"} -# Settings dropped from PrintConfig.cpp. Reported by "check --obsolete-keys". +# Mirror PrintConfigDef::handle_legacy's ignore set in PrintConfig.cpp; a test +# checks parity. Used by normalize and check. Active options and +# legacy aliases that the loader migrates do not belong here. OBSOLETE_KEYS = { "acceleration", "scale", "rotate", "duplicate", "duplicate_grid", "bed_size", "print_center", "g0", "wipe_tower_per_color_wipe", @@ -158,10 +165,11 @@ OBSOLETE_KEYS = { "bed_temperature_initial_layer", "can_switch_nozzle_type", "can_add_auxiliary_fan", "extra_flush_volume", "spaghetti_detector", "adaptive_layer_height", "z_hop_type", "z_lift_type", "bed_temperature_difference", "long_retraction_when_cut", - "retraction_distance_when_cut", "extruder_type", "internal_bridge_support_thickness", - "extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill", + "retraction_distance_when_cut", "internal_bridge_support_thickness", + "top_area_threshold", "reduce_wall_solid_infill", "filament_load_time", "filament_unload_time", "smooth_coefficient", - "overhang_totally_speed", "silent_mode", "overhang_speed_classic" + "overhang_totally_speed", "silent_mode", "overhang_speed_classic", + "anisotropic_surfaces", } # Keys renamed at some point, whose old and new spellings must never co-exist: @@ -1050,13 +1058,12 @@ def load_available_filament_profiles(profiles_dir, vendor): def check_machine_default_materials(profiles_dir, vendor): """Every default material a machine names must exist, in the bundle or in OFL. - Returns (errors, warnings); the warning is the bundle having no machine/ at all. + Returns (errors, warnings); a bundle with no machine/ has nothing to check. """ error_count = 0 machine_dir = Path(profiles_dir) / vendor / "machine" if not machine_dir.exists(): - print_warning(f"No machine profiles found for vendor: {vendor}") - return 0, 1 + return 0, 0 available = (load_available_filament_profiles(profiles_dir, vendor) | load_available_filament_profiles(profiles_dir, OFL)) @@ -1246,7 +1253,7 @@ def check_filament_id_length(profiles_dir, vendor): def check_obsolete_keys(profiles_dir, vendor): - """Warn about settings PrintConfig.cpp no longer defines. Returns the count.""" + """Warn about settings PrintConfig.cpp explicitly discards. Returns the count.""" warn_count = 0 profiles_path = Path(profiles_dir) vendor_path = profiles_path / vendor / "filament" @@ -1397,16 +1404,17 @@ def check_normalized(profiles_dir, vendor): # check # --------------------------------------------------------------------------- -def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSHOT_PATH, - materials=False, obsolete_keys=False): +def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSHOT_PATH): """Validate the whole profile tree. Returns the error count. The per-vendor checks honour `vendors`; the setting_id and filament_id checks are cross-vendor properties a narrowed run cannot answer, so they always cover the - whole tree. With no `vendors`, OrcaFilamentLibrary is left out of the per-vendor - pass: it is the shared base bundle, its filaments are generic by design, and they - are checked through the vendors that inherit them. Naming it explicitly checks it. - The normalization pass covers it either way - see the comment on that loop. + whole tree. With no `vendors`, every bundle is checked except the `user` directory + a local validator run leaves behind, being its data dir rather than a bundle; + naming it explicitly checks it. OrcaFilamentLibrary is checked like any other + bundle, its only exemption being that a library filament may leave + compatible_printers empty - what check_filament_compatible_printers applies. The + normalization pass takes its own vendor list - see the comment on that loop. """ print_info("Checking profiles ...") errors_found = 0 @@ -1416,19 +1424,17 @@ def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSH if vendors: checked = list(vendors) else: - checked = [v for v in list_profile_dirs(profiles_dir) if v != OFL] + checked = [v for v in list_profile_dirs(profiles_dir) if v != USER_DIR] for vendor in checked: errors_found += check_preset_name_uniqueness(profiles_dir, vendor) errors_found += check_filament_compatible_printers(profiles_dir, vendor) - if materials: - new_errors, new_warnings = check_machine_default_materials(profiles_dir, vendor) - errors_found += new_errors - warnings_found += new_warnings + new_errors, new_warnings = check_machine_default_materials(profiles_dir, vendor) + errors_found += new_errors + warnings_found += new_warnings - if obsolete_keys: - warnings_found += check_obsolete_keys(profiles_dir, vendor) + warnings_found += check_obsolete_keys(profiles_dir, vendor) new_errors, new_warnings = check_name_consistency(profiles_dir, vendor) errors_found += new_errors @@ -1445,12 +1451,11 @@ def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSH errors_found += new_errors remedies.update(gaps) - # normalize and update-index know nothing of the OrcaFilamentLibrary exemption - # above - that bundle sits out the per-vendor pass because its filaments are - # generic by design, which says nothing about the shape of its files - so this pass - # takes its own vendor list. Unscoped that is the bundles with an index, exactly - # what those two commands take; a --vendor is passed through as given, so a bundle - # whose index has not landed yet still has its files held to what normalize writes. + # normalize and update-index judge file and index shape, not the preset-content + # rules above, so this pass takes its own vendor list. Unscoped that is the + # bundles with an index, exactly what those two commands take; a --vendor is + # passed through as given, so a bundle whose index has not landed yet still has + # its files held to what normalize writes. for vendor in (vendors or list_vendor_names(profiles_dir)): new_errors, gaps = check_normalized(profiles_dir, vendor) errors_found += new_errors @@ -2061,6 +2066,10 @@ def _normalize_profile(data, sub): del data[field] changes.append(f"remove {field}") + for field in sorted(OBSOLETE_KEYS.intersection(data)): + del data[field] + changes.append(f"remove {field}") + # BBS renamed extruder_clearance_radius to extruder_clearance_max_radius, but some # profiles carry both with different values, and the slicer cannot tell which one # to obey - a toolhead collision waiting to happen. Keep the larger one only. @@ -2306,8 +2315,9 @@ def build_index_sections(profiles_dir, vendor, profile_types=None): one message each, for the caller to report. `sections` is None when two files claim one preset name: the bundle can only hold one profile under a name, so rebuilding would pick a winner by directory order and quietly drop the other, and the index has - to be left alone instead. Deleting the stale copy is trim's job, which is why it - runs before this. + to be left alone instead. Identify the intended preset and delete or rename the + duplicate before retrying. Use trim only for deliberate unindexed-file cleanup, + previewed with --dry-run. """ vendor_dir = os.path.join(profiles_dir, vendor) sections = {} @@ -2360,8 +2370,8 @@ def build_index_sections(profiles_dir, vendor, profile_types=None): problems.append(f'{vendor}.json: {len(subs)} profiles are named "{name}" ' f'({", ".join(sorted(subs))}); only one can be indexed under ' f"that name, so delete or rename the others - " - f'"python scripts/orca_profile_tool.py trim" removes an ' - f"unindexed copy") + f"preview unindexed-file cleanup with " + f'"python scripts/orca_profile_tool.py trim --dry-run"') return (None if clashes else sections), problems @@ -2433,9 +2443,11 @@ examples: re-record the sanctioned filament_id state after a generate-id run after adding, renaming or deleting profile files, run in this order: - normalize -> trim -> update-index -> generate-id -> update-snapshot -> check -each step feeds the next: normalize writes the "type" update-index files a -profile by, and trim judges against the index update-index is about to rebuild. + normalize -> update-index -> generate-id -> update-snapshot -> check +normalize supplies missing types; update-index registers presets before id +generation. update-snapshot is needed when filament ids or claims change. +Use trim only for deliberate cleanup, previewed with --dry-run: it judges against +the current index and can delete newly added, unindexed presets. """ @@ -2483,23 +2495,18 @@ def build_parser(): name, parents=parents, help=help_text, description=description, allow_abbrev=False, formatter_class=argparse.RawDescriptionHelpFormatter) - check_cmd = add( + add( "check", [vendor_opt, snapshot_opt, profiles_opt], "validate the whole profile tree -- what CI runs", "Validate the whole profile tree: preset name uniqueness, index coverage\n" - "both ways, compatible_printers, conflicting and vector-typed keys,\n" - "filament_id length, that normalize and update-index would leave every\n" - "bundle alone, and the tree-wide setting_id and filament_id state.\n" - "Exits nonzero on errors.\n" + "both ways, compatible_printers, default-material references, obsolete,\n" + "conflicting and vector-typed keys, filament_id length, that normalize and\n" + "update-index would leave every bundle alone, and the tree-wide setting_id\n" + "and filament_id state. Exits nonzero on errors.\n" "\n" "--vendor narrows the per-vendor checks only: setting_id uniqueness and the\n" "filament_id state are cross-vendor properties a narrowed run cannot answer,\n" "so they always cover the whole tree.") - check_cmd.add_argument("--materials", action="store_true", - help="also check that every default material a machine names " - "exists") - check_cmd.add_argument("--obsolete-keys", action="store_true", dest="obsolete_keys", - help="also warn about settings the slicer no longer defines") generate_cmd = add( "generate-id", [vendor_opt, dry_run_opt, profiles_opt], @@ -2533,6 +2540,9 @@ def build_parser(): "loader only ever reads the sub_paths listed there, so an unindexed preset\n" "never loads.\n" "\n" + "Use only for deliberate cleanup, previewed with --dry-run. Newly added,\n" + "unindexed presets can be deleted too; omit trim from the authoring workflow.\n" + "\n" "Assets and data files are kept, a file that cannot be parsed is kept and\n" "reported, and so is one a surviving profile inherits from that no indexed\n" "profile provides -- but a stale copy of an indexed profile goes, since\n" @@ -2546,7 +2556,9 @@ def build_parser(): "A profile is indexed under the section its own \"type\" names, so run\n" "normalize first: it is what writes a missing type. Two files claiming one\n" "preset name leave that index alone, because a rebuild could only keep one\n" - "of them; run trim first, which is what clears a stale copy.") + "of them. Identify the intended preset and delete or rename the duplicate.\n" + "Use trim only for deliberate unindexed-file cleanup, previewed with\n" + "--dry-run; it can also delete newly authored presets.") add("update-snapshot", [dry_run_opt, snapshot_opt, profiles_opt], "re-record scripts/filament_id_snapshot.json", @@ -2591,8 +2603,7 @@ def main(argv=None): snapshot_path = SNAPSHOT_PATH if args.command == "check": - errors = check_profiles(profiles_dir, vendors, snapshot_path, - materials=args.materials, obsolete_keys=args.obsolete_keys) + errors = check_profiles(profiles_dir, vendors, snapshot_path) return 1 if errors else 0 if args.command == "generate-id": diff --git a/scripts/tests/test_filament_id.py b/scripts/tests/test_filament_id.py index 80afd78a6b..548dd9c777 100644 --- a/scripts/tests/test_filament_id.py +++ b/scripts/tests/test_filament_id.py @@ -1696,7 +1696,9 @@ class TestCli(unittest.TestCase): ["--update-snapshot"], # the pre-subcommand flag ["nonsense"], # not a command ["generate-id", "--filament-id", "--setting-id"], - ["generate-id", "--materials"], # check's option + ["generate-id", "--snapshot", "x"], # check's option + ["check", "--materials"], # removed flag + ["check", "--obsolete-keys"], # removed flag ["check", "--filament-id"], # generate-id's option ["normalize", "--snapshot", "x"], # not a snapshot command ["normalize", "--profile-type", "nozzle"]): # not a profile type diff --git a/scripts/tests/test_profile_tool.py b/scripts/tests/test_profile_tool.py index b96ea44e49..44b8604625 100644 --- a/scripts/tests/test_profile_tool.py +++ b/scripts/tests/test_profile_tool.py @@ -12,6 +12,7 @@ import contextlib import io import json import os +import re import shutil import sys import tempfile @@ -125,6 +126,20 @@ class TreeCase(unittest.TestCase): # normalize # --------------------------------------------------------------------------- +class TestObsoleteKeys(unittest.TestCase): + def test_obsolete_keys_match_the_loader_ignore_set(self): + path = os.path.join(REPO_ROOT, "src", "libslic3r", "PrintConfig.cpp") + with open(path, encoding="utf-8") as f: + source = f.read() + match = re.search( + r"void PrintConfigDef::handle_legacy\(.*?" + r"static\s+std::set\s+ignore\s*=\s*\{(.*?)\};", + source, re.DOTALL) + self.assertIsNotNone(match, "Could not locate the loader's obsolete-key set") + keys = re.sub(r"//[^\n]*|/\*.*?\*/", "", match.group(1), flags=re.DOTALL) + self.assertEqual(apt.OBSOLETE_KEYS, set(re.findall(r'"([^"\n]+)"', keys))) + + class TestNormalize(TreeCase): def test_a_missing_type_is_filled_in_from_the_directory(self): self.t.write("V", "filament/A.json", {"name": "A"}) @@ -148,16 +163,36 @@ class TestNormalize(TreeCase): self.t.write("V", "filament/A.json", { "type": "filament", "name": "A", "version": "1.2.3", "is_custom_defined": "1", "filament_type": "PLA", - "filament_vendor": "AV", "travel_speed": 200}) + "filament_vendor": "AV", "travel_speed": 200, + "filament_load_time": ["15"], "filament_unload_time": "0"}) rc, out = self.run_command("normalize") self.assertEqual(rc, 0, out) data = self.t.read("V", "filament/A.json") self.assertNotIn("version", data) self.assertNotIn("is_custom_defined", data) self.assertNotIn("travel_speed", data) # a process setting, not a filament one + self.assertNotIn("filament_load_time", data) + self.assertNotIn("filament_unload_time", data) self.assertEqual(data["filament_type"], ["PLA"]) self.assertEqual(data["filament_vendor"], ["AV"]) + def test_obsolete_keys_are_removed_from_every_profile_type(self): + for sub in ("filament", "process", "machine"): + with self.subTest(profile_type=sub): + expected = {"type": sub, "name": "A"} + self.t.write("V", f"{sub}/A.json", { + **expected, "silent_mode": "", "adaptive_layer_height": "0", + "anisotropic_surfaces": "1", "filament_load_time": ["0"], + "filament_unload_time": "0"}) + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertEqual(self.t.read("V", f"{sub}/A.json"), expected) + before = self.t.bytes_map() + rc, out = self.run_command("normalize") + self.assertEqual(rc, 0, out) + self.assertIn("0 profile(s) normalized", out) + self.assertEqual(self.t.bytes_map(), before) + def test_the_larger_extruder_clearance_wins(self): # Keeping the smaller one would licence a toolhead collision. self.t.write("V", "machine/M.json", { @@ -186,6 +221,15 @@ class TestNormalize(TreeCase): def test_a_conforming_tree_is_left_byte_identical(self): self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) + # These used to be misclassified as obsolete: one is active, the other + # is a legacy alias that still supplies the toolhead clearance on load. + self.t.write("V", "machine/M.json", { + "type": "machine", "name": "M", "extruder_type": ["Direct Drive"], + "extruder_clearance_max_radius": "68", "machine_load_filament_time": "15", + "machine_unload_filament_time": "10"}) + self.t.write("V", "process/P.json", { + "type": "process", "name": "P", "travel_speed": "200", + "top_surface_fill_order": "outward"}) before = self.t.bytes_map() rc, out = self.run_command("normalize") self.assertEqual(rc, 0, out) @@ -200,7 +244,7 @@ class TestNormalize(TreeCase): b'{\n\t"type": "filament",\n\t"name": "A"\n}\n') def test_dry_run_writes_nothing(self): - self.t.write("V", "filament/A.json", {"name": "A"}) + self.t.write("V", "filament/A.json", {"name": "A", "bed_temperature": ["60"]}) before = self.t.bytes_map() rc, out = self.run_command("normalize", "--dry-run") self.assertEqual(rc, 0, out) @@ -453,6 +497,8 @@ class TestCheck(TreeCase): errors += apt.check_filament_id_length(self.t.profiles, "V") conflict, _warn = apt.check_conflict_keys(self.t.profiles, "V") errors += conflict + materials, _warn = apt.check_machine_default_materials(self.t.profiles, "V") + errors += materials return errors, buf.getvalue() def test_a_clean_bundle_reports_nothing(self): @@ -467,6 +513,27 @@ class TestCheck(TreeCase): self.assertGreater(errors, 0) self.assertIn("'compatible_printers' missing", out) + def test_a_library_filament_may_leave_compatible_printers_empty(self): + # The shared library is exempt from that rule and nothing else. + self.t.write(apt.OFL, "filament/A.json", + {"type": "filament", "name": "A", "instantiation": "true"}) + buf = io.StringIO() + with contextlib.redirect_stdout(buf): + errors = apt.check_filament_compatible_printers(self.t.profiles, apt.OFL) + self.assertEqual(errors, 0, buf.getvalue()) + + def test_the_library_is_checked_like_any_other_bundle(self): + # A file the library's own index does not reference must fail plain + # `check`, now that the per-vendor pass no longer skips it. + self.t.write(apt.OFL, "filament/Stray.json", + {"type": "filament", "name": "Stray"}) + snapshot = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", snapshot) + rc, out = self.run_command("check", "--snapshot", snapshot) + self.assertEqual(rc, 1, out) + self.assertIn(f"{apt.OFL}/filament/Stray.json: no {apt.OFL}.json list " + f"references it", out) + def test_a_duplicate_key_is_an_error(self): self.bundle().write_raw("V", "filament/B.json", b'{"type":"filament","name":"B","name":"B2"}') @@ -516,15 +583,28 @@ class TestCheck(TreeCase): self.assertGreater(errors, 0) self.assertIn("Filament id too long", out) - def test_obsolete_keys_are_opt_in_warnings(self): + def test_obsolete_key_warnings_exclude_active_and_renamed_options(self): self.bundle().write("V", "filament/B.json", { - "type": "filament", "name": "B", "silent_mode": True}) + "type": "filament", "name": "B", "silent_mode": "0", + "anisotropic_surfaces": "0", "extruder_type": ["Direct Drive"], + "extruder_clearance_max_radius": "68"}) buf = io.StringIO() with contextlib.redirect_stdout(buf): warnings = apt.check_obsolete_keys(self.t.profiles, "V") - self.assertEqual(warnings, 1) + self.assertEqual(warnings, 2) self.assertIn("Obsolete key", buf.getvalue()) + def test_obsolete_key_warnings_run_without_a_flag(self): + self.t.write("V", "filament/A.json", { + "type": "filament", "name": "A", "silent_mode": "0"}) + self.run_command("update-index") + snapshot = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", snapshot) + rc, out = self.run_command("check", "--snapshot", snapshot) + self.assertEqual(rc, 1, out) # normalization also rejects the obsolete key + self.assertIn("Obsolete key: 'silent_mode' found in V/filament/A.json", out) + self.assertIn("Files with warnings : 1", out) + def test_a_default_material_must_exist_somewhere(self): self.bundle().write("V", "machine/M.json", { "type": "machine", "name": "M 0.4 nozzle", @@ -535,6 +615,32 @@ class TestCheck(TreeCase): self.assertEqual(errors, 1) self.assertIn("'Nope'", buf.getvalue()) + def test_a_default_material_fails_check_without_a_flag(self): + # The reference check is part of the default run, not an opt-in: a + # dangling name has to fail plain `check`. + self.bundle() + self.t.write("V", "machine/M.json", { + "type": "machine", "name": "M 0.4 nozzle", + "default_filament_profile": ["A", "Nope"]}) + self.t.index("V", "machine", "M 0.4 nozzle", "machine/M.json") + snapshot = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", snapshot) + rc, out = self.run_command("check", "--snapshot", snapshot) + self.assertEqual(rc, 1, out) + self.assertIn("Missing filament profile: 'Nope'", out) + + def test_the_stray_user_directory_is_not_a_vendor(self): + # A local validator run leaves resources/profiles/user/ behind; an + # unscoped check must not count it as a bundle and warn about it. + self.bundle() + for sub in apt.PROFILE_SUBDIRS: + os.makedirs(os.path.join(self.t.profiles, apt.USER_DIR, "default", sub)) + snapshot = os.path.join(self.t.dir, "snapshot.json") + self.run_command("update-snapshot", "--snapshot", snapshot) + _rc, out = self.run_command("check", "--snapshot", snapshot) + self.assertIn("Checked vendors : 1", out) + self.assertNotIn("user", out) + def names(self, vendor="V"): """The preset name check for one bundle, which is what --vendor narrows.""" buf = io.StringIO() @@ -752,9 +858,8 @@ class TestNormalized(TreeCase): self.assertEqual(gaps["stale_index"], 0, out) def test_the_shared_base_bundle_is_covered_too(self): - # The per-vendor pass leaves OrcaFilamentLibrary out because its filaments are - # generic by design. That says nothing about the shape of its files, and - # normalize and update-index rewrite that bundle like any other. + # normalize and update-index own the shape of every bundle, the shared + # library included. self.t.write(apt.OFL, "filament/A.json", {"type": "filament", "name": "A", "version": "01.00.00.00"}) rc, out = self.run_command("check", "--snapshot", self.snapshot()) @@ -791,8 +896,7 @@ class TestDispatch(TreeCase): self.assertIn(expected, out) def test_an_option_belongs_to_one_command_only(self): - for argv in (["normalize", "--materials"], - ["trim", "--force"], + for argv in (["trim", "--force"], ["update-index", "--filament-id"], ["check", "--profile-type", "filament"], ["update-snapshot", "--vendor", "V"]): diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 746856906c..dc731b63c4 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -7619,6 +7619,9 @@ bool PresetBundle::has_errors(bool check_duplicate_filament_subtypes) const if (this->check_preset_references()) has_errors = true; + if (this->check_printer_default_materials()) + has_errors = true; + return has_errors; } @@ -7711,6 +7714,70 @@ bool PresetBundle::check_preset_references() const return found; } +bool PresetBundle::check_printer_default_materials() const +{ + bool found = false; + // A model's default_materials list is shared by its variants, so report each unknown name once. + std::set checked_models; + // default_filament_profile is inherited from shared base machine presets, so one bad name can + // surface on many variants; report it once, at the first printer that names it. + std::set reported_unknown_profiles; + for (const Preset &printer : printers) { + if (!printer.is_system || printer.vendor == nullptr || printer.printer_technology() != ptFFF) + continue; + + const VendorProfile::PrinterModel *model = PresetUtils::system_printer_model(printer); + const PresetWithVendorProfile active_printer = printers.get_preset_with_vendor_profile(printer); + // Use the same name lookup as load_installed_filaments, not UI aliases or fuzzy matching. + // A model's defaults can cover different nozzles, but at least one must cover this variant. + const bool has_default = model != nullptr && std::any_of(model->default_materials.begin(), model->default_materials.end(), + [&](const std::string &name) { + const Preset *filament = filaments.find_preset(name, false); + return filament != nullptr && filament->is_system && + is_compatible_with_printer(filaments.get_preset_with_vendor_profile(*filament), active_printer); + }); + if (!has_default) { + found = true; + BOOST_LOG_TRIVIAL(error) << "Printer preset \"" << printer.name << "\" (vendor \"" << printer.vendor->name + << "\", model \"" << printer.config.opt_string("printer_model") << "\", variant \"" + << printer.config.opt_string("printer_variant") + << "\") has no compatible system filament in its model's \"default_materials\". " + "Add at least one full filament preset name compatible with this printer variant:\n" + << preset_file_uri(printer.file); + } + + if (model != nullptr && checked_models.insert(model).second) { + for (const std::string &name : model->default_materials) { + const Preset *filament = filaments.find_preset(name, false); + if (filament == nullptr || !filament->is_system) { + found = true; + BOOST_LOG_TRIVIAL(error) << "Printer model \"" << model->name << "\" (vendor \"" << printer.vendor->name + << "\") names the unknown system filament \"" << name + << "\" in its \"default_materials\":\n" << preset_file_uri(printer.file); + } + } + } + + if (printer.config.has("default_filament_profile")) { + for (const std::string &name : printer.config.opt("default_filament_profile")->values) { + // A ";"-separated list can leave an empty trailing segment; formatting noise, not a name. + if (name.empty()) + continue; + const Preset *filament = filaments.find_preset(name, false); + if ((filament == nullptr || !filament->is_system) && reported_unknown_profiles.insert(name).second) { + found = true; + BOOST_LOG_TRIVIAL(error) << "Printer preset \"" << printer.name << "\" (vendor \"" << printer.vendor->name + << "\", model \"" << printer.config.opt_string("printer_model") << "\", variant \"" + << printer.config.opt_string("printer_variant") + << "\") names the unknown system filament \"" << name + << "\" in its \"default_filament_profile\":\n" << preset_file_uri(printer.file); + } + } + } + } + return found; +} + // Orca: a filament is matched from the AMS by (filament_id + printer compatibility). // For any one printer, at most one instantiated filament preset with a given // filament_id may be compatible - otherwise the AMS match is ambiguous and the diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 88455fabf3..5a8f34e706 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -617,6 +617,11 @@ public: // compatible_prints references a deleted (unknown) or renamed (old) preset name. bool check_preset_references() const; + // Validator-only: every system FFF printer variant needs a compatible system filament + // named in its model's default_materials, every name there and in the printer's + // default_filament_profile must resolve to a system filament. + bool check_printer_default_materials() const; + // Merge one vendor's presets with the other vendor's presets, report duplicates. // Public so per-vendor-cache consumers (e.g. the setup wizard) can assemble a // bundle out of several per-vendor caches loaded into separate PresetBundle instances. diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index 73d244cf42..6ec6ba9b1e 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -553,6 +553,107 @@ TEST_CASE("Profile validator flags dangling and renamed preset references", "[Pr } } +TEST_CASE("Every printer variant has a compatible default material", "[Preset][Validate][DefaultMaterials]") +{ + PresetBundle bundle; + auto &vendor = bundle.vendors["Acme"]; + vendor.id = vendor.name = "Acme"; + vendor.models.emplace_back(); + auto &model = vendor.models.back(); + model.id = model.name = "Acme Printer"; + model.default_materials = {"Acme PLA @0.4", "Acme PLA @0.6"}; + + for (const std::string variant : {"0.4", "0.6"}) { + model.variants.emplace_back(variant); + const std::string printer_name = "Acme Printer " + variant; + Preset &printer = add_inmemory_preset(bundle.printers, printer_name); + printer.is_system = true; + printer.is_visible = false; // Validation covers uninstalled variants too. + printer.vendor = &vendor; + printer.config.option("printer_model")->value = model.id; + printer.config.option("printer_variant")->value = variant; + printer.config.option("nozzle_diameter")->values = {std::stod(variant)}; + + Preset &filament = add_inmemory_preset(bundle.filaments, "Acme PLA @" + variant); + filament.is_system = true; + filament.vendor = &vendor; + filament.alias = "Acme PLA"; + filament.config.option("compatible_printers")->values = {printer_name}; + } + + // A second system filament, compatible with a user printer this model does not have, so a + // section can list a known-but-incompatible name without tripping the existence check. + Preset &other_printer = add_inmemory_preset(bundle.printers, "Acme Printer 0.2"); + other_printer.vendor = &vendor; + Preset &other_filament = add_inmemory_preset(bundle.filaments, "Acme PLA @0.2"); + other_filament.is_system = true; + other_filament.vendor = &vendor; + other_filament.alias = "Acme PLA"; + other_filament.config.option("compatible_printers")->values = {"Acme Printer 0.2"}; + + CHECK_FALSE(bundle.has_errors()); + bool expected_errors = true; + + SECTION("A model default for one nozzle does not cover another nozzle") { + model.default_materials = {"Acme PLA @0.4"}; + } + SECTION("An empty default list leaves every variant uncovered") { + model.default_materials.clear(); + } + SECTION("An unknown filament cannot be a default") { + model.default_materials = {"Missing PLA"}; + } + SECTION("An unknown name is an error even when a compatible default covers the variant") { + model.default_materials.insert(model.default_materials.begin(), "Missing PLA"); + } + SECTION("An unknown default_filament_profile name is an error") { + bundle.printers.find_preset("Acme Printer 0.6", false, true) + ->config.option("default_filament_profile", true)->values = {"Missing PLA"}; + } + SECTION("A known default_filament_profile name is not an error") { + bundle.printers.find_preset("Acme Printer 0.6", false, true) + ->config.option("default_filament_profile", true)->values = {"Acme PLA @0.6"}; + expected_errors = false; + } + SECTION("A short alias does not resolve as an installed default") { + model.default_materials = {"Acme PLA"}; + } + SECTION("A user filament cannot satisfy a shipped default") { + bundle.filaments.find_preset("Acme PLA @0.6", false, true)->is_system = false; + } + SECTION("One compatible default per variant is sufficient") { + model.default_materials.insert(model.default_materials.begin(), "Acme PLA @0.2"); + expected_errors = false; + } + SECTION("Compatibility conditions apply to each nozzle") { + model.default_materials = {"Acme PLA @0.4"}; + Preset *filament = bundle.filaments.find_preset("Acme PLA @0.4", false, true); + auto &library = bundle.vendors[PresetBundle::ORCA_FILAMENT_LIBRARY]; + library.id = library.name = PresetBundle::ORCA_FILAMENT_LIBRARY; + filament->vendor = &library; + filament->config.option("compatible_printers")->values.clear(); + filament->config.option("compatible_printers_condition")->value = "nozzle_diameter[0] == 0.4"; + } + SECTION("Library defaults respect printer exclusions") { + model.default_materials = {"Acme PLA @0.4"}; + Preset *filament = bundle.filaments.find_preset("Acme PLA @0.4", false, true); + auto &library = bundle.vendors[PresetBundle::ORCA_FILAMENT_LIBRARY]; + library.id = library.name = PresetBundle::ORCA_FILAMENT_LIBRARY; + filament->vendor = &library; + filament->config.option("compatible_printers")->values.clear(); + CHECK_FALSE(bundle.check_printer_default_materials()); + filament->m_excluded_from.insert("Acme Printer 0.6"); + } + SECTION("User printers do not need model defaults") { + model.default_materials = {"Acme PLA @0.4"}; + bundle.printers.find_preset("Acme Printer 0.6", false, true)->is_system = false; + expected_errors = false; + } + + CHECK(bundle.check_printer_default_materials() == expected_errors); + CHECK(bundle.has_errors() == expected_errors); +} + // Under a shared override key, the last preset merged into the full config overwrote the others', so an // edited slicing-pipeline override never reached Print::apply's diff and re-configuring a plugin never // re-sliced. Per-type keys make that collision impossible; guard the scoping here. From c833ccdf6ff76a7deb6fba8e55b3b71c908ccb47 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 17 Sep 2026 14:27:53 -0300 Subject: [PATCH 160/162] Update localizations and improve strings (#15739) --- localization/i18n/OrcaSlicer.pot | 223 ++++++--- localization/i18n/ca/OrcaSlicer_ca.po | 502 +++++++++++++++---- localization/i18n/cs/OrcaSlicer_cs.po | 504 ++++++++++++++----- localization/i18n/de/OrcaSlicer_de.po | 498 +++++++++++++++---- localization/i18n/en/OrcaSlicer_en.po | 223 ++++++--- localization/i18n/es/OrcaSlicer_es.po | 494 +++++++++++++++---- localization/i18n/eu/OrcaSlicer_eu.po | 494 +++++++++++++++---- localization/i18n/fr/OrcaSlicer_fr.po | 498 +++++++++++++++---- localization/i18n/hu/OrcaSlicer_hu.po | 502 +++++++++++++++---- localization/i18n/it/OrcaSlicer_it.po | 502 +++++++++++++++---- localization/i18n/ja/OrcaSlicer_ja.po | 502 +++++++++++++++---- localization/i18n/ko/OrcaSlicer_ko.po | 504 ++++++++++++++----- localization/i18n/lt/OrcaSlicer_lt.po | 498 +++++++++++++++---- localization/i18n/nl/OrcaSlicer_nl.po | 504 ++++++++++++++----- localization/i18n/pl/OrcaSlicer_pl.po | 502 +++++++++++++++---- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 496 +++++++++++++++---- localization/i18n/ru/OrcaSlicer_ru.po | 502 +++++++++++++++---- localization/i18n/sv/OrcaSlicer_sv.po | 508 +++++++++++++++----- localization/i18n/th/OrcaSlicer_th.po | 502 +++++++++++++++---- localization/i18n/tr/OrcaSlicer_tr.po | 498 +++++++++++++++---- localization/i18n/uk/OrcaSlicer_uk.po | 498 +++++++++++++++---- localization/i18n/vi/OrcaSlicer_vi.po | 504 ++++++++++++++----- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 502 +++++++++++++++---- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 502 +++++++++++++++---- src/libslic3r/GCode/ToolOrdering.cpp | 6 +- src/libslic3r/PrintConfig.cpp | 3 +- src/slic3r/GUI/AMSDryControl.cpp | 4 +- src/slic3r/GUI/ColorDecomposeSupport.cpp | 5 +- src/slic3r/GUI/GCodeViewer.cpp | 9 +- src/slic3r/GUI/PublishSettingsDialog.cpp | 107 +++-- src/slic3r/GUI/UnsavedChangesDialog.cpp | 2 +- src/slic3r/GUI/Widgets/TempInput.cpp | 4 +- src/slic3r/Utils/PresetUpdater.cpp | 4 +- 33 files changed, 9124 insertions(+), 2482 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index a063ab0484..32269c0e6d 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2293,13 +2293,6 @@ msgstr "" msgid "%s has been removed." msgstr "" - -msgid "Select the language" -msgstr "" - -msgid "Language" -msgstr "" - #, possible-c-format, possible-boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "" @@ -3486,10 +3479,12 @@ msgstr "" msgid "Switch track at Filament Track Switch" msgstr "" -msgid "The maximum temperature cannot exceed " +#, possible-c-format, possible-boost-format +msgid "The maximum temperature cannot exceed %d" msgstr "" -msgid "The minmum temperature should not be less than " +#, possible-c-format, possible-boost-format +msgid "The minimum temperature should not be less than %d" msgstr "" msgid "Type to filter..." @@ -4322,6 +4317,12 @@ msgid "" "Error message: %1%" msgstr "" +#, possible-boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" + #, possible-boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "" @@ -4994,8 +4995,10 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "" #, possible-c-format, possible-boost-format -msgid "" -"Is it %s%% or %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "" + +msgid "%" msgstr "" #, possible-boost-format @@ -5021,16 +5024,13 @@ msgstr "" msgid "System agents" msgstr "" -msgid "No plugin selected" -msgstr "" - msgid "Add plugin" msgstr "" -msgid "Select plugin" +msgid "Remove plugin" msgstr "" -msgid "Remove plugin" +msgid "No plugin selected" msgstr "" msgid "Configure" @@ -5286,13 +5286,16 @@ msgstr "" msgid "Regroup filament" msgstr "" -msgid "up to" +#, possible-boost-format +msgid "up to %1% mm" msgstr "" -msgid "above" +#, possible-boost-format +msgid "above %1% mm" msgstr "" -msgid "from" +#, possible-boost-format +msgid "from %1% to %2% mm" msgstr "" msgid "Usage" @@ -5643,7 +5646,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-boost-format +#, possible-c-format, possible-boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "" @@ -7180,6 +7183,12 @@ msgctxt "Layers" msgid "Bottom" msgstr "" +msgid "This setting does not specify a plugin capability type." +msgstr "" + +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "" + msgid "Plugin Selection" msgstr "" @@ -8290,7 +8299,6 @@ msgstr "" msgid "Language selection" msgstr "" - msgid "Asia-Pacific" msgstr "" @@ -8384,6 +8392,9 @@ msgstr "" msgid "General" msgstr "" +msgid "Language" +msgstr "" + msgid "Metric" msgstr "" @@ -8773,9 +8784,6 @@ msgstr "" msgid "Dimmed layer brightness" msgstr "" -msgid "%" -msgstr "" - msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" "99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option." @@ -9169,13 +9177,12 @@ msgstr "" msgid "Filament %d (mixed)" msgstr "" -msgid "needs" +#, possible-boost-format +msgid "%1% needs %2%, which is not enabled." msgstr "" -msgid "not enabled" -msgstr "" - -msgid "material not published" +#, possible-boost-format +msgid "%1% needs %2%, whose material will not be published." msgstr "" msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." @@ -9230,6 +9237,9 @@ msgstr "" msgid "Detach from parent" msgstr "" +msgid "Save without parent" +msgstr "" + msgid "Unique preset" msgstr "" @@ -9879,9 +9889,15 @@ msgstr "" msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "" +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "" +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "" + msgid "Still print by object?" msgstr "" @@ -10230,9 +10246,6 @@ msgstr "" msgid "Printable space" msgstr "" -msgid "Printer Agent" -msgstr "" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "" @@ -10592,12 +10605,6 @@ msgstr "" msgid "Capabilities" msgstr "" -msgid "Left: " -msgstr "" - -msgid "Right: " -msgstr "" - msgid "Show all presets (including incompatible)" msgstr "" @@ -11401,15 +11408,19 @@ msgstr "" msgid "Copying of file %1% to %2% failed: %3%" msgstr "" +msgid "Downloading new vendor profile(s): " +msgstr "" + +#, possible-boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "" + +msgid "Failed to download vendor profile(s): " +msgstr "" + msgid "Please check any unsaved changes before updating the configuration." msgstr "" -msgid "Configuration package: " -msgstr "" - -msgid " updated to " -msgstr "" - msgid "Open G-code file:" msgstr "" @@ -11465,10 +11476,12 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "" -msgid "Grouping error: " +#, possible-boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" msgstr "" -msgid " can not be placed in the " +#, possible-boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" msgstr "" msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -11582,6 +11595,9 @@ msgstr "" msgid "%1% is too tall, and collisions will be caused." msgstr "" +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "" @@ -11904,6 +11920,9 @@ msgstr "" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "" +msgid "Printer Agent" +msgstr "" + msgid "Select the network agent implementation for printer communication." msgstr "" @@ -12752,6 +12771,9 @@ msgstr "" msgid "Concentric" msgstr "" +msgid "Spiral Inset" +msgstr "" + msgid "Hilbert Curve" msgstr "" @@ -12821,7 +12843,7 @@ msgid "Top surface fill order" msgstr "" msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" @@ -12830,7 +12852,7 @@ msgid "Bottom surface fill order" msgstr "" msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" @@ -12918,6 +12940,12 @@ msgstr "" msgid "Clockwise" msgstr "" +msgid "Distance to rod" +msgstr "" + +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "" + msgid "Height to rod" msgstr "" @@ -14868,6 +14896,15 @@ msgstr "" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "" +msgid "Print unsupported walls last" +msgstr "" + +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" + msgid "Outer walls" msgstr "" @@ -15277,6 +15314,27 @@ msgstr "" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe inward" +msgstr "" + +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" + +msgid "Wipe inward distance" +msgstr "" + +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" + msgid "Wipe before external loop" msgstr "" @@ -15517,7 +15575,7 @@ msgstr "" msgid "No sparse layers (beta)" msgstr "" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "" msgid "Prime all printing extruders" @@ -15538,6 +15596,24 @@ msgstr "" msgid "Cyclic" msgstr "" +msgid "Cyclic order" +msgstr "" + +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" + +msgid "Apply cyclic order to first layer" +msgstr "" + +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" + msgid "Slice gap closing radius" msgstr "" @@ -15547,9 +15623,6 @@ msgstr "" msgid "Slicing Mode" msgstr "" -msgid "Other" -msgstr "" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "" @@ -16452,6 +16525,12 @@ msgstr "" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "" +msgid "Strict mode" +msgstr "" + +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "" + msgid "Normative check" msgstr "" @@ -16464,10 +16543,22 @@ msgstr "" msgid "This outputs the model’s information." msgstr "" +msgid "Inspect mesh (JSON to stdout)" +msgstr "" + +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "" + +msgid "Inspect paint (JSON to stdout)" +msgstr "" + +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "" + msgid "Export Settings" msgstr "" -msgid "This exports settings to a file." +msgid "This exports settings to a file. Use - to write them to stdout." msgstr "" msgid "Send progress to pipe" @@ -16524,6 +16615,24 @@ msgstr "" msgid "Rotation angle around the Y axis in degrees." msgstr "" +msgid "Ground largest face" +msgstr "" + +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + +msgid "Ground face by normal" +msgstr "" + +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + +msgid "Ground face at point" +msgstr "" + +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + msgid "Scale the model by a float factor." msgstr "" @@ -19654,10 +19763,12 @@ msgstr "" msgid "Drying-Dehumidifying" msgstr "" -msgid " maximum drying temperature is " +#, possible-c-format, possible-boost-format +msgid "%s maximum drying temperature is %d°C." msgstr "" -msgid " minimum drying temperature is " +#, possible-c-format, possible-boost-format +msgid "%s minimum drying temperature is %d°C." msgstr "" msgid "This filament may not be completely dried." diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 4fee47786f..e1a06108b6 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -2522,13 +2522,6 @@ msgstr "Hi ha una actualització disponible. Obriu el quadre de diàleg del paqu msgid "%s has been removed." msgstr "%s s'ha eliminat." - -msgid "Select the language" -msgstr "Seleccioneu l'idioma" - -msgid "Language" -msgstr "Idioma" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3782,11 +3775,15 @@ msgstr "Retirar el filament actual al Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Canviar de via al Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "La temperatura màxima no pot superar " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "La temperatura màxima no pot superar %d" -msgid "The minmum temperature should not be less than " -msgstr "La temperatura mínima no hauria de ser inferior a " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "La temperatura mínima no hauria de ser inferior a %d" # AI Translated msgid "Type to filter..." @@ -4687,6 +4684,15 @@ msgstr "" "Error en copiar el codi-G temporal al codi-G de sortida. Potser la targeta SD està bloquejada contra escriptura?\n" "Missatge d'error: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Ha fallat la còpia del codi-G temporal al codi-G de sortida.\n" +"Missatge d'error: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Error en copiar el codi-G temporal al codi-G de sortida. Hi pot haver un problema amb el dispositiu de destinació, intenteu exportar novament o utilitzeu un dispositiu diferent. El codi-G de sortida malmès és a %1%.tmp." @@ -5428,10 +5434,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "El valor %s està fora de rang. El rang vàlid és de %d a %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"És %s%% or %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "És %s%% or %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5457,22 +5464,18 @@ msgstr "Format no vàlid. Format vectorial esperat: \"%1%\"" msgid "System agents" msgstr "Agents del sistema" -# AI Translated -msgid "No plugin selected" -msgstr "Cap connector seleccionat" - # AI Translated msgid "Add plugin" msgstr "Afegir connector" -# AI Translated -msgid "Select plugin" -msgstr "Seleccionar connector" - # AI Translated msgid "Remove plugin" msgstr "Eliminar connector" +# AI Translated +msgid "No plugin selected" +msgstr "Cap connector seleccionat" + # AI Translated msgid "Configure" msgstr "Configurar" @@ -5731,14 +5734,20 @@ msgstr "Estableix a l'òptim" msgid "Regroup filament" msgstr "Reagrupa filaments" -msgid "up to" -msgstr "fins a" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "fins a %1% mm" -msgid "above" -msgstr "sobre" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "per sobre de %1% mm" -msgid "from" -msgstr "des de" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "de %1% a %2% mm" msgid "Usage" msgstr "Ús" @@ -6101,7 +6110,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "S'han trobat conflictes de rutes gcode a la capa %d, Z = %.2lfmm. Si us plau, separeu els objectes conflictius més lluny ( %s <-> %s )." @@ -6415,11 +6424,13 @@ msgstr "Desa el projecte com a" msgid "Save current project as" msgstr "Desar el projecte actual com" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publicar 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exportar un fitxer 3MF amb la configuració seleccionada incrustada" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF STL/STEP/SVG/OBJ/AMF" @@ -7704,6 +7715,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Inferior" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Aquesta opció no especifica cap tipus de capacitat del connector." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Aquesta opció especifica un tipus de capacitat del connector no reconegut: " + # AI Translated msgid "Plugin Selection" msgstr "Selecció de connectors" @@ -8275,11 +8294,13 @@ msgstr "Confirmeu que els Codis-G d'aquests perfils són segurs per evitar danys msgid "Customized Preset" msgstr "Perfil personalitzat" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "No s'han pogut aplicar algunes opcions publicades:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "S'han canviat algunes ranures de filament:" # AI Translated msgid "Component name(s) inside step file not in UTF-8 format!" @@ -8693,13 +8714,17 @@ msgstr "Desa el fitxer Laminat com a:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El fitxer %s s'ha enviat a l'emmagatzematge de la impressora i es pot visualitzar a la impressora." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publicar el fitxer 3MF com a:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"No s'ha pogut exportar el fitxer 3MF publicat.\n" +"Comproveu si la carpeta existeix en línia o si altres programes tenen el fitxer obert." msgid "Publish" msgstr "Publicar" @@ -8918,7 +8943,6 @@ msgstr "Voleu continuar?" msgid "Language selection" msgstr "Selecció d'idiomes" - msgid "Asia-Pacific" msgstr "Àsia-Pacífic" @@ -9024,6 +9048,9 @@ msgstr "Ruta de la Instància Actual: " msgid "General" msgstr "General" +msgid "Language" +msgstr "Idioma" + msgid "Metric" msgstr "Mètric" @@ -9489,9 +9516,6 @@ msgstr "En desplaçar el control lliscant de capes a la previsualització lamina msgid "Dimmed layer brightness" msgstr "Brillantor de les capes enfosquides" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9910,63 +9934,80 @@ msgstr "Carregant dades" msgid "Jump to webpage" msgstr "Anar a la pàgina web" +# AI Translated msgid "Material" -msgstr "" +msgstr "Material" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filament mixt" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Alguns filaments mixtos depenen de filaments que no es publicaran:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (mixt)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% necessita %2%, que no està activat." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% necessita %2%, el material del qual no es publicarà." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Per publicar un filament mixt, activeu tots els filaments que fa servir i trieu Publicació completa o compliu el seu requisit de Tipus." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Publicar igualment" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publicar 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Seleccioneu quines opcions es publicaran al fitxer 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki de Publicar 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Guia en vídeo de Publicar 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filament mixt - es publica com un conjunt quan se selecciona \"Activar\" a dalt" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publicar aquest filament mixt i activar + publicar completament els seus filaments components" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publicar aquesta ranura de filament al fitxer 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Publicació completa" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Incrustar tot el filament d'aquesta ranura al fitxer 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrar els no seleccionats" #, c-format, boost-format msgid "Save %s as" @@ -9985,6 +10026,10 @@ msgstr "Copia en aquest perfil tots els valors heretats del perfil pare i elimin msgid "Detach from parent" msgstr "Desvincula del pare" +# AI Translated +msgid "Save without parent" +msgstr "Desar sense pare" + # AI Translated msgid "Unique preset" msgstr "Perfil únic" @@ -10692,9 +10737,17 @@ msgstr "Es necessita una torre de purga per a la detecció d'acumulació. Pot ha msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Activar tant l'alçada Z precisa com la torre de purga pot causar errors de tall. Voleu activar l'alçada Z precisa igualment?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "El timelapse suau necessita una Torre de Purga a cada capa, cosa que no és compatible amb \"Sense capes poc denses\". S'ha desactivat \"Sense capes poc denses\"." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "La Torre de Purga és necessària per a un timelapse suau. Pot haver-hi defectes en el model sense Torre de Purga. Vols habilitar la Torre de Purga?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Sense capes poc denses\" no és compatible amb el timelapse suau, que necessita una Torre de Purga a cada capa. El timelapse ha canviat al mode tradicional." + msgid "Still print by object?" msgstr "Continuar imprimint per objecte?" @@ -11072,9 +11125,6 @@ msgstr "Perfils de processos compatibles" msgid "Printable space" msgstr "Espai imprimible" -msgid "Printer Agent" -msgstr "Agent de la impressora" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora. Els agents disponibles es registren a l'inici." @@ -11495,14 +11545,6 @@ msgstr "Nombre d'extrusors" msgid "Capabilities" msgstr "Capacitats" -# AI Translated -msgid "Left: " -msgstr "Esquerra: " - -# AI Translated -msgid "Right: " -msgstr "Dreta: " - msgid "Show all presets (including incompatible)" msgstr "Mostra tots els perfils ( inclosos els incompatibles )" @@ -12355,15 +12397,22 @@ msgstr "Reparació cancel·lada" msgid "Copying of file %1% to %2% failed: %3%" msgstr "La còpia del fitxer %1% a %2% ha fallat: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "S'estan descarregant perfils de fabricant nous: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Paquet de configuració: %1% actualitzat a %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "No s'han pogut descarregar els perfils de fabricant: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Cal comprovar els canvis no desats abans de les actualitzacions de configuració." -msgid "Configuration package: " -msgstr "Paquet de configuració: " - -msgid " updated to " -msgstr " actualitzat a " - msgid "Open G-code file:" msgstr "Obre el fitxer de Codi-G:" @@ -12428,11 +12477,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "L'Input Shaping només és compatible amb Klipper, RepRapFirmware i Marlin 2." -msgid "Grouping error: " -msgstr "Error d'agrupació: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Error d'agrupació: %1% no es pot col·locar al broquet esquerre" -msgid " can not be placed in the " -msgstr " no es pot col·locar al " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Error d'agrupació: %1% no es pot col·locar al broquet dret" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12547,6 +12600,10 @@ msgstr "%1% està massa a prop d'altres i es poden produir col·lisions." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% és massa alt i es provocaran col·lisions." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "La posició relativa del model i la Torre de Purga no compleix els requisits de la funció \"Sense capes poc denses\". Ajusteu-ne les posicions relatives, reduïu l'alçada del model o desactiveu \"Sense capes poc denses\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " està massa a prop de l'àrea d'exclusió, pot haver-hi col·lisions en imprimir." @@ -12911,6 +12968,9 @@ msgstr "Utilitzar 3MF en lloc de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activeu-ho si la impressora accepta un fitxer 3MF com a treball d'impressió. Quan està activat, Orca Slicer envia el fitxer laminat com a .gcode.3mf, en lloc d'un fitxer .gcode simple." +msgid "Printer Agent" +msgstr "Agent de la impressora" + msgid "Select the network agent implementation for printer communication." msgstr "Seleccioneu la implementació de l'agent de xarxa per a la comunicació amb la impressora." @@ -13987,6 +14047,10 @@ msgstr "Alineat Rectilini" msgid "Concentric" msgstr "Concèntric" +# AI Translated +msgid "Spiral Inset" +msgstr "Espiral interior" + msgid "Hilbert Curve" msgstr "Corba de Hilbert" @@ -14078,13 +14142,13 @@ msgstr "Ordre d'emplenament de la superfície superior" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direcció en què s'omplen les superfícies superiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n" -"Cap a fora comença al centre de la superfície, de manera que l'excés de material es desplaça cap a la vora, on és menys visible. Cap a dins comença a la vora i acaba amb les corbes tancades del centre.\n" -"Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció." +"Direcció en què s'omplen les superfícies superiors quan es fa servir un patró basat en el centre (Concèntric, Espiral interior, Acords d'Arquimedes, Octograma en Espiral).\n" +"Cap a fora comença al centre de la superfície, de manera que el material sobrant s'empeny cap a la vora, on és menys visible. Cap a dins comença a la vora i acaba amb les corbes tancades del centre.\n" +"Per defecte fa servir l'ordre del camí més curt, que pot anar en qualsevol dels dos sentits." # AI Translated msgid "Bottom surface fill order" @@ -14092,13 +14156,13 @@ msgstr "Ordre d'emplenament de la superfície inferior" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direcció en què s'omplen les superfícies inferiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n" -"Cap a dins comença cada superfície amb les corbes exteriors més amples, cosa que millora l'adherència de la capa inicial en plaques on les corbes tancades del centre poden no adherir-se. Cap a fora comença al centre i desplaça l'excés de material cap a la vora.\n" -"Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció." +"Direcció en què s'omplen les superfícies inferiors quan es fa servir un patró basat en el centre (Concèntric, Espiral interior, Acords d'Arquimedes, Octograma en Espiral).\n" +"Cap a dins comença cada superfície per les corbes exteriors més amples, cosa que millora l'adhesió de la capa inicial en llits on les corbes tancades del centre poden no agafar-se. Cap a fora comença al centre i empeny el material sobrant cap a la vora.\n" +"Per defecte fa servir l'ordre del camí més curt, que pot anar en qualsevol dels dos sentits." msgid "Internal solid infill pattern" msgstr "Patró de farciment sòlid intern" @@ -14203,6 +14267,14 @@ msgstr "En sentit contrari a les agulles del rellotge" msgid "Clockwise" msgstr "En el sentit de les agulles del rellotge" +# AI Translated +msgid "Distance to rod" +msgstr "Distància a la barra" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Distància horitzontal de la punta del broquet a la vora més llunyana de la barra. Es fa servir per evitar col·lisions en la impressió per objecte." + msgid "Height to rod" msgstr "Alçada a la tija" @@ -16421,6 +16493,20 @@ msgstr "Detectar voladís de perímetre" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Detectar el percentatge de voladís en relació amb l'amplada de la línia i utilitzar una velocitat diferent per imprimir. Per al voladís del 100%%, s'utilitza la velocitat de pont." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Imprimir al final els perímetres sense suport" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Els bucles de perímetre que queden completament a l'aire s'imprimeixen quan alguna cosa els pot sostenir:\n" +"s'extrudeixen després dels altres perímetres de la seva illa, començant pel més interior, sigui quin sigui l'ordre de perímetres.\n" +"Un bucle que només poden ancorar els ponts d'aquesta capa espera que s'imprimeixin aquests ponts, mentre que un bucle que va al costat d'un perímetre amb suport manté el seu lloc abans del farciment, que el necessita com a ancoratge." + # AI Translated msgid "Outer walls" msgstr "Perímetres exteriors" @@ -16869,6 +16955,39 @@ msgstr "Neteja en bucles" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Per minimitzar la visibilitat de la costura en una extrusió de bucle tancat, s'executa un petit moviment cap a l'interior abans que l'extrusora surti del bucle." +# AI Translated +msgid "Wipe inward" +msgstr "Netejar cap a dins" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Només s'aplica als perímetres exteriors, inclosos els contorns dels forats. Durant la neteja mou el broquet calent cap als perímetres interiors ja impresos per reduir el reescalfament del plàstic acabat d'imprimir i les marques de costura.\n" +"\n" +"És especialment útil amb alçades de capa per sota de 0,1 mm, on les marques de neteja es veuen més.\n" +"\n" +"Fa servir la neteja normal si no hi ha cap perímetre interior contigu ja imprès (zones d'un sol perímetre o ordre de perímetres Exterior/Interior) o si no es troba cap trajectòria cap a dins amb suport, per exemple a cantonades tancades o a buits de la costura." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Distància de neteja cap a dins" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Distància que es desplaça la trajectòria de neteja allunyant-se del perímetre exterior, indicada en mil·límetres o com a percentatge de l'amplada d'extrusió real del perímetre exterior.\n" +"\n" +"Per exemple, 50% desplaça la trajectòria la meitat de l'amplada del perímetre exterior. El desplaçament efectiu està limitat tant per l'amplada real del perímetre exterior com per l'espai disponible fins al perímetre contigu, de manera que els valors per sobre de 100% o una distància absoluta equivalent no tenen cap efecte addicional. Poseu-hi 0 per desactivar el desplaçament." + msgid "Wipe before external loop" msgstr "Netejar abans del bucle extern" @@ -17133,8 +17252,9 @@ msgstr "Recull la nova eina sense esperar que arribi a la temperatura d'impressi msgid "No sparse layers (beta)" msgstr "Sense capes poc denses( beta )" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Si està habilitat, la Torre de Purga no s'imprimeix en capes sense canvis d'eina. En capes amb canvi d'eina, l'extrusor es desplaçarà cap avall per imprimir la Torre de Purga. L'usuari és responsable de garantir que no hi hagi col·lisió amb la impressió." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Si s'activa, la Torre de Purga no s'imprimirà a les capes sense canvis d'eina. A les capes amb un canvi d'eina, l'extrusor baixarà per imprimir la Torre de Purga, de manera que la torre queda per sota del model i el capçal ha de baixar fins a ella. Es rebutgen les disposicions en què això xocaria amb un objecte ja imprès. No té cap efecte amb el timelapse suau ni amb la detecció d'obstruccions al broquet, que necessiten una torre a cada capa." msgid "Prime all printing extruders" msgstr "Purgar tots els extrusors d'impressió" @@ -17160,6 +17280,34 @@ msgstr "" msgid "Cyclic" msgstr "Cíclic" +# AI Translated +msgid "Cyclic order" +msgstr "Ordre cíclic" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Seqüència de filaments personalitzada que fa servir l'ordre cíclic de canvis d'eina, com a números de filament separats per comes (p. ex. \"3,2,1,4\").\n" +"Cada capa imprimeix els seus filaments seguint aquesta seqüència; els filaments que no hi consten s'imprimeixen al final, en ordre ascendent.\n" +"Deixeu-ho buit per recórrer els filaments en ordre ascendent." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Aplicar l'ordre cíclic a la capa inicial" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Aplica l'ordre cíclic de canvis d'eina també a la capa inicial.\n" +"Per defecte està desactivat, perquè la capa inicial s'ordena en lloc d'això per aconseguir la millor adhesió al llit: els filaments que imprimeixen detalls petits i fràgils de la capa inicial s'imprimeixen al final, de manera que els canvis d'eina i els recorreguts posteriors tenen menys probabilitats d'arrencar aquestes peces mal ancorades. Aquest ordre de la capa inicial també respecta una seqüència de filaments personalitzada per a la capa inicial quan se n'ha definit una. L'avantatge de l'ordre cíclic (els canvis d'eina addicionals donen a cada capa més temps per refredar-se) no s'aplica a la capa inicial, que s'imprimeix a poc a poc i calenta per afavorir l'adhesió.\n" +"Activeu-ho només si necessiteu exactament la mateixa seqüència d'eines a totes les capes, inclosa la primera, a costa d'aquesta optimització de l'adhesió." + msgid "Slice gap closing radius" msgstr "Radi de tancament dels buits en laminar" @@ -17169,9 +17317,6 @@ msgstr "Les esquerdes de menys de dues vegades el radi de tancament de buits s'o msgid "Slicing Mode" msgstr "Mode de laminat" -msgid "Other" -msgstr "Altre" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Utilitzeu \"Parell-imparell\" per als models d'avió 3DLabPrint. Utilitzeu \"Tancar forats\" per tancar tots els forats del model." @@ -18189,6 +18334,14 @@ msgstr "No comprovar" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "No executar cap comprovació de validesa, com ara la comprovació de conflictes de trajectòria al Codi-G." +# AI Translated +msgid "Strict mode" +msgstr "Mode estricte" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Surt amb un codi diferent de zero quan el llescat genera un avís no crític que altrament només es registraria, com ara un model que necessita suports mentre els suports estan desactivats. Feu-ho servir en CI o en processos automatitzats que mai no han de lliurar un llescat subtilment defectuós. Cadascun d'aquests avisos també apareix amb una classe estable a la matriu `warnings` de result.json, que només s'escriu a Linux. No es pot combinar amb --no-check, que omet la comprovació de suports." + msgid "Normative check" msgstr "Comprovació normativa" @@ -18201,11 +18354,28 @@ msgstr "Informació del model de sortida" msgid "This outputs the model’s information." msgstr "Emet la informació del model." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Inspeccionar la malla (JSON a stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Escriu a stdout un resum JSON de cada objecte carregat i després surt: les seves capses contenidores i les cares de l'envolupant convexa sobre les quals es pot recolzar, amb les normals, àrees i centres corresponents. Aquestes són les cares entre les quals trien les opcions --ground-*. Alternativa llegible per màquina a --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Inspeccionar el pintat (JSON a stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Escriu un resum JSON estructurat de cada capa pintada (suports, costura, color MMU, pell difusa) ja desada al model carregat — nombre de facetes, àrea de superfície i capsa contenidora local a la malla per a cada estat — i després surt. Alternativa llegible per màquina a obrir les eines de pintat a la interfície." + msgid "Export Settings" msgstr "Exportar Configuració" -msgid "This exports settings to a file." -msgstr "Exporta la configuració a un fitxer." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Això exporta la configuració a un fitxer. Feu servir - per escriure-la a stdout." msgid "Send progress to pipe" msgstr "Envia el progrés a la canalització" @@ -18261,6 +18431,30 @@ msgstr "Rotar al voltant de l'eix Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotació al voltant de l'eix Y en graus." +# AI Translated +msgid "Ground largest face" +msgstr "Recolzar sobre la cara més gran" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Recolza cada objecte sobre la cara més gran de la seva envolupant convexa i el deixa caure sobre el llit. Entre cares igual de grans es conserva la que ja mira cap avall. Els objectes sense una cara prou gran per recolzar-s'hi es deixen tal com estan. Les transformacions s'apliquen en l'ordre de la línia d'ordres, de manera que es respecten les rotacions indicades abans d'aquesta opció. --orient 1 s'executa després de totes les transformacions i substitueix l'orientació." + +# AI Translated +msgid "Ground face by normal" +msgstr "Recolzar sobre la cara segons la normal" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Recolza cada objecte sobre la cara de l'envolupant convexa la normal exterior de la qual sigui més propera a la direcció NX,NY,NZ i el deixa caure sobre el llit. La direcció és en coordenades de l'objecte, que inclouen les rotacions indicades abans d'aquesta opció i coincideixen amb els eixos de la safata llevat que el fitxer d'entrada giri l'objecte. Per exemple, 1,0,0 recolza l'objecte sobre el seu costat +X. --orient 1 s'executa després de totes les transformacions i substitueix l'orientació." + +# AI Translated +msgid "Ground face at point" +msgstr "Recolzar sobre la cara en un punt" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Recolza cada objecte sobre la cara de l'envolupant convexa que conté el punt X,Y,Z i el deixa caure sobre el llit. El punt és en coordenades de l'objecte, que inclouen les rotacions indicades abans d'aquesta opció; --inspect-mesh indica els centres de les cares en aquestes coordenades. Els objectes sense una cara així es deixen tal com estan, i l'execució falla si cap objecte en té. --orient 1 s'executa després de totes les transformacions i substitueix l'orientació." + msgid "Scale the model by a float factor." msgstr "Escala el model amb un factor flotant" @@ -21457,14 +21651,17 @@ msgstr "Aquesta acció no es pot desfer. Continuar?" msgid "Skipping objects." msgstr "Ometent objectes." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Proporció de material" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Alçada del model" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proporció" msgid "Select Filament" msgstr "Seleccioneu filament" @@ -21749,12 +21946,14 @@ msgid "Drying-Dehumidifying" msgstr "Assecatge - Deshumidificació" # AI Translated -msgid " maximum drying temperature is " -msgstr " la temperatura màxima d'assecatge és " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "La temperatura màxima d'assecatge de %s és %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " la temperatura mínima d'assecatge és " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "La temperatura mínima d'assecatge de %s és %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -22200,6 +22399,97 @@ msgstr "" "Evitar la deformació( warping )\n" "Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?" +#~ msgid "Other" +#~ msgstr "Altre" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Esquerra: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Dreta: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "La temperatura màxima no pot superar " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "La temperatura mínima no hauria de ser inferior a " + +#~ msgid "up to" +#~ msgstr "fins a" + +#~ msgid "above" +#~ msgstr "sobre" + +#~ msgid "from" +#~ msgstr "des de" + +#~ msgid "Configuration package: " +#~ msgstr "Paquet de configuració: " + +#~ msgid " updated to " +#~ msgstr " actualitzat a " + +#~ msgid "Grouping error: " +#~ msgstr "Error d'agrupació: " + +#~ msgid " can not be placed in the " +#~ msgstr " no es pot col·locar al " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " la temperatura màxima d'assecatge és " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " la temperatura mínima d'assecatge és " + +# AI Translated +#~ msgid "needs" +#~ msgstr "necessita" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "no activat" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "material no publicat" + +#~ msgid "Select the language" +#~ msgstr "Seleccioneu l'idioma" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Seleccionar connector" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direcció en què s'omplen les superfícies superiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n" +#~ "Cap a fora comença al centre de la superfície, de manera que l'excés de material es desplaça cap a la vora, on és menys visible. Cap a dins comença a la vora i acaba amb les corbes tancades del centre.\n" +#~ "Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direcció en què s'omplen les superfícies inferiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n" +#~ "Cap a dins comença cada superfície amb les corbes exteriors més amples, cosa que millora l'adherència de la capa inicial en plaques on les corbes tancades del centre poden no adherir-se. Cap a fora comença al centre i desplaça l'excés de material cap a la vora.\n" +#~ "Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Si està habilitat, la Torre de Purga no s'imprimeix en capes sense canvis d'eina. En capes amb canvi d'eina, l'extrusor es desplaçarà cap avall per imprimir la Torre de Purga. L'usuari és responsable de garantir que no hi hagi col·lisió amb la impressió." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exporta la configuració a un fitxer." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "La visualització en directe nativa de Wayland requereix el sink de vídeo GTK de GStreamer. Instal·leu el connector gtksink per a GStreamer i reinicieu l'OrcaSlicer." diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index f79c90bcd1..9dd405673e 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -2482,13 +2482,6 @@ msgstr "Je k dispozici aktualizace. Otevřete dialog balíčku předvoleb a prov msgid "%s has been removed." msgstr "%s bylo odstraněno." - -msgid "Select the language" -msgstr "Zvolte jazyk" - -msgid "Language" -msgstr "Jazyk" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3749,11 +3742,15 @@ msgstr "Vytáhnout aktuální filament zpět na Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Přepnout dráhu na Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "Maximální teplota nesmí překročit " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Maximální teplota nesmí překročit %d" -msgid "The minmum temperature should not be less than " -msgstr "Minimální teplota nesmí být nižší než " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Minimální teplota nesmí být nižší než %d" # AI Translated msgid "Type to filter..." @@ -4647,6 +4644,15 @@ msgstr "" "Kopírování dočasného G-kódu do výstupního G-kódu selhalo. Možná je SD karta uzamčená pro zápis?\n" "Chybová zpráva: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Kopírování dočasného G-kódu do výstupního G-kódu selhalo.\n" +"Chybová zpráva: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Kopírování dočasného G-kódu do výstupního G-kódu selhalo. Může být problém s cílovým zařízením, zkuste prosím exportovat znovu nebo použijte jiné zařízení. Poškozený výstupní G-kód je na %1%.tmp." @@ -5385,10 +5391,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Hodnota %s je mimo rozsah. Platný rozsah je od %d do %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Je to %s%% nebo %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Je to %s%% nebo %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5414,22 +5421,18 @@ msgstr "Neplatný formát. Očekávaný vektorový formát: \"%1%\"" msgid "System agents" msgstr "Systémoví agenti" -# AI Translated -msgid "No plugin selected" -msgstr "Není vybrán žádný plugin" - # AI Translated msgid "Add plugin" msgstr "Přidat plugin" -# AI Translated -msgid "Select plugin" -msgstr "Vybrat plugin" - # AI Translated msgid "Remove plugin" msgstr "Odebrat plugin" +# AI Translated +msgid "No plugin selected" +msgstr "Není vybrán žádný plugin" + # AI Translated msgid "Configure" msgstr "Konfigurovat" @@ -5690,14 +5693,20 @@ msgstr "Nastavit optimální" msgid "Regroup filament" msgstr "Znovu seskupit filament" -msgid "up to" -msgstr "až do" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "až do %1% mm" -msgid "above" -msgstr "nad" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "nad %1% mm" -msgid "from" -msgstr "Od" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "od %1% do %2% mm" msgid "Usage" msgstr "Využití" @@ -6063,7 +6072,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Byly nalezeny konflikty drah G-kódu ve vrstvě %d, Z = %.2lf mm. Oddělte prosím konfliktní objekty více od sebe (%s <-> %s)." @@ -6376,11 +6385,13 @@ msgstr "Uložit projekt jako" msgid "Save current project as" msgstr "Uložit aktuální projekt jako" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publikovat 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exportovat soubor 3MF s vloženými vybranými nastaveními" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importovat 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7671,6 +7682,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Spodní" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Toto nastavení neurčuje typ schopnosti pluginu." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Toto nastavení určuje neznámý typ schopnosti pluginu: " + # AI Translated msgid "Plugin Selection" msgstr "Výběr pluginů" @@ -8237,11 +8256,13 @@ msgstr "Potvrďte prosím, že je G-code v těchto předvolbách bezpečný, aby msgid "Customized Preset" msgstr "Přizpůsobená předvolba" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Některá publikovaná nastavení nebylo možné použít:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Některé sloty filamentu byly změněny:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Názvy komponent v souboru STEP nejsou ve formátu UTF-8!" @@ -8653,13 +8674,17 @@ msgstr "Uložit rozřezaný soubor jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Soubor %s byl odeslán do úložiště tiskárny a lze jej zobrazit na tiskárně." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publikovat soubor 3MF jako:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Export publikovaného souboru 3MF selhal.\n" +"Zkontrolujte prosím, zda složka existuje online, nebo zda soubor nemají otevřený jiné programy." msgid "Publish" msgstr "Publikovat" @@ -8876,7 +8901,6 @@ msgstr "Chcete pokračovat?" msgid "Language selection" msgstr "Výběr jazyka" - msgid "Asia-Pacific" msgstr "Asie-Pacifik" @@ -8982,6 +9006,9 @@ msgstr "Cesta k aktuální instanci: " msgid "General" msgstr "Obecné" +msgid "Language" +msgstr "Jazyk" + msgid "Metric" msgstr "Metrika" @@ -9444,9 +9471,6 @@ msgstr "Při posouvání posuvníku vrstev v náhledu po slicování vykresluje msgid "Dimmed layer brightness" msgstr "Jas ztmavených vrstev" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9858,63 +9882,80 @@ msgstr "Nahrávání dat" msgid "Jump to webpage" msgstr "Přejít na webovou stránku" +# AI Translated msgid "Material" -msgstr "" +msgstr "Materiál" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Míchaný filament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Některé míchané filamenty závisejí na filamentech, které nebudou publikovány:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (míchaný)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% vyžaduje %2%, který není povolen." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% vyžaduje %2%, jehož materiál nebude publikován." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Chcete-li publikovat míchaný filament, povolte každý filament, který používá, a zvolte Úplné publikování nebo splňte jeho požadavek Typ." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Přesto publikovat" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publikovat 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Vyberte, která nastavení se mají publikovat v souboru 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki k publikování 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Videonávod k publikování 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Míchaný filament - publikuje se jako celek, pokud je výše zvoleno \"Povolit\"" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publikovat tento míchaný filament a povolit + úplně publikovat jeho složkové filamenty" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publikovat tento slot filamentu v souboru 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Úplné publikování" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Vložit celý filament tohoto slotu do souboru 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrovat nevybrané" #, c-format, boost-format msgid "Save %s as" @@ -9934,6 +9975,10 @@ msgstr "Zkopíruje do této předvolby všechny hodnoty zděděné z nadřazené msgid "Detach from parent" msgstr "Oddělit od nadřazeného" +# AI Translated +msgid "Save without parent" +msgstr "Uložit bez nadřazeného" + # AI Translated msgid "Unique preset" msgstr "Samostatná předvolba" @@ -10640,9 +10685,17 @@ msgstr "Pro detekci shlukování je vyžadována čistící věž. Bez čistíc msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Povolení přesné výšky Z i čistící věže může způsobit chyby slicování. Chcete přesto povolit přesnou výšku Z?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Plynulý časosběr vyžaduje čistící věž na každé vrstvě, což není slučitelné s možností \"Žádné řídké vrstvy\". Možnost \"Žádné řídké vrstvy\" byla vypnuta." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Pro hladký časosběr je potřeba základní věž. Model může mít vady bez základní věže. Chcete povolit základní věž?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "Možnost \"Žádné řídké vrstvy\" není slučitelná s plynulým časosběrem, který vyžaduje čistící věž na každé vrstvě. Časosběr byl přepnut do tradičního režimu." + msgid "Still print by object?" msgstr "Stále tisknout po objektu?" @@ -11021,10 +11074,6 @@ msgstr "Kompatibilní procesní profily" msgid "Printable space" msgstr "Tisknutelný prostor" -# AI Translated -msgid "Printer Agent" -msgstr "Agent tiskárny" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou. Dostupní agenti jsou registrováni při spuštění." @@ -11440,14 +11489,6 @@ msgstr "Počet extrudérů" msgid "Capabilities" msgstr "Možnosti" -# AI Translated -msgid "Left: " -msgstr "Levý: " - -# AI Translated -msgid "Right: " -msgstr "Pravý: " - msgid "Show all presets (including incompatible)" msgstr "Zobrazit všechny předvolby (včetně nekompatibilních)" @@ -12339,15 +12380,22 @@ msgstr "Oprava zrušena" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Kopírování souboru %1% do %2% selhalo: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Stahování nových profilů dodavatelů: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Balíček konfigurace: %1% aktualizováno na %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Stažení profilů dodavatelů selhalo: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Nejprve je třeba zkontrolovat neuložené změny před aktualizací konfigurace." -msgid "Configuration package: " -msgstr "Balíček konfigurace: " - -msgid " updated to " -msgstr " aktualizováno na " - msgid "Open G-code file:" msgstr "Otevřít G-code soubor:" @@ -12407,11 +12455,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input Shaping je podporován pouze v Klipperu, RepRapFirmware a Marlinu 2" -msgid "Grouping error: " -msgstr "Chyba seskupení: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Chyba seskupení: %1% nelze umístit do levé trysky" -msgid " can not be placed in the " -msgstr " nelze umístit do " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Chyba seskupení: %1% nelze umístit do pravé trysky" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12526,6 +12578,10 @@ msgstr "%1% je příliš blízko ostatním, může dojít ke kolizím." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% je příliš vysoký, může dojít ke kolizím." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Vzájemná poloha modelu a čistící věže nesplňuje požadavky funkce \"Žádné řídké vrstvy\". Upravte prosím jejich vzájemnou polohu, snižte výšku modelu nebo vypněte možnost \"Žádné řídké vrstvy\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " je příliš blízko oblasti vyloučení, při tisku mohou nastat kolize." @@ -12889,6 +12945,10 @@ msgstr "Použít 3MF místo G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Zapněte, pokud tiskárna přijímá jako tiskovou úlohu soubor 3MF. Je-li zapnuto, odešle Orca Slicer slicovaný soubor jako .gcode.3mf místo prostého souboru .gcode." +# AI Translated +msgid "Printer Agent" +msgstr "Agent tiskárny" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Vyberte implementaci síťového agenta pro komunikaci s tiskárnou." @@ -13952,6 +14012,10 @@ msgstr "Zarovnaná pravoúhlá" msgid "Concentric" msgstr "Koncentrický" +# AI Translated +msgid "Spiral Inset" +msgstr "Spirálový odsaz" + msgid "Hilbert Curve" msgstr "Hilbertova křivka" @@ -14043,13 +14107,13 @@ msgstr "Pořadí vyplňování horního povrchu" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Směr, ve kterém jsou horní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n" -"Ven začíná ve středu povrchu, takže je přebytečný materiál vytlačen k okraji, kde je nejméně viditelný. Dovnitř začíná u okraje a končí těsnými oblouky ve středu.\n" -"Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech." +"Směr, ve kterém se vyplňují horní povrchy při použití vzoru vycházejícího ze středu (Koncentrický, Spirálový odsaz, Archimédovy akordy, Oktagramová spirála).\n" +"Ven začíná ve středu povrchu, takže se přebytečný materiál vytlačuje k okraji, kde je nejméně vidět. Dovnitř začíná u okraje a končí těsnými oblouky ve středu.\n" +"Výchozí používá řazení podle nejkratší cesty, které může probíhat v obou směrech." # AI Translated msgid "Bottom surface fill order" @@ -14057,13 +14121,13 @@ msgstr "Pořadí vyplňování spodního povrchu" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Směr, ve kterém jsou spodní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n" -"Dovnitř začíná každý povrch širšími vnějšími oblouky, což zlepšuje přilnavost první vrstvy na podložkách, kde se těsné oblouky ve středu nemusí přichytit. Ven začíná ve středu a přebytečný materiál vytlačuje k okraji.\n" -"Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech." +"Směr, ve kterém se vyplňují spodní povrchy při použití vzoru vycházejícího ze středu (Koncentrický, Spirálový odsaz, Archimédovy akordy, Oktagramová spirála).\n" +"Dovnitř začíná každý povrch širšími vnějšími oblouky, což zlepšuje přilnavost počáteční vrstvy na podložkách, kde se těsné oblouky ve středu nemusí uchytit. Ven začíná ve středu a vytlačuje přebytečný materiál k okraji.\n" +"Výchozí používá řazení podle nejkratší cesty, které může probíhat v obou směrech." msgid "Internal solid infill pattern" msgstr "Vzor vnitřní plné výplně" @@ -14166,6 +14230,14 @@ msgstr "Proti směru hodinových ručiček" msgid "Clockwise" msgstr "Po směru hodinových ručiček" +# AI Translated +msgid "Distance to rod" +msgstr "Vzdálenost k tyči" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Vodorovná vzdálenost špičky trysky ke vzdálenější hraně tyče. Používá se pro vyhýbání se kolizím při tisku podle objektu." + msgid "Height to rod" msgstr "Výška k tyči" @@ -16362,6 +16434,20 @@ msgstr "Detekovat převislou stěnu" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Detekuje procento převisu vzhledem k šířce čáry a použije odlišnou rychlost tisku. Pro 100%% převis je použita rychlost mostů." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Tisknout nepodepřené stěny jako poslední" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Smyčky stěn, které leží zcela ve vzduchu, se tisknou až ve chvíli, kdy je má co udržet:\n" +"extrudují se po ostatních stěnách svého ostrůvku, nejprve ta nejvnitřnější, bez ohledu na pořadí stěn.\n" +"Smyčka, kterou dokážou ukotvit pouze můstky této vrstvy, čeká, až budou tyto můstky vytištěny, zatímco smyčka vedoucí podél podepřené stěny si ponechá své místo před výplní, která ji potřebuje jako ukotvení." + # AI Translated msgid "Outer walls" msgstr "Vnější stěny" @@ -16806,6 +16892,39 @@ msgstr "Očištění na okruzích" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Pro minimalizaci viditelnosti stehu v uzavřené smyčce extruze je před opuštěním smyčky tryskou proveden malý pohyb směrem dovnitř." +# AI Translated +msgid "Wipe inward" +msgstr "Očištění dovnitř" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Platí pouze pro vnější stěny včetně obrysů otvorů. Během očištění posouvá horkou trysku směrem k již vytištěným vnitřním stěnám, aby se omezilo opětovné zahřívání čerstvě vytištěného plastu a stopy po švu.\n" +"\n" +"Obzvláště užitečné při výškách vrstvy pod 0,1 mm, kde jsou stopy po očištění výraznější.\n" +"\n" +"Použije běžné očištění, pokud není žádná sousední vnitřní stěna již vytištěná (oblasti s jedinou stěnou nebo pořadí stěn Vnější/Vnitřní) nebo pokud nelze najít podepřenou dráhu dovnitř, například v ostrých rozích nebo v mezerách švu." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Vzdálenost očištění dovnitř" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Vzdálenost, o kterou se dráha očištění posune od vnějšího obvodu, uvedená v milimetrech nebo jako procento skutečné šířky extruze vnější stěny.\n" +"\n" +"Například 50% posune dráhu o polovinu šířky vnější stěny. Účinný posun je omezen jak skutečnou šířkou vnější stěny, tak dostupnou mezerou k sousední stěně, takže hodnoty nad 100% nebo odpovídající absolutní vzdálenost už nemají další účinek. Nastavením na 0 posun vypnete." + msgid "Wipe before external loop" msgstr "Očištění před vnějším okruhem" @@ -17073,8 +17192,9 @@ msgstr "Vyzvedne nový nástroj, aniž by čekal na dosažení tiskové teploty, msgid "No sparse layers (beta)" msgstr "Žádné řídké vrstvy (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Je-li povoleno, věž na očištění trysky se nebude tisknout na vrstvách bez změny nástroje. Na vrstvách s výměnou nástroje pojede extruder dolů k tisku věže na očištění trysky. Uživatel je zodpovědný za zajištění, že nedojde ke kolizi s tiskem." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Pokud je povoleno, čistící věž se nebude tisknout na vrstvách bez změny nástroje. Na vrstvách se změnou nástroje extruder sjede dolů, aby čistící věž vytiskl, takže věž skončí pod modelem a tisková hlava k ní musí dosáhnout dolů. Rozvržení, kde by to znamenalo kolizi s již vytištěným objektem, jsou odmítnuta. Nemá vliv při plynulém časosběru ani při detekci nánosů na trysce, které vyžadují věž na každé vrstvě." msgid "Prime all printing extruders" msgstr "Připravit všechny tiskové extrudery" @@ -17100,6 +17220,34 @@ msgstr "" msgid "Cyclic" msgstr "Cyklické" +# AI Translated +msgid "Cyclic order" +msgstr "Cyklické pořadí" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Vlastní posloupnost filamentů použitá cyklickým řazením změn nástroje, jako čísla filamentů oddělená čárkami (např. \"3,2,1,4\").\n" +"Každá vrstva tiskne své filamenty podle této posloupnosti; filamenty, které v ní nejsou uvedeny, se tisknou jako poslední, ve vzestupném pořadí.\n" +"Ponechte prázdné, chcete-li filamenty procházet ve vzestupném pořadí." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Použít cyklické pořadí na počáteční vrstvu" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Použije cyklické pořadí změn nástroje také na počáteční vrstvu.\n" +"Ve výchozím nastavení je vypnuto, protože počáteční vrstva se místo toho řadí pro nejlepší přilnavost k podložce: filamenty, které tisknou malé, křehké prvky počáteční vrstvy, se tisknou jako poslední, takže následné změny nástroje a přejezdy tyto slabě ukotvené části s menší pravděpodobností urazí. Toto pořadí počáteční vrstvy také respektuje vlastní posloupnost filamentů pro počáteční vrstvu, je-li nastavena. Přínos cyklického pořadí (další změny nástroje dávají každé vrstvě více času na vychladnutí) se na počáteční vrstvu nevztahuje, protože se tiskne pomalu a horká kvůli přilnavosti.\n" +"Povolte to pouze tehdy, pokud potřebujete přesně stejnou posloupnost nástrojů na každé vrstvě včetně první, za cenu této optimalizace přilnavosti." + msgid "Slice gap closing radius" msgstr "Poloměr uzavření mezery řezu" @@ -17109,9 +17257,6 @@ msgstr "Trhliny menší než 2x poloměr uzavření mezery jsou při řezání t msgid "Slicing Mode" msgstr "Režim slicingu" -msgid "Other" -msgstr "Ostatní" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Použijte \"Sudý-lichý\" pro modely letadel 3DLabPrint. Použijte \"Zavřít díry\" pro uzavření všech otvorů v modelu." @@ -18111,6 +18256,14 @@ msgstr "Bez kontroly" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Nespouštějte žádné kontroly platnosti, například kontrolu konfliktů dráhy G-kódu." +# AI Translated +msgid "Strict mode" +msgstr "Přísný režim" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Skončí s nenulovým návratovým kódem, pokud slicování vyvolá nekritické varování, které by se jinak pouze zapsalo do protokolu, například model vyžadující podpory, zatímco jsou podpory vypnuté. Použijte v CI nebo ve skriptovaných procesech, které nikdy nesmí dodat nenápadně vadný výsledek slicování. Každé takové varování je navíc uvedeno se stabilní třídou v poli `warnings` souboru result.json, který se zapisuje pouze na Linuxu. Nelze kombinovat s --no-check, který přeskakuje kontrolu podpor." + msgid "Normative check" msgstr "Normativní kontrola" @@ -18123,11 +18276,28 @@ msgstr "Informace o výstupním modelu" msgid "This outputs the model’s information." msgstr "Zobrazit informace o modelu." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Prozkoumat síť (JSON na stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Vypíše na stdout souhrn JSON pro každý načtený objekt a poté skončí: jeho ohraničující kvádry a stěny konvexní obálky, na které jej lze položit, včetně jejich normál, obsahů a středů. Právě z těchto stěn vybírají volby --ground-*. Strojově čitelná alternativa k --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Prozkoumat malování (JSON na stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Vypíše strukturovaný souhrn JSON každé malované vrstvy (podpory, šev, barva MMU, fuzzy skin) již uložené v načteném modelu — počet facet, plochu povrchu a ohraničující kvádr v souřadnicích sítě pro každý stav — a poté skončí. Strojově čitelná alternativa k otevření malovacích nástrojů v rozhraní." + msgid "Export Settings" msgstr "Exportovat nastavení" -msgid "This exports settings to a file." -msgstr "Exportovat nastavení do souboru." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Toto exportuje nastavení do souboru. Použijte - pro zápis na stdout." msgid "Send progress to pipe" msgstr "Odesílat průběh do pipe" @@ -18183,6 +18353,30 @@ msgstr "Otočit kolem osy Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Úhel rotace kolem osy Y ve stupních." +# AI Translated +msgid "Ground largest face" +msgstr "Položit na největší stěnu" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Položí každý objekt na největší stěnu jeho konvexní obálky a spustí jej na podložku. Ze stejně velkých stěn se zachová ta, která již směřuje dolů. Objekty bez stěny dostatečně velké na to, aby na ní mohly spočívat, zůstanou beze změny. Transformace se provádějí v pořadí zadání na příkazové řádce, takže rotace uvedené před touto volbou jsou respektovány. --orient 1 se spouští po všech transformacích a nahrazuje orientaci." + +# AI Translated +msgid "Ground face by normal" +msgstr "Položit na stěnu podle normály" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Položí každý objekt na tu stěnu konvexní obálky, jejíž vnější normála je nejblíže směru NX,NY,NZ, a spustí jej na podložku. Směr je v souřadnicích objektu, které zahrnují rotace uvedené před touto volbou a odpovídají osám podložky, pokud vstupní soubor objekt neotáčí. Například 1,0,0 postaví objekt na jeho stranu +X. --orient 1 se spouští po všech transformacích a nahrazuje orientaci." + +# AI Translated +msgid "Ground face at point" +msgstr "Položit na stěnu v bodě" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Položí každý objekt na tu stěnu konvexní obálky, která obsahuje bod X,Y,Z, a spustí jej na podložku. Bod je v souřadnicích objektu, které zahrnují rotace uvedené před touto volbou; --inspect-mesh uvádí středy stěn v těchto souřadnicích. Objekty bez takové stěny zůstanou beze změny a běh selže, pokud ji nemá žádný objekt. --orient 1 se spouští po všech transformacích a nahrazuje orientaci." + msgid "Scale the model by a float factor." msgstr "Změnit měřítko modelu podle desetinného faktoru." @@ -21401,14 +21595,17 @@ msgstr "Tuto akci nelze vrátit zpět. Pokračovat?" msgid "Skipping objects." msgstr "Přeskakování objektů." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Poměr materiálu" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Výška modelu" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Poměr" # AI Translated msgid "Select Filament" @@ -21724,12 +21921,14 @@ msgid "Drying-Dehumidifying" msgstr "Sušení – odvlhčování" # AI Translated -msgid " maximum drying temperature is " -msgstr " maximální teplota sušení je " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Maximální teplota sušení pro %s je %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " minimální teplota sušení je " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Minimální teplota sušení pro %s je %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -22181,6 +22380,97 @@ msgstr "" "Zamezte kroucení\n" "Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?" +#~ msgid "Other" +#~ msgstr "Ostatní" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Levý: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Pravý: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Maximální teplota nesmí překročit " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Minimální teplota nesmí být nižší než " + +#~ msgid "up to" +#~ msgstr "až do" + +#~ msgid "above" +#~ msgstr "nad" + +#~ msgid "from" +#~ msgstr "Od" + +#~ msgid "Configuration package: " +#~ msgstr "Balíček konfigurace: " + +#~ msgid " updated to " +#~ msgstr " aktualizováno na " + +#~ msgid "Grouping error: " +#~ msgstr "Chyba seskupení: " + +#~ msgid " can not be placed in the " +#~ msgstr " nelze umístit do " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " maximální teplota sušení je " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " minimální teplota sušení je " + +# AI Translated +#~ msgid "needs" +#~ msgstr "vyžaduje" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "není povoleno" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materiál není publikován" + +#~ msgid "Select the language" +#~ msgstr "Zvolte jazyk" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Vybrat plugin" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Směr, ve kterém jsou horní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n" +#~ "Ven začíná ve středu povrchu, takže je přebytečný materiál vytlačen k okraji, kde je nejméně viditelný. Dovnitř začíná u okraje a končí těsnými oblouky ve středu.\n" +#~ "Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Směr, ve kterém jsou spodní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n" +#~ "Dovnitř začíná každý povrch širšími vnějšími oblouky, což zlepšuje přilnavost první vrstvy na podložkách, kde se těsné oblouky ve středu nemusí přichytit. Ven začíná ve středu a přebytečný materiál vytlačuje k okraji.\n" +#~ "Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Je-li povoleno, věž na očištění trysky se nebude tisknout na vrstvách bez změny nástroje. Na vrstvách s výměnou nástroje pojede extruder dolů k tisku věže na očištění trysky. Uživatel je zodpovědný za zajištění, že nedojde ke kolizi s tiskem." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exportovat nastavení do souboru." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Nativní živý náhled ve Waylandu vyžaduje video sink GStreamer GTK. Nainstalujte prosím plugin gtksink pro GStreamer a poté restartujte OrcaSlicer." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 2a3e4e19d6..a4909c409b 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -2430,13 +2430,6 @@ msgstr "Es ist ein Update verfügbar. Öffnen Sie den Profilbündel-Dialog, um e msgid "%s has been removed." msgstr "%s wurde entfernt." - -msgid "Select the language" -msgstr "Sprache wählen" - -msgid "Language" -msgstr "Sprache" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3678,11 +3671,15 @@ msgstr "Aktuelles Filament am Filament Track Switch zurückziehen" msgid "Switch track at Filament Track Switch" msgstr "Spur am Filament Track Switch wechseln" -msgid "The maximum temperature cannot exceed " -msgstr "Die maximale Temperatur darf nicht überschritten werden " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Die maximale Temperatur darf %d nicht überschreiten" -msgid "The minmum temperature should not be less than " -msgstr "Die minimale Temperatur sollte nicht weniger als " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Die minimale Temperatur darf %d nicht unterschreiten" msgid "Type to filter..." msgstr "Tippen zum Filtern..." @@ -4554,6 +4551,15 @@ msgstr "" "Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. Ist die SD-Karte schreibgeschützt?\n" "Fehlermeldung: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen.\n" +"Fehlermeldung: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. Es könnte ein Problem mit dem Zielgerät geben. Versuchen Sie es erneut oder verwenden Sie ein anderes Gerät. Der beschädigte Ausgabe-G-Code befindet sich in %1%.tmp." @@ -5290,10 +5296,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Wert %s ist außerhalb des Bereichs. Der gültige Bereich liegt zwischen %d und %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Heißt es %s%% oder %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Heißt es %s%% oder %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5319,22 +5326,18 @@ msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\"" msgid "System agents" msgstr "Systemagenten" -# AI Translated -msgid "No plugin selected" -msgstr "Kein Plugin ausgewählt" - # AI Translated msgid "Add plugin" msgstr "Plugin hinzufügen" -# AI Translated -msgid "Select plugin" -msgstr "Plugin auswählen" - # AI Translated msgid "Remove plugin" msgstr "Plugin entfernen" +# AI Translated +msgid "No plugin selected" +msgstr "Kein Plugin ausgewählt" + # AI Translated msgid "Configure" msgstr "Konfigurieren" @@ -5590,14 +5593,20 @@ msgstr "Auf optimal setzen" msgid "Regroup filament" msgstr "Filament neu gruppieren" -msgid "up to" -msgstr "bis zu" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "bis zu %1% mm" -msgid "above" -msgstr "über" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "über %1% mm" -msgid "from" -msgstr "von" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "von %1% bis %2% mm" msgid "Usage" msgstr "Nutzung" @@ -5957,7 +5966,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Konflikte von G-Code-Pfaden wurden bei Layer %d, Z = %.2lf mm gefunden.Bitte trennen Sie die konfliktbehafteten Objekte weiter voneinander (%s <-> %s)." @@ -6268,11 +6277,13 @@ msgstr "Projekt speichern als" msgid "Save current project as" msgstr "Aktuelles Projekt speichern als" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MF veröffentlichen" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Eine 3MF-Datei mit den ausgewählten eingebetteten Einstellungen exportieren" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7541,6 +7552,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Untere" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Diese Einstellung gibt keinen Plugin-Fähigkeitstyp an." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Diese Einstellung gibt einen unbekannten Plugin-Fähigkeitstyp an: " + # AI Translated msgid "Plugin Selection" msgstr "Plugin-Auswahl" @@ -8107,11 +8126,13 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher msgid "Customized Preset" msgstr "Benutzerdefinierte Profile" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Einige veröffentlichte Einstellungen konnten nicht angewendet werden:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Einige Filament-Steckplätze wurden geändert:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF-8-Format!" @@ -8525,13 +8546,17 @@ msgstr "Geslicte Datei speichern unter:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MF-Datei veröffentlichen als:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Die veröffentlichte 3MF-Datei konnte nicht exportiert werden.\n" +"Bitte prüfen Sie, ob der Ordner online liegt oder ob andere Programme die Datei geöffnet haben." msgid "Publish" msgstr "Veröffentlichen" @@ -8748,7 +8773,6 @@ msgstr "Möchten Sie fortfahren?" msgid "Language selection" msgstr "Sprachauswahl" - msgid "Asia-Pacific" msgstr "Asien-Pazifik" @@ -8853,6 +8877,9 @@ msgstr "Aktueller Instanzpfad: " msgid "General" msgstr "Allgemein" +msgid "Language" +msgstr "Sprache" + msgid "Metric" msgstr "Metrisch" @@ -9291,9 +9318,6 @@ msgstr "Beim Bewegen des Schichtreglers in der geslicten Vorschau werden die Sch msgid "Dimmed layer brightness" msgstr "Helligkeit abgedunkelter Schichten" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9692,63 +9716,80 @@ msgstr "Daten werden hochgeladen" msgid "Jump to webpage" msgstr "Zu einer Website springen" +# AI Translated msgid "Material" -msgstr "" +msgstr "Material" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Mischfilament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Einige Mischfilamente benötigen Filamente, die nicht veröffentlicht werden:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (gemischt)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% benötigt %2%, das nicht aktiviert ist." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% benötigt %2%, dessen Material nicht veröffentlicht wird." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Um ein Mischfilament zu veröffentlichen, aktivieren Sie jedes von ihm verwendete Filament und wählen Sie Vollständig veröffentlichen oder erfüllen Sie dessen Typ-Anforderung." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Trotzdem veröffentlichen" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MF veröffentlichen..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Wählen Sie aus, welche Einstellungen in der 3MF-Datei veröffentlicht werden" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki: 3MF veröffentlichen" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Videoanleitung: 3MF veröffentlichen" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Mischfilament - wird als Ganzes veröffentlicht, wenn oben \"Aktivieren\" ausgewählt ist" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Dieses Mischfilament veröffentlichen und seine Komponentenfilamente aktivieren + vollständig veröffentlichen" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Diesen Filament-Steckplatz in der 3MF-Datei veröffentlichen" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Vollständig veröffentlichen" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Das gesamte Filament dieses Steckplatzes in die 3MF-Datei einbetten" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Nicht ausgewählte filtern" #, c-format, boost-format msgid "Save %s as" @@ -9767,6 +9808,10 @@ msgstr "Kopiert alle vom übergeordneten Profil geerbten Werte in dieses Profil msgid "Detach from parent" msgstr "Vom übergeordneten Element trennen" +# AI Translated +msgid "Save without parent" +msgstr "Ohne übergeordnetes Element speichern" + # AI Translated msgid "Unique preset" msgstr "Eigenständiges Profil" @@ -10467,9 +10512,17 @@ msgstr "Reinigungsturm ist für die Erkennung von Klumpen erforderlich. Ohne Rei msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Das Aktivieren von sowohl präziser Z-Höhe als auch Reinigungsturm kann zu Slicing-Fehlern führen. Möchten Sie trotzdem die präzise Z-Höhe aktivieren?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Der Smooth-Zeitraffer benötigt auf jeder Schicht einen Reinigungsturm und ist daher nicht mit \"Keine dünnen Schichten\" kompatibel. \"Keine dünnen Schichten\" wurde deaktiviert." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Für den gewählten Zeitraffermodus ist ein Reinigungsturm erforderlich. Ohne Reinigungsturm kann es zu Fehlern am Modell kommen. Möchten Sie den Reinigungsturm aktivieren?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Keine dünnen Schichten\" ist nicht mit dem Smooth-Zeitraffer kompatibel, der auf jeder Schicht einen Reinigungsturm benötigt. Der Zeitraffer wurde auf den traditionellen Modus umgestellt." + msgid "Still print by object?" msgstr "Trotzdem nach Objekt drucken?" @@ -10839,9 +10892,6 @@ msgstr "Kompatible Prozessprofile" msgid "Printable space" msgstr "Druckbarer Raum" -msgid "Printer Agent" -msgstr "Drucker-Agent" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert." @@ -11243,12 +11293,6 @@ msgstr "Anzahl der Extruder" msgid "Capabilities" msgstr "Fähigkeiten" -msgid "Left: " -msgstr "Links: " - -msgid "Right: " -msgstr "Rechts: " - msgid "Show all presets (including incompatible)" msgstr "Alle Profile anzeigen (auch inkompatible)" @@ -12086,15 +12130,22 @@ msgstr "Reparatur abgebrochen" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Kopieren der Datei %1% nach %2% fehlgeschlagen: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Neue Herstellerprofile werden heruntergeladen: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Konfigurationspaket: %1% aktualisiert auf %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Herstellerprofile konnten nicht heruntergeladen werden: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Vor der Aktualisierung der Konfiguration müssen die nicht gespeicherten Änderungen überprüft werden." -msgid "Configuration package: " -msgstr "Konfigurationspaket:" - -msgid " updated to " -msgstr " aktualisiert auf " - msgid "Open G-code file:" msgstr "Öffne G-Code-Datei:" @@ -12154,11 +12205,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input Shaping wird nur von Klipper, RepRapFirmware und Marlin 2 unterstützt" -msgid "Grouping error: " -msgstr "Gruppierungsfehler: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Gruppierungsfehler: %1% kann nicht in der linken Düse platziert werden" -msgid " can not be placed in the " -msgstr " kann nicht platziert werden in der " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Gruppierungsfehler: %1% kann nicht in der rechten Düse platziert werden" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12272,6 +12327,10 @@ msgstr "%1% ist zu nah an anderen, was Kollisionen verursachen kann." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% ist zu hoch und es kommt zu Kollisionen." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Die relative Position von Modell und Reinigungsturm erfüllt nicht die Anforderungen der Funktion \"Keine dünnen Schichten\". Bitte passen Sie ihre relative Position an, verringern Sie die Modellhöhe oder deaktivieren Sie \"Keine dünnen Schichten\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " befindet sich zu nahe an einem Sperrbereich. Beim Drucken kann es zu Kollisionen kommen." @@ -12617,6 +12676,9 @@ msgstr "Benutze 3MF statt G-Code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Aktivieren Sie diese Option, wenn der Drucker eine 3MF-Datei als Druckauftrag akzeptiert. Wenn aktiviert, sendet Orca Slicer die geslicete Datei als .gcode.3mf, anstatt als einfache .gcode-Datei." +msgid "Printer Agent" +msgstr "Drucker-Agent" + msgid "Select the network agent implementation for printer communication." msgstr "Wählen Sie die Netzwerk-Agent-Implementierung für die Druckerkommunikation aus." @@ -13661,6 +13723,10 @@ msgstr "Geradlinig ausgerichtet" msgid "Concentric" msgstr "Konzentrisch" +# AI Translated +msgid "Spiral Inset" +msgstr "Spiralversatz" + msgid "Hilbert Curve" msgstr "Hilbert-Kurve" @@ -13752,13 +13818,13 @@ msgstr "Füllreihenfolge der oberen Oberfläche" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Richtung, in der obere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n" -"Nach außen beginnt in der Mitte der Oberfläche, sodass überschüssiges Material zum Rand geschoben wird, wo es am wenigsten sichtbar ist. Nach innen beginnt am Rand und endet mit den engen Kurven in der Mitte.\n" -"Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann." +"Richtung, in der obere Flächen gefüllt werden, wenn ein zentrumsbasiertes Muster verwendet wird (Konzentrisch, Spiralversatz, Archimedische Akkorde, Oktagramm Spirale).\n" +"Nach außen beginnt in der Mitte der Fläche, sodass überschüssiges Material zum Rand gedrückt wird, wo es am wenigsten sichtbar ist. Nach innen beginnt am Rand und endet mit den engen Kurven in der Mitte.\n" +"Standard verwendet die Reihenfolge des kürzesten Weges, die in beide Richtungen verlaufen kann." # AI Translated msgid "Bottom surface fill order" @@ -13766,13 +13832,13 @@ msgstr "Füllreihenfolge der unteren Oberfläche" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Richtung, in der untere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n" -"Nach innen beginnt jede Oberfläche mit den breiteren äußeren Kurven, was die Haftung der ersten Schicht auf Druckbetten verbessert, auf denen die engen Kurven in der Mitte möglicherweise nicht haften. Nach außen beginnt in der Mitte und schiebt überschüssiges Material zum Rand.\n" -"Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann." +"Richtung, in der untere Flächen gefüllt werden, wenn ein zentrumsbasiertes Muster verwendet wird (Konzentrisch, Spiralversatz, Archimedische Akkorde, Oktagramm Spirale).\n" +"Nach innen beginnt jede Fläche mit den weiteren äußeren Kurven, was die Haftung der ersten Schicht auf Druckbetten verbessert, auf denen die engen Kurven in der Mitte möglicherweise nicht haften. Nach außen beginnt in der Mitte und drückt überschüssiges Material zum Rand.\n" +"Standard verwendet die Reihenfolge des kürzesten Weges, die in beide Richtungen verlaufen kann." msgid "Internal solid infill pattern" msgstr "Muster für das interne feste Füllmuster" @@ -13875,6 +13941,14 @@ msgstr "Gegen den Uhrzeigersinn" msgid "Clockwise" msgstr "Im Uhrzeigersinn" +# AI Translated +msgid "Distance to rod" +msgstr "Abstand zur Stange" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Horizontaler Abstand der Düsenspitze zur entfernteren Kante der Stange. Wird zur Kollisionsvermeidung beim Drucken nach Objekt verwendet." + msgid "Height to rod" msgstr "Höhe zur Führung" @@ -16028,6 +16102,20 @@ msgstr "Erkennen von Wandüberhängen" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Erkennt den Prozentsatz des Überhangs im Verhältnis zur Linienbreite und verwenden hierfür eine unterschiedliche Druckgeschwindigkeiten. Bei einem 100%% Überhang wird die Brückengeschwindigkeit verwendet." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Nicht gestützte Wände zuletzt drucken" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Wandschleifen, die vollständig in der Luft liegen, werden erst gedruckt, wenn etwas sie halten kann:\n" +"Sie werden nach den übrigen Wänden ihrer Insel extrudiert, die innerste zuerst, unabhängig von der Wandreihenfolge.\n" +"Eine Schleife, die nur von den Überbrückungen dieser Schicht verankert werden kann, wartet, bis diese Überbrückungen gedruckt sind, während eine Schleife, die neben einer gestützten Wand verläuft, ihren Platz vor der Füllung behält, die sie als Verankerung benötigt." + msgid "Outer walls" msgstr "Äußere Wände" @@ -16469,6 +16557,39 @@ msgstr "Wischbewegung nach innen" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Um die Sichtbarkeit der Naht in einer geschlossenen Schleifen-Extrusion zu minimieren, wird vor dem Verlassen der Schleife eine kleine Bewegung nach innen ausgeführt." +# AI Translated +msgid "Wipe inward" +msgstr "Reinigen nach innen" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Gilt nur für Außenwände, einschließlich Lochkonturen. Bewegt die heiße Düse beim Reinigen in Richtung bereits gedruckter innerer Wände, um das erneute Aufschmelzen frisch gedruckten Kunststoffs und Nahtmarkierungen zu verringern.\n" +"\n" +"Besonders nützlich bei Schichthöhen unter 0,1 mm, wo Reinigungsspuren deutlicher sichtbar sind.\n" +"\n" +"Verwendet die normale Reinigung, wenn keine angrenzende innere Wand bereits gedruckt ist (Bereiche mit nur einer Wand oder die Wandreihenfolge Außen/Innen) oder wenn kein gestützter Weg nach innen gefunden werden kann, zum Beispiel an engen Ecken oder Nahtlücken." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Abstand für Reinigen nach innen" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Der Abstand, um den der Reinigungsweg vom Außenperimeter weg verschoben wird, angegeben in Millimetern oder als Prozentsatz der tatsächlichen Extrusionsbreite der Außenwand.\n" +"\n" +"Zum Beispiel verschiebt 50% den Weg um die halbe Außenwandbreite. Der wirksame Versatz wird sowohl durch die tatsächliche Außenwandbreite als auch durch den verfügbaren Abstand zur benachbarten Wand begrenzt, sodass Werte über 100% oder ein entsprechender absoluter Abstand keine zusätzliche Wirkung haben. Auf 0 setzen, um den Versatz zu deaktivieren." + msgid "Wipe before external loop" msgstr "Wischbewegung vor äußerer Schleife" @@ -16731,8 +16852,9 @@ msgstr "Nimmt das neue Werkzeug auf, ohne auf das Erreichen der Drucktemperatur msgid "No sparse layers (beta)" msgstr "Keine dünnen Schichten (Beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Wenn aktiviert, wird der Reinigungsturm nicht auf Schichten ohne Werkzeugwechsel gedruckt. Auf Schichten mit einem Werkzeugwechsel wird der Extruder nach unten fahren, um den Reinigungsturm zu drucken. Der Benutzer ist dafür verantwortlich, dass es keine Kollision mit dem Druck gibt." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Wenn aktiviert, wird der Reinigungsturm auf Schichten ohne Werkzeugwechsel nicht gedruckt. Auf Schichten mit einem Werkzeugwechsel fährt der Extruder nach unten, um den Reinigungsturm zu drucken, sodass der Turm unterhalb des Modells endet und der Werkzeugkopf zu ihm hinuntergreifen muss. Anordnungen, bei denen das mit einem bereits gedruckten Objekt kollidieren würde, werden abgelehnt. Hat keine Wirkung beim Smooth-Zeitraffer oder bei der Düsenverstopfungserkennung, die auf jeder Schicht einen Turm benötigen." msgid "Prime all printing extruders" msgstr "Reinige alle Druckextruder" @@ -16758,6 +16880,34 @@ msgstr "" msgid "Cyclic" msgstr "Zyklisch" +# AI Translated +msgid "Cyclic order" +msgstr "Zyklische Reihenfolge" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Benutzerdefinierte Filamentreihenfolge für die zyklische Werkzeugwechsel-Reihenfolge, als durch Kommas getrennte Filamentnummern (z. B. \"3,2,1,4\").\n" +"Jede Schicht druckt ihre Filamente in dieser Reihenfolge; nicht aufgeführte Filamente werden zuletzt gedruckt, in aufsteigender Reihenfolge.\n" +"Leer lassen, um die Filamente in aufsteigender Reihenfolge zu durchlaufen." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Zyklische Reihenfolge auf erste Schicht anwenden" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Wendet die zyklische Werkzeugwechsel-Reihenfolge auch auf die erste Schicht an.\n" +"Standardmäßig ist dies deaktiviert, weil die erste Schicht stattdessen für die beste Druckbetthaftung sortiert wird: Filamente, die kleine, empfindliche Elemente der ersten Schicht drucken, werden zuletzt gedruckt, sodass die folgenden Werkzeugwechsel und Eilgänge diese schwach verankerten Teile seltener losreißen. Diese Reihenfolge der ersten Schicht berücksichtigt auch eine benutzerdefinierte Filamentreihenfolge für die erste Schicht, sofern eine festgelegt ist. Der Vorteil der zyklischen Reihenfolge (zusätzliche Werkzeugwechsel geben jeder Schicht mehr Zeit zum Abkühlen) gilt nicht für die erste Schicht, die für die Haftung langsam und heiß gedruckt wird.\n" +"Aktivieren Sie dies nur, wenn Sie auf jeder Schicht einschließlich der ersten exakt dieselbe Werkzeugreihenfolge benötigen, auf Kosten dieser Haftungsoptimierung." + msgid "Slice gap closing radius" msgstr "Slice-Lückenschlussradius" @@ -16767,9 +16917,6 @@ msgstr "Risse, die kleiner als das 2-fache des Lückenschlussradius sind, werden msgid "Slicing Mode" msgstr "Slicing-Modus" -msgid "Other" -msgstr "Sonstiges" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Verwenden Sie \"Gerade-ungerade\" für 3DLabPrint-Flugzeugmodelle. Verwenden Sie \"Löcher schließen\", um alle Löcher im Modell zu schließen." @@ -17760,6 +17907,14 @@ msgstr "Keine Überprüfung" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Führe keine Gültigkeitsprüfungen durch, wie beispielsweise die Überprüfung von G-Code-Pfadkonflikten." +# AI Translated +msgid "Strict mode" +msgstr "Strikter Modus" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Beendet sich mit einem Rückgabewert ungleich null, wenn das Slicen eine nicht kritische Warnung auslöst, die sonst nur protokolliert wird, etwa ein Modell, das Stützen benötigt, während Stützen deaktiviert sind. Verwenden Sie dies in CI- oder Skript-Pipelines, die niemals einen unbemerkt fehlerhaften Slice ausliefern sollen. Jede solche Warnung wird zusätzlich mit einer stabilen Klasse im Array `warnings` von result.json aufgeführt, das nur unter Linux geschrieben wird. Kann nicht mit --no-check kombiniert werden, das die Stützenprüfung überspringt." + msgid "Normative check" msgstr "Normative Überprüfung" @@ -17772,11 +17927,28 @@ msgstr "Ausgabe Modellinformationen" msgid "This outputs the model’s information." msgstr "Geben Sie die Informationen des Modells aus." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Mesh prüfen (JSON nach stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Gibt eine JSON-Zusammenfassung jedes geladenen Objekts nach stdout aus und beendet sich dann: seine Begrenzungsrahmen und die Flächen der konvexen Hülle, auf die es gelegt werden kann, mit deren Normalen, Flächeninhalten und Mittelpunkten. Dies sind die Flächen, aus denen die Optionen --ground-* auswählen. Maschinenlesbare Alternative zu --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Bemalung prüfen (JSON nach stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Gibt eine strukturierte JSON-Zusammenfassung jeder bereits im geladenen Modell gespeicherten Bemalungsebene (Stützen, Naht, MMU-Farbe, Fuzzy skin) aus — Facettenanzahl, Oberfläche und mesh-lokaler Begrenzungsrahmen je Zustand — und beendet sich dann. Maschinenlesbare Alternative zum Öffnen der Mal-Gizmos in der Benutzeroberfläche." + msgid "Export Settings" msgstr "Einstellungen exportieren" -msgid "This exports settings to a file." -msgstr "Einstellungen in eine Datei exportieren." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Exportiert die Einstellungen in eine Datei. Verwenden Sie -, um sie nach stdout zu schreiben." msgid "Send progress to pipe" msgstr "Fortschritt an die Leitung senden" @@ -17832,6 +18004,30 @@ msgstr "Rotieren um Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Rotationswinkel um die Y-Achse in Grad." +# AI Translated +msgid "Ground largest face" +msgstr "Auf größte Fläche legen" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt jedes Objekt auf die größte Fläche seiner konvexen Hülle und lässt es auf das Druckbett fallen. Bei gleich großen Flächen wird die bereits nach unten zeigende beibehalten. Objekte ohne eine ausreichend große Auflagefläche bleiben unverändert. Transformationen werden in der Reihenfolge der Befehlszeile ausgeführt, sodass vor dieser Option angegebene Drehungen berücksichtigt werden. --orient 1 läuft nach allen Transformationen und ersetzt die Ausrichtung." + +# AI Translated +msgid "Ground face by normal" +msgstr "Auf Fläche nach Normale legen" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt jedes Objekt auf die Fläche der konvexen Hülle, deren äußere Normale der Richtung NX,NY,NZ am nächsten kommt, und lässt es auf das Druckbett fallen. Die Richtung ist in Objektkoordinaten angegeben, die die vor dieser Option angegebenen Drehungen enthalten und den Achsen des Druckbetts entsprechen, sofern die Eingabedatei das Objekt nicht dreht. Zum Beispiel stellt 1,0,0 das Objekt auf seine +X-Seite. --orient 1 läuft nach allen Transformationen und ersetzt die Ausrichtung." + +# AI Translated +msgid "Ground face at point" +msgstr "Auf Fläche an Punkt legen" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt jedes Objekt auf die Fläche der konvexen Hülle, die den Punkt X,Y,Z enthält, und lässt es auf das Druckbett fallen. Der Punkt ist in Objektkoordinaten angegeben, die die vor dieser Option angegebenen Drehungen enthalten; --inspect-mesh gibt Flächenmittelpunkte in diesen an. Objekte ohne eine solche Fläche bleiben unverändert, und der Durchlauf schlägt fehl, wenn kein Objekt eine solche hat. --orient 1 läuft nach allen Transformationen und ersetzt die Ausrichtung." + msgid "Scale the model by a float factor." msgstr "Skalierung des Modells um einen Faktor" @@ -20886,14 +21082,17 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Fortsetzen?" msgid "Skipping objects." msgstr "Objekte werden übersprungen." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Materialanteil" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modellhöhe" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Anteil" msgid "Select Filament" msgstr "Filament auswählen" @@ -21151,12 +21350,14 @@ msgid "Drying-Dehumidifying" msgstr "Trocknung – Entfeuchten" # AI Translated -msgid " maximum drying temperature is " -msgstr " maximale Trocknungstemperatur ist " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Die maximale Trocknungstemperatur von %s beträgt %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " minimale Trocknungstemperatur ist " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Die minimale Trocknungstemperatur von %s beträgt %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -21601,6 +21802,95 @@ msgstr "" "Verwerfungen vermeiden\n" "Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "Other" +#~ msgstr "Sonstiges" + +#~ msgid "Left: " +#~ msgstr "Links: " + +#~ msgid "Right: " +#~ msgstr "Rechts: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Die maximale Temperatur darf nicht überschritten werden " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Die minimale Temperatur sollte nicht weniger als " + +#~ msgid "up to" +#~ msgstr "bis zu" + +#~ msgid "above" +#~ msgstr "über" + +#~ msgid "from" +#~ msgstr "von" + +#~ msgid "Configuration package: " +#~ msgstr "Konfigurationspaket:" + +#~ msgid " updated to " +#~ msgstr " aktualisiert auf " + +#~ msgid "Grouping error: " +#~ msgstr "Gruppierungsfehler: " + +#~ msgid " can not be placed in the " +#~ msgstr " kann nicht platziert werden in der " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " maximale Trocknungstemperatur ist " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " minimale Trocknungstemperatur ist " + +# AI Translated +#~ msgid "needs" +#~ msgstr "benötigt" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "nicht aktiviert" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "Material nicht veröffentlicht" + +#~ msgid "Select the language" +#~ msgstr "Sprache wählen" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Plugin auswählen" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Richtung, in der obere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n" +#~ "Nach außen beginnt in der Mitte der Oberfläche, sodass überschüssiges Material zum Rand geschoben wird, wo es am wenigsten sichtbar ist. Nach innen beginnt am Rand und endet mit den engen Kurven in der Mitte.\n" +#~ "Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Richtung, in der untere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n" +#~ "Nach innen beginnt jede Oberfläche mit den breiteren äußeren Kurven, was die Haftung der ersten Schicht auf Druckbetten verbessert, auf denen die engen Kurven in der Mitte möglicherweise nicht haften. Nach außen beginnt in der Mitte und schiebt überschüssiges Material zum Rand.\n" +#~ "Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Wenn aktiviert, wird der Reinigungsturm nicht auf Schichten ohne Werkzeugwechsel gedruckt. Auf Schichten mit einem Werkzeugwechsel wird der Extruder nach unten fahren, um den Reinigungsturm zu drucken. Der Benutzer ist dafür verantwortlich, dass es keine Kollision mit dem Druck gibt." + +#~ msgid "This exports settings to a file." +#~ msgstr "Einstellungen in eine Datei exportieren." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu." diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 37485ba662..d6f39cacb5 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -2289,13 +2289,6 @@ msgstr "" msgid "%s has been removed." msgstr "" - -msgid "Select the language" -msgstr "" - -msgid "Language" -msgstr "" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "" @@ -3482,10 +3475,12 @@ msgstr "" msgid "Switch track at Filament Track Switch" msgstr "" -msgid "The maximum temperature cannot exceed " +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" msgstr "" -msgid "The minmum temperature should not be less than " +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" msgstr "" msgid "Type to filter..." @@ -4318,6 +4313,12 @@ msgid "" "Error message: %1%" msgstr "" +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "" @@ -4990,8 +4991,10 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "" #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "" + +msgid "%" msgstr "" #, boost-format @@ -5017,16 +5020,13 @@ msgstr "" msgid "System agents" msgstr "" -msgid "No plugin selected" -msgstr "" - msgid "Add plugin" msgstr "" -msgid "Select plugin" +msgid "Remove plugin" msgstr "" -msgid "Remove plugin" +msgid "No plugin selected" msgstr "" msgid "Configure" @@ -5282,13 +5282,16 @@ msgstr "" msgid "Regroup filament" msgstr "" -msgid "up to" +#, boost-format +msgid "up to %1% mm" msgstr "" -msgid "above" +#, boost-format +msgid "above %1% mm" msgstr "" -msgid "from" +#, boost-format +msgid "from %1% to %2% mm" msgstr "" msgid "Usage" @@ -5639,7 +5642,7 @@ msgstr "" msgid "Size:" msgstr "" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "" @@ -7176,6 +7179,12 @@ msgctxt "Layers" msgid "Bottom" msgstr "" +msgid "This setting does not specify a plugin capability type." +msgstr "" + +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "" + msgid "Plugin Selection" msgstr "" @@ -8286,7 +8295,6 @@ msgstr "" msgid "Language selection" msgstr "" - msgid "Asia-Pacific" msgstr "" @@ -8380,6 +8388,9 @@ msgstr "" msgid "General" msgstr "" +msgid "Language" +msgstr "" + msgid "Metric" msgstr "" @@ -8769,9 +8780,6 @@ msgstr "" msgid "Dimmed layer brightness" msgstr "" -msgid "%" -msgstr "" - msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" "99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option." @@ -9165,13 +9173,12 @@ msgstr "" msgid "Filament %d (mixed)" msgstr "" -msgid "needs" +#, boost-format +msgid "%1% needs %2%, which is not enabled." msgstr "" -msgid "not enabled" -msgstr "" - -msgid "material not published" +#, boost-format +msgid "%1% needs %2%, whose material will not be published." msgstr "" msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." @@ -9226,6 +9233,9 @@ msgstr "" msgid "Detach from parent" msgstr "" +msgid "Save without parent" +msgstr "" + msgid "Unique preset" msgstr "" @@ -9875,9 +9885,15 @@ msgstr "" msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "" +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "" +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "" + msgid "Still print by object?" msgstr "" @@ -10226,9 +10242,6 @@ msgstr "" msgid "Printable space" msgstr "" -msgid "Printer Agent" -msgstr "" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "" @@ -10588,12 +10601,6 @@ msgstr "" msgid "Capabilities" msgstr "" -msgid "Left: " -msgstr "" - -msgid "Right: " -msgstr "" - msgid "Show all presets (including incompatible)" msgstr "" @@ -11397,15 +11404,19 @@ msgstr "" msgid "Copying of file %1% to %2% failed: %3%" msgstr "" +msgid "Downloading new vendor profile(s): " +msgstr "" + +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "" + +msgid "Failed to download vendor profile(s): " +msgstr "" + msgid "Please check any unsaved changes before updating the configuration." msgstr "" -msgid "Configuration package: " -msgstr "" - -msgid " updated to " -msgstr "" - msgid "Open G-code file:" msgstr "" @@ -11461,10 +11472,12 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "" -msgid "Grouping error: " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" msgstr "" -msgid " can not be placed in the " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" msgstr "" msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -11578,6 +11591,9 @@ msgstr "" msgid "%1% is too tall, and collisions will be caused." msgstr "" +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "" @@ -11900,6 +11916,9 @@ msgstr "" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "" +msgid "Printer Agent" +msgstr "" + msgid "Select the network agent implementation for printer communication." msgstr "" @@ -12748,6 +12767,9 @@ msgstr "" msgid "Concentric" msgstr "" +msgid "Spiral Inset" +msgstr "" + msgid "Hilbert Curve" msgstr "" @@ -12817,7 +12839,7 @@ msgid "Top surface fill order" msgstr "" msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" @@ -12826,7 +12848,7 @@ msgid "Bottom surface fill order" msgstr "" msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" @@ -12914,6 +12936,12 @@ msgstr "" msgid "Clockwise" msgstr "" +msgid "Distance to rod" +msgstr "" + +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "" + msgid "Height to rod" msgstr "" @@ -14864,6 +14892,15 @@ msgstr "" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "" +msgid "Print unsupported walls last" +msgstr "" + +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" + msgid "Outer walls" msgstr "" @@ -15273,6 +15310,27 @@ msgstr "" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "" +msgid "Wipe inward" +msgstr "" + +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" + +msgid "Wipe inward distance" +msgstr "" + +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" + msgid "Wipe before external loop" msgstr "" @@ -15513,7 +15571,7 @@ msgstr "" msgid "No sparse layers (beta)" msgstr "" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." msgstr "" msgid "Prime all printing extruders" @@ -15534,6 +15592,24 @@ msgstr "" msgid "Cyclic" msgstr "" +msgid "Cyclic order" +msgstr "" + +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" + +msgid "Apply cyclic order to first layer" +msgstr "" + +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" + msgid "Slice gap closing radius" msgstr "" @@ -15543,9 +15619,6 @@ msgstr "" msgid "Slicing Mode" msgstr "" -msgid "Other" -msgstr "" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "" @@ -16448,6 +16521,12 @@ msgstr "" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "" +msgid "Strict mode" +msgstr "" + +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "" + msgid "Normative check" msgstr "" @@ -16460,10 +16539,22 @@ msgstr "" msgid "This outputs the model’s information." msgstr "" +msgid "Inspect mesh (JSON to stdout)" +msgstr "" + +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "" + +msgid "Inspect paint (JSON to stdout)" +msgstr "" + +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "" + msgid "Export Settings" msgstr "" -msgid "This exports settings to a file." +msgid "This exports settings to a file. Use - to write them to stdout." msgstr "" msgid "Send progress to pipe" @@ -16520,6 +16611,24 @@ msgstr "" msgid "Rotation angle around the Y axis in degrees." msgstr "" +msgid "Ground largest face" +msgstr "" + +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + +msgid "Ground face by normal" +msgstr "" + +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + +msgid "Ground face at point" +msgstr "" + +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "" + msgid "Scale the model by a float factor." msgstr "" @@ -19650,10 +19759,12 @@ msgstr "" msgid "Drying-Dehumidifying" msgstr "" -msgid " maximum drying temperature is " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." msgstr "" -msgid " minimum drying temperature is " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." msgstr "" msgid "This filament may not be completely dried." diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 9dfcde53e5..56132eb970 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -2356,13 +2356,6 @@ msgstr "Hay una actualización disponible. Abra el cuadro de diálogo del paquet msgid "%s has been removed." msgstr "Se ha eliminado %s." - -msgid "Select the language" -msgstr "Seleccionar el idioma" - -msgid "Language" -msgstr "Idioma" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "No se pudo cambiar Orca Slicer al idioma %s." @@ -3560,11 +3553,15 @@ msgstr "Retirar el filamento actual en el Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Cambiar de vía en el Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "La temperatura máxima no puede superar " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "La temperatura máxima no puede superar %d" -msgid "The minmum temperature should not be less than " -msgstr "La temperatura mínima no debe ser inferior a " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "La temperatura mínima no debe ser inferior a %d" msgid "Type to filter..." msgstr "Escribe para filtrar..." @@ -4424,6 +4421,15 @@ msgstr "" "Error al copiar el G-Code temporal en el G-Code de salida. ¿Quizás la tarjeta SD está protegida contra escritura?\n" "Mensaje de error: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Error al copiar el código G temporal al código G de salida.\n" +"Mensaje de error: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copia del G-Code temporal al G-Code de salida ha fallado. Puede haber un problema con el dispositivo de destino, intenta exportar nuevamente o usa un dispositivo diferente. El G-Code de salida dañado está en %1%.tmp." @@ -5154,10 +5160,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "El valor %s está fuera de rango. El rango válido es de %d a %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"¿Es %s%% o %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "¿Es %s%% o %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5182,18 +5189,15 @@ msgstr "Formato inválido. Formato de vector esperado: \"%1%\"" msgid "System agents" msgstr "Agentes del sistema" -msgid "No plugin selected" -msgstr "Ningún plugin seleccionado" - msgid "Add plugin" msgstr "Añadir plugin" -msgid "Select plugin" -msgstr "Seleccionar plugin" - msgid "Remove plugin" msgstr "Eliminar plugin" +msgid "No plugin selected" +msgstr "Ningún plugin seleccionado" + msgid "Configure" msgstr "Configurar" @@ -5447,14 +5451,20 @@ msgstr "Ajustar a óptimo" msgid "Regroup filament" msgstr "Reagrupar filamentos" -msgid "up to" -msgstr "hasta" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "hasta %1% mm" -msgid "above" -msgstr "sobre" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "por encima de %1% mm" -msgid "from" -msgstr "desde" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "de %1% a %2% mm" msgid "Usage" msgstr "Uso" @@ -5811,7 +5821,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, Z = %.2lfmm. Por favor, separe más los objetos en conflicto (%s <-> %s)." @@ -6123,11 +6133,13 @@ msgstr "Guardar proyecto como" msgid "Save current project as" msgstr "Guardar el proyecto actual como" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publicar 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exportar un archivo 3MF con los ajustes seleccionados incrustados" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7386,6 +7398,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Inferior" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Este ajuste no especifica un tipo de capacidad de plugin." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Este ajuste especifica un tipo de capacidad de plugin no reconocido: " + msgid "Plugin Selection" msgstr "Selección de plugins" @@ -7910,11 +7930,13 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p msgid "Customized Preset" msgstr "Perfil Personalizado" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Algunos ajustes publicados no se han podido aplicar:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Se han cambiado algunas ranuras de filamento:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF-8!" @@ -8311,13 +8333,17 @@ msgstr "Guardar el archivo laminado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publicar archivo 3MF como:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"No se ha podido exportar el archivo 3MF publicado.\n" +"Compruebe si la carpeta existe en línea o si otros programas tienen el archivo abierto." msgid "Publish" msgstr "Publicar" @@ -8523,7 +8549,6 @@ msgstr "¿Quieres continuar?" msgid "Language selection" msgstr "Selección de idiomas" - msgid "Asia-Pacific" msgstr "Asia-Pacífico" @@ -8628,6 +8653,9 @@ msgstr "Ruta de Instancia Actual: " msgid "General" msgstr "General" +msgid "Language" +msgstr "Idioma" + msgid "Metric" msgstr "Métrico" @@ -9053,9 +9081,6 @@ msgstr "Al desplazar el control deslizante de capas en la vista previa laminada, msgid "Dimmed layer brightness" msgstr "Brillo de las capas atenuadas" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9449,63 +9474,80 @@ msgstr "Cargando datos" msgid "Jump to webpage" msgstr "Ir a la página web" +# AI Translated msgid "Material" -msgstr "" +msgstr "Material" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filamento mixto" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Algunos filamentos mixtos dependen de filamentos que no se publicarán:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filamento %d (mixto)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% necesita %2%, que no está habilitado." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% necesita %2%, cuyo material no se publicará." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Para publicar un filamento mixto, habilite todos los filamentos que utiliza y elija Publicación completa o cumpla su requisito de Tipo." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Publicar de todos modos" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publicar 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Seleccione qué ajustes se publicarán en el archivo 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki de Publicar 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Guía en vídeo de Publicar 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filamento mixto - se publica como un conjunto cuando se selecciona \"Habilitar\" arriba" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publicar este filamento mixto y habilitar + publicar completamente sus filamentos componentes" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publicar esta ranura de filamento en el archivo 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Publicación completa" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Incrustar el filamento completo de esta ranura en el archivo 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrar no seleccionados" #, c-format, boost-format msgid "Save %s as" @@ -9524,6 +9566,10 @@ msgstr "Copia en este perfil todos los valores heredados del perfil padre y elim msgid "Detach from parent" msgstr "Separar del elemento padre" +# AI Translated +msgid "Save without parent" +msgstr "Guardar sin elemento padre" + # AI Translated msgid "Unique preset" msgstr "Perfil único" @@ -10184,9 +10230,17 @@ msgstr "La torre de purga es necesaria para la detección de aglomeraciones. Pue msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Habilitar tanto la altura Z precisa como la torre de purga puede causar errores de laminado. ¿Desea habilitar la altura Z precisa?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "El timelapse suave necesita una torre de purga en cada capa, lo que no es compatible con \"Sin capas de baja densidad\". Se ha desactivado \"Sin capas de baja densidad\"." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "La torre de purga es necesaria para que el timelapse sea suave. Puede haber defectos en el modelo sin torre de purga. ¿Desea activar la torre de purga?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Sin capas de baja densidad\" no es compatible con el timelapse suave, que necesita una torre de purga en cada capa. El timelapse ha cambiado al modo tradicional." + msgid "Still print by object?" msgstr "¿Seguir imprimiendo por objeto?" @@ -10551,9 +10605,6 @@ msgstr "Perfiles de proceso compatibles" msgid "Printable space" msgstr "Espacio imprimible" -msgid "Printer Agent" -msgstr "Agente de impresora" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema." @@ -10952,12 +11003,6 @@ msgstr "Número de extrusores" msgid "Capabilities" msgstr "Capacidades" -msgid "Left: " -msgstr "Izquierda: " - -msgid "Right: " -msgstr "Derecha: " - msgid "Show all presets (including incompatible)" msgstr "Mostrar todos los perfiles (incluyendo los compatibles)" @@ -11775,15 +11820,22 @@ msgstr "Reparación cancelada" msgid "Copying of file %1% to %2% failed: %3%" msgstr "La copia del archivo %1% a %2% falló: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Descargando nuevos perfiles de fabricante: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Paquete de configuración: %1% actualizado a %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "No se han podido descargar los perfiles de fabricante: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Es necesario comprobar los cambios no guardados antes de actualizar la configuración." -msgid "Configuration package: " -msgstr "Paquete de configuración: " - -msgid " updated to " -msgstr " Actualizado a " - msgid "Open G-code file:" msgstr "Abrir archivo G-Code:" @@ -11843,11 +11895,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping solo es compatible con Klipper, RepRapFirmware y Marlin 2." -msgid "Grouping error: " -msgstr "Error de agrupación: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Error de agrupación: %1% no se puede colocar en la boquilla izquierda" -msgid " can not be placed in the " -msgstr " no se puede colocar en el " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Error de agrupación: %1% no se puede colocar en la boquilla derecha" msgid "Group error in manual mode. Please check nozzle count or regroup." msgstr "Error de agrupación en modo manual. Compruebe el número de boquillas o vuelva a agrupar." @@ -11960,6 +12016,10 @@ msgstr "%1% está demasiado cerca de otros, y pueden producirse colisiones." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% es demasiado alto, y se producirán colisiones." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "La posición relativa del modelo y la torre de purga no cumple los requisitos de la función \"Sin capas de baja densidad\". Ajuste sus posiciones relativas, reduzca la altura del modelo o desactive \"Sin capas de baja densidad\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." @@ -12295,6 +12355,9 @@ msgstr "Utiliza 3MF en lugar de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activa esta opción si la impresora admite un archivo 3MF como trabajo de impresión. Cuando está activada, Orca Slicer envía el archivo cortado como un archivo .gcode.3mf, en lugar de como un archivo .gcode convencional." +msgid "Printer Agent" +msgstr "Agente de impresora" + msgid "Select the network agent implementation for printer communication." msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora." @@ -13340,6 +13403,10 @@ msgstr "Rectilíneo Alineado" msgid "Concentric" msgstr "Concéntrico" +# AI Translated +msgid "Spiral Inset" +msgstr "Espiral interior" + msgid "Hilbert Curve" msgstr "Curva de Hilbert" @@ -13419,26 +13486,28 @@ msgstr "" msgid "Top surface fill order" msgstr "Orden de relleno de la superficie superior" +# AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Dirección en la que se rellenan las superficies superiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n" -"Hacia afuera comienza en el centro de la superficie, de modo que cualquier exceso de material se empuja hacia el borde, donde es menos visible. Hacia adentro comienza en el borde y termina con las curvas cerradas del centro.\n" -"Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección." +"Dirección en la que se rellenan las superficies superiores cuando se usa un patrón basado en el centro (Concéntrico, Espiral interior, Espiral de Arquímedes, Espiral Octagonal).\n" +"Hacia fuera empieza en el centro de la superficie, de modo que el material sobrante se empuja hacia el borde, donde resulta menos visible. Hacia dentro empieza en el borde y termina con las curvas cerradas del centro.\n" +"Por defecto usa el orden de ruta más corta, que puede recorrerse en cualquiera de los dos sentidos." msgid "Bottom surface fill order" msgstr "Orden de relleno de la superficie inferior" +# AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Dirección en la que se rellenan las superficies inferiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n" -"Hacia adentro comienza cada superficie con las curvas exteriores más amplias, lo que mejora la adherencia de la primera capa en las camas donde las curvas cerradas del centro pueden no adherirse. Hacia afuera comienza en el centro, empujando cualquier exceso de material hacia el borde.\n" -"Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección." +"Dirección en la que se rellenan las superficies inferiores cuando se usa un patrón basado en el centro (Concéntrico, Espiral interior, Espiral de Arquímedes, Espiral Octagonal).\n" +"Hacia dentro empieza cada superficie por las curvas exteriores más amplias, lo que mejora la adhesión de la capa inicial en camas donde las curvas cerradas del centro pueden no agarrar. Hacia fuera empieza en el centro y empuja el material sobrante hacia el borde.\n" +"Por defecto usa el orden de ruta más corta, que puede recorrerse en cualquiera de los dos sentidos." msgid "Internal solid infill pattern" msgstr "Patrón de relleno sólido interno" @@ -13537,6 +13606,14 @@ msgstr "En sentido contrario a las agujas del reloj" msgid "Clockwise" msgstr "En el sentido de las agujas del reloj" +# AI Translated +msgid "Distance to rod" +msgstr "Distancia a la varilla" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Distancia horizontal de la punta de la boquilla al borde más alejado de la varilla. Se usa para evitar colisiones en la impresión por objeto." + msgid "Height to rod" msgstr "Altura a la barra" @@ -15663,6 +15740,20 @@ msgstr "Detectar perímetros en voladizo" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Detecta el porcentaje de voladizo en relación con el ancho de línea y utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se utiliza la velocidad de puente." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Imprimir al final los perímetros sin soporte" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Los bucles de perímetro que quedan completamente en el aire se imprimen cuando algo puede sostenerlos:\n" +"se extruyen después de los demás perímetros de su isla, empezando por el más interno, sea cual sea el orden de perímetros.\n" +"Un bucle que solo pueden anclar los puentes de esta capa espera a que se impriman esos puentes, mientras que un bucle que discurre junto a un perímetro con soporte mantiene su lugar antes del relleno, que lo necesita como anclaje." + msgid "Outer walls" msgstr "Paredes exteriores" @@ -16090,6 +16181,39 @@ msgstr "Purgado en contornos curvos" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Para minimizar la visibilidad de la costura en un contorno curvo cerrado, se ejecuta un pequeño movimiento hacia dentro antes de que el extrusor abandone la curva." +# AI Translated +msgid "Wipe inward" +msgstr "Purgado hacia dentro" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Se aplica solo a los perímetros externos, incluidos los contornos de los agujeros. Durante el purgado mueve la boquilla caliente hacia los perímetros internos ya impresos para reducir el recalentamiento del plástico recién depositado y las marcas de costura.\n" +"\n" +"Es especialmente útil con alturas de capa por debajo de 0,1 mm, donde las marcas de purgado se ven más.\n" +"\n" +"Usa el purgado normal si no hay ningún perímetro interno contiguo ya impreso (zonas de un solo perímetro u orden de perímetros Exterior/Interior) o si no se encuentra ninguna trayectoria hacia dentro con apoyo, por ejemplo en esquinas cerradas o huecos de costura." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Distancia de purgado hacia dentro" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Distancia que se desplaza la trayectoria de purgado alejándose del perímetro externo, indicada en milímetros o como porcentaje del ancho de extrusión real del perímetro externo.\n" +"\n" +"Por ejemplo, 50% desplaza la trayectoria la mitad del ancho del perímetro externo. El desplazamiento efectivo está limitado tanto por el ancho real del perímetro externo como por el espacio disponible hasta el perímetro contiguo, por lo que valores por encima de 100% o una distancia absoluta equivalente no tienen ningún efecto adicional. Ponga 0 para desactivar el desplazamiento." + msgid "Wipe before external loop" msgstr "Purgado antes del bucle externo" @@ -16349,8 +16473,9 @@ msgstr "Recoge la nueva herramienta sin esperar a que alcance la temperatura de msgid "No sparse layers (beta)" msgstr "Sin capas de baja densidad (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Sí está activado, la torre de purga no se imprimirá en las capa sin cambio de cabezal. En las capas con cambio de cabezal, viajará hacía abajo para imprimir la torre de purga. El usuario es responsable de asegurarse que no hay colisiones con la impresión." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Si se habilita, la torre de purga no se imprimirá en las capas sin cambios de herramienta. En las capas con un cambio de herramienta, el extrusor bajará para imprimir la torre de purga, de modo que la torre queda por debajo del modelo y el cabezal tiene que descender hasta ella. Se rechazan las disposiciones en las que eso chocaría con un objeto ya impreso. No tiene efecto con el timelapse suave ni con la detección de atascos en la boquilla, que necesitan una torre en cada capa." msgid "Prime all printing extruders" msgstr "Purgar todos los extrusores" @@ -16373,6 +16498,34 @@ msgstr "" msgid "Cyclic" msgstr "Cíclico" +# AI Translated +msgid "Cyclic order" +msgstr "Orden cíclico" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Secuencia de filamentos personalizada que usa el orden cíclico de cambios de herramienta, como números de filamento separados por comas (p. ej. \"3,2,1,4\").\n" +"Cada capa imprime sus filamentos siguiendo esta secuencia; los filamentos no incluidos se imprimen al final, en orden ascendente.\n" +"Déjelo vacío para recorrer los filamentos en orden ascendente." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Aplicar el orden cíclico a la capa inicial" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Aplica el orden cíclico de cambios de herramienta también a la capa inicial.\n" +"Por defecto está desactivado, porque la capa inicial se ordena en su lugar para lograr la mejor adhesión a la cama: los filamentos que imprimen detalles pequeños y frágiles de la capa inicial se imprimen al final, de modo que los cambios de herramienta y desplazamientos posteriores tienen menos probabilidad de arrancar esas piezas mal ancladas. Este orden de la capa inicial también respeta una secuencia de filamentos personalizada para la capa inicial cuando se ha definido. La ventaja del orden cíclico (los cambios de herramienta adicionales dan a cada capa más tiempo para enfriarse) no se aplica a la capa inicial, que se imprime despacio y caliente para favorecer la adhesión.\n" +"Active esta opción solo si necesita exactamente la misma secuencia de herramientas en todas las capas, incluida la primera, a costa de esa optimización de la adhesión." + msgid "Slice gap closing radius" msgstr "Radio de cierre de laminado" @@ -16382,9 +16535,6 @@ msgstr "Las grietas más pequeñas que 2x el radio de cierre se rellenan durante msgid "Slicing Mode" msgstr "Modo de laminado" -msgid "Other" -msgstr "Otro" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Utilice \"Par-impar\" para los modelos de avión de 3DLabPrint. Utilice \"Cerrar orificios\" para cerrar todos los orificios del modelo." @@ -17358,6 +17508,14 @@ msgstr "No comprobar" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "No ejecute ninguna comprobación de validez, como la comprobación de conflictos de ruta de G-Code." +# AI Translated +msgid "Strict mode" +msgstr "Modo estricto" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Sale con un código distinto de cero cuando el laminado genera un aviso no crítico que de otro modo solo se registraría, como un modelo que necesita soportes mientras los soportes están desactivados. Úselo en CI o en procesos automatizados que nunca deban entregar un laminado sutilmente defectuoso. Cada uno de esos avisos también aparece con una clase estable en el array `warnings` de result.json, que solo se escribe en Linux. No se puede combinar con --no-check, que omite la comprobación de soportes." + msgid "Normative check" msgstr "Comprobación de normativa" @@ -17370,11 +17528,28 @@ msgstr "Información del modelo de salida" msgid "This outputs the model’s information." msgstr "Salida de la información del modelo." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Inspeccionar malla (JSON por stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Imprime por stdout un resumen JSON de cada objeto cargado y después sale: sus cajas envolventes y las caras de su envolvente convexa sobre las que puede apoyarse, con sus normales, áreas y centros. Estas son las caras entre las que eligen las opciones --ground-*. Alternativa legible por máquina a --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Inspeccionar pintado (JSON por stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Imprime un resumen JSON estructurado de cada capa pintada (soportes, costura, color MMU, piel rugosa) ya guardada en el modelo cargado — número de facetas, área de superficie y caja envolvente local a la malla por cada estado — y después sale. Alternativa legible por máquina a abrir las herramientas de pintado en la interfaz." + msgid "Export Settings" msgstr "Ajustes de exportación" -msgid "This exports settings to a file." -msgstr "Exporta los ajustes a un archivo." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Esto exporta los ajustes a un archivo. Use - para escribirlos por stdout." msgid "Send progress to pipe" msgstr "Enviar el progreso a la tubería" @@ -17430,6 +17605,30 @@ msgstr "Rotar alrededor de Y" msgid "Rotation angle around the Y axis in degrees." msgstr "El ángulo de rotación alrededor del eje Y en grados." +# AI Translated +msgid "Ground largest face" +msgstr "Apoyar sobre la cara mayor" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoya cada objeto sobre la cara mayor de su envolvente convexa y lo deja caer sobre la cama. Entre caras igual de grandes se conserva la que ya mira hacia abajo. Los objetos sin una cara lo bastante grande para apoyarse se dejan como están. Las transformaciones se aplican en el orden de la línea de órdenes, por lo que se respetan las rotaciones indicadas antes de esta opción. --orient 1 se ejecuta después de todas las transformaciones y sustituye la orientación." + +# AI Translated +msgid "Ground face by normal" +msgstr "Apoyar sobre la cara según la normal" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoya cada objeto sobre la cara de su envolvente convexa cuya normal exterior sea la más próxima a la dirección NX,NY,NZ y lo deja caer sobre la cama. La dirección está en coordenadas del objeto, que incluyen las rotaciones indicadas antes de esta opción y coinciden con los ejes de la bandeja salvo que el archivo de entrada rote el objeto. Por ejemplo, 1,0,0 apoya el objeto sobre su lado +X. --orient 1 se ejecuta después de todas las transformaciones y sustituye la orientación." + +# AI Translated +msgid "Ground face at point" +msgstr "Apoyar sobre la cara en un punto" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoya cada objeto sobre la cara de su envolvente convexa que contiene el punto X,Y,Z y lo deja caer sobre la cama. El punto está en coordenadas del objeto, que incluyen las rotaciones indicadas antes de esta opción; --inspect-mesh indica los centros de las caras en esas coordenadas. Los objetos sin una cara así se dejan como están, y la ejecución falla si ningún objeto tiene una. --orient 1 se ejecuta después de todas las transformaciones y sustituye la orientación." + msgid "Scale the model by a float factor." msgstr "Escala el modelo por un factor de flotación." @@ -20479,14 +20678,17 @@ msgstr "Esta acción no se puede deshacer. ¿Continuar?" msgid "Skipping objects." msgstr "Omitiendo objetos." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Proporción de material" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Altura del modelo" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proporción" msgid "Select Filament" msgstr "Seleccionar Filamento" @@ -20727,11 +20929,15 @@ msgstr "Secado - Calentamiento" msgid "Drying-Dehumidifying" msgstr "Secado - Deshumidificación" -msgid " maximum drying temperature is " -msgstr " la temperatura máxima de secado es " +# AI Translated +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "La temperatura máxima de secado de %s es %d°C." -msgid " minimum drying temperature is " -msgstr " la temperatura mínima de secado es " +# AI Translated +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "La temperatura mínima de secado de %s es %d°C." msgid "This filament may not be completely dried." msgstr "Es posible que este filamento no esté completamente seco." @@ -21144,6 +21350,90 @@ msgstr "" "Evita la deformación\n" "¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?" +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Left: " +#~ msgstr "Izquierda: " + +#~ msgid "Right: " +#~ msgstr "Derecha: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "La temperatura máxima no puede superar " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "La temperatura mínima no debe ser inferior a " + +#~ msgid "up to" +#~ msgstr "hasta" + +#~ msgid "above" +#~ msgstr "sobre" + +#~ msgid "from" +#~ msgstr "desde" + +#~ msgid "Configuration package: " +#~ msgstr "Paquete de configuración: " + +#~ msgid " updated to " +#~ msgstr " Actualizado a " + +#~ msgid "Grouping error: " +#~ msgstr "Error de agrupación: " + +#~ msgid " can not be placed in the " +#~ msgstr " no se puede colocar en el " + +#~ msgid " maximum drying temperature is " +#~ msgstr " la temperatura máxima de secado es " + +#~ msgid " minimum drying temperature is " +#~ msgstr " la temperatura mínima de secado es " + +# AI Translated +#~ msgid "needs" +#~ msgstr "necesita" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "no habilitado" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "material no publicado" + +#~ msgid "Select the language" +#~ msgstr "Seleccionar el idioma" + +#~ msgid "Select plugin" +#~ msgstr "Seleccionar plugin" + +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Dirección en la que se rellenan las superficies superiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n" +#~ "Hacia afuera comienza en el centro de la superficie, de modo que cualquier exceso de material se empuja hacia el borde, donde es menos visible. Hacia adentro comienza en el borde y termina con las curvas cerradas del centro.\n" +#~ "Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección." + +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Dirección en la que se rellenan las superficies inferiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n" +#~ "Hacia adentro comienza cada superficie con las curvas exteriores más amplias, lo que mejora la adherencia de la primera capa en las camas donde las curvas cerradas del centro pueden no adherirse. Hacia afuera comienza en el centro, empujando cualquier exceso de material hacia el borde.\n" +#~ "Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Sí está activado, la torre de purga no se imprimirá en las capa sin cambio de cabezal. En las capas con cambio de cabezal, viajará hacía abajo para imprimir la torre de purga. El usuario es responsable de asegurarse que no hay colisiones con la impresión." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exporta los ajustes a un archivo." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer." diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index b966a124cb..a510fcd436 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -2390,13 +2390,6 @@ msgstr "Eguneratze bat dago erabilgarri. Ireki aurrezarpen-paketeen elkarrizketa msgid "%s has been removed." msgstr "%s kendu da." - -msgid "Select the language" -msgstr "Hautatu hizkuntza" - -msgid "Language" -msgstr "Hizkuntza" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "Ezin izan da OrcaSlicer %s hizkuntzara aldatu." @@ -3599,11 +3592,15 @@ msgstr "Atzera erakarri uneko filamentua Filament Track Switch-en" msgid "Switch track at Filament Track Switch" msgstr "Aldatu bidea Filament Track Switch-en" -msgid "The maximum temperature cannot exceed " -msgstr "Gehieneko tenperaturak ezin du hau gainditu: " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Gehieneko tenperaturak ezin du %d gainditu" -msgid "The minmum temperature should not be less than " -msgstr "Gutxieneko tenperaturak ezin du hau baino txikiagoa izan: " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Gutxieneko tenperaturak ezin du %d baino txikiagoa izan" msgid "Type to filter..." msgstr "Idatzi iragazteko..." @@ -4470,6 +4467,15 @@ msgstr "" "Aldi baterako G-code-a irteerako G-code-an kopiatzeak huts egin du. Agian SD txartela idazteko blokeatuta dago?\n" "Errore- mezua: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Huts egin du aldi baterako G-kodea irteerako G-kodera kopiatzeak.\n" +"Errore-mezua: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Aldi baterako G-code-a irteerako G-code-an kopiatzeak huts egin du. Arazoak egon daitezke helburuko gailuarekin, saiatu berriro esportatzen edo beste gailu bat erabiltzen. Hondatutako irteerako G-code-a hemen da: %1%.tmp." @@ -5202,10 +5208,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "%s balioa tartetik kanpo dago. Baliozko tartea %d eta %d artekoa da." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%% edo %s %s da?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%% edo %s %s da?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5231,18 +5238,15 @@ msgstr "Formatuak ez du balio. Espero den formatu bektoriala: \"%1%\"" msgid "System agents" msgstr "Sistema-agenteak" -msgid "No plugin selected" -msgstr "Ez da pluginik hautatu" - msgid "Add plugin" msgstr "Gehitu plugina" -msgid "Select plugin" -msgstr "Hautatu plugina" - msgid "Remove plugin" msgstr "Kendu plugina" +msgid "No plugin selected" +msgstr "Ez da pluginik hautatu" + msgid "Configure" msgstr "Konfiguratu" @@ -5496,14 +5500,20 @@ msgstr "Ezarri optimo gisa" msgid "Regroup filament" msgstr "Taldekatu berriro filamentua" -msgid "up to" -msgstr "honaino" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "%1% mm arte" -msgid "above" -msgstr "honen gainean" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "%1% mm-tik gora" -msgid "from" -msgstr "hemendik" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "%1% mm-tik %2% mm-ra" msgid "Usage" msgstr "Erabilera" @@ -5861,7 +5871,7 @@ msgstr "Bolumena:" msgid "Size:" msgstr "Tamaina:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "G-code ibilbideen gatazkak aurkitu dira %d geruzan, Z = %.2lf mm. Urrundu gehiago gatazkan dauden objektuak (%s <-> %s)." @@ -6169,11 +6179,13 @@ msgstr "Gorde proiektua honela" msgid "Save current project as" msgstr "Gorde uneko proiektua honela" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Argitaratu 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Esportatu 3MF fitxategi bat hautatutako ezarpenak kapsulatuta dituela" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Inportatu 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7433,6 +7445,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Behea" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Ezarpen honek ez du plugin-gaitasun motarik zehazten." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Ezarpen honek ezagutzen ez den plugin-gaitasun mota bat zehazten du: " + msgid "Plugin Selection" msgstr "Plugin-hautaketa" @@ -7988,11 +8008,13 @@ msgstr "Berretsi aurrezarpen hauetako G-codea segurua dela, makinari kalterik ez msgid "Customized Preset" msgstr "Aurrezarpen pertsonalizatua" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Argitaratutako ezarpen batzuk ezin izan dira aplikatu:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Filamentu-erreten batzuk aldatu dira:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "STEP fitxategiko osagai-izena(k) ez dago/daude UTF-8 formatuan!" @@ -8394,13 +8416,17 @@ msgstr "Gorde xerratutako fitxategia honela:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s fitxategia inprimagailuaren biltegiratze-eremura bidali da eta inprimagailuan ikus daiteke." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Argitaratu 3MF fitxategia honela:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Huts egin du argitaratutako 3MF fitxategia esportatzeak.\n" +"Egiaztatu karpeta linean dagoen edo beste programa batzuek fitxategia irekita duten." msgid "Publish" msgstr "Argitaratu" @@ -8604,7 +8630,6 @@ msgstr "Jarraitu nahi duzu?" msgid "Language selection" msgstr "Hizkuntza-hautaketa" - msgid "Asia-Pacific" msgstr "Asia-Pazifikoa" @@ -8709,6 +8734,9 @@ msgstr "Uneko instantziaren bide-izena: " msgid "General" msgstr "Orokorra" +msgid "Language" +msgstr "Hizkuntza" + msgid "Metric" msgstr "Metrikoa" @@ -9137,9 +9165,6 @@ msgstr "Xerratutako aurrebistan geruza-graduatzailea mugitzean, unekoaren azpiko msgid "Dimmed layer brightness" msgstr "Ilundutako geruzen distira" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9535,63 +9560,80 @@ msgstr "Datuak igotzen" msgid "Jump to webpage" msgstr "Joan web-orrira" +# AI Translated msgid "Material" -msgstr "" +msgstr "Materiala" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filamentu nahasia" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Filamentu nahasi batzuk argitaratuko ez diren filamentuen mende daude:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "%d filamentua (nahasia)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% filamentuak %2% behar du, baina ez dago gaituta." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% filamentuak %2% behar du, baina haren materiala ez da argitaratuko." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Filamentu nahasi bat argitaratzeko, gaitu erabiltzen dituen filamentu guztiak eta hautatu Argitalpen osoa edo bete bere Mota baldintza." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Argitaratu hala ere" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Argitaratu 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Hautatu zein ezarpen argitaratuko diren 3MF fitxategian" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF argitaratzeko wikia" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF argitaratzeko bideo-gida" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filamentu nahasia - osorik argitaratzen da goian \"Gaitu\" hautatuta dagoenean" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Argitaratu filamentu nahasi hau eta gaitu + argitaratu osorik bere osagai diren filamentuak" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Argitaratu filamentu-erreten hau 3MF fitxategian" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Argitalpen osoa" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Kapsulatu erreten honetako filamentu osoa 3MF fitxategian" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Iragazi hautatu gabeak" #, c-format, boost-format msgid "Save %s as" @@ -9610,6 +9652,10 @@ msgstr "Aurrezarpen honetara gurasoaren balio heredatu guztiak kopiatzen ditu et msgid "Detach from parent" msgstr "Bereizi gurasotik" +# AI Translated +msgid "Save without parent" +msgstr "Gorde gurasorik gabe" + # AI Translated msgid "Unique preset" msgstr "Aurrezarpen bakarra" @@ -10291,9 +10337,17 @@ msgstr "Purgatze-dorrea behar da material-metaketa detektatzeko. Modeloak akatsa msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Z altuera zehatza eta purgatze-dorrea batera gaitzeak xerratze-erroreak eragin ditzake. Hala ere Z altuera zehatza gaitu nahi duzu?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Timelapse leunak purgatze-dorrea behar du geruza guztietan, eta hori ez da bateragarria \"Geruza bakandurik ez\" aukerarekin. \"Geruza bakandurik ez\" desaktibatu da." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Purgatze-dorrea behar da timelapse leunaren modurako. Modeloak akatsak izan ditzake purgatze-dorrerik gabe. Purgatze-dorrea gaitu nahi duzu?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Geruza bakandurik ez\" ez da bateragarria timelapse leunarekin, horrek purgatze-dorrea behar baitu geruza guztietan. Timelapsea modu tradizionalera aldatu da." + msgid "Still print by object?" msgstr "Objektuka inprimatu hala ere?" @@ -10663,9 +10717,6 @@ msgstr "Prozesu-profil bateragarriak" msgid "Printable space" msgstr "Inprimatzeko espazioa" -msgid "Printer Agent" -msgstr "Inprimagailu-agentea" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Hautatu sare-agentearen inplementazioa inprimagailuarekin komunikatzeko. Erabilgarri dauden agenteak abioan erregistratzen dira." @@ -11059,12 +11110,6 @@ msgstr "Estrusore kopurua" msgid "Capabilities" msgstr "Gaitasunak" -msgid "Left: " -msgstr "Ezkerra: " - -msgid "Right: " -msgstr "Eskuina: " - msgid "Show all presets (including incompatible)" msgstr "Erakutsi aurrezarpen guztiak (bateraezinak barne)" @@ -11895,15 +11940,22 @@ msgstr "Konponketa bertan behera utzi da" msgid "Copying of file %1% to %2% failed: %3%" msgstr "%1% fitxategia %2% helmugara kopiatzeak huts egin du: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Hornitzaileen profil berriak deskargatzen: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Konfigurazio-paketea: %1% %2% bertsiora eguneratu da" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Huts egin du hornitzaileen profilak deskargatzeak: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Egiaztatu gorde gabeko aldaketarik dagoen konfigurazioa eguneratu aurretik." -msgid "Configuration package: " -msgstr "Konfigurazio-paketea: " - -msgid " updated to " -msgstr " hona eguneratu da: " - msgid "Open G-code file:" msgstr "Ireki G-code fitxategia:" @@ -11963,11 +12015,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Sarrera-moldaketa Klipperrek, RepRapFirmwarek eta Marlin 2k soilik onartzen dute." -msgid "Grouping error: " -msgstr "Taldekatze-errorea: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Taldekatze-errorea: %1% ezin da ezkerreko pitan jarri" -msgid " can not be placed in the " -msgstr " ezin da hemen kokatu: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Taldekatze-errorea: %1% ezin da eskuineko pitan jarri" msgid "Group error in manual mode. Please check nozzle count or regroup." msgstr "Taldekatze-errorea eskuzko moduan. Egiaztatu pita kopurua edo taldekatu berriro." @@ -12080,6 +12136,10 @@ msgstr "%1% besteetatik gertuegi dago, eta talkak sor daitezke." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% altuegia da, eta talkak sortuko dira." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Modeloaren eta purgatze-dorrearen kokapen erlatiboak ez ditu betetzen \"Geruza bakandurik ez\" funtzioaren baldintzak. Doitu haien kokapen erlatiboa, jaitsi modeloaren altuera edo desaktibatu \"Geruza bakandurik ez\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " baztertze-eremutik gertuegi dago; talkak egon daitezke inprimatzean." @@ -12426,6 +12486,9 @@ msgstr "Erabili 3MF G-codearen ordez" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Gaitu aukera hau inprimagailuak 3MF fitxategi bat inprimatze-lan gisa onartzen badu. Gaituta dagoenean, OrcaSlicerrek xerratutako fitxategia .gcode.3mf gisa bidaltzen du, .gcode fitxategi arrunt baten ordez." +msgid "Printer Agent" +msgstr "Inprimagailu-agentea" + msgid "Select the network agent implementation for printer communication." msgstr "Hautatu inprimagailuarekin komunikatzeko sare-agentearen inplementazioa." @@ -13473,6 +13536,10 @@ msgstr "Lerrozuzen lerrokatua" msgid "Concentric" msgstr "Kontzentrikoa" +# AI Translated +msgid "Spiral Inset" +msgstr "Kiribil-barneratzea" + msgid "Hilbert Curve" msgstr "Hilbert kurba" @@ -13558,26 +13625,26 @@ msgstr "Goiko gainazala betetzeko ordena" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Goiko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n" -"Kanporanzkoa erdialdean hasten da, beraz, gehiegizko materiala gutxien ikusten den ertzera bultzatzen da. Barruranzkoa ertzean hasten da eta erdian kurba estuekin amaitzen da.\n" -"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen." +"Goiko gainazalak zein norabidetan betetzen diren erdigunetik abiatzen den patroi bat erabiltzean (Kontzentrikoa, Kiribil-barneratzea, Arkimedesen kordak, Oktagrama-kiribila).\n" +"Kanporantz gainazalaren erdigunean hasten da, eta, hala, soberako materiala ertzerantz bultzatzen da, non gutxien ikusten den. Barrurantz ertzean hasten da eta erdiguneko kurba estuekin amaitzen da.\n" +"Lehenetsia bide laburrenaren ordena erabiltzen du, eta bi norabideetako edozeinetan joan daiteke." msgid "Bottom surface fill order" msgstr "Beheko gainazala betetzeko ordena" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n" -"Barruranzkoa hasten da gainazal bakoitza kanpoko kurba zabalagoekin, eta horrek lehen geruzaren atxikimendua hobetzen du erdiko kurba estuak itsatsi ez daitezkeen inprimatze-plaketan. Kanporanzkoa erdialdean hasten da, gehiegizko materiala ertzera bultzatuz.\n" -"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen." +"Beheko gainazalak zein norabidetan betetzen diren erdigunetik abiatzen den patroi bat erabiltzean (Kontzentrikoa, Kiribil-barneratzea, Arkimedesen kordak, Oktagrama-kiribila).\n" +"Barrurantz gainazal bakoitza kanpoko kurba zabalagoekin hasten da, eta horrek lehen geruzaren itsaspena hobetzen du erdiguneko kurba estuak ondo itsasten ez diren oheetan. Kanporantz erdigunean hasten da, eta soberako materiala ertzerantz bultzatzen du.\n" +"Lehenetsia bide laburrenaren ordena erabiltzen du, eta bi norabideetako edozeinetan joan daiteke." # AI Translated msgid "Internal solid infill pattern" @@ -13679,6 +13746,14 @@ msgstr "Erlojuaren kontrako noranzkoa" msgid "Clockwise" msgstr "Erlojuaren noranzkoa" +# AI Translated +msgid "Distance to rod" +msgstr "Barrarainoko distantzia" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Pitaren muturretik barraren urrunen dagoen ertzerainoko distantzia horizontala. Objektuka inprimatzean talkak saihesteko erabiltzen da." + msgid "Height to rod" msgstr "Hagaxkarainoko altuera" @@ -15833,6 +15908,20 @@ msgstr "Detektatu irtengune-hormak" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Honek irtenguneen ehunekoa detektatzen du lerro-zabalerarekiko eta abiadura desberdina erabiltzen du. 100%%-eko irtengunean zubi-abiadura erabiltzen da." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Inprimatu azkenik euskarririk gabeko hormak" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Erabat airean dauden hormako begiztak zerbaitek eutsi diezaiekeenean inprimatzen dira:\n" +"beren uhartearen gainerako hormen ondoren estruitzen dira, barrukoenetik hasita, hormen ordena edozein dela ere.\n" +"Geruza honetako zubiek soilik ainguratu dezaketen begizta batek zubi horiek inprimatu arte itxaroten du; euskarria duen horma baten ondotik doan begiztak, berriz, betegarriaren aurreko lekuari eusten dio, betegarriak aingura gisa behar baitu." + msgid "Outer walls" msgstr "Kanpoko hormak" @@ -16262,6 +16351,39 @@ msgstr "Garbitu begiztetan" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Begizta itxiko estrusio batean josturaren ikusgarritasuna minimizatzeko, barruranzko mugimendu txiki bat egiten da estrusoreak begizta utzi aurretik." +# AI Translated +msgid "Wipe inward" +msgstr "Purgatu barrurantz" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Kanpoko hormei soilik aplikatzen zaie, zuloen mugak barne. Purgatzean pita beroa jada inprimatutako barruko hormetarantz mugitzen du, inprimatu berri den plastikoa berriro berotzea eta jostura-markak murrizteko.\n" +"\n" +"Bereziki erabilgarria da 0,1 mm-tik beherako geruza-altueretan, non purgatze-markak nabarmenago ikusten diren.\n" +"\n" +"Purgatze arrunta erabiltzen du ondoko barruko hormarik jada inprimatuta ez badago (horma bakarreko eremuak edo Kanpokoa/Barrukoa hormen ordena) edo euskarria duen barrurako biderik aurkitzen ez bada, adibidez izkina estuetan edo josturako hutsuneetan." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Barrurako purgatze-distantzia" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Purgatze-bidea kanpoko perimetrotik zenbat desplazatzen den, milimetrotan edo kanpoko hormaren benetako estrusio-zabaleraren ehuneko gisa adierazita.\n" +"\n" +"Adibidez, 50% bideak kanpoko hormaren zabaleraren erdia desplazatzen du. Desplazamendu eraginkorra mugatuta dago bai kanpoko hormaren benetako zabaleragatik bai ondoko hormarainoko tarte erabilgarriagatik; beraz, 100% baino handiagoko balioek edo baliokidea den distantzia absolutu batek ez dute eragin gehigarririk. Ezarri 0 desplazamendua desgaitzeko." + msgid "Wipe before external loop" msgstr "Garbitu kanpoko begizta baino lehen" @@ -16521,8 +16643,9 @@ msgstr "Hartu erreminta berria inprimatze-tenperaturara iritsi arte itxaron gabe msgid "No sparse layers (beta)" msgstr "Geruza bakandurik ez (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Gaituta badago, purgatze-dorrea ez da inprimatuko tresna-aldaketarik ez duten geruzetan. Tresna-aldaketa duten geruzetan, estrusorea beherantz mugituko da purgatze-dorrea inprimatzeko. Erabiltzailearen ardura da inprimaketarekin talkarik ez dagoela ziurtatzea." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Gaituz gero, purgatze-dorrea ez da inprimatuko erreminta-aldaketarik ez duten geruzetan. Erreminta-aldaketa duten geruzetan, estrusorea behera joango da purgatze-dorrea inprimatzera; beraz, dorrea modeloaren azpian geratzen da eta inprimatze-buruak beheraino iritsi behar du. Jada inprimatutako objektu batekin talka egingo luketen antolamenduak baztertu egiten dira. Ez du eraginik timelapse leunarekin edo pitaren pilaketa-detekzioarekin, horiek geruza guztietan dorrea behar baitute." msgid "Prime all printing extruders" msgstr "Primatu inprimatzeko estrusore guztiak" @@ -16545,6 +16668,34 @@ msgstr "" msgid "Cyclic" msgstr "Ziklikoa" +# AI Translated +msgid "Cyclic order" +msgstr "Ordena ziklikoa" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Erreminta-aldaketen ordena ziklikoak erabiltzen duen filamentu-sekuentzia pertsonalizatua, filamentu-zenbakiak komaz bereizita (adib. \"3,2,1,4\").\n" +"Geruza bakoitzak sekuentzia horri jarraituz inprimatzen ditu bere filamentuak; zerrendatu gabeko filamentuak azkenik inprimatzen dira, gorantz ordenatuta.\n" +"Utzi hutsik filamentuak gorantz ordenatuta zeharkatzeko." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Aplikatu ordena ziklikoa lehen geruzari" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Erreminta-aldaketen ordena ziklikoa lehen geruzari ere aplikatzen dio.\n" +"Lehenespenez desgaituta dago, lehen geruza ohean ahalik eta ondoen itsasteko ordenatzen baita: lehen geruzako elementu txiki eta hauskorrak inprimatzen dituzten filamentuak azkenik inprimatzen dira, hala ondorengo erreminta-aldaketek eta desplazamenduek nekezago askatuko baitituzte ahul ainguratutako zati horiek. Lehen geruzaren ordena horrek lehen geruzarako filamentu-sekuentzia pertsonalizatua ere errespetatzen du, ezarrita badago. Ordena ziklikoaren onura (erreminta-aldaketa gehigarriek geruza bakoitzari hozteko denbora gehiago ematen diote) ez da lehen geruzari aplikatzen, itsaspenagatik astiro eta bero inprimatzen baita.\n" +"Gaitu hau soilik geruza guztietan, lehena barne, erreminta-sekuentzia zehatz-mehatz bera behar baduzu, itsaspen-optimizazio hori galtzearen truke." + msgid "Slice gap closing radius" msgstr "Xerraketan tartea ixteko erradioa" @@ -16554,9 +16705,6 @@ msgstr "Tartea ixteko erradioaren bikoitza baino txikiagoak diren pitzadurak bet msgid "Slicing Mode" msgstr "Xerratze-modua" -msgid "Other" -msgstr "Bestelakoak" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Erabili \"Bikoiti-bakoiti\" 3DLabPrint hegazkin-modeloetarako. Erabili \"Itxi zuloak\" modeloko zulo guztiak ixteko." @@ -17539,6 +17687,14 @@ msgstr "Egiaztapenik ez" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Ez exekutatu baliozkotasun-egiaztapenik, hala nola G-code bideen gatazken egiaztapena." +# AI Translated +msgid "Strict mode" +msgstr "Modu zorrotza" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Zerorik bestelako kode batekin irteten da xerratzeak larria ez den abisu bat sortzen duenean, bestela erregistroan soilik jasoko litzatekeena; adibidez, euskarria behar duen modelo bat euskarria desgaituta dagoenean. Erabili hau inoiz ezkutuko akatsik duen xerratzerik eman behar ez duten CI edo script bidezko prozesuetan. Horrelako abisu bakoitza result.json fitxategiko `warnings` array-an ere zerrendatzen da klase egonkor batekin; fitxategi hori Linuxen soilik idazten da. Ezin da --no-check aukerarekin konbinatu, horrek euskarrien egiaztapena saltatzen baitu." + msgid "Normative check" msgstr "Arauzko egiaztapena" @@ -17551,11 +17707,28 @@ msgstr "Irteerako modeloaren informazioa" msgid "This outputs the model’s information." msgstr "Atera modeloaren informazioa ateratzen du honek." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Aztertu sarea (JSON stdout-era)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Kargatutako objektu bakoitzaren JSON laburpena stdout-era idazten du eta gero irten egiten da: bere muga-kutxak eta jarri daitekeen oskol ganbileko aurpegiak, haien normalak, azalerak eta erdiguneak barne. --ground-* aukerek aurpegi horien artean egiten dute hautua. --info aukeraren ordezko makina-irakurgarria." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Aztertu margoketa (JSON stdout-era)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Kargatutako modeloan jada gordeta dagoen margotutako geruza bakoitzaren (euskarriak, jostura, MMU kolorea, gainazal zimurra) JSON laburpen egituratua idazten du — egoera bakoitzeko aurpegi kopurua, gainazal-azalera eta sarearekiko muga-kutxa — eta gero irten egiten da. Interfazean margoketa-tresnak irekitzearen ordezko makina-irakurgarria." + msgid "Export Settings" msgstr "Esportatu ezarpenak" -msgid "This exports settings to a file." -msgstr "Honek ezarpenak fitxategi batera esportatzen ditu." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Honek ezarpenak fitxategi batera esportatzen ditu. Erabili - stdout-era idazteko." msgid "Send progress to pipe" msgstr "Bidali aurrerapena pipe-ra" @@ -17611,6 +17784,30 @@ msgstr "Biratu Y inguruan" msgid "Rotation angle around the Y axis in degrees." msgstr "Y ardatzaren inguruko biraketa-angelua, gradutan." +# AI Translated +msgid "Ground largest face" +msgstr "Jarri aurpegirik handienaren gainean" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Objektu bakoitza bere oskol ganbileko aurpegirik handienaren gainean jartzen du eta ohera erortzen uzten du. Tamaina bereko aurpegien artean, jada beherantz begira dagoena mantentzen da. Bermatzeko behar bezain aurpegi handirik ez duten objektuak dauden bezala uzten dira. Eraldaketak komando-lerroaren ordenan exekutatzen dira; beraz, aukera honen aurretik emandako biraketak errespetatzen dira. --orient 1 eraldaketa guztien ondoren exekutatzen da eta orientazioa ordezkatzen du." + +# AI Translated +msgid "Ground face by normal" +msgstr "Jarri aurpegiaren gainean normalaren arabera" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Objektu bakoitza kanporako normala NX,NY,NZ norabidetik hurbilen duen oskol ganbileko aurpegiaren gainean jartzen du eta ohera erortzen uzten du. Norabidea objektuaren koordenatuetan adierazten da; horiek aukera honen aurretik emandako biraketak barne hartzen dituzte eta plataformaren ardatzekin bat datoz, sarrerako fitxategiak objektua biratzen ez badu behintzat. Adibidez, 1,0,0 balioak objektua bere +X aldearen gainean jartzen du zutik. --orient 1 eraldaketa guztien ondoren exekutatzen da eta orientazioa ordezkatzen du." + +# AI Translated +msgid "Ground face at point" +msgstr "Jarri puntu bateko aurpegiaren gainean" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Objektu bakoitza X,Y,Z puntua duen oskol ganbileko aurpegiaren gainean jartzen du eta ohera erortzen uzten du. Puntua objektuaren koordenatuetan adierazten da; horiek aukera honen aurretik emandako biraketak barne hartzen dituzte, eta --inspect-mesh aukerak koordenatu horietan ematen ditu aurpegien erdiguneak. Horrelako aurpegirik ez duten objektuak dauden bezala uzten dira, eta exekuzioak huts egiten du objektu bakar batek ere ez badu horrelakorik. --orient 1 eraldaketa guztien ondoren exekutatzen da eta orientazioa ordezkatzen du." + msgid "Scale the model by a float factor." msgstr "Eskalatu modeloa koma mugikorreko faktore baten bidez." @@ -20666,14 +20863,17 @@ msgstr "Ekintza hau ezin da desegin. Jarraitu?" msgid "Skipping objects." msgstr "Objektuak saltatzen." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Material-proportzioa" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modeloaren altuera" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proportzioa" msgid "Select Filament" msgstr "Hautatu filamentua" @@ -20916,11 +21116,15 @@ msgstr "Lehortzen-Berotzen" msgid "Drying-Dehumidifying" msgstr "Lehortzen-Hezetasuna kentzen" -msgid " maximum drying temperature is " -msgstr " lehortze-tenperatura maximoa da " +# AI Translated +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s: gehieneko lehortze-tenperatura %d°C da." -msgid " minimum drying temperature is " -msgstr " lehortze-tenperatura minimoa da " +# AI Translated +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s: gutxieneko lehortze-tenperatura %d°C da." msgid "This filament may not be completely dried." msgstr "Baliteke filamentu hau erabat lehortuta ez egotea." @@ -21333,6 +21537,92 @@ msgstr "" "Saihestu okertzea\n" "Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?" +#~ msgid "Other" +#~ msgstr "Bestelakoak" + +#~ msgid "Left: " +#~ msgstr "Ezkerra: " + +#~ msgid "Right: " +#~ msgstr "Eskuina: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Gehieneko tenperaturak ezin du hau gainditu: " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Gutxieneko tenperaturak ezin du hau baino txikiagoa izan: " + +#~ msgid "up to" +#~ msgstr "honaino" + +#~ msgid "above" +#~ msgstr "honen gainean" + +#~ msgid "from" +#~ msgstr "hemendik" + +#~ msgid "Configuration package: " +#~ msgstr "Konfigurazio-paketea: " + +#~ msgid " updated to " +#~ msgstr " hona eguneratu da: " + +#~ msgid "Grouping error: " +#~ msgstr "Taldekatze-errorea: " + +#~ msgid " can not be placed in the " +#~ msgstr " ezin da hemen kokatu: " + +#~ msgid " maximum drying temperature is " +#~ msgstr " lehortze-tenperatura maximoa da " + +#~ msgid " minimum drying temperature is " +#~ msgstr " lehortze-tenperatura minimoa da " + +# AI Translated +#~ msgid "needs" +#~ msgstr "honakoa behar du:" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "ez dago gaituta" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materiala ez dago argitaratuta" + +#~ msgid "Select the language" +#~ msgstr "Hautatu hizkuntza" + +#~ msgid "Select plugin" +#~ msgstr "Hautatu plugina" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Goiko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n" +#~ "Kanporanzkoa erdialdean hasten da, beraz, gehiegizko materiala gutxien ikusten den ertzera bultzatzen da. Barruranzkoa ertzean hasten da eta erdian kurba estuekin amaitzen da.\n" +#~ "Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n" +#~ "Barruranzkoa hasten da gainazal bakoitza kanpoko kurba zabalagoekin, eta horrek lehen geruzaren atxikimendua hobetzen du erdiko kurba estuak itsatsi ez daitezkeen inprimatze-plaketan. Kanporanzkoa erdialdean hasten da, gehiegizko materiala ertzera bultzatuz.\n" +#~ "Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Gaituta badago, purgatze-dorrea ez da inprimatuko tresna-aldaketarik ez duten geruzetan. Tresna-aldaketa duten geruzetan, estrusorea beherantz mugituko da purgatze-dorrea inprimatzeko. Erabiltzailearen ardura da inprimaketarekin talkarik ez dagoela ziurtatzea." + +#~ msgid "This exports settings to a file." +#~ msgstr "Honek ezarpenak fitxategi batera esportatzen ditu." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Waylanden jatorrizko zuzeneko ikuspegiak GStreamer GTK bideo-hustubidea behar du. Instalatu GStreamerrerako gtksink plugina eta berrabiarazi OrcaSlicer." diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 9d8739babe..3d410daf6e 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -2414,13 +2414,6 @@ msgstr "Une mise à jour est disponible. Ouvrez la boîte de dialogue du paquet msgid "%s has been removed." msgstr "%s a été supprimé." - -msgid "Select the language" -msgstr "Sélectionner la langue" - -msgid "Language" -msgstr "Langue" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "Le passage d’Orca Slicer à la langue %s a échoué." @@ -3635,11 +3628,15 @@ msgstr "Rétracter le filament actuel au Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Changer de voie au Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "La température maximale ne peut pas dépasser " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "La température maximale ne peut pas dépasser %d" -msgid "The minmum temperature should not be less than " -msgstr "La température minimale ne doit pas être inférieure à " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "La température minimale ne doit pas être inférieure à %d" msgid "Type to filter..." msgstr "Saisissez du texte pour filtrer…" @@ -4507,6 +4504,15 @@ msgstr "" "La copie du G-code temporaire vers le G-code de sortie a échoué. La carte SD est peut-être bloquée en écriture ?\n" "Message d’erreur : %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"La copie du G-code temporaire vers le G-code de sortie a échoué.\n" +"Message d'erreur : %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué. Il se peut qu’il y ait un problème avec le dispositif cible, veuillez essayer d’exporter à nouveau ou d’utiliser un autre périphérique. Le G-code de sortie corrompu se trouve dans %1%.tmp." @@ -5240,10 +5246,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "La valeur %s est hors plage. La plage valide est comprise entre %d et %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Est-ce %s%% ou %s %s ?" +msgid "Is it %s%% or %s %s?" +msgstr "Est-ce %s%% ou %s %s ?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5269,22 +5276,18 @@ msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" msgid "System agents" msgstr "Agents système" -# AI Translated -msgid "No plugin selected" -msgstr "Aucun plugin sélectionné" - # AI Translated msgid "Add plugin" msgstr "Ajouter un plugin" -# AI Translated -msgid "Select plugin" -msgstr "Sélectionner un plugin" - # AI Translated msgid "Remove plugin" msgstr "Supprimer le plugin" +# AI Translated +msgid "No plugin selected" +msgstr "Aucun plugin sélectionné" + # AI Translated msgid "Configure" msgstr "Configurer" @@ -5540,14 +5543,20 @@ msgstr "Définir comme optimal" msgid "Regroup filament" msgstr "Regrouper les filaments" -msgid "up to" -msgstr "jusqu’à" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "jusqu’à %1% mm" -msgid "above" -msgstr "plus que" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "au-dessus de %1% mm" -msgid "from" -msgstr "de" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "de %1% à %2% mm" msgid "Usage" msgstr "Utilisation" @@ -5905,7 +5914,7 @@ msgstr "Volume :" msgid "Size:" msgstr "Taille :" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z = %.2lfmm. Veuillez séparer davantage les objets en conflit (%s <-> %s)." @@ -6217,11 +6226,13 @@ msgstr "Enregistrer le projet sous" msgid "Save current project as" msgstr "Enregistrer le projet actuel sous" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publier 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exporter un fichier 3MF avec les réglages sélectionnés intégrés" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importer des fichiers 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7484,6 +7495,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Inférieur" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Ce réglage ne précise pas de type de capacité de plugin." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Ce réglage précise un type de capacité de plugin non reconnu : " + # AI Translated msgid "Plugin Selection" msgstr "Sélection des plugins" @@ -8044,11 +8063,13 @@ msgstr "Veuillez vous assurer que les G-codes de ces préréglages sont sûrs af msgid "Customized Preset" msgstr "Préréglage personnalisé" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Certains réglages publiés n'ont pas pu être appliqués :" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Certains emplacements de filament ont été modifiés :" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Le nom des composants dans le fichier STEP n'est pas au format UTF-8 !" @@ -8451,13 +8472,17 @@ msgstr "Enregistrer le fichier découpé sous :" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Le fichier %s a été envoyé vers l'espace de stockage de l'imprimante et peut être visualisé sur l'imprimante." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publier le fichier 3MF sous :" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Échec de l'exportation du fichier 3MF publié.\n" +"Veuillez vérifier si le dossier existe en ligne ou si d'autres programmes ont le fichier ouvert." msgid "Publish" msgstr "Publier" @@ -8672,7 +8697,6 @@ msgstr "Voulez-vous continuer ?" msgid "Language selection" msgstr "Sélection de la langue" - msgid "Asia-Pacific" msgstr "Asie-Pacifique" @@ -8777,6 +8801,9 @@ msgstr "Chemin d’accès à l’instance courante : " msgid "General" msgstr "Général" +msgid "Language" +msgstr "Langue" + msgid "Metric" msgstr "Métrique" @@ -9207,9 +9234,6 @@ msgstr "Lors du défilement du curseur de couche dans l'aperçu découpé, affic msgid "Dimmed layer brightness" msgstr "Luminosité des couches assombries" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9606,63 +9630,80 @@ msgstr "Téléversement des données" msgid "Jump to webpage" msgstr "Ouvrir la page internet" +# AI Translated msgid "Material" -msgstr "" +msgstr "Matériau" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filament mixte" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Certains filaments mixtes dépendent de filaments qui ne seront pas publiés :" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (mixte)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% nécessite %2%, qui n'est pas activé." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% nécessite %2%, dont le matériau ne sera pas publié." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Pour publier un filament mixte, activez chacun des filaments qu'il utilise et choisissez Publication complète ou satisfaites son exigence de Type." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Publier quand même" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publier 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Sélectionnez les réglages à publier dans le fichier 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki de Publier 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Guide vidéo de Publier 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filament mixte - publié dans son ensemble lorsque « Activer » est coché ci-dessus" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publier ce filament mixte, puis activer + publier entièrement ses filaments composants" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publier cet emplacement de filament dans le fichier 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Publication complète" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Intégrer l'ensemble du filament de cet emplacement dans le fichier 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrer les éléments non sélectionnés" #, c-format, boost-format msgid "Save %s as" @@ -9681,6 +9722,10 @@ msgstr "Copie dans ce préréglage toutes les valeurs héritées du préréglage msgid "Detach from parent" msgstr "Détacher du parent" +# AI Translated +msgid "Save without parent" +msgstr "Enregistrer sans parent" + # AI Translated msgid "Unique preset" msgstr "Préréglage unique" @@ -10382,9 +10427,17 @@ msgstr "Une tour d'amorçage est requise pour la détection d'agglomération. Il msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "L'activation simultanée de la hauteur Z précise et de la tour d'amorçage peut provoquer des erreurs de tranchage. Voulez-vous quand même activer la hauteur Z précise ?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Le timelapse fluide nécessite une tour d’amorçage à chaque couche, ce qui est incompatible avec « Pas de couches éparses ». « Pas de couches éparses » a été désactivé." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Une tour d’amorçage est requise pour le mode timelapse fluide. Le modèle peut présenter des défauts sans tour d’amorçage. Voulez-vous activer la tour d’amorçage ?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "« Pas de couches éparses » est incompatible avec le timelapse fluide, qui nécessite une tour d’amorçage à chaque couche. Le timelapse est repassé en mode traditionnel." + msgid "Still print by object?" msgstr "Vous imprimez toujours par objet ?" @@ -10753,9 +10806,6 @@ msgstr "Profils de traitement compatibles" msgid "Printable space" msgstr "Espace imprimable" -msgid "Printer Agent" -msgstr "Agent d'imprimante" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante. Les agents disponibles sont enregistrés au démarrage." @@ -11154,12 +11204,6 @@ msgstr "Nombre d'extrudeurs" msgid "Capabilities" msgstr "Fonctionnalités" -msgid "Left: " -msgstr "Gauche : " - -msgid "Right: " -msgstr "Droite : " - msgid "Show all presets (including incompatible)" msgstr "Afficher tous les préréglages (y compris incompatibles)" @@ -11993,15 +12037,22 @@ msgstr "Réparation annulée" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Échec de la copie du fichier %1% vers %2% : %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Téléchargement des nouveaux profils de fabricant : " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Paquet de configuration : %1% mis à jour en %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Échec du téléchargement des profils de fabricant : " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Besoin de vérifier les modifications non enregistrées avant les mises à jour de configuration." -msgid "Configuration package: " -msgstr "Paquet de configuration : " - -msgid " updated to " -msgstr " mis à jour en " - msgid "Open G-code file:" msgstr "Ouvrir un fichier G-code :" @@ -12061,11 +12112,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "La mise en forme du signal n’est prise en charge que par Klipper, RepRapFirmware et Marlin 2" -msgid "Grouping error: " -msgstr "Erreur de regroupement : " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Erreur de regroupement : %1% ne peut pas être placé dans la buse gauche" -msgid " can not be placed in the " -msgstr " ne peut pas être placé dans le/la " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Erreur de regroupement : %1% ne peut pas être placé dans la buse droite" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12179,6 +12234,10 @@ msgstr "%1% est trop proche des autres, cela pourrait provoquer des collisions." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% est trop grand, cela pourrait provoquer des collisions." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "La position relative du modèle et de la tour d’amorçage ne répond pas aux exigences de la fonction « Pas de couches éparses ». Veuillez ajuster leurs positions relatives, réduire la hauteur du modèle ou désactiver « Pas de couches éparses »." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " est trop proche d'une zone d'exclusion, il peut y avoir des collisions lors de l'impression." @@ -12522,6 +12581,9 @@ msgstr "Utiliser le 3MF au lieu du G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Activez ceci si l’imprimante accepte un fichier 3MF comme tâche d’impression. Lorsque cette option est activée, Orca Slicer envoie le fichier découpé au format .gcode.3mf au lieu d’un simple fichier .gcode." +msgid "Printer Agent" +msgstr "Agent d'imprimante" + msgid "Select the network agent implementation for printer communication." msgstr "Sélectionner l'implémentation de l'agent réseau pour la communication avec l'imprimante." @@ -13567,6 +13629,10 @@ msgstr "Rectiligne Aligné" msgid "Concentric" msgstr "Concentrique" +# AI Translated +msgid "Spiral Inset" +msgstr "Spirale décalée" + msgid "Hilbert Curve" msgstr "Courbe de Hilbert" @@ -13658,13 +13724,13 @@ msgstr "Ordre de remplissage de la surface supérieure" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direction dans laquelle les surfaces supérieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n" -"Vers l'extérieur commence au centre de la surface, de sorte que tout excès de matière est poussé vers le bord où il est le moins visible. Vers l'intérieur commence au bord et se termine par les courbes serrées au centre.\n" -"Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens." +"Sens dans lequel les surfaces supérieures sont remplies avec un motif partant du centre (Concentrique, Spirale décalée, Spirale d'Archimède, Spirale Octagramme).\n" +"Vers l'extérieur commence au centre de la surface, ce qui repousse l'excédent de matière vers le bord, là où il est le moins visible. Vers l'intérieur commence au bord et se termine par les courbes serrées du centre.\n" +"Défaut utilise l'ordre du chemin le plus court, qui peut aller dans un sens comme dans l'autre." # AI Translated msgid "Bottom surface fill order" @@ -13672,13 +13738,13 @@ msgstr "Ordre de remplissage de la surface inférieure" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direction dans laquelle les surfaces inférieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n" -"Vers l'intérieur commence chaque surface par les courbes extérieures plus larges, ce qui améliore l'adhérence de la première couche sur les plateaux où les courbes serrées au centre peuvent ne pas adhérer. Vers l'extérieur commence au centre, poussant tout excès de matière vers le bord.\n" -"Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens." +"Sens dans lequel les surfaces inférieures sont remplies avec un motif partant du centre (Concentrique, Spirale décalée, Spirale d'Archimède, Spirale Octagramme).\n" +"Vers l'intérieur commence chaque surface par les courbes extérieures les plus larges, ce qui améliore l'adhérence de la couche initiale sur les plateaux où les courbes serrées du centre risquent de ne pas accrocher. Vers l'extérieur commence au centre et repousse l'excédent de matière vers le bord.\n" +"Défaut utilise l'ordre du chemin le plus court, qui peut aller dans un sens comme dans l'autre." msgid "Internal solid infill pattern" msgstr "Motif de remplissage plein interne" @@ -13777,6 +13843,14 @@ msgstr "Sens inverse des aiguilles d’une montre" msgid "Clockwise" msgstr "Dans le sens des aiguilles d’une montre" +# AI Translated +msgid "Distance to rod" +msgstr "Distance à la tige" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Distance horizontale entre la pointe de la buse et le bord le plus éloigné de la tige. Utilisée pour éviter les collisions lors de l'impression par objet." + msgid "Height to rod" msgstr "Hauteur jusqu’à la tige" @@ -15929,6 +16003,20 @@ msgstr "Détecter les parois en surplomb" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Détectez le pourcentage de surplomb par rapport à la largeur de la ligne et utilisez une vitesse différente pour imprimer. Pour un surplomb de 100%% la vitesse du pont est utilisée." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Imprimer les parois sans support en dernier" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Les boucles de paroi entièrement en l'air ne sont imprimées qu'une fois que quelque chose peut les soutenir :\n" +"elles sont extrudées après les autres parois de leur îlot, la plus intérieure d'abord, quel que soit l'ordre des parois.\n" +"Une boucle que seuls les ponts de cette couche peuvent ancrer attend que ces ponts soient imprimés, tandis qu'une boucle longeant une paroi soutenue garde sa place avant le remplissage, qui en a besoin comme ancrage." + msgid "Outer walls" msgstr "Parois extérieures" @@ -16365,6 +16453,39 @@ msgstr "Essuyer sur les boucles" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Pour minimiser la visibilité de la couture dans une extrusion en boucle fermée, un petit mouvement vers l’intérieur est exécuté avant que la buse ne quitte la boucle." +# AI Translated +msgid "Wipe inward" +msgstr "Essuyage vers l'intérieur" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"S'applique uniquement aux parois extérieures, contours des trous compris. Déplace la buse chaude vers les parois intérieures déjà imprimées pendant l'essuyage, afin de limiter le réchauffement du plastique fraîchement déposé et les marques de couture.\n" +"\n" +"Particulièrement utile pour des hauteurs de couche inférieures à 0,1 mm, où les marques d'essuyage sont plus visibles.\n" +"\n" +"Utilise l'essuyage normal si aucune paroi intérieure adjacente n'est déjà imprimée (zones à paroi unique ou ordre des parois Extérieur/Intérieur), ou si aucun chemin vers l'intérieur soutenu n'est trouvé, par exemple dans les angles serrés ou aux interruptions de couture." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Distance d'essuyage vers l'intérieur" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Distance dont le chemin d'essuyage est décalé par rapport au périmètre extérieur, exprimée en millimètres ou en pourcentage de la largeur d'extrusion réelle de la paroi extérieure.\n" +"\n" +"Par exemple, 50% décale le chemin de la moitié de la largeur de la paroi extérieure. Le décalage effectif est limité à la fois par la largeur réelle de la paroi extérieure et par l'espace disponible jusqu'à la paroi adjacente : les valeurs supérieures à 100% ou une distance absolue équivalente n'ont donc aucun effet supplémentaire. Mettez 0 pour désactiver le décalage." + msgid "Wipe before external loop" msgstr "Essuyer avant la boucle externe" @@ -16626,8 +16747,9 @@ msgstr "Prend le nouvel outil sans attendre qu’il atteigne la température d msgid "No sparse layers (beta)" msgstr "Pas de couches éparses (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Si cette option est activée, la tour d’essuyage ne sera pas imprimée sur les couches sans changement d’outil. Sur les couches avec changement d’outil, l’extrudeur se déplacera vers le bas pour imprimer la tour d’essuyage. L’utilisateur est responsable de s’assurer qu’il n’y a pas de collision avec l’impression." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Si cette option est activée, la tour d'essuyage n'est pas imprimée sur les couches sans changement d'outil. Sur les couches comportant un changement d'outil, l'extrudeur descend pour imprimer la tour d'essuyage : la tour se retrouve donc sous le modèle et la tête d'outil doit descendre jusqu'à elle. Les dispositions où cela entrerait en collision avec un objet déjà imprimé sont rejetées. Sans effet avec le timelapse fluide ou la détection d'agglomération de la buse, qui nécessitent une tour à chaque couche." msgid "Prime all printing extruders" msgstr "Amorcer tous les extrudeurs d’impression" @@ -16653,6 +16775,34 @@ msgstr "" msgid "Cyclic" msgstr "Cyclique" +# AI Translated +msgid "Cyclic order" +msgstr "Ordre cyclique" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Séquence de filaments personnalisée utilisée par l'ordre cyclique des changements d'outil, sous forme de numéros de filament séparés par des virgules (par ex. « 3,2,1,4 »).\n" +"Chaque couche imprime ses filaments en suivant cette séquence ; les filaments non listés sont imprimés en dernier, par ordre croissant.\n" +"Laissez vide pour parcourir les filaments par ordre croissant." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Appliquer l'ordre cyclique à la couche initiale" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Applique également l'ordre cyclique des changements d'outil à la couche initiale.\n" +"Cette option est désactivée par défaut, car la couche initiale est au contraire ordonnée pour la meilleure adhérence au plateau : les filaments qui impriment de petits détails fragiles de la couche initiale sont imprimés en dernier, si bien que les changements d'outil et déplacements suivants risquent moins de décoller ces parties faiblement ancrées. Cet ordre de la couche initiale respecte aussi une séquence de filaments personnalisée pour la couche initiale lorsqu'elle est définie. L'avantage de l'ordre cyclique (les changements d'outil supplémentaires laissent à chaque couche plus de temps pour refroidir) ne s'applique pas à la couche initiale, imprimée lentement et à chaud pour l'adhérence.\n" +"N'activez cette option que si vous avez besoin exactement de la même séquence d'outils sur chaque couche, y compris la première, au prix de cette optimisation de l'adhérence." + msgid "Slice gap closing radius" msgstr "Rayon de fermeture de l’écart des tranches" @@ -16662,9 +16812,6 @@ msgstr "Les fissures plus petites que 2x le rayon de fermeture de l’espace son msgid "Slicing Mode" msgstr "Mode de découpe" -msgid "Other" -msgstr "Autre" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « Fermer les trous » pour fermer tous les trous du modèle." @@ -17651,6 +17798,14 @@ msgstr "Pas de vérification" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Ne pas effectuer de contrôle de validité, tel que le contrôle des conflits de parcours de G-code." +# AI Translated +msgid "Strict mode" +msgstr "Mode strict" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Termine avec un code de retour non nul lorsque le découpage émet un avertissement non critique qui ne serait autrement que consigné, par exemple un modèle nécessitant des supports alors que les supports sont désactivés. À utiliser en intégration continue ou dans des chaînes de traitement automatisées qui ne doivent jamais livrer un découpage subtilement défectueux. Chacun de ces avertissements est également listé avec une classe stable dans le tableau `warnings` de result.json, écrit uniquement sous Linux. Ne peut pas être combiné avec --no-check, qui saute la vérification des supports." + msgid "Normative check" msgstr "Contrôle normatif" @@ -17663,11 +17818,28 @@ msgstr "Information du Modèle de Sortie" msgid "This outputs the model’s information." msgstr "Sortie des informations du modèle." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Inspecter le maillage (JSON sur stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Affiche sur stdout un résumé JSON de chaque objet chargé, puis quitte : ses boîtes englobantes et les faces de son enveloppe convexe sur lesquelles il peut reposer, avec leurs normales, aires et centres. Ce sont les faces parmi lesquelles choisissent les options --ground-*. Alternative exploitable par une machine à --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Inspecter la peinture (JSON sur stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Affiche un résumé JSON structuré de chaque couche peinte (supports, couture, couleur MMU, surface irrégulière) déjà enregistrée sur le modèle chargé — nombre de facettes, aire de surface et boîte englobante locale au maillage pour chaque état — puis quitte. Alternative exploitable par une machine à l'ouverture des gizmos de peinture dans l'interface." + msgid "Export Settings" msgstr "Paramètres d'exportation" -msgid "This exports settings to a file." -msgstr "Exporter les paramètres vers un fichier." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Exporte les réglages vers un fichier. Utilisez - pour les écrire sur stdout." msgid "Send progress to pipe" msgstr "Envoyer la progression à la queue" @@ -17723,6 +17895,30 @@ msgstr "Rotation autour de l’axe Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Angle de rotation autour de l’axe Y en degrés." +# AI Translated +msgid "Ground largest face" +msgstr "Poser sur la plus grande face" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Pose chaque objet sur la plus grande face de son enveloppe convexe et le fait tomber sur le plateau. Parmi des faces de même taille, celle déjà tournée vers le bas est conservée. Les objets dépourvus d'une face assez grande pour reposer dessus sont laissés tels quels. Les transformations s'appliquent dans l'ordre de la ligne de commande : les rotations indiquées avant cette option sont donc respectées. --orient 1 s'exécute après toutes les transformations et remplace l'orientation." + +# AI Translated +msgid "Ground face by normal" +msgstr "Poser sur la face selon la normale" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Pose chaque objet sur la face de son enveloppe convexe dont la normale extérieure est la plus proche de la direction NX,NY,NZ et le fait tomber sur le plateau. La direction est exprimée dans les coordonnées de l'objet, qui incluent les rotations indiquées avant cette option et correspondent aux axes du plateau, sauf si le fichier d'entrée fait pivoter l'objet. Par exemple, 1,0,0 pose l'objet sur sa face +X. --orient 1 s'exécute après toutes les transformations et remplace l'orientation." + +# AI Translated +msgid "Ground face at point" +msgstr "Poser sur la face en un point" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Pose chaque objet sur la face de son enveloppe convexe qui contient le point X,Y,Z et le fait tomber sur le plateau. Le point est exprimé dans les coordonnées de l'objet, qui incluent les rotations indiquées avant cette option ; --inspect-mesh donne les centres des faces dans ces coordonnées. Les objets dépourvus d'une telle face sont laissés tels quels, et l'exécution échoue si aucun objet n'en possède. --orient 1 s'exécute après toutes les transformations et remplace l'orientation." + msgid "Scale the model by a float factor." msgstr "Mettre à l'échelle le modèle par un facteur flottant" @@ -20778,14 +20974,17 @@ msgstr "Cette action ne peut pas être annulée. Continuer ?" msgid "Skipping objects." msgstr "Ignorer des objets." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Proportion de matériau" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Hauteur du modèle" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proportion" msgid "Select Filament" msgstr "Sélectionner le filament" @@ -21041,12 +21240,14 @@ msgid "Drying-Dehumidifying" msgstr "Séchage - Déshumidification" # AI Translated -msgid " maximum drying temperature is " -msgstr " la température de séchage maximale est de " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "La température de séchage maximale de %s est de %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " la température de séchage minimale est de " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "La température de séchage minimale de %s est de %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -21491,6 +21692,95 @@ msgstr "" "Éviter la déformation\n" "Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?" +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Left: " +#~ msgstr "Gauche : " + +#~ msgid "Right: " +#~ msgstr "Droite : " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "La température maximale ne peut pas dépasser " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "La température minimale ne doit pas être inférieure à " + +#~ msgid "up to" +#~ msgstr "jusqu’à" + +#~ msgid "above" +#~ msgstr "plus que" + +#~ msgid "from" +#~ msgstr "de" + +#~ msgid "Configuration package: " +#~ msgstr "Paquet de configuration : " + +#~ msgid " updated to " +#~ msgstr " mis à jour en " + +#~ msgid "Grouping error: " +#~ msgstr "Erreur de regroupement : " + +#~ msgid " can not be placed in the " +#~ msgstr " ne peut pas être placé dans le/la " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " la température de séchage maximale est de " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " la température de séchage minimale est de " + +# AI Translated +#~ msgid "needs" +#~ msgstr "nécessite" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "non activé" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "matériau non publié" + +#~ msgid "Select the language" +#~ msgstr "Sélectionner la langue" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Sélectionner un plugin" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direction dans laquelle les surfaces supérieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n" +#~ "Vers l'extérieur commence au centre de la surface, de sorte que tout excès de matière est poussé vers le bord où il est le moins visible. Vers l'intérieur commence au bord et se termine par les courbes serrées au centre.\n" +#~ "Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direction dans laquelle les surfaces inférieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n" +#~ "Vers l'intérieur commence chaque surface par les courbes extérieures plus larges, ce qui améliore l'adhérence de la première couche sur les plateaux où les courbes serrées au centre peuvent ne pas adhérer. Vers l'extérieur commence au centre, poussant tout excès de matière vers le bord.\n" +#~ "Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Si cette option est activée, la tour d’essuyage ne sera pas imprimée sur les couches sans changement d’outil. Sur les couches avec changement d’outil, l’extrudeur se déplacera vers le bas pour imprimer la tour d’essuyage. L’utilisateur est responsable de s’assurer qu’il n’y a pas de collision avec l’impression." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exporter les paramètres vers un fichier." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "L’aperçu en direct natif sous Wayland nécessite le récepteur vidéo GStreamer GTK. Veuillez installer le plugin gtksink pour GStreamer, puis redémarrer OrcaSlicer." diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 198d3decac..bc65ceef4b 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2460,13 +2460,6 @@ msgstr "Frissítés érhető el. Nyisd meg a beállításcsomag párbeszédablak msgid "%s has been removed." msgstr "%s eltávolítva." - -msgid "Select the language" -msgstr "Válaszd ki a nyelvet" - -msgid "Language" -msgstr "Nyelv" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3710,11 +3703,15 @@ msgstr "Az aktuális filament visszahúzása a Filament Track Switch-nél" msgid "Switch track at Filament Track Switch" msgstr "Sáv váltása a Filament Track Switch-nél" -msgid "The maximum temperature cannot exceed " -msgstr "A maximális hőmérséklet nem haladhatja meg ezt: " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "A maximális hőmérséklet nem haladhatja meg ezt: %d" -msgid "The minmum temperature should not be less than " -msgstr "A minimális hőmérséklet nem lehet kevesebb ennél: " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "A minimális hőmérséklet nem lehet kevesebb ennél: %d" # AI Translated msgid "Type to filter..." @@ -4601,6 +4598,15 @@ msgstr "" "Nem sikerült az ideiglenes G-kódot a kimeneti G-kódba másolni. Lehet, hogy az SD-kártya írásvédett?\n" "Hibaüzenet: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Az ideiglenes G-kód másolása a kimeneti G-kódba nem sikerült.\n" +"Hibaüzenet: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Nem sikerült az ideiglenes G-kódot a kimeneti G-kódba másolni. Probléma lehet a céleszközzel. Kérlek, exportáld újra, vagy használj másik eszközt. A sérült kimeneti G-kód helye: %1%.tmp." @@ -5337,10 +5343,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "%s érték tartományon kívül van. Az érvényes tartomány: %d - %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%% vagy %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%% vagy %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5366,22 +5373,18 @@ msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\"" msgid "System agents" msgstr "Rendszerügynökök" -# AI Translated -msgid "No plugin selected" -msgstr "Nincs kiválasztott bővítmény" - # AI Translated msgid "Add plugin" msgstr "Bővítmény hozzáadása" -# AI Translated -msgid "Select plugin" -msgstr "Bővítmény kiválasztása" - # AI Translated msgid "Remove plugin" msgstr "Bővítmény eltávolítása" +# AI Translated +msgid "No plugin selected" +msgstr "Nincs kiválasztott bővítmény" + # AI Translated msgid "Configure" msgstr "Konfigurálás" @@ -5637,14 +5640,20 @@ msgstr "Beállítás optimálisra" msgid "Regroup filament" msgstr "Filamentek újracsoportosítása" -msgid "up to" -msgstr "legfeljebb" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "legfeljebb %1% mm" -msgid "above" -msgstr "felett" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "%1% mm felett" -msgid "from" -msgstr "ettől" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "%1% mm-től %2% mm-ig" msgid "Usage" msgstr "Használat" @@ -6005,7 +6014,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "G-kód útvonalütközés található a(z) %d. rétegen, Z = %.2lfmm. Helyezd távolabb egymástól az ütköző objektumokat (%s <-> %s)." @@ -6319,11 +6328,13 @@ msgstr "Projekt mentése másként" msgid "Save current project as" msgstr "Jelenlegi projekt mentése másként" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MF közzététele" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "3MF fájl exportálása a kiválasztott beállítások beágyazásával" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7598,6 +7609,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Alsó" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Ez a beállítás nem ad meg bővítményképesség-típust." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Ez a beállítás ismeretlen bővítményképesség-típust ad meg: " + # AI Translated msgid "Plugin Selection" msgstr "Bővítmény kiválasztása" @@ -8159,11 +8178,13 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k msgid "Customized Preset" msgstr "Egyedi beállítás" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Néhány közzétett beállítást nem sikerült alkalmazni:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Néhány filamenthely megváltozott:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!" @@ -8577,13 +8598,17 @@ msgstr "Szeletelt fájl mentése mint:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MF fájl közzététele mint:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"A közzétett 3MF fájl exportálása nem sikerült.\n" +"Ellenőrizd, hogy a mappa elérhető-e online, illetve hogy más program nem tartja-e nyitva a fájlt." msgid "Publish" msgstr "Közzététel" @@ -8800,7 +8825,6 @@ msgstr "Szeretnéd folytatni?" msgid "Language selection" msgstr "Nyelv kiválasztása" - msgid "Asia-Pacific" msgstr "Ázsia-Csendes-óceáni térség" @@ -8905,6 +8929,9 @@ msgstr "Jelenlegi példány útvonala: " msgid "General" msgstr "Általános" +msgid "Language" +msgstr "Nyelv" + msgid "Metric" msgstr "Metrikus" @@ -9349,9 +9376,6 @@ msgstr "A rétegcsúszka mozgatásakor a szeletelt előnézetben az aktuális r msgid "Dimmed layer brightness" msgstr "Elhalványított rétegek fényereje" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9766,63 +9790,80 @@ msgstr "Adatok feltöltése" msgid "Jump to webpage" msgstr "Ugrás a weboldalra" +# AI Translated msgid "Material" -msgstr "" +msgstr "Anyag" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Kevert filament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Néhány kevert filament olyan filamentektől függ, amelyek nem lesznek közzétéve:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "%d. filament (kevert)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% a következőt igényli: %2%, amely nincs engedélyezve." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% a következőt igényli: %2%, amelynek az anyaga nem lesz közzétéve." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Kevert filament közzétételéhez engedélyezd az összes általa használt filamentet, és válaszd a Teljes közzétételt, vagy teljesítsd a Típus követelményét." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Közzététel mindenképp" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MF közzététele..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Válaszd ki, mely beállítások kerüljenek közzétételre a 3MF fájlban" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF közzététele wiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF közzététele videós útmutató" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Kevert filament - egészében kerül közzétételre, ha fent az \"Engedélyezve\" be van jelölve" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Ennek a kevert filamentnek a közzététele, valamint az összetevő filamentjeinek engedélyezése + teljes közzététele" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Ennek a filamenthelynek a közzététele a 3MF fájlban" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Teljes közzététel" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Ennek a helynek a teljes filamentjét beágyazza a 3MF fájlba" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Nem kijelöltek szűrése" #, c-format, boost-format msgid "Save %s as" @@ -9841,6 +9882,10 @@ msgstr "Az összes örökölt értéket átmásolja a szülő előbeállításb msgid "Detach from parent" msgstr "Leválasztás a szülőről" +# AI Translated +msgid "Save without parent" +msgstr "Mentés szülő nélkül" + # AI Translated msgid "Unique preset" msgstr "Önálló előbeállítás" @@ -10547,9 +10592,17 @@ msgstr "A csomósodás-észleléshez szükség van a törlőtoronyra. Nélküle msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "A pontos Z magasság és a törlőtorony egyidejű engedélyezése szeletelési hibákat okozhat. Továbbra is engedélyezi a pontos Z magasságot?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "A sima Timelapse-hez minden rétegen törlőtorony kell, ami nem használható a \"Nincsenek ritka rétegek\" beállítással együtt. A \"Nincsenek ritka rétegek\" kikapcsolva." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "A sima Timelapse módhoz törlőtorony szükséges. Nélküle hibák jelenhetnek meg a nyomtatott tárgyon. Bekapcsolod a törlőtornyot?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "A \"Nincsenek ritka rétegek\" nem használható a sima Timelapse-szel, amelyhez minden rétegen törlőtorony kell. A Timelapse hagyományos módra váltott." + msgid "Still print by object?" msgstr "Továbbra is tárgyanként szeretnél nyomtatni?" @@ -10925,9 +10978,6 @@ msgstr "Kompatibilis folyamatprofilok" msgid "Printable space" msgstr "Nyomtatási terület" -msgid "Printer Agent" -msgstr "Nyomtatóügynök" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Válaszd ki a nyomtatóval való kommunikációhoz használt hálózati ügynököt. Az elérhető ügynököket indításkor regisztrálja a rendszer." @@ -11332,14 +11382,6 @@ msgstr "Extruderek száma" msgid "Capabilities" msgstr "Képességek" -# AI Translated -msgid "Left: " -msgstr "Bal: " - -# AI Translated -msgid "Right: " -msgstr "Jobb: " - msgid "Show all presets (including incompatible)" msgstr "Minden beállítás megjelenítése (beleértve az inkompatibiliseket is)" @@ -12183,15 +12225,22 @@ msgstr "Javítás megszakítva" msgid "Copying of file %1% to %2% failed: %3%" msgstr "%1% fájl másolása sikertelen a következő helyre: %2% Hiba: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Új gyártói profilok letöltése: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Konfigurációs csomag: %1% frissítve erre: %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Nem sikerült letölteni a gyártói profilokat: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Kérlek, ellenőrizd a nem mentett módosításokat a konfiguráció frissítése előtt." -msgid "Configuration package: " -msgstr "Konfigurációs csomag: " - -msgid " updated to " -msgstr " frissítve erre: " - msgid "Open G-code file:" msgstr "G-kód fájl megnyitása:" @@ -12251,11 +12300,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "A rezgéskompenzációt csak a Klipper, a RepRapFirmware és a Marlin 2 támogatja" -msgid "Grouping error: " -msgstr "Csoportosítási hiba: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Csoportosítási hiba: %1% nem helyezhető a bal fúvókába" -msgid " can not be placed in the " -msgstr " nem helyezhető ide: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Csoportosítási hiba: %1% nem helyezhető a jobb fúvókába" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12369,6 +12422,10 @@ msgstr "%1% túl közel van más tárgyakhoz, a nyomtatás során előfordulhatn msgid "%1% is too tall, and collisions will be caused." msgstr "%1% túl magas, a nyomtatás során előfordulhatnak ütközések." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "A modell és a törlőtorony egymáshoz viszonyított helyzete nem felel meg a \"Nincsenek ritka rétegek\" funkció követelményeinek. Módosítsd az egymáshoz viszonyított helyzetüket, csökkentsd a modell magasságát, vagy kapcsold ki a \"Nincsenek ritka rétegek\" beállítást." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " túl közel van a tiltott területhez, a nyomtatás során előfordulhatnak ütközések." @@ -12729,6 +12786,9 @@ msgstr "3MF használata G-kód helyett" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Kapcsold be, ha a nyomtató 3MF fájlt fogad el nyomtatási feladatként. Bekapcsolva az Orca Slicer a szeletelt fájlt .gcode.3mf formátumban küldi el egyszerű .gcode fájl helyett." +msgid "Printer Agent" +msgstr "Nyomtatóügynök" + msgid "Select the network agent implementation for printer communication." msgstr "Válaszd ki a nyomtató kommunikációjához használt hálózati ügynök implementációját." @@ -13790,6 +13850,10 @@ msgstr "Igazított vonal" msgid "Concentric" msgstr "Koncentrikus" +# AI Translated +msgid "Spiral Inset" +msgstr "Spirális behúzás" + msgid "Hilbert Curve" msgstr "Hilbert-görbe" @@ -13881,13 +13945,13 @@ msgstr "Felső felület kitöltési sorrendje" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Az az irány, amelyben a felső felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n" -"A Kifelé a felület közepén kezd, így a felesleges anyag a szélek felé tolódik, ahol a legkevésbé látszik. A Befelé a szélén kezd, és a középen lévő szűk ívekkel fejeződik be.\n" -"Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat." +"Az az irány, amelyben a felső felületek kitöltése történik középpontból induló mintázat esetén (Koncentrikus, Spirális behúzás, Archimédeszi vonalak, Nyolcágú spirál).\n" +"A Kifelé a felület közepén indul, így a felesleges anyag a szélek felé tolódik, ahol a legkevésbé látszik. A Befelé a szélen indul, és a középen lévő szűk ívekkel ér véget.\n" +"Az Alapértelmezett a legrövidebb út szerinti sorrendet használja, amely bármelyik irányba haladhat." # AI Translated msgid "Bottom surface fill order" @@ -13895,13 +13959,13 @@ msgstr "Alsó felület kitöltési sorrendje" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Az az irány, amelyben az alsó felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n" -"A Befelé minden felületet a szélesebb külső ívekkel kezd, ami javítja az első réteg tapadását azokon az asztalokon, ahol a középen lévő szűk ívek nem tapadnak meg jól. A Kifelé a közepén kezd, a felesleges anyagot a szélek felé tolva.\n" -"Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat." +"Az az irány, amelyben az alsó felületek kitöltése történik középpontból induló mintázat esetén (Koncentrikus, Spirális behúzás, Archimédeszi vonalak, Nyolcágú spirál).\n" +"A Befelé minden felületet a szélesebb külső ívekkel kezd, ami javítja a kezdőréteg tapadását azokon az asztalokon, amelyeken a középen lévő szűk ívek esetleg nem tapadnak meg. A Kifelé a közepén indul, és a felesleges anyagot a szélek felé tolja.\n" +"Az Alapértelmezett a legrövidebb út szerinti sorrendet használja, amely bármelyik irányba haladhat." # AI Translated msgid "Internal solid infill pattern" @@ -14005,6 +14069,14 @@ msgstr "Óramutató járásával ellentétes" msgid "Clockwise" msgstr "Óramutató járásával megegyező" +# AI Translated +msgid "Distance to rod" +msgstr "Távolság a rúdtól" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "A fúvóka hegyének vízszintes távolsága a rúd távolabbi élétől. Ütközés elkerülésére szolgál tárgyankénti nyomtatás esetén." + msgid "Height to rod" msgstr "Magasság a rúdig" @@ -16183,6 +16255,20 @@ msgstr "Túlnyúló falak felismerése" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Felismeri a túlnyúlás százalékos arányát a vonalszélességhez viszonyítva, és más sebességet használ. A 100%%-os túlnyúlás esetén az áthidaláshoz beállított sebességet használja." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Alátámasztatlan falak nyomtatása utoljára" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"A teljesen a levegőben lévő falhurkok csak akkor kerülnek nyomtatásra, amikor már van, ami megtartsa őket:\n" +"a szigetük többi fala után kerülnek extrudálásra, a legbelsővel kezdve, függetlenül a falak sorrendjétől.\n" +"Az a hurok, amelyet csak az adott réteg áthidalásai tudnak rögzíteni, megvárja, amíg ezek az áthidalások kinyomtatásra kerülnek, míg egy alátámasztott fal mellett futó hurok megtartja a helyét a kitöltés előtt, amelynek rögzítésként szüksége van rá." + # AI Translated msgid "Outer walls" msgstr "Külső falak" @@ -16623,6 +16709,39 @@ msgstr "Törlés hurkokon" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "A varrat láthatóságának csökkentéséhez zárt hurok extrudálásnál egy kis befelé irányuló mozgás történik, mielőtt az extruder elhagyná a hurkot." +# AI Translated +msgid "Wipe inward" +msgstr "Törlés befelé" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Csak a külső falakra vonatkozik, beleértve a furatok kontúrjait is. Törlés közben a forró fúvókát a már kinyomtatott belső falak felé mozgatja, hogy csökkentse a frissen nyomtatott műanyag újramelegedését és a varratnyomokat.\n" +"\n" +"Különösen hasznos 0,1 mm alatti rétegmagasságnál, ahol a törlésnyomok jobban látszanak.\n" +"\n" +"A szokásos törlést használja, ha nincs még kinyomtatott szomszédos belső fal (egyfalú területek vagy Külső/Belső falsorrend), illetve ha nem található alátámasztott befelé vezető útvonal, például szűk sarkoknál vagy varrathézagoknál." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Törlés befelé távolsága" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Az a távolság, amennyivel a törlési útvonal eltolódik a külső kerülettől, milliméterben vagy a külső fal tényleges extrudálási szélességének százalékában megadva.\n" +"\n" +"Például az 50% a külső fal szélességének felével tolja el az útvonalat. A tényleges eltolást korlátozza a külső fal tényleges szélessége és a szomszédos falig rendelkezésre álló hely is, ezért a 100% feletti értékeknek vagy az ezzel egyenértékű abszolút távolságnak nincs további hatása. Az eltolás kikapcsolásához állítsd 0-ra." + msgid "Wipe before external loop" msgstr "Törlés a külső hurok előtt" @@ -16888,8 +17007,9 @@ msgstr "Felveszi az új szerszámot anélkül, hogy megvárná a nyomtatási hő msgid "No sparse layers (beta)" msgstr "Nincsenek ritka rétegek (béta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Ha engedélyezed, nem készül törlőtorony azokon a rétegeken, ahol nincs szerszámváltás. A szerszámváltást tartalmazó rétegeknél az extruder az aktuális magasság alá süllyed a törlőtorony nyomtatásához. Ügyelj arra, hogy ez ne okozzon ütközést a nyomtatás során." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Ha be van kapcsolva, a törlőtorony nem kerül nyomtatásra azokon a rétegeken, ahol nincs eszközváltás. Az eszközváltást tartalmazó rétegeken az extruder lefelé mozdul, hogy kinyomtassa a törlőtornyot, így a torony a modell alá kerül, és a szerszámfejnek le kell nyúlnia hozzá. Azok az elrendezések, ahol ez ütközne egy már kinyomtatott tárggyal, elutasításra kerülnek. Nincs hatása sima Timelapse vagy fúvókalerakódás-érzékelés esetén, mert ezekhez minden rétegen kell torony." msgid "Prime all printing extruders" msgstr "Az összes nyomtató extruder előkészítése" @@ -16915,6 +17035,34 @@ msgstr "" msgid "Cyclic" msgstr "Ciklikus" +# AI Translated +msgid "Cyclic order" +msgstr "Ciklikus sorrend" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"A ciklikus eszközváltási sorrend által használt egyéni filamentsorrend, vesszővel elválasztott filamentszámokként (pl. \"3,2,1,4\").\n" +"Minden réteg ezt a sorrendet követve nyomtatja a filamentjeit; a fel nem sorolt filamentek utoljára kerülnek nyomtatásra, növekvő sorrendben.\n" +"Hagyd üresen, ha a filamenteket növekvő sorrendben szeretnéd végigjárni." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Ciklikus sorrend alkalmazása a kezdőrétegre" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"A ciklikus eszközváltási sorrendet a kezdőrétegre is alkalmazza.\n" +"Alapértelmezés szerint ki van kapcsolva, mert a kezdőréteg helyette a legjobb asztalra tapadás érdekében kerül sorba rendezésre: azok a filamentek, amelyek kicsi, törékeny kezdőréteg-elemeket nyomtatnak, utoljára kerülnek sorra, így a következő eszközváltások és mozgások kisebb eséllyel szakítják le ezeket a gyengén rögzített részeket. Ez a kezdőréteg-sorrend figyelembe veszi a kezdőréteghez beállított egyéni filamentsorrendet is, ha van ilyen. A ciklikus sorrend előnye (a további eszközváltások több időt adnak minden rétegnek a hűlésre) nem érvényes a kezdőrétegre, amely a tapadás érdekében lassan és forrón készül.\n" +"Csak akkor kapcsold be, ha pontosan ugyanarra az eszközsorrendre van szükséged minden rétegen, beleértve az elsőt is, ezen tapadásoptimalizálás rovására." + msgid "Slice gap closing radius" msgstr "Szeletelési hézag lezárási sugara" @@ -16924,9 +17072,6 @@ msgstr "A háromszögháló szeletelésekor kitölti a hézagzárási sugár ké msgid "Slicing Mode" msgstr "Szeletelési mód" -msgid "Other" -msgstr "Egyéb" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Használd a \"Páros-páratlan\" opciót a 3DLabPrint repülőgépmodellekhez. Használd a \"Hézagok lezárása\" lehetőséget a modell összes házagának lezárásához." @@ -17924,6 +18069,14 @@ msgstr "Nincs ellenőrzés" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Ne futtass érvényességi ellenőrzéseket, például G-kód útvonalütközés-ellenőrzést." +# AI Translated +msgid "Strict mode" +msgstr "Szigorú mód" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Nem nulla kilépési kóddal lép ki, ha a szeletelés olyan nem kritikus figyelmeztetést ad, amely egyébként csak naplózásra kerülne, például ha egy modellhez támasz kellene, miközben a támasz ki van kapcsolva. Használd CI-ben vagy szkriptelt folyamatokban, amelyek soha nem adhatnak ki észrevétlenül hibás szeletelést. Minden ilyen figyelmeztetés stabil osztállyal szerepel a result.json `warnings` tömbjében is, amely csak Linuxon készül el. Nem használható a --no-check kapcsolóval együtt, amely kihagyja a támaszellenőrzést." + msgid "Normative check" msgstr "Normatív ellenőrzés" @@ -17936,11 +18089,28 @@ msgstr "Kimeneti modell információ" msgid "This outputs the model’s information." msgstr "Kimeneti modell információ." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Háló vizsgálata (JSON a stdout-ra)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Kiír a stdout-ra egy JSON összegzést minden betöltött tárgyról, majd kilép: a befoglaló dobozait és a konvex burok azon lapjait, amelyekre lefektethető, ezek normálisaival, területével és középpontjával együtt. Ezek közül a lapok közül választanak a --ground-* kapcsolók. Az --info géppel olvasható alternatívája." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Festés vizsgálata (JSON a stdout-ra)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Kiír egy strukturált JSON összegzést a betöltött modellen már tárolt minden festett rétegről (támaszok, varrat, MMU-szín, barázdált felület) — állapotonkénti lapszám, felület és a hálóhoz viszonyított befoglaló doboz —, majd kilép. A festőeszközök felületen történő megnyitásának géppel olvasható alternatívája." + msgid "Export Settings" msgstr "Beállítások exportálása" -msgid "This exports settings to a file." -msgstr "Beállítások exportálása egy fájlba." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Ez fájlba exportálja a beállításokat. A - használatával a stdout-ra írja őket." msgid "Send progress to pipe" msgstr "Folyamat elküldése" @@ -17996,6 +18166,30 @@ msgstr "Forgatás Y körül" msgid "Rotation angle around the Y axis in degrees." msgstr "Az Y tengely körüli forgatási szög fokban." +# AI Translated +msgid "Ground largest face" +msgstr "Fektetés a legnagyobb lapra" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Minden tárgyat a konvex burkának legnagyobb lapjára fektet, és ráejti az asztalra. Az egyforma méretű lapok közül a már lefelé néző marad. Azok a tárgyak, amelyeknek nincs elég nagy lapjuk a megtámaszkodáshoz, változatlanok maradnak. Az átalakítások a parancssori sorrendben futnak, így az ezen kapcsoló előtt megadott forgatások érvényesülnek. Az --orient 1 az összes átalakítás után fut, és felülírja a tájolást." + +# AI Translated +msgid "Ground face by normal" +msgstr "Fektetés lapra normális szerint" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Minden tárgyat a konvex burok azon lapjára fektet, amelynek kifelé mutató normálisa a legközelebb van az NX,NY,NZ irányhoz, és ráejti az asztalra. Az irány a tárgy koordinátáiban értendő, amelyek tartalmazzák az ezen kapcsoló előtt megadott forgatásokat, és megegyeznek az asztal tengelyeivel, hacsak a bemeneti fájl el nem forgatja a tárgyat. Például az 1,0,0 a +X oldalára állítja a tárgyat. Az --orient 1 az összes átalakítás után fut, és felülírja a tájolást." + +# AI Translated +msgid "Ground face at point" +msgstr "Fektetés pontban lévő lapra" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Minden tárgyat a konvex burok azon lapjára fektet, amely tartalmazza az X,Y,Z pontot, és ráejti az asztalra. A pont a tárgy koordinátáiban értendő, amelyek tartalmazzák az ezen kapcsoló előtt megadott forgatásokat; az --inspect-mesh ezekben adja meg a lapok középpontját. Azok a tárgyak, amelyeknek nincs ilyen lapjuk, változatlanok maradnak, és a futás hibával áll le, ha egyetlen tárgynak sincs ilyen lapja. Az --orient 1 az összes átalakítás után fut, és felülírja a tájolást." + msgid "Scale the model by a float factor." msgstr "A modell méretezése egy lebegő tényezővel" @@ -21180,14 +21374,17 @@ msgstr "Ez a művelet nem vonható vissza. Folytatod?" msgid "Skipping objects." msgstr "Objektumok kihagyása." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Anyagarány" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modellmagasság" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Arány" msgid "Select Filament" msgstr "Filament kiválasztása" @@ -21471,12 +21668,14 @@ msgid "Drying-Dehumidifying" msgstr "Szárítás – páramentesítés" # AI Translated -msgid " maximum drying temperature is " -msgstr " maximális szárítási hőmérséklete " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s maximális szárítási hőmérséklete %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " minimális szárítási hőmérséklete " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s minimális szárítási hőmérséklete %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -21922,6 +22121,97 @@ msgstr "" "Kunkorodás elkerülése\n" "Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?" +#~ msgid "Other" +#~ msgstr "Egyéb" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Bal: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Jobb: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "A maximális hőmérséklet nem haladhatja meg ezt: " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "A minimális hőmérséklet nem lehet kevesebb ennél: " + +#~ msgid "up to" +#~ msgstr "legfeljebb" + +#~ msgid "above" +#~ msgstr "felett" + +#~ msgid "from" +#~ msgstr "ettől" + +#~ msgid "Configuration package: " +#~ msgstr "Konfigurációs csomag: " + +#~ msgid " updated to " +#~ msgstr " frissítve erre: " + +#~ msgid "Grouping error: " +#~ msgstr "Csoportosítási hiba: " + +#~ msgid " can not be placed in the " +#~ msgstr " nem helyezhető ide: " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " maximális szárítási hőmérséklete " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " minimális szárítási hőmérséklete " + +# AI Translated +#~ msgid "needs" +#~ msgstr "ehhez kell" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "nincs engedélyezve" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "az anyag nincs közzétéve" + +#~ msgid "Select the language" +#~ msgstr "Válaszd ki a nyelvet" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Bővítmény kiválasztása" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Az az irány, amelyben a felső felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n" +#~ "A Kifelé a felület közepén kezd, így a felesleges anyag a szélek felé tolódik, ahol a legkevésbé látszik. A Befelé a szélén kezd, és a középen lévő szűk ívekkel fejeződik be.\n" +#~ "Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Az az irány, amelyben az alsó felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n" +#~ "A Befelé minden felületet a szélesebb külső ívekkel kezd, ami javítja az első réteg tapadását azokon az asztalokon, ahol a középen lévő szűk ívek nem tapadnak meg jól. A Kifelé a közepén kezd, a felesleges anyagot a szélek felé tolva.\n" +#~ "Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Ha engedélyezed, nem készül törlőtorony azokon a rétegeken, ahol nincs szerszámváltás. A szerszámváltást tartalmazó rétegeknél az extruder az aktuális magasság alá süllyed a törlőtorony nyomtatásához. Ügyelj arra, hogy ez ne okozzon ütközést a nyomtatás során." + +#~ msgid "This exports settings to a file." +#~ msgstr "Beállítások exportálása egy fájlba." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index bc9a0980f2..a28bfe7c7e 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2466,13 +2466,6 @@ msgstr "È disponibile un aggiornamento. Apri la finestra di dialogo del bundle msgid "%s has been removed." msgstr "%s è stato rimosso." - -msgid "Select the language" -msgstr "Seleziona la lingua" - -msgid "Language" -msgstr "Lingua" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3713,11 +3706,15 @@ msgstr "Ritira il filamento attuale sul Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Cambia traccia sul Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "La temperatura massima non può superare " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "La temperatura massima non può superare %d" -msgid "The minmum temperature should not be less than " -msgstr "La temperatura minima non deve essere inferiore a " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "La temperatura minima non deve essere inferiore a %d" # AI Translated msgid "Type to filter..." @@ -4603,6 +4600,15 @@ msgstr "" "Copia del G-code temporaneo sul G-code di uscita non riuscita. Forse la scheda SD è protetta da scrittura?\n" "Messaggio di errore: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Copia del G-code temporaneo nel G-code di output non riuscita.\n" +"Messaggio di errore: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Copia del G-code temporaneo nel G-code di uscita non riuscita. Potrebbe esserci un problema nel dispositivo di destinazione. Prova ad esportare di nuovo o usa un dispositivo diverso. Il file G-code corrotto è su %1%.tmp." @@ -5338,10 +5344,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Il valore %s è fuori intervallo. L'intervallo valido è da %d a %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"È %s%% o %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "È %s%% o %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5367,22 +5374,18 @@ msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\"" msgid "System agents" msgstr "Agenti di sistema" -# AI Translated -msgid "No plugin selected" -msgstr "Nessun plugin selezionato" - # AI Translated msgid "Add plugin" msgstr "Aggiungi plugin" -# AI Translated -msgid "Select plugin" -msgstr "Seleziona plugin" - # AI Translated msgid "Remove plugin" msgstr "Rimuovi plugin" +# AI Translated +msgid "No plugin selected" +msgstr "Nessun plugin selezionato" + # AI Translated msgid "Configure" msgstr "Configura" @@ -5638,14 +5641,20 @@ msgstr "Imposta al valore ottimale" msgid "Regroup filament" msgstr "Raggruppa nuovamente i filamenti" -msgid "up to" -msgstr "fino a" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "fino a %1% mm" -msgid "above" -msgstr "sopra" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "sopra %1% mm" -msgid "from" -msgstr "da" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "da %1% a %2% mm" msgid "Usage" msgstr "Utilizzo" @@ -6007,7 +6016,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Sono stati trovati conflitti di percorsi nel G-code sullo strato %d, Z = %.2lfmm. Si prega di separare gli oggetti in conflitto (%s <-> %s)." @@ -6321,11 +6330,13 @@ msgstr "Salva progetto con nome" msgid "Save current project as" msgstr "Salva progetto corrente con nome" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Pubblica 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Esporta un file 3MF con le impostazioni selezionate incorporate" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7602,6 +7613,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Inferiore" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Questa impostazione non specifica un tipo di funzionalità del plugin." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Questa impostazione specifica un tipo di funzionalità del plugin non riconosciuto: " + # AI Translated msgid "Plugin Selection" msgstr "Selezione plugin" @@ -8163,11 +8182,13 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s msgid "Customized Preset" msgstr "Profilo personalizzato" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Alcune impostazioni pubblicate non sono state applicate:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Alcuni slot filamento sono stati modificati:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF-8!" @@ -8576,13 +8597,17 @@ msgstr "Salva file elaborato con nome:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Pubblica il file 3MF come:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Esportazione del file 3MF pubblicato non riuscita.\n" +"Verifica se la cartella esiste online o se altri programmi hanno il file aperto." msgid "Publish" msgstr "Pubblica" @@ -8801,7 +8826,6 @@ msgstr "Vuoi continuare?" msgid "Language selection" msgstr "Selezione lingua" - msgid "Asia-Pacific" msgstr "Asia-Pacifico" @@ -8907,6 +8931,9 @@ msgstr "Percorso istanza attuale: " msgid "General" msgstr "Generale" +msgid "Language" +msgstr "Lingua" + msgid "Metric" msgstr "Metrico" @@ -9368,9 +9395,6 @@ msgstr "Quando si scorre il cursore degli strati nell'anteprima elaborata, gli s msgid "Dimmed layer brightness" msgstr "Luminosità degli strati attenuati" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9784,63 +9808,80 @@ msgstr "Caricamento dati" msgid "Jump to webpage" msgstr "Vai alla pagina web" +# AI Translated msgid "Material" -msgstr "" +msgstr "Materiale" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filamento misto" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Alcuni filamenti misti dipendono da filamenti che non verranno pubblicati:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filamento %d (misto)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% richiede %2%, che non è abilitato." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% richiede %2%, il cui materiale non verrà pubblicato." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Per pubblicare un filamento misto, abilita ogni filamento che utilizza e scegli Pubblicazione completa oppure soddisfa il suo requisito Tipo." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Pubblica comunque" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Pubblica 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Seleziona quali impostazioni pubblicare nel file 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki di Pubblica 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Guida video di Pubblica 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filamento misto - pubblicato per intero quando sopra è selezionato \"Abilita\"" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Pubblica questo filamento misto e abilita + pubblica per intero i suoi filamenti componenti" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Pubblica questo slot filamento nel file 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Pubblicazione completa" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Incorpora l'intero filamento di questo slot nel file 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtra non selezionati" #, c-format, boost-format msgid "Save %s as" @@ -9859,6 +9900,10 @@ msgstr "Copia in questo profilo tutti i valori ereditati dal profilo padre e rim msgid "Detach from parent" msgstr "Scollega dal genitore" +# AI Translated +msgid "Save without parent" +msgstr "Salva senza genitore" + # AI Translated msgid "Unique preset" msgstr "Profilo unico" @@ -10563,9 +10608,17 @@ msgstr "È necessaria una torre di spurgo per il rilevamento degli ammassi. Potr msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "L'abilitazione sia dell'altezza Z precisa che della torre di spurgo potrebbe causare errori di slicing. Vuoi comunque abilitare l'altezza Z precisa?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Il timelapse fluido richiede una torre di spurgo su ogni strato, il che non è compatibile con \"Nessuno strato sparso\". \"Nessuno strato sparso\" è stato disattivato." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "È necessaria una torre di spurgo per una modalità timelapse fluida. Potrebbero esserci dei difetti sul modello senza una torre di spurgo. Vuoi abilitare la torre di spurgo?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Nessuno strato sparso\" non è compatibile con il timelapse fluido, che richiede una torre di spurgo su ogni strato. Il timelapse è passato alla modalità tradizionale." + msgid "Still print by object?" msgstr "Stampare ancora per oggetto?" @@ -10939,9 +10992,6 @@ msgstr "Profili di processo compatibili" msgid "Printable space" msgstr "Spazio di stampa" -msgid "Printer Agent" -msgstr "Agente stampante" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio." @@ -11350,14 +11400,6 @@ msgstr "Numero di estrusori" msgid "Capabilities" msgstr "Caratteristiche" -# AI Translated -msgid "Left: " -msgstr "Sinistra: " - -# AI Translated -msgid "Right: " -msgstr "Destra: " - msgid "Show all presets (including incompatible)" msgstr "Mostra tutti i profili (compresi quelli non compatibili)" @@ -12204,15 +12246,22 @@ msgstr "Riparazione annullata" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Copia del file %1% su %2% non riuscita: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Download dei nuovi profili produttore: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Pacchetto di configurazione: %1% aggiornato a %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Download dei profili produttore non riuscito: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Controllare le modifiche non salvate prima di aggiornare la configurazione." -msgid "Configuration package: " -msgstr "Pacchetto di configurazione: " - -msgid " updated to " -msgstr " aggiornato a " - msgid "Open G-code file:" msgstr "Apri un file G-code:" @@ -12272,11 +12321,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "La compensazione della risonanza è supportata solo da Klipper, RepRapFirmware e Marlin 2" -msgid "Grouping error: " -msgstr "Errore di raggruppamento: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Errore di raggruppamento: %1% non può essere collocato nell'ugello sinistro" -msgid " can not be placed in the " -msgstr " non può essere posizionato nel " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Errore di raggruppamento: %1% non può essere collocato nell'ugello destro" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12390,6 +12443,10 @@ msgstr "%1% è troppo vicino ad altri oggetti e potrebbe causare collisioni." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% è troppo alto e si verificheranno collisioni." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "La posizione relativa del modello e della torre di spurgo non soddisfa i requisiti della funzione \"Nessuno strato sparso\". Modifica le loro posizioni relative, riduci l'altezza del modello oppure disattiva \"Nessuno strato sparso\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " è troppo vicino all'area di esclusione e potrebbero verificarsi collisioni durante la stampa." @@ -12749,6 +12806,9 @@ msgstr "Usa 3MF invece di G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Abilita questa opzione se la stampante accetta un file 3MF come processo di stampa. Quando è abilitata, Orca Slicer invia il file elaborato come .gcode.3mf, invece di un semplice file .gcode." +msgid "Printer Agent" +msgstr "Agente stampante" + msgid "Select the network agent implementation for printer communication." msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante." @@ -13810,6 +13870,10 @@ msgstr "Rettilineo allineato" msgid "Concentric" msgstr "Concentrico" +# AI Translated +msgid "Spiral Inset" +msgstr "Spirale interna" + msgid "Hilbert Curve" msgstr "Curva di Hilbert" @@ -13901,13 +13965,13 @@ msgstr "Ordine di riempimento della superficie superiore" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direzione in cui vengono riempite le superfici superiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n" -"Verso l'esterno inizia dal centro della superficie, in modo che il materiale in eccesso venga spinto verso il bordo dove è meno visibile. Verso l'interno inizia dal bordo e termina con le curve strette al centro.\n" -"L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni." +"Direzione in cui vengono riempite le superfici superiori quando si usa un motivo che parte dal centro (Concentrico, Spirale interna, Corde di Archimede, Spirale a ottogramma).\n" +"Verso l'esterno parte dal centro della superficie, così il materiale in eccesso viene spinto verso il bordo, dove è meno visibile. Verso l'interno parte dal bordo e termina con le curve strette al centro.\n" +"Predefinito usa l'ordinamento del percorso più breve, che può procedere in entrambe le direzioni." # AI Translated msgid "Bottom surface fill order" @@ -13915,13 +13979,13 @@ msgstr "Ordine di riempimento della superficie inferiore" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direzione in cui vengono riempite le superfici inferiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n" -"Verso l'interno inizia ogni superficie con le curve esterne più ampie, il che migliora l'adesione del primo strato sui piatti di stampa dove le curve strette al centro potrebbero non aderire. Verso l'esterno inizia dal centro, spingendo il materiale in eccesso verso il bordo.\n" -"L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni." +"Direzione in cui vengono riempite le superfici inferiori quando si usa un motivo che parte dal centro (Concentrico, Spirale interna, Corde di Archimede, Spirale a ottogramma).\n" +"Verso l'interno inizia ogni superficie con le curve esterne più ampie, migliorando l'adesione del primo strato sui piatti su cui le curve strette al centro potrebbero non aderire. Verso l'esterno parte dal centro e spinge il materiale in eccesso verso il bordo.\n" +"Predefinito usa l'ordinamento del percorso più breve, che può procedere in entrambe le direzioni." msgid "Internal solid infill pattern" msgstr "Motivo riempimento solido interno" @@ -14024,6 +14088,14 @@ msgstr "Senso antiorario" msgid "Clockwise" msgstr "Senso orario" +# AI Translated +msgid "Distance to rod" +msgstr "Distanza dall'asta" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Distanza orizzontale tra la punta dell'ugello e il bordo più lontano dell'asta. Usata per evitare collisioni nella stampa per oggetto." + msgid "Height to rod" msgstr "Altezza asta" @@ -16202,6 +16274,20 @@ msgstr "Rileva pareti sporgenti" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Rileva la percentuale di sporgenza rispetto alla larghezza della parete e utilizza un velocità di stampa differente. Per una sporgenza del 100%%, viene utilizzata la velocità dei ponti." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Stampa per ultime le pareti non supportate" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"I perimetri di stampa che si trovano interamente in aria vengono stampati solo quando qualcosa può sostenerli:\n" +"sono estrusi dopo le altre pareti della loro isola, partendo dalla più interna, qualunque sia l'ordine delle pareti.\n" +"Un perimetro che solo i ponti di questo strato possono ancorare attende che tali ponti siano stampati, mentre un perimetro che corre accanto a una parete supportata mantiene il suo posto prima del riempimento, che lo richiede come ancoraggio." + # AI Translated msgid "Outer walls" msgstr "Pareti esterne" @@ -16646,6 +16732,39 @@ msgstr "Spurgo sui perimetri di stampa" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Per ridurre al minimo la visibilità della cucitura in un'estrusione ad anello chiuso, viene eseguito un piccolo movimento verso l'interno prima che l'estrusore lasci il perimetro." +# AI Translated +msgid "Wipe inward" +msgstr "Spurgo verso l'interno" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Si applica solo alle pareti esterne, inclusi i contorni dei fori. Durante lo spurgo sposta l'ugello caldo verso le pareti interne già stampate, per ridurre il riscaldamento della plastica appena depositata e i segni di cucitura.\n" +"\n" +"Particolarmente utile con altezze strato inferiori a 0,1 mm, dove i segni di spurgo sono più visibili.\n" +"\n" +"Usa lo spurgo normale se nessuna parete interna adiacente è già stata stampata (zone a parete singola oppure ordine delle pareti Esterna/Interna) o se non si trova un percorso verso l'interno che sia supportato, ad esempio in angoli stretti o in corrispondenza di interruzioni della cucitura." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Distanza di spurgo verso l'interno" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Distanza di cui il percorso di spurgo viene spostato rispetto al perimetro esterno, espressa in millimetri o in percentuale della larghezza di estrusione effettiva della parete esterna.\n" +"\n" +"Ad esempio, 50% sposta il percorso di metà della larghezza della parete esterna. Lo spostamento effettivo è limitato sia dalla larghezza effettiva della parete esterna sia dallo spazio disponibile fino alla parete adiacente, perciò valori superiori a 100% o una distanza assoluta equivalente non hanno alcun effetto aggiuntivo. Imposta 0 per disattivare lo spostamento." + msgid "Wipe before external loop" msgstr "Spurgo prima del perimetro esterno" @@ -16912,8 +17031,9 @@ msgstr "Preleva la nuova testina senza attendere che raggiunga la temperatura di msgid "No sparse layers (beta)" msgstr "Nessuno strato sparso (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Se abilitata, la torre di spurgo non verrà stampata sugli strati in cui non viene effettuato alcun cambio di testina. Sui strati con un cambio di testina, l'estrusore si sposterà verso il basso per stampare la torre di spurgo. L'utente dovrà accertarsi che non avvengano collisioni con la stampa." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Se abilitata, la torre di spurgo non viene stampata sugli strati senza cambi testina. Sugli strati con un cambio testina l'estrusore scende per stampare la torre di spurgo, perciò la torre finisce sotto il modello e la testa di stampa deve abbassarsi fino ad essa. Le disposizioni in cui ciò comporterebbe una collisione con un oggetto già stampato vengono rifiutate. Non ha effetto con il timelapse fluido o con il rilevamento degli ammassi sull'ugello, che richiedono una torre su ogni strato." msgid "Prime all printing extruders" msgstr "Prepara tutti gli estrusori di stampa" @@ -16939,6 +17059,34 @@ msgstr "" msgid "Cyclic" msgstr "Ciclico" +# AI Translated +msgid "Cyclic order" +msgstr "Ordine ciclico" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Sequenza di filamenti personalizzata usata dall'ordinamento ciclico dei cambi testina, come numeri di filamento separati da virgole (ad es. \"3,2,1,4\").\n" +"Ogni strato stampa i suoi filamenti seguendo questa sequenza; i filamenti non elencati vengono stampati per ultimi, in ordine crescente.\n" +"Lascia vuoto per scorrere i filamenti in ordine crescente." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Applica l'ordine ciclico al primo strato" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Applica l'ordine ciclico dei cambi testina anche al primo strato.\n" +"Per impostazione predefinita è disattivato, perché il primo strato viene invece ordinato per la migliore adesione al piatto: i filamenti che stampano dettagli piccoli e fragili del primo strato vengono stampati per ultimi, così i cambi testina e gli spostamenti successivi hanno meno probabilità di staccare quelle parti ancorate debolmente. Questo ordine del primo strato rispetta anche una sequenza di filamenti personalizzata per il primo strato, quando ne è impostata una. Il vantaggio dell'ordine ciclico (i cambi testina aggiuntivi danno a ogni strato più tempo per raffreddarsi) non si applica al primo strato, che viene stampato lentamente e caldo per l'adesione.\n" +"Abilita questa opzione solo se ti serve esattamente la stessa sequenza di testine su ogni strato, incluso il primo, a scapito di quell'ottimizzazione dell'adesione." + msgid "Slice gap closing radius" msgstr "Raggio di chiusura spazi vuoti" @@ -16948,9 +17096,6 @@ msgstr "Le fessure più piccole di 2 volte il raggio di chiusura degli spazi vuo msgid "Slicing Mode" msgstr "Modalità elaborazione" -msgid "Other" -msgstr "Altro" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Usa \"Pari-dispari\" per modelli di aeroplano 3DLabPrint. Utilizza \"Chiudi fori\" per chiudere tutti i fori del modello." @@ -17947,6 +18092,14 @@ msgstr "Nessun controllo" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Non eseguire alcun controllo di validità, come il controllo dei conflitti di percorso del G-code." +# AI Translated +msgid "Strict mode" +msgstr "Modalità rigorosa" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Termina con un codice di uscita diverso da zero quando l'elaborazione genera un avviso non critico che altrimenti verrebbe solo registrato, ad esempio un modello che richiede supporti mentre i supporti sono disattivati. Usala in CI o in pipeline automatizzate che non devono mai consegnare un'elaborazione sottilmente difettosa. Ciascuno di questi avvisi è inoltre elencato con una classe stabile nell'array `warnings` di result.json, che viene scritto solo su Linux. Non può essere combinata con --no-check, che salta il controllo dei supporti." + msgid "Normative check" msgstr "Controllo normativo" @@ -17959,11 +18112,28 @@ msgstr "Informazioni modello di output" msgid "This outputs the model’s information." msgstr "Fornisce le informazioni del modello." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Ispeziona mesh (JSON su stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Stampa su stdout un riepilogo JSON di ogni oggetto caricato, poi esce: i suoi riquadri di delimitazione e le facce dell'inviluppo convesso su cui può appoggiarsi, con le relative normali, aree e centri. Sono queste le facce tra cui scelgono le opzioni --ground-*. Alternativa leggibile da una macchina a --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Ispeziona pittura (JSON su stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Stampa un riepilogo JSON strutturato di ogni livello dipinto (supporti, cucitura, colore MMU, superficie ruvida) già memorizzato nel modello caricato — numero di facce, area della superficie e riquadro di delimitazione locale alla mesh per ciascuno stato — poi esce. Alternativa leggibile da una macchina all'apertura degli strumenti di pittura nell'interfaccia." + msgid "Export Settings" msgstr "Esporta impostazioni" -msgid "This exports settings to a file." -msgstr "Esporta le impostazioni in un file." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Esporta le impostazioni in un file. Usa - per scriverle su stdout." msgid "Send progress to pipe" msgstr "Invia l'avanzamento al pipe" @@ -18019,6 +18189,30 @@ msgstr "Ruota attorno ad Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Angolo di rotazione attorno all'asse Y in gradi." +# AI Translated +msgid "Ground largest face" +msgstr "Appoggia sulla faccia più grande" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Appoggia ogni oggetto sulla faccia più grande del suo inviluppo convesso e lo fa cadere sul piatto. Tra facce di uguale dimensione viene mantenuta quella già rivolta verso il basso. Gli oggetti privi di una faccia abbastanza grande su cui appoggiarsi restano invariati. Le trasformazioni vengono applicate nell'ordine della riga di comando, perciò le rotazioni indicate prima di questa opzione sono rispettate. --orient 1 viene eseguito dopo tutte le trasformazioni e sostituisce l'orientamento." + +# AI Translated +msgid "Ground face by normal" +msgstr "Appoggia sulla faccia per normale" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Appoggia ogni oggetto sulla faccia dell'inviluppo convesso la cui normale esterna è più vicina alla direzione NX,NY,NZ e lo fa cadere sul piatto. La direzione è espressa nelle coordinate dell'oggetto, che includono le rotazioni indicate prima di questa opzione e coincidono con gli assi del piatto a meno che il file di input non ruoti l'oggetto. Ad esempio, 1,0,0 appoggia l'oggetto sul suo lato +X. --orient 1 viene eseguito dopo tutte le trasformazioni e sostituisce l'orientamento." + +# AI Translated +msgid "Ground face at point" +msgstr "Appoggia sulla faccia in un punto" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Appoggia ogni oggetto sulla faccia dell'inviluppo convesso che contiene il punto X,Y,Z e lo fa cadere sul piatto. Il punto è espresso nelle coordinate dell'oggetto, che includono le rotazioni indicate prima di questa opzione; --inspect-mesh riporta i centri delle facce in tali coordinate. Gli oggetti privi di una faccia simile restano invariati e l'esecuzione fallisce se nessun oggetto ne ha una. --orient 1 viene eseguito dopo tutte le trasformazioni e sostituisce l'orientamento." + msgid "Scale the model by a float factor." msgstr "Ridimensiona il modello in base a un fattore decimale." @@ -21204,14 +21398,17 @@ msgstr "Questa azione non può essere annullata. Continuare?" msgid "Skipping objects." msgstr "Salto degli oggetti." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Proporzione materiale" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Altezza modello" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proporzione" msgid "Select Filament" msgstr "Seleziona filamento" @@ -21495,12 +21692,14 @@ msgid "Drying-Dehumidifying" msgstr "Essiccazione - Deumidificazione" # AI Translated -msgid " maximum drying temperature is " -msgstr " la temperatura massima di essiccazione è " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "La temperatura massima di essiccazione di %s è %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " la temperatura minima di essiccazione è " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "La temperatura minima di essiccazione di %s è %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -21946,6 +22145,97 @@ msgstr "" "Evita le deformazioni\n" "Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?" +#~ msgid "Other" +#~ msgstr "Altro" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Sinistra: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Destra: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "La temperatura massima non può superare " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "La temperatura minima non deve essere inferiore a " + +#~ msgid "up to" +#~ msgstr "fino a" + +#~ msgid "above" +#~ msgstr "sopra" + +#~ msgid "from" +#~ msgstr "da" + +#~ msgid "Configuration package: " +#~ msgstr "Pacchetto di configurazione: " + +#~ msgid " updated to " +#~ msgstr " aggiornato a " + +#~ msgid "Grouping error: " +#~ msgstr "Errore di raggruppamento: " + +#~ msgid " can not be placed in the " +#~ msgstr " non può essere posizionato nel " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " la temperatura massima di essiccazione è " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " la temperatura minima di essiccazione è " + +# AI Translated +#~ msgid "needs" +#~ msgstr "richiede" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "non abilitato" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materiale non pubblicato" + +#~ msgid "Select the language" +#~ msgstr "Seleziona la lingua" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Seleziona plugin" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direzione in cui vengono riempite le superfici superiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n" +#~ "Verso l'esterno inizia dal centro della superficie, in modo che il materiale in eccesso venga spinto verso il bordo dove è meno visibile. Verso l'interno inizia dal bordo e termina con le curve strette al centro.\n" +#~ "L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direzione in cui vengono riempite le superfici inferiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n" +#~ "Verso l'interno inizia ogni superficie con le curve esterne più ampie, il che migliora l'adesione del primo strato sui piatti di stampa dove le curve strette al centro potrebbero non aderire. Verso l'esterno inizia dal centro, spingendo il materiale in eccesso verso il bordo.\n" +#~ "L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Se abilitata, la torre di spurgo non verrà stampata sugli strati in cui non viene effettuato alcun cambio di testina. Sui strati con un cambio di testina, l'estrusore si sposterà verso il basso per stampare la torre di spurgo. L'utente dovrà accertarsi che non avvengano collisioni con la stampa." + +#~ msgid "This exports settings to a file." +#~ msgstr "Esporta le impostazioni in un file." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index ed9960bb8a..68691d6700 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2473,13 +2473,6 @@ msgstr "アップデートが利用可能です。プリセットバンドルの msgid "%s has been removed." msgstr "%sを削除しました。" - -msgid "Select the language" -msgstr "言語を選択" - -msgid "Language" -msgstr "言語" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3727,11 +3720,15 @@ msgstr "Filament Track Switchで現在のフィラメントを引き戻す" msgid "Switch track at Filament Track Switch" msgstr "Filament Track Switchでトラックを切り替える" -msgid "The maximum temperature cannot exceed " -msgstr "最高温度は次の値を超えることはできません " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "最高温度は %d を超えることはできません" -msgid "The minmum temperature should not be less than " -msgstr "最低温度は次の値を下回ることはできません " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "最低温度は %d を下回ることはできません" # AI Translated msgid "Type to filter..." @@ -4610,6 +4607,15 @@ msgstr "" "一時的なGコードの出力Gコードへのコピーに失敗しました。 もしかしたらSDカードが書き込みロックされていませんか?\n" "エラーメッセージ:%1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"一時G-codeから出力G-codeへのコピーに失敗しました。\n" +"エラーメッセージ: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "一時Gコードの出力Gコードへのコピーに失敗しました。 ターゲットデバイスに問題がある可能性があります。もう一度エクスポートするか、別のデバイスを使用してみてください。 破損した出力Gコードは%1%.tmpにあります。" @@ -5352,10 +5358,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "値%sは範囲外です。有効な範囲は%dから%dです。" #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%% か、それとも %s %sですか?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%% か、それとも %s %sですか?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5381,22 +5388,18 @@ msgstr "無効なフォーマット、%1%であるはずです。" msgid "System agents" msgstr "システムエージェント" -# AI Translated -msgid "No plugin selected" -msgstr "プラグインが選択されていません" - # AI Translated msgid "Add plugin" msgstr "プラグインを追加" -# AI Translated -msgid "Select plugin" -msgstr "プラグインを選択" - # AI Translated msgid "Remove plugin" msgstr "プラグインを削除" +# AI Translated +msgid "No plugin selected" +msgstr "プラグインが選択されていません" + # AI Translated msgid "Configure" msgstr "設定" @@ -5653,14 +5656,20 @@ msgstr "最適に設定" msgid "Regroup filament" msgstr "フィラメントを再グルーピング" -msgid "up to" -msgstr "最大" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "%1% mm まで" -msgid "above" -msgstr "以上" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "%1% mm 以上" -msgid "from" -msgstr "から" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "%1% mm から %2% mm まで" msgid "Usage" msgstr "使用量" @@ -6023,7 +6032,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "レイヤー%d、Z = %.2lfmmでG-codeパスの衝突が検出されました。衝突するオブジェクトをもっと離してください(%s <-> %s)。" @@ -6331,11 +6340,13 @@ msgstr "プロジェクトを名前を付けて保存" msgid "Save current project as" msgstr "プロジェクトを名前を付けて保存" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MFを公開" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "選択した設定を埋め込んだ3MFファイルをエクスポートします" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMFをインポート" @@ -7609,6 +7620,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "底面" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "この設定にはプラグイン機能タイプが指定されていません。" + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "この設定には認識できないプラグイン機能タイプが指定されています: " + # AI Translated msgid "Plugin Selection" msgstr "プラグインの選択" @@ -8178,11 +8197,13 @@ msgstr "これらのプリセット内のG-codeがマシンに損傷を与えな msgid "Customized Preset" msgstr "カスタマイズされたプリセット" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "一部の公開された設定を適用できませんでした:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "一部のフィラメントスロットが変更されました:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "ファイルのエンコーディング方式はUTF-8形式ではありません" @@ -8596,13 +8617,17 @@ msgstr "名前を付けて保存:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%sを送信しました、プリンターにて確認できます" +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MFファイルを次の名前で公開:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"公開する3MFファイルのエクスポートに失敗しました。\n" +"フォルダーがオンラインで存在するか、他のプログラムがファイルを開いていないか確認してください。" msgid "Publish" msgstr "公開する" @@ -8820,7 +8845,6 @@ msgstr "続行しますか?" msgid "Language selection" msgstr "言語選択" - msgid "Asia-Pacific" msgstr "アジア太平洋地域" @@ -8925,6 +8949,9 @@ msgstr "現在のインスタンスのパス: " msgid "General" msgstr "一般" +msgid "Language" +msgstr "言語" + msgid "Metric" msgstr "メートル" @@ -9389,9 +9416,6 @@ msgstr "スライスプレビューで積層スライダーを操作する際、 msgid "Dimmed layer brightness" msgstr "暗くした積層の明るさ" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9807,63 +9831,80 @@ msgstr "データをアップロード中" msgid "Jump to webpage" msgstr "ウェブページに移動" +# AI Translated msgid "Material" -msgstr "" +msgstr "材料" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "混合フィラメント" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "一部の混合フィラメントは、公開されないフィラメントに依存しています:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "フィラメント %d (混合)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1%には%2%が必要ですが、有効化されていません。" -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1%には%2%が必要ですが、その材料は公開されません。" +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "混合フィラメントを公開するには、使用しているすべてのフィラメントを有効にし、完全公開を選ぶか、タイプの要件を満たしてください。" +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "それでも公開" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MFを公開..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "3MFファイルで公開する設定を選択してください" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF公開のWiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF公開のビデオガイド" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "混合フィラメント - 上の「有効化」を選択すると全体が公開されます" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "この混合フィラメントを公開し、その構成フィラメントを有効化+完全公開します" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "このフィラメントスロットを3MFファイルで公開します" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "完全公開" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "このスロットのフィラメント全体を3MFファイルに埋め込みます" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "未選択を絞り込み" #, c-format, boost-format msgid "Save %s as" @@ -9882,6 +9923,10 @@ msgstr "親プリセットから継承したすべての値をこのプリセッ msgid "Detach from parent" msgstr "親から分離" +# AI Translated +msgid "Save without parent" +msgstr "親なしで保存" + # AI Translated msgid "Unique preset" msgstr "独立したプリセット" @@ -10588,9 +10633,17 @@ msgstr "クランピング検出にはプライムタワーが必要です。プ msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "正確なZ高さとプライムタワーの両方を有効にすると、スライスエラーが発生する可能性があります。それでも正確なZ高さを有効にしますか?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "スムーズタイムラプスは全積層にプライムタワーが必要なため、「スパース層なし」とは併用できません。「スパース層なし」をオフにしました。" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "スムーズタイムラプスビデオを作成するにはプライムタワーが必要です。プライムタワーを有効にしますか?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "「スパース層なし」は、全積層にプライムタワーが必要なスムーズタイムラプスとは併用できません。タイムラプスを通常モードに切り替えました。" + msgid "Still print by object?" msgstr "それでもオブジェクト別に印刷しますか?" @@ -10957,9 +11010,6 @@ msgstr "互換性のあるプロセスプロファイル" msgid "Printable space" msgstr "造形可能領域" -msgid "Printer Agent" -msgstr "プリンターエージェント" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "プリンター通信用のネットワークエージェント実装を選択します。使用可能なエージェントは起動時に登録されます。" @@ -11372,14 +11422,6 @@ msgstr "エクストルーダー数" msgid "Capabilities" msgstr "能力" -# AI Translated -msgid "Left: " -msgstr "左: " - -# AI Translated -msgid "Right: " -msgstr "右: " - msgid "Show all presets (including incompatible)" msgstr "全てのプリセットを表示" @@ -12231,15 +12273,22 @@ msgstr "修復を取消しました" msgid "Copying of file %1% to %2% failed: %3%" msgstr "ファイル %1% を %2% へのコピーが失敗しました (%3%)" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "新しいベンダープロファイルをダウンロード中: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "設定パッケージ: %1% を %2% に更新しました" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "ベンダープロファイルのダウンロードに失敗しました: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "構成を更新する前に、未保存の変更をご確認ください" -msgid "Configuration package: " -msgstr "設定パッケージ: " - -msgid " updated to " -msgstr " を更新しました " - msgid "Open G-code file:" msgstr "G-codeファイルを開く" @@ -12303,11 +12352,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "インプットシェーピングはKlipper、RepRapFirmware、Marlin 2のみが対応しています。" -msgid "Grouping error: " -msgstr "グルーピングエラー: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "グルーピングエラー: %1% は左ノズルに配置できません" -msgid " can not be placed in the " -msgstr " に配置できません " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "グルーピングエラー: %1% は右ノズルに配置できません" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12421,6 +12474,10 @@ msgstr "%1% は他のオブジェクトと近すぎるため、衝突の可能 msgid "%1% is too tall, and collisions will be caused." msgstr "%1% は高すぎます、衝突の可能性があります。" +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "モデルとプライムタワーの相対位置が「スパース層なし」機能の要件を満たしていません。相対位置を調整するか、モデルの高さを下げるか、「スパース層なし」をオフにしてください。" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "が除外領域に近すぎます。衝突の可能性があります。" @@ -12793,6 +12850,9 @@ msgstr "G-codeの代わりに3MFを使用" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "プリンターが印刷ジョブとして3MFファイルを受け付ける場合に有効にします。有効にすると、Orca Slicerはスライス済みファイルを通常の.gcodeファイルではなく.gcode.3mfとして送信します。" +msgid "Printer Agent" +msgstr "プリンターエージェント" + msgid "Select the network agent implementation for printer communication." msgstr "プリンター通信用のネットワークエージェント実装を選択します。" @@ -13902,6 +13962,10 @@ msgstr "整列直線" msgid "Concentric" msgstr "同心" +# AI Translated +msgid "Spiral Inset" +msgstr "スパイラルインセット" + msgid "Hilbert Curve" msgstr "ヒルベルト曲線" @@ -13995,13 +14059,13 @@ msgstr "上面の充填順序" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、上面を充填する方向です。\n" -"外向きは面の中心から始まるため、余分な材料が最も目立たない縁へ押し出されます。内向きは縁から始まり、中心の細かいカーブで終わります。\n" -"デフォルトは最短経路順で、どちらの方向にもなり得ます。" +"中心を起点とするパターン(同心、スパイラルインセット、アルキメデス螺旋、オクタグラムスパイラル)を使用する場合の、トップ面を充填する方向です。\n" +"外側は面の中心から始まるため、余分な材料は最も目立たない縁へ押し出されます。内側は縁から始まり、中心の細かいカーブで終わります。\n" +"デフォルトは最短経路順を使用し、どちらの方向にも進むことがあります。" # AI Translated msgid "Bottom surface fill order" @@ -14009,13 +14073,13 @@ msgstr "底面の充填順序" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、底面を充填する方向です。\n" -"内向きは各面を幅の広い外側のカーブから始めるため、中心の細かいカーブが定着しにくいベッドでも1層目の密着性が向上します。外向きは中心から始まり、余分な材料を縁へ押し出します。\n" -"デフォルトは最短経路順で、どちらの方向にもなり得ます。" +"中心を起点とするパターン(同心、スパイラルインセット、アルキメデス螺旋、オクタグラムスパイラル)を使用する場合の、底面を充填する方向です。\n" +"内側は各面を幅の広い外側のカーブから始めるため、中心の細かいカーブが定着しにくいベッドでも1層目の接着が改善します。外側は中心から始まり、余分な材料を縁へ押し出します。\n" +"デフォルトは最短経路順を使用し、どちらの方向にも進むことがあります。" msgid "Internal solid infill pattern" msgstr "内部ソリッドインフィルパターン" @@ -14124,6 +14188,14 @@ msgstr "反時計回り" msgid "Clockwise" msgstr "時計回り" +# AI Translated +msgid "Distance to rod" +msgstr "ロッドまでの距離" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "ノズル先端からロッドの遠い側の端までの水平距離です。オブジェクト順の造形で衝突を回避するために使用されます。" + msgid "Height to rod" msgstr "レールまでの高さ" @@ -16463,6 +16535,20 @@ msgstr "オーバーハングを検出" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "この設定により、線幅に対するオーバーハングの割合を検出し、異なる速度で造形します。100%%のオーバーハングの場合、ブリッジの速度が使用されます。" +# AI Translated +msgid "Print unsupported walls last" +msgstr "支えのない壁を最後に造形" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"完全に宙に浮いている壁面ループは、支えとなるものができてから造形されます。\n" +"壁の順序にかかわらず、同じアイランドの他の壁の後に、最も内側から順に押し出されます。\n" +"この積層のブリッジだけが固定できるループは、それらのブリッジが造形されるまで待ちます。一方、支えのある壁に沿って走るループは、それをアンカーとして必要とするインフィルの前という位置を保ちます。" + # AI Translated msgid "Outer walls" msgstr "外壁" @@ -16955,6 +17041,39 @@ msgstr "ループ上でワイプ" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "閉ループ押出における継ぎ目を目立たなくするため、押出機がループを離れる前にわずかに内側へ移動します。" +# AI Translated +msgid "Wipe inward" +msgstr "内側へ拭き上げ" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"穴の輪郭を含む外壁にのみ適用されます。拭き上げ中に高温のノズルを造形済みの内壁へ向かって動かし、造形したばかりの樹脂の再加熱と継ぎ目の跡を抑えます。\n" +"\n" +"拭き上げの跡が目立ちやすい積層ピッチ0.1 mm未満で特に有効です。\n" +"\n" +"隣接する内壁がまだ造形されていない場合(壁が1本のみの領域や、壁の順序が外側/内側の場合)、または細かい角や継ぎ目の隙間などで支えのある内向きの経路が見つからない場合は、通常の拭き上げを使用します。" + +# AI Translated +msgid "Wipe inward distance" +msgstr "内側への拭き上げ距離" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"拭き上げ経路を外周から離す距離で、ミリメートルまたは実際の外壁の押出線幅に対する割合で指定します。\n" +"\n" +"例えば50%では、経路を外壁幅の半分だけずらします。実効オフセットは実際の外壁幅と隣接する壁までの利用可能な間隔の両方で制限されるため、100%を超える値や同等の絶対距離を指定しても追加の効果はありません。0に設定するとオフセットは無効になります。" + # AI Translated msgid "Wipe before external loop" msgstr "外周ループ前のワイプ" @@ -17257,8 +17376,9 @@ msgstr "印刷温度に達するのを待たずに新しいツールを取り付 msgid "No sparse layers (beta)" msgstr "スパース層なし (ベータ)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "有効にすると、ツール変更がない場合にワイプタワーをプリントしなくなります。 ワイプタワーの高さが同期しなくなりますので、ツールチェンジのあるレイヤーでは、エクストルーダーがプリント面より下方に移動してワイプタワーをプリントするケースもあります。 この場合、プリントした部分との衝突がないことをご自身で確認しておく必要があります。" +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "有効にすると、ツール交換のない積層ではワイプタワーを造形しません。ツール交換のある積層では押出機が下降してワイプタワーを造形するため、タワーはモデルより下に位置し、ツールヘッドがそこまで下りる必要があります。造形済みのオブジェクトと衝突するような配置は拒否されます。全積層にタワーが必要なスムーズタイムラプスやノズル付着検出では効果がありません。" msgid "Prime all printing extruders" msgstr "全てのエクストルーダーでプライムを実施" @@ -17284,6 +17404,34 @@ msgstr "" msgid "Cyclic" msgstr "循環" +# AI Translated +msgid "Cyclic order" +msgstr "循環順" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"循環ツール交換順で使用するカスタムフィラメント順序です。フィラメント番号をカンマ区切りで指定します(例: 「3,2,1,4」)。\n" +"各積層はこの順序に従ってフィラメントを造形します。記載のないフィラメントは最後に、昇順で造形されます。\n" +"空欄のままにすると、フィラメントを昇順で巡回します。" + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "循環順を1層目にも適用" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"循環ツール交換順を1層目にも適用します。\n" +"既定では無効です。1層目は代わりにベッド接着が最良になるよう並べ替えられるためです。1層目の小さく壊れやすい部分を造形するフィラメントを最後に回すことで、その後のツール交換や移動が、弱く固定された部分を剥がしにくくなります。この1層目の順序は、1層目用のカスタムフィラメント順序が設定されていればそれも尊重します。循環順の利点(ツール交換が増えることで各積層の冷却時間が長くなる)は、接着のために低速かつ高温で造形される1層目には当てはまりません。\n" +"接着の最適化を犠牲にしてでも、1層目を含む全積層でまったく同じツール順序が必要な場合にのみ有効にしてください。" + msgid "Slice gap closing radius" msgstr "隙間充填半径" @@ -17294,9 +17442,6 @@ msgstr "三角メッシュのスライス時に、隙間閉じ半径の2倍よ msgid "Slicing Mode" msgstr "スライシングモード" -msgid "Other" -msgstr "その他" - # AI Translated msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "3DLabPrintの飛行機モデルには「偶奇」を使用してください。モデル内のすべての穴を閉じるには「穴を閉じる」を使用してください。" @@ -18357,6 +18502,14 @@ msgstr "チェックなし" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "G-codeパスの競合チェックなど、いかなる妥当性チェックも実行しません。" +# AI Translated +msgid "Strict mode" +msgstr "厳格モード" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "サポートが無効なのにサポートが必要なモデルなど、通常はログに記録されるだけの重大でない警告がスライス時に発生した場合、ゼロ以外の終了コードで終了します。わずかに壊れたスライス結果を決して出荷してはならないCIやスクリプト処理で使用してください。そうした警告はいずれも、Linuxでのみ書き出されるresult.jsonの`warnings`配列に、安定したクラス名とともに列挙されます。サポート確認を省略する--no-checkとは併用できません。" + # AI Translated msgid "Normative check" msgstr "規範チェック" @@ -18371,11 +18524,28 @@ msgstr "出力モデル情報" msgid "This outputs the model’s information." msgstr "出力するモデル情報です。" +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "メッシュを検査 (JSONをstdoutへ)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "読み込んだ各オブジェクトのJSON要約をstdoutに出力して終了します。バウンディングボックスと、設置できる凸包の面、およびそれらの法線・面積・中心が含まれます。--ground-*オプションはこれらの面から選択します。--infoの機械可読版です。" + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "ペイントを検査 (JSONをstdoutへ)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "読み込んだモデルに保存済みの各ペイント層(サポート、継ぎ目、MMUカラー、ファジー壁面)について、状態ごとの面数・表面積・メッシュ座標系のバウンディングボックスを構造化JSONで出力して終了します。GUIでペイントギズモを開く操作の機械可読版です。" + msgid "Export Settings" msgstr "エクスポート設定" -msgid "This exports settings to a file." -msgstr "設定をファイルにエクスポートします。" +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "設定をファイルにエクスポートします。- を指定するとstdoutに書き出します。" msgid "Send progress to pipe" msgstr "パイプに進捗を送信" @@ -18436,6 +18606,30 @@ msgstr "Y軸周りの回転" msgid "Rotation angle around the Y axis in degrees." msgstr "Y軸を中心とした回転角(度単位)。" +# AI Translated +msgid "Ground largest face" +msgstr "最大面を接地" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "各オブジェクトを凸包の最大面で接地させ、ベッドへ落とします。同じ大きさの面が複数ある場合は、すでに下を向いている面が保持されます。載せられるだけの大きさの面がないオブジェクトはそのまま残ります。変換はコマンドラインの順に実行されるため、このオプションより前に指定した回転は尊重されます。--orient 1 はすべての変換の後に実行され、向きを置き換えます。" + +# AI Translated +msgid "Ground face by normal" +msgstr "法線で面を接地" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "各オブジェクトを、外向き法線が方向 NX,NY,NZ に最も近い凸包の面で接地させ、ベッドへ落とします。方向はオブジェクト座標系で指定します。この座標系はこのオプションより前に指定した回転を含み、入力ファイルがオブジェクトを回転していない限りプレートの軸と一致します。例えば 1,0,0 はオブジェクトを +X 側で立たせます。--orient 1 はすべての変換の後に実行され、向きを置き換えます。" + +# AI Translated +msgid "Ground face at point" +msgstr "指定点の面を接地" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "各オブジェクトを、点 X,Y,Z を含む凸包の面で接地させ、ベッドへ落とします。点はオブジェクト座標系で指定します。この座標系はこのオプションより前に指定した回転を含み、--inspect-mesh はこの座標系で面の中心を報告します。該当する面がないオブジェクトはそのまま残り、どのオブジェクトにも該当面がない場合は実行が失敗します。--orient 1 はすべての変換の後に実行され、向きを置き換えます。" + msgid "Scale the model by a float factor." msgstr "指定した比率で伸縮する" @@ -21749,14 +21943,17 @@ msgstr "この操作は元に戻せません。続行しますか?" msgid "Skipping objects." msgstr "オブジェクトをスキップ中。" +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "材料比率" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "モデル高さ" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "比率" msgid "Select Filament" msgstr "フィラメントを選択" @@ -22040,12 +22237,14 @@ msgid "Drying-Dehumidifying" msgstr "乾燥 - 除湿" # AI Translated -msgid " maximum drying temperature is " -msgstr " の最高乾燥温度は " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s の最高乾燥温度は %d°C です。" # AI Translated -msgid " minimum drying temperature is " -msgstr " の最低乾燥温度は " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s の最低乾燥温度は %d°C です。" # AI Translated msgid "This filament may not be completely dried." @@ -22502,6 +22701,97 @@ msgstr "" "反りを避ける\n" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?" +#~ msgid "Other" +#~ msgstr "その他" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "左: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "右: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "最高温度は次の値を超えることはできません " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "最低温度は次の値を下回ることはできません " + +#~ msgid "up to" +#~ msgstr "最大" + +#~ msgid "above" +#~ msgstr "以上" + +#~ msgid "from" +#~ msgstr "から" + +#~ msgid "Configuration package: " +#~ msgstr "設定パッケージ: " + +#~ msgid " updated to " +#~ msgstr " を更新しました " + +#~ msgid "Grouping error: " +#~ msgstr "グルーピングエラー: " + +#~ msgid " can not be placed in the " +#~ msgstr " に配置できません " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " の最高乾燥温度は " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " の最低乾燥温度は " + +# AI Translated +#~ msgid "needs" +#~ msgstr "が必要" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "未有効" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "材料が未公開" + +#~ msgid "Select the language" +#~ msgstr "言語を選択" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "プラグインを選択" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、上面を充填する方向です。\n" +#~ "外向きは面の中心から始まるため、余分な材料が最も目立たない縁へ押し出されます。内向きは縁から始まり、中心の細かいカーブで終わります。\n" +#~ "デフォルトは最短経路順で、どちらの方向にもなり得ます。" + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、底面を充填する方向です。\n" +#~ "内向きは各面を幅の広い外側のカーブから始めるため、中心の細かいカーブが定着しにくいベッドでも1層目の密着性が向上します。外向きは中心から始まり、余分な材料を縁へ押し出します。\n" +#~ "デフォルトは最短経路順で、どちらの方向にもなり得ます。" + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "有効にすると、ツール変更がない場合にワイプタワーをプリントしなくなります。 ワイプタワーの高さが同期しなくなりますので、ツールチェンジのあるレイヤーでは、エクストルーダーがプリント面より下方に移動してワイプタワーをプリントするケースもあります。 この場合、プリントした部分との衝突がないことをご自身で確認しておく必要があります。" + +#~ msgid "This exports settings to a file." +#~ msgstr "設定をファイルにエクスポートします。" + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "ネイティブWaylandのライブビューにはGStreamer GTKビデオシンクが必要です。GStreamer用のgtksinkプラグインをインストールし、OrcaSlicerを再起動してください。" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 16dc582437..dccc289f47 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -2481,13 +2481,6 @@ msgstr "사용 가능한 업데이트가 있습니다. 사전 설정 번들 대 msgid "%s has been removed." msgstr "%s이(가) 제거되었습니다." - -msgid "Select the language" -msgstr "언어 선택" - -msgid "Language" -msgstr "언어" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3727,11 +3720,15 @@ msgstr "Filament Track Switch에서 현재 필라멘트 되감기" msgid "Switch track at Filament Track Switch" msgstr "Filament Track Switch에서 트랙 전환" -msgid "The maximum temperature cannot exceed " -msgstr "최대 온도는 다음 값을 초과할 수 없습니다 " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "최대 온도는 %d을(를) 초과할 수 없습니다" -msgid "The minmum temperature should not be less than " -msgstr "최소 온도는 다음 값보다 낮아서는 안 됩니다 " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "최소 온도는 %d보다 낮을 수 없습니다" # AI Translated msgid "Type to filter..." @@ -4625,6 +4622,15 @@ msgstr "" "임시 Gcode를 출력 Gcode로 복사하지 못했습니다. SD 카드가 쓰기 잠겨 있나요?\n" "오류 메시지입니다: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"임시 G-code를 출력 G-code로 복사하지 못했습니다.\n" +"오류 메시지: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "임시 Gcode를 출력 Gcode로 복사하지 못했습니다. 대상 장치에 문제가 있을 수 있으니 다시 내보내거나 다른 장치를 사용해 보세요. 손상된 출력 Gcode는 %1%.tmp에 있습니다." @@ -5363,10 +5369,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "값 %s이 범위를 벗어났습니다. 유효한 범위는 %d에서 %d까지입니다." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%% 또는 %s %s입니까?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%% 또는 %s %s입니까?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5392,22 +5399,18 @@ msgstr "잘못된 형식입니다. 필요한 벡터 형식: \"%1%\"" msgid "System agents" msgstr "시스템 에이전트" -# AI Translated -msgid "No plugin selected" -msgstr "선택된 플러그인 없음" - # AI Translated msgid "Add plugin" msgstr "플러그인 추가" -# AI Translated -msgid "Select plugin" -msgstr "플러그인 선택" - # AI Translated msgid "Remove plugin" msgstr "플러그인 제거" +# AI Translated +msgid "No plugin selected" +msgstr "선택된 플러그인 없음" + # AI Translated msgid "Configure" msgstr "구성" @@ -5664,14 +5667,20 @@ msgstr "최적으로 설정" msgid "Regroup filament" msgstr "필라멘트 재그룹핑" -msgid "up to" -msgstr "까지" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "%1% mm까지" -msgid "above" -msgstr "위에" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "%1% mm 이상" -msgid "from" -msgstr "부터" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "%1% mm에서 %2% mm까지" msgid "Usage" msgstr "사용량" @@ -6035,7 +6044,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "레이어 %d, Z = %.2lf mm에서 Gcode 경로 충돌이 발견되었습니다. 충돌하는 객체를 더 멀리 분리하세요 (%s <-> %s)." @@ -6344,11 +6353,13 @@ msgstr "프로젝트 다른 이름으로 저장" msgid "Save current project as" msgstr "현재 프로젝트 다른 이름으로 저장" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MF 게시" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "선택한 설정이 포함된 3MF 파일을 내보냅니다" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF 가져오기" @@ -7621,6 +7632,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "하부" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "이 설정은 플러그인 기능 유형을 지정하지 않습니다." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "이 설정은 인식할 수 없는 플러그인 기능 유형을 지정합니다: " + # AI Translated msgid "Plugin Selection" msgstr "플러그인 선택" @@ -8195,11 +8214,13 @@ msgstr "이러한 사전 설정 내의 Gcode가 기계 손상을 방지할 수 msgid "Customized Preset" msgstr "사용자 정의 프리셋" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "일부 게시된 설정을 적용할 수 없습니다:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "일부 필라멘트 슬롯이 변경되었습니다:" # AI Translated msgid "Component name(s) inside step file not in UTF-8 format!" @@ -8628,13 +8649,17 @@ msgstr "슬라이스 파일을 다음으로 저장:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s 파일이 프린터의 저장 공간으로 전송되었으며 프린터에서 볼 수 있습니다." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MF 파일을 다음 이름으로 게시:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"게시할 3MF 파일을 내보내지 못했습니다.\n" +"폴더가 온라인에 있는지, 또는 다른 프로그램이 해당 파일을 열어 두었는지 확인하세요." msgid "Publish" msgstr "게시" @@ -8854,7 +8879,6 @@ msgstr "계속하시겠습니까?" msgid "Language selection" msgstr "언어 선택" - msgid "Asia-Pacific" msgstr "아시아 태평양" @@ -8968,6 +8992,9 @@ msgstr "현재 인스턴스 경로: " msgid "General" msgstr "일반" +msgid "Language" +msgstr "언어" + msgid "Metric" msgstr "미터법" @@ -9463,9 +9490,6 @@ msgstr "슬라이스된 미리보기에서 레이어 슬라이더를 움직일 msgid "Dimmed layer brightness" msgstr "어둡게 표시된 레이어의 밝기" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9896,63 +9920,80 @@ msgstr "데이터 업로드 중" msgid "Jump to webpage" msgstr "웹 페이지로 이동" +# AI Translated msgid "Material" -msgstr "" +msgstr "재료" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "혼합 필라멘트" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "일부 혼합 필라멘트는 게시되지 않을 필라멘트에 의존합니다:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "필라멘트 %d (혼합)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1%에는 %2%이(가) 필요하지만 활성화되어 있지 않습니다." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1%에는 %2%이(가) 필요하지만 해당 재료는 게시되지 않습니다." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "혼합 필라멘트를 게시하려면 사용하는 모든 필라멘트를 활성화하고 전체 게시를 선택하거나 유형 요구 사항을 충족하세요." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "그래도 게시" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MF 게시..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "3MF 파일에 게시할 설정을 선택하세요" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF 게시 위키" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF 게시 비디오 가이드" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "혼합 필라멘트 - 위에서 \"활성화\"를 선택하면 전체가 게시됩니다" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "이 혼합 필라멘트를 게시하고 구성 필라멘트를 활성화 + 전체 게시합니다" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "이 필라멘트 슬롯을 3MF 파일에 게시합니다" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "전체 게시" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "이 슬롯의 필라멘트 전체를 3MF 파일에 포함합니다" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "선택되지 않은 항목 필터링" #, c-format, boost-format msgid "Save %s as" @@ -9972,6 +10013,10 @@ msgstr "상위 사전 설정에서 상속한 모든 값을 이 사전 설정으 msgid "Detach from parent" msgstr "상위 항목에서 분리" +# AI Translated +msgid "Save without parent" +msgstr "상위 항목 없이 저장" + # AI Translated msgid "Unique preset" msgstr "독립 사전 설정" @@ -10686,10 +10731,18 @@ msgstr "뭉침 감지에는 프라임 타워가 필요합니다. 프라임 타 msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "정밀 Z 높이와 프라임 타워를 함께 활성화하면 슬라이싱 오류가 발생할 수 있습니다. 그래도 정밀 Z 높이를 활성화하시겠습니까?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "스무드 타임랩스는 모든 레이어에 프라임 타워가 필요하므로 \"희소 레이어 없음\"과 함께 사용할 수 없습니다. \"희소 레이어 없음\"이 해제되었습니다." + # AI Translated msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "유연 모드 타임랩스를 위해서는 프라임 타워가 필요합니다. 프라임 타워가 없는 모델에는 결함이 있을 수 있습니다. 프라임 타워를 활성화하시겠습니까?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"희소 레이어 없음\"은 모든 레이어에 프라임 타워가 필요한 스무드 타임랩스와 함께 사용할 수 없습니다. 타임랩스가 기존 모드로 전환되었습니다." + msgid "Still print by object?" msgstr "아직도 객체별로 출력하시나요?" @@ -11066,10 +11119,6 @@ msgstr "호환 프로세스 사전설정" msgid "Printable space" msgstr "출력 가능 공간" -# AI Translated -msgid "Printer Agent" -msgstr "프린터 에이전트" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다. 사용 가능한 에이전트는 시작 시 등록됩니다." @@ -11494,14 +11543,6 @@ msgstr "익스트루더 수" msgid "Capabilities" msgstr "성능" -# AI Translated -msgid "Left: " -msgstr "왼쪽: " - -# AI Translated -msgid "Right: " -msgstr "오른쪽: " - msgid "Show all presets (including incompatible)" msgstr "모든 사전 설정 표시(호환되지 않는 설정 포함)" @@ -12364,15 +12405,22 @@ msgstr "수리 취소됨" msgid "Copying of file %1% to %2% failed: %3%" msgstr "파일 %1%를 %2%으로 복사 실패: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "새 제조사 프로파일 다운로드 중: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "구성 패키지: %1%이(가) %2%(으)로 업데이트되었습니다" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "제조사 프로파일을 다운로드하지 못했습니다: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "구성 업데이트 전에 저장되지 않은 변경 사항을 확인해야 합니다." -msgid "Configuration package: " -msgstr "구성 패키지: " - -msgid " updated to " -msgstr " 로 업데이트되었습니다 " - msgid "Open G-code file:" msgstr "Gcode 파일 열기:" @@ -12437,11 +12485,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "인풋 셰이핑은 Klipper, RepRapFirmware, Marlin 2에서만 지원됩니다." -msgid "Grouping error: " -msgstr "그룹화 오류입니다:" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "그룹화 오류: %1%은(는) 왼쪽 노즐에 배치할 수 없습니다" -msgid " can not be placed in the " -msgstr " 에 배치할 수 없습니다" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "그룹화 오류: %1%은(는) 오른쪽 노즐에 배치할 수 없습니다" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12556,6 +12608,10 @@ msgstr "%1% 이(가) 다른 객체와 너무 가까워 출력 시 충돌이 발 msgid "%1% is too tall, and collisions will be caused." msgstr "%1% 이(가) 너무 높아서 충돌이 출력 시 발생할 수 있습니다." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "모델과 프라임 타워의 상대 위치가 \"희소 레이어 없음\" 기능의 요구 사항을 충족하지 않습니다. 상대 위치를 조정하거나 모델 높이를 낮추거나 \"희소 레이어 없음\"을 해제하세요." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " 이(가) 제외 영역에 너무 가깝습니다. 출력 시 충돌이 발생 할 수 있습니다." @@ -12930,6 +12986,10 @@ msgstr "G-code 대신 3MF 사용" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "프린터가 출력 작업으로 3MF 파일을 허용하는 경우 이 옵션을 활성화하십시오. 활성화하면 Orca Slicer가 슬라이스된 파일을 일반 .gcode 파일 대신 .gcode.3mf로 전송합니다." +# AI Translated +msgid "Printer Agent" +msgstr "프린터 에이전트" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "프린터 통신에 사용할 네트워크 에이전트 구현을 선택합니다." @@ -14029,6 +14089,10 @@ msgstr "정렬된 직선" msgid "Concentric" msgstr "동심" +# AI Translated +msgid "Spiral Inset" +msgstr "나선형 인셋" + msgid "Hilbert Curve" msgstr "힐베르트 곡선" @@ -14122,13 +14186,13 @@ msgstr "상단 표면 채우기 순서" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 상단 표면을 채우는 방향입니다.\n" -"바깥쪽은 표면 중앙에서 시작하므로 남는 재료가 가장 눈에 덜 띄는 가장자리로 밀려납니다. 안쪽은 가장자리에서 시작하여 중앙의 좁은 곡선에서 끝납니다.\n" -"기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다." +"중심에서 시작하는 패턴(동심, 나선형 인셋, 아르키메데스 코드, 팔각 나선형)을 사용할 때 상단 표면을 채우는 방향입니다.\n" +"바깥쪽은 표면 중앙에서 시작하므로 남는 재료가 가장 눈에 덜 띄는 가장자리로 밀려납니다. 안쪽은 가장자리에서 시작해 중앙의 좁은 곡선으로 끝납니다.\n" +"기본값은 최단 경로 순서를 사용하며, 어느 방향으로든 진행될 수 있습니다." # AI Translated msgid "Bottom surface fill order" @@ -14136,13 +14200,13 @@ msgstr "하단 표면 채우기 순서" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 하단 표면을 채우는 방향입니다.\n" -"안쪽은 각 표면을 더 넓은 바깥쪽 곡선에서 시작하므로, 중앙의 좁은 곡선이 잘 붙지 않는 빌드 플레이트에서 초기 레이어 접착력이 향상됩니다. 바깥쪽은 중앙에서 시작하여 남는 재료를 가장자리로 밀어냅니다.\n" -"기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다." +"중심에서 시작하는 패턴(동심, 나선형 인셋, 아르키메데스 코드, 팔각 나선형)을 사용할 때 하단 표면을 채우는 방향입니다.\n" +"안쪽은 각 표면을 더 넓은 바깥쪽 곡선부터 시작하므로, 중앙의 좁은 곡선이 잘 붙지 않는 베드에서 초기 레이어 안착이 개선됩니다. 바깥쪽은 중앙에서 시작해 남는 재료를 가장자리로 밀어냅니다.\n" +"기본값은 최단 경로 순서를 사용하며, 어느 방향으로든 진행될 수 있습니다." msgid "Internal solid infill pattern" msgstr "꽉찬 내부 채우기 패턴" @@ -14246,6 +14310,14 @@ msgstr "시계 반대 방향" msgid "Clockwise" msgstr "시계방향" +# AI Translated +msgid "Distance to rod" +msgstr "로드까지의 거리" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "노즐 끝에서 로드의 먼 쪽 가장자리까지의 수평 거리입니다. 객체별 출력에서 충돌을 피하는 데 사용됩니다." + msgid "Height to rod" msgstr "레일까지의 높이" @@ -16498,6 +16570,20 @@ msgstr "오버행 벽 감지" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "선 너비에 비례하여 오버행 백분율을 감지하고 다른 속도를 사용하여 출력합니다. 100%% 오버행의 경우 브릿지 속도가 사용됩니다." +# AI Translated +msgid "Print unsupported walls last" +msgstr "지지되지 않는 벽을 마지막에 출력" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"완전히 공중에 떠 있는 벽 루프는 이를 받쳐 줄 것이 생긴 뒤에 출력됩니다.\n" +"벽 순서와 관계없이 같은 섬의 다른 벽들보다 나중에, 가장 안쪽부터 압출됩니다.\n" +"이 레이어의 브릿지만이 고정할 수 있는 루프는 해당 브릿지가 출력될 때까지 기다리고, 지지되는 벽을 따라 지나가는 루프는 이를 고정점으로 필요로 하는 채우기보다 앞선 자리를 유지합니다." + # AI Translated msgid "Outer walls" msgstr "외벽" @@ -16949,6 +17035,39 @@ msgstr "루프에서 노즐 청소" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "폐쇄 루프 압출에서 재봉선의 가시성을 최소화하기 위해 압출기가 루프를 떠나기 전에 안쪽으로의 작은 이동이 실행됩니다." +# AI Translated +msgid "Wipe inward" +msgstr "안쪽으로 노즐 청소" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"구멍 경계를 포함한 외벽에만 적용됩니다. 노즐 청소 중 뜨거운 노즐을 이미 출력된 내벽 쪽으로 이동시켜, 갓 출력된 플라스틱의 재가열과 재봉선 자국을 줄입니다.\n" +"\n" +"청소 자국이 더 잘 보이는 0.1 mm 미만의 레이어 높이에서 특히 유용합니다.\n" +"\n" +"인접한 내벽이 아직 출력되지 않았거나(벽이 하나뿐인 영역 또는 외벽/내벽 순서), 좁은 모서리나 재봉선 간격 등에서 지지되는 안쪽 경로를 찾을 수 없는 경우에는 일반 노즐 청소를 사용합니다." + +# AI Translated +msgid "Wipe inward distance" +msgstr "안쪽 노즐 청소 거리" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"노즐 청소 경로를 외곽 둘레에서 밀어내는 거리로, 밀리미터 또는 실제 외벽 압출 너비에 대한 백분율로 지정합니다.\n" +"\n" +"예를 들어 50%는 경로를 외벽 너비의 절반만큼 이동시킵니다. 실제 오프셋은 실제 외벽 너비와 인접한 벽까지의 여유 간격 모두에 의해 제한되므로, 100%를 넘는 값이나 그에 상응하는 절대 거리를 지정해도 추가 효과가 없습니다. 오프셋을 끄려면 0으로 설정하세요." + msgid "Wipe before external loop" msgstr "외부 루프 전 닦아내기" @@ -17219,8 +17338,9 @@ msgstr "출력 온도에 도달할 때까지 기다리지 않고 새 툴을 집 msgid "No sparse layers (beta)" msgstr "희소 레이어 없음(베타)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "활성화되면 툴 체인지 없이 레이어에 프라임 타워가 출력되지 않습니다. 툴 체인지가 있는 레이어에서는 압출기가 아래쪽으로 이동하여 프라임 타워를 출력합니다. 출력물과의 충돌이 없는지 확인하는 것은 사용자의 책임입니다." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "활성화하면 툴체인지가 없는 레이어에서는 프라임 타워가 출력되지 않습니다. 툴체인지가 있는 레이어에서는 압출기가 아래로 이동해 프라임 타워를 출력하므로, 타워가 모델보다 아래에 놓이고 툴헤드가 거기까지 내려가야 합니다. 이미 출력된 객체와 충돌하게 되는 배치는 거부됩니다. 모든 레이어에 타워가 필요한 스무드 타임랩스나 노즐 클럼핑 감지에서는 효과가 없습니다." msgid "Prime all printing extruders" msgstr "모든 활성화된 압출기 프라이밍" @@ -17246,6 +17366,34 @@ msgstr "" msgid "Cyclic" msgstr "순환" +# AI Translated +msgid "Cyclic order" +msgstr "순환 순서" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"순환 툴체인지 순서에서 사용하는 사용자 지정 필라멘트 순서로, 필라멘트 번호를 쉼표로 구분해 지정합니다(예: \"3,2,1,4\").\n" +"각 레이어는 이 순서에 따라 필라멘트를 출력하며, 목록에 없는 필라멘트는 오름차순으로 마지막에 출력됩니다.\n" +"비워 두면 필라멘트를 오름차순으로 순환합니다." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "초기 레이어에도 순환 순서 적용" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"순환 툴체인지 순서를 초기 레이어에도 적용합니다.\n" +"기본적으로 꺼져 있는데, 초기 레이어는 대신 베드 안착이 가장 잘 되도록 정렬되기 때문입니다. 초기 레이어의 작고 약한 형상을 출력하는 필라멘트를 마지막에 출력하면, 이어지는 툴체인지와 이동 동작이 약하게 고정된 부분을 떨어뜨릴 가능성이 줄어듭니다. 이 초기 레이어 순서는 초기 레이어용 사용자 지정 필라멘트 순서가 설정되어 있으면 그것도 따릅니다. 순환 순서의 이점(툴체인지가 늘어나 각 레이어의 냉각 시간이 길어지는 것)은 안착을 위해 느리고 뜨겁게 출력되는 초기 레이어에는 해당하지 않습니다.\n" +"안착 최적화를 포기하더라도 초기 레이어를 포함한 모든 레이어에서 정확히 같은 툴 순서가 필요한 경우에만 활성화하세요." + msgid "Slice gap closing radius" msgstr "슬라이스 간격 폐쇄 반경" @@ -17255,9 +17403,6 @@ msgstr "간격 폐쇄 반경의 2배보다 작은 균열은 삼각형 메시 슬 msgid "Slicing Mode" msgstr "슬라이싱 모드" -msgid "Other" -msgstr "기타" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "3DLabPrint 비행기 모델에는 \"짝수-홀수\"를 사용하세요. \"구멍 닫기\"를 사용하여 모델의 모든 구멍을 닫습니다." @@ -18279,6 +18424,14 @@ msgstr "확인 안 함" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Gcode 경로 충돌 검사와 같은 유효성 검사를 실행하지 마십시오." +# AI Translated +msgid "Strict mode" +msgstr "엄격 모드" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "서포트가 꺼져 있는데 서포트가 필요한 모델처럼, 평소에는 로그에만 남는 치명적이지 않은 경고가 슬라이싱 중에 발생하면 0이 아닌 코드로 종료합니다. 미묘하게 잘못된 슬라이싱 결과를 절대 내보내면 안 되는 CI나 스크립트 파이프라인에서 사용하세요. 그러한 경고는 Linux에서만 기록되는 result.json의 `warnings` 배열에도 고정된 분류와 함께 나열됩니다. 서포트 검사를 건너뛰는 --no-check와 함께 사용할 수 없습니다." + msgid "Normative check" msgstr "표준 검사" @@ -18291,11 +18444,28 @@ msgstr "모델 정보 출력" msgid "This outputs the model’s information." msgstr "모델 정보를 출력합니다." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "메시 검사 (JSON을 stdout으로)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "불러온 각 객체의 JSON 요약을 stdout으로 출력한 뒤 종료합니다: 경계 상자와 올려놓을 수 있는 볼록 껍질 면, 그리고 각 면의 법선, 면적, 중심이 포함됩니다. --ground-* 옵션이 선택하는 대상이 바로 이 면들입니다. --info의 기계 판독용 대안입니다." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "페인팅 검사 (JSON을 stdout으로)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "불러온 모델에 이미 저장된 모든 페인팅 레이어(서포트, 재봉선, MMU 색상, 퍼지 스킨)에 대해 상태별 면 개수, 표면적, 메시 기준 경계 상자를 구조화된 JSON으로 출력한 뒤 종료합니다. GUI에서 페인팅 도구를 여는 작업의 기계 판독용 대안입니다." + msgid "Export Settings" msgstr "설정 내보내기" -msgid "This exports settings to a file." -msgstr "설정을 파일로 내보내기." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "설정을 파일로 내보냅니다. -를 사용하면 stdout으로 출력합니다." msgid "Send progress to pipe" msgstr "진행 상황을 파이프로 보내기" @@ -18351,6 +18521,30 @@ msgstr "Y를 중심으로 회전" msgid "Rotation angle around the Y axis in degrees." msgstr "Y축을 중심으로 한 회전 각도입니다." +# AI Translated +msgid "Ground largest face" +msgstr "가장 큰 면으로 안착" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "각 객체를 볼록 껍질의 가장 큰 면으로 눕히고 베드로 떨어뜨립니다. 크기가 같은 면이 여럿이면 이미 아래를 향한 면이 유지됩니다. 올려놓을 만큼 큰 면이 없는 객체는 그대로 둡니다. 변환은 명령줄 순서대로 실행되므로 이 옵션보다 앞에 지정한 회전은 유지됩니다. --orient 1은 모든 변환 뒤에 실행되어 방향을 대체합니다." + +# AI Translated +msgid "Ground face by normal" +msgstr "법선 기준 면으로 안착" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "각 객체를 바깥쪽 법선이 방향 NX,NY,NZ에 가장 가까운 볼록 껍질 면으로 눕히고 베드로 떨어뜨립니다. 방향은 객체 좌표계 기준이며, 이 좌표계는 이 옵션보다 앞에 지정한 회전을 포함하고, 입력 파일이 객체를 회전시키지 않는 한 플레이트 축과 일치합니다. 예를 들어 1,0,0은 객체를 +X 쪽으로 세웁니다. --orient 1은 모든 변환 뒤에 실행되어 방향을 대체합니다." + +# AI Translated +msgid "Ground face at point" +msgstr "지정 지점의 면으로 안착" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "각 객체를 점 X,Y,Z를 포함하는 볼록 껍질 면으로 눕히고 베드로 떨어뜨립니다. 점은 객체 좌표계 기준이며, 이 좌표계는 이 옵션보다 앞에 지정한 회전을 포함합니다. --inspect-mesh는 이 좌표계로 면 중심을 알려줍니다. 그러한 면이 없는 객체는 그대로 두며, 어떤 객체에도 해당 면이 없으면 실행이 실패합니다. --orient 1은 모든 변환 뒤에 실행되어 방향을 대체합니다." + msgid "Scale the model by a float factor." msgstr "부동 소수점 계수로 모델 크기 조정" @@ -21606,14 +21800,17 @@ msgstr "이 작업은 취소할 수 없습니다. 계속하시겠습니까?" msgid "Skipping objects." msgstr "물체 건너뛰기" +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "재료 비율" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "모델 높이" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "비율" msgid "Select Filament" msgstr "필라멘트 선택" @@ -21916,12 +22113,14 @@ msgid "Drying-Dehumidifying" msgstr "건조-제습" # AI Translated -msgid " maximum drying temperature is " -msgstr " 최대 건조 온도는 " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s의 최대 건조 온도는 %d°C입니다." # AI Translated -msgid " minimum drying temperature is " -msgstr " 최소 건조 온도는 " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s의 최소 건조 온도는 %d°C입니다." # AI Translated msgid "This filament may not be completely dried." @@ -22368,6 +22567,97 @@ msgstr "" "뒤틀림 방지\n" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#~ msgid "Other" +#~ msgstr "기타" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "왼쪽: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "오른쪽: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "최대 온도는 다음 값을 초과할 수 없습니다 " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "최소 온도는 다음 값보다 낮아서는 안 됩니다 " + +#~ msgid "up to" +#~ msgstr "까지" + +#~ msgid "above" +#~ msgstr "위에" + +#~ msgid "from" +#~ msgstr "부터" + +#~ msgid "Configuration package: " +#~ msgstr "구성 패키지: " + +#~ msgid " updated to " +#~ msgstr " 로 업데이트되었습니다 " + +#~ msgid "Grouping error: " +#~ msgstr "그룹화 오류입니다:" + +#~ msgid " can not be placed in the " +#~ msgstr " 에 배치할 수 없습니다" + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " 최대 건조 온도는 " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " 최소 건조 온도는 " + +# AI Translated +#~ msgid "needs" +#~ msgstr "필요" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "활성화되지 않음" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "재료 미게시" + +#~ msgid "Select the language" +#~ msgstr "언어 선택" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "플러그인 선택" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 상단 표면을 채우는 방향입니다.\n" +#~ "바깥쪽은 표면 중앙에서 시작하므로 남는 재료가 가장 눈에 덜 띄는 가장자리로 밀려납니다. 안쪽은 가장자리에서 시작하여 중앙의 좁은 곡선에서 끝납니다.\n" +#~ "기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 하단 표면을 채우는 방향입니다.\n" +#~ "안쪽은 각 표면을 더 넓은 바깥쪽 곡선에서 시작하므로, 중앙의 좁은 곡선이 잘 붙지 않는 빌드 플레이트에서 초기 레이어 접착력이 향상됩니다. 바깥쪽은 중앙에서 시작하여 남는 재료를 가장자리로 밀어냅니다.\n" +#~ "기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "활성화되면 툴 체인지 없이 레이어에 프라임 타워가 출력되지 않습니다. 툴 체인지가 있는 레이어에서는 압출기가 아래쪽으로 이동하여 프라임 타워를 출력합니다. 출력물과의 충돌이 없는지 확인하는 것은 사용자의 책임입니다." + +#~ msgid "This exports settings to a file." +#~ msgstr "설정을 파일로 내보내기." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "네이티브 Wayland 실시간 보기에는 GStreamer GTK 비디오 싱크가 필요합니다. GStreamer용 gtksink 플러그인을 설치한 후 OrcaSlicer를 다시 시작하십시오." diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 0141917d77..7798105df7 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -2449,13 +2449,6 @@ msgstr "Yra prieinamas atnaujinimas. Atidarykite profilių paketo dialogo langą msgid "%s has been removed." msgstr "%s buvo pašalintas." - -msgid "Select the language" -msgstr "Pasirinkite kalbą" - -msgid "Language" -msgstr "Kalba" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3701,11 +3694,15 @@ msgstr "Ištraukite dabartinę giją ties Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Perjunkite takelį ties Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "Maksimali temperatūra negali viršyti " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Maksimali temperatūra negali viršyti %d" -msgid "The minmum temperature should not be less than " -msgstr "Minimali temperatūra neturi būti mažesnė nei " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Minimali temperatūra neturi būti mažesnė nei %d" msgid "Type to filter..." msgstr "Įveskite tekstą filtravimui..." @@ -4587,6 +4584,15 @@ msgstr "" "Nepavyko nukopijuoti laikinojo G-kodo į išvesties G-kodą. Gal draudžiama įrašinėti į SD kortelę?\n" "Klaidos pranešimas: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Nepavyko nukopijuoti laikinojo G kodo į išvesties G kodą.\n" +"Klaidos pranešimas: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Nepavyko nukopijuoti laikinojo G-kodo į išvesties G-kodą. Gali kilti problemų dėl tikslinio įrenginio. Bandykite eksportuoti dar kartą arba naudokite kitą įrenginį. Sugadintas išvesties G-kodas yra %1%.tmp." @@ -5324,10 +5330,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Reikšmė %s yra už ribų. Galimas diapazonas yra nuo %d iki %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Ar tai %s%% ar %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Ar tai %s%% ar %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5353,22 +5360,18 @@ msgstr "Netinkamas formatas. Tinkamas vektorinis formatas: \"%1%\"" msgid "System agents" msgstr "Sisteminiai agentai" -# AI Translated -msgid "No plugin selected" -msgstr "Nepasirinktas joks papildinys" - # AI Translated msgid "Add plugin" msgstr "Pridėti papildinį" -# AI Translated -msgid "Select plugin" -msgstr "Pasirinkti papildinį" - # AI Translated msgid "Remove plugin" msgstr "Pašalinti papildinį" +# AI Translated +msgid "No plugin selected" +msgstr "Nepasirinktas joks papildinys" + # AI Translated msgid "Configure" msgstr "Konfigūruoti" @@ -5624,14 +5627,20 @@ msgstr "Nustatyti į optimalų" msgid "Regroup filament" msgstr "Pergrupuoti gijas" -msgid "up to" -msgstr "iki" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "iki %1% mm" -msgid "above" -msgstr "virš" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "virš %1% mm" -msgid "from" -msgstr "nuo" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "nuo %1% iki %2% mm" msgid "Usage" msgstr "Naudojimas" @@ -5994,7 +6003,7 @@ msgstr "Tūris:" msgid "Size:" msgstr "Dydis:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Rasta G-kodo trajektorijų konfliktų %d sluoksnyje, Z = %.2lfmm. Prašome labiau atskirti konfliktuojančius objektus (%s <-> %s)." @@ -6306,11 +6315,13 @@ msgstr "Įrašyti projektą kaip" msgid "Save current project as" msgstr "Įrašyti dabartinį projektą kaip" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Talpinti 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Eksportuoti 3MF failą su įterptais pasirinktais parametrais" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuoti 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7585,6 +7596,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Apatinis" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Šis parametras nenurodo papildinio gebos tipo." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Šis parametras nurodo neatpažintą papildinio gebos tipą: " + # AI Translated msgid "Plugin Selection" msgstr "Papildinio pasirinkimas" @@ -8153,11 +8172,13 @@ msgstr "Patvirtinkite, kad šiuose profiliuose esantis G-kodas yra saugus, kad i msgid "Customized Preset" msgstr "Pritaikytas profilis" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Kai kurių patalpintų parametrų pritaikyti nepavyko:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Kai kurie gijų lizdai buvo pakeisti:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Komponentų pavadinimai STEP faile nėra UTF-8 formato!" @@ -8570,13 +8591,17 @@ msgstr "Išsaugoti susluoksniuotą failą kaip:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Failas %s išsiųstas į spausdintuvo laikmeną ir gali būti peržiūrimas spausdintuve." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Talpinti 3MF failą kaip:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Nepavyko eksportuoti patalpinto 3MF failo.\n" +"Patikrinkite, ar aplankas pasiekiamas internete ir ar failo neturi atvėrusios kitos programos." msgid "Publish" msgstr "Talpinti" @@ -8791,7 +8816,6 @@ msgstr "Ar norite tęsti?" msgid "Language selection" msgstr "Kalbos pasirinkimas" - msgid "Asia-Pacific" msgstr "Azija-Ramusis vandenynas" @@ -8896,6 +8920,9 @@ msgstr "Dabartinės versijos kelias: " msgid "General" msgstr "Bendras" +msgid "Language" +msgstr "Kalba" + msgid "Metric" msgstr "Metrinė" @@ -9324,9 +9351,6 @@ msgstr "Slenkant sluoksnių slankiklį pjaustytoje peržiūroje, atvaizduoti že msgid "Dimmed layer brightness" msgstr "Pritemdytų sluoksnių ryškumas" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9723,63 +9747,80 @@ msgstr "Įkeliami duomenys" msgid "Jump to webpage" msgstr "Pereiti į interneto puslapį" +# AI Translated msgid "Material" -msgstr "" +msgstr "Medžiaga" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Mišri gija" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Kai kurios mišrios gijos priklauso nuo gijų, kurios nebus patalpintos:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Gija %d (mišri)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% reikalauja %2%, kuri nėra įjungta." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% reikalauja %2%, kurios medžiaga nebus paskelbta." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Norėdami patalpinti mišrią giją, įjunkite kiekvieną jos naudojamą giją ir pasirinkite Pilną talpinimą arba įvykdykite jos Tipo reikalavimą." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Vis tiek talpinti" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Talpinti 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Pasirinkite, kuriuos parametrus talpinti 3MF faile" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF talpinimo wiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF talpinimo vaizdo vadovas" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Mišri gija - talpinama kaip visuma, kai viršuje pasirinkta \"Įjungti\"" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Talpinti šią mišrią giją ir įjungti + pilnai patalpinti jos sudedamąsias gijas" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Talpinti šį gijos lizdą 3MF faile" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Pilnas talpinimas" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Įterpti visą šio lizdo giją į 3MF failą" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtruoti nepasirinktus" #, c-format, boost-format msgid "Save %s as" @@ -9798,6 +9839,10 @@ msgstr "Nukopijuoja į šį profilį visas iš pirminio profilio paveldėtas rei msgid "Detach from parent" msgstr "Atskirti nuo tėvinio profilio" +# AI Translated +msgid "Save without parent" +msgstr "Išsaugoti be tėvinio profilio" + # AI Translated msgid "Unique preset" msgstr "Savarankiškas profilis" @@ -10500,9 +10545,17 @@ msgstr "Norint aptikti gumbų susidarymą, reikalingas valymo bokštas. Be valym msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Įjungus ir tikslų Z aukštį, ir valymo bokštą, gali kilti sluoksniavimo klaidų. Ar vis tiek norite įjungti tikslų Z aukštį?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Sklandžiam pakadriniam filmavimui (timelapse) reikia valymo bokšto kiekviename sluoksnyje, o tai nesuderinama su parinktimi \"Nėra retų sluoksnių\". Parinktis \"Nėra retų sluoksnių\" buvo išjungta." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Norint sklandžiai įrašyti laiko tarpų (timelapse) vaizdo įrašą, reikalingas valymo bokštas. Be valymo bokšto modelyje gali atsirasti defektų. Ar norite įjungti valymo bokštą?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "Parinktis \"Nėra retų sluoksnių\" nesuderinama su sklandžiu pakadriniu filmavimu (timelapse), kuriam reikia valymo bokšto kiekviename sluoksnyje. Pakadrinis filmavimas perjungtas į tradicinį režimą." + msgid "Still print by object?" msgstr "Vis dar spausdinti pagal objektą?" @@ -10875,9 +10928,6 @@ msgstr "Suderinami apdorojimo profiliai" msgid "Printable space" msgstr "Erdvė spausdinimui" -msgid "Printer Agent" -msgstr "Spausdintuvo agentas" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti. Prieinami agentai užregistruojami paleidimo metu." @@ -11280,12 +11330,6 @@ msgstr "Ekstruderių skaičius" msgid "Capabilities" msgstr "Galimybės" -msgid "Left: " -msgstr "Kairė:" - -msgid "Right: " -msgstr "Dešinė:" - msgid "Show all presets (including incompatible)" msgstr "Rodyti visus profilius (įskaitant nesuderinamus)" @@ -12124,15 +12168,22 @@ msgstr "Taisymas atšauktas" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Failo %1% kopijavimas į %2% nepavyko: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Atsisiunčiami nauji gamintojų profiliai: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Konfigūracijos paketas: %1% atnaujintas į %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Nepavyko atsisiųsti gamintojų profilių: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Prieš atnaujinant konfigūraciją reikia patikrinti neišsaugotus pakeitimus." -msgid "Configuration package: " -msgstr "Konfigūracijos paketas: " - -msgid " updated to " -msgstr " atnaujintas į " - msgid "Open G-code file:" msgstr "Atidaryti G-kodo failą:" @@ -12192,11 +12243,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "„Input shaping“ funkcija palaikoma tik „Klipper“, „RepRapFirmware“ ir „Marlin 2“ programinėje aparatinėje įrangoje" -msgid "Grouping error: " -msgstr "Grupavimo klaida: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Grupavimo klaida: %1% negalima įdėti į kairįjį purkštuką" -msgid " can not be placed in the " -msgstr "negali būti įkeltas į " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Grupavimo klaida: %1% negalima įdėti į dešinįjį purkštuką" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12310,6 +12365,10 @@ msgstr "%1% yra per arti kitų, todėl gali įvykti susidūrimas." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% yra per aukštas, todėl įvyks susidūrimai." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Modelio ir valymo bokšto tarpusavio padėtis neatitinka funkcijos \"Nėra retų sluoksnių\" reikalavimų. Pakoreguokite jų tarpusavio padėtį, sumažinkite modelio aukštį arba išjunkite parinktį \"Nėra retų sluoksnių\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " yra per arti uždraustosios zonos, spausdinant gali įvykti susidūrimų." @@ -12655,6 +12714,9 @@ msgstr "Vietoj G-kodo naudoti 3MF" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Įjunkite, jei spausdintuvas spausdinimo užduotims priima 3MF failus. Kai įjungta, „Orca Slicer“ sugeneruotą failą siunčia kaip „.gcode.3mf“, o ne kaip paprastą „.gcode“ failą." +msgid "Printer Agent" +msgstr "Spausdintuvo agentas" + msgid "Select the network agent implementation for printer communication." msgstr "Pasirinkite tinklo agento modulį ryšiui su spausdintuvu palaikyti." @@ -13699,6 +13761,10 @@ msgstr "Sulygiuotas tiesiaeigis" msgid "Concentric" msgstr "Koncentrinis" +# AI Translated +msgid "Spiral Inset" +msgstr "Spiralinis poslinkis" + msgid "Hilbert Curve" msgstr "Hilberto kreivė" @@ -13790,13 +13856,13 @@ msgstr "Viršutinio paviršiaus užpildymo tvarka" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Kryptis, kuria užpildomi viršutiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n" -"„Į išorę“ prasideda paviršiaus centre, todėl bet koks perteklinė medžiaga stumiama link krašto, kur ji mažiausiai matoma. „Į vidų“ prasideda nuo krašto ir baigiasi ankštomis kreivėmis centre.\n" -"Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi." +"Kryptis, kuria užpildomi viršutiniai paviršiai naudojant nuo centro einantį raštą (Koncentrinis, Spiralinis poslinkis, Archimedo akordai, Oktagramos spiralė).\n" +"Į išorę pradeda nuo paviršiaus centro, todėl medžiagos perteklius stumiamas link krašto, kur jis mažiausiai matomas. Į vidų pradeda nuo krašto ir baigia ankštais posūkiais centre.\n" +"Numatytasis naudoja trumpiausio kelio eiliškumą, kuris gali eiti bet kuria kryptimi." # AI Translated msgid "Bottom surface fill order" @@ -13804,13 +13870,13 @@ msgstr "Apatinio paviršiaus užpildymo tvarka" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Kryptis, kuria užpildomi apatiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n" -"„Į vidų“ pradeda kiekvieną paviršių platesnėmis išorinėmis kreivėmis, o tai pagerina pirmojo sluoksnio sukibimą ant pagrindų, kur ankštos kreivės centre gali nesilaikyti. „Į išorę“ prasideda centre, stumdama bet kokią perteklinę medžiagą link krašto.\n" -"Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi." +"Kryptis, kuria užpildomi apatiniai paviršiai naudojant nuo centro einantį raštą (Koncentrinis, Spiralinis poslinkis, Archimedo akordai, Oktagramos spiralė).\n" +"Į vidų pradeda kiekvieną paviršių nuo platesnių išorinių posūkių, o tai pagerina pirmojo sluoksnio sukibimą su pagrindais, prie kurių ankšti posūkiai centre gali nepriliptų. Į išorę pradeda nuo centro ir stumia medžiagos perteklių link krašto.\n" +"Numatytasis naudoja trumpiausio kelio eiliškumą, kuris gali eiti bet kuria kryptimi." msgid "Internal solid infill pattern" msgstr "Vidinio tvirto užpildo raštas" @@ -13909,6 +13975,14 @@ msgstr "Prieš laikrodžio rodyklę" msgid "Clockwise" msgstr "Pagal laikrodžio rodyklę" +# AI Translated +msgid "Distance to rod" +msgstr "Atstumas iki strypo" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Horizontalus atstumas nuo purkštuko galiuko iki tolimesnio strypo krašto. Naudojamas susidūrimams išvengti spausdinant objektą po objekto." + msgid "Height to rod" msgstr "Aukštis iki ašies (strypo)" @@ -16064,6 +16138,20 @@ msgstr "Aptikti iškyšų sieneles" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Nustatykite iškyšos procentinę dalį, palyginti su linijos pločiu, ir naudokite skirtingą spausdinimo greitį. Jei iškyša 100%%, naudojamas tilto greitis." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Neatremtas sieneles spausdinti paskutines" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Sienelės kontūrai, esantys visiškai ore, spausdinami tik tada, kai juos yra kam palaikyti:\n" +"jie išspaudžiami po kitų savo salos sienelių, pradedant nuo vidinės, nepriklausomai nuo sienelių eiliškumo.\n" +"Kontūras, kurį gali įtvirtinti tik šio sluoksnio tiltai, laukia, kol tie tiltai bus atspausdinti, o kontūras, einantis šalia atremtos sienelės, išlaiko savo vietą prieš užpildą, kuriam jis reikalingas kaip įtvirtinimas." + msgid "Outer walls" msgstr "Išorinės sienelės" @@ -16497,6 +16585,39 @@ msgstr "Nuvalyti kilpas" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Siekiant sumažinti siūlės matomumą uždaroje ekstruzijos kilpoje, prieš ekstruderiui išeinant iš kilpos atliekamas nedidelis judesys į vidų." +# AI Translated +msgid "Wipe inward" +msgstr "Valymas į vidų" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Taikoma tik išorinėms sienelėms, įskaitant skylių kontūrus. Valymo metu karštą purkštuką patraukia link jau atspausdintų vidinių sienelių, kad sumažintų ką tik atspausdinto plastiko pakartotinį įkaitimą ir siūlės žymes.\n" +"\n" +"Ypač naudinga esant mažesniam nei 0,1 mm sluoksnio aukščiui, kai valymo žymės labiau matomos.\n" +"\n" +"Naudoja įprastą valymą, jei nėra jau atspausdintos gretimos vidinės sienelės (vienos sienelės sritys arba sienelių eiliškumas Išorinis / vidinis) arba jei nepavyksta rasti atremto kelio į vidų, pavyzdžiui, ankštuose kampuose ar siūlės tarpuose." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Valymo į vidų atstumas" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Atstumas, kuriuo valymo kelias pastumiamas nuo išorinio kontūro, nurodomas milimetrais arba procentais nuo faktinio išorinės sienelės išspaudimo pločio.\n" +"\n" +"Pavyzdžiui, 50% pastumia kelią per pusę išorinės sienelės pločio. Faktinį poslinkį riboja tiek tikrasis išorinės sienelės plotis, tiek laisvas tarpas iki gretimos sienelės, todėl didesnės nei 100% reikšmės ar joms lygiavertis absoliutus atstumas papildomo poveikio neturi. Nustatykite 0, kad poslinkis būtų išjungtas." + msgid "Wipe before external loop" msgstr "Valymas prieš išorinį kontūrą" @@ -16758,8 +16879,9 @@ msgstr "Paima naują įrankį nelaukdamas, kol jis pasieks spausdinimo temperat msgid "No sparse layers (beta)" msgstr "Nėra retų sluoksnių (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Jei įjungta, valymo bokštas nebus spausdinamas tuose sluoksniuose, kur įrankis nekeičiamas. Sluoksniuose, kur įrankis keičiamas, ekstruderis nusileis žemyn atspausdinti valymo bokšto dalies. Naudotojas pats atsako už tai, kad ekstruderis nesusidurtų su spaudiniu." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Jei įjungta, valymo bokštas nebus spausdinamas sluoksniuose be įrankio keitimų. Sluoksniuose su įrankio keitimu ekstruderis nusileis žemyn, kad atspausdintų valymo bokštą, todėl bokštas atsiduria žemiau modelio ir spausdinimo galvutė turi prie jo pasiekti žemyn. Išdėstymai, kuriuose tai susidurtų su jau atspausdintu objektu, atmetami. Neveikia esant sklandžiam pakadriniam filmavimui ar purkštuko apnašų aptikimui, nes jiems reikia bokšto kiekviename sluoksnyje." msgid "Prime all printing extruders" msgstr "Paruošti (prime) visus spausdinimo ekstruderius" @@ -16785,6 +16907,34 @@ msgstr "" msgid "Cyclic" msgstr "Ciklinė" +# AI Translated +msgid "Cyclic order" +msgstr "Ciklinis eiliškumas" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Pasirinktinė gijų seka, naudojama cikliniame įrankių keitimo eiliškume, kaip kableliais atskirti gijų numeriai (pvz., \"3,2,1,4\").\n" +"Kiekvienas sluoksnis spausdina savo gijas pagal šią seką; nenurodytos gijos spausdinamos paskutinės, didėjimo tvarka.\n" +"Palikite tuščią, kad gijos būtų perrenkamos didėjimo tvarka." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Taikyti ciklinį eiliškumą pirmajam sluoksniui" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Taiko ciklinį įrankių keitimo eiliškumą ir pirmajam sluoksniui.\n" +"Pagal numatytuosius nustatymus tai išjungta, nes pirmasis sluoksnis vietoj to išdėstomas siekiant geriausio sukibimo su pagrindu: gijos, kuriomis spausdinamos mažos, trapios pirmojo sluoksnio detalės, spausdinamos paskutinės, todėl tolesni įrankių keitimai ir tuščiosios eigos rečiau nuplėšia tas silpnai įtvirtintas dalis. Šis pirmojo sluoksnio eiliškumas taip pat atsižvelgia į pirmojo sluoksnio pasirinktinę gijų seką, jei ji nustatyta. Ciklinio eiliškumo nauda (papildomi įrankių keitimai kiekvienam sluoksniui suteikia daugiau laiko atvėsti) pirmajam sluoksniui negalioja, nes jis spausdinamas lėtai ir karštas dėl sukibimo.\n" +"Įjunkite tai tik tuomet, jei jums reikia tiksliai tokios pačios įrankių sekos kiekviename sluoksnyje, įskaitant pirmąjį, aukojant šį sukibimo optimizavimą." + msgid "Slice gap closing radius" msgstr "Sluoksniavimo tarpo uždarymo spindulys" @@ -16794,9 +16944,6 @@ msgstr "Plyšiai, mažesni nei 2x tarpo uždarymo spindulys, užpildomi trikampi msgid "Slicing Mode" msgstr "Sluoksniavimo režimas" -msgid "Other" -msgstr "Kita" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "„3DLabPrint“ lėktuvų modeliams naudokite „Lyginis-nelyginis“. Naudokite „Uždaryti kiaurymes“, kad uždarytumėte visas modelio kiaurymes." @@ -17799,6 +17946,14 @@ msgstr "Netikrinama" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Nevykdyti jokių tinkamumo patikrinimų, pavyzdžiui, G-kodo (G-code) trajektorijų konfliktų patikros." +# AI Translated +msgid "Strict mode" +msgstr "Griežtas režimas" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Baigia darbą su ne nuliniu kodu, kai sluoksniuojant pateikiamas nekritinis įspėjimas, kuris kitu atveju būtų tik užregistruotas žurnale, pavyzdžiui, modelis, kuriam reikia atramų, kai atramos išjungtos. Naudokite tai CI arba scenarijais valdomuose procesuose, kurie niekada neturėtų pateikti nepastebimai sugadinto rezultato. Kiekvienas toks įspėjimas taip pat nurodomas su pastoviu klasės vardu result.json masyve `warnings`, kuris rašomas tik Linux sistemoje. Negalima derinti su --no-check, kuris praleidžia atramų patikrą." + msgid "Normative check" msgstr "Normatyvinė patikra" @@ -17811,11 +17966,28 @@ msgstr "Išvesti modelio informaciją" msgid "This outputs the model’s information." msgstr "Tai išveda modelio informaciją." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Tikrinti tinklelį (JSON į stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Išveda į stdout JSON santrauką apie kiekvieną įkeltą objektą ir baigia darbą: jo ribojančius gretasienius ir iškiliojo apvalkalo sienas, ant kurių jį galima paguldyti, su jų normalėmis, plotais ir centrais. Būtent iš šių sienų renkasi --ground-* parinktys. Kompiuterio skaitoma alternatyva --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Tikrinti piešinį (JSON į stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Išveda struktūrizuotą JSON santrauką apie kiekvieną piešimo sluoksnį (atramos, siūlė, MMU spalva, grublėtas paviršius), jau įrašytą į įkeltą modelį — sienelių skaičių, paviršiaus plotą ir ribojantį gretasienį tinklelio koordinatėmis kiekvienai būsenai — ir baigia darbą. Kompiuterio skaitoma alternatyva piešimo įrankių atvėrimui sąsajoje." + msgid "Export Settings" msgstr "Eksportavimo nustatymai" -msgid "This exports settings to a file." -msgstr "Tai eksportuoja nustatymus į failą." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Tai eksportuoja parametrus į failą. Naudokite -, kad jie būtų įrašyti į stdout." msgid "Send progress to pipe" msgstr "Siųsti pažangą į kanalą" @@ -17871,6 +18043,30 @@ msgstr "Pasukti aplink Y ašį" msgid "Rotation angle around the Y axis in degrees." msgstr "Sukimosi kampas aplink Y ašį laipsniais." +# AI Translated +msgid "Ground largest face" +msgstr "Guldyti ant didžiausios sienos" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Paguldo kiekvieną objektą ant didžiausios jo iškiliojo apvalkalo sienos ir nuleidžia jį ant pagrindo. Iš vienodo dydžio sienų paliekama ta, kuri jau nukreipta žemyn. Objektai, neturintys pakankamai didelės sienos atsiremti, paliekami tokie, kokie yra. Transformacijos vykdomos komandų eilutės tvarka, todėl prieš šią parinktį nurodyti pasukimai išlaikomi. --orient 1 vykdoma po visų transformacijų ir pakeičia orientaciją." + +# AI Translated +msgid "Ground face by normal" +msgstr "Guldyti ant sienos pagal normalę" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Paguldo kiekvieną objektą ant tos iškiliojo apvalkalo sienos, kurios išorinė normalė arčiausia krypties NX,NY,NZ, ir nuleidžia jį ant pagrindo. Kryptis nurodoma objekto koordinatėmis, kurios apima prieš šią parinktį nurodytus pasukimus ir sutampa su pagrindo ašimis, nebent įvesties failas objektą pasuka. Pavyzdžiui, 1,0,0 pastato objektą ant jo +X pusės. --orient 1 vykdoma po visų transformacijų ir pakeičia orientaciją." + +# AI Translated +msgid "Ground face at point" +msgstr "Guldyti ant sienos taške" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Paguldo kiekvieną objektą ant tos iškiliojo apvalkalo sienos, kurioje yra taškas X,Y,Z, ir nuleidžia jį ant pagrindo. Taškas nurodomas objekto koordinatėmis, kurios apima prieš šią parinktį nurodytus pasukimus; --inspect-mesh pateikia sienų centrus būtent jomis. Objektai, neturintys tokios sienos, paliekami tokie, kokie yra, o vykdymas nepavyksta, jei tokios sienos neturi nė vienas objektas. --orient 1 vykdoma po visų transformacijų ir pakeičia orientaciją." + msgid "Scale the model by a float factor." msgstr "Keisti modelio mastelį pagal slankiojo kablelio koeficientą." @@ -20935,14 +21131,17 @@ msgstr "Šio veiksmo atšaukti nebus galima. Tęsti?" msgid "Skipping objects." msgstr "Praleidžiami objektai." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Medžiagos santykis" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modelio aukštis" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Santykis" msgid "Select Filament" msgstr "Pasirinkti giją" @@ -21198,12 +21397,14 @@ msgid "Drying-Dehumidifying" msgstr "Džiovinimas – sausinimas" # AI Translated -msgid " maximum drying temperature is " -msgstr " didžiausia džiovinimo temperatūra yra " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Didžiausia %s džiovinimo temperatūra yra %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " mažiausia džiovinimo temperatūra yra " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Mažiausia %s džiovinimo temperatūra yra %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -21648,6 +21849,95 @@ msgstr "" "Venkite deformacijų (warping)\n" "Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?" +#~ msgid "Other" +#~ msgstr "Kita" + +#~ msgid "Left: " +#~ msgstr "Kairė:" + +#~ msgid "Right: " +#~ msgstr "Dešinė:" + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Maksimali temperatūra negali viršyti " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Minimali temperatūra neturi būti mažesnė nei " + +#~ msgid "up to" +#~ msgstr "iki" + +#~ msgid "above" +#~ msgstr "virš" + +#~ msgid "from" +#~ msgstr "nuo" + +#~ msgid "Configuration package: " +#~ msgstr "Konfigūracijos paketas: " + +#~ msgid " updated to " +#~ msgstr " atnaujintas į " + +#~ msgid "Grouping error: " +#~ msgstr "Grupavimo klaida: " + +#~ msgid " can not be placed in the " +#~ msgstr "negali būti įkeltas į " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " didžiausia džiovinimo temperatūra yra " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " mažiausia džiovinimo temperatūra yra " + +# AI Translated +#~ msgid "needs" +#~ msgstr "reikalauja" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "neįjungta" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "medžiaga nepatalpinta" + +#~ msgid "Select the language" +#~ msgstr "Pasirinkite kalbą" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Pasirinkti papildinį" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Kryptis, kuria užpildomi viršutiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n" +#~ "„Į išorę“ prasideda paviršiaus centre, todėl bet koks perteklinė medžiaga stumiama link krašto, kur ji mažiausiai matoma. „Į vidų“ prasideda nuo krašto ir baigiasi ankštomis kreivėmis centre.\n" +#~ "Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Kryptis, kuria užpildomi apatiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n" +#~ "„Į vidų“ pradeda kiekvieną paviršių platesnėmis išorinėmis kreivėmis, o tai pagerina pirmojo sluoksnio sukibimą ant pagrindų, kur ankštos kreivės centre gali nesilaikyti. „Į išorę“ prasideda centre, stumdama bet kokią perteklinę medžiagą link krašto.\n" +#~ "Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Jei įjungta, valymo bokštas nebus spausdinamas tuose sluoksniuose, kur įrankis nekeičiamas. Sluoksniuose, kur įrankis keičiamas, ekstruderis nusileis žemyn atspausdinti valymo bokšto dalies. Naudotojas pats atsako už tai, kad ekstruderis nesusidurtų su spaudiniu." + +#~ msgid "This exports settings to a file." +#~ msgstr "Tai eksportuoja nustatymus į failą." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Tiesioginei „Native Wayland“ peržiūrai reikalingas „GStreamer GTK“ vaizdo sinchronizatorius (video sink). Įdiekite „GStreamer“ skirtą „gtksink“ papildinį, tada iš naujo paleiskite „OrcaSlicer“." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index a767093bb8..24d2f3a322 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -2679,13 +2679,6 @@ msgstr "Er is een update beschikbaar. Open het dialoogvenster voor de voorinstel msgid "%s has been removed." msgstr "%s is verwijderd." - -msgid "Select the language" -msgstr "Kies de taal" - -msgid "Language" -msgstr "Taal" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -4031,12 +4024,14 @@ msgid "Switch track at Filament Track Switch" msgstr "Van baan wisselen bij de Filament Track Switch" # AI Translated -msgid "The maximum temperature cannot exceed " -msgstr "De maximumtemperatuur mag niet hoger zijn dan " +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "De maximumtemperatuur mag niet hoger zijn dan %d" # AI Translated -msgid "The minmum temperature should not be less than " -msgstr "De minimumtemperatuur mag niet lager zijn dan " +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "De minimumtemperatuur mag niet lager zijn dan %d" # AI Translated msgid "Type to filter..." @@ -5008,6 +5003,15 @@ msgstr "" "Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen schrijven?\n" "Foutbericht: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Het kopiëren van de tijdelijke G-code naar de uitvoer-G-code is mislukt.\n" +"Foutmelding: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij het doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander apparat. De beschadigde G-code is opgeslagen als %1%.tmp." @@ -5830,10 +5834,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Waarde %s valt buiten het bereik. Het geldige bereik loopt van %d tot %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Is het %s%% or %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Is het %s%% or %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5862,22 +5867,18 @@ msgstr "Onjuist formaat. Het Vector formaat wordt verwacht: \"%1%\"" msgid "System agents" msgstr "Systeemagenten" -# AI Translated -msgid "No plugin selected" -msgstr "Geen plug-in geselecteerd" - # AI Translated msgid "Add plugin" msgstr "Plug-in toevoegen" -# AI Translated -msgid "Select plugin" -msgstr "Plug-in selecteren" - # AI Translated msgid "Remove plugin" msgstr "Plug-in verwijderen" +# AI Translated +msgid "No plugin selected" +msgstr "Geen plug-in geselecteerd" + # AI Translated msgid "Configure" msgstr "Configureren" @@ -6154,14 +6155,20 @@ msgstr "Op optimaal instellen" msgid "Regroup filament" msgstr "Filamenten opnieuw groeperen" -msgid "up to" -msgstr "tot" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "tot %1% mm" -msgid "above" -msgstr "Boven" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "boven %1% mm" -msgid "from" -msgstr "Van" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "van %1% tot %2% mm" msgid "Usage" msgstr "Gebruik" @@ -6547,7 +6554,7 @@ msgid "Size:" msgstr "Maat:" # AI Translated -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Er zijn conflicten tussen G-code-paden gevonden op laag %d, Z = %.2lfmm. Plaats de conflicterende objecten verder uit elkaar (%s <-> %s)." @@ -6882,11 +6889,13 @@ msgstr "Bewaar project als" msgid "Save current project as" msgstr "Bewaar huidig project als" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MF publiceren" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Een 3MF-bestand exporteren met de geselecteerde instellingen erin ingesloten" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF importeren" @@ -8273,6 +8282,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Onderste" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Deze instelling geeft geen type plug-infunctionaliteit op." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Deze instelling geeft een niet-herkend type plug-infunctionaliteit op: " + # AI Translated msgid "Plugin Selection" msgstr "Plug-inselectie" @@ -8904,11 +8921,13 @@ msgstr "Controleer of de G-codes in deze presets veilig zijn om schade aan de ma msgid "Customized Preset" msgstr "Aangepaste voorinstelling" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Sommige gepubliceerde instellingen konden niet worden toegepast:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Sommige filamentsleuven zijn gewijzigd:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Naam van componenten in step-bestand is niet UTF-8-formaat!" @@ -9345,13 +9364,17 @@ msgstr "Bewaar het geslicede bestand als:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Het bestand %s is naar de opslagruimte van de printer gestuurd en kan op de printer worden bekeken." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MF-bestand publiceren als:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Het exporteren van het gepubliceerde 3MF-bestand is mislukt.\n" +"Controleer of de map online bestaat of dat andere programma's het bestand geopend hebben." msgid "Publish" msgstr "Publiceren" @@ -9596,7 +9619,6 @@ msgstr "Wilt u doorgaan?" msgid "Language selection" msgstr "Taal selectie" - msgid "Asia-Pacific" msgstr "Azië-Pacific" @@ -9711,6 +9733,9 @@ msgstr "Huidig instancepad: " msgid "General" msgstr "Algemeen" +msgid "Language" +msgstr "Taal" + msgid "Metric" msgstr "Metrisch" @@ -10215,9 +10240,6 @@ msgstr "Bij het verschuiven van de laagschuifregelaar in de slicevoorvertoning w msgid "Dimmed layer brightness" msgstr "Helderheid van gedimde lagen" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -10657,63 +10679,80 @@ msgstr "Gegevens uploaden" msgid "Jump to webpage" msgstr "Ga naar de website" +# AI Translated msgid "Material" -msgstr "" +msgstr "Materiaal" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Gemengd filament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Sommige gemengde filamenten zijn afhankelijk van filamenten die niet worden gepubliceerd:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (gemengd)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% heeft %2% nodig, dat niet is ingeschakeld." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% heeft %2% nodig, waarvan het materiaal niet wordt gepubliceerd." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Om een gemengd filament te publiceren, schakel je elk filament in dat het gebruikt en kies je Volledig publiceren of voldoe je aan de Type-vereiste ervan." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Toch publiceren" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MF publiceren..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Selecteer welke instellingen in het 3MF-bestand worden gepubliceerd" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki over 3MF publiceren" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Videohandleiding over 3MF publiceren" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Gemengd filament - wordt als geheel gepubliceerd wanneer hierboven \"Inschakelen\" is geselecteerd" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Dit gemengde filament publiceren en de samenstellende filamenten inschakelen + volledig publiceren" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Deze filamentsleuf publiceren in het 3MF-bestand" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Volledig publiceren" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Het volledige filament van deze sleuf insluiten in het 3MF-bestand" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Niet-geselecteerde filteren" #, c-format, boost-format msgid "Save %s as" @@ -10733,6 +10772,10 @@ msgstr "Kopieert alle overgeërfde waarden van de bovenliggende voorinstelling n msgid "Detach from parent" msgstr "Losmaken van bovenliggend element" +# AI Translated +msgid "Save without parent" +msgstr "Opslaan zonder bovenliggend element" + # AI Translated msgid "Unique preset" msgstr "Unieke voorinstelling" @@ -11503,9 +11546,17 @@ msgstr "Voor klontdetectie is een prime toren vereist. Zonder prime toren kunnen msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Het inschakelen van zowel precieze Z-hoogte als de spoeltoren kan slicefouten veroorzaken. Wilt u precieze Z-hoogte nog steeds inschakelen?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Vloeiende timelapse heeft op elke laag een prime toren nodig, wat niet samengaat met \"Geen dunne lagen\". \"Geen dunne lagen\" is uitgeschakeld." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Een prime-toren is vereist voor een vloeiende timelapse-modus. Er kunnen gebreken ontstaan aan het model zonder prime-toren. Wilt u de prime-toren inschakelen?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Geen dunne lagen\" gaat niet samen met vloeiende timelapse, die op elke laag een prime toren nodig heeft. De timelapse is overgeschakeld naar de traditionele modus." + msgid "Still print by object?" msgstr "Print je nog steeds per object?" @@ -11894,10 +11945,6 @@ msgstr "Geschikte proces profielen" msgid "Printable space" msgstr "Ruimte waarbinnen geprint kan worden" -# AI Translated -msgid "Printer Agent" -msgstr "Printeragent" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer. Beschikbare agenten worden bij het opstarten geregistreerd." @@ -12338,14 +12385,6 @@ msgstr "Aantal extruders" msgid "Capabilities" msgstr "Mogelijkheden" -# AI Translated -msgid "Left: " -msgstr "Links: " - -# AI Translated -msgid "Right: " -msgstr "Rechts: " - msgid "Show all presets (including incompatible)" msgstr "Toon alle presets (inclusief incompatibele)" @@ -13288,17 +13327,22 @@ msgstr "Repareren geannuleerd" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Het kopieeren van bestand %1% naar %2% is mislukt: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Nieuwe leveranciersprofielen downloaden: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Configuratiepakket: %1% bijgewerkt naar %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Downloaden van leveranciersprofielen mislukt: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt." -# AI Translated -msgid "Configuration package: " -msgstr "Configuratiepakket: " - -# AI Translated -msgid " updated to " -msgstr " bijgewerkt naar " - msgid "Open G-code file:" msgstr "Open G-code bestand:" @@ -13366,12 +13410,14 @@ msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping wordt alleen ondersteund door Klipper, RepRapFirmware en Marlin 2." # AI Translated -msgid "Grouping error: " -msgstr "Groeperingsfout: " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Groeperingsfout: %1% kan niet in de linker nozzle worden geplaatst" # AI Translated -msgid " can not be placed in the " -msgstr " kan niet worden geplaatst in de " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Groeperingsfout: %1% kan niet in de rechter nozzle worden geplaatst" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -13486,6 +13532,10 @@ msgstr "%1% staat te dicht bij anderen en er kunnen botsingen ontstaan." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% is te hoog en er kunnen botsingen ontstaan." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "De onderlinge positie van het model en de prime toren voldoet niet aan de eisen van de functie \"Geen dunne lagen\". Pas hun onderlinge posities aan, verlaag de modelhoogte of schakel \"Geen dunne lagen\" uit." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "is te dicht bij het uitsluitingsgebied, er botsingen optreden tijdens het printen." @@ -13881,6 +13931,10 @@ msgstr "3MF gebruiken in plaats van G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Schakel dit in als de printer een 3MF-bestand als printopdracht accepteert. Indien ingeschakeld verzendt Orca Slicer het geslicede bestand als een .gcode.3mf in plaats van als een gewoon .gcode-bestand." +# AI Translated +msgid "Printer Agent" +msgstr "Printeragent" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Selecteer de implementatie van de netwerkagent voor de communicatie met de printer." @@ -15045,6 +15099,10 @@ msgstr "Uitgelijnd Rechtlijnig" msgid "Concentric" msgstr "Concentrisch" +# AI Translated +msgid "Spiral Inset" +msgstr "Spiraalinzet" + # AI Translated msgid "Hilbert Curve" msgstr "Hilbertkromme" @@ -15142,12 +15200,12 @@ msgstr "Vulvolgorde bovenoppervlak" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Richting waarin bovenoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n" -"Naar buiten begint in het midden van het oppervlak, zodat overtollig materiaal naar de rand wordt geduwd, waar het het minst zichtbaar is. Naar binnen begint aan de rand en eindigt met de krappe bochten in het midden.\n" +"Richting waarin bovenvlakken worden gevuld bij een patroon dat vanuit het midden werkt (Concentrisch, Spiraalinzet, Archimedische koorden, Octagram Spiraal).\n" +"Naar buiten begint in het midden van het vlak, zodat overtollig materiaal naar de rand wordt geduwd, waar het het minst opvalt. Naar binnen begint aan de rand en eindigt met de krappe bochten in het midden.\n" "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen." # AI Translated @@ -15156,12 +15214,12 @@ msgstr "Vulvolgorde onderoppervlak" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Richting waarin onderoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n" -"Naar binnen begint elk oppervlak met de bredere buitenbochten, wat de hechting van de eerste laag verbetert op printbedden waar de krappe bochten in het midden mogelijk niet hechten. Naar buiten begint in het midden en duwt overtollig materiaal naar de rand.\n" +"Richting waarin ondervlakken worden gevuld bij een patroon dat vanuit het midden werkt (Concentrisch, Spiraalinzet, Archimedische koorden, Octagram Spiraal).\n" +"Naar binnen begint elk vlak met de bredere buitenste bochten, wat de hechting van de eerste laag verbetert op printbedden waar de krappe bochten in het midden mogelijk niet plakken. Naar buiten begint in het midden en duwt overtollig materiaal naar de rand.\n" "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen." msgid "Internal solid infill pattern" @@ -15279,6 +15337,14 @@ msgstr "Tegen de klok in" msgid "Clockwise" msgstr "Met de klok mee" +# AI Translated +msgid "Distance to rod" +msgstr "Afstand tot de stang" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Horizontale afstand van de punt van het mondstuk tot de verste rand van de stang. Wordt gebruikt om botsingen te vermijden bij printen op basis van object." + msgid "Height to rod" msgstr "Hoogte tot geleider" @@ -17735,6 +17801,20 @@ msgstr "Overhange wand detecteren" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Dit maakt het mogelijk om het overhangpercentage ten opzichte van de lijnbreedte te detecteren en gebruikt verschillende snelheden om af te drukken. Voor 100%% overhang wordt de brugsnelheid gebruikt." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Niet-ondersteunde wanden als laatste printen" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Wandlussen die volledig in de lucht liggen, worden pas geprint zodra iets ze kan dragen:\n" +"ze worden geëxtrudeerd na de andere wanden van hun eiland, de binnenste eerst, ongeacht de wandvolgorde.\n" +"Een lus die alleen de bruggen van deze laag kunnen verankeren, wacht tot die bruggen geprint zijn, terwijl een lus die langs een ondersteunde wand loopt zijn plek vóór de vulling behoudt, die hem als verankering nodig heeft." + # AI Translated msgid "Outer walls" msgstr "Buitenste wanden" @@ -18242,6 +18322,39 @@ msgstr "Vegen bij lussen" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Om de zichtbaarheid van de naad bij een gesloten lusextrusie te minimaliseren, wordt er een kleine beweging naar binnen uitgevoerd voordat de extruder de lus verlaat." +# AI Translated +msgid "Wipe inward" +msgstr "Naar binnen vegen" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Geldt alleen voor buitenwanden, inclusief gatcontouren. Beweegt het hete mondstuk tijdens het vegen naar reeds geprinte binnenwanden, om het opnieuw opwarmen van vers geprint plastic en naadsporen te beperken.\n" +"\n" +"Vooral nuttig bij laaghoogtes onder 0,1 mm, waar veegsporen beter zichtbaar zijn.\n" +"\n" +"Gebruikt het gewone vegen als er nog geen aangrenzende binnenwand geprint is (gebieden met één wand of de wandvolgorde Buiten/Binnen), of als er geen ondersteund pad naar binnen gevonden kan worden, bijvoorbeeld bij krappe hoeken of onderbrekingen in de naad." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Afstand voor naar binnen vegen" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"De afstand waarover het veegpad van de buitenste omtrek af wordt verschoven, opgegeven in millimeters of als percentage van de werkelijke extrusiebreedte van de buitenwand.\n" +"\n" +"Bijvoorbeeld: 50% verschuift het pad over de helft van de breedte van de buitenwand. De effectieve verschuiving wordt begrensd door zowel de werkelijke breedte van de buitenwand als de beschikbare ruimte tot de aangrenzende wand, dus waarden boven 100% of een gelijkwaardige absolute afstand hebben geen extra effect. Stel in op 0 om de verschuiving uit te schakelen." + # AI Translated msgid "Wipe before external loop" msgstr "Vegen vóór de externe lus" @@ -18549,8 +18662,9 @@ msgstr "Pakt het nieuwe gereedschap op zonder te wachten tot het de printtempera msgid "No sparse layers (beta)" msgstr "Geen dunne lagen (bèta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit is ingeschakeld. Op lagen met een toolwissel zal de extruder neerwaarts bewegen naar het afveegblok. De gebruiker is verantwoordelijk voor eventuele botsingen met de print." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Indien ingeschakeld wordt het afveegblok niet geprint op lagen zonder gereedschapswissels. Op lagen met een gereedschapswissel beweegt de extruder omlaag om het afveegblok te printen, zodat het blok onder het model uitkomt en de printkop ernaartoe omlaag moet reiken. Opstellingen waarbij dat zou botsen met een al geprint voorwerp worden afgewezen. Heeft geen effect bij vloeiende timelapse of klontdetectie, die op elke laag een blok nodig hebben." msgid "Prime all printing extruders" msgstr "Veeg alle printextruders af" @@ -18576,6 +18690,34 @@ msgstr "" msgid "Cyclic" msgstr "Cyclisch" +# AI Translated +msgid "Cyclic order" +msgstr "Cyclische volgorde" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Aangepaste filamentvolgorde die door de cyclische gereedschapswisselvolgorde wordt gebruikt, als filamentnummers gescheiden door komma's (bijv. \"3,2,1,4\").\n" +"Elke laag print zijn filamenten volgens deze volgorde; niet vermelde filamenten worden als laatste geprint, in oplopende volgorde.\n" +"Laat leeg om de filamenten in oplopende volgorde te doorlopen." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Cyclische volgorde toepassen op de eerste laag" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Past de cyclische gereedschapswisselvolgorde ook toe op de eerste laag.\n" +"Standaard staat dit uit, omdat de eerste laag juist wordt geordend voor de beste printbed hechting: filamenten die kleine, kwetsbare details van de eerste laag printen, worden als laatste geprint, zodat de daaropvolgende gereedschapswissels en verplaatsingen die zwak verankerde delen minder snel losstoten. Deze volgorde van de eerste laag houdt ook rekening met een aangepaste filamentvolgorde voor de eerste laag, als die is ingesteld. Het voordeel van de cyclische volgorde (extra gereedschapswissels geven elke laag meer tijd om af te koelen) geldt niet voor de eerste laag, die langzaam en heet wordt geprint voor de hechting.\n" +"Schakel dit alleen in als je op elke laag, inclusief de eerste, exact dezelfde gereedschapsvolgorde nodig hebt, ten koste van die hechtingsoptimalisatie." + msgid "Slice gap closing radius" msgstr "Sluitingsradius van de gap" @@ -18585,9 +18727,6 @@ msgstr "Scheuren kleiner dan 2x de sluitradius van de spleet worden opgevuld tij msgid "Slicing Mode" msgstr "Slicing-modus" -msgid "Other" -msgstr "Anders" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Gebruik „Even-Oneven” voor 3DLabPrint-vliegtuigmodellen. Gebruik „Gaten sluiten” om alle gaten in het model te sluiten." @@ -19684,6 +19823,14 @@ msgstr "Geen controle" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Voer geen geldigheidscontroles uit, zoals de controle op conflicten tussen G-code-paden." +# AI Translated +msgid "Strict mode" +msgstr "Strikte modus" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Sluit af met een andere waarde dan nul wanneer het slicen een niet-kritieke waarschuwing oplevert die anders alleen gelogd wordt, zoals een model dat ondersteuning nodig heeft terwijl ondersteuning uitstaat. Gebruik dit in CI of in geautomatiseerde pipelines die nooit een subtiel kapotte slice mogen opleveren. Elke zo'n waarschuwing staat ook met een stabiele klasse in de array `warnings` van result.json, die alleen op Linux wordt geschreven. Kan niet worden gecombineerd met --no-check, dat de ondersteuningscontrole overslaat." + # AI Translated msgid "Normative check" msgstr "Normatieve controle" @@ -19698,11 +19845,28 @@ msgstr "Model informatie weergeven" msgid "This outputs the model’s information." msgstr "Dit geeft de informatie van het model weer." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Mesh inspecteren (JSON naar stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Print een JSON-samenvatting van elk geladen voorwerp naar stdout en sluit dan af: de begrenzingskaders en de vlakken van de convexe omhulling waarop het kan rusten, met hun normalen, oppervlakten en middelpunten. Dit zijn de vlakken waaruit de opties --ground-* kiezen. Machineleesbaar alternatief voor --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Beschildering inspecteren (JSON naar stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Print een gestructureerde JSON-samenvatting van elke beschilderde laag (ondersteuning, naad, MMU-kleur, vage buitenkant) die al op het geladen model is opgeslagen — aantal facetten, oppervlakte en mesh-lokaal begrenzingskader per toestand — en sluit dan af. Machineleesbaar alternatief voor het openen van de schildergizmo's in de interface." + msgid "Export Settings" msgstr "Exporteer instellingen" -msgid "This exports settings to a file." -msgstr "Exporteer instellingen naar een bestand" +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Dit exporteert instellingen naar een bestand. Gebruik - om ze naar stdout te schrijven." msgid "Send progress to pipe" msgstr "Stuur voortgang naar pipe" @@ -19761,6 +19925,30 @@ msgstr "Draai over de Y-as" msgid "Rotation angle around the Y axis in degrees." msgstr "Rotatiehoek rond de Y-as in graden." +# AI Translated +msgid "Ground largest face" +msgstr "Op grootste vlak leggen" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt elk voorwerp op het grootste vlak van zijn convexe omhulling en laat het op het printbed zakken. Van even grote vlakken blijft het vlak dat al omlaag wijst behouden. Voorwerpen zonder een vlak dat groot genoeg is om op te rusten, blijven zoals ze zijn. Transformaties worden uitgevoerd in de volgorde van de opdrachtregel, dus rotaties die vóór deze optie zijn opgegeven worden gerespecteerd. --orient 1 draait na alle transformaties en vervangt de oriëntatie." + +# AI Translated +msgid "Ground face by normal" +msgstr "Op vlak volgens normaal leggen" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt elk voorwerp op het vlak van de convexe omhulling waarvan de naar buiten gerichte normaal het dichtst bij de richting NX,NY,NZ ligt, en laat het op het printbed zakken. De richting is in voorwerpcoördinaten, die de vóór deze optie opgegeven rotaties bevatten en overeenkomen met de assen van het printbed, tenzij het invoerbestand het voorwerp draait. Bijvoorbeeld: 1,0,0 zet het voorwerp op zijn +X-zijde. --orient 1 draait na alle transformaties en vervangt de oriëntatie." + +# AI Translated +msgid "Ground face at point" +msgstr "Op vlak bij punt leggen" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Legt elk voorwerp op het vlak van de convexe omhulling dat het punt X,Y,Z bevat, en laat het op het printbed zakken. Het punt is in voorwerpcoördinaten, die de vóór deze optie opgegeven rotaties bevatten; --inspect-mesh geeft de middelpunten van vlakken in die coördinaten. Voorwerpen zonder zo'n vlak blijven zoals ze zijn, en de uitvoering mislukt als geen enkel voorwerp er een heeft. --orient 1 draait na alle transformaties en vervangt de oriëntatie." + msgid "Scale the model by a float factor." msgstr "Schaal het model met een float-factor" @@ -23315,14 +23503,17 @@ msgstr "Deze actie kan niet ongedaan worden gemaakt. Doorgaan?" msgid "Skipping objects." msgstr "Objecten worden overgeslagen." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Materiaalverhouding" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modelhoogte" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Verhouding" msgid "Select Filament" msgstr "Selecteer filament" @@ -23632,12 +23823,14 @@ msgid "Drying-Dehumidifying" msgstr "Drogen - ontvochtigen" # AI Translated -msgid " maximum drying temperature is " -msgstr " de maximale droogtemperatuur is " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "De maximale droogtemperatuur van %s is %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " de minimale droogtemperatuur is " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "De minimale droogtemperatuur van %s is %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -24088,6 +24281,103 @@ msgstr "" "Kromtrekken voorkomen\n" "Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?" +#~ msgid "Other" +#~ msgstr "Anders" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Links: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Rechts: " + +# AI Translated +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "De maximumtemperatuur mag niet hoger zijn dan " + +# AI Translated +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "De minimumtemperatuur mag niet lager zijn dan " + +#~ msgid "up to" +#~ msgstr "tot" + +#~ msgid "above" +#~ msgstr "Boven" + +#~ msgid "from" +#~ msgstr "Van" + +# AI Translated +#~ msgid "Configuration package: " +#~ msgstr "Configuratiepakket: " + +# AI Translated +#~ msgid " updated to " +#~ msgstr " bijgewerkt naar " + +# AI Translated +#~ msgid "Grouping error: " +#~ msgstr "Groeperingsfout: " + +# AI Translated +#~ msgid " can not be placed in the " +#~ msgstr " kan niet worden geplaatst in de " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " de maximale droogtemperatuur is " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " de minimale droogtemperatuur is " + +# AI Translated +#~ msgid "needs" +#~ msgstr "heeft nodig" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "niet ingeschakeld" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materiaal niet gepubliceerd" + +#~ msgid "Select the language" +#~ msgstr "Kies de taal" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Plug-in selecteren" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Richting waarin bovenoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n" +#~ "Naar buiten begint in het midden van het oppervlak, zodat overtollig materiaal naar de rand wordt geduwd, waar het het minst zichtbaar is. Naar binnen begint aan de rand en eindigt met de krappe bochten in het midden.\n" +#~ "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Richting waarin onderoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n" +#~ "Naar binnen begint elk oppervlak met de bredere buitenbochten, wat de hechting van de eerste laag verbetert op printbedden waar de krappe bochten in het midden mogelijk niet hechten. Naar buiten begint in het midden en duwt overtollig materiaal naar de rand.\n" +#~ "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Het afveegblok wordt niet geprint bij lagen zonder toolwisselingen als dit is ingeschakeld. Op lagen met een toolwissel zal de extruder neerwaarts bewegen naar het afveegblok. De gebruiker is verantwoordelijk voor eventuele botsingen met de print." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exporteer instellingen naar een bestand" + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Voor de native Wayland-liveview is de GStreamer GTK-videosink nodig. Installeer de gtksink-plug-in voor GStreamer en start OrcaSlicer opnieuw." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 39b0c71d89..8f66233eb3 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -2512,13 +2512,6 @@ msgstr "Dostępna jest aktualizacja. Otwórz okno pakietu profili, aby ją zains msgid "%s has been removed." msgstr "%s został usunięty." - -msgid "Select the language" -msgstr "Wybierz język" - -msgid "Language" -msgstr "Język" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3789,11 +3782,15 @@ msgstr "Wycofaj bieżący filament na Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Przełącz tor na Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "Maksymalna temperatura nie może przekroczyć " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Maksymalna temperatura nie może przekroczyć %d" -msgid "The minmum temperature should not be less than " -msgstr "Minimalna temperatura nie powinna być mniejsza niż " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Minimalna temperatura nie powinna być mniejsza niż %d" # AI Translated msgid "Type to filter..." @@ -4702,6 +4699,15 @@ msgstr "" "Kopiowanie tymczasowego G-code do wyjściowego pliku G-code nie powiodło się. Być może karta SD jest zablokowana do zapisu?\n" "Komunikat błędu: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Skopiowanie tymczasowego G-code do wyjściowego G-code nie powiodło się.\n" +"Komunikat błędu: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Kopiowanie tymczasowego G-code do wyjściowego pliku G-code nie powiodło się. Może być problem z urządzeniem docelowym, spróbuj ponownie wyeksportować lub użyć innego urządzenia. Uszkodzony plik wyjściowego G-code znajduje się w pliku %1%.tmp." @@ -5451,10 +5457,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Wartość %s jest spoza zakresu. Poprawny zakres wynosi od %d do %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Czy to %s%% czy %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Czy to %s%% czy %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5482,22 +5489,18 @@ msgstr "Nieprawidłowy format. Oczekiwano formatu wektorowego: „%1%”" msgid "System agents" msgstr "Agenci systemowi" -# AI Translated -msgid "No plugin selected" -msgstr "Nie wybrano wtyczki" - # AI Translated msgid "Add plugin" msgstr "Dodaj wtyczkę" -# AI Translated -msgid "Select plugin" -msgstr "Wybierz wtyczkę" - # AI Translated msgid "Remove plugin" msgstr "Usuń wtyczkę" +# AI Translated +msgid "No plugin selected" +msgstr "Nie wybrano wtyczki" + # AI Translated msgid "Configure" msgstr "Konfiguruj" @@ -5761,14 +5764,20 @@ msgstr "Ustaw na optymalne" msgid "Regroup filament" msgstr "Zmień grupowanie filamentu" -msgid "up to" -msgstr "do" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "do %1% mm" -msgid "above" -msgstr "powyżej" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "powyżej %1% mm" -msgid "from" -msgstr "od" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "od %1% do %2% mm" # AI Translated msgid "Usage" @@ -6143,7 +6152,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Wykryto konflikty ścieżek G-code na warstwie %d, Z = %.2lfmm. Proszę oddalić od siebie obiekty będące w konflikcie (%s <-> %s)." @@ -6463,11 +6472,13 @@ msgstr "Zapisz projekt jako" msgid "Save current project as" msgstr "Zapisz bieżący projekt jako" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Opublikuj 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Eksportuj plik 3MF z osadzonymi wybranymi ustawieniami" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importuj 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7779,6 +7790,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Dół" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "To ustawienie nie określa typu funkcji wtyczki." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "To ustawienie określa nierozpoznany typ funkcji wtyczki: " + # AI Translated msgid "Plugin Selection" msgstr "Wybór wtyczek" @@ -8353,11 +8372,13 @@ msgstr "Proszę potwierdź, że G-code w tych profilach jest bezpieczny, aby zap msgid "Customized Preset" msgstr "Dostosowany profil" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Niektórych opublikowanych ustawień nie udało się zastosować:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Niektóre gniazda filamentu zostały zmienione:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Nazwa komponentów w pliku step nie jest w formacie UTF-8!" @@ -8785,13 +8806,17 @@ msgstr "Zapisz plik po wykonaniu cięcia jako:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Plik %s został wysłany do pamięci drukarki i można go obejrzeć na urządzeniu." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Opublikuj plik 3MF jako:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Nie udało się wyeksportować opublikowanego pliku 3MF.\n" +"Sprawdź, czy folder istnieje w trybie online lub czy inne programy nie mają otwartego tego pliku." msgid "Publish" msgstr "Opublikuj" @@ -9010,7 +9035,6 @@ msgstr "Czy kontynuować?" msgid "Language selection" msgstr "Wybór języka" - msgid "Asia-Pacific" msgstr "Azja i Pacyfik" @@ -9124,6 +9148,9 @@ msgstr "Aktualna ścieżka instancji: " msgid "General" msgstr "Ogólne" +msgid "Language" +msgstr "Język" + msgid "Metric" msgstr "Metryczne" @@ -9618,9 +9645,6 @@ msgstr "Podczas przewijania suwaka warstw w podglądzie po cięciu renderuj wars msgid "Dimmed layer brightness" msgstr "Jasność przyciemnionych warstw" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -10052,63 +10076,80 @@ msgstr "Przesyłanie danych" msgid "Jump to webpage" msgstr "Przejdź na stronę" +# AI Translated msgid "Material" -msgstr "" +msgstr "Materiał" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filament mieszany" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Niektóre filamenty mieszane zależą od filamentów, które nie zostaną opublikowane:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (mieszany)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% wymaga %2%, który nie jest włączony." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% wymaga %2%, którego materiał nie zostanie opublikowany." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Aby opublikować filament mieszany, włącz każdy filament, którego używa, i wybierz Pełną publikację lub spełnij jego wymaganie Rodzaju." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Opublikuj mimo to" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Opublikuj 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Wybierz, które ustawienia zostaną opublikowane w pliku 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki publikowania 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Poradnik wideo publikowania 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filament mieszany - publikowany w całości, gdy powyżej zaznaczono \"Włącz\"" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Opublikuj ten filament mieszany oraz włącz + opublikuj w całości jego filamenty składowe" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Opublikuj to gniazdo filamentu w pliku 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Pełna publikacja" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Osadź cały filament z tego gniazda w pliku 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtruj niezaznaczone" #, c-format, boost-format msgid "Save %s as" @@ -10128,6 +10169,10 @@ msgstr "Kopiuje do tego profilu wszystkie wartości odziedziczone z profilu nadr msgid "Detach from parent" msgstr "Odłącz od elementu nadrzędnego" +# AI Translated +msgid "Save without parent" +msgstr "Zapisz bez elementu nadrzędnego" + # AI Translated msgid "Unique preset" msgstr "Profil niezależny" @@ -10851,9 +10896,17 @@ msgstr "Wykrywanie zlepiania wymaga wieży czyszczącej. Bez wieży czyszczącej msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Jednoczesne włączenie precyzyjnej wysokości Z i wieży czyszczącej może powodować błędy cięcia. Czy nadal chcesz włączyć precyzyjną wysokość Z?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Płynny timelapse wymaga wieży czyszczącej na każdej warstwie, co nie jest zgodne z opcją \"Warstwy bez czyszczenia\". Opcja \"Warstwy bez czyszczenia\" została wyłączona." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Wieża czyszcząca jest wymagana dla płynnego timelapse. Możliwe są wady na modelu bez wieży czyszczącej. Czy włączyć wieżę czyszczącą?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "Opcja \"Warstwy bez czyszczenia\" nie jest zgodna z płynnym timelapse, który wymaga wieży czyszczącej na każdej warstwie. Timelapse został przełączony w tryb tradycyjny." + msgid "Still print by object?" msgstr "Czy nadal drukować według obiektu?" @@ -11238,10 +11291,6 @@ msgstr "Kompatybilne profile procesów" msgid "Printable space" msgstr "Przestrzeń do druku" -# AI Translated -msgid "Printer Agent" -msgstr "Agent drukarki" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką. Dostępni agenci są rejestrowani przy uruchamianiu." @@ -11670,14 +11719,6 @@ msgstr "Liczba ekstruderów" msgid "Capabilities" msgstr "Możliwości" -# AI Translated -msgid "Left: " -msgstr "Lewy: " - -# AI Translated -msgid "Right: " -msgstr "Prawy: " - msgid "Show all presets (including incompatible)" msgstr "Pokaż wszystkie profile (łącznie z niekompatybilnymi)" @@ -12536,15 +12577,22 @@ msgstr "Naprawa anulowana" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Nie udało się skopiować pliku %1% do %2%: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Pobieranie nowych profili producentów: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Pakiet konfiguracyjny: %1% zaktualizowany do %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Nie udało się pobrać profili producentów: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Należy sprawdzić niezapisane zmiany przed aktualizacją konfiguracji." -msgid "Configuration package: " -msgstr "Pakiet konfiguracyjny:" - -msgid " updated to " -msgstr " aktualizacja do " - msgid "Open G-code file:" msgstr "Otwórz plik G-code:" @@ -12608,11 +12656,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping jest obsługiwany tylko przez Klipper, RepRapFirmware i Marlin 2." -msgid "Grouping error: " -msgstr "Błąd grupowania: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Błąd grupowania: %1% nie może zostać umieszczony w lewej dyszy" -msgid " can not be placed in the " -msgstr " nie może być umieszczony w " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Błąd grupowania: %1% nie może zostać umieszczony w prawej dyszy" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12727,6 +12779,10 @@ msgstr "%1% jest zbyt blisko innych, mogą wystąpić kolizje." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% jest zbyt wysoki, mogą wystąpić kolizje." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Wzajemne położenie modelu i wieży czyszczącej nie spełnia wymagań funkcji \"Warstwy bez czyszczenia\". Zmień ich wzajemne położenie, zmniejsz wysokość modelu albo wyłącz opcję \"Warstwy bez czyszczenia\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " jest zbyt blisko obszaru wykluczenia, mogą wystąpić kolizje podczas drukowania." @@ -13099,6 +13155,10 @@ msgstr "Użyj 3MF zamiast G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Włącz tę opcję, jeśli drukarka przyjmuje plik 3MF jako zadanie druku. Po włączeniu Orca Slicer wysyła plik po cięciu jako .gcode.3mf zamiast zwykłego pliku .gcode." +# AI Translated +msgid "Printer Agent" +msgstr "Agent drukarki" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Wybierz implementację agenta sieciowego do komunikacji z drukarką." @@ -14202,6 +14262,10 @@ msgstr "Wyrównany prostoliniowy" msgid "Concentric" msgstr "Koncentryczny" +# AI Translated +msgid "Spiral Inset" +msgstr "Spirala do wewnątrz" + msgid "Hilbert Curve" msgstr "Krzywa Hilberta" @@ -14295,13 +14359,13 @@ msgstr "Kolejność wypełniania górnej powierzchni" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Kierunek wypełniania górnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n" +"Kierunek wypełniania górnych powierzchni przy wzorze rozchodzącym się od środka (Koncentryczny, Spirala do wewnątrz, Struny Archimedesa, Spirala oktagramu).\n" "Na zewnątrz zaczyna od środka powierzchni, dzięki czemu nadmiar materiału jest wypychany ku krawędzi, gdzie jest najmniej widoczny. Do wewnątrz zaczyna od krawędzi i kończy ciasnymi łukami na środku.\n" -"Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." +"Domyślny używa kolejności najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." # AI Translated msgid "Bottom surface fill order" @@ -14309,13 +14373,13 @@ msgstr "Kolejność wypełniania dolnej powierzchni" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Kierunek wypełniania dolnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n" -"Do wewnątrz rozpoczyna każdą powierzchnię od szerszych łuków zewnętrznych, co poprawia przyczepność pierwszej warstwy na stołach, do których ciasne łuki na środku mogą nie przylegać. Na zewnątrz zaczyna od środka, wypychając nadmiar materiału ku krawędzi.\n" -"Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." +"Kierunek wypełniania dolnych powierzchni przy wzorze rozchodzącym się od środka (Koncentryczny, Spirala do wewnątrz, Struny Archimedesa, Spirala oktagramu).\n" +"Do wewnątrz zaczyna każdą powierzchnię od szerszych łuków zewnętrznych, co poprawia przyczepność pierwszej warstwy na stołach, na których ciasne łuki na środku mogą się nie przykleić. Na zewnątrz zaczyna od środka i wypycha nadmiar materiału ku krawędzi.\n" +"Domyślny używa kolejności najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." msgid "Internal solid infill pattern" msgstr "Wzór wewnętrznego pełnego wypełnienia" @@ -14418,6 +14482,14 @@ msgstr "Przeciwnie" msgid "Clockwise" msgstr "Zgodnie" +# AI Translated +msgid "Distance to rod" +msgstr "Odległość do pręta" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Odległość pozioma czubka dyszy od dalszej krawędzi pręta. Używana do unikania kolizji przy druku wg obiektu." + msgid "Height to rod" msgstr "Odległość od prowadnicy" @@ -16670,6 +16742,20 @@ msgstr "Wykrywanie ścian nawisu" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Określ procentowy udział nawisów w stosunku do szerokości ekstruzji i użyj różnych prędkości do druku. Dla 100%% nawisów, zostanie użyta prędkość mostu." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Drukuj niepodparte ściany na końcu" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Pętle ścian leżące w całości w powietrzu są drukowane dopiero wtedy, gdy coś może je utrzymać:\n" +"są wytłaczane po pozostałych ścianach swojej wyspy, począwszy od najbardziej wewnętrznej, niezależnie od kolejności ścian.\n" +"Pętla, którą mogą zakotwiczyć tylko mosty tej warstwy, czeka na wydrukowanie tych mostów, natomiast pętla biegnąca wzdłuż podpartej ściany zachowuje swoje miejsce przed wypełnieniem, które potrzebuje jej jako zakotwiczenia." + # AI Translated msgid "Outer walls" msgstr "Ściany zewnętrzne" @@ -17120,6 +17206,39 @@ msgstr "Czyszczenie na pętlach" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Aby zminimalizować widoczność szwu w ekstruzji zamkniętej pętli, przed opuszczeniem pętli przez extruder wykonuje się mały ruch do wewnątrz." +# AI Translated +msgid "Wipe inward" +msgstr "Wycieranie do wewnątrz" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Dotyczy wyłącznie ścian zewnętrznych, w tym obrysów otworów. Podczas wycierania przesuwa gorącą dyszę w stronę wydrukowanych już ścian wewnętrznych, aby ograniczyć ponowne nagrzewanie świeżo wydrukowanego tworzywa i ślady szwu.\n" +"\n" +"Szczególnie przydatne przy wysokościach warstwy poniżej 0,1 mm, gdzie ślady wycierania są bardziej widoczne.\n" +"\n" +"Używa zwykłego wycierania, jeśli żadna sąsiednia ściana wewnętrzna nie została jeszcze wydrukowana (obszary o pojedynczej ścianie lub kolejność ścian Zewnętrzna/wewnętrzna) albo jeśli nie można znaleźć podpartej ścieżki do wewnątrz, na przykład w ciasnych narożnikach lub przerwach szwu." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Odległość wycierania do wewnątrz" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Odległość, o jaką ścieżka wycierania zostaje przesunięta od zewnętrznego obrysu, podana w milimetrach lub jako procent rzeczywistej szerokości ekstruzji zewnętrznej ściany.\n" +"\n" +"Na przykład 50% przesuwa ścieżkę o połowę szerokości zewnętrznej ściany. Skuteczne przesunięcie jest ograniczone zarówno rzeczywistą szerokością zewnętrznej ściany, jak i dostępnym odstępem do sąsiedniej ściany, więc wartości powyżej 100% lub równoważna odległość bezwzględna nie dają dodatkowego efektu. Ustaw 0, aby wyłączyć przesunięcie." + msgid "Wipe before external loop" msgstr "Wycieranie przed zewnętrzną pętlą" @@ -17396,8 +17515,9 @@ msgstr "Pobiera nowe narzędzie bez czekania, aż osiągnie temperaturę druku, msgid "No sparse layers (beta)" msgstr "Warstwy bez czyszczenia (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Jeśli włączone to wieża czyszcząca nie będzie drukowana na warstwach, na których nie ma zmian koloru. Na kolejnych warstwach ze zmianami koloru ekstruder zjedzie w dół, aby kontynuować czyszczenie na wieży. Pamiętaj, że to użytkownik musi upewnić się, że nie dojdzie do kolizji głowicy z wydrukiem." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Jeśli opcja jest włączona, wieża czyszcząca nie będzie drukowana na warstwach bez zmian narzędzia. Na warstwach ze zmianą narzędzia ekstruder zjedzie w dół, aby wydrukować wieżę czyszczącą, przez co wieża znajdzie się poniżej modelu, a głowica musi po nią sięgnąć w dół. Układy, w których doszłoby przy tym do kolizji z już wydrukowanym obiektem, są odrzucane. Nie działa przy płynnym timelapse ani przy wykrywaniu nalotu na dyszy, które wymagają wieży na każdej warstwie." msgid "Prime all printing extruders" msgstr "Wyczyść wszystkie używane ekstrudery" @@ -17423,6 +17543,34 @@ msgstr "" msgid "Cyclic" msgstr "Cykliczna" +# AI Translated +msgid "Cyclic order" +msgstr "Kolejność cykliczna" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Własna sekwencja filamentów używana przez cykliczną kolejność zmian narzędzia, jako numery filamentów oddzielone przecinkami (np. \"3,2,1,4\").\n" +"Każda warstwa drukuje swoje filamenty zgodnie z tą sekwencją; filamenty niewymienione są drukowane na końcu, w kolejności rosnącej.\n" +"Pozostaw puste, aby przechodzić przez filamenty w kolejności rosnącej." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Zastosuj kolejność cykliczną do pierwszej warstwy" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Stosuje cykliczną kolejność zmian narzędzia również do pierwszej warstwy.\n" +"Domyślnie jest to wyłączone, ponieważ pierwsza warstwa jest zamiast tego układana pod kątem najlepszej przyczepności do podłoża: filamenty drukujące małe, delikatne elementy pierwszej warstwy są drukowane na końcu, dzięki czemu kolejne zmiany narzędzia i przemieszczenia rzadziej odrywają te słabo zakotwiczone fragmenty. Ta kolejność pierwszej warstwy uwzględnia też własną sekwencję filamentów dla pierwszej warstwy, jeśli została ustawiona. Korzyść z kolejności cyklicznej (dodatkowe zmiany narzędzia dają każdej warstwie więcej czasu na ostygnięcie) nie dotyczy pierwszej warstwy, która jest drukowana wolno i gorąco dla przyczepności.\n" +"Włącz tę opcję tylko wtedy, gdy potrzebujesz dokładnie tej samej sekwencji narzędzi na każdej warstwie, łącznie z pierwszą, kosztem tej optymalizacji przyczepności." + msgid "Slice gap closing radius" msgstr "Promień zamykania szpar" @@ -17432,9 +17580,6 @@ msgstr "Szpary mniejsze niż dwukrotność wartości parametru „promień zamyk msgid "Slicing Mode" msgstr "Tryb cięcia" -msgid "Other" -msgstr "Inne" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Użyj „Parzysto-nieparzysty” dla modeli samolotów 3DLabPrint. Użyj „Zamknij otwory” do zamknięcia wszystkich otworów w modelu." @@ -18458,6 +18603,14 @@ msgstr "Brak sprawdzania" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Nie uruchamiaj żadnych testów poprawności, takich jak sprawdzanie konfliktów ścieżek G-code." +# AI Translated +msgid "Strict mode" +msgstr "Tryb ścisły" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Kończy działanie z kodem różnym od zera, gdy cięcie zgłosi niekrytyczne ostrzeżenie, które w przeciwnym razie trafiłoby tylko do dziennika, na przykład model wymagający podpór przy wyłączonych podporach. Używaj tego w CI lub w zautomatyzowanych procesach, które nigdy nie powinny wypuścić subtelnie wadliwego cięcia. Każde takie ostrzeżenie jest też wymienione ze stabilną klasą w tablicy `warnings` pliku result.json, zapisywanego wyłącznie w systemie Linux. Nie można łączyć z --no-check, które pomija kontrolę podpór." + msgid "Normative check" msgstr "Kontrola normatywna" @@ -18470,11 +18623,28 @@ msgstr "Informacje o modelu wyjściowym" msgid "This outputs the model’s information." msgstr "Wyświetl informacje o modelu." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Sprawdź siatkę (JSON na stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Wypisuje na stdout podsumowanie JSON każdego wczytanego obiektu, a następnie kończy działanie: jego prostopadłościany otaczające oraz ściany otoczki wypukłej, na których może spoczywać, wraz z ich normalnymi, polami i środkami. To właśnie spośród tych ścian wybierają opcje --ground-*. Czytelna maszynowo alternatywa dla --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Sprawdź malowanie (JSON na stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Wypisuje ustrukturyzowane podsumowanie JSON każdej malowanej warstwy (podpory, szew, kolor MMU, skóra fuzzy) już zapisanej we wczytanym modelu — liczba ścianek, pole powierzchni i prostopadłościan otaczający w układzie siatki dla każdego stanu — a następnie kończy działanie. Czytelna maszynowo alternatywa dla otwierania narzędzi malowania w interfejsie." + msgid "Export Settings" msgstr "Ustawienia eksportu" -msgid "This exports settings to a file." -msgstr "Eksportuj ustawienia do pliku." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "To eksportuje ustawienia do pliku. Użyj -, aby zapisać je na stdout." msgid "Send progress to pipe" msgstr "Wyślij postęp do rury" @@ -18530,6 +18700,30 @@ msgstr "Obróć wokół osi Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Kąt obrotu wokół osi Y w stopniach." +# AI Translated +msgid "Ground largest face" +msgstr "Oprzyj na największej ścianie" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Kładzie każdy obiekt na największej ścianie jego otoczki wypukłej i opuszcza go na stół. Spośród ścian o równej wielkości zachowywana jest ta, która już jest skierowana w dół. Obiekty bez ściany wystarczająco dużej, by na niej spocząć, pozostają bez zmian. Przekształcenia wykonywane są w kolejności z wiersza poleceń, więc obroty podane przed tą opcją są respektowane. --orient 1 działa po wszystkich przekształceniach i zastępuje orientację." + +# AI Translated +msgid "Ground face by normal" +msgstr "Oprzyj na ścianie wg normalnej" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Kładzie każdy obiekt na tej ścianie otoczki wypukłej, której normalna zewnętrzna jest najbliższa kierunkowi NX,NY,NZ, i opuszcza go na stół. Kierunek podawany jest we współrzędnych obiektu, które uwzględniają obroty podane przed tą opcją i pokrywają się z osiami stołu, o ile plik wejściowy nie obraca obiektu. Na przykład 1,0,0 stawia obiekt na jego stronie +X. --orient 1 działa po wszystkich przekształceniach i zastępuje orientację." + +# AI Translated +msgid "Ground face at point" +msgstr "Oprzyj na ścianie w punkcie" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Kładzie każdy obiekt na tej ścianie otoczki wypukłej, która zawiera punkt X,Y,Z, i opuszcza go na stół. Punkt podawany jest we współrzędnych obiektu, które uwzględniają obroty podane przed tą opcją; --inspect-mesh podaje środki ścian w tych współrzędnych. Obiekty bez takiej ściany pozostają bez zmian, a przebieg kończy się niepowodzeniem, jeśli żaden obiekt jej nie ma. --orient 1 działa po wszystkich przekształceniach i zastępuje orientację." + msgid "Scale the model by a float factor." msgstr "Skaluj model przez czynnik zmiennoprzecinkowy" @@ -21793,14 +21987,17 @@ msgstr "Tego działania nie będzie można cofnąć. Kontynuować?" msgid "Skipping objects." msgstr "Pomijanie obiektów." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Udział materiału" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Wysokość modelu" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Udział" msgid "Select Filament" msgstr "Wybierz filament" @@ -22094,12 +22291,14 @@ msgid "Drying-Dehumidifying" msgstr "Suszenie — osuszanie" # AI Translated -msgid " maximum drying temperature is " -msgstr " maksymalna temperatura suszenia to " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Maksymalna temperatura suszenia dla %s to %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " minimalna temperatura suszenia to " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Minimalna temperatura suszenia dla %s to %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -22545,6 +22744,97 @@ msgstr "" "Unikaj odkształceń\n" "Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?" +#~ msgid "Other" +#~ msgstr "Inne" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Lewy: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Prawy: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Maksymalna temperatura nie może przekroczyć " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Minimalna temperatura nie powinna być mniejsza niż " + +#~ msgid "up to" +#~ msgstr "do" + +#~ msgid "above" +#~ msgstr "powyżej" + +#~ msgid "from" +#~ msgstr "od" + +#~ msgid "Configuration package: " +#~ msgstr "Pakiet konfiguracyjny:" + +#~ msgid " updated to " +#~ msgstr " aktualizacja do " + +#~ msgid "Grouping error: " +#~ msgstr "Błąd grupowania: " + +#~ msgid " can not be placed in the " +#~ msgstr " nie może być umieszczony w " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " maksymalna temperatura suszenia to " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " minimalna temperatura suszenia to " + +# AI Translated +#~ msgid "needs" +#~ msgstr "wymaga" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "nie włączony" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materiał nieopublikowany" + +#~ msgid "Select the language" +#~ msgstr "Wybierz język" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Wybierz wtyczkę" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Kierunek wypełniania górnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n" +#~ "Na zewnątrz zaczyna od środka powierzchni, dzięki czemu nadmiar materiału jest wypychany ku krawędzi, gdzie jest najmniej widoczny. Do wewnątrz zaczyna od krawędzi i kończy ciasnymi łukami na środku.\n" +#~ "Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Kierunek wypełniania dolnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n" +#~ "Do wewnątrz rozpoczyna każdą powierzchnię od szerszych łuków zewnętrznych, co poprawia przyczepność pierwszej warstwy na stołach, do których ciasne łuki na środku mogą nie przylegać. Na zewnątrz zaczyna od środka, wypychając nadmiar materiału ku krawędzi.\n" +#~ "Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Jeśli włączone to wieża czyszcząca nie będzie drukowana na warstwach, na których nie ma zmian koloru. Na kolejnych warstwach ze zmianami koloru ekstruder zjedzie w dół, aby kontynuować czyszczenie na wieży. Pamiętaj, że to użytkownik musi upewnić się, że nie dojdzie do kolizji głowicy z wydrukiem." + +#~ msgid "This exports settings to a file." +#~ msgstr "Eksportuj ustawienia do pliku." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Natywny podgląd na żywo w Wayland wymaga ujścia wideo GStreamer GTK. Zainstaluj wtyczkę gtksink dla GStreamer, a następnie uruchom ponownie OrcaSlicer." diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index ca92c4c09e..dd701176a7 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -2356,13 +2356,6 @@ msgstr "Há uma atualização disponível. Abra a caixa de diálogo do pacote de msgid "%s has been removed." msgstr "%s foi removido." - -msgid "Select the language" -msgstr "Selecione o idioma" - -msgid "Language" -msgstr "Idioma" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "Falha ao mudar o idioma do OrcaSlicer para %s." @@ -3571,11 +3564,15 @@ msgstr "Recuar o filamento atual no Filament Track Switch" msgid "Switch track at Filament Track Switch" msgstr "Trocar de trilha no Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "A temperatura máxima não pode exceder " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "A temperatura máxima não pode exceder %d" -msgid "The minmum temperature should not be less than " -msgstr "A temperatura mínima não pode ser menor do que " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "A temperatura mínima não pode ser menor do que %d" msgid "Type to filter..." msgstr "Digite para filtrar…" @@ -4441,6 +4438,15 @@ msgstr "" "A cópia do G-code temporário para o G-code de saída falhou. Talvez o cartão SD esteja travado pra escrita?\n" "Mensagem de erro: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Falha ao copiar o G-code temporário para o G-code de saída.\n" +"Mensagem de erro: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "A cópia do G-code temporário para o G-code de saída falhou. Pode haver problema com o dispositivo de destino, por favor tente exportar novamente ou usar outro dispositivo. O G-code de saída corrompido está em %1%.tmp." @@ -5168,10 +5174,12 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Valor %s está fora do intervalo. O intervalo válido é de %d para %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"É %s%% ou %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "É %s%% ou %s %s?" + +# AI Translated +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5196,18 +5204,15 @@ msgstr "Formato inválido. Formato de vetor esperado: \"%1%\"" msgid "System agents" msgstr "Agentes do sistema" -msgid "No plugin selected" -msgstr "Nenhum plugin selecionado" - msgid "Add plugin" msgstr "Adicionar plugin" -msgid "Select plugin" -msgstr "Selecionar plugin" - msgid "Remove plugin" msgstr "Remover plugin" +msgid "No plugin selected" +msgstr "Nenhum plugin selecionado" + msgid "Configure" msgstr "Configurar" @@ -5462,14 +5467,20 @@ msgstr "Definir para Ideal" msgid "Regroup filament" msgstr "Reagrupar filamento" -msgid "up to" -msgstr "até" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "até %1% mm" -msgid "above" -msgstr "acima" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "acima de %1% mm" -msgid "from" -msgstr "de" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "de %1% a %2% mm" msgid "Usage" msgstr "Uso" @@ -5827,7 +5838,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Foram encontrados conflitos de caminhos de G-code na camada %d, Z = %.2lfmm. Por favor, separe mais os objetos em conflito (%s <-> %s)." @@ -6139,11 +6150,13 @@ msgstr "Salvar projeto como" msgid "Save current project as" msgstr "Salvar o projeto atual como" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publicar 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exportar um arquivo 3MF com as configurações selecionadas incorporadas" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7404,6 +7417,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Inferior" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Esta configuração não especifica um tipo de recurso de plugin." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Esta configuração especifica um tipo de recurso de plugin não reconhecido: " + msgid "Plugin Selection" msgstr "Seleção de plugins" @@ -7941,11 +7962,13 @@ msgstr "Por favor, confirme se o G-code dentro dessas predefinições é seguro msgid "Customized Preset" msgstr "Predefinição Personalizada" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Algumas configurações publicadas não puderam ser aplicadas:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Alguns espaços de filamento foram alterados:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Os nomes dos componentes dentro do arquivo STEP não estão no formato UTF-8!" @@ -8351,13 +8374,17 @@ msgstr "Salvar arquivo fatiado como:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "O arquivo %s foi enviado para o espaço de armazenamento da impressora e pode ser visualizado na impressora." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publicar arquivo 3MF como:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Falha ao exportar o arquivo 3MF publicado.\n" +"Verifique se a pasta existe online ou se outros programas estão com o arquivo aberto." msgid "Publish" msgstr "Publicar" @@ -8566,7 +8593,6 @@ msgstr "Você deseja continuar?" msgid "Language selection" msgstr "Seleção de idioma" - msgid "Asia-Pacific" msgstr "Ásia-Pacífico" @@ -8671,6 +8697,9 @@ msgstr "Caminho da Instância Atual: " msgid "General" msgstr "Geral" +msgid "Language" +msgstr "Idioma" + msgid "Metric" msgstr "Métrico" @@ -9108,10 +9137,6 @@ msgstr "Ao mover o controle deslizante de camadas na pré-visualização fatiada msgid "Dimmed layer brightness" msgstr "Brilho das camadas escurecidas" -# AI Translated -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9508,63 +9533,80 @@ msgstr "Enviando dados" msgid "Jump to webpage" msgstr "Ir para a página web" +# AI Translated msgid "Material" -msgstr "" +msgstr "Material" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filamento misto" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Alguns filamentos mistos dependem de filamentos que não serão publicados:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filamento %d (misto)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% precisa de %2%, que não está ativado." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% precisa de %2%, cujo material não será publicado." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Para publicar um filamento misto, ative todos os filamentos que ele usa e escolha Publicação completa ou atenda ao seu requisito de Tipo." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Publicar mesmo assim" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publicar 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Selecione quais configurações serão publicadas no arquivo 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Documentação de Publicar 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Guia em vídeo de Publicar 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filamento misto - publicado por inteiro quando \"Ativar\" acima está selecionado" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publicar este filamento misto e ativar + publicar por inteiro seus filamentos componentes" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publicar este espaço de filamento no arquivo 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Publicação completa" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Incorporar o filamento inteiro deste espaço no arquivo 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrar não selecionados" #, c-format, boost-format msgid "Save %s as" @@ -9583,6 +9625,10 @@ msgstr "Copia para esta predefinição todos os valores herdados da predefiniç msgid "Detach from parent" msgstr "Separar do pai" +# AI Translated +msgid "Save without parent" +msgstr "Salvar sem pai" + # AI Translated msgid "Unique preset" msgstr "Predefinição única" @@ -10249,9 +10295,17 @@ msgstr "Uma torre de purga é necessária para a detecção de aglomeração. Po msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Habilitar a altura Z precisa e a torre de preparação juntas pode causar erros de fatiamento. Deseja habilitar a altura Z precisa mesmo assim?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "O timelapse suave precisa de uma torre de purga em todas as camadas, o que não é compatível com \"Sem camadas esparsas\". \"Sem camadas esparsas\" foi desativado." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Uma torre de purga é necessária para um timelapse suave. Pode haver falhas no modelo sem a torre de purga. Deseja ativar a torre de purga?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Sem camadas esparsas\" não é compatível com o timelapse suave, que precisa de uma torre de purga em todas as camadas. O timelapse foi alterado para o modo tradicional." + msgid "Still print by object?" msgstr "Ainda imprimir por objeto?" @@ -10618,9 +10672,6 @@ msgstr "Perfis de processo compatíveis" msgid "Printable space" msgstr "Espaço de impressão" -msgid "Printer Agent" -msgstr "Agente de Impressora" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Selecione a implementação do agente de rede para comunicação com a impressora. Os agentes disponíveis são registrados na inicialização." @@ -11019,12 +11070,6 @@ msgstr "Número de extrusoras" msgid "Capabilities" msgstr "Capacidades" -msgid "Left: " -msgstr "Esquerda: " - -msgid "Right: " -msgstr "Direita: " - msgid "Show all presets (including incompatible)" msgstr "Mostrar todas as predefinições (incluindo as incompatíveis)" @@ -11846,15 +11891,22 @@ msgstr "Reparo cancelado" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Falha ao copiar o arquivo %1% para %2%: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Baixando novos perfis de fornecedor: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Pacote de configuração: %1% atualizado para %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Falha ao baixar os perfis de fornecedor: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Verifique as alterações não salvas antes de atualizar a configuração." -msgid "Configuration package: " -msgstr "Pacote de configuração: " - -msgid " updated to " -msgstr " atualizado para " - msgid "Open G-code file:" msgstr "Abrir arquivo G-code:" @@ -11914,11 +11966,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "O controle de entrada é suportado apenas pelo Klipper, RepRapFirmware e Marlin 2." -msgid "Grouping error: " -msgstr "Erro de agrupamento: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Erro de agrupamento: %1% não pode ser colocado no bico esquerdo" -msgid " can not be placed in the " -msgstr " não pode ser colocado na " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Erro de agrupamento: %1% não pode ser colocado no bico direito" msgid "Group error in manual mode. Please check nozzle count or regroup." msgstr "Erro de agrupamento no modo manual. Por favor, verifique o número de bicos ou reagrupe." @@ -12031,6 +12087,10 @@ msgstr "%1% está muito perto de outros, e colisões podem ocorrer." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% está muito alto, e ocorrerão colisões." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "A posição relativa do modelo e da torre de purga não atende aos requisitos do recurso \"Sem camadas esparsas\". Ajuste as posições relativas, reduza a altura do modelo ou desative \"Sem camadas esparsas\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " está muito perto da área de exclusão, pode haver colisões durante a impressão." @@ -12371,6 +12431,9 @@ msgstr "Usar 3MF em vez de G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Ative esta opção se a impressora aceitar um arquivo 3MF como trabalho de impressão. Quando ativada, o OrcaSlicer envia o arquivo fatiado como .gcode.3mf, em vez de um arquivo .gcode comum." +msgid "Printer Agent" +msgstr "Agente de Impressora" + msgid "Select the network agent implementation for printer communication." msgstr "Selecione a implementação do agente de rede para comunicação com a impressora." @@ -13415,6 +13478,10 @@ msgstr "Retilíneo alinhado" msgid "Concentric" msgstr "Concêntrico" +# AI Translated +msgid "Spiral Inset" +msgstr "Espiral interna" + msgid "Hilbert Curve" msgstr "Curva de Hilbert" @@ -13494,26 +13561,28 @@ msgstr "" msgid "Top surface fill order" msgstr "Ordem de preenchimento da superfície superior" +# AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direção em que as superfícies superiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n" -"Para fora começa no centro da superfície, de modo que qualquer excesso de material seja empurrado em direção à borda, onde é menos visível. Para dentro começa na borda e termina com as curvas fechadas no centro.\n" -"O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção." +"Direção em que as superfícies superiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Espiral interna, Cordas Arquimedeanas, Espiral de Octagrama).\n" +"Para Fora começa no centro da superfície, de modo que o material excedente é empurrado para a borda, onde fica menos visível. Para Dentro começa na borda e termina com as curvas fechadas do centro.\n" +"Padrão usa a ordenação pelo caminho mais curto, que pode seguir em qualquer uma das direções." msgid "Bottom surface fill order" msgstr "Ordem de preenchimento da superfície inferior" +# AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Direção em que as superfícies inferiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n" -"Para dentro começa cada superfície com as curvas externas mais largas, o que melhora a aderência da primeira camada em mesas onde as curvas fechadas no centro podem não aderir. Para fora começa no centro, empurrando qualquer excesso de material em direção à borda.\n" -"O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção." +"Direção em que as superfícies inferiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Espiral interna, Cordas Arquimedeanas, Espiral de Octagrama).\n" +"Para Dentro começa cada superfície pelas curvas externas mais amplas, o que melhora a adesão da primeira camada em mesas nas quais as curvas fechadas do centro podem não grudar. Para Fora começa no centro, empurrando o material excedente para a borda.\n" +"Padrão usa a ordenação pelo caminho mais curto, que pode seguir em qualquer uma das direções." msgid "Internal solid infill pattern" msgstr "Padrão de preenchimento sólido interno" @@ -13612,6 +13681,14 @@ msgstr "Anti-horário" msgid "Clockwise" msgstr "Horário" +# AI Translated +msgid "Distance to rod" +msgstr "Distância até a haste" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Distância horizontal da ponta do bico até a borda mais distante da haste. Usada para evitar colisões na impressão por objeto." + msgid "Height to rod" msgstr "Altura até a haste" @@ -15735,6 +15812,20 @@ msgstr "Detectar paredes salientes" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Isso detecta a porcentagem relativa de saliência em relação a largura do perímetro e usa uma velocidade diferente de impressão. Para saliências 100%%, a velocidade de ponte é usada." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Imprimir por último as paredes sem suporte" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Voltas de parede que ficam inteiramente no ar só são impressas quando algo pode sustentá-las:\n" +"elas são extrudadas depois das demais paredes da sua ilha, da mais interna para fora, seja qual for a ordem das paredes.\n" +"Uma volta que somente as pontes desta camada conseguem ancorar aguarda até que essas pontes sejam impressas, enquanto uma volta que corre ao lado de uma parede apoiada mantém seu lugar antes do preenchimento, que precisa dela como ancoragem." + msgid "Outer walls" msgstr "Paredes externas" @@ -16161,6 +16252,39 @@ msgstr "Limpeza em voltas" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Para minimizar a visibilidade da costura em uma extrusão de volta fechada, é executado um pequeno movimento para dentro antes que a extrusora saia da volta." +# AI Translated +msgid "Wipe inward" +msgstr "Limpeza para dentro" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Aplica-se apenas às paredes externas, incluindo os contornos dos furos. Durante a limpeza, move o bico quente em direção às paredes internas já impressas, para reduzir o reaquecimento do plástico recém-depositado e as marcas de costura.\n" +"\n" +"Especialmente útil em alturas de camada abaixo de 0,1 mm, nas quais as marcas de limpeza ficam mais visíveis.\n" +"\n" +"Usa a limpeza normal se nenhuma parede interna adjacente já tiver sido impressa (áreas de parede única ou ordem de paredes Exterior/Interior) ou se nenhum caminho apoiado para dentro puder ser encontrado, por exemplo em cantos fechados ou em falhas da costura." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Distância de limpeza para dentro" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Distância pela qual o caminho de limpeza é deslocado para longe do perímetro externo, indicada em milímetros ou como porcentagem da largura de extrusão real da parede externa.\n" +"\n" +"Por exemplo, 50% desloca o caminho pela metade da largura da parede externa. O deslocamento efetivo é limitado tanto pela largura real da parede externa quanto pelo espaço disponível até a parede adjacente, de modo que valores acima de 100% ou uma distância absoluta equivalente não têm efeito adicional. Defina 0 para desativar o deslocamento." + msgid "Wipe before external loop" msgstr "Limpeza antes da volta externa" @@ -16418,8 +16542,9 @@ msgstr "Pega a nova ferramenta sem esperar que ela atinja a temperatura de impre msgid "No sparse layers (beta)" msgstr "Sem camadas esparsas (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Se ativado, a torre de purga não será impressa em camadas sem troca de ferramenta. Em camadas com uma troca de ferramenta, a extrusora deslocará para baixo para imprimir a torre de purga. O usuário é responsável por garantir que não haja colisão com a impressão." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Se ativado, a torre de purga não será impressa nas camadas sem mudanças de ferramenta. Nas camadas com mudança de ferramenta, a extrusora descerá para imprimir a torre de purga, de modo que a torre fica abaixo do modelo e a cabeça da ferramenta precisa descer até ela. Disposições em que isso colidiria com um objeto já impresso são rejeitadas. Não tem efeito com o timelapse suave nem com a detecção de aglomeração no bico, que precisam de uma torre em todas as camadas." msgid "Prime all printing extruders" msgstr "Preparar todas as extrusoras de impressão" @@ -16442,6 +16567,34 @@ msgstr "" msgid "Cyclic" msgstr "Cíclico" +# AI Translated +msgid "Cyclic order" +msgstr "Ordem cíclica" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Sequência de filamentos personalizada usada pela ordenação cíclica de mudanças de ferramenta, como números de filamento separados por vírgulas (p. ex. \"3,2,1,4\").\n" +"Cada camada imprime seus filamentos seguindo esta sequência; os filamentos não listados são impressos por último, em ordem crescente.\n" +"Deixe em branco para percorrer os filamentos em ordem crescente." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Aplicar a ordem cíclica à primeira camada" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Aplica a ordem cíclica de mudanças de ferramenta também à primeira camada.\n" +"Por padrão isso fica desativado, porque a primeira camada é, em vez disso, ordenada para a melhor adesão à mesa: os filamentos que imprimem detalhes pequenos e frágeis da primeira camada são impressos por último, de modo que as mudanças de ferramenta e os deslocamentos seguintes têm menos chance de soltar essas partes fracamente ancoradas. Essa ordem da primeira camada também respeita uma sequência de filamentos personalizada para a primeira camada, quando definida. O benefício da ordem cíclica (as mudanças de ferramenta extras dão a cada camada mais tempo para esfriar) não se aplica à primeira camada, que é impressa devagar e quente para favorecer a adesão.\n" +"Ative isto apenas se você precisar exatamente da mesma sequência de ferramentas em todas as camadas, inclusive a primeira, ao custo dessa otimização de adesão." + msgid "Slice gap closing radius" msgstr "Raio de fechamento de vãos de fatiamento" @@ -16451,9 +16604,6 @@ msgstr "Frestas menores que 2x o vão de fatiamento serão preenchidas durante o msgid "Slicing Mode" msgstr "Modo de Fatiamento" -msgid "Other" -msgstr "Outro" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Usar \"Par-impar\" para modelos de avião 3DLabPrint. Use \"Fechar buracos\" para fechar todos os buracos no modelo." @@ -17421,6 +17571,14 @@ msgstr "Sem verificação" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Não execute nenhuma verificação de validade, como a verificação de conflitos de caminho do G-code." +# AI Translated +msgid "Strict mode" +msgstr "Modo estrito" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Sai com código diferente de zero quando o fatiamento gera um aviso não crítico que, de outro modo, seria apenas registrado, como um modelo que precisa de suporte enquanto o suporte está desativado. Use isto em CI ou em pipelines automatizadas que nunca devem entregar um fatiamento sutilmente defeituoso. Cada um desses avisos também é listado com uma classe estável no array `warnings` do result.json, que é gravado apenas no Linux. Não pode ser combinado com --no-check, que ignora a verificação de suporte." + msgid "Normative check" msgstr "Verificação normativa" @@ -17433,11 +17591,28 @@ msgstr "Emitir Informações do Modelo" msgid "This outputs the model’s information." msgstr "Isso emite as informações do modelo." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Inspecionar malha (JSON para stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Imprime no stdout um resumo JSON de cada objeto carregado e então sai: suas caixas delimitadoras e as faces do fecho convexo sobre as quais ele pode ser apoiado, com suas normais, áreas e centros. Essas são as faces entre as quais as opções --ground-* escolhem. Alternativa legível por máquina ao --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Inspecionar pintura (JSON para stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Imprime um resumo JSON estruturado de cada camada pintada (suportes, costura, cor MMU, textura difusa) já armazenada no modelo carregado — contagem de facetas, área de superfície e caixa delimitadora local à malha por estado — e então sai. Alternativa legível por máquina a abrir as ferramentas de pintura na interface." + msgid "Export Settings" msgstr "Exportar Configurações" -msgid "This exports settings to a file." -msgstr "Isso exporta configurações para um arquivo." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Isto exporta as configurações para um arquivo. Use - para gravá-las no stdout." msgid "Send progress to pipe" msgstr "Enviar o progresso para a fila" @@ -17493,6 +17668,30 @@ msgstr "Rotacionar ao redor de Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Ângulo de rotação ao redor do Eixo Y em graus." +# AI Translated +msgid "Ground largest face" +msgstr "Apoiar na maior face" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoia cada objeto na maior face do seu fecho convexo e o solta sobre a mesa. Entre faces de mesmo tamanho, mantém-se a que já está voltada para baixo. Objetos sem uma face grande o bastante para se apoiar são deixados como estão. As transformações são aplicadas na ordem da linha de comando, portanto rotações indicadas antes desta opção são respeitadas. --orient 1 é executado depois de todas as transformações e substitui a orientação." + +# AI Translated +msgid "Ground face by normal" +msgstr "Apoiar na face pela normal" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoia cada objeto na face do fecho convexo cuja normal externa é a mais próxima da direção NX,NY,NZ e o solta sobre a mesa. A direção está em coordenadas do objeto, que incluem as rotações indicadas antes desta opção e coincidem com os eixos da mesa, a menos que o arquivo de entrada gire o objeto. Por exemplo, 1,0,0 apoia o objeto sobre o lado +X. --orient 1 é executado depois de todas as transformações e substitui a orientação." + +# AI Translated +msgid "Ground face at point" +msgstr "Apoiar na face em um ponto" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Apoia cada objeto na face do fecho convexo que contém o ponto X,Y,Z e o solta sobre a mesa. O ponto está em coordenadas do objeto, que incluem as rotações indicadas antes desta opção; --inspect-mesh informa os centros das faces nessas coordenadas. Objetos sem uma face assim são deixados como estão, e a execução falha se nenhum objeto tiver uma. --orient 1 é executado depois de todas as transformações e substitui a orientação." + msgid "Scale the model by a float factor." msgstr "Escalar o modelo por um fator decimal." @@ -20531,14 +20730,17 @@ msgstr "Esta ação não pode ser desfeita. Continuar?" msgid "Skipping objects." msgstr "Ignorando objetos." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Proporção de Material" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Altura do Modelo" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Proporção" msgid "Select Filament" msgstr "Selecionar Filamento" @@ -20779,11 +20981,15 @@ msgstr "Secando-Aquecendo" msgid "Drying-Dehumidifying" msgstr "Secando-Desumidificando" -msgid " maximum drying temperature is " -msgstr " temperatura máxima de secagem é " +# AI Translated +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "A temperatura máxima de secagem de %s é %d°C." -msgid " minimum drying temperature is " -msgstr " temperatura mínima de secagem é " +# AI Translated +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "A temperatura mínima de secagem de %s é %d°C." msgid "This filament may not be completely dried." msgstr "Este filamento pode não estar completamente seco." @@ -21196,6 +21402,90 @@ msgstr "" "Evitar empenamento\n" "Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?" +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Left: " +#~ msgstr "Esquerda: " + +#~ msgid "Right: " +#~ msgstr "Direita: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "A temperatura máxima não pode exceder " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "A temperatura mínima não pode ser menor do que " + +#~ msgid "up to" +#~ msgstr "até" + +#~ msgid "above" +#~ msgstr "acima" + +#~ msgid "from" +#~ msgstr "de" + +#~ msgid "Configuration package: " +#~ msgstr "Pacote de configuração: " + +#~ msgid " updated to " +#~ msgstr " atualizado para " + +#~ msgid "Grouping error: " +#~ msgstr "Erro de agrupamento: " + +#~ msgid " can not be placed in the " +#~ msgstr " não pode ser colocado na " + +#~ msgid " maximum drying temperature is " +#~ msgstr " temperatura máxima de secagem é " + +#~ msgid " minimum drying temperature is " +#~ msgstr " temperatura mínima de secagem é " + +# AI Translated +#~ msgid "needs" +#~ msgstr "precisa de" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "não ativado" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "material não publicado" + +#~ msgid "Select the language" +#~ msgstr "Selecione o idioma" + +#~ msgid "Select plugin" +#~ msgstr "Selecionar plugin" + +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direção em que as superfícies superiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n" +#~ "Para fora começa no centro da superfície, de modo que qualquer excesso de material seja empurrado em direção à borda, onde é menos visível. Para dentro começa na borda e termina com as curvas fechadas no centro.\n" +#~ "O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção." + +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Direção em que as superfícies inferiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n" +#~ "Para dentro começa cada superfície com as curvas externas mais largas, o que melhora a aderência da primeira camada em mesas onde as curvas fechadas no centro podem não aderir. Para fora começa no centro, empurrando qualquer excesso de material em direção à borda.\n" +#~ "O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Se ativado, a torre de purga não será impressa em camadas sem troca de ferramenta. Em camadas com uma troca de ferramenta, a extrusora deslocará para baixo para imprimir a torre de purga. O usuário é responsável por garantir que não haja colisão com a impressão." + +#~ msgid "This exports settings to a file." +#~ msgstr "Isso exporta configurações para um arquivo." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "A visualização ao vivo nativa do Wayland requer o receptor de vídeo GTK do GStreamer. Instale o plugin gtksink para GStreamer e reinicie o OrcaSlicer." diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 972f853df4..97c1830426 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg \n" @@ -2431,13 +2431,6 @@ msgstr "Доступно обновление. Проверьте меню па msgid "%s has been removed." msgstr "%s был удалён." - -msgid "Select the language" -msgstr "Выбор языка" - -msgid "Language" -msgstr "Язык" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "Не удалось переключить язык на %s." @@ -3696,11 +3689,15 @@ msgstr "Втянуть текущий материал на Filament Track Switc msgid "Switch track at Filament Track Switch" msgstr "Переключить подачу на Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "Температура не должна превышать " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Температура не должна превышать %d" -msgid "The minmum temperature should not be less than " -msgstr "Температура не должна быть ниже " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Температура не должна быть ниже %d" msgid "Type to filter..." msgstr "Поиск..." @@ -4577,6 +4574,15 @@ msgstr "" "Не удалось скопировать временный G-код в целевое расположение. Возможно, накопитель защищён от записи?\n" "Сообщение об ошибке: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Не удалось скопировать временный G-код в выходной G-код.\n" +"Сообщение об ошибке: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Не удалось скопировать временный G-код в целевое расположение. Возможно, проблема с устройством хранения, попробуйте выполнить экспорт снова или использовать другое устройство. Повреждённый выходной файл G-кода находится в %1%.tmp." @@ -5334,10 +5340,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Значение %s выходит за пределы допустимого диапазона. Допустимый диапазон - от %d до %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Имелось ввиду %s%% или %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Имелось ввиду %s%% или %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5362,18 +5369,15 @@ msgstr "Недопустимый формат. Ожидаемый векторн msgid "System agents" msgstr "Системные агенты" -msgid "No plugin selected" -msgstr "Плагины не выбраны" - msgid "Add plugin" msgstr "Добавить плагин" -msgid "Select plugin" -msgstr "Выбрать плагин" - msgid "Remove plugin" msgstr "Удалить плагин" +msgid "No plugin selected" +msgstr "Плагины не выбраны" + msgid "Configure" msgstr "Настроить" @@ -5656,14 +5660,20 @@ msgstr "Оптимизировать" msgid "Regroup filament" msgstr "Изменить" -msgid "up to" -msgstr "до" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "до %1% мм" -msgid "above" -msgstr "после" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "выше %1% мм" -msgid "from" -msgstr "с" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "от %1% до %2% мм" msgid "Usage" msgstr "Расход" @@ -6025,7 +6035,7 @@ msgstr "Объём:" msgid "Size:" msgstr "Размер:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "В G-коде на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, разместите конфликтующие модели дальше друг от друга (%s <-> %s)." @@ -6372,11 +6382,13 @@ msgstr "Сохранить проект как" msgid "Save current project as" msgstr "Сохранить текущий проект как" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Опубликовать 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Экспорт файла 3MF со встроенными выбранными настройками" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7662,6 +7674,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Снизу" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Эта настройка не указывает тип возможности плагина." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Эта настройка указывает нераспознанный тип возможности плагина: " + msgid "Plugin Selection" msgstr "Выбор плагинов" @@ -8212,11 +8232,13 @@ msgstr "Во избежание повреждения принтера убед msgid "Customized Preset" msgstr "Пользовательский профиль" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Некоторые опубликованные настройки не удалось применить:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Некоторые слоты материалов были изменены:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Имена компонентов внутри файла STEP не в формате UTF-8." @@ -8630,13 +8652,17 @@ msgstr "Сохранить нарезанный файл как:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s отправлен в память принтера и может быть просмотрен на нём." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Опубликовать файл 3MF как:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Не удалось экспортировать опубликованный файл 3MF.\n" +"Проверьте, доступна ли папка в сети и не открыт ли файл в других программах." msgid "Publish" msgstr "Опубликовать" @@ -8846,7 +8872,6 @@ msgstr "Хотите продолжить?" msgid "Language selection" msgstr "Выбор языка" - msgid "Asia-Pacific" msgstr "Азиатско-Тихоокеанский" @@ -8952,6 +8977,9 @@ msgstr "Расположение: " msgid "General" msgstr "Общие" +msgid "Language" +msgstr "Язык" + msgid "Metric" msgstr "Метрическая СИ" @@ -9392,9 +9420,6 @@ msgstr "Затемнять слои, находящиеся ниже текущ msgid "Dimmed layer brightness" msgstr "Яркость затемнённых слоёв" -msgid "%" -msgstr "%" - msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" "99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option." @@ -9800,63 +9825,80 @@ msgstr "Отправка данных" msgid "Jump to webpage" msgstr "Перейти на страницу" +# AI Translated msgid "Material" -msgstr "" +msgstr "Материал" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Смешанный материал" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Некоторые смешанные материалы зависят от материалов, которые не будут опубликованы:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Материал %d (смешанный)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% требует %2%, но он не включён." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% требует %2%, но его материал не будет опубликован." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Чтобы опубликовать смешанный материал, включите каждый используемый им материал и выберите «Полная публикация» либо выполните требование «Тип»." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Всё равно опубликовать" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Опубликовать 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Выберите, какие настройки будут опубликованы в файле 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki по публикации 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Видеоруководство по публикации 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Смешанный материал — публикуется целиком, когда выше выбрано «Включить»" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Опубликовать этот смешанный материал и включить + полностью опубликовать его составляющие материалы" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Опубликовать этот слот материала в файле 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Полная публикация" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Встроить материал этого слота целиком в файл 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Фильтровать невыбранные" #, c-format, boost-format msgid "Save %s as" @@ -9875,6 +9917,10 @@ msgstr "Копирует в этот профиль все значения, у msgid "Detach from parent" msgstr "Сделать независимым" +# AI Translated +msgid "Save without parent" +msgstr "Сохранить без родителя" + # AI Translated msgid "Unique preset" msgstr "Независимый профиль" @@ -10551,9 +10597,17 @@ msgstr "Для обнаружения налипаний на сопле тре msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Включение «Точной высоты по Z» совместно с черновой башней может привести к ошибкам нарезки. Продолжить?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Для плавного таймлапса требуется черновая башня на каждом слое, что несовместимо с параметром «Без разреженных слоёв». Параметр «Без разреженных слоёв» отключён." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Для сглаженного таймлапса требуется черновая башня, без неё на модели могут возникнуть дефекты. Включить черновую башню?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "Параметр «Без разреженных слоёв» несовместим с плавным таймлапсом, которому требуется черновая башня на каждом слое. Таймлапс переключён в обычный режим." + msgid "Still print by object?" msgstr "Продолжить печать по очереди?" @@ -10958,9 +11012,6 @@ msgstr "Совместимые настройки" msgid "Printable space" msgstr "Область печати" -msgid "Printer Agent" -msgstr "Сетевой агент" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Реализация сетевого агента для обмена информацией с принтером. Доступные реализации определяются при запуске." @@ -11363,12 +11414,6 @@ msgstr "Количество экструдеров" msgid "Capabilities" msgstr "Возможности" -msgid "Left: " -msgstr "Левый: " - -msgid "Right: " -msgstr "Правый: " - msgid "Show all presets (including incompatible)" msgstr "Показать все профили (включая несовместимые)" @@ -12203,15 +12248,22 @@ msgstr "Восстановление отменено" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Не удалось скопировать файл %1% в %2%: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Загрузка новых профилей производителей: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Пакет профилей: %1% обновлён до %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Не удалось загрузить профили производителей: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Перед обновлением профилей необходимо проверить несохранённые изменения." -msgid "Configuration package: " -msgstr "Пакет профилей: " - -msgid " updated to " -msgstr " обновлён до " - msgid "Open G-code file:" msgstr "Выберите G-код файл:" @@ -12271,12 +12323,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping поддерживается только в Klipper, RepRapFirmware и Marlin 2." -msgid "Grouping error: " -msgstr "Ошибка группировки: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Ошибка группировки: %1% нельзя разместить в левом сопле" -# filament_type + <перевод> + extruder_name -msgid " can not be placed in the " -msgstr " нельзя заправить в " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Ошибка группировки: %1% нельзя разместить в правом сопле" msgid "Group error in manual mode. Please check nozzle count or regroup." msgstr "Ошибка группировки в ручном режиме. Проверьте количество сопел или измените группировку." @@ -12389,6 +12444,10 @@ msgstr "%1% находится слишком близко к другим, чт msgid "%1% is too tall, and collisions will be caused." msgstr "Модель «%1%» слишком высокая, что приведёт к столкновению механики." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Взаимное расположение модели и черновой башни не отвечает требованиям функции «Без разреженных слоёв». Измените их взаимное расположение, уменьшите высоту модели или отключите параметр «Без разреженных слоёв»." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " находится слишком близко к области исключения, что может привести к столкновению при печати." @@ -12740,6 +12799,9 @@ msgstr "Сжатие G-кода перед отправкой" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Рекомендуется для принтеров, поддерживающих печать из архивов 3MF. Файлы печати будут отправляться с расширением \".gcode.3mf\"." +msgid "Printer Agent" +msgstr "Сетевой агент" + msgid "Select the network agent implementation for printer communication." msgstr "Реализация сетевого агента для обмена информацией с принтером." @@ -13846,6 +13908,10 @@ msgstr "Ровный зигзаг" msgid "Concentric" msgstr "Эквидистанты" +# AI Translated +msgid "Spiral Inset" +msgstr "Спиральный отступ" + msgid "Hilbert Curve" msgstr "Кривая Гильберта" @@ -13939,28 +14005,28 @@ msgstr "" msgid "Top surface fill order" msgstr "Направление печати" +# AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Направление печати спирали/эквидистант на верхних поверхностях. Позволяет управляемо распределять избыток материала.\n" -"• По умолчанию: использовать кратчайший путь.\n" -"• Наружу: от центра шаблона к краю модели.\n" -"• Внутрь: от края модели к центру шаблона." +"Направление заполнения верхних поверхностей при использовании шаблона, идущего от центра (Эквидистанты, Спиральный отступ, Спираль Архимеда, Спиральная октаграмма).\n" +"Наружу начинает от центра поверхности, поэтому излишек материала вытесняется к краю, где он менее заметен. Внутрь начинает от края и заканчивается тесными изгибами в центре.\n" +"По умолчанию используется порядок по кратчайшему пути, который может идти в любом направлении." msgid "Bottom surface fill order" msgstr "Направление печати" +# AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Направление печати спирали/эквидистант на нижних поверхностях. Позволяет управляемо распределять избыток материала.\n" -"• По умолчанию: использовать кратчайший путь.\n" -"• Наружу: от центра шаблона к краю модели.\n" -"• Внутрь: от края модели к центру шаблона." +"Направление заполнения нижних поверхностей при использовании шаблона, идущего от центра (Эквидистанты, Спиральный отступ, Спираль Архимеда, Спиральная октаграмма).\n" +"Внутрь начинает каждую поверхность с более широких внешних изгибов, что улучшает адгезию первого слоя на столах, к которым тесные изгибы в центре могут не прилипать. Наружу начинает от центра, вытесняя излишек материала к краю.\n" +"По умолчанию используется порядок по кратчайшему пути, который может идти в любом направлении." msgid "Internal solid infill pattern" msgstr "Шаблон сплошного заполнения" @@ -14078,6 +14144,14 @@ msgstr "Против часовой стрелки" msgid "Clockwise" msgstr "По часовой стрелке" +# AI Translated +msgid "Distance to rod" +msgstr "Расстояние до штанги" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Расстояние по горизонтали от кончика сопла до дальнего края штанги. Используется для предотвращения столкновений при печати моделей по очереди." + msgid "Height to rod" msgstr "Высота до вала" @@ -16454,6 +16528,20 @@ msgstr "Обнаруживать нависающие периметры" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Использовать разную скорость печати в зависимости от выноса линии относительно её опоры. Для нависаний без опоры используется скорость печати мостов." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Печатать неподдерживаемые периметры последними" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Контуры периметров, полностью висящие в воздухе, печатаются только тогда, когда их есть чему удержать:\n" +"они выдавливаются после остальных периметров своего острова, начиная с самого внутреннего, независимо от порядка периметров.\n" +"Контур, который могут закрепить только мосты этого слоя, ждёт, пока эти мосты будут напечатаны, а контур, идущий вдоль опирающегося периметра, сохраняет своё место перед заполнением, которому он нужен как якорь." + # В секции "Материал для линий" msgid "Outer walls" msgstr "Внешние периметры" @@ -16964,6 +17052,39 @@ msgstr "" "\n" "Примечание: при отключении настройки зазор не будет заполняться остатками материала, что также может уменьшить заметность шва в сочетании с быстрым переходом к внутренним периметрам." +# AI Translated +msgid "Wipe inward" +msgstr "Очистка внутрь" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Применяется только к внешним периметрам, включая контуры отверстий. Во время очистки перемещает горячее сопло к уже напечатанным внутренним периметрам, чтобы уменьшить повторный нагрев только что напечатанного пластика и следы шва.\n" +"\n" +"Особенно полезно при высоте слоя менее 0,1 мм, где следы очистки заметнее.\n" +"\n" +"Использует обычную очистку, если рядом нет уже напечатанного внутреннего периметра (области с одним периметром или порядок периметров «Снаружи внутрь») либо если не удаётся найти опирающийся путь внутрь, например в тесных углах или разрывах шва." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Расстояние очистки внутрь" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Расстояние, на которое путь очистки смещается от внешнего периметра, задаётся в миллиметрах или в процентах от фактической ширины линии внешнего периметра.\n" +"\n" +"Например, 50% смещает путь на половину ширины внешнего периметра. Фактическое смещение ограничено как реальной шириной внешнего периметра, так и доступным промежутком до соседнего периметра, поэтому значения выше 100% или эквивалентное абсолютное расстояние не дают дополнительного эффекта. Задайте 0, чтобы отключить смещение." + # Подворот начала линии на шве, упреждающая подача перед внешним периметром, # заглубление подачи ..., смещённая подача msgid "Wipe before external loop" @@ -17255,9 +17376,9 @@ msgstr "Забирает новый инструмент, не дожидаяс msgid "No sparse layers (beta)" msgstr "Без разреженных слоёв (beta)" -# Requires refactoring -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Если включено, черновая башня не будет печататься на слоях, где не происходит смена материала/инструмента. На слоях, где происходит смена материала, экструдер будет опускаться вниз до верхней части черновой башни, чтобы напечатать её. Слайсер не проверяет столкновения при перемещении, и пользователь сам несет ответственность за правильную настройку всех соответствующих параметров." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Если включено, черновая башня не будет печататься на слоях без смены инструмента. На слоях со сменой инструмента экструдер опустится вниз, чтобы напечатать черновую башню, поэтому башня оказывается ниже модели, и печатающей голове приходится тянуться к ней вниз. Компоновки, при которых это привело бы к столкновению с уже напечатанной моделью, отклоняются. Не действует при плавном таймлапсе и при обнаружении налипаний, которым нужна башня на каждом слое." msgid "Prime all printing extruders" msgstr "Подготовка всех печатающих экструдеров" @@ -17282,6 +17403,34 @@ msgstr "" msgid "Cyclic" msgstr "Цикличный" +# AI Translated +msgid "Cyclic order" +msgstr "Циклический порядок" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Пользовательская последовательность материалов, используемая циклическим порядком смены инструмента, в виде номеров материалов через запятую (например, «3,2,1,4»).\n" +"Каждый слой печатает свои материалы в этой последовательности; не указанные материалы печатаются последними, по возрастанию.\n" +"Оставьте пустым, чтобы перебирать материалы по возрастанию." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Применять циклический порядок к первому слою" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Применяет циклический порядок смены инструмента и к первому слою.\n" +"По умолчанию отключено, поскольку первый слой вместо этого упорядочивается для наилучшей адгезии к столу: материалы, которыми печатаются мелкие хрупкие элементы первого слоя, печатаются последними, поэтому последующие смены инструмента и перемещения реже отрывают эти слабо закреплённые части. Этот порядок первого слоя учитывает также заданную пользователем последовательность материалов для первого слоя, если она указана. Преимущество циклического порядка (дополнительные смены инструмента дают каждому слою больше времени на остывание) к первому слою не относится, так как он печатается медленно и горячим ради адгезии.\n" +"Включайте это, только если вам нужна в точности одна и та же последовательность инструментов на каждом слое, включая первый, ценой такой оптимизации адгезии." + msgid "Slice gap closing radius" msgstr "Радиус закрытия зазоров полигональной сетки" @@ -17292,9 +17441,6 @@ msgstr "Часто в импортируемых в программу моде msgid "Slicing Mode" msgstr "Режим нарезки" -msgid "Other" -msgstr "Прочее" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "" "Режим нарезки «Чётный-нечётный» применяется для моделей с намеренно нарушенной целостностью. Например, для моделей самолётов с ресурса 3DLabPrint.\n" @@ -18398,6 +18544,14 @@ msgstr "Без проверки" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Не запускать никакие проверки валидности, такие как проверка на конфликт путей в G-коде." +# AI Translated +msgid "Strict mode" +msgstr "Строгий режим" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Завершает работу с ненулевым кодом, если при нарезке возникает некритическое предупреждение, которое иначе только записывается в журнал, например модель, которой нужны поддержки, когда поддержки отключены. Используйте это в CI или скриптовых конвейерах, которые никогда не должны выдавать незаметно испорченную нарезку. Каждое такое предупреждение также перечисляется с устойчивым классом в массиве `warnings` файла result.json, который создаётся только в Linux. Нельзя сочетать с --no-check, который пропускает проверку поддержек." + msgid "Normative check" msgstr "Нормативная проверка" @@ -18412,12 +18566,29 @@ msgstr "Информация о модели" msgid "This outputs the model’s information." msgstr "Вывод информации о модели." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Проверить полисетку (JSON в stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Выводит в stdout сводку JSON по каждой загруженной модели и завершает работу: её ограничивающие параллелепипеды и грани выпуклой оболочки, на которые её можно положить, с их нормалями, площадями и центрами. Именно из этих граней выбирают параметры --ground-*. Машиночитаемая альтернатива --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Проверить покраску (JSON в stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Выводит структурированную сводку JSON по каждому окрашенному слою (поддержки, шов, цвет MMU, нечёткая оболочка), уже сохранённому в загруженной модели, — количество граней, площадь поверхности и ограничивающий параллелепипед в координатах полисетки для каждого состояния — и завершает работу. Машиночитаемая альтернатива открытию инструментов покраски в интерфейсе." + # ??? msgid "Export Settings" msgstr "Экспорт настроек" -msgid "This exports settings to a file." -msgstr "Экспорт настроек в файл." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Экспортирует настройки в файл. Используйте -, чтобы записать их в stdout." # командная строка? нужен ли пеевод? msgid "Send progress to pipe" @@ -18477,6 +18648,30 @@ msgstr "Поворот вокруг оси Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Угол поворота вокруг оси Y в градусах." +# AI Translated +msgid "Ground largest face" +msgstr "Положить на наибольшую грань" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладёт каждую модель на наибольшую грань её выпуклой оболочки и опускает на стол. Из одинаковых по площади граней сохраняется та, что уже обращена вниз. Модели без достаточно большой грани для опоры остаются без изменений. Преобразования выполняются в порядке командной строки, поэтому повороты, заданные до этого параметра, учитываются. --orient 1 выполняется после всех преобразований и заменяет ориентацию." + +# AI Translated +msgid "Ground face by normal" +msgstr "Положить на грань по нормали" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладёт каждую модель на ту грань выпуклой оболочки, внешняя нормаль которой ближе всего к направлению NX,NY,NZ, и опускает её на стол. Направление задаётся в координатах модели, которые включают повороты, указанные до этого параметра, и совпадают с осями стола, если входной файл не поворачивает модель. Например, 1,0,0 ставит модель на сторону +X. --orient 1 выполняется после всех преобразований и заменяет ориентацию." + +# AI Translated +msgid "Ground face at point" +msgstr "Положить на грань в точке" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладёт каждую модель на ту грань выпуклой оболочки, которая содержит точку X,Y,Z, и опускает её на стол. Точка задаётся в координатах модели, которые включают повороты, указанные до этого параметра; --inspect-mesh выводит центры граней именно в них. Модели без такой грани остаются без изменений, а запуск завершается ошибкой, если такой грани нет ни у одной модели. --orient 1 выполняется после всех преобразований и заменяет ориентацию." + msgid "Scale the model by a float factor." msgstr "Масштабировать модель с помощью коэффициента." @@ -21611,14 +21806,17 @@ msgstr "Это действие необратимо. Продолжить?" msgid "Skipping objects." msgstr "Исключение объектов." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Доля материала" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Высота модели" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Доля" msgid "Select Filament" msgstr "Выбрать материал" @@ -21868,11 +22066,15 @@ msgstr "Сушка — нагрев" msgid "Drying-Dehumidifying" msgstr "Сушка — вывод влаги" -msgid " maximum drying temperature is " -msgstr " максимальная температура сушки — " +# AI Translated +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Максимальная температура сушки для %s — %d°C." -msgid " minimum drying temperature is " -msgstr " минимальная температура сушки — " +# AI Translated +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Минимальная температура сушки для %s — %d°C." msgid "This filament may not be completely dried." msgstr "Сушка этого материала может не быть эффективной." @@ -22297,6 +22499,94 @@ msgstr "" "Предотвращение коробления материала\n" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?" +#~ msgid "Other" +#~ msgstr "Прочее" + +#~ msgid "Left: " +#~ msgstr "Левый: " + +#~ msgid "Right: " +#~ msgstr "Правый: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Температура не должна превышать " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Температура не должна быть ниже " + +#~ msgid "up to" +#~ msgstr "до" + +#~ msgid "above" +#~ msgstr "после" + +#~ msgid "from" +#~ msgstr "с" + +#~ msgid "Configuration package: " +#~ msgstr "Пакет профилей: " + +#~ msgid " updated to " +#~ msgstr " обновлён до " + +#~ msgid "Grouping error: " +#~ msgstr "Ошибка группировки: " + +# filament_type + <перевод> + extruder_name +#~ msgid " can not be placed in the " +#~ msgstr " нельзя заправить в " + +#~ msgid " maximum drying temperature is " +#~ msgstr " максимальная температура сушки — " + +#~ msgid " minimum drying temperature is " +#~ msgstr " минимальная температура сушки — " + +# AI Translated +#~ msgid "needs" +#~ msgstr "требует" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "не включён" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "материал не опубликован" + +#~ msgid "Select the language" +#~ msgstr "Выбор языка" + +#~ msgid "Select plugin" +#~ msgstr "Выбрать плагин" + +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Направление печати спирали/эквидистант на верхних поверхностях. Позволяет управляемо распределять избыток материала.\n" +#~ "• По умолчанию: использовать кратчайший путь.\n" +#~ "• Наружу: от центра шаблона к краю модели.\n" +#~ "• Внутрь: от края модели к центру шаблона." + +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Направление печати спирали/эквидистант на нижних поверхностях. Позволяет управляемо распределять избыток материала.\n" +#~ "• По умолчанию: использовать кратчайший путь.\n" +#~ "• Наружу: от центра шаблона к краю модели.\n" +#~ "• Внутрь: от края модели к центру шаблона." + +# Requires refactoring +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Если включено, черновая башня не будет печататься на слоях, где не происходит смена материала/инструмента. На слоях, где происходит смена материала, экструдер будет опускаться вниз до верхней части черновой башни, чтобы напечатать её. Слайсер не проверяет столкновения при перемещении, и пользователь сам несет ответственность за правильную настройку всех соответствующих параметров." + +#~ msgid "This exports settings to a file." +#~ msgstr "Экспорт настроек в файл." + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Для нативного отображения трансляции в Wayland требуется gtksink (плагин для GStreamer). Установите необходимый пакет плагинов и перезапустите OrcaSlicer." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 472b105744..ce0d5f5034 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2767,13 +2767,6 @@ msgstr "Det finns en uppdatering tillgänglig. Öppna dialogrutan för förinst msgid "%s has been removed." msgstr "%s har tagits bort." - -msgid "Select the language" -msgstr "Välj språk" - -msgid "Language" -msgstr "Språk" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -4104,12 +4097,14 @@ msgid "Switch track at Filament Track Switch" msgstr "Byt spår vid Filament Track Switch" # AI Translated -msgid "The maximum temperature cannot exceed " -msgstr "Maxtemperaturen får inte överstiga " +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Maxtemperaturen får inte överstiga %d" # AI Translated -msgid "The minmum temperature should not be less than " -msgstr "Minimitemperaturen bör inte vara lägre än " +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Minimitemperaturen bör inte vara lägre än %d" # AI Translated msgid "Type to filter..." @@ -5066,6 +5061,15 @@ msgstr "" "Det gick inte att kopiera den tillfälliga G-code-filen till utdatafilen. Kanske är SD-kortet skrivskyddat?\n" "Felmeddelande: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Kopieringen av den tillfälliga G-koden till utdata-G-koden misslyckades.\n" +"Felmeddelande: %1%" + # AI Translated #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." @@ -5904,10 +5908,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Värdet %s ligger utanför intervallet. Giltigt intervall är från %d till %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Det är %s%% eller %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Det är %s%% eller %s %s?" + +msgid "%" +msgstr "%" # AI Translated #, boost-format @@ -5938,22 +5943,18 @@ msgstr "Ogiltligt format. Förväntat vector format: \"%1%\"" msgid "System agents" msgstr "Systemagenter" -# AI Translated -msgid "No plugin selected" -msgstr "Ingen insticksmodul vald" - # AI Translated msgid "Add plugin" msgstr "Lägg till insticksmodul" -# AI Translated -msgid "Select plugin" -msgstr "Välj insticksmodul" - # AI Translated msgid "Remove plugin" msgstr "Ta bort insticksmodul" +# AI Translated +msgid "No plugin selected" +msgstr "Ingen insticksmodul vald" + # AI Translated msgid "Configure" msgstr "Konfigurera" @@ -6234,14 +6235,20 @@ msgstr "Ställ in på optimal" msgid "Regroup filament" msgstr "Gruppera om filament" -msgid "up to" -msgstr "upp till" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "upp till %1% mm" -msgid "above" -msgstr "över" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "över %1% mm" -msgid "from" -msgstr "från" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "från %1% till %2% mm" msgid "Usage" msgstr "Användning" @@ -6630,7 +6637,7 @@ msgid "Size:" msgstr "Storlek:" # AI Translated -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Konflikter mellan G-code-banor hittades på lager %d, Z = %.2lfmm. Placera de objekt som krockar längre ifrån varandra (%s <-> %s)." @@ -6966,11 +6973,13 @@ msgstr "Spara Projekt som" msgid "Save current project as" msgstr "Spara nuvarande projekt som" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Publicera 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Exportera en 3MF-fil med de valda inställningarna inbäddade" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Importera 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8360,6 +8369,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Bottenlager" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Den här inställningen anger ingen typ av insticksmodulsfunktion." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Den här inställningen anger en okänd typ av insticksmodulsfunktion: " + # AI Translated msgid "Plugin Selection" msgstr "Val av insticksmodul" @@ -8996,11 +9013,13 @@ msgstr "Bekräfta att G-koderna i dessa inställningar är säkra för att förh msgid "Customized Preset" msgstr "Anpassad inställning" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Vissa publicerade inställningar kunde inte tillämpas:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Vissa filamentplatser har ändrats:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Komponent namnet i STEP filen är inte UTF-8 format!" @@ -9438,13 +9457,17 @@ msgstr "Spara beredningen som:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Filen %s har skickats till skrivarens lagringsutrymme och kan visas på skrivaren." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Publicera 3MF-filen som:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Det gick inte att exportera den publicerade 3MF-filen.\n" +"Kontrollera om mappen finns online eller om andra program har filen öppen." msgid "Publish" msgstr "Publicera" @@ -9688,7 +9711,6 @@ msgstr "Fortsätta?" msgid "Language selection" msgstr "Språkval" - msgid "Asia-Pacific" msgstr "Asien-Stillahavsområdet" @@ -9808,6 +9830,9 @@ msgstr "Sökväg till aktuell instans: " msgid "General" msgstr "Allmän" +msgid "Language" +msgstr "Språk" + msgid "Metric" msgstr "Metrisk" @@ -10326,9 +10351,6 @@ msgstr "När du drar i lagerreglaget i den beredda förhandsgranskningen rendera msgid "Dimmed layer brightness" msgstr "Ljusstyrka för dämpade lager" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -10771,63 +10793,80 @@ msgstr "Laddar upp data" msgid "Jump to webpage" msgstr "Växla till hemsidan" +# AI Translated msgid "Material" -msgstr "" +msgstr "Material" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Blandat filament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Vissa blandade filament är beroende av filament som inte kommer att publiceras:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (blandat)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% behöver %2%, som inte är aktiverat." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% behöver %2%, vars material inte kommer att publiceras." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "För att publicera ett blandat filament, aktivera varje filament det använder och välj Fullständig publicering eller uppfyll dess Typ-krav." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Publicera ändå" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Publicera 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Välj vilka inställningar som ska publiceras i 3MF-filen" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki för Publicera 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Videoguide för Publicera 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Blandat filament - publiceras i sin helhet när \"Aktivera\" ovan är valt" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Publicera det här blandade filamentet och aktivera + publicera dess ingående filament fullständigt" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Publicera den här filamentplatsen i 3MF-filen" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Fullständig publicering" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Bädda in hela filamentet från den här platsen i 3MF-filen" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Filtrera ej valda" #, c-format, boost-format msgid "Save %s as" @@ -10847,6 +10886,10 @@ msgstr "Kopierar alla ärvda värden från den överordnade förinställningen t msgid "Detach from parent" msgstr "Koppla loss från överordnad" +# AI Translated +msgid "Save without parent" +msgstr "Spara utan överordnad" + # AI Translated msgid "Unique preset" msgstr "Unik förinställning" @@ -11624,9 +11667,17 @@ msgstr "Ett prime torn krävs för klumpdetektering. Utan prime torn kan modelle msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Att aktivera både exakt Z-höjd och rengöringstornet kan orsaka skärningsfel. Vill du fortfarande aktivera exakt Z-höjd?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Jämn timelapse kräver ett prime torn på varje lager, vilket inte fungerar ihop med \"Inga glesa lager\". \"Inga glesa lager\" har stängts av." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Prime tower krävs för Smooth timelapse-läge. Det kan bli fel på modellen utan prime tower. Vill du aktivera prime tower?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Inga glesa lager\" fungerar inte ihop med jämn timelapse, som kräver ett prime torn på varje lager. Timelapse har växlat till traditionellt läge." + msgid "Still print by object?" msgstr "Fortfarande utskrift per objekt?" @@ -12052,10 +12103,6 @@ msgstr "Kompatibla process profiler" msgid "Printable space" msgstr "Utskriftsbar yta" -# AI Translated -msgid "Printer Agent" -msgstr "Skrivaragent" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren. Tillgängliga agenter registreras vid start." @@ -12501,14 +12548,6 @@ msgstr "Antal extruders" msgid "Capabilities" msgstr "Förmågor" -# AI Translated -msgid "Left: " -msgstr "Vänster: " - -# AI Translated -msgid "Right: " -msgstr "Höger: " - msgid "Show all presets (including incompatible)" msgstr "Visa alla inställningar (inklusive inkompatibla)" @@ -13450,17 +13489,22 @@ msgstr "Reparation avbruten" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Kopierar fil %1% till %2% misslyckade: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Laddar ner nya leverantörsprofiler: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Konfigurationspaket: %1% uppdaterat till %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Det gick inte att ladda ner leverantörsprofiler: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Kontrollera ej sparade ändringar innan konfigureringen uppdateras." -# AI Translated -msgid "Configuration package: " -msgstr "Konfigurationspaket: " - -# AI Translated -msgid " updated to " -msgstr " uppdaterat till " - msgid "Open G-code file:" msgstr "Öppna G-kod fil:" @@ -13528,12 +13572,14 @@ msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping stöds endast av Klipper, RepRapFirmware och Marlin 2." # AI Translated -msgid "Grouping error: " -msgstr "Grupperingsfel: " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Grupperingsfel: %1% kan inte placeras i vänster nozzel" # AI Translated -msgid " can not be placed in the " -msgstr " kan inte placeras i " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Grupperingsfel: %1% kan inte placeras i höger nozzel" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -13648,6 +13694,10 @@ msgstr "%1% är för nära andra och kan orsaka kollisioner." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% är för hög, och kollisioner kommer att uppstå." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Modellens och prime tornets inbördes placering uppfyller inte kraven för funktionen \"Inga glesa lager\". Justera deras inbördes placering, sänk modellens höjd eller stäng av \"Inga glesa lager\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " är för nära undantagsområdet, det kan förekomma kollisioner vid utskrift." @@ -14050,6 +14100,10 @@ msgstr "Använd 3MF i stället för G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Aktivera detta om skrivaren tar emot en 3MF-fil som utskriftsjobb. När det är aktiverat skickar Orca Slicer den beredda filen som en .gcode.3mf i stället för en vanlig .gcode-fil." +# AI Translated +msgid "Printer Agent" +msgstr "Skrivaragent" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Välj vilken nätverksagentimplementation som ska användas för kommunikation med skrivaren." @@ -15214,6 +15268,10 @@ msgstr "Justerade Rätlinjig" msgid "Concentric" msgstr "Koncentrisk" +# AI Translated +msgid "Spiral Inset" +msgstr "Spiralinsättning" + msgid "Hilbert Curve" msgstr "Hilbert kurvan" @@ -15311,13 +15369,13 @@ msgstr "Fyllordning för ovansidan" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Riktning i vilken ovansidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n" -"Utåt börjar i ytans mitt, så att överskottsmaterial trycks ut mot kanten där det syns minst. Inåt börjar vid kanten och slutar med de trånga kurvorna i mitten.\n" -"Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen." +"Riktningen som toppytor fylls i när ett mönster som utgår från mitten används (Koncentrisk, Spiralinsättning, Arkimediska kordor, Oktagramspiral).\n" +"Utåt börjar i ytans mitt, så att överflödigt material trycks ut mot kanten där det syns minst. Inåt börjar vid kanten och slutar med de trånga kurvorna i mitten.\n" +"Standard använder ordningen efter kortaste väg, som kan gå åt vilket håll som helst." # AI Translated msgid "Bottom surface fill order" @@ -15325,13 +15383,13 @@ msgstr "Fyllordning för undersidan" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Riktning i vilken undersidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n" -"Inåt börjar varje yta med de bredare yttre kurvorna, vilket förbättrar det första lagrets vidhäftning på byggplattor där de trånga kurvorna i mitten kanske inte fastnar. Utåt börjar i mitten och trycker överskottsmaterial mot kanten.\n" -"Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen." +"Riktningen som bottenytor fylls i när ett mönster som utgår från mitten används (Koncentrisk, Spiralinsättning, Arkimediska kordor, Oktagramspiral).\n" +"Inåt börjar varje yta med de bredare yttre kurvorna, vilket förbättrar första lagrets vidhäftning på byggplattor där de trånga kurvorna i mitten kanske inte fäster. Utåt börjar i mitten och trycker ut överflödigt material mot kanten.\n" +"Standard använder ordningen efter kortaste väg, som kan gå åt vilket håll som helst." msgid "Internal solid infill pattern" msgstr "Invändigt mönster för fyllning av solida ytor" @@ -15448,6 +15506,14 @@ msgstr "Moturs" msgid "Clockwise" msgstr "Medurs" +# AI Translated +msgid "Distance to rod" +msgstr "Avstånd till stången" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Vågrätt avstånd från nozzelns spets till stångens bortre kant. Används för att undvika kollisioner vid utskrift per objekt." + msgid "Height to rod" msgstr "Höjd till axel" @@ -17945,6 +18011,20 @@ msgstr "Upptäck överhängs vägg" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Upptäck överhängs procenten i förhållande till linjebredden och använd olika hastigheter för att skriva ut. Vid 100%% överhäng, bridge/brygg hastighet användas." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Skriv ut väggar utan stöd sist" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Väggvarv som ligger helt i luften skrivs ut först när något kan hålla upp dem:\n" +"de extruderas efter de andra väggarna på sin ö, den innersta först, oavsett väggordning.\n" +"Ett varv som bara det här lagrets bridges kan förankra väntar tills dessa bridges är utskrivna, medan ett varv som löper längs en vägg med stöd behåller sin plats före ifyllnaden, som behöver det som förankring." + # AI Translated msgid "Outer walls" msgstr "Ytterväggar" @@ -18463,6 +18543,39 @@ msgstr "Torka på varv" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "För att minimera sömmens synlighet i en sluten varvextrudering görs en liten rörelse inåt innan extrudern lämnar varvet." +# AI Translated +msgid "Wipe inward" +msgstr "Torka inåt" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Gäller endast yttre väggar, inklusive hålkonturer. Flyttar den heta nozzeln mot redan utskrivna inre väggar under avtorkningen, för att minska återuppvärmningen av nyss utskriven plast och sömmärken.\n" +"\n" +"Särskilt användbart vid lagerhöjder under 0,1 mm, där avtorkningsmärken syns tydligare.\n" +"\n" +"Använder vanlig avtorkning om ingen angränsande inre vägg redan är utskriven (områden med en enda vägg eller väggordningen Yttre/Inre), eller om ingen understödd väg inåt kan hittas, till exempel i trånga hörn eller vid sömglapp." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Avstånd för torka inåt" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Avståndet som avtorkningsvägen förskjuts bort från den yttre perimetern, angivet i millimeter eller som procent av den yttre väggens faktiska extruderingsbredd.\n" +"\n" +"Till exempel förskjuter 50% vägen med halva den yttre väggens bredd. Den verkliga förskjutningen begränsas både av den yttre väggens faktiska bredd och av det tillgängliga utrymmet till den angränsande väggen, så värden över 100% eller ett motsvarande absolut avstånd har ingen ytterligare effekt. Ange 0 för att stänga av förskjutningen." + # AI Translated msgid "Wipe before external loop" msgstr "Torka före yttre varv" @@ -18771,8 +18884,8 @@ msgid "No sparse layers (beta)" msgstr "Inga glesa lager (beta)" # AI Translated -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Om detta är aktiverat skrivs prime tornet inte ut på lager utan verktygsbyten. På lager med verktygsbyte flyttar extrudern nedåt för att skriva ut prime tornet. Användaren ansvarar för att det inte uppstår kollision med utskriften." +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Om detta är aktiverat skrivs prime tornet inte ut på lager utan verktygsbyten. På lager med ett verktygsbyte färdas extrudern nedåt för att skriva ut prime tornet, så att tornet hamnar under modellen och verktygshuvudet måste sträcka sig ned till det. Placeringar där detta skulle kollidera med ett redan utskrivet objekt avvisas. Har ingen effekt med jämn timelapse eller detektering av avlagringar på nozzeln, som kräver ett torn på varje lager." # AI Translated msgid "Prime all printing extruders" @@ -18800,6 +18913,34 @@ msgstr "" msgid "Cyclic" msgstr "Cyklisk" +# AI Translated +msgid "Cyclic order" +msgstr "Cyklisk ordning" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Anpassad filamentsekvens som används av den cykliska verktygsbytesordningen, som filamentnummer åtskilda med kommatecken (t.ex. \"3,2,1,4\").\n" +"Varje lager skriver ut sina filament enligt den här sekvensen; filament som inte anges skrivs ut sist, i stigande ordning.\n" +"Lämna tomt för att gå igenom filamenten i stigande ordning." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Tillämpa cyklisk ordning på första lagret" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Tillämpar den cykliska verktygsbytesordningen även på första lagret.\n" +"Detta är avstängt som standard, eftersom första lagret i stället ordnas för bästa vidhäftning mot byggplattan: filament som skriver ut små, ömtåliga detaljer i första lagret skrivs ut sist, så att efterföljande verktygsbyten och förflyttningar är mindre benägna att slå loss de svagt förankrade delarna. Den här ordningen för första lagret följer också en anpassad filamentsekvens för första lagret när en sådan är angiven. Fördelen med den cykliska ordningen (extra verktygsbyten ger varje lager mer tid att svalna) gäller inte första lagret, som skrivs ut långsamt och varmt för vidhäftningens skull.\n" +"Aktivera detta endast om du behöver exakt samma verktygssekvens på varje lager, inklusive det första, på bekostnad av den vidhäftningsoptimeringen." + msgid "Slice gap closing radius" msgstr "Bered spaltens stängningsradie" @@ -18809,9 +18950,6 @@ msgstr "Sprickor mindre än 2 x gap stängningsradie fylls under triangeln mesh msgid "Slicing Mode" msgstr "Berednings läge" -msgid "Other" -msgstr "Andra" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Använd ”Jämn-Udda” för 3DLabPrint flygplans modeller. Använd ”Stäng hål” för att stänga alla hål i modellen." @@ -19911,6 +20049,14 @@ msgstr "Ingen kontroll" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Utför inga giltighets kontroller, t.ex. kontroll av konflikter mellan G-kod och banor." +# AI Translated +msgid "Strict mode" +msgstr "Strikt läge" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Avslutar med en kod skild från noll när beredningen ger en icke-kritisk varning som annars bara loggas, till exempel en modell som behöver support medan support är avstängt. Använd detta i CI eller skriptade flöden som aldrig ska leverera en omärkligt trasig beredning. Varje sådan varning listas också med en stabil klass i arrayen `warnings` i result.json, som bara skrivs på Linux. Kan inte kombineras med --no-check, som hoppar över supportkontrollen." + msgid "Normative check" msgstr "Normativ kontroll" @@ -19923,11 +20069,28 @@ msgstr "Mata ut modell information" msgid "This outputs the model’s information." msgstr "Mata ut modellens information." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Inspektera mesh (JSON till stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Skriver en JSON-sammanfattning av varje inläst objekt till stdout och avslutar sedan: dess begränsningsboxar och de ytor på det konvexa höljet som det kan vila på, med deras normaler, areor och mittpunkter. Det är bland dessa ytor som alternativen --ground-* väljer. Maskinläsbart alternativ till --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Inspektera målning (JSON till stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Skriver en strukturerad JSON-sammanfattning av varje målat lager (support, söm, MMU-färg, ojämn yta) som redan är sparat på den inlästa modellen — antal facetter, ytarea och begränsningsbox i meshens koordinater per tillstånd — och avslutar sedan. Maskinläsbart alternativ till att öppna målningsverktygen i gränssnittet." + msgid "Export Settings" msgstr "Exportera inställningar" -msgid "This exports settings to a file." -msgstr "Exportera inställningar till en fil." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Detta exporterar inställningar till en fil. Använd - för att skriva dem till stdout." msgid "Send progress to pipe" msgstr "Skicka framsteg till röret (SLA)" @@ -19993,6 +20156,30 @@ msgstr "Rotera kring Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Rotationsvinkel kring Y-axeln i grader." +# AI Translated +msgid "Ground largest face" +msgstr "Lägg på största ytan" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Lägger varje objekt på den största ytan av dess konvexa hölje och släpper ned det på byggplattan. Av lika stora ytor behålls den som redan vetter nedåt. Objekt utan en yta som är stor nog att vila på lämnas som de är. Transformationer körs i kommandoradens ordning, så rotationer som anges före det här alternativet respekteras. --orient 1 körs efter alla transformationer och ersätter orienteringen." + +# AI Translated +msgid "Ground face by normal" +msgstr "Lägg på yta efter normal" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Lägger varje objekt på den yta av det konvexa höljet vars utåtriktade normal ligger närmast riktningen NX,NY,NZ och släpper ned det på byggplattan. Riktningen anges i objektets koordinater, som innefattar de rotationer som angetts före det här alternativet och som sammanfaller med byggplattans axlar om inte indatafilen roterar objektet. Till exempel ställer 1,0,0 objektet på sin +X-sida. --orient 1 körs efter alla transformationer och ersätter orienteringen." + +# AI Translated +msgid "Ground face at point" +msgstr "Lägg på yta vid punkt" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Lägger varje objekt på den yta av det konvexa höljet som innehåller punkten X,Y,Z och släpper ned det på byggplattan. Punkten anges i objektets koordinater, som innefattar de rotationer som angetts före det här alternativet; --inspect-mesh anger ytornas mittpunkter i dessa. Objekt utan en sådan yta lämnas som de är, och körningen misslyckas om inget objekt har någon. --orient 1 körs efter alla transformationer och ersätter orienteringen." + msgid "Scale the model by a float factor." msgstr "Skala modellen med en plus faktor" @@ -23583,14 +23770,17 @@ msgstr "Åtgärden kan inte ångras. Vill du fortsätta?" msgid "Skipping objects." msgstr "Hoppar över objekt." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Materialandel" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Modellhöjd" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Andel" msgid "Select Filament" msgstr "Välj filament" @@ -23906,12 +24096,14 @@ msgid "Drying-Dehumidifying" msgstr "Torkning – avfuktning" # AI Translated -msgid " maximum drying temperature is " -msgstr " maximal torktemperatur är " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Maximal torktemperatur för %s är %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " minimal torktemperatur är " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Minimal torktemperatur för %s är %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -24376,6 +24568,104 @@ msgstr "" "Undvik vridning\n" "Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?" +#~ msgid "Other" +#~ msgstr "Andra" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Vänster: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Höger: " + +# AI Translated +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Maxtemperaturen får inte överstiga " + +# AI Translated +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Minimitemperaturen bör inte vara lägre än " + +#~ msgid "up to" +#~ msgstr "upp till" + +#~ msgid "above" +#~ msgstr "över" + +#~ msgid "from" +#~ msgstr "från" + +# AI Translated +#~ msgid "Configuration package: " +#~ msgstr "Konfigurationspaket: " + +# AI Translated +#~ msgid " updated to " +#~ msgstr " uppdaterat till " + +# AI Translated +#~ msgid "Grouping error: " +#~ msgstr "Grupperingsfel: " + +# AI Translated +#~ msgid " can not be placed in the " +#~ msgstr " kan inte placeras i " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " maximal torktemperatur är " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " minimal torktemperatur är " + +# AI Translated +#~ msgid "needs" +#~ msgstr "behöver" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "inte aktiverad" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "materialet är inte publicerat" + +#~ msgid "Select the language" +#~ msgstr "Välj språk" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Välj insticksmodul" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Riktning i vilken ovansidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n" +#~ "Utåt börjar i ytans mitt, så att överskottsmaterial trycks ut mot kanten där det syns minst. Inåt börjar vid kanten och slutar med de trånga kurvorna i mitten.\n" +#~ "Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Riktning i vilken undersidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n" +#~ "Inåt börjar varje yta med de bredare yttre kurvorna, vilket förbättrar det första lagrets vidhäftning på byggplattor där de trånga kurvorna i mitten kanske inte fastnar. Utåt börjar i mitten och trycker överskottsmaterial mot kanten.\n" +#~ "Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen." + +# AI Translated +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Om detta är aktiverat skrivs prime tornet inte ut på lager utan verktygsbyten. På lager med verktygsbyte flyttar extrudern nedåt för att skriva ut prime tornet. Användaren ansvarar för att det inte uppstår kollision med utskriften." + +#~ msgid "This exports settings to a file." +#~ msgstr "Exportera inställningar till en fil." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Liveview i Wayland kräver GStreamers GTK-videosink. Installera insticksmodulen gtksink för GStreamer och starta sedan om OrcaSlicer." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index 2865914d23..410e3899dc 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -2456,13 +2456,6 @@ msgstr "มีอัปเดตพร้อมใช้งาน เปิด msgid "%s has been removed." msgstr "ลบ %s แล้ว" - -msgid "Select the language" -msgstr "เลือกภาษา" - -msgid "Language" -msgstr "ภาษา" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3696,11 +3689,15 @@ msgstr "ดึงเส้นพลาสติกปัจจุบันกล msgid "Switch track at Filament Track Switch" msgstr "สลับแทร็กที่ Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "อุณหภูมิสูงสุดต้องไม่เกิน " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "อุณหภูมิสูงสุดต้องไม่เกิน %d" -msgid "The minmum temperature should not be less than " -msgstr "อุณหภูมิต่ำสุดไม่ควรต่ำกว่า" +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "อุณหภูมิต่ำสุดไม่ควรต่ำกว่า %d" msgid "Type to filter..." msgstr "พิมพ์เพื่อกรอง..." @@ -4582,6 +4579,15 @@ msgstr "" "การคัดลอก G-code ชั่วคราวไปยังเอาต์พุต G-code ล้มเหลว บางทีการ์ด SD อาจถูกล็อคการเขียน?\n" "ข้อความแสดงข้อผิดพลาด: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"การคัดลอก G-code ชั่วคราวไปยัง G-code ผลลัพธ์ล้มเหลว\n" +"ข้อความแสดงข้อผิดพลาด: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "การคัดลอก G-code ชั่วคราวไปยังเอาต์พุต G-code ล้มเหลว อาจมีปัญหากับอุปกรณ์เป้าหมาย โปรดลองส่งออกอีกครั้งหรือใช้อุปกรณ์อื่น G-code เอาต์พุตที่เสียหายอยู่ที่ %1%.tmp" @@ -5318,10 +5324,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "ค่า %s อยู่นอกช่วง ช่วงที่ถูกต้องคือตั้งแต่ %d ถึง %d" #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"มันคือ %s%% หรือ %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "มันคือ %s%% หรือ %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5347,22 +5354,18 @@ msgstr "รูปแบบไม่ถูกต้อง รูปแบบเ msgid "System agents" msgstr "เอเจนต์ระบบ" -# AI Translated -msgid "No plugin selected" -msgstr "ไม่ได้เลือกปลั๊กอิน" - # AI Translated msgid "Add plugin" msgstr "เพิ่มปลั๊กอิน" -# AI Translated -msgid "Select plugin" -msgstr "เลือกปลั๊กอิน" - # AI Translated msgid "Remove plugin" msgstr "ลบปลั๊กอิน" +# AI Translated +msgid "No plugin selected" +msgstr "ไม่ได้เลือกปลั๊กอิน" + # AI Translated msgid "Configure" msgstr "กำหนดค่า" @@ -5618,14 +5621,20 @@ msgstr "ตั้งค่าให้เหมาะสมที่สุด" msgid "Regroup filament" msgstr "จัดกลุ่มเส้นพลาสติกใหม่" -msgid "up to" -msgstr "สูงสุด" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "สูงสุด %1% มม." -msgid "above" -msgstr "ข้างบน" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "สูงกว่า %1% มม." -msgid "from" -msgstr "จาก" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "จาก %1% ถึง %2% มม." msgid "Usage" msgstr "การใช้งาน" @@ -5986,7 +5995,7 @@ msgstr "ปริมาณ:" msgid "Size:" msgstr "ขนาด:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "พบความขัดแย้งของเส้นทางรหัส G ที่เลเยอร์ %d, Z = %.2lfmm โปรดแยกวัตถุที่ขัดแย้งกันให้ไกลออกไป (%s <-> %s)" @@ -6298,11 +6307,13 @@ msgstr "บันทึกโปรเจกต์เป็น" msgid "Save current project as" msgstr "บันทึกโครงการปัจจุบันเป็น" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "เผยแพร่ 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "ส่งออกไฟล์ 3MF ที่ฝังการตั้งค่าที่เลือกไว้" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "นำเข้า 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7558,6 +7569,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "ล่าง" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "การตั้งค่านี้ไม่ได้ระบุชนิดความสามารถของปลั๊กอิน" + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "การตั้งค่านี้ระบุชนิดความสามารถของปลั๊กอินที่ไม่รู้จัก: " + # AI Translated msgid "Plugin Selection" msgstr "การเลือกปลั๊กอิน" @@ -8118,11 +8137,13 @@ msgstr "โปรดยืนยันว่ารหัส G ภายในค msgid "Customized Preset" msgstr "ค่าที่ตั้งไว้ล่วงหน้าที่กำหนดเอง" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "ไม่สามารถใช้การตั้งค่าที่เผยแพร่บางรายการได้:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "ช่องเส้นพลาสติกบางช่องถูกเปลี่ยนแปลง:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "ชื่อของส่วนประกอบภายในไฟล์ STEP ไม่ใช่รูปแบบ UTF-8!" @@ -8531,13 +8552,17 @@ msgstr "บันทึกไฟล์ที่สไลซ์เป็น:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "ไฟล์ %s ถูกส่งไปยังพื้นที่เก็บข้อมูลของเครื่องพิมพ์แล้ว และสามารถดูได้บนเครื่องพิมพ์" +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "เผยแพร่ไฟล์ 3MF เป็น:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"ส่งออกไฟล์ 3MF ที่เผยแพร่ล้มเหลว\n" +"โปรดตรวจสอบว่าโฟลเดอร์นั้นมีอยู่บนออนไลน์หรือมีโปรแกรมอื่นเปิดไฟล์นี้ค้างไว้หรือไม่" msgid "Publish" msgstr "เผยแพร่" @@ -8752,7 +8777,6 @@ msgstr "ต้องการดำเนินการต่อหรือไ msgid "Language selection" msgstr "การเลือกภาษา" - msgid "Asia-Pacific" msgstr "เอเชียแปซิฟิก" @@ -8857,6 +8881,9 @@ msgstr "เส้นทางอินสแตนซ์ปัจจุบัน msgid "General" msgstr "ทั่วไป" +msgid "Language" +msgstr "ภาษา" + msgid "Metric" msgstr "เมตริก" @@ -9295,9 +9322,6 @@ msgstr "เมื่อเลื่อนแถบเลเยอร์ในต msgid "Dimmed layer brightness" msgstr "ความสว่างของเลเยอร์ที่หรี่" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9697,63 +9721,80 @@ msgstr "กำลังอัพโหลดข้อมูล" msgid "Jump to webpage" msgstr "ข้ามไปที่หน้าเว็บ" +# AI Translated msgid "Material" -msgstr "" +msgstr "วัสดุ" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "เส้นพลาสติกผสม" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "เส้นพลาสติกผสมบางรายการต้องอาศัยเส้นพลาสติกที่จะไม่ถูกเผยแพร่:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "เส้นพลาสติก %d (ผสม)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% ต้องใช้ %2% แต่ยังไม่ได้เปิดใช้" -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% ต้องใช้ %2% แต่วัสดุของมันจะไม่ถูกเผยแพร่" +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "หากต้องการเผยแพร่เส้นพลาสติกผสม ให้เปิดใช้เส้นพลาสติกทุกเส้นที่ใช้ แล้วเลือกการเผยแพร่แบบเต็ม หรือทำตามข้อกำหนดชนิดของมัน" +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "เผยแพร่ต่อไป" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "เผยแพร่ 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "เลือกว่าจะเผยแพร่การตั้งค่าใดในไฟล์ 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "วิกิการเผยแพร่ 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "คู่มือวีดีโอการเผยแพร่ 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "เส้นพลาสติกผสม - เผยแพร่ทั้งชุดเมื่อเลือก \"เปิดใช้\" ด้านบน" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "เผยแพร่เส้นพลาสติกผสมนี้ และเปิดใช้ + เผยแพร่แบบเต็มสำหรับเส้นพลาสติกที่เป็นส่วนประกอบ" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "เผยแพร่ช่องเส้นพลาสติกนี้ในไฟล์ 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "การเผยแพร่แบบเต็ม" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "ฝังเส้นพลาสติกทั้งหมดของช่องนี้ลงในไฟล์ 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "กรองรายการที่ไม่ได้เลือก" #, c-format, boost-format msgid "Save %s as" @@ -9772,6 +9813,10 @@ msgstr "คัดลอกค่าที่สืบทอดมาจากพ msgid "Detach from parent" msgstr "แยกออกจากพรีเซ็ตแม่" +# AI Translated +msgid "Save without parent" +msgstr "บันทึกโดยไม่มีพรีเซ็ตแม่" + # AI Translated msgid "Unique preset" msgstr "พรีเซ็ตอิสระ" @@ -10476,9 +10521,17 @@ msgstr "จำเป็นต้องใช้ Prime Tower ในการต msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "การเปิดใช้งานทั้งความสูง Z ที่แม่นยำและ Prime Tower อาจทำให้เกิดข้อผิดพลาดในการแบ่งส่วน คุณยังต้องการเปิดใช้งานความสูง Z ที่แม่นยำหรือไม่" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "ไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ซึ่งใช้ร่วมกับ \"ไม่มีชั้นกระจัดกระจาย\" ไม่ได้ จึงปิด \"ไม่มีชั้นกระจัดกระจาย\" แล้ว" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "จำเป็นต้องใช้ Prime Tower สำหรับโหมดไทม์แลปส์แบบราบรื่น หากไม่มี Prime Tower อาจเกิดตำหนิบนโมเดลได้ ต้องการเปิดใช้ Prime Tower หรือไม่?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"ไม่มีชั้นกระจัดกระจาย\" ใช้ร่วมกับไทม์แลปส์แบบราบรื่นไม่ได้ เพราะไทม์แลปส์แบบราบรื่นต้องมี Prime Tower ในทุกเลเยอร์ ไทม์แลปส์จึงถูกสลับเป็นโหมดแบบดั้งเดิม" + msgid "Still print by object?" msgstr "ยังคงพิมพ์ตามวัตถุใช่ไหม" @@ -10847,9 +10900,6 @@ msgstr "โปรไฟล์กระบวนการที่เข้าก msgid "Printable space" msgstr "พื้นที่ที่สามารถพิมพ์ได้" -msgid "Printer Agent" -msgstr "ตัวแทนเครื่องพิมพ์" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "เลือกการใช้งานตัวแทนเครือข่ายสำหรับการสื่อสารของเครื่องพิมพ์ ตัวแทนที่มีอยู่จะได้รับการลงทะเบียนเมื่อเริ่มต้น" @@ -11250,14 +11300,6 @@ msgstr "จำนวนชุดดันเส้น" msgid "Capabilities" msgstr "ความสามารถ" -# AI Translated -msgid "Left: " -msgstr "ซ้าย: " - -# AI Translated -msgid "Right: " -msgstr "ขวา: " - msgid "Show all presets (including incompatible)" msgstr "แสดงค่าที่ตั้งล่วงหน้าทั้งหมด (รวมทั้งเข้ากันไม่ได้)" @@ -12096,15 +12138,22 @@ msgstr "ยกเลิกการซ่อมแล้ว" msgid "Copying of file %1% to %2% failed: %3%" msgstr "การคัดลอกไฟล์ %1% ถึง %2% ล้มเหลว: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "กำลังดาวน์โหลดโปรไฟล์ผู้ขายใหม่: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "แพคเกจการกำหนดค่า: %1% อัปเดตเป็น %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "ดาวน์โหลดโปรไฟล์ผู้ขายล้มเหลว: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "โปรดตรวจสอบการเปลี่ยนแปลงที่ยังไม่ได้บันทึกก่อนอัปเดตการกำหนดค่า" -msgid "Configuration package: " -msgstr "แพคเกจการกำหนดค่า:" - -msgid " updated to " -msgstr "อัปเดตเป็น" - msgid "Open G-code file:" msgstr "เปิดไฟล์ G-code:" @@ -12162,11 +12211,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "รูปร่างอินพุตรองรับเฉพาะ Klipper, RepRapFirmware และ Marlin 2 เท่านั้น" -msgid "Grouping error: " -msgstr "ข้อผิดพลาดในการจัดกลุ่ม:" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "ข้อผิดพลาดในการจัดกลุ่ม: %1% ไม่สามารถวางในหัวฉีดซ้ายได้" -msgid " can not be placed in the " -msgstr "ไม่สามารถวางใน" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "ข้อผิดพลาดในการจัดกลุ่ม: %1% ไม่สามารถวางในหัวฉีดขวาได้" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12280,6 +12333,10 @@ msgstr "%1% อยู่ใกล้ผู้อื่นมากเกิน msgid "%1% is too tall, and collisions will be caused." msgstr "%1% สูงเกินไป และจะเกิดการชนกัน" +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "ตำแหน่งสัมพัทธ์ของโมเดลกับ Prime Tower ไม่เป็นไปตามข้อกำหนดของฟังก์ชัน \"ไม่มีชั้นกระจัดกระจาย\" โปรดปรับตำแหน่งสัมพัทธ์ของทั้งสอง ลดความสูงของโมเดล หรือปิด \"ไม่มีชั้นกระจัดกระจาย\"" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "อยู่ใกล้พื้นที่แยกมากเกินไป อาจเกิดการชนกันเมื่อพิมพ์" @@ -12625,6 +12682,9 @@ msgstr "ใช้ 3MF แทน G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "เปิดใช้งานหากเครื่องพิมพ์รับไฟล์ 3MF เป็นงานพิมพ์ เมื่อเปิดใช้งาน OrcaSlicer จะส่งไฟล์ที่สไลซ์แล้วเป็น .gcode.3mf แทนไฟล์ .gcode ธรรมดา" +msgid "Printer Agent" +msgstr "ตัวแทนเครื่องพิมพ์" + msgid "Select the network agent implementation for printer communication." msgstr "เลือกการใช้งานตัวแทนเครือข่ายสำหรับการสื่อสารของเครื่องพิมพ์" @@ -13670,6 +13730,10 @@ msgstr "จัดแนวเป็นเส้นตรง" msgid "Concentric" msgstr "ศูนย์กลาง" +# AI Translated +msgid "Spiral Inset" +msgstr "เกลียวเข้าใน" + msgid "Hilbert Curve" msgstr "ฮิลเบิร์ต เคิร์ฟ" @@ -13761,13 +13825,13 @@ msgstr "ลำดับการเติมพื้นผิวด้านบ # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"ทิศทางที่พื้นผิวด้านบนถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n" -"ออกด้านนอกเริ่มที่กึ่งกลางของพื้นผิว ดังนั้นวัสดุส่วนเกินจะถูกดันไปทางขอบซึ่งมองเห็นได้น้อยที่สุด เข้าด้านในเริ่มที่ขอบและจบด้วยเส้นโค้งแคบที่กึ่งกลาง\n" -"ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้" +"ทิศทางการเติมผิวด้านบนเมื่อใช้รูปแบบที่เริ่มจากศูนย์กลาง (ศูนย์กลาง, เกลียวเข้าใน, คอร์ดอาร์คิมีดีน, เกลียวแปดเหลี่ยม)\n" +"ออกด้านนอกจะเริ่มที่กึ่งกลางของผิว วัสดุส่วนเกินจึงถูกดันไปทางขอบซึ่งมองเห็นได้น้อยที่สุด เข้าด้านในจะเริ่มที่ขอบและจบด้วยเส้นโค้งแคบตรงกึ่งกลาง\n" +"ค่าเริ่มต้นใช้การเรียงตามเส้นทางที่สั้นที่สุด ซึ่งอาจเดินไปทางใดก็ได้" # AI Translated msgid "Bottom surface fill order" @@ -13775,13 +13839,13 @@ msgstr "ลำดับการเติมพื้นผิวด้านล # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"ทิศทางที่พื้นผิวด้านล่างถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n" -"เข้าด้านในเริ่มแต่ละพื้นผิวด้วยเส้นโค้งด้านนอกที่กว้างกว่า ซึ่งช่วยเพิ่มการยึดเกาะเลเยอร์แรกบนฐานพิมพ์ที่เส้นโค้งแคบตรงกลางอาจไม่ติด ออกด้านนอกเริ่มที่กึ่งกลาง โดยดันวัสดุส่วนเกินไปทางขอบ\n" -"ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้" +"ทิศทางการเติมผิวด้านล่างเมื่อใช้รูปแบบที่เริ่มจากศูนย์กลาง (ศูนย์กลาง, เกลียวเข้าใน, คอร์ดอาร์คิมีดีน, เกลียวแปดเหลี่ยม)\n" +"เข้าด้านในจะเริ่มแต่ละผิวด้วยเส้นโค้งด้านนอกที่กว้างกว่า ซึ่งช่วยให้ชั้นแรกยึดเกาะดีขึ้นบนฐานพิมพ์ที่เส้นโค้งแคบตรงกึ่งกลางอาจไม่ติด ออกด้านนอกจะเริ่มที่กึ่งกลางและดันวัสดุส่วนเกินไปทางขอบ\n" +"ค่าเริ่มต้นใช้การเรียงตามเส้นทางที่สั้นที่สุด ซึ่งอาจเดินไปทางใดก็ได้" msgid "Internal solid infill pattern" msgstr "รูปแบบไส้ในของแข็งภายใน" @@ -13884,6 +13948,14 @@ msgstr "ทวนเข็มนาฬิกา" msgid "Clockwise" msgstr "ตามเข็มนาฬิกา" +# AI Translated +msgid "Distance to rod" +msgstr "ระยะถึงแกน" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "ระยะในแนวนอนจากปลายหัวฉีดถึงขอบด้านไกลของแกน ใช้สำหรับหลีกเลี่ยงการชนในการพิมพ์ตามวัตถุ" + msgid "Height to rod" msgstr "ความสูงถึงก้าน" @@ -16053,6 +16125,20 @@ msgstr "ตรวจจับผนังส่วนยื่น" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "ตรวจจับเปอร์เซ็นต์ระยะยื่นที่สัมพันธ์กับความกว้างของเส้น และใช้ความเร็วที่แตกต่างกันในการพิมพ์ สำหรับระยะยื่น 100%% จะใช้ความเร็วบริดจ์" +# AI Translated +msgid "Print unsupported walls last" +msgstr "พิมพ์ผนังที่ไม่มีส่วนรองรับเป็นลำดับสุดท้าย" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"รอบผนังที่ลอยอยู่กลางอากาศทั้งวงจะถูกพิมพ์ก็ต่อเมื่อมีสิ่งที่รองรับมันได้แล้ว:\n" +"โดยจะถูกอัดขึ้นรูปหลังผนังอื่น ๆ ของเกาะเดียวกัน เริ่มจากวงในสุด ไม่ว่าลำดับผนังจะเป็นแบบใด\n" +"รอบที่มีเพียงสะพานของเลเยอร์นี้เท่านั้นที่ยึดไว้ได้จะรอจนกว่าสะพานเหล่านั้นจะถูกพิมพ์ ส่วนรอบที่วิ่งขนานไปกับผนังที่มีส่วนรองรับจะยังคงอยู่ก่อนไส้ใน ซึ่งต้องใช้มันเป็นจุดยึด" + msgid "Outer walls" msgstr "ผนังชั้นนอก" @@ -16490,6 +16576,39 @@ msgstr "เช็ดบนลูป" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "เพื่อลดการมองเห็นรอยต่อในการอัดรีดแบบวงปิด จะมีการเคลื่อนตัวเข้าด้านในเล็กน้อยก่อนที่ชุดดันเส้นจะออกจากวง" +# AI Translated +msgid "Wipe inward" +msgstr "เช็ดเข้าด้านใน" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"ใช้กับผนังด้านนอกเท่านั้น รวมถึงขอบรู โดยจะขยับหัวฉีดที่ร้อนเข้าหาผนังด้านในที่พิมพ์ไปแล้วระหว่างการเช็ด เพื่อลดการให้ความร้อนซ้ำแก่พลาสติกที่เพิ่งพิมพ์และลดรอยตะเข็บ\n" +"\n" +"มีประโยชน์เป็นพิเศษที่ความสูงเลเยอร์ต่ำกว่า 0.1 มม. ซึ่งรอยเช็ดจะเห็นได้ชัดกว่า\n" +"\n" +"จะใช้การเช็ดแบบปกติหากยังไม่มีผนังด้านในที่อยู่ติดกันถูกพิมพ์ (พื้นที่ผนังเดี่ยว หรือลำดับผนังแบบด้านนอก/ด้านใน) หรือหากหาเส้นทางเข้าด้านในที่มีส่วนรองรับไม่ได้ เช่น ที่มุมแคบหรือช่องว่างของรอยตะเข็บ" + +# AI Translated +msgid "Wipe inward distance" +msgstr "ระยะเช็ดเข้าด้านใน" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"ระยะที่เส้นทางการเช็ดถูกเลื่อนออกจากเส้นรอบรูปด้านนอก ระบุเป็นมิลลิเมตรหรือเป็นเปอร์เซ็นต์ของความกว้างการอัดขึ้นรูปจริงของผนังด้านนอก\n" +"\n" +"ตัวอย่างเช่น 50% จะเลื่อนเส้นทางไปครึ่งหนึ่งของความกว้างผนังด้านนอก ระยะเลื่อนที่มีผลจริงถูกจำกัดทั้งโดยความกว้างจริงของผนังด้านนอกและโดยช่องว่างที่มีถึงผนังที่อยู่ติดกัน ดังนั้นค่าที่เกิน 100% หรือระยะสัมบูรณ์ที่เทียบเท่าจะไม่ให้ผลเพิ่มเติม ตั้งเป็น 0 เพื่อปิดการเลื่อน" + msgid "Wipe before external loop" msgstr "เช็ดก่อนวนรอบภายนอก" @@ -16751,8 +16870,9 @@ msgstr "รับเครื่องมือใหม่โดยไม่ร msgid "No sparse layers (beta)" msgstr "ไม่มีชั้นกระจัดกระจาย (เบต้า)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "หากเปิดใช้งาน Wipe Tower จะไม่ถูกพิมพ์บนเลเยอร์โดยไม่มีการเปลี่ยนแปลงเครื่องมือ บนเลเยอร์ที่มีการเปลี่ยนเครื่องมือ ชุดดันเส้นจะเคลื่อนลงด้านล่างเพื่อพิมพ์ Wipe Tower ผู้ใช้มีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่าไม่มีการชนกันกับงานพิมพ์" +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "หากเปิดใช้ Wipe Tower จะไม่ถูกพิมพ์ในเลเยอร์ที่ไม่มีการเปลี่ยนเครื่องมือ ในเลเยอร์ที่มีการเปลี่ยนเครื่องมือ ชุดดันเส้นจะเคลื่อนลงไปพิมพ์ Wipe Tower ทำให้หอคอยอยู่ต่ำกว่าโมเดลและหัวพิมพ์ต้องยื่นลงไปหามัน การจัดวางที่จะทำให้ชนกับวัตถุที่พิมพ์ไปแล้วจะถูกปฏิเสธ ไม่มีผลเมื่อใช้ไทม์แลปส์แบบราบรื่นหรือการตรวจจับการจับตัวเป็นก้อนที่หัวฉีด ซึ่งต้องมีหอคอยในทุกเลเยอร์" msgid "Prime all printing extruders" msgstr "ใช้ชุดดันเส้นการพิมพ์ทั้งหมด" @@ -16778,6 +16898,34 @@ msgstr "" msgid "Cyclic" msgstr "Cyclic" +# AI Translated +msgid "Cyclic order" +msgstr "ลำดับแบบวนรอบ" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"ลำดับเส้นพลาสติกที่กำหนดเอง ซึ่งใช้โดยการจัดลำดับการเปลี่ยนเครื่องมือแบบวนรอบ ระบุเป็นหมายเลขเส้นพลาสติกคั่นด้วยเครื่องหมายจุลภาค (เช่น \"3,2,1,4\")\n" +"แต่ละเลเยอร์จะพิมพ์เส้นพลาสติกของตนตามลำดับนี้ ส่วนเส้นพลาสติกที่ไม่ได้ระบุไว้จะถูกพิมพ์เป็นลำดับสุดท้ายโดยเรียงจากน้อยไปมาก\n" +"เว้นว่างไว้เพื่อวนใช้เส้นพลาสติกโดยเรียงจากน้อยไปมาก" + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "ใช้ลำดับแบบวนรอบกับชั้นแรก" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"ใช้ลำดับการเปลี่ยนเครื่องมือแบบวนรอบกับชั้นแรกด้วย\n" +"โดยค่าเริ่มต้นจะปิดอยู่ เพราะชั้นแรกจะถูกจัดลำดับเพื่อการยึดเกาะฐานพิมพ์ที่ดีที่สุดแทน กล่าวคือ เส้นพลาสติกที่พิมพ์รายละเอียดเล็กและเปราะบางของชั้นแรกจะถูกพิมพ์เป็นลำดับสุดท้าย การเปลี่ยนเครื่องมือและการเดินหัวเปล่าที่ตามมาจึงมีโอกาสน้อยลงที่จะกระแทกชิ้นส่วนที่ยึดเกาะไม่แน่นเหล่านั้นให้หลุด ลำดับของชั้นแรกนี้ยังเคารพลำดับเส้นพลาสติกของชั้นแรกที่กำหนดเองด้วย หากมีการตั้งค่าไว้ ข้อดีของลำดับแบบวนรอบ (การเปลี่ยนเครื่องมือที่เพิ่มขึ้นทำให้แต่ละเลเยอร์มีเวลาเย็นตัวมากขึ้น) ไม่ใช้กับชั้นแรก ซึ่งพิมพ์อย่างช้าและร้อนเพื่อการยึดเกาะ\n" +"เปิดใช้สิ่งนี้เฉพาะเมื่อคุณต้องการลำดับเครื่องมือที่เหมือนกันทุกประการในทุกเลเยอร์รวมถึงชั้นแรก โดยยอมแลกกับการปรับแต่งการยึดเกาะดังกล่าว" + msgid "Slice gap closing radius" msgstr "รัศมีการปิดช่องว่างของ Slice" @@ -16787,9 +16935,6 @@ msgstr "รอยแตกร้าวที่มีขนาดเล็กก msgid "Slicing Mode" msgstr "โหมดการแบ่งส่วน" -msgid "Other" -msgstr "อื่นๆ" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "ใช้ \"เลขคู่\" สำหรับโมเดลเครื่องบิน 3DLabPrint ใช้ \"ปิดรู\" เพื่อปิดรูทั้งหมดในโมเดล" @@ -17791,6 +17936,14 @@ msgstr "ไม่มีเช็ค" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "อย่าทำการตรวจสอบความถูกต้องใดๆ เช่น การตรวจสอบข้อขัดแย้งของเส้นทาง G-code" +# AI Translated +msgid "Strict mode" +msgstr "โหมดเข้มงวด" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "ออกจากโปรแกรมด้วยค่าที่ไม่ใช่ศูนย์เมื่อการสไลซ์เกิดคำเตือนที่ไม่ร้ายแรง ซึ่งปกติจะถูกบันทึกลงล็อกเท่านั้น เช่น โมเดลที่ต้องการส่วนรองรับขณะที่ปิดส่วนรองรับไว้ ใช้สิ่งนี้ใน CI หรือไปป์ไลน์ที่ทำงานด้วยสคริปต์ซึ่งต้องไม่ส่งมอบผลการสไลซ์ที่เสียหายแบบสังเกตยาก คำเตือนแต่ละรายการดังกล่าวยังถูกแสดงพร้อมคลาสที่คงที่ในอาร์เรย์ `warnings` ของ result.json ซึ่งเขียนเฉพาะบน Linux เท่านั้น ใช้ร่วมกับ --no-check ไม่ได้ เพราะตัวเลือกนั้นข้ามการตรวจสอบส่วนรองรับ" + msgid "Normative check" msgstr "การตรวจสอบเชิงบรรทัดฐาน" @@ -17803,11 +17956,28 @@ msgstr "ข้อมูลรุ่นเอาท์พุต" msgid "This outputs the model’s information." msgstr "ส่งออกข้อมูลของโมเดล" +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "ตรวจสอบเมช (JSON ไปยัง stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "พิมพ์สรุป JSON ของแต่ละวัตถุที่โหลดไว้ไปยัง stdout แล้วออกจากโปรแกรม: กล่องขอบเขตของวัตถุและหน้าของเปลือกนูนที่วัตถุสามารถวางลงได้ พร้อมเวกเตอร์ตั้งฉาก พื้นที่ และจุดศูนย์กลางของหน้าเหล่านั้น หน้าเหล่านี้คือหน้าที่ตัวเลือก --ground-* เลือกใช้ เป็นทางเลือกที่เครื่องอ่านได้แทน --info" + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "ตรวจสอบการระบาย (JSON ไปยัง stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "พิมพ์สรุป JSON แบบมีโครงสร้างของทุกเลเยอร์ที่ระบายไว้ (ส่วนรองรับ, รอยตะเข็บ, สี MMU, ผิวฟัซซี) ซึ่งถูกเก็บไว้ในโมเดลที่โหลดแล้ว — จำนวนหน้า พื้นที่ผิว และกล่องขอบเขตในพิกัดของเมชในแต่ละสถานะ — แล้วออกจากโปรแกรม เป็นทางเลือกที่เครื่องอ่านได้แทนการเปิดเครื่องมือระบายในหน้าจอ" + msgid "Export Settings" msgstr "ส่งออกการตั้งค่า" -msgid "This exports settings to a file." -msgstr "ส่งออกการตั้งค่าไปยังไฟล์" +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "คำสั่งนี้ส่งออกการตั้งค่าไปยังไฟล์ ใช้ - เพื่อเขียนไปยัง stdout" msgid "Send progress to pipe" msgstr "ส่งความคืบหน้าไปป์" @@ -17863,6 +18033,30 @@ msgstr "หมุนรอบ Y" msgid "Rotation angle around the Y axis in degrees." msgstr "มุมการหมุนรอบแกน Y มีหน่วยเป็นองศา" +# AI Translated +msgid "Ground largest face" +msgstr "วางบนหน้าที่ใหญ่ที่สุด" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "วางแต่ละวัตถุลงบนหน้าที่ใหญ่ที่สุดของเปลือกนูน แล้วปล่อยลงบนฐานพิมพ์ ในบรรดาหน้าที่ใหญ่เท่ากัน จะคงหน้าที่หันลงอยู่แล้วไว้ วัตถุที่ไม่มีหน้าใหญ่พอให้วางได้จะถูกปล่อยไว้ตามเดิม การแปลงรูปทำงานตามลำดับในบรรทัดคำสั่ง การหมุนที่ระบุไว้ก่อนตัวเลือกนี้จึงถูกนำมาใช้ด้วย --orient 1 ทำงานหลังการแปลงรูปทั้งหมดและจะแทนที่การจัดวางแนว" + +# AI Translated +msgid "Ground face by normal" +msgstr "วางบนหน้าตามเวกเตอร์ตั้งฉาก" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "วางแต่ละวัตถุลงบนหน้าของเปลือกนูนที่มีเวกเตอร์ตั้งฉากด้านนอกใกล้เคียงทิศทาง NX,NY,NZ มากที่สุด แล้วปล่อยลงบนฐานพิมพ์ ทิศทางนี้อยู่ในพิกัดของวัตถุ ซึ่งรวมการหมุนที่ระบุไว้ก่อนตัวเลือกนี้ และตรงกับแกนของฐานพิมพ์ เว้นแต่ไฟล์นำเข้าจะหมุนวัตถุไว้ ตัวอย่างเช่น 1,0,0 จะตั้งวัตถุขึ้นบนด้าน +X --orient 1 ทำงานหลังการแปลงรูปทั้งหมดและจะแทนที่การจัดวางแนว" + +# AI Translated +msgid "Ground face at point" +msgstr "วางบนหน้าที่จุดที่ระบุ" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "วางแต่ละวัตถุลงบนหน้าของเปลือกนูนที่มีจุด X,Y,Z อยู่ แล้วปล่อยลงบนฐานพิมพ์ จุดนี้อยู่ในพิกัดของวัตถุ ซึ่งรวมการหมุนที่ระบุไว้ก่อนตัวเลือกนี้ โดย --inspect-mesh รายงานจุดศูนย์กลางของหน้าในพิกัดเดียวกันนี้ วัตถุที่ไม่มีหน้าดังกล่าวจะถูกปล่อยไว้ตามเดิม และการทำงานจะล้มเหลวหากไม่มีวัตถุใดมีหน้าเช่นนั้นเลย --orient 1 ทำงานหลังการแปลงรูปทั้งหมดและจะแทนที่การจัดวางแนว" + msgid "Scale the model by a float factor." msgstr "ปรับขนาดโมเดลตามปัจจัยโฟลต" @@ -20961,14 +21155,17 @@ msgstr "การทำงานนี้ไม่สามารถย้อน msgid "Skipping objects." msgstr "ข้ามวัตถุ" +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "สัดส่วนวัสดุ" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "ความสูงโมเดล" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "สัดส่วน" msgid "Select Filament" msgstr "เลือกเส้นพลาสติก" @@ -21226,12 +21423,14 @@ msgid "Drying-Dehumidifying" msgstr "อบแห้ง-ลดความชื้น" # AI Translated -msgid " maximum drying temperature is " -msgstr " อุณหภูมิอบแห้งสูงสุดคือ " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "อุณหภูมิอบแห้งสูงสุดของ %s คือ %d°C" # AI Translated -msgid " minimum drying temperature is " -msgstr " อุณหภูมิอบแห้งต่ำสุดคือ " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "อุณหภูมิอบแห้งต่ำสุดของ %s คือ %d°C" # AI Translated msgid "This filament may not be completely dried." @@ -21676,6 +21875,97 @@ msgstr "" "หลีกเลี่ยงการบิดเบี้ยว\n" "คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้" +#~ msgid "Other" +#~ msgstr "อื่นๆ" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "ซ้าย: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "ขวา: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "อุณหภูมิสูงสุดต้องไม่เกิน " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "อุณหภูมิต่ำสุดไม่ควรต่ำกว่า" + +#~ msgid "up to" +#~ msgstr "สูงสุด" + +#~ msgid "above" +#~ msgstr "ข้างบน" + +#~ msgid "from" +#~ msgstr "จาก" + +#~ msgid "Configuration package: " +#~ msgstr "แพคเกจการกำหนดค่า:" + +#~ msgid " updated to " +#~ msgstr "อัปเดตเป็น" + +#~ msgid "Grouping error: " +#~ msgstr "ข้อผิดพลาดในการจัดกลุ่ม:" + +#~ msgid " can not be placed in the " +#~ msgstr "ไม่สามารถวางใน" + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " อุณหภูมิอบแห้งสูงสุดคือ " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " อุณหภูมิอบแห้งต่ำสุดคือ " + +# AI Translated +#~ msgid "needs" +#~ msgstr "ต้องการ" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "ไม่ได้เปิดใช้" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "วัสดุยังไม่ถูกเผยแพร่" + +#~ msgid "Select the language" +#~ msgstr "เลือกภาษา" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "เลือกปลั๊กอิน" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "ทิศทางที่พื้นผิวด้านบนถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n" +#~ "ออกด้านนอกเริ่มที่กึ่งกลางของพื้นผิว ดังนั้นวัสดุส่วนเกินจะถูกดันไปทางขอบซึ่งมองเห็นได้น้อยที่สุด เข้าด้านในเริ่มที่ขอบและจบด้วยเส้นโค้งแคบที่กึ่งกลาง\n" +#~ "ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้" + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "ทิศทางที่พื้นผิวด้านล่างถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n" +#~ "เข้าด้านในเริ่มแต่ละพื้นผิวด้วยเส้นโค้งด้านนอกที่กว้างกว่า ซึ่งช่วยเพิ่มการยึดเกาะเลเยอร์แรกบนฐานพิมพ์ที่เส้นโค้งแคบตรงกลางอาจไม่ติด ออกด้านนอกเริ่มที่กึ่งกลาง โดยดันวัสดุส่วนเกินไปทางขอบ\n" +#~ "ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้" + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "หากเปิดใช้งาน Wipe Tower จะไม่ถูกพิมพ์บนเลเยอร์โดยไม่มีการเปลี่ยนแปลงเครื่องมือ บนเลเยอร์ที่มีการเปลี่ยนเครื่องมือ ชุดดันเส้นจะเคลื่อนลงด้านล่างเพื่อพิมพ์ Wipe Tower ผู้ใช้มีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่าไม่มีการชนกันกับงานพิมพ์" + +#~ msgid "This exports settings to a file." +#~ msgstr "ส่งออกการตั้งค่าไปยังไฟล์" + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Native Wayland liveview ต้องใช้ GStreamer GTK video sink โปรดติดตั้งปลั๊กอิน gtksink สำหรับ GStreamer จากนั้นรีสตาร์ท OrcaSlicer" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index a5c11f5300..39ca72ae0f 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-08-21 23:18+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -2480,13 +2480,6 @@ msgstr "Kullanılabilir bir güncelleme var. Güncellemek için ön ayar paketi msgid "%s has been removed." msgstr "%s kaldırıldı." - -msgid "Select the language" -msgstr "Dili seçin" - -msgid "Language" -msgstr "Dil" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3734,11 +3727,15 @@ msgstr "Geçerli filamenti Filament Track Switch'te geri çek" msgid "Switch track at Filament Track Switch" msgstr "Filament Track Switch'te hattı değiştir" -msgid "The maximum temperature cannot exceed " -msgstr "Maksimum sıcaklık şu değeri aşamaz: " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Maksimum sıcaklık %d değerini aşamaz" -msgid "The minmum temperature should not be less than " -msgstr "Minimum sıcaklık şu değerden az olamaz: " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Minimum sıcaklık %d değerinden az olamaz" # AI Translated msgid "Type to filter..." @@ -4641,6 +4638,15 @@ msgstr "" "Geçici G-code'un çıkış G-code'a kopyalanması başarısız oldu. Belki SD kart yazma kilitlidir.\n" "Hata mesajı: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Geçici G-code'un çıktı G-code'a kopyalanması başarısız oldu.\n" +"Hata mesajı: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Geçici G-code'un çıkış G-code'a kopyalanması başarısız oldu. Hedef cihazda sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı deneyin. Bozuk çıktı G-code %1%.tmp konumunda." @@ -5381,10 +5387,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Değer %s aralık dışında. Geçerli aralık %d ile %d arasındadır." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%% mi yoksa %s %s mi?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%% mi yoksa %s %s mi?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5410,22 +5417,18 @@ msgstr "Geçersiz format. Beklenen vektör formatı: \"%1%\"" msgid "System agents" msgstr "Sistem aracıları" -# AI Translated -msgid "No plugin selected" -msgstr "Eklenti seçilmedi" - # AI Translated msgid "Add plugin" msgstr "Eklenti ekle" -# AI Translated -msgid "Select plugin" -msgstr "Eklenti seç" - # AI Translated msgid "Remove plugin" msgstr "Eklentiyi kaldır" +# AI Translated +msgid "No plugin selected" +msgstr "Eklenti seçilmedi" + # AI Translated msgid "Configure" msgstr "Yapılandır" @@ -5683,14 +5686,20 @@ msgstr "Optimum'a Ayarla" msgid "Regroup filament" msgstr "Filamenti yeniden gruplandır" -msgid "up to" -msgstr "kadar" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "%1% mm'ye kadar" -msgid "above" -msgstr "üstünde" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "%1% mm üzerinde" -msgid "from" -msgstr "itibaren" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "%1% mm ile %2% mm arasında" msgid "Usage" msgstr "Kullan" @@ -6053,7 +6062,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "%d katmanında G-code yollarında çakışmalar bulundu, Z = %.2lfmm. Lütfen çakışan nesneleri daha uzağa ayırın (%s <-> %s)." @@ -6366,11 +6375,13 @@ msgstr "Projeyi farklı kaydet" msgid "Save current project as" msgstr "Mevcut projeyi farklı kaydet" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "3MF Yayınla" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Seçilen ayarların gömülü olduğu bir 3MF dosyası dışa aktar" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "3MF/STL/STEP/SVG/OBJ/AMF'yi içe aktar" @@ -7647,6 +7658,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Alt" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Bu ayar bir eklenti yeteneği türü belirtmiyor." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Bu ayar tanınmayan bir eklenti yeteneği türü belirtiyor: " + # AI Translated msgid "Plugin Selection" msgstr "Eklenti Seçimi" @@ -8215,11 +8234,13 @@ msgstr "Lütfen bu ön ayarlar içindeki G-code'larının makineye herhangi bir msgid "Customized Preset" msgstr "Özel Ayar" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Bazı yayınlanan ayarlar uygulanamadı:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Bazı filament yuvaları değiştirildi:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Step dosyasındaki bileşenlerin adı UTF-8 formatında değil!" @@ -8630,13 +8651,17 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda görüntülenebiliyor." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "3MF dosyasını şu adla yayınla:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Yayınlanan 3MF dosyası dışa aktarılamadı.\n" +"Lütfen klasörün çevrimiçi olarak var olup olmadığını veya dosyanın başka programlarda açık olup olmadığını kontrol edin." msgid "Publish" msgstr "Yayınla" @@ -8854,7 +8879,6 @@ msgstr "Devam etmek istiyor musun?" msgid "Language selection" msgstr "Dil seçimi" - msgid "Asia-Pacific" msgstr "Asya Pasifik" @@ -8959,6 +8983,9 @@ msgstr "Mevcut Örnek Yolu: " msgid "General" msgstr "Genel" +msgid "Language" +msgstr "Dil" + msgid "Metric" msgstr "Metrik" @@ -9423,9 +9450,6 @@ msgstr "Dilimlenmiş önizlemede katman kaydırıcısı gezdirilirken, geçerli msgid "Dimmed layer brightness" msgstr "Karartılmış katman parlaklığı" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9841,63 +9865,80 @@ msgstr "Veriler yükleniyor" msgid "Jump to webpage" msgstr "Web sayfasına atla" +# AI Translated msgid "Material" -msgstr "" +msgstr "Malzeme" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Karışık filament" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Bazı karışık filamentler, yayınlanmayacak filamentlere bağlıdır:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (karışık)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% için %2% gerekiyor, ancak o etkin değil." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% için %2% gerekiyor, ancak malzemesi yayınlanmayacak." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Bir karışık filamenti yayınlamak için kullandığı her filamenti etkinleştirin ve Tam Yayınlama'yı seçin ya da Tür gereksinimini karşılayın." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Yine de yayınla" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "3MF Yayınla..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "3MF dosyasında hangi ayarların yayınlanacağını seçin" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "3MF Yayınlama Wiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "3MF Yayınlama Video Kılavuzu" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Karışık filament - yukarıdaki \"Aktif et\" seçildiğinde bir bütün olarak yayınlanır" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Bu karışık filamenti yayınla ve bileşen filamentlerini etkinleştir + tam olarak yayınla" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Bu filament yuvasını 3MF dosyasında yayınla" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Tam Yayınlama" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Bu yuvadaki filamentin tamamını 3MF dosyasına göm" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Seçilmeyenleri filtrele" #, c-format, boost-format msgid "Save %s as" @@ -9916,6 +9957,10 @@ msgstr "Üst ön ayardan devralınan tüm değerleri bu ön ayara kopyalar ve ü msgid "Detach from parent" msgstr "Ebeveynden ayrıl" +# AI Translated +msgid "Save without parent" +msgstr "Ebeveyn olmadan kaydet" + # AI Translated msgid "Unique preset" msgstr "Bağımsız ön ayar" @@ -10630,9 +10675,17 @@ msgstr "Topaklanma tespiti için bir ana kule gereklidir. Prime tower olmayan mo msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Hem hassas Z yüksekliğini hem de hazırlık kulesini etkinleştirmek dilimleme hatalarına neden olabilir. Yine de hassas Z yüksekliğini etkinleştirmek istiyor musunuz?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Pürüzsüz timelapse her katmanda bir prime kulesi gerektirir; bu da \"Seyrek katman yok\" ile bağdaşmaz. \"Seyrek katman yok\" kapatıldı." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor musunuz?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Seyrek katman yok\", her katmanda bir prime kulesi gerektiren pürüzsüz timelapse ile bağdaşmaz. Timelapse geleneksel moda geçirildi." + msgid "Still print by object?" msgstr "Hala nesneye göre yazdırıyor musunuz?" @@ -11011,9 +11064,6 @@ msgstr "Uyumlu süreç profilleri" msgid "Printable space" msgstr "Plaka Ayarı" -msgid "Printer Agent" -msgstr "Yazıcı Aracısı" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Yazıcı iletişimi için ağ aracısı uygulamasını seçin. Kullanılabilir aracılar başlangıçta kaydedilir." @@ -11434,14 +11484,6 @@ msgstr "Ekstruder sayısı" msgid "Capabilities" msgstr "Yetenekler" -# AI Translated -msgid "Left: " -msgstr "Sol: " - -# AI Translated -msgid "Right: " -msgstr "Sağ: " - msgid "Show all presets (including incompatible)" msgstr "Tüm ön ayarları göster (uyumsuz olanlar dahil)" @@ -12291,15 +12333,22 @@ msgstr "Onarım iptal edildi" msgid "Copying of file %1% to %2% failed: %3%" msgstr "%1% dosyasının %2% dosyasına kopyalanması başarısız oldu: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Yeni satıcı profilleri indiriliyor: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Yapılandırma paketi: %1% sürüm %2% olarak güncellendi" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Satıcı profilleri indirilemedi: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Yapılandırma güncellemelerinden önce kaydedilmemiş değişiklikleri kontrol etmeniz gerekir." -msgid "Configuration package: " -msgstr "Yapılandırma paketi: " - -msgid " updated to " -msgstr " güncellendi " - msgid "Open G-code file:" msgstr "G-code dosyasını açın:" @@ -12364,11 +12413,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping yalnızca Klipper, RepRapFirmware ve Marlin 2 tarafından desteklenir." -msgid "Grouping error: " -msgstr "Gruplama hatası: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Gruplama hatası: %1% sol nozula yerleştirilemez" -msgid " can not be placed in the " -msgstr " içine yerleştirilemez " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Gruplama hatası: %1% sağ nozula yerleştirilemez" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12483,6 +12536,10 @@ msgstr "%1% diğerlerine çok yakın ve çarpışmalara neden olabilir." msgid "%1% is too tall, and collisions will be caused." msgstr "%1% çok uzun ve çarpışmalara neden olacak." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Modelin ve prime kulesinin göreli konumu \"Seyrek katman yok\" özelliğinin gereksinimlerini karşılamıyor. Lütfen göreli konumlarını ayarlayın, model yüksekliğini azaltın veya \"Seyrek katman yok\" seçeneğini kapatın." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " Hariç tutma alanına çok yakın olduğundan yazdırma sırasında çarpışmalar meydana gelebilir." @@ -12848,6 +12905,9 @@ msgstr "G-code yerine 3MF kullan" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Yazıcı, baskı işi olarak 3MF dosyası kabul ediyorsa bunu etkinleştirin. Etkinleştirildiğinde Orca Slicer, dilimlenmiş dosyayı düz bir .gcode dosyası yerine .gcode.3mf olarak gönderir." +msgid "Printer Agent" +msgstr "Yazıcı Aracısı" + msgid "Select the network agent implementation for printer communication." msgstr "Yazıcı iletişimi için ağ aracısı uygulamasını seçin." @@ -13918,6 +13978,10 @@ msgstr "Hizalanmış doğrusal" msgid "Concentric" msgstr "Konsantrik" +# AI Translated +msgid "Spiral Inset" +msgstr "Spiral içe" + msgid "Hilbert Curve" msgstr "Hilbert eğrisi" @@ -14009,12 +14073,12 @@ msgstr "Üst yüzey doldurma sırası" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken üst yüzeylerin doldurulma yönü.\n" -"Dışarı, yüzeyin merkezinden başlar; böylece fazla malzeme en az göründüğü kenara doğru itilir. İçeri kenardan başlar ve merkezdeki dar kavislerle biter.\n" +"Merkezden başlayan bir desen kullanıldığında üst yüzeylerin doldurulma yönü (Konsantrik, Spiral içe, Arşimet akorları, Sekizgen spiral).\n" +"Dışarı, yüzeyin merkezinden başlar; böylece fazla malzeme, en az göründüğü kenara doğru itilir. İçeri, kenardan başlar ve merkezdeki dar kavislerle biter.\n" "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır." # AI Translated @@ -14023,12 +14087,12 @@ msgstr "Alt yüzey doldurma sırası" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken alt yüzeylerin doldurulma yönü.\n" -"İçeri, her yüzeye daha geniş dış kavislerle başlar; bu da merkezdeki dar kavislerin yapışmayabileceği yapı plakalarında ilk katman yapışmasını iyileştirir. Dışarı merkezden başlar ve fazla malzemeyi kenara doğru iter.\n" +"Merkezden başlayan bir desen kullanıldığında alt yüzeylerin doldurulma yönü (Konsantrik, Spiral içe, Arşimet akorları, Sekizgen spiral).\n" +"İçeri, her yüzeye daha geniş dış kavislerle başlar; bu da merkezdeki dar kavislerin tutunamayabileceği yataklarda ilk katman yapışmasını iyileştirir. Dışarı, merkezden başlar ve fazla malzemeyi kenara doğru iter.\n" "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır." msgid "Internal solid infill pattern" @@ -14134,6 +14198,14 @@ msgstr "Saat yönünün tersine" msgid "Clockwise" msgstr "Saat yönünde" +# AI Translated +msgid "Distance to rod" +msgstr "Mile mesafe" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Nozul ucunun milin uzak kenarına olan yatay mesafesi. Nesneye göre baskıda çarpışmalardan kaçınmak için kullanılır." + msgid "Height to rod" msgstr "Çubuğa kadar olan yükseklik" @@ -16353,6 +16425,20 @@ msgstr "Çıkıntılı duvarı algıla" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Desteklenmeyen duvarları en son yazdır" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Tamamen havada kalan duvar döngüleri, ancak onları tutabilecek bir şey oluştuğunda yazdırılır:\n" +"duvar sırası ne olursa olsun, kendi adasındaki diğer duvarlardan sonra, en içtekinden başlayarak ekstrüde edilirler.\n" +"Yalnızca bu katmanın köprülerinin sabitleyebileceği bir döngü, o köprüler yazdırılana kadar bekler; desteklenen bir duvar boyunca uzanan bir döngü ise, kendisine sabitleme olarak ihtiyaç duyan dolgudan önceki yerini korur." + # AI Translated msgid "Outer walls" msgstr "Dış duvarlar" @@ -16801,6 +16887,39 @@ msgstr "Döngülerde temizleme" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Kapalı döngü ekstrüzyonda dikişin görünürlüğünü en aza indirmek için, ekstruder döngüden ayrılmadan önce içeriye doğru küçük bir hareket gerçekleştirilir." +# AI Translated +msgid "Wipe inward" +msgstr "İçeri temizleme" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Yalnızca delik sınırları dahil olmak üzere dış duvarlara uygulanır. Temizleme sırasında sıcak nozulu yazdırılmış iç duvarlara doğru hareket ettirerek yeni yazdırılmış plastiğin yeniden ısınmasını ve dikiş izlerini azaltır.\n" +"\n" +"Özellikle temizleme izlerinin daha belirgin olduğu 0,1 mm'nin altındaki katman yüksekliklerinde yararlıdır.\n" +"\n" +"Yazdırılmış bitişik bir iç duvar yoksa (tek duvarlı alanlar veya Dış/İç duvar sırası) ya da örneğin dar köşelerde veya dikiş boşluklarında desteklenen bir içeri yol bulunamazsa normal temizlemeyi kullanır." + +# AI Translated +msgid "Wipe inward distance" +msgstr "İçeri temizleme mesafesi" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Temizleme yolunun dış çevreden uzağa kaydırıldığı mesafe; milimetre cinsinden veya dış duvarın gerçek ekstrüzyon genişliğinin yüzdesi olarak belirtilir.\n" +"\n" +"Örneğin 50%, yolu dış duvar genişliğinin yarısı kadar kaydırır. Etkin kaydırma, hem dış duvarın gerçek genişliğiyle hem de bitişik duvara olan mevcut boşlukla sınırlıdır; bu nedenle 100% üzerindeki değerlerin veya buna denk bir mutlak mesafenin ek bir etkisi olmaz. Kaydırmayı devre dışı bırakmak için 0 girin." + msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" @@ -17067,8 +17186,9 @@ msgstr "Yeni takımı baskı sıcaklığına ulaşmasını beklemeden alır, sil msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini yazdırmak için aşağı doğru hareket edecektir. Baskı ile çarpışma olmamasını sağlamak kullanıcının sorumluluğundadır." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda yazdırılmaz. Araç değişimi olan katmanlarda ekstruder silme kulesini yazdırmak için aşağı doğru hareket eder; böylece kule modelin altında kalır ve baskı kafasının ona uzanması gerekir. Bunun daha önce yazdırılmış bir nesneyle çarpışmasına yol açacak yerleşimler reddedilir. Her katmanda bir kule gerektiren pürüzsüz timelapse veya nozul birikme algılamayla birlikte etkisi yoktur." msgid "Prime all printing extruders" msgstr "Tüm ekstruderleri temizle" @@ -17094,6 +17214,34 @@ msgstr "" msgid "Cyclic" msgstr "Döngüsel" +# AI Translated +msgid "Cyclic order" +msgstr "Döngüsel sıra" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Döngüsel araç değiştirme sıralamasının kullandığı özel filament dizisi; virgülle ayrılmış filament numaraları olarak (örn. \"3,2,1,4\").\n" +"Her katman filamentlerini bu diziye göre yazdırır; listelenmeyen filamentler en son, artan sırada yazdırılır.\n" +"Filamentleri artan sırada dolaşmak için boş bırakın." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Döngüsel sırayı ilk katmana uygula" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Döngüsel araç değiştirme sırasını ilk katmana da uygular.\n" +"Varsayılan olarak kapalıdır, çünkü ilk katman bunun yerine en iyi tabla yapışması için sıralanır: ilk katmanın küçük, kırılgan ayrıntılarını yazdıran filamentler en son yazdırılır; böylece sonraki araç değişimleri ve seyahat hareketlerinin bu zayıf tutunan parçaları koparma olasılığı azalır. Bu ilk katman sırası, ayarlanmışsa özel bir ilk katman filament dizisini de dikkate alır. Döngüsel sıranın faydası (fazladan araç değişimleri her katmana soğuması için daha fazla süre tanır) yapışma için yavaş ve sıcak yazdırılan ilk katman için geçerli değildir.\n" +"Bunu yalnızca her katmanda, ilki dahil, tam olarak aynı araç dizisine ihtiyaç duyuyorsanız, söz konusu yapışma optimizasyonundan vazgeçerek etkinleştirin." + msgid "Slice gap closing radius" msgstr "Dilim aralığı kapanma yarıçapı" @@ -17103,9 +17251,6 @@ msgstr "Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından k msgid "Slicing Mode" msgstr "Dilimleme modu" -msgid "Other" -msgstr "Diğer" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -18121,6 +18266,14 @@ msgstr "Kontrol yok" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "G-code yol çakışmaları kontrolü gibi herhangi bir geçerlilik kontrolü çalıştırmayın." +# AI Translated +msgid "Strict mode" +msgstr "Katı mod" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Dilimleme, aksi halde yalnızca günlüğe yazılacak kritik olmayan bir uyarı verdiğinde sıfırdan farklı bir kodla çıkar; örneğin destek kapalıyken desteğe ihtiyaç duyan bir model. Bunu, fark edilmesi güç biçimde bozuk bir dilimlemeyi asla teslim etmemesi gereken CI veya betikli iş akışlarında kullanın. Bu tür her uyarı ayrıca, yalnızca Linux'ta yazılan result.json dosyasının `warnings` dizisinde kararlı bir sınıfla listelenir. Destek kontrolünü atlayan --no-check ile birlikte kullanılamaz." + msgid "Normative check" msgstr "Normatif kontrol" @@ -18133,11 +18286,28 @@ msgstr "Çıktı Model Bilgileri" msgid "This outputs the model’s information." msgstr "Modelin bilgilerini çıktıla." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Ağı incele (stdout'a JSON)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Yüklenen her nesnenin JSON özetini stdout'a yazar ve ardından çıkar: sınırlayıcı kutuları ve üzerine yatırılabileceği dışbükey kabuk yüzleri ile bunların normalleri, alanları ve merkezleri. --ground-* seçeneklerinin arasından seçim yaptığı yüzler bunlardır. --info seçeneğinin makine tarafından okunabilir alternatifi." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Boyamayı incele (stdout'a JSON)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Yüklenen modelde halihazırda saklanan her boyalı katmanın (destekler, dikiş, MMU rengi, pütürlü yüzey) yapılandırılmış bir JSON özetini — duruma göre yüzey sayısı, yüzey alanı ve ağa göre sınırlayıcı kutu — yazar ve ardından çıkar. Arayüzde boyama araçlarını açmanın makine tarafından okunabilir alternatifi." + msgid "Export Settings" msgstr "Dışa Aktarma Ayarları" -msgid "This exports settings to a file." -msgstr "Ayarları bir dosyaya aktarın." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Bu, ayarları bir dosyaya aktarır. stdout'a yazmak için - kullanın." msgid "Send progress to pipe" msgstr "İlerlemeyi kanala gönder" @@ -18193,6 +18363,30 @@ msgstr "Y etrafında döndür" msgid "Rotation angle around the Y axis in degrees." msgstr "Y ekseni etrafında derece cinsinden dönüş açısı." +# AI Translated +msgid "Ground largest face" +msgstr "En büyük yüze yatır" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Her nesneyi dışbükey kabuğunun en büyük yüzüne yatırır ve yatağa bırakır. Eşit büyüklükteki yüzler arasından zaten aşağı bakan yüz korunur. Üzerine oturacak kadar büyük bir yüzü olmayan nesneler olduğu gibi bırakılır. Dönüşümler komut satırı sırasına göre çalışır; bu nedenle bu seçenekten önce verilen döndürmeler dikkate alınır. --orient 1 tüm dönüşümlerden sonra çalışır ve yönlendirmeyi değiştirir." + +# AI Translated +msgid "Ground face by normal" +msgstr "Normale göre yüze yatır" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Her nesneyi, dışa bakan normali NX,NY,NZ yönüne en yakın olan dışbükey kabuk yüzüne yatırır ve yatağa bırakır. Yön, bu seçenekten önce verilen döndürmeleri içeren ve giriş dosyası nesneyi döndürmediği sürece tabla eksenleriyle örtüşen nesne koordinatlarındadır. Örneğin 1,0,0 nesneyi +X tarafına dikey olarak oturtur. --orient 1 tüm dönüşümlerden sonra çalışır ve yönlendirmeyi değiştirir." + +# AI Translated +msgid "Ground face at point" +msgstr "Noktadaki yüze yatır" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Her nesneyi, X,Y,Z noktasını içeren dışbükey kabuk yüzüne yatırır ve yatağa bırakır. Nokta, bu seçenekten önce verilen döndürmeleri içeren nesne koordinatlarındadır; --inspect-mesh yüz merkezlerini bu koordinatlarda bildirir. Böyle bir yüzü olmayan nesneler olduğu gibi bırakılır ve hiçbir nesnede böyle bir yüz yoksa çalışma başarısız olur. --orient 1 tüm dönüşümlerden sonra çalışır ve yönlendirmeyi değiştirir." + msgid "Scale the model by a float factor." msgstr "Modeli kayan nokta faktörüne göre ölçeklendirin." @@ -21388,14 +21582,17 @@ msgstr "Bu eylem geri alınamaz. Devam etmek?" msgid "Skipping objects." msgstr "Nesneleri atlama." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Malzeme Oranı" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Model Yüksekliği" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Oran" msgid "Select Filament" msgstr "Filament Seçin" @@ -21679,12 +21876,14 @@ msgid "Drying-Dehumidifying" msgstr "Kurutma-Nem Alma" # AI Translated -msgid " maximum drying temperature is " -msgstr " için maksimum kurutma sıcaklığı " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s için maksimum kurutma sıcaklığı %d°C'dir." # AI Translated -msgid " minimum drying temperature is " -msgstr " için minimum kurutma sıcaklığı " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s için minimum kurutma sıcaklığı %d°C'dir." # AI Translated msgid "This filament may not be completely dried." @@ -22131,6 +22330,97 @@ msgstr "" "Eğilmeyi önleyin\n" "ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?" +#~ msgid "Other" +#~ msgstr "Diğer" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Sol: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Sağ: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Maksimum sıcaklık şu değeri aşamaz: " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Minimum sıcaklık şu değerden az olamaz: " + +#~ msgid "up to" +#~ msgstr "kadar" + +#~ msgid "above" +#~ msgstr "üstünde" + +#~ msgid "from" +#~ msgstr "itibaren" + +#~ msgid "Configuration package: " +#~ msgstr "Yapılandırma paketi: " + +#~ msgid " updated to " +#~ msgstr " güncellendi " + +#~ msgid "Grouping error: " +#~ msgstr "Gruplama hatası: " + +#~ msgid " can not be placed in the " +#~ msgstr " içine yerleştirilemez " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " için maksimum kurutma sıcaklığı " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " için minimum kurutma sıcaklığı " + +# AI Translated +#~ msgid "needs" +#~ msgstr "şunu gerektirir" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "etkin değil" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "malzeme yayınlanmadı" + +#~ msgid "Select the language" +#~ msgstr "Dili seçin" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Eklenti seç" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken üst yüzeylerin doldurulma yönü.\n" +#~ "Dışarı, yüzeyin merkezinden başlar; böylece fazla malzeme en az göründüğü kenara doğru itilir. İçeri kenardan başlar ve merkezdeki dar kavislerle biter.\n" +#~ "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken alt yüzeylerin doldurulma yönü.\n" +#~ "İçeri, her yüzeye daha geniş dış kavislerle başlar; bu da merkezdeki dar kavislerin yapışmayabileceği yapı plakalarında ilk katman yapışmasını iyileştirir. Dışarı merkezden başlar ve fazla malzemeyi kenara doğru iter.\n" +#~ "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini yazdırmak için aşağı doğru hareket edecektir. Baskı ile çarpışma olmamasını sağlamak kullanıcının sorumluluğundadır." + +#~ msgid "This exports settings to a file." +#~ msgstr "Ayarları bir dosyaya aktarın." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Yerel Wayland canlı görüntüsü, GStreamer GTK video alıcısını gerektirir. Lütfen GStreamer için gtksink eklentisini yükleyin ve ardından OrcaSlicer'ı yeniden başlatın." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index c3ac201896..9232201869 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -2424,13 +2424,6 @@ msgstr "Доступне оновлення. Відкрийте вікно на msgid "%s has been removed." msgstr "%s вилучено." - -msgid "Select the language" -msgstr "Вибрати мову" - -msgid "Language" -msgstr "Мова" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "Не вдалося перемкнути Orca Slicer на мову %s." @@ -3666,11 +3659,15 @@ msgstr "Відвести назад поточний філамент на Filam msgid "Switch track at Filament Track Switch" msgstr "Перемкнути доріжку на Filament Track Switch" -msgid "The maximum temperature cannot exceed " -msgstr "Максимальна температура не повинна перевищувати " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Максимальна температура не повинна перевищувати %d" -msgid "The minmum temperature should not be less than " -msgstr "Мінімальна температура не повинна бути нижчою ніж " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Мінімальна температура не повинна бути нижчою ніж %d" msgid "Type to filter..." msgstr "Вводьте для фільтру..." @@ -4577,6 +4574,15 @@ msgstr "" "Не вдалося скопіювати тимчасовий G-код у місцезнаходження вихідного файлу G-коду. Чи може ваша SD карта захищена від запису?\n" "Повідомлення про помилку: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Не вдалося скопіювати тимчасовий G-код у вихідний G-код.\n" +"Повідомлення про помилку: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Не вдалося скопіювати тимчасовий G-код у вихідний G-код. Можливо, проблема з цільовим пристроєм, спробуйте експортувати ще раз або використати інший пристрій. Пошкоджений вихідний G-код - %1% .tmp." @@ -5329,10 +5335,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Значення %s знаходиться за межами діапазону. Дійсний діапазон від %d до %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Це %s%% або %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Це %s%% або %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5359,22 +5366,18 @@ msgstr "Невірний формат. Очікуваний векторний msgid "System agents" msgstr "Системні агенти" -# AI Translated -msgid "No plugin selected" -msgstr "Плагін не вибрано" - # AI Translated msgid "Add plugin" msgstr "Додати плагін" -# AI Translated -msgid "Select plugin" -msgstr "Вибрати плагін" - # AI Translated msgid "Remove plugin" msgstr "Вилучити плагін" +# AI Translated +msgid "No plugin selected" +msgstr "Плагін не вибрано" + # AI Translated msgid "Configure" msgstr "Налаштувати" @@ -5640,14 +5643,20 @@ msgstr "Встановити до оптимального" msgid "Regroup filament" msgstr "Перегрупувати філамент" -msgid "up to" -msgstr "аж до" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "до %1% мм" -msgid "above" -msgstr "вище" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "вище %1% мм" -msgid "from" -msgstr "від" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "від %1% до %2% мм" msgid "Usage" msgstr "Використання" @@ -6012,7 +6021,7 @@ msgid "Size:" msgstr "Розмір:" # AI Translated -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Виявлено конфлікти шляхів G-коду на шарі %d, Z = %.2lf мм. Будь ласка, рознесіть конфліктуючі обʼєкти далі один від одного (%s <-> %s)." @@ -6335,11 +6344,13 @@ msgstr "Зберегти проєкт як" msgid "Save current project as" msgstr "Зберегти поточний проєкт як" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Публікувати 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Експортувати файл 3MF із вбудованими вибраними налаштуваннями" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Імпорт 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7631,6 +7642,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Низ" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Це налаштування не вказує тип можливості плагіна." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Це налаштування вказує нерозпізнаний тип можливості плагіна: " + # AI Translated msgid "Plugin Selection" msgstr "Вибір плагіна" @@ -8223,11 +8242,13 @@ msgstr "Будь ласка, підтвердьте, що G-коди в цих msgid "Customized Preset" msgstr "Пристосований пресет" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Деякі опубліковані налаштування не вдалося застосувати:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Деякі слоти філаменту було змінено:" # AI Translated msgid "Component name(s) inside step file not in UTF-8 format!" @@ -8641,13 +8662,17 @@ msgstr "Зберегти нарізаний файл як:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "Файл %s надіслано до памʼяті принтера та доступний для перегляду на принтері." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Публікувати файл 3MF як:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Не вдалося експортувати опублікований файл 3MF.\n" +"Перевірте, чи доступна тека онлайн і чи не відкрито файл в інших програмах." msgid "Publish" msgstr "Публікувати" @@ -8868,7 +8893,6 @@ msgstr "Ви хочете продовжувати?" msgid "Language selection" msgstr "Вибір мови" - msgid "Asia-Pacific" msgstr "Азіатсько-Тихоокеанський регіон" @@ -8976,6 +9000,9 @@ msgstr "Шлях Поточної Інсталяції: " msgid "General" msgstr "Загальні" +msgid "Language" +msgstr "Мова" + msgid "Metric" msgstr "Метрика" @@ -9436,9 +9463,6 @@ msgstr "Під час прокручування повзунка шарів у msgid "Dimmed layer brightness" msgstr "Яскравість затемнених шарів" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9844,63 +9868,80 @@ msgstr "Відвантаження даних" msgid "Jump to webpage" msgstr "Перейти на вебсторінку" +# AI Translated msgid "Material" -msgstr "" +msgstr "Матеріал" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Змішаний філамент" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Деякі змішані філаменти залежать від філаментів, які не будуть опубліковані:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Філамент %d (змішаний)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% потребує %2%, але його не ввімкнено." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% потребує %2%, але його матеріал не буде опубліковано." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Щоб опублікувати змішаний філамент, увімкніть кожен філамент, який він використовує, і виберіть «Повна публікація» або виконайте його вимогу «Тип»." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Опублікувати попри це" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Публікувати 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Виберіть, які налаштування буде опубліковано у файлі 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Енциклопедія з публікації 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Відеопосібник з публікації 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Змішаний філамент — публікується цілком, коли вище вибрано «Увімкнути»" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Опублікувати цей змішаний філамент та увімкнути + повністю опублікувати його складові філаменти" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Опублікувати цей слот філаменту у файлі 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Повна публікація" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Вбудувати весь філамент цього слота у файл 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Фільтрувати невибрані" #, c-format, boost-format msgid "Save %s as" @@ -9920,6 +9961,10 @@ msgstr "Копіює в цей пресет усі значення, успад msgid "Detach from parent" msgstr "Відʼєднати від батьківського" +# AI Translated +msgid "Save without parent" +msgstr "Зберегти без батьківського" + # AI Translated msgid "Unique preset" msgstr "Незалежний пресет" @@ -10659,10 +10704,18 @@ msgstr "Для виявлення налипання потрібна підго msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Одночасне увімкнення точної висоти Z та підготовчої вежі може спричинити помилки нарізки. Ви все одно хочете увімкнути точну висоту Z?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Плавний таймлапс потребує підготовчої вежі на кожному шарі, що несумісно з параметром «Без розріджених шарів». Параметр «Без розріджених шарів» вимкнено." + # AI Translated msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Для плавного таймлапсу потрібна підготовча вежа. Без підготовчої вежі на моделі можуть виникати дефекти. Ви хочете увімкнути підготовчу вежу?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "Параметр «Без розріджених шарів» несумісний із плавним таймлапсом, який потребує підготовчої вежі на кожному шарі. Таймлапс перемкнено в традиційний режим." + msgid "Still print by object?" msgstr "Все одно друкувати кожен обʼєкт окремо?" @@ -11053,9 +11106,6 @@ msgstr "Сумісні профілі процесів" msgid "Printable space" msgstr "Місце для друку" -msgid "Printer Agent" -msgstr "Агент принтера" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером. Доступні агенти реєструються під час запуску." @@ -11479,12 +11529,6 @@ msgstr "Кількість екструдерів" msgid "Capabilities" msgstr "Можливості" -msgid "Left: " -msgstr "Лівий: " - -msgid "Right: " -msgstr "Правий: " - msgid "Show all presets (including incompatible)" msgstr "Показувати всі профілі (включаючи несумісні)" @@ -12349,16 +12393,23 @@ msgstr "Ремонт скасовано" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Копіювання %1% у %2% не вдалося: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Завантаження нових профілів виробників: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Пакет конфігурації: %1% оновлено до %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Не вдалося завантажити профілі виробників: " + # AI Translated msgid "Please check any unsaved changes before updating the configuration." msgstr "Будь ласка, перевірте незбережені зміни перед оновленням конфігурації." -msgid "Configuration package: " -msgstr "Пакет конфігурації: " - -msgid " updated to " -msgstr " оновлено до " - msgid "Open G-code file:" msgstr "Відкрити файл G-коду:" @@ -12423,11 +12474,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input Shaping підтримується лише Klipper, RepRapFirmware і Marlin 2." -msgid "Grouping error: " -msgstr "Помилка групування: " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Помилка групування: %1% не можна розмістити в лівому соплі" -msgid " can not be placed in the " -msgstr " не можливо помістити у " +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Помилка групування: %1% не можна розмістити в правому соплі" msgid "Group error in manual mode. Please check nozzle count or regroup." msgstr "Помилка групування в ручному режимі. Перевірте кількість сопел або перегрупуйте." @@ -12541,6 +12596,10 @@ msgstr "%1% знаходиться надто близько до інших, щ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% занадто високий, і можуть виникнути зіткнення." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Взаємне розташування моделі та підготовчої вежі не відповідає вимогам функції «Без розріджених шарів». Змініть їхнє взаємне розташування, зменште висоту моделі або вимкніть параметр «Без розріджених шарів»." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " знаходиться надто близько до зони відчуження, при друку можуть виникати колізії." @@ -12919,6 +12978,9 @@ msgstr "Використовувати 3MF замість G-коду" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Увімкніть, якщо принтер приймає файл 3MF як завдання друку. Якщо увімкнено, Orca Slicer надсилає нарізаний файл як .gcode.3mf замість звичайного файлу .gcode." +msgid "Printer Agent" +msgstr "Агент принтера" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Виберіть реалізацію мережевого агента для звʼязку з принтером." @@ -14014,6 +14076,10 @@ msgstr "Вирівняний прямолінійний" msgid "Concentric" msgstr "Концентричний" +# AI Translated +msgid "Spiral Inset" +msgstr "Спіральний відступ" + msgid "Hilbert Curve" msgstr "Крива Гільберта" @@ -14104,13 +14170,13 @@ msgstr "Порядок заповнення верхньої поверхні" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Напрямок, у якому заповнюються верхні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n" -"Назовні починає з центру поверхні, тож надлишок матеріалу виштовхується до краю, де він найменш помітний. Усередину починає з краю та завершується щільними кривими в центрі.\n" -"Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку." +"Напрямок заповнення верхніх поверхонь під час використання шаблону, що йде від центру (Концентричний, Спіральний відступ, Хорди Архімеда, Спіральна октограма).\n" +"Назовні починає від центру поверхні, тож надлишок матеріалу виштовхується до краю, де він найменш помітний. Всередину починає від краю й завершується тісними вигинами в центрі.\n" +"Типово використовується порядок за найкоротшим шляхом, який може йти в будь-якому напрямку." # AI Translated msgid "Bottom surface fill order" @@ -14118,13 +14184,13 @@ msgstr "Порядок заповнення нижньої поверхні" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Напрямок, у якому заповнюються нижні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n" -"Усередину починає кожну поверхню з ширших зовнішніх кривих, що покращує зчеплення першого шару на столах, де щільні криві в центрі можуть не прилипати. Назовні починає з центру, виштовхуючи надлишок матеріалу до краю.\n" -"Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку." +"Напрямок заповнення нижніх поверхонь під час використання шаблону, що йде від центру (Концентричний, Спіральний відступ, Хорди Архімеда, Спіральна октограма).\n" +"Всередину починає кожну поверхню з ширших зовнішніх вигинів, що поліпшує прилипання першого шару до столів, до яких тісні вигини в центрі можуть не приставати. Назовні починає від центру, виштовхуючи надлишок матеріалу до краю.\n" +"Типово використовується порядок за найкоротшим шляхом, який може йти в будь-якому напрямку." msgid "Internal solid infill pattern" msgstr "Шаблон внутрішнього суцільного заповнення" @@ -14229,6 +14295,14 @@ msgstr "Проти годинникової стрілки" msgid "Clockwise" msgstr "За годинниковою стрілкою" +# AI Translated +msgid "Distance to rod" +msgstr "Відстань до штанги" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Горизонтальна відстань від кінчика сопла до дальшого краю штанги. Використовується для уникнення зіткнень під час друку по обʼєктах." + msgid "Height to rod" msgstr "Висота до сопла" @@ -16536,6 +16610,20 @@ msgstr "Виявлення стінок що нависають" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Визначити відсоток нависання відносно до ширини лінії та використовувати для друку іншу швидкість. Для 100%%-вого нависання використовується швидкість моста." +# AI Translated +msgid "Print unsupported walls last" +msgstr "Друкувати неопорні стінки останніми" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Контури стінок, що повністю висять у повітрі, друкуються лише тоді, коли їх є чим утримати:\n" +"вони екструдуються після інших стінок свого острова, починаючи з найвнутрішнішої, незалежно від порядку стінок.\n" +"Контур, який можуть закріпити лише мости цього шару, чекає, доки ці мости буде надруковано, тоді як контур, що йде вздовж опертої стінки, зберігає своє місце перед заповненням, якому він потрібен як якір." + # AI Translated msgid "Outer walls" msgstr "Зовнішні стінки" @@ -16982,6 +17070,39 @@ msgstr "Протирати на контурах" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Щоб звести до мінімуму видимість шва при екструзії із замкнутим контуром,Невеликий рух усередину виконується до виходу екструдера з контуру." +# AI Translated +msgid "Wipe inward" +msgstr "Протирання всередину" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Застосовується лише до зовнішніх стінок, зокрема до контурів отворів. Під час протирання переміщує гаряче сопло до вже надрукованих внутрішніх стінок, щоб зменшити повторне нагрівання щойно надрукованого пластику та сліди шва.\n" +"\n" +"Особливо корисно за висоти шару менше 0,1 мм, де сліди протирання помітніші.\n" +"\n" +"Використовує звичайне протирання, якщо поруч немає вже надрукованої внутрішньої стінки (ділянки з однією стінкою або порядок стінок Зовнішня/Внутрішня) або якщо не вдається знайти опертий шлях усередину, наприклад у тісних кутах чи розривах шва." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Відстань протирання всередину" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Відстань, на яку шлях протирання зміщується від зовнішнього контуру, задається в міліметрах або у відсотках від фактичної ширини екструзії зовнішньої стінки.\n" +"\n" +"Наприклад, 50% зміщує шлях на половину ширини зовнішньої стінки. Фактичне зміщення обмежується як реальною шириною зовнішньої стінки, так і доступним проміжком до сусідньої стінки, тому значення понад 100% або еквівалентна абсолютна відстань не дають додаткового ефекту. Задайте 0, щоб вимкнути зміщення." + msgid "Wipe before external loop" msgstr "Протирати перед зовнішнім контуром" @@ -17258,8 +17379,9 @@ msgstr "Бере новий інструмент, не чекаючи, доки msgid "No sparse layers (beta)" msgstr "Без розріджених шарів (бета)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Якщо увімкнено, вежа витирання не друкується на шарах без змін інструментів. На шарах із зміною інструменту екструдер рухатиметься вниз, щоб надрукувати вежу витирання. Користувач несе відповідальність за те, щоб не було зіткнення з друком." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Якщо увімкнено, вежу протирання не буде надруковано на шарах без змін інструменту. На шарах зі зміною інструменту екструдер опуститься вниз, щоб надрукувати вежу протирання, тож вежа опиняється нижче моделі, і головці доводиться тягнутися до неї вниз. Компонування, за яких це призвело б до зіткнення з уже надрукованим обʼєктом, відхиляються. Не діє за плавного таймлапсу чи виявлення налипань на соплі, яким потрібна вежа на кожному шарі." msgid "Prime all printing extruders" msgstr "Підготовка всіх друкуючих екструдерів" @@ -17284,6 +17406,34 @@ msgstr "" msgid "Cyclic" msgstr "Циклічно" +# AI Translated +msgid "Cyclic order" +msgstr "Циклічний порядок" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Власна послідовність філаментів, яку використовує циклічний порядок змін інструменту, у вигляді номерів філаментів через кому (напр. «3,2,1,4»).\n" +"Кожен шар друкує свої філаменти за цією послідовністю; філаменти, яких немає в переліку, друкуються останніми, за зростанням.\n" +"Залиште порожнім, щоб перебирати філаменти за зростанням." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Застосовувати циклічний порядок до першого шару" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Застосовує циклічний порядок змін інструменту також і до першого шару.\n" +"Типово це вимкнено, оскільки перший шар натомість упорядковується для найкращого прилипання до столу: філаменти, якими друкуються дрібні крихкі елементи першого шару, друкуються останніми, тож наступні зміни інструменту та переміщення рідше зривають ці слабко закріплені частини. Цей порядок першого шару враховує також власну послідовність філаментів для першого шару, якщо її задано. Перевага циклічного порядку (додаткові зміни інструменту дають кожному шару більше часу на охолодження) до першого шару не стосується, бо він друкується повільно й гарячим задля прилипання.\n" +"Вмикайте це, лише якщо вам потрібна точно та сама послідовність інструментів на кожному шарі, зокрема на першому, ціною цієї оптимізації прилипання." + msgid "Slice gap closing radius" msgstr "Радіус закриття пробілів під час нарізування" @@ -17293,9 +17443,6 @@ msgstr "Під час розрізання тріщини на трикутну msgid "Slicing Mode" msgstr "Режим нарізки" -msgid "Other" -msgstr "Інший" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Використовуйте «парний-непарний» для моделей літаків 3DLabPrint. Використовуйте «Закрити отвори», щоб закрити всі отвори в моделі." @@ -18331,6 +18478,14 @@ msgstr "Без перевірки" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Не виконувати жодних перевірок дійсності, наприклад перевірку конфліктів шляхів G-коду." +# AI Translated +msgid "Strict mode" +msgstr "Суворий режим" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Завершує роботу з ненульовим кодом, коли нарізка видає некритичне попередження, яке інакше лише записується в журнал, наприклад модель, що потребує підтримок, коли підтримки вимкнено. Використовуйте це в CI або скриптових конвеєрах, які ніколи не мають видавати непомітно зіпсовану нарізку. Кожне таке попередження також наводиться зі сталим класом у масиві `warnings` файлу result.json, який створюється лише в Linux. Не можна поєднувати з --no-check, який пропускає перевірку підтримок." + msgid "Normative check" msgstr "Нормативна перевірка" @@ -18343,11 +18498,28 @@ msgstr "Вихідна інформація про модель" msgid "This outputs the model’s information." msgstr "Виведіть інформацію про модель." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Перевірити сітку (JSON у stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "Виводить у stdout зведення JSON щодо кожного завантаженого обʼєкта й завершує роботу: його обмежувальні паралелепіпеди та грані опуклої оболонки, на які його можна покласти, з їхніми нормалями, площами й центрами. Саме з цих граней вибирають параметри --ground-*. Машиночитна альтернатива --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Перевірити малювання (JSON у stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "Виводить структуроване зведення JSON щодо кожного намальованого шару (підтримки, шов, колір MMU, шорстка поверхня), уже збереженого в завантаженій моделі, — кількість граней, площу поверхні та обмежувальний паралелепіпед у координатах сітки для кожного стану — і завершує роботу. Машиночитна альтернатива відкриттю інструментів малювання в інтерфейсі." + msgid "Export Settings" msgstr "Експортувати налаштування" -msgid "This exports settings to a file." -msgstr "Експортувати налаштування у файл." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Це експортує налаштування у файл. Використовуйте -, щоб записати їх у stdout." msgid "Send progress to pipe" msgstr "Надіслати прогрес до каналу" @@ -18403,6 +18575,30 @@ msgstr "Обертати навколо осі Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Кут обертання навколо осі Y у градусах." +# AI Translated +msgid "Ground largest face" +msgstr "Покласти на найбільшу грань" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладе кожен обʼєкт на найбільшу грань його опуклої оболонки й опускає його на стіл. З однакових за площею граней зберігається та, що вже обернена донизу. Обʼєкти без достатньо великої грані для опори лишаються без змін. Перетворення виконуються в порядку командного рядка, тож повороти, задані до цього параметра, враховуються. --orient 1 виконується після всіх перетворень і замінює орієнтацію." + +# AI Translated +msgid "Ground face by normal" +msgstr "Покласти на грань за нормаллю" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладе кожен обʼєкт на ту грань опуклої оболонки, зовнішня нормаль якої найближча до напрямку NX,NY,NZ, і опускає його на стіл. Напрямок задається в координатах обʼєкта, які включають повороти, задані до цього параметра, і збігаються з осями столу, якщо вхідний файл не повертає обʼєкт. Наприклад, 1,0,0 ставить обʼєкт на його бік +X. --orient 1 виконується після всіх перетворень і замінює орієнтацію." + +# AI Translated +msgid "Ground face at point" +msgstr "Покласти на грань у точці" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Кладе кожен обʼєкт на ту грань опуклої оболонки, що містить точку X,Y,Z, і опускає його на стіл. Точка задається в координатах обʼєкта, які включають повороти, задані до цього параметра; --inspect-mesh подає центри граней саме в них. Обʼєкти без такої грані лишаються без змін, а запуск завершується помилкою, якщо такої грані немає в жодного обʼєкта. --orient 1 виконується після всіх перетворень і замінює орієнтацію." + msgid "Scale the model by a float factor." msgstr "Масштабуйте модель за допомогою плаваючого коефіцієнта" @@ -21565,14 +21761,17 @@ msgstr "Дію не можливо завершити. Продовжити?" msgid "Skipping objects." msgstr "Пропускання обʼєктів." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Частка матеріалу" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Висота моделі" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Частка" msgid "Select Filament" msgstr "Вибрати філамент" @@ -21837,12 +22036,14 @@ msgid "Drying-Dehumidifying" msgstr "Сушіння — осушення" # AI Translated -msgid " maximum drying temperature is " -msgstr " максимальна температура сушіння — " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Максимальна температура сушіння для %s — %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " мінімальна температура сушіння — " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Мінімальна температура сушіння для %s — %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -22292,6 +22493,95 @@ msgstr "" "Уникнення деформації\n" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?" +#~ msgid "Other" +#~ msgstr "Інший" + +#~ msgid "Left: " +#~ msgstr "Лівий: " + +#~ msgid "Right: " +#~ msgstr "Правий: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Максимальна температура не повинна перевищувати " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Мінімальна температура не повинна бути нижчою ніж " + +#~ msgid "up to" +#~ msgstr "аж до" + +#~ msgid "above" +#~ msgstr "вище" + +#~ msgid "from" +#~ msgstr "від" + +#~ msgid "Configuration package: " +#~ msgstr "Пакет конфігурації: " + +#~ msgid " updated to " +#~ msgstr " оновлено до " + +#~ msgid "Grouping error: " +#~ msgstr "Помилка групування: " + +#~ msgid " can not be placed in the " +#~ msgstr " не можливо помістити у " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " максимальна температура сушіння — " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " мінімальна температура сушіння — " + +# AI Translated +#~ msgid "needs" +#~ msgstr "потребує" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "не увімкнено" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "матеріал не опубліковано" + +#~ msgid "Select the language" +#~ msgstr "Вибрати мову" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Вибрати плагін" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Напрямок, у якому заповнюються верхні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n" +#~ "Назовні починає з центру поверхні, тож надлишок матеріалу виштовхується до краю, де він найменш помітний. Усередину починає з краю та завершується щільними кривими в центрі.\n" +#~ "Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Напрямок, у якому заповнюються нижні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n" +#~ "Усередину починає кожну поверхню з ширших зовнішніх кривих, що покращує зчеплення першого шару на столах, де щільні криві в центрі можуть не прилипати. Назовні починає з центру, виштовхуючи надлишок матеріалу до краю.\n" +#~ "Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Якщо увімкнено, вежа витирання не друкується на шарах без змін інструментів. На шарах із зміною інструменту екструдер рухатиметься вниз, щоб надрукувати вежу витирання. Користувач несе відповідальність за те, щоб не було зіткнення з друком." + +#~ msgid "This exports settings to a file." +#~ msgstr "Експортувати налаштування у файл." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Нативний перегляд у Wayland потребує відеоприймача GStreamer GTK. Встановіть плагін gtksink для GStreamer, а потім перезапустіть OrcaSlicer." diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 4504b5c95c..65ad344552 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -2568,13 +2568,6 @@ msgstr "Có bản cập nhật khả dụng. Hãy mở hộp thoại gói cài msgid "%s has been removed." msgstr "%s đã bị xóa." - -msgid "Select the language" -msgstr "Chọn ngôn ngữ" - -msgid "Language" -msgstr "Ngôn ngữ" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3878,12 +3871,14 @@ msgid "Switch track at Filament Track Switch" msgstr "Chuyển đường dẫn tại Filament Track Switch" # AI Translated -msgid "The maximum temperature cannot exceed " -msgstr "Nhiệt độ tối đa không được vượt quá " +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "Nhiệt độ tối đa không được vượt quá %d" # AI Translated -msgid "The minmum temperature should not be less than " -msgstr "Nhiệt độ tối thiểu không được thấp hơn " +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "Nhiệt độ tối thiểu không được thấp hơn %d" # AI Translated msgid "Type to filter..." @@ -4834,6 +4829,15 @@ msgstr "" "Sao chép G-code tạm thời sang G-code đầu ra thất bại. Có thể thẻ SD bị khóa ghi?\n" "Thông báo lỗi: %1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"Sao chép G-code tạm sang G-code đầu ra thất bại.\n" +"Thông báo lỗi: %1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "Sao chép G-code tạm thời sang G-code đầu ra thất bại. Có thể có vấn đề với thiết bị đích, vui lòng thử xuất lại hoặc dùng thiết bị khác. G-code đầu ra bị hỏng ở %1%.tmp." @@ -5634,10 +5638,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "Giá trị %s nằm ngoài phạm vi. Phạm vi hợp lệ từ %d đến %d." #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"Là %s%% hay %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "Là %s%% hay %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5663,22 +5668,18 @@ msgstr "Định dạng không hợp lệ. Mong đợi định dạng vector: \"% msgid "System agents" msgstr "Tác nhân hệ thống" -# AI Translated -msgid "No plugin selected" -msgstr "Chưa chọn plugin" - # AI Translated msgid "Add plugin" msgstr "Thêm plugin" -# AI Translated -msgid "Select plugin" -msgstr "Chọn plugin" - # AI Translated msgid "Remove plugin" msgstr "Xóa plugin" +# AI Translated +msgid "No plugin selected" +msgstr "Chưa chọn plugin" + # AI Translated msgid "Configure" msgstr "Cấu hình" @@ -5960,14 +5961,20 @@ msgstr "Đặt về mức tối ưu" msgid "Regroup filament" msgstr "Nhóm lại filament" -msgid "up to" -msgstr "lên đến" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "lên đến %1% mm" -msgid "above" -msgstr "trên" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "trên %1% mm" -msgid "from" -msgstr "từ" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "từ %1% đến %2% mm" msgid "Usage" msgstr "Sử dụng" @@ -6351,7 +6358,7 @@ msgstr "Thể tích:" msgid "Size:" msgstr "Kích thước:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "Đã tìm thấy xung đột đường đi G-code tại lớp %d, Z = %.2lfmm. Vui lòng tách các vật thể xung đột ra xa hơn (%s <-> %s)." @@ -6683,11 +6690,13 @@ msgstr "Lưu dự án thành" msgid "Save current project as" msgstr "Lưu dự án hiện tại thành" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "Xuất bản 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "Xuất một tệp 3MF có nhúng các cài đặt đã chọn" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "Nhập 3MF/STL/STEP/SVG/OBJ/AMF" @@ -8016,6 +8025,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "Dưới" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "Cài đặt này không chỉ định loại năng lực plugin." + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "Cài đặt này chỉ định một loại năng lực plugin không nhận dạng được: " + # AI Translated msgid "Plugin Selection" msgstr "Chọn plugin" @@ -8629,11 +8646,13 @@ msgstr "Vui lòng xác nhận G-code trong các preset này an toàn để ngăn msgid "Customized Preset" msgstr "Preset tùy chỉnh" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "Không thể áp dụng một số cài đặt đã xuất bản:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "Một số khe filament đã bị thay đổi:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "Tên của các thành phần bên trong file STEP không phải định dạng UTF-8!" @@ -9062,13 +9081,17 @@ msgstr "Lưu file đã slice dưới dạng:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "File %s đã được gửi đến không gian lưu trữ của máy in và có thể được xem trên máy in." +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "Xuất bản tệp 3MF thành:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"Xuất tệp 3MF đã xuất bản thất bại.\n" +"Vui lòng kiểm tra xem thư mục có tồn tại trực tuyến không, hoặc có chương trình khác đang mở tệp này không." msgid "Publish" msgstr "Xuất bản" @@ -9303,7 +9326,6 @@ msgstr "Bạn có muốn tiếp tục?" msgid "Language selection" msgstr "Chọn ngôn ngữ" - msgid "Asia-Pacific" msgstr "Châu Á-Thái Bình Dương" @@ -9419,6 +9441,9 @@ msgstr "Đường dẫn phiên bản hiện tại: " msgid "General" msgstr "Chung" +msgid "Language" +msgstr "Ngôn ngữ" + msgid "Metric" msgstr "Hệ mét" @@ -9918,9 +9943,6 @@ msgstr "Khi kéo thanh trượt lớp trong bản xem trước đã slice, kết msgid "Dimmed layer brightness" msgstr "Độ sáng của lớp bị làm mờ" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -10357,63 +10379,80 @@ msgstr "Đang tải dữ liệu lên" msgid "Jump to webpage" msgstr "Chuyển đến trang web" +# AI Translated msgid "Material" -msgstr "" +msgstr "Vật liệu" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "Filament pha trộn" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "Một số filament pha trộn phụ thuộc vào các filament sẽ không được xuất bản:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "Filament %d (pha trộn)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% cần %2%, nhưng filament này chưa được bật." -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% cần %2%, nhưng vật liệu của nó sẽ không được xuất bản." +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "Để xuất bản một filament pha trộn, hãy bật mọi filament mà nó sử dụng rồi chọn Xuất bản đầy đủ, hoặc đáp ứng yêu cầu Loại của nó." +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "Vẫn xuất bản" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "Xuất bản 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "Chọn những cài đặt sẽ được xuất bản trong tệp 3MF" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "Wiki về Xuất bản 3MF" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "Hướng dẫn video về Xuất bản 3MF" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "Filament pha trộn - được xuất bản trọn bộ khi chọn \"Bật\" ở trên" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "Xuất bản filament pha trộn này và bật + xuất bản đầy đủ các filament thành phần của nó" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "Xuất bản khe filament này trong tệp 3MF" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "Xuất bản đầy đủ" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "Nhúng toàn bộ filament của khe này vào tệp 3MF" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "Lọc mục chưa chọn" #, c-format, boost-format msgid "Save %s as" @@ -10433,6 +10472,10 @@ msgstr "Sao chép tất cả các giá trị kế thừa từ preset cha vào pr msgid "Detach from parent" msgstr "Tách khỏi vật thể cha" +# AI Translated +msgid "Save without parent" +msgstr "Lưu không kèm vật thể cha" + # AI Translated msgid "Unique preset" msgstr "Preset độc lập" @@ -11195,9 +11238,17 @@ msgstr "Prime tower là bắt buộc để phát hiện vón cục. Nếu không msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "Bật cả chiều cao Z chính xác và tháp mồi có thể gây ra lỗi cắt lớp. Bạn vẫn muốn bật chiều cao Z chính xác?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "Timelapse mượt cần prime tower ở mọi lớp, điều này không tương thích với \"Không có lớp thưa\". \"Không có lớp thưa\" đã được tắt." + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "Cần có prime tower để timelapse mượt. Có thể có khuyết điểm trên model nếu không có prime tower. Bạn có muốn bật prime tower?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "\"Không có lớp thưa\" không tương thích với timelapse mượt, vốn cần prime tower ở mọi lớp. Timelapse đã chuyển sang chế độ truyền thống." + msgid "Still print by object?" msgstr "Vẫn in theo đối tượng?" @@ -11571,10 +11622,6 @@ msgstr "Hồ sơ quy trình tương thích" msgid "Printable space" msgstr "Không gian in" -# AI Translated -msgid "Printer Agent" -msgstr "Tác nhân máy in" - # AI Translated msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in. Các tác nhân khả dụng được đăng ký khi khởi động." @@ -11998,14 +12045,6 @@ msgstr "Số lượng đầu đùn" msgid "Capabilities" msgstr "Khả năng" -# AI Translated -msgid "Left: " -msgstr "Trái: " - -# AI Translated -msgid "Right: " -msgstr "Phải: " - msgid "Show all presets (including incompatible)" msgstr "Hiển thị tất cả preset (bao gồm cả không tương thích)" @@ -12921,15 +12960,22 @@ msgstr "Sửa chữa đã hủy" msgid "Copying of file %1% to %2% failed: %3%" msgstr "Sao chép file %1% sang %2% thất bại: %3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "Đang tải xuống hồ sơ nhà cung cấp mới: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "Gói cấu hình: %1% đã cập nhật lên %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "Tải xuống hồ sơ nhà cung cấp thất bại: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "Cần kiểm tra các thay đổi chưa lưu trước khi cập nhật cấu hình." -msgid "Configuration package: " -msgstr "Gói cấu hình: " - -msgid " updated to " -msgstr " đã cập nhật lên " - msgid "Open G-code file:" msgstr "Mở file G-code:" @@ -12996,12 +13042,14 @@ msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "Input shaping chỉ được Klipper, RepRapFirmware và Marlin 2 hỗ trợ." # AI Translated -msgid "Grouping error: " -msgstr "Lỗi nhóm: " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "Lỗi nhóm: %1% không thể đặt vào đầu phun trái" # AI Translated -msgid " can not be placed in the " -msgstr " không thể được đặt vào " +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "Lỗi nhóm: %1% không thể đặt vào đầu phun phải" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -13116,6 +13164,10 @@ msgstr "%1% quá gần các đối tượng khác, và có thể gây va chạm. msgid "%1% is too tall, and collisions will be caused." msgstr "%1% quá cao, và sẽ gây va chạm." +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "Vị trí tương đối giữa mô hình và prime tower không đáp ứng yêu cầu của tính năng \"Không có lớp thưa\". Vui lòng điều chỉnh vị trí tương đối của chúng, hạ chiều cao mô hình, hoặc tắt \"Không có lớp thưa\"." + msgid " is too close to exclusion area, there may be collisions when printing." msgstr " quá gần vùng loại trừ, có thể có va chạm khi in." @@ -13490,6 +13542,10 @@ msgstr "Dùng 3MF thay cho G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "Bật tùy chọn này nếu máy in nhận file 3MF làm tác vụ in. Khi bật, Orca Slicer sẽ gửi file đã slice dưới dạng .gcode.3mf thay vì file .gcode thuần." +# AI Translated +msgid "Printer Agent" +msgstr "Tác nhân máy in" + # AI Translated msgid "Select the network agent implementation for printer communication." msgstr "Chọn cách triển khai tác nhân mạng cho việc giao tiếp với máy in." @@ -14581,6 +14637,10 @@ msgstr "Thẳng hàng căn chỉnh" msgid "Concentric" msgstr "Đồng tâm" +# AI Translated +msgid "Spiral Inset" +msgstr "Xoắn ốc thụt vào" + msgid "Hilbert Curve" msgstr "Đường cong Hilbert" @@ -14672,13 +14732,13 @@ msgstr "Thứ tự lấp bề mặt trên" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Hướng lấp các bề mặt trên khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n" -"Ra ngoài bắt đầu từ tâm bề mặt, nhờ đó vật liệu dư bị đẩy về phía mép nơi ít nhìn thấy nhất. Vào trong bắt đầu từ mép và kết thúc bằng các đường cong hẹp ở tâm.\n" -"Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ." +"Hướng lấp đầy các bề mặt trên khi dùng mẫu xuất phát từ tâm (Đồng tâm, Xoắn ốc thụt vào, Dây cung Archimedes, Xoắn ốc bát giác).\n" +"Ra ngoài bắt đầu từ tâm bề mặt, nên vật liệu dư bị đẩy về phía mép, nơi ít lộ nhất. Vào trong bắt đầu từ mép và kết thúc bằng những đường cong hẹp ở tâm.\n" +"Mặc định dùng thứ tự theo đường đi ngắn nhất, có thể chạy theo hướng nào cũng được." # AI Translated msgid "Bottom surface fill order" @@ -14686,13 +14746,13 @@ msgstr "Thứ tự lấp bề mặt dưới" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"Hướng lấp các bề mặt dưới khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n" -"Vào trong bắt đầu mỗi bề mặt bằng các đường cong ngoài rộng hơn, giúp cải thiện độ bám lớp đầu tiên trên những bàn in mà các đường cong hẹp ở tâm có thể không dính. Ra ngoài bắt đầu từ tâm, đẩy vật liệu dư về phía mép.\n" -"Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ." +"Hướng lấp đầy các bề mặt dưới khi dùng mẫu xuất phát từ tâm (Đồng tâm, Xoắn ốc thụt vào, Dây cung Archimedes, Xoắn ốc bát giác).\n" +"Vào trong bắt đầu mỗi bề mặt bằng những đường cong ngoài rộng hơn, giúp lớp đầu tiên bám tốt hơn trên các bàn in mà những đường cong hẹp ở tâm có thể không dính. Ra ngoài bắt đầu từ tâm, đẩy vật liệu dư về phía mép.\n" +"Mặc định dùng thứ tự theo đường đi ngắn nhất, có thể chạy theo hướng nào cũng được." msgid "Internal solid infill pattern" msgstr "Mẫu infill đặc bên trong" @@ -14796,6 +14856,14 @@ msgstr "Ngược chiều kim đồng hồ" msgid "Clockwise" msgstr "Cùng chiều kim đồng hồ" +# AI Translated +msgid "Distance to rod" +msgstr "Khoảng cách tới thanh" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "Khoảng cách ngang từ mũi đầu phun tới mép xa hơn của thanh. Dùng để tránh va chạm khi in theo đối tượng." + msgid "Height to rod" msgstr "Chiều cao đến thanh" @@ -17070,6 +17138,20 @@ msgstr "Phát hiện thành nhô" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "Phát hiện phần trăm nhô tương đối với độ rộng đường và sử dụng tốc độ khác nhau để in. Đối với phần nhô 100%%, tốc độ cầu được sử dụng." +# AI Translated +msgid "Print unsupported walls last" +msgstr "In các thành không được đỡ sau cùng" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"Các vòng wall nằm hoàn toàn lơ lửng trên không chỉ được in khi đã có thứ gì đó giữ được chúng:\n" +"chúng được đùn sau các thành khác trong cùng đảo, bắt đầu từ vòng trong cùng, bất kể thứ tự thành là gì.\n" +"Một vòng mà chỉ các cầu của lớp này mới neo được sẽ đợi cho tới khi các cầu đó được in, trong khi một vòng chạy dọc theo một thành có điểm tựa vẫn giữ vị trí của nó trước infill, vốn cần nó làm điểm neo." + # AI Translated msgid "Outer walls" msgstr "Thành ngoài" @@ -17519,6 +17601,39 @@ msgstr "Lau trên vòng" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "Để giảm thiểu khả năng nhìn thấy đường nối trong đùn vòng kín, một chuyển động vào trong nhỏ được thực hiện trước khi extruder rời khỏi vòng." +# AI Translated +msgid "Wipe inward" +msgstr "Lau vào trong" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"Chỉ áp dụng cho các thành ngoài, kể cả biên của lỗ. Trong lúc lau, đầu phun nóng được đưa về phía các thành trong đã in để giảm việc nung lại phần nhựa vừa in và giảm vết đường nối.\n" +"\n" +"Đặc biệt hữu ích ở chiều cao lớp dưới 0,1 mm, nơi vết lau dễ thấy hơn.\n" +"\n" +"Dùng cách lau thông thường nếu chưa có thành trong liền kề nào được in (vùng chỉ có một thành hoặc thứ tự thành Ngoài/Trong), hoặc nếu không tìm được đường đi vào trong có điểm tựa, ví dụ ở các góc hẹp hay khe hở đường nối." + +# AI Translated +msgid "Wipe inward distance" +msgstr "Khoảng cách lau vào trong" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"Khoảng cách mà đường lau được dịch ra xa khỏi chu vi ngoài, tính bằng milimét hoặc theo phần trăm độ rộng đùn thực tế của thành ngoài.\n" +"\n" +"Ví dụ, 50% dịch đường đi một nửa độ rộng thành ngoài. Độ dịch thực tế bị giới hạn bởi cả độ rộng thật của thành ngoài lẫn khoảng trống còn lại tới thành liền kề, nên các giá trị trên 100% hoặc khoảng cách tuyệt đối tương đương sẽ không có thêm tác dụng. Đặt 0 để tắt việc dịch chuyển." + msgid "Wipe before external loop" msgstr "Lau trước vòng ngoài" @@ -17788,8 +17903,9 @@ msgstr "Lấy công cụ mới mà không chờ nó đạt nhiệt độ in, di msgid "No sparse layers (beta)" msgstr "Không có lớp thưa (beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "Nếu được bật, wipe tower sẽ không được in trên các lớp không có thay đổi công cụ. Trên các lớp có thay đổi công cụ, extruder sẽ di chuyển xuống để in wipe tower. Người dùng chịu trách nhiệm đảm bảo không có va chạm với bản in." +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "Nếu bật, wipe tower sẽ không được in ở những lớp không có đổi công cụ. Ở những lớp có đổi công cụ, extruder sẽ đi xuống để in wipe tower, nên tháp nằm thấp hơn mô hình và đầu công cụ phải với xuống tới đó. Những bố trí khiến điều này va chạm với một vật thể đã in sẽ bị từ chối. Không có tác dụng với timelapse mượt hoặc phát hiện đóng cục ở đầu phun, vì chúng cần có tháp ở mọi lớp." msgid "Prime all printing extruders" msgstr "Nạp tất cả extruder in" @@ -17815,6 +17931,34 @@ msgstr "" msgid "Cyclic" msgstr "Tuần hoàn" +# AI Translated +msgid "Cyclic order" +msgstr "Thứ tự vòng lặp" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"Trình tự filament tùy chỉnh mà thứ tự đổi công cụ theo vòng lặp sử dụng, viết dưới dạng các số filament ngăn cách bằng dấu phẩy (ví dụ \"3,2,1,4\").\n" +"Mỗi lớp in các filament của nó theo trình tự này; các filament không được liệt kê sẽ in sau cùng, theo thứ tự tăng dần.\n" +"Để trống để luân phiên các filament theo thứ tự tăng dần." + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "Áp dụng thứ tự vòng lặp cho lớp đầu tiên" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"Áp dụng thứ tự đổi công cụ theo vòng lặp cho cả lớp đầu tiên.\n" +"Mặc định tùy chọn này tắt, vì lớp đầu tiên được sắp xếp theo hướng bám dính đế tốt nhất: những filament in các chi tiết nhỏ, mỏng manh của lớp đầu tiên sẽ được in sau cùng, nhờ đó các lần đổi công cụ và di chuyển tiếp theo ít có khả năng làm bong những phần bám yếu đó. Thứ tự lớp đầu tiên này cũng tôn trọng trình tự filament tùy chỉnh cho lớp đầu tiên nếu có thiết lập. Lợi ích của thứ tự vòng lặp (thêm lần đổi công cụ giúp mỗi lớp có nhiều thời gian nguội hơn) không áp dụng cho lớp đầu tiên, vốn được in chậm và nóng để bám dính.\n" +"Chỉ bật tùy chọn này nếu bạn cần đúng cùng một trình tự công cụ ở mọi lớp, kể cả lớp đầu, đánh đổi bằng việc mất tối ưu bám dính nói trên." + msgid "Slice gap closing radius" msgstr "Bán kính đóng khe slice" @@ -17824,9 +17968,6 @@ msgstr "Vết nứt nhỏ hơn 2x bán kính đóng khe được lấp trong sli msgid "Slicing Mode" msgstr "Chế độ slice" -msgid "Other" -msgstr "Khác" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "Sử dụng \"Chẵn-lẻ\" cho model máy bay 3DLabPrint. Sử dụng \"Đóng lỗ\" để đóng tất cả các lỗ trong model." @@ -18859,6 +19000,14 @@ msgstr "Không kiểm tra" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "Không chạy bất kỳ kiểm tra tính hợp lệ nào, chẳng hạn như kiểm tra xung đột đường dẫn G-code." +# AI Translated +msgid "Strict mode" +msgstr "Chế độ nghiêm ngặt" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "Thoát với mã khác 0 khi việc slice phát sinh một cảnh báo không nghiêm trọng mà bình thường chỉ được ghi log, chẳng hạn mô hình cần support trong khi support đang tắt. Hãy dùng trong CI hoặc các quy trình chạy bằng script vốn không bao giờ được xuất ra kết quả slice hỏng một cách khó nhận ra. Mỗi cảnh báo như vậy cũng được liệt kê kèm một lớp ổn định trong mảng `warnings` của result.json, tệp chỉ được ghi trên Linux. Không thể kết hợp với --no-check, tùy chọn bỏ qua việc kiểm tra support." + msgid "Normative check" msgstr "Kiểm tra quy chuẩn" @@ -18871,11 +19020,28 @@ msgstr "Xuất thông tin model" msgid "This outputs the model’s information." msgstr "Xuất thông tin của model." +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "Kiểm tra lưới (JSON ra stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "In ra stdout bản tóm tắt JSON của từng vật thể đã nạp rồi thoát: các hộp bao của nó và các mặt bao lồi mà nó có thể nằm lên, kèm pháp tuyến, diện tích và tâm của chúng. Đây chính là những mặt mà các tùy chọn --ground-* lựa chọn. Lựa chọn thay thế đọc được bằng máy cho --info." + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "Kiểm tra phần vẽ (JSON ra stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "In bản tóm tắt JSON có cấu trúc của mọi lớp đã vẽ (support, đường nối, màu MMU, fuzzy skin) đang được lưu trên mô hình đã nạp — số mặt, diện tích bề mặt và hộp bao theo tọa độ lưới cho từng trạng thái — rồi thoát. Lựa chọn thay thế đọc được bằng máy cho việc mở các gizmo vẽ trong giao diện." + msgid "Export Settings" msgstr "Xuất cài đặt" -msgid "This exports settings to a file." -msgstr "Xuất cài đặt vào file." +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "Lệnh này xuất cài đặt ra một tệp. Dùng - để ghi chúng ra stdout." msgid "Send progress to pipe" msgstr "Gửi tiến trình đến pipe" @@ -18931,6 +19097,30 @@ msgstr "Xoay xung quanh Y" msgid "Rotation angle around the Y axis in degrees." msgstr "Góc xoay xung quanh trục Y tính bằng độ." +# AI Translated +msgid "Ground largest face" +msgstr "Đặt lên mặt lớn nhất" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Đặt mỗi vật thể lên mặt lớn nhất của bao lồi rồi thả xuống bàn in. Trong số các mặt lớn bằng nhau, mặt đang hướng xuống sẽ được giữ lại. Những vật thể không có mặt đủ lớn để nằm lên sẽ được giữ nguyên. Các phép biến đổi chạy theo thứ tự trên dòng lệnh, nên các phép xoay đặt trước tùy chọn này vẫn được tôn trọng. --orient 1 chạy sau tất cả các phép biến đổi và thay thế hướng đặt." + +# AI Translated +msgid "Ground face by normal" +msgstr "Đặt lên mặt theo pháp tuyến" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Đặt mỗi vật thể lên mặt của bao lồi có pháp tuyến hướng ra ngoài gần nhất với hướng NX,NY,NZ rồi thả xuống bàn in. Hướng này tính theo tọa độ vật thể, vốn đã bao gồm các phép xoay đặt trước tùy chọn này và trùng với các trục của bàn in trừ khi tệp đầu vào có xoay vật thể. Ví dụ, 1,0,0 dựng vật thể lên mặt +X của nó. --orient 1 chạy sau tất cả các phép biến đổi và thay thế hướng đặt." + +# AI Translated +msgid "Ground face at point" +msgstr "Đặt lên mặt tại điểm" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "Đặt mỗi vật thể lên mặt của bao lồi có chứa điểm X,Y,Z rồi thả xuống bàn in. Điểm này tính theo tọa độ vật thể, vốn đã bao gồm các phép xoay đặt trước tùy chọn này; --inspect-mesh báo tâm các mặt theo đúng hệ tọa độ đó. Những vật thể không có mặt như vậy sẽ được giữ nguyên, và lần chạy sẽ thất bại nếu không vật thể nào có mặt đó. --orient 1 chạy sau tất cả các phép biến đổi và thay thế hướng đặt." + msgid "Scale the model by a float factor." msgstr "Tỷ lệ model theo hệ số số thực." @@ -22235,14 +22425,17 @@ msgstr "Thao tác này không thể hoàn tác. Tiếp tục?" msgid "Skipping objects." msgstr "Đang bỏ qua các vật thể." +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "Tỉ lệ vật liệu" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "Chiều cao mô hình" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "Tỉ lệ" # AI Translated msgid "Select Filament" @@ -22559,12 +22752,14 @@ msgid "Drying-Dehumidifying" msgstr "Sấy - Hút ẩm" # AI Translated -msgid " maximum drying temperature is " -msgstr " nhiệt độ sấy tối đa là " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "Nhiệt độ sấy tối đa của %s là %d°C." # AI Translated -msgid " minimum drying temperature is " -msgstr " nhiệt độ sấy tối thiểu là " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "Nhiệt độ sấy tối thiểu của %s là %d°C." # AI Translated msgid "This filament may not be completely dried." @@ -23015,6 +23210,101 @@ msgstr "" "Tránh cong vênh\n" "Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?" +#~ msgid "Other" +#~ msgstr "Khác" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "Trái: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "Phải: " + +# AI Translated +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "Nhiệt độ tối đa không được vượt quá " + +# AI Translated +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "Nhiệt độ tối thiểu không được thấp hơn " + +#~ msgid "up to" +#~ msgstr "lên đến" + +#~ msgid "above" +#~ msgstr "trên" + +#~ msgid "from" +#~ msgstr "từ" + +#~ msgid "Configuration package: " +#~ msgstr "Gói cấu hình: " + +#~ msgid " updated to " +#~ msgstr " đã cập nhật lên " + +# AI Translated +#~ msgid "Grouping error: " +#~ msgstr "Lỗi nhóm: " + +# AI Translated +#~ msgid " can not be placed in the " +#~ msgstr " không thể được đặt vào " + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " nhiệt độ sấy tối đa là " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " nhiệt độ sấy tối thiểu là " + +# AI Translated +#~ msgid "needs" +#~ msgstr "cần" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "chưa bật" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "vật liệu chưa xuất bản" + +#~ msgid "Select the language" +#~ msgstr "Chọn ngôn ngữ" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "Chọn plugin" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Hướng lấp các bề mặt trên khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n" +#~ "Ra ngoài bắt đầu từ tâm bề mặt, nhờ đó vật liệu dư bị đẩy về phía mép nơi ít nhìn thấy nhất. Vào trong bắt đầu từ mép và kết thúc bằng các đường cong hẹp ở tâm.\n" +#~ "Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ." + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "Hướng lấp các bề mặt dưới khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n" +#~ "Vào trong bắt đầu mỗi bề mặt bằng các đường cong ngoài rộng hơn, giúp cải thiện độ bám lớp đầu tiên trên những bàn in mà các đường cong hẹp ở tâm có thể không dính. Ra ngoài bắt đầu từ tâm, đẩy vật liệu dư về phía mép.\n" +#~ "Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ." + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "Nếu được bật, wipe tower sẽ không được in trên các lớp không có thay đổi công cụ. Trên các lớp có thay đổi công cụ, extruder sẽ di chuyển xuống để in wipe tower. Người dùng chịu trách nhiệm đảm bảo không có va chạm với bản in." + +#~ msgid "This exports settings to a file." +#~ msgstr "Xuất cài đặt vào file." + # AI Translated #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "Xem trực tiếp trên Wayland thuần cần GStreamer GTK video sink. Vui lòng cài đặt plugin gtksink cho GStreamer, sau đó khởi động lại OrcaSlicer." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index ff2e0fd940..84df96d57c 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -2361,13 +2361,6 @@ msgstr "有更新可用。打开预设包对话框进行更新。" msgid "%s has been removed." msgstr "%s 已被移除。" - -msgid "Select the language" -msgstr "选择语言" - -msgid "Language" -msgstr "语言" - #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." msgstr "切换 Orca Slicer 语言到 %s 失败。" @@ -3572,11 +3565,15 @@ msgstr "退回变轨器的当前耗材" msgid "Switch track at Filament Track Switch" msgstr "变轨器开关切换" -msgid "The maximum temperature cannot exceed " -msgstr "最高温度不可超过 " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "最高温度不可超过 %d" -msgid "The minmum temperature should not be less than " -msgstr "最低温度不可低于 " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "最低温度不可低于 %d" msgid "Type to filter..." msgstr "输入以筛选……" @@ -4437,6 +4434,15 @@ msgstr "" "将临时 G-Code 复制到输出 G-Code 失败。也许 SD 卡被写锁定了?\n" "错误消息:%1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"将临时 G-code 复制到输出 G-code 失败。\n" +"错误信息:%1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "将临时 G-Code 复制到输出 G-Code 失败。目标设备可能有问题,请再次尝试导出或使用其他设备。损坏的输出 G-Code 在 %1%.tmp。" @@ -5174,10 +5180,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "值 %s 超出了范围,有效的范围是从 %d 到 %d 。" #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"%s%%还是%s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "%s%%还是%s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5203,22 +5210,18 @@ msgstr "无效格式,应该是\"%1%\"这种数组格式" msgid "System agents" msgstr "系统代理" -# AI Translated -msgid "No plugin selected" -msgstr "未选择插件" - # AI Translated msgid "Add plugin" msgstr "添加插件" -# AI Translated -msgid "Select plugin" -msgstr "选择插件" - # AI Translated msgid "Remove plugin" msgstr "移除插件" +# AI Translated +msgid "No plugin selected" +msgstr "未选择插件" + # AI Translated msgid "Configure" msgstr "配置" @@ -5474,14 +5477,20 @@ msgstr "设置为最佳" msgid "Regroup filament" msgstr "重新组合耗材丝" -msgid "up to" -msgstr "达到" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "最高 %1% mm" -msgid "above" -msgstr "高于" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "高于 %1% mm" -msgid "from" -msgstr "从" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "从 %1% mm 到 %2% mm" msgid "Usage" msgstr "用法" @@ -5841,7 +5850,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "发现G-code路径在层%d,高度为%.2lf mm处有冲突。请将有冲突的对象分离得更远(%s <-> %s)。" @@ -6153,11 +6162,13 @@ msgstr "项目另存为" msgid "Save current project as" msgstr "项目另存为" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "发布 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "导出内嵌所选设置的 3MF 文件" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7411,6 +7422,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "底部" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "此设置未指定插件能力类型。" + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "此设置指定了无法识别的插件能力类型: " + msgid "Plugin Selection" msgstr "插件选择" @@ -7949,11 +7968,13 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造 msgid "Customized Preset" msgstr "自定义的预设" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "部分已发布的设置无法应用:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "部分耗材丝槽位已更改:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "STEP 文件中的部件名称不是 UTF-8 格式!" @@ -8360,13 +8381,17 @@ msgstr "切片文件另存为:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。" +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "发布 3MF 文件为:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"导出发布的 3MF 文件失败。\n" +"请检查该文件夹是否在线可用,或文件是否被其他程序打开。" msgid "Publish" msgstr "发布" @@ -8581,7 +8606,6 @@ msgstr "是否继续?" msgid "Language selection" msgstr "语言选择" - msgid "Asia-Pacific" msgstr "亚太" @@ -8679,6 +8703,9 @@ msgstr "当前实例路径" msgid "General" msgstr "常规" +msgid "Language" +msgstr "语言" + msgid "Metric" msgstr "公制(Metric)" @@ -9117,9 +9144,6 @@ msgstr "在切片预览中拖动图层滑块时,将当前图层下方的图层 msgid "Dimmed layer brightness" msgstr "调暗图层的亮度" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9519,63 +9543,80 @@ msgstr "正在上传数据" msgid "Jump to webpage" msgstr "跳转到网页" +# AI Translated msgid "Material" -msgstr "" +msgstr "材料" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "混合耗材丝" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "部分混合耗材丝依赖于不会被发布的耗材丝:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "耗材丝 %d(混合)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% 需要 %2%,但它未开启。" -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% 需要 %2%,但其材料不会被发布。" +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "要发布混合耗材丝,请开启它所使用的每一种耗材丝,并选择“完整发布”或满足其“类型”要求。" +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "仍然发布" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "发布 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "选择要在 3MF 文件中发布的设置" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "发布 3MF Wiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "发布 3MF 视频指南" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "混合耗材丝 - 在上方选择“开启”后将整体发布" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "发布此混合耗材丝,并开启 + 完整发布其组成耗材丝" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "在 3MF 文件中发布此耗材丝槽位" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "完整发布" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "将此槽位的整条耗材丝内嵌到 3MF 文件中" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "筛选未选项" #, c-format, boost-format msgid "Save %s as" @@ -9594,6 +9635,10 @@ msgstr "将父预设继承的所有数值复制到当前预设,并解除继承 msgid "Detach from parent" msgstr "与父级分离" +# AI Translated +msgid "Save without parent" +msgstr "不保留父级另存" + # AI Translated msgid "Unique preset" msgstr "独立预设" @@ -10264,9 +10309,17 @@ msgstr "结块检测需要 Prime 塔。没有主塔的模型可能存在缺陷 msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "同时启用精确Z高度和擦拭塔可能会导致切片错误。您仍然要启用精确Z高度吗?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "平滑模式的延时摄影需要每层都有擦拭塔,因此与“无稀疏层”不兼容。“无稀疏层”已关闭。" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "平滑模式的延时摄影需要擦料塔,否则打印件上可能会有瑕疵。您想打开擦料塔吗?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "“无稀疏层”与平滑模式的延时摄影不兼容,后者需要每层都有擦拭塔。延时摄影已切换为传统模式。" + msgid "Still print by object?" msgstr "仍然按对象打印吗?" @@ -10636,9 +10689,6 @@ msgstr "兼容的切片配置" msgid "Printable space" msgstr "可打印区域" -msgid "Printer Agent" -msgstr "打印机代理" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。" @@ -11040,14 +11090,6 @@ msgstr "挤出机数量" msgid "Capabilities" msgstr "能力" -# AI Translated -msgid "Left: " -msgstr "左: " - -# AI Translated -msgid "Right: " -msgstr "右: " - msgid "Show all presets (including incompatible)" msgstr "显示所有预设(包括不兼容的)" @@ -11892,15 +11934,22 @@ msgstr "修复被取消" msgid "Copying of file %1% to %2% failed: %3%" msgstr "从%1%拷贝文件到%2%失败:%3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "正在下载新的供应商配置: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "配置包:%1% 已更新到 %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "下载供应商配置失败: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "需要在配置更新之前检查没有保存的参数修改。" -msgid "Configuration package: " -msgstr "配置包:" - -msgid " updated to " -msgstr "更新到" - msgid "Open G-code file:" msgstr "打开G-code文件:" @@ -11960,11 +12009,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "输入整形仅受 Klipper、RepRapFirmware 和 Marlin 2 支持" -msgid "Grouping error: " -msgstr "分组错误:" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "分组错误:%1% 无法放入左喷嘴" -msgid " can not be placed in the " -msgstr "不能放置在" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "分组错误:%1% 无法放入右喷嘴" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12078,6 +12131,10 @@ msgstr "%1%离其它对象太近,可能会发生碰撞。" msgid "%1% is too tall, and collisions will be caused." msgstr "%1%太高,会发生碰撞。" +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "模型与擦拭塔的相对位置不满足“无稀疏层”功能的要求。请调整两者的相对位置、降低模型高度,或关闭“无稀疏层”。" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "离不可打印区域太近,打印时可能会发生碰撞。" @@ -12421,6 +12478,9 @@ msgstr "使用 3MF 代替 G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "如果打印机接受 3MF 文件作为打印任务,请启用此选项。启用后,Orca Slicer 将以 .gcode.3mf 格式发送切片文件,而不是普通的 .gcode 文件。" +msgid "Printer Agent" +msgstr "打印机代理" + msgid "Select the network agent implementation for printer communication." msgstr "选择打印机通信的网络代理实施。" @@ -13427,6 +13487,10 @@ msgstr "直线排列" msgid "Concentric" msgstr "同心" +# AI Translated +msgid "Spiral Inset" +msgstr "螺旋内缩" + msgid "Hilbert Curve" msgstr "希尔伯特曲线" @@ -13522,13 +13586,13 @@ msgstr "顶面填充顺序" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充顶面的方向。\n" -"向外从表面中心开始,因此多余的材料会被推向边缘等最不显眼的位置。向内从边缘开始,并以中心处的紧密曲线结束。\n" -"默认使用最短路径排序,可能沿任一方向进行。" +"使用以中心为起点的图案(同心、螺旋内缩、阿基米德和弦、八角螺旋)时,顶面的填充方向。\n" +"向外从表面中心开始,多余的材料会被推向边缘,在那里最不显眼。向内从边缘开始,以中心处的紧密曲线结束。\n" +"默认使用最短路径排序,方向可能是两者中的任意一种。" # AI Translated msgid "Bottom surface fill order" @@ -13536,13 +13600,13 @@ msgstr "底面填充顺序" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充底面的方向。\n" -"向内以较宽的外侧曲线开始每个表面,这可以改善在热床上的首层附着,因为中心处的紧密曲线可能无法粘牢。向外从中心开始,将多余的材料推向边缘。\n" -"默认使用最短路径排序,可能沿任一方向进行。" +"使用以中心为起点的图案(同心、螺旋内缩、阿基米德和弦、八角螺旋)时,底面的填充方向。\n" +"向内让每个表面从较宽的外侧曲线开始,可改善首层在热床上的粘接,尤其当中心处的紧密曲线不易粘牢时。向外从中心开始,将多余的材料推向边缘。\n" +"默认使用最短路径排序,方向可能是两者中的任意一种。" msgid "Internal solid infill pattern" msgstr "内部实心填充图案" @@ -13645,6 +13709,14 @@ msgstr "逆时针" msgid "Clockwise" msgstr "顺时针" +# AI Translated +msgid "Distance to rod" +msgstr "到杆的距离" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "喷嘴尖端到杆较远一侧边缘的水平距离。用于逐件打印时的避障。" + msgid "Height to rod" msgstr "到横杆高度" @@ -15809,6 +15881,20 @@ msgstr "识别悬垂外墙" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "检测悬垂相对于线宽的百分比,并应用不同的速度打印。100%%的悬垂将使用桥接速度。" +# AI Translated +msgid "Print unsupported walls last" +msgstr "最后打印无支撑的墙" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"完全悬空的墙闭环会等到有东西能够承托它们时才打印:\n" +"无论墙的顺序如何,它们都在同一岛屿的其他墙之后挤出,从最内侧开始。\n" +"只能由本层桥接锚定的闭环会等待这些桥接打印完成;而沿着有支撑的墙延伸的闭环则保持在填充之前的位置,因为填充需要它作为锚点。" + msgid "Outer walls" msgstr "外墙" @@ -16248,6 +16334,39 @@ msgstr "闭环擦拭" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "为了最大限度地减少闭环挤出中接缝的可见性,在挤出机离开环之前,会向内执行一个小小的移动。" +# AI Translated +msgid "Wipe inward" +msgstr "向内擦拭" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"仅适用于外墙,包括孔洞边界。擦拭时将高温喷嘴移向已打印的内墙,以减少刚打印塑料的二次受热和接缝痕迹。\n" +"\n" +"在层高低于 0.1 mm 时尤其有用,此时擦拭痕迹更明显。\n" +"\n" +"若相邻内墙尚未打印(单墙区域或外墙/内墙顺序),或找不到有支撑的向内路径(例如在锐角或接缝间隙处),则使用常规擦拭。" + +# AI Translated +msgid "Wipe inward distance" +msgstr "向内擦拭距离" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"擦拭路径偏离外墙轮廓的距离,以毫米或实际外墙挤出宽度的百分比指定。\n" +"\n" +"例如,50% 会将路径偏移外墙宽度的一半。实际偏移量同时受实际外墙宽度和到相邻墙的可用间距限制,因此超过 100% 的值或等效的绝对距离不会产生额外效果。设为 0 可禁用偏移。" + msgid "Wipe before external loop" msgstr "额外的外墙打印前擦拭" @@ -16509,8 +16628,9 @@ msgstr "拾取新工具头后不等待其达到打印温度,直接移动到擦 msgid "No sparse layers (beta)" msgstr "无稀疏层 (实验功能)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "如果启用,将不会在没有换色的层打印擦拭塔。存在换色的层时,挤出机将降低高度打印擦拭塔。用户应该确保不会与打印内容发生冲突。" +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "启用后,擦拭塔不会在没有换料的层上打印。在有换料的层上,挤出机会向下移动去打印擦拭塔,因此塔会低于模型,工具头必须向下伸到它那里。若这样会与已打印的对象发生碰撞,则该布局会被拒绝。对平滑模式的延时摄影或喷嘴结块检测无效,因为它们需要每层都有塔。" msgid "Prime all printing extruders" msgstr "所有挤出机画线" @@ -16536,6 +16656,34 @@ msgstr "" msgid "Cyclic" msgstr "循环" +# AI Translated +msgid "Cyclic order" +msgstr "循环顺序" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"循环换料排序所使用的自定义耗材丝序列,以逗号分隔的耗材丝编号表示(例如“3,2,1,4”)。\n" +"每一层按此序列打印其耗材丝;未列出的耗材丝最后打印,并按升序排列。\n" +"留空则按升序循环使用各耗材丝。" + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "对首层应用循环顺序" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"将循环换料顺序同样应用于首层。\n" +"默认关闭,因为首层改为按最佳热床粘接排序:打印首层细小脆弱特征的耗材丝会最后打印,这样后续的换料和空驶就不易将这些附着薄弱的部分蹭掉。若设置了自定义首层耗材丝序列,该首层顺序也会遵循它。循环顺序的好处(额外的换料让每层有更多冷却时间)并不适用于首层,因为首层为了粘接会以慢速高温打印。\n" +"仅当你需要包括首层在内的每一层都使用完全相同的换料顺序时才启用此项,代价是失去上述粘接优化。" + msgid "Slice gap closing radius" msgstr "切片间隙闭合半径" @@ -16545,9 +16693,6 @@ msgstr "在三角形网格切片过程中,小于2倍间隙闭合半径的裂 msgid "Slicing Mode" msgstr "切片模式" -msgid "Other" -msgstr "其他" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "对3DLabPrint的飞机模型使用 \"奇偶\"。使用 \"闭孔 \"来关闭模型上的所有孔。" @@ -17541,6 +17686,14 @@ msgstr "不进行检查" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "不运行任何有效性检查,例如G-code路径冲突检查。" +# AI Translated +msgid "Strict mode" +msgstr "严格模式" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "当切片产生原本仅记入日志的非严重警告时(例如禁用支撑却需要支撑的模型),以非零状态码退出。请在绝不能交付存在隐蔽缺陷切片结果的 CI 或脚本流程中使用。每条此类警告还会以稳定的类别列在 result.json 的 `warnings` 数组中,该文件仅在 Linux 上生成。不能与 --no-check 同时使用,后者会跳过支撑检查。" + msgid "Normative check" msgstr "规范性检查" @@ -17553,11 +17706,28 @@ msgstr "输出模型信息" msgid "This outputs the model’s information." msgstr "输出模型的信息。" +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "检查网格(JSON 输出到 stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "将每个已加载对象的 JSON 摘要输出到 stdout,然后退出:包括其包围盒,以及可供放置的凸包面及其法线、面积和中心。--ground-* 选项正是从这些面中选择。--info 的机器可读替代方案。" + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "检查绘制(JSON 输出到 stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "输出已加载模型上已保存的每个绘制图层(支撑、接缝、MMU 颜色、绒毛表面)的结构化 JSON 摘要 — 每种状态的面片数量、表面积和网格局部包围盒 — 然后退出。在图形界面中打开绘制工具的机器可读替代方案。" + msgid "Export Settings" msgstr "导出配置" -msgid "This exports settings to a file." -msgstr "导出配置到文件。" +# AI Translated +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "将设置导出到文件。使用 - 可将其写入 stdout。" msgid "Send progress to pipe" msgstr "将进度发送到管道" @@ -17613,6 +17783,30 @@ msgstr "绕 Y 旋转" msgid "Rotation angle around the Y axis in degrees." msgstr "绕 Y 轴的旋转角度(以度为单位)" +# AI Translated +msgid "Ground largest face" +msgstr "以最大面着床" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "将每个对象以其凸包的最大面放置,并落到热床上。若有多个同样大的面,则保留已经朝下的那一个。没有足够大可供放置的面的对象保持原样。变换按命令行中的先后顺序执行,因此在此选项之前给出的旋转会被保留。--orient 1 在所有变换之后执行,并会替换朝向。" + +# AI Translated +msgid "Ground face by normal" +msgstr "按法线以指定面着床" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "将每个对象以其凸包中外法线最接近方向 NX,NY,NZ 的面放置,并落到热床上。该方向使用对象坐标系,其中包含在此选项之前给出的旋转;除非输入文件旋转了该对象,否则它与打印板的坐标轴一致。例如,1,0,0 会让对象以 +X 面站立。--orient 1 在所有变换之后执行,并会替换朝向。" + +# AI Translated +msgid "Ground face at point" +msgstr "以指定点所在面着床" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "将每个对象以其凸包中包含点 X,Y,Z 的面放置,并落到热床上。该点使用对象坐标系,其中包含在此选项之前给出的旋转;--inspect-mesh 报告的面中心也使用该坐标系。没有此类面的对象保持原样;若所有对象都没有此类面,则本次运行失败。--orient 1 在所有变换之后执行,并会替换朝向。" + msgid "Scale the model by a float factor." msgstr "根据因数缩放模型" @@ -20709,14 +20903,17 @@ msgstr "此操作无法撤消。继续?" msgid "Skipping objects." msgstr "跳过对象。" +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "材料比例" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "模型高度" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "比例" msgid "Select Filament" msgstr "选择耗材" @@ -20974,12 +21171,14 @@ msgid "Drying-Dehumidifying" msgstr "干燥-除湿" # AI Translated -msgid " maximum drying temperature is " -msgstr " 最高干燥温度为 " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s 的最高干燥温度为 %d°C。" # AI Translated -msgid " minimum drying temperature is " -msgstr " 最低干燥温度为 " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s 的最低干燥温度为 %d°C。" # AI Translated msgid "This filament may not be completely dried." @@ -21424,6 +21623,97 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "Other" +#~ msgstr "其他" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "左: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "右: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "最高温度不可超过 " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "最低温度不可低于 " + +#~ msgid "up to" +#~ msgstr "达到" + +#~ msgid "above" +#~ msgstr "高于" + +#~ msgid "from" +#~ msgstr "从" + +#~ msgid "Configuration package: " +#~ msgstr "配置包:" + +#~ msgid " updated to " +#~ msgstr "更新到" + +#~ msgid "Grouping error: " +#~ msgstr "分组错误:" + +#~ msgid " can not be placed in the " +#~ msgstr "不能放置在" + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " 最高干燥温度为 " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " 最低干燥温度为 " + +# AI Translated +#~ msgid "needs" +#~ msgstr "需要" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "未开启" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "材料未发布" + +#~ msgid "Select the language" +#~ msgstr "选择语言" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "选择插件" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充顶面的方向。\n" +#~ "向外从表面中心开始,因此多余的材料会被推向边缘等最不显眼的位置。向内从边缘开始,并以中心处的紧密曲线结束。\n" +#~ "默认使用最短路径排序,可能沿任一方向进行。" + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充底面的方向。\n" +#~ "向内以较宽的外侧曲线开始每个表面,这可以改善在热床上的首层附着,因为中心处的紧密曲线可能无法粘牢。向外从中心开始,将多余的材料推向边缘。\n" +#~ "默认使用最短路径排序,可能沿任一方向进行。" + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "如果启用,将不会在没有换色的层打印擦拭塔。存在换色的层时,挤出机将降低高度打印擦拭塔。用户应该确保不会与打印内容发生冲突。" + +#~ msgid "This exports settings to a file." +#~ msgstr "导出配置到文件。" + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index e0e468fccf..b60602ca38 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-03 10:27+0800\n" +"POT-Creation-Date: 2026-09-17 12:41-0300\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -2425,13 +2425,6 @@ msgstr "有可用的更新。請開啟預設組合對話框進行更新。" msgid "%s has been removed." msgstr "%s 已移除。" - -msgid "Select the language" -msgstr "選擇語言" - -msgid "Language" -msgstr "語言" - # AI Translated #, c-format, boost-format msgid "Switching Orca Slicer to language %s failed." @@ -3670,11 +3663,15 @@ msgstr "在 Filament Track Switch 退回目前線材" msgid "Switch track at Filament Track Switch" msgstr "在 Filament Track Switch 切換軌道" -msgid "The maximum temperature cannot exceed " -msgstr "最高溫度不能超過 " +# AI Translated +#, c-format, boost-format +msgid "The maximum temperature cannot exceed %d" +msgstr "最高溫度不能超過 %d" -msgid "The minmum temperature should not be less than " -msgstr "最低溫度不應低於 " +# AI Translated +#, c-format, boost-format +msgid "The minimum temperature should not be less than %d" +msgstr "最低溫度不應低於 %d" msgid "Type to filter..." msgstr "輸入以篩選..." @@ -4550,6 +4547,15 @@ msgstr "" "錯誤訊息:%1%將臨時的 G-code 複製到輸出的 G-code 失敗 ,也許 SD 卡寫入被鎖定?\n" "錯誤訊息:%1%" +# AI Translated +#, boost-format +msgid "" +"Copying of the temporary G-code to the output G-code failed.\n" +"Error message: %1%" +msgstr "" +"將暫存 G-code 複製到輸出 G-code 失敗。\n" +"錯誤訊息:%1%" + #, boost-format msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp." msgstr "將臨時 G-code 複製到輸出 G-code 時失敗。目標裝置可能存在問題,請嘗試再次匯出或使用不同的裝置。損壞的 G-code 已輸出為 %1%.tmp。將臨時 G-code 複製到輸出 G-code 時失敗。目標裝置可能存在問題,請嘗試再次匯出或使用不同的裝置。損壞的 G-code 已輸出為 %1%.tmp。" @@ -5303,10 +5309,11 @@ msgid "Value %s is out of range. The valid range is from %d to %d." msgstr "數值 %s 超出範圍。有效範圍是從 %d 到 %d。" #, c-format, boost-format -msgid "" -"Is it %s%% or %s %s?" -msgstr "" -"是 %s%% 還是 %s %s?" +msgid "Is it %s%% or %s %s?" +msgstr "是 %s%% 還是 %s %s?" + +msgid "%" +msgstr "%" #, boost-format msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\"" @@ -5332,22 +5339,18 @@ msgstr "無效格式,應該是「%1%」這種格式" msgid "System agents" msgstr "系統代理程式" -# AI Translated -msgid "No plugin selected" -msgstr "未選擇外掛" - # AI Translated msgid "Add plugin" msgstr "新增外掛" -# AI Translated -msgid "Select plugin" -msgstr "選擇外掛" - # AI Translated msgid "Remove plugin" msgstr "移除外掛" +# AI Translated +msgid "No plugin selected" +msgstr "未選擇外掛" + # AI Translated msgid "Configure" msgstr "設定" @@ -5603,14 +5606,20 @@ msgstr "設為最佳" msgid "Regroup filament" msgstr "重新分組線材" -msgid "up to" -msgstr "達到" +# AI Translated +#, boost-format +msgid "up to %1% mm" +msgstr "最高 %1% mm" -msgid "above" -msgstr "高於" +# AI Translated +#, boost-format +msgid "above %1% mm" +msgstr "高於 %1% mm" -msgid "from" -msgstr "從" +# AI Translated +#, boost-format +msgid "from %1% to %2% mm" +msgstr "從 %1% mm 到 %2% mm" msgid "Usage" msgstr "使用情況" @@ -5970,7 +5979,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, boost-format +#, c-format, boost-format msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)." msgstr "發現 G-code 路徑在 %d 層,Z = %.2lf mm 處的衝突。請將有衝突的物件分離得更遠(%s <-> %s)。" @@ -6283,11 +6292,13 @@ msgstr "另存專案為" msgid "Save current project as" msgstr "將目前專案另存為" +# AI Translated msgid "Publish 3MF" -msgstr "" +msgstr "發布 3MF" +# AI Translated msgid "Export a 3MF file with the selected settings embedded" -msgstr "" +msgstr "匯出內嵌所選設定的 3MF 檔案" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF" @@ -7550,6 +7561,14 @@ msgctxt "Layers" msgid "Bottom" msgstr "底部" +# AI Translated +msgid "This setting does not specify a plugin capability type." +msgstr "此設定未指定外掛能力類型。" + +# AI Translated +msgid "This setting specifies an unrecognized plugin capability type: " +msgstr "此設定指定了無法識別的外掛能力類型: " + # AI Translated msgid "Plugin Selection" msgstr "外掛選擇" @@ -8110,11 +8129,13 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝 msgid "Customized Preset" msgstr "自訂預設" +# AI Translated msgid "Some published settings could not be applied:" -msgstr "" +msgstr "部分已發布的設定無法套用:" +# AI Translated msgid "Some filament slots were changed:" -msgstr "" +msgstr "部分線材槽位已變更:" msgid "Component name(s) inside step file not in UTF-8 format!" msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!" @@ -8526,13 +8547,17 @@ msgstr "切片檔案另存為:" msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。" +# AI Translated msgid "Publish 3MF file as:" -msgstr "" +msgstr "發布 3MF 檔案為:" +# AI Translated msgid "" "Failed to export the published 3MF file.\n" "Please check whether the folder exists online or if other programs have the file open." msgstr "" +"匯出已發布的 3MF 檔案失敗。\n" +"請檢查該資料夾是否在線上可用,或檔案是否被其他程式開啟。" msgid "Publish" msgstr "發布" @@ -8747,7 +8772,6 @@ msgstr "是否繼續?" msgid "Language selection" msgstr "語言選擇" - msgid "Asia-Pacific" msgstr "亞太" @@ -8852,6 +8876,9 @@ msgstr "目前實例路徑:" msgid "General" msgstr "一般" +msgid "Language" +msgstr "語言" + msgid "Metric" msgstr "公制" @@ -9290,9 +9317,6 @@ msgstr "在切片預覽中拖曳層滑桿時,將目前層以下的各層算繪 msgid "Dimmed layer brightness" msgstr "變暗層的亮度" -msgid "%" -msgstr "%" - # AI Translated msgid "" "How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n" @@ -9692,63 +9716,80 @@ msgstr "正在上傳資料" msgid "Jump to webpage" msgstr "跳至網頁" +# AI Translated msgid "Material" -msgstr "" +msgstr "材料" +# AI Translated msgid "Mixed filament" -msgstr "" +msgstr "混合線材" +# AI Translated msgid "Some mixed filaments rely on filaments that will not be published:" -msgstr "" +msgstr "部分混合線材依賴不會被發布的線材:" +# AI Translated #, c-format, boost-format msgid "Filament %d (mixed)" -msgstr "" +msgstr "線材 %d(混合)" -msgid "needs" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, which is not enabled." +msgstr "%1% 需要 %2%,但它未啟用。" -msgid "not enabled" -msgstr "" - -msgid "material not published" -msgstr "" +# AI Translated +#, boost-format +msgid "%1% needs %2%, whose material will not be published." +msgstr "%1% 需要 %2%,但其材料不會被發布。" +# AI Translated msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement." -msgstr "" +msgstr "若要發布混合線材,請啟用它所使用的每一種線材,並選擇「完整發布」或滿足其「類型」需求。" +# AI Translated msgid "Publish anyway" -msgstr "" +msgstr "仍要發布" +# AI Translated msgid "Publish 3MF..." -msgstr "" +msgstr "發布 3MF..." +# AI Translated msgid "Select which settings to be published in the 3MF file" -msgstr "" +msgstr "選擇要在 3MF 檔案中發布的設定" +# AI Translated msgid "Publish 3MF Wiki" -msgstr "" +msgstr "發布 3MF Wiki" +# AI Translated msgid "Publish 3MF Video Guide" -msgstr "" +msgstr "發布 3MF 影片指南" +# AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" -msgstr "" +msgstr "混合線材 - 在上方選擇「啟用」後將整體發布" +# AI Translated msgid "Publish this mixed filament and enable + Full Publish its component filaments" -msgstr "" +msgstr "發布此混合線材,並啟用 + 完整發布其組成線材" +# AI Translated msgid "Publish this filament slot in the 3MF file" -msgstr "" +msgstr "在 3MF 檔案中發布此線材槽位" +# AI Translated msgid "Full Publish" -msgstr "" +msgstr "完整發布" +# AI Translated msgid "Embed the entire filament of this slot in the 3MF file" -msgstr "" +msgstr "將此槽位的整條線材內嵌到 3MF 檔案中" +# AI Translated msgid "Filter non-selected" -msgstr "" +msgstr "篩選未選項" #, c-format, boost-format msgid "Save %s as" @@ -9767,6 +9808,10 @@ msgstr "將父配置繼承的所有數值複製到目前的配置,並解除繼 msgid "Detach from parent" msgstr "從父預設分離" +# AI Translated +msgid "Save without parent" +msgstr "不保留父預設另存" + # AI Translated msgid "Unique preset" msgstr "獨立配置" @@ -10470,9 +10515,17 @@ msgstr "堵塞偵測需要換料塔。若沒有換料塔,列印物件上可能 msgid "Enabling both precise Z height and the prime tower may cause slicing errors. Do you still want to enable precise Z height?" msgstr "同時啟用精確 Z 高度和擦拭塔可能會導致切片錯誤。您仍然要啟用精確 Z 高度嗎?" +# AI Translated +msgid "Smooth timelapse needs a prime tower on every layer, which is not compatible with \"No sparse layers\". \"No sparse layers\" has been turned off." +msgstr "平滑模式的縮時攝影需要每層都有換料塔,因此與「取消稀疏層」不相容。「取消稀疏層」已關閉。" + msgid "A prime tower is required for smooth timelapse mode. There may be flaws on the model without prime tower. Do you want to enable the prime tower?" msgstr "平滑模式的縮時錄影需要換料塔,否則列印物件上可能會有瑕疵。您是否要啟用換料塔?" +# AI Translated +msgid "\"No sparse layers\" is not compatible with smooth timelapse, which needs a prime tower on every layer. Timelapse has been switched to traditional mode." +msgstr "「取消稀疏層」與平滑模式的縮時攝影不相容,後者需要每層都有換料塔。縮時攝影已切換為傳統模式。" + msgid "Still print by object?" msgstr "持續逐件列印?" @@ -10842,9 +10895,6 @@ msgstr "相容的切片設定" msgid "Printable space" msgstr "可列印區域" -msgid "Printer Agent" -msgstr "列印裝置代理" - msgid "Select the network agent implementation for printer communication. Available agents are registered at startup." msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。" @@ -11246,14 +11296,6 @@ msgstr "擠出機數量" msgid "Capabilities" msgstr "能力" -# AI Translated -msgid "Left: " -msgstr "左: " - -# AI Translated -msgid "Right: " -msgstr "右: " - msgid "Show all presets (including incompatible)" msgstr "顯示所有預設(包括不相容的)" @@ -12096,15 +12138,22 @@ msgstr "修復被取消" msgid "Copying of file %1% to %2% failed: %3%" msgstr "從 %1% 複製檔案到 %2% 失敗:%3%" +# AI Translated +msgid "Downloading new vendor profile(s): " +msgstr "正在下載新的廠牌設定檔: " + +# AI Translated +#, boost-format +msgid "Configuration package: %1% updated to %2%" +msgstr "設定檔:%1% 已更新到 %2%" + +# AI Translated +msgid "Failed to download vendor profile(s): " +msgstr "下載廠牌設定檔失敗: " + msgid "Please check any unsaved changes before updating the configuration." msgstr "在設定更新之前需要檢查未儲存的設定變更。" -msgid "Configuration package: " -msgstr "設定檔:" - -msgid " updated to " -msgstr "更新到 " - msgid "Open G-code file:" msgstr "開啟 G-code 檔案:" @@ -12164,11 +12213,15 @@ msgstr "" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2." msgstr "輸入整形僅受 Klipper、RepRapFirmware 和 Marlin 2 支援" -msgid "Grouping error: " -msgstr "分組錯誤:" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the left nozzle" +msgstr "分組錯誤:%1% 無法放入左噴嘴" -msgid " can not be placed in the " -msgstr "無法放置於" +# AI Translated +#, boost-format +msgid "Grouping error: %1% cannot be placed in the right nozzle" +msgstr "分組錯誤:%1% 無法放入右噴嘴" # AI Translated msgid "Group error in manual mode. Please check nozzle count or regroup." @@ -12282,6 +12335,10 @@ msgstr "%1% 離其它物件太近,可能會發生碰撞。" msgid "%1% is too tall, and collisions will be caused." msgstr "%1% 太高,會發生碰撞。" +# AI Translated +msgid "The relative position of the model and the prime tower does not meet the requirements of the \"No sparse layers\" feature. Please adjust their relative positions, lower the model height, or turn off \"No sparse layers\"." +msgstr "模型與換料塔的相對位置不符合「取消稀疏層」功能的需求。請調整兩者的相對位置、降低模型高度,或關閉「取消稀疏層」。" + msgid " is too close to exclusion area, there may be collisions when printing." msgstr "離淨空區域太近,列印時可能會發生碰撞。" @@ -12625,6 +12682,9 @@ msgstr "使用 3MF 取代 G-code" msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file." msgstr "若列印裝置接受 3MF 檔案作為列印作業,請啟用此選項。啟用後,Orca Slicer 會將切片後的檔案以 .gcode.3mf 形式傳送,而非單純的 .gcode 檔案。" +msgid "Printer Agent" +msgstr "列印裝置代理" + msgid "Select the network agent implementation for printer communication." msgstr "選擇用於列印裝置通訊的網路代理實作。" @@ -13642,6 +13702,10 @@ msgstr "直線排列" msgid "Concentric" msgstr "同心" +# AI Translated +msgid "Spiral Inset" +msgstr "螺旋內縮" + msgid "Hilbert Curve" msgstr "希爾伯特曲線" @@ -13733,13 +13797,13 @@ msgstr "頂面填充順序" # AI Translated msgid "" -"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,頂面填充的方向。\n" -"「向外」從表面中心開始,因此多餘的材料會被推向最不明顯的邊緣。「向內」從邊緣開始,並以中心的緊密曲線結束。\n" -"預設使用最短路徑排序,方向可能為任一種。" +"使用以中心為起點的圖案(同心、螺旋內縮、阿基米德和弦、八角螺旋)時,頂面的填充方向。\n" +"向外從表面中心開始,多餘的材料會被推向邊緣,在該處最不明顯。向內從邊緣開始,並以中心處的緊密曲線結束。\n" +"預設使用最短路徑排序,方向可能為兩者之一。" # AI Translated msgid "Bottom surface fill order" @@ -13747,13 +13811,13 @@ msgstr "底面填充順序" # AI Translated msgid "" -"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n" "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" "Default uses shortest-path ordering, which may run in either direction." msgstr "" -"使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,底面填充的方向。\n" -"「向內」讓每個表面從較寬的外側曲線開始,可改善中心緊密曲線可能無法附著的列印板上的第一層附著。「向外」從中心開始,將多餘的材料推向邊緣。\n" -"預設使用最短路徑排序,方向可能為任一種。" +"使用以中心為起點的圖案(同心、螺旋內縮、阿基米德和弦、八角螺旋)時,底面的填充方向。\n" +"向內讓每個表面從較寬的外側曲線開始,可改善首層在列印板上的黏著,尤其當中心處的緊密曲線不易黏牢時。向外從中心開始,將多餘的材料推向邊緣。\n" +"預設使用最短路徑排序,方向可能為兩者之一。" msgid "Internal solid infill pattern" msgstr "內部實心填充圖案" @@ -13852,6 +13916,14 @@ msgstr "逆時針" msgid "Clockwise" msgstr "順時針" +# AI Translated +msgid "Distance to rod" +msgstr "至桿件的距離" + +# AI Translated +msgid "Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing." +msgstr "噴嘴尖端到桿件較遠一側邊緣的水平距離。用於逐件列印時的避障。" + msgid "Height to rod" msgstr "到橫杆高度" @@ -16016,6 +16088,20 @@ msgstr "偵測懸空外牆" msgid "This detects the overhang percentage relative to line width and uses a different speed to print. For 100%% overhang, bridging speed is used." msgstr "偵測懸空相對於線寬的百分比,並套用不同的速度列印。100%% 的懸空將使用橋接速度。" +# AI Translated +msgid "Print unsupported walls last" +msgstr "最後列印無支撐的牆" + +# AI Translated +msgid "" +"Wall loops that lie entirely in mid air are printed once something can hold them:\n" +"they are extruded after the other walls of their island, innermost first, whatever the wall order is.\n" +"A loop that only the bridges of this layer can anchor waits until those bridges are printed, while a loop running alongside a supported wall keeps its place before the infill, which needs it as an anchor." +msgstr "" +"完全懸空的牆迴圈會等到有東西能夠承托它們時才列印:\n" +"無論牆的順序為何,它們都在同一島嶼的其他牆之後擠出,從最內側開始。\n" +"只能由本層橋接錨定的迴圈會等待這些橋接列印完成;而沿著有支撐的牆延伸的迴圈則保持在填充之前的位置,因為填充需要它作為錨點。" + msgid "Outer walls" msgstr "外牆" @@ -16451,6 +16537,39 @@ msgstr "閉環擦拭" msgid "To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop." msgstr "為了降低閉環擠出中接縫的可見性,在擠出機退出閉環前會進行一次微小的內縮移動。" +# AI Translated +msgid "Wipe inward" +msgstr "向內擦拭" + +# AI Translated +msgid "" +"Applies only to external walls, including hole boundaries. Moves the hot nozzle toward printed inner walls during wiping to reduce reheating of freshly printed plastic and seam marks.\n" +"\n" +"Especially useful at layer heights below 0.1 mm, where wipe marks are more visible.\n" +"\n" +"Uses the regular wipe if no adjacent inner wall is already printed (single-wall areas or Outer/Inner wall order), or if no supported inward path can be found, for example at tight corners or seam gaps." +msgstr "" +"僅適用於外牆,包括孔洞邊界。擦拭時將高溫噴嘴移向已列印的內牆,以減少剛列印塑膠的二次受熱與接縫痕跡。\n" +"\n" +"在層高低於 0.1 mm 時特別有用,此時擦拭痕跡更明顯。\n" +"\n" +"若相鄰內牆尚未列印(單牆區域或外牆/內牆順序),或找不到有支撐的向內路徑(例如在銳角或接縫間隙處),則使用一般擦拭。" + +# AI Translated +msgid "Wipe inward distance" +msgstr "向內擦拭距離" + +# AI Translated +#, no-c-format, no-boost-format +msgid "" +"The distance the wipe path is shifted away from the external perimeter, specified in millimeters or as a percentage of the actual outer-wall extrusion width.\n" +"\n" +"For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited by both the actual outer-wall width and the available spacing to the adjacent wall, so values above 100% or an equivalent absolute distance have no additional effect. Set to 0 to disable the offset." +msgstr "" +"擦拭路徑偏離外牆輪廓的距離,以公釐或實際外牆擠出寬度的百分比指定。\n" +"\n" +"例如,50% 會將路徑偏移外牆寬度的一半。實際偏移量同時受實際外牆寬度與到相鄰牆的可用間距限制,因此超過 100% 的值或等效的絕對距離不會產生額外效果。設為 0 可停用偏移。" + msgid "Wipe before external loop" msgstr "外牆迴圈前的擦拭動作" @@ -16705,8 +16824,9 @@ msgstr "取用新工具時不等待其達到列印溫度,先移動到換料塔 msgid "No sparse layers (beta)" msgstr "取消稀疏層(Beta)" -msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." -msgstr "啟用此選項後,換料塔將不會在沒有工具更換的層中列印。在有工具更換的層中,擠出機將向下移動以列印換料塔。請使用者自行確保清洗塔與列印物之間不會發生碰撞。" +# AI Translated +msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower, so the tower ends up below the model and the toolhead has to reach down to it. Layouts where that would collide with an already printed object are rejected. Has no effect with smooth timelapse or clumping detection, which need a tower on every layer." +msgstr "啟用後,換料塔不會在沒有換工具的層上列印。在有換工具的層上,擠出機會向下移動去列印換料塔,因此塔會低於模型,工具頭必須向下伸到該處。若這樣會與已列印的物件發生碰撞,該配置將被拒絕。對平滑模式的縮時攝影或噴嘴結塊偵測無效,因為它們需要每層都有塔。" msgid "Prime all printing extruders" msgstr "所有擠出機畫線" @@ -16732,6 +16852,34 @@ msgstr "" msgid "Cyclic" msgstr "循環" +# AI Translated +msgid "Cyclic order" +msgstr "循環順序" + +# AI Translated +msgid "" +"Custom filament sequence used by the cyclic toolchange ordering, as filament numbers separated by commas (e.g. \"3,2,1,4\").\n" +"Each layer prints its filaments following this sequence; filaments not listed are printed last, in ascending order.\n" +"Leave empty to cycle through the filaments in ascending order." +msgstr "" +"循環換工具排序所使用的自訂線材序列,以逗號分隔的線材編號表示(例如「3,2,1,4」)。\n" +"每一層依此序列列印其線材;未列出的線材最後列印,並依遞增順序排列。\n" +"留空則依遞增順序循環使用各線材。" + +# AI Translated +msgid "Apply cyclic order to first layer" +msgstr "對首層套用循環順序" + +# AI Translated +msgid "" +"Applies the cyclic toolchange order to the first layer as well.\n" +"By default this is disabled, because the first layer is instead ordered for the best bed adhesion: filaments that print small, fragile first-layer features are printed last, so the following tool changes and travel moves are less likely to knock those weakly anchored parts loose. This first-layer order also honors a custom first layer filament sequence when one is set. The cyclic order's benefit (extra tool changes give each layer more time to cool) does not apply to the first layer, which is printed slowly and hot for adhesion.\n" +"Enable this only if you need the exact same tool sequence on every layer, including the first, at the cost of that adhesion optimization." +msgstr "" +"將循環換工具順序同樣套用於首層。\n" +"預設為關閉,因為首層改為依最佳列印板黏著排序:列印首層細小脆弱特徵的線材會最後列印,如此後續的換工具與空駛就不易將這些附著薄弱的部分蹭掉。若已設定自訂首層線材序列,此首層順序也會遵循它。循環順序的好處(額外的換工具讓每層有更多冷卻時間)並不適用於首層,因為首層為了黏著會以慢速高溫列印。\n" +"僅當你需要包含首層在內的每一層都使用完全相同的換工具順序時才啟用此項,代價是失去上述黏著最佳化。" + msgid "Slice gap closing radius" msgstr "切片間隙閉合半徑" @@ -16741,9 +16889,6 @@ msgstr "在三角網格切片過程中,寬度小於 2 倍間隙閉合半徑的 msgid "Slicing Mode" msgstr "切片模式" -msgid "Other" -msgstr "其他" - msgid "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model." msgstr "針對 3DLabPrint 飛機模型,請選擇『奇偶』模式。若需閉合模型中的所有孔洞,請啟用『閉合孔洞』選項。" @@ -17729,6 +17874,14 @@ msgstr "不檢查" msgid "Do not run any validity checks, such as G-code path conflicts check." msgstr "不要執行任何有效性檢查,如 G-code 路徑衝突檢查。" +# AI Translated +msgid "Strict mode" +msgstr "嚴格模式" + +# AI Translated +msgid "Exit non-zero when slicing raises a non-critical warning that is otherwise only logged, such as a model that needs support while support is disabled. Use this in CI or scripted pipelines that should never ship a subtly broken slice. Each such warning is also listed with a stable class in the `warnings` array of result.json, which is written on Linux only. Cannot be combined with --no-check, which skips the support check." +msgstr "當切片產生原本僅記入日誌的非嚴重警告時(例如停用支撐卻需要支撐的模型),以非零狀態碼結束。請在絕不能交付存在隱蔽缺陷切片結果的 CI 或指令碼流程中使用。每一則此類警告還會以穩定的類別列在 result.json 的 `warnings` 陣列中,該檔案僅在 Linux 上產生。不能與 --no-check 同時使用,後者會略過支撐檢查。" + msgid "Normative check" msgstr "規範符合性偵測" @@ -17741,12 +17894,28 @@ msgstr "輸出模型資訊" msgid "This outputs the model’s information." msgstr "輸出模型資訊。" +# AI Translated +msgid "Inspect mesh (JSON to stdout)" +msgstr "檢查網格(JSON 輸出至 stdout)" + +# AI Translated +msgid "Print a JSON summary of each loaded object to stdout, then exit: its bounding boxes and the convex hull faces it can be laid on, with their normals, areas and centers. These are the faces the --ground-* options choose from. Machine-readable alternative to --info." +msgstr "將每個已載入物件的 JSON 摘要輸出至 stdout,然後結束:包括其邊界框,以及可供放置的凸包面及其法線、面積與中心。--ground-* 選項正是從這些面中選擇。--info 的機器可讀替代方案。" + +# AI Translated +msgid "Inspect paint (JSON to stdout)" +msgstr "檢查繪製(JSON 輸出至 stdout)" + +# AI Translated +msgid "Print a structured JSON summary of every painted layer (supports, seam, MMU color, fuzzy-skin) already stored on the loaded model — per-state facet count, surface area, and mesh-local bounding box — then exit. Machine-readable alternative to opening the paint gizmos in the GUI." +msgstr "輸出已載入模型上已儲存的每個繪製圖層(支撐、接縫、MMU 顏色、絨毛表面)的結構化 JSON 摘要 — 每種狀態的面片數量、表面積與網格局部邊界框 — 然後結束。在圖形介面中開啟繪製工具的機器可讀替代方案。" + msgid "Export Settings" msgstr "匯出設定" # AI Translated -msgid "This exports settings to a file." -msgstr "將設定匯出至檔案。" +msgid "This exports settings to a file. Use - to write them to stdout." +msgstr "將設定匯出至檔案。使用 - 可將其寫入 stdout。" msgid "Send progress to pipe" msgstr "將進度傳送到 Pipe" @@ -17802,6 +17971,30 @@ msgstr "繞 Y 旋轉" msgid "Rotation angle around the Y axis in degrees." msgstr "繞 Y 軸的旋轉角度(以度為單位)。" +# AI Translated +msgid "Ground largest face" +msgstr "以最大面著床" + +# AI Translated +msgid "Lay each object on the largest face of its convex hull and drop it onto the bed. Of equally large faces, the one already facing down is kept. Objects without a face large enough to rest on are left as they are. Transforms run in command-line order, so rotations given before this option are respected. --orient 1 runs after all transforms and replaces the orientation." +msgstr "將每個物件以其凸包的最大面放置,並落到列印板上。若有多個同樣大的面,則保留已經朝下的那一個。沒有足夠大可供放置的面的物件維持原狀。變換依命令列中的先後順序執行,因此在此選項之前給定的旋轉會被保留。--orient 1 在所有變換之後執行,並會取代定向。" + +# AI Translated +msgid "Ground face by normal" +msgstr "依法線以指定面著床" + +# AI Translated +msgid "Lay each object on the convex hull face whose outward normal is closest to the direction NX,NY,NZ and drop it onto the bed. The direction is in object coordinates, which include the rotations given before this option and match the plate axes unless the input file rotates the object. For example, 1,0,0 stands the object on its +X side. --orient 1 runs after all transforms and replaces the orientation." +msgstr "將每個物件以其凸包中外法線最接近方向 NX,NY,NZ 的面放置,並落到列印板上。該方向使用物件座標系,其中包含在此選項之前給定的旋轉;除非輸入檔案旋轉了該物件,否則它與列印板的座標軸一致。例如,1,0,0 會讓物件以 +X 面站立。--orient 1 在所有變換之後執行,並會取代定向。" + +# AI Translated +msgid "Ground face at point" +msgstr "以指定點所在面著床" + +# AI Translated +msgid "Lay each object on the convex hull face that contains the point X,Y,Z and drop it onto the bed. The point is in object coordinates, which include the rotations given before this option; --inspect-mesh reports face centers in them. Objects without such a face are left as they are, and the run fails if no object has one. --orient 1 runs after all transforms and replaces the orientation." +msgstr "將每個物件以其凸包中包含點 X,Y,Z 的面放置,並落到列印板上。該點使用物件座標系,其中包含在此選項之前給定的旋轉;--inspect-mesh 回報的面中心也使用該座標系。沒有此類面的物件維持原狀;若所有物件都沒有此類面,則本次執行失敗。--orient 1 在所有變換之後執行,並會取代定向。" + msgid "Scale the model by a float factor." msgstr "依浮點數比例縮放模型" @@ -20902,14 +21095,17 @@ msgstr "此操作無法撤消。繼續?" msgid "Skipping objects." msgstr "跳過物件。" +# AI Translated msgid "Material Ratio" -msgstr "" +msgstr "材料比例" +# AI Translated msgid "Model Height" -msgstr "" +msgstr "模型高度" +# AI Translated msgid "Ratio" -msgstr "" +msgstr "比例" msgid "Select Filament" msgstr "選擇線材" @@ -21167,12 +21363,14 @@ msgid "Drying-Dehumidifying" msgstr "烘乾—除濕" # AI Translated -msgid " maximum drying temperature is " -msgstr " 最高烘乾溫度為 " +#, c-format, boost-format +msgid "%s maximum drying temperature is %d°C." +msgstr "%s 的最高烘乾溫度為 %d°C。" # AI Translated -msgid " minimum drying temperature is " -msgstr " 最低烘乾溫度為 " +#, c-format, boost-format +msgid "%s minimum drying temperature is %d°C." +msgstr "%s 的最低烘乾溫度為 %d°C。" # AI Translated msgid "This filament may not be completely dried." @@ -21638,6 +21836,98 @@ msgstr "" "避免翹曲\n" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。" +#~ msgid "Other" +#~ msgstr "其他" + +# AI Translated +#~ msgid "Left: " +#~ msgstr "左: " + +# AI Translated +#~ msgid "Right: " +#~ msgstr "右: " + +#~ msgid "The maximum temperature cannot exceed " +#~ msgstr "最高溫度不能超過 " + +#~ msgid "The minmum temperature should not be less than " +#~ msgstr "最低溫度不應低於 " + +#~ msgid "up to" +#~ msgstr "達到" + +#~ msgid "above" +#~ msgstr "高於" + +#~ msgid "from" +#~ msgstr "從" + +#~ msgid "Configuration package: " +#~ msgstr "設定檔:" + +#~ msgid " updated to " +#~ msgstr "更新到 " + +#~ msgid "Grouping error: " +#~ msgstr "分組錯誤:" + +#~ msgid " can not be placed in the " +#~ msgstr "無法放置於" + +# AI Translated +#~ msgid " maximum drying temperature is " +#~ msgstr " 最高烘乾溫度為 " + +# AI Translated +#~ msgid " minimum drying temperature is " +#~ msgstr " 最低烘乾溫度為 " + +# AI Translated +#~ msgid "needs" +#~ msgstr "需要" + +# AI Translated +#~ msgid "not enabled" +#~ msgstr "未啟用" + +# AI Translated +#~ msgid "material not published" +#~ msgstr "材料未發布" + +#~ msgid "Select the language" +#~ msgstr "選擇語言" + +# AI Translated +#~ msgid "Select plugin" +#~ msgstr "選擇外掛" + +# AI Translated +#~ msgid "" +#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,頂面填充的方向。\n" +#~ "「向外」從表面中心開始,因此多餘的材料會被推向最不明顯的邊緣。「向內」從邊緣開始,並以中心的緊密曲線結束。\n" +#~ "預設使用最短路徑排序,方向可能為任一種。" + +# AI Translated +#~ msgid "" +#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n" +#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n" +#~ "Default uses shortest-path ordering, which may run in either direction." +#~ msgstr "" +#~ "使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,底面填充的方向。\n" +#~ "「向內」讓每個表面從較寬的外側曲線開始,可改善中心緊密曲線可能無法附著的列印板上的第一層附著。「向外」從中心開始,將多餘的材料推向邊緣。\n" +#~ "預設使用最短路徑排序,方向可能為任一種。" + +#~ msgid "If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print." +#~ msgstr "啟用此選項後,換料塔將不會在沒有工具更換的層中列印。在有工具更換的層中,擠出機將向下移動以列印換料塔。請使用者自行確保清洗塔與列印物之間不會發生碰撞。" + +# AI Translated +#~ msgid "This exports settings to a file." +#~ msgstr "將設定匯出至檔案。" + #~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer." #~ msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。" diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 64ea4d52b3..7ea46cf8a7 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -10,6 +10,7 @@ #include "FilamentMixer.hpp" #include "LocalesUtils.hpp" #include "Utils.hpp" +#include "format.hpp" #include "I18N.hpp" #include @@ -82,8 +83,9 @@ bool check_filament_printable_after_group(const std::vector &used_ int printable_status = print_config->filament_printable.get_at(filament_id); int extruder_idx = filament_maps[filament_id]; if (!(printable_status >> extruder_idx & 1)) { - std::string extruder_name = extruder_idx == 0 ? _L("left") : _L("right"); - std::string error_msg = _L("Grouping error: ") + filament_type + _L(" can not be placed in the ") + extruder_name + _L(" nozzle"); + std::string error_msg = extruder_idx == 0 ? + Slic3r::format(_L("Grouping error: %1% cannot be placed in the left nozzle"), filament_type) : + Slic3r::format(_L("Grouping error: %1% cannot be placed in the right nozzle"), filament_type); throw Slic3r::RuntimeError(error_msg); } } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index ea39cbeb5b..02d1b50198 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -6302,6 +6302,7 @@ void PrintConfigDef::init_fff_params() def = this->add("wipe_inward_distance", coFloatOrPercent); def->label = L("Wipe inward distance"); def->category = L("Quality"); + // xgettext:no-c-format, no-boost-format def->tooltip = L("The distance the wipe path is shifted away from the external perimeter, specified in millimeters " "or as a percentage of the actual outer-wall extrusion width.\n\n" "For example, 50% shifts the path by half of the outer-wall width. The effective offset is limited " @@ -6762,7 +6763,7 @@ void PrintConfigDef::init_fff_params() def = this->add("slicing_mode", coEnum); def->label = L("Slicing Mode"); - def->category = L("Other"); + def->category = L("Others"); def->tooltip = L("Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in the model."); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("regular"); diff --git a/src/slic3r/GUI/AMSDryControl.cpp b/src/slic3r/GUI/AMSDryControl.cpp index eb5ddb5d4e..17d7d62ad8 100644 --- a/src/slic3r/GUI/AMSDryControl.cpp +++ b/src/slic3r/GUI/AMSDryControl.cpp @@ -1197,11 +1197,11 @@ void AMSDryCtrWin::update_normal_description(DevAms* dev_ams) for (const auto& lim : ams_limits) { if (dev_ams->GetAmsType() == lim.type) { if (temp_val > lim.max_temp) { - wxString msg = wxString(lim.name) + _L(" maximum drying temperature is ") + wxString::Format(wxT("%d"), lim.max_temp) + wxString::FromUTF8("°C."); + wxString msg = wxString::Format(_L("%s maximum drying temperature is %d°C."), wxString(lim.name), lim.max_temp); warning_text += msg + "\n"; can_enable_button = false; } else if (temp_val < lim.min_temp) { - wxString msg = wxString(lim.name) + _L(" minimum drying temperature is ") + wxString::Format(wxT("%d"), lim.min_temp) + wxString::FromUTF8("°C."); + wxString msg = wxString::Format(_L("%s minimum drying temperature is %d°C."), wxString(lim.name), lim.min_temp); warning_text += msg + "\n"; can_enable_button = false; } diff --git a/src/slic3r/GUI/ColorDecomposeSupport.cpp b/src/slic3r/GUI/ColorDecomposeSupport.cpp index ea67564208..cfd0d02532 100644 --- a/src/slic3r/GUI/ColorDecomposeSupport.cpp +++ b/src/slic3r/GUI/ColorDecomposeSupport.cpp @@ -395,8 +395,9 @@ bool confirm_create_decompose_missing_components(wxWindow* parent, const std::ve missing_text += missing[i].display_name; } - wxString message = _L("The current filament list does not contain ") + missing_text + - _L(". A project filament required by the mixed filament will be created automatically after decomposition."); + wxString message = wxString::Format(_L("The current filament list does not contain %s. A project filament required by " + "the mixed filament will be created automatically after decomposition."), + missing_text); MessageDialog dlg(parent, message, _L("Tip"), wxOK | wxCANCEL | wxICON_INFORMATION); dlg.show_dsa_button(); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 49477ac7dd..c40d6dd222 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -17,6 +17,7 @@ #include "Plater.hpp" #include "Camera.hpp" #include "I18N.hpp" +#include "format.hpp" #include "GUI_Utils.hpp" #include "GUI.hpp" #include "GLCanvas3D.hpp" @@ -3436,16 +3437,18 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; + // Whole sentences: the bare "up to"/"above"/"from"/"to" these used to be glued from gave a + // translator no context, and left the unit and the numbers stuck in English word order. auto upto_label = [](double z) { char buf[64]; ::sprintf(buf, "%.2f", z); - return _u8L("up to") + " " + std::string(buf) + " " + _u8L("mm"); + return format(_u8L("up to %1% mm"), buf); }; auto above_label = [](double z) { char buf[64]; ::sprintf(buf, "%.2f", z); - return _u8L("above") + " " + std::string(buf) + " " + _u8L("mm"); + return format(_u8L("above %1% mm"), buf); }; auto fromto_label = [](double z1, double z2) { @@ -3453,7 +3456,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buf1, "%.2f", z1); char buf2[64]; ::sprintf(buf2, "%.2f", z2); - return _u8L("from") + " " + std::string(buf1) + " " + _u8L("to") + " " + std::string(buf2) + " " + _u8L("mm"); + return format(_u8L("from %1% to %2% mm"), buf1, buf2); }; auto role_time_and_percent = [this, total_estimated_time](libvgcode::EGCodeExtrusionRole role) { diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 82de9fca68..57818dca82 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -416,12 +417,54 @@ std::set project_used_filament_slots(const PresetBundle& bundle, const D return used; } +// Lays a translated sentence out along `row`, replacing each "%1%"-style placeholder with the +// matching window from `chips`. Keeping the sentence in one msgid lets a translation put the +// placeholders wherever its own grammar needs them; spacing comes from the translation itself. +void add_sentence_with_chips(wxWindow* parent, wxSizer* row, const wxString& sentence, const std::vector& chips) +{ + std::vector placed(chips.size(), false); + auto add_text = [&](wxString text) { + text.Replace("%%", "%"); // the sentence is a format string + if (text.IsEmpty()) + return; + auto* label = new wxStaticText(parent, wxID_ANY, text); + label->SetFont(Label::Body_12); + label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); + row->Add(label, 0, wxALIGN_CENTER_VERTICAL); + }; + auto add_chip = [&](size_t i) { + if (i < chips.size() && chips[i] != nullptr && !placed[i]) { + placed[i] = true; + row->Add(chips[i], 0, wxALIGN_CENTER_VERTICAL); + } + }; + + size_t literal = 0, pos = 0; + while ((pos = sentence.find('%', pos)) != wxString::npos) { + size_t end = pos + 1; + while (end < sentence.length() && sentence[end] >= '0' && sentence[end] <= '9') + ++end; + if (end == pos + 1 || end >= sentence.length() || sentence[end] != '%') { + ++pos; // a bare '%' + continue; + } + long index = 0; + sentence.Mid(pos + 1, end - pos - 1).ToLong(&index); + add_text(sentence.Mid(literal, pos - literal)); + add_chip(size_t(index - 1)); + literal = pos = end + 1; + } + add_text(sentence.Mid(literal)); + for (size_t i = 0; i < chips.size(); ++i) // whatever the translation left out + add_chip(i); +} + } // namespace // Warning shown on OK when an enabled mixed-filament slot relies on a filament that would ship -// without its material. One row per unmet dependency: the mixed slot's colour chip, the -// component filament's colour chip, and the reason. "Cancel" is the safe choice and keeps the -// dialog open; "Publish anyway" continues. +// without its material. One row per unmet dependency, each a single translated sentence whose +// two placeholders are the mixed slot's and the component filament's colour chips. "Cancel" is +// the safe choice and keeps the dialog open; "Publish anyway" continues. class MixedFilamentWarningDialog : public MsgDialog { public: @@ -437,47 +480,37 @@ public: content->AddSpacer(FromDIP(10)); const int swatch = FromDIP(20); - for (const MixedDependencyIssue& issue : issues) { - auto* row = new wxBoxSizer(wxHORIZONTAL); - - // The mixed slot as just its own chip (gradient-aware, numbered like its tab); - // falls back to a plain label when the chip cannot be built. - const wxString mix_label = wxString::Format(_L("Filament %d (mixed)"), int(issue.mixed_slot) + 1); - const wxBitmap mix_bmp = mixed_filament_chip_bitmap(full, issue.mixed_slot, swatch); - if (mix_bmp.IsOk()) { - auto* bmp = new wxStaticBitmap(this, wxID_ANY, mix_bmp); - bmp->SetToolTip(mix_label); - row->Add(bmp, 0, wxALIGN_CENTER_VERTICAL); - } else { - auto* label = new wxStaticText(this, wxID_ANY, mix_label); - label->SetFont(Label::Body_12); - row->Add(label, 0, wxALIGN_CENTER_VERTICAL); + // The slot's colour swatch, numbered like its tab, with the slot name on hover; falls + // back to a label so the sentence always names both filaments. + auto make_chip = [&](const wxBitmap& bmp, const wxString& name) -> wxWindow* { + if (bmp.IsOk()) { + auto* chip = new wxStaticBitmap(this, wxID_ANY, bmp); + chip->SetToolTip(name); + return chip; } + auto* label = new wxStaticText(this, wxID_ANY, name); + label->SetFont(Label::Body_12); + return label; + }; - auto* needs = new wxStaticText(this, wxID_ANY, _L("needs")); - needs->SetFont(Label::Body_12); - needs->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B"))); - row->Add(needs, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, FromDIP(6)); - - // The component filament's colour chip, numbered like the tab strips; the slot - // name stays on hover to keep the row itself short. + for (const MixedDependencyIssue& issue : issues) { std::string hex = filament_color_hex(full, issue.component_slot); if (hex.empty()) hex = "#D9D9D9"; - if (wxBitmap* chip = get_extruder_color_icon(hex, std::to_string(issue.component_slot + 1), swatch, swatch)) { - auto* comp_bmp = new wxStaticBitmap(this, wxID_ANY, *chip); - comp_bmp->SetToolTip(wxString::Format(_L("Filament %d"), int(issue.component_slot) + 1)); - row->Add(comp_bmp, 0, wxALIGN_CENTER_VERTICAL); - } + const wxBitmap* comp_bmp = get_extruder_color_icon(hex, std::to_string(issue.component_slot + 1), swatch, swatch); - auto* reason = new wxStaticText(this, wxID_ANY, - issue.reason == MixedDependencyIssue::Reason::Disabled ? _L("not enabled") : - _L("material not published")); - reason->SetFont(Label::Body_12); - reason->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#989898"))); - row->Add(reason, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(8)); + wxWindow* mix_chip = make_chip(mixed_filament_chip_bitmap(full, issue.mixed_slot, swatch), + wxString::Format(_L("Filament %d (mixed)"), int(issue.mixed_slot) + 1)); + wxWindow* comp_chip = make_chip(comp_bmp != nullptr ? *comp_bmp : wxNullBitmap, + wxString::Format(_L("Filament %d"), int(issue.component_slot) + 1)); - content->Add(row, 0, wxLEFT, FromDIP(10)); + auto* row = new wxWrapSizer(wxHORIZONTAL); + add_sentence_with_chips(this, row, + issue.reason == MixedDependencyIssue::Reason::Disabled ? + _L("%1% needs %2%, which is not enabled.") : + _L("%1% needs %2%, whose material will not be published."), + {mix_chip, comp_chip}); + content->Add(row, 0, wxEXPAND | wxLEFT, FromDIP(10)); content->AddSpacer(FromDIP(6)); } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index acf50e6641..39e611b341 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1497,7 +1497,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, DynamicConfig * config const std::string label = def ? (def->full_label.empty() ? def->label : def->full_label) : std::string(); option.label_local = (label.empty() ? from_u8(opt_key) : _L(label)).ToStdWstring(); option.category_local = (def && !def->category.empty() ? - Tab::translate_category(from_u8(def->category), type) : _L("Other")).ToStdWstring(); + Tab::translate_category(from_u8(def->category), type) : _L("Others")).ToStdWstring(); } auto category = option.category_local; auto opt = dynamic_cast(config->option(opt_key)); diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index 6705378dac..79899940d1 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -275,9 +275,9 @@ void TempInput::Warning(bool warn, WarningType type) wxString warning_string; if (type == WarningType::WARNING_TOO_HIGH) - warning_string = _L("The maximum temperature cannot exceed ") + wxString::Format("%d", max_temp); + warning_string = wxString::Format(_L("The maximum temperature cannot exceed %d"), max_temp); else if (type == WarningType::WARNING_TOO_LOW) - warning_string = _L("The minmum temperature should not be less than ") + wxString::Format("%d", min_temp); + warning_string = wxString::Format(_L("The minimum temperature should not be less than %d"), min_temp); warning_text->SetLabel(warning_string); warning_text->Wrap(-1); warning_text->Fit(); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 69bfa4217e..5fd5898a1b 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1711,7 +1711,7 @@ void PresetUpdater::priv::check_new_vendors(const std::set& system_ GUI::wxGetApp().plater()->get_notification_manager()->push_notification( GUI::NotificationType::PresetUpdateFinished, GUI::NotificationManager::NotificationLevel::ImportantNotificationLevel, - _u8L("Configuration package: ") + vendor_id + _u8L(" updated to ") + cur_ver.to_string()); + Slic3r::format(_u8L("Configuration package: %1% updated to %2%"), vendor_id, cur_ver.to_string())); } }); } @@ -1806,7 +1806,7 @@ PresetUpdater::UpdateResult PresetUpdater::config_update(const Semver& old_slic3 ->get_notification_manager() ->push_notification(GUI::NotificationType::PresetUpdateFinished, GUI::NotificationManager::NotificationLevel::ImportantNotificationLevel, - _u8L("Configuration package: ") + b + _u8L(" updated to ") + cur_ver.to_string()); + Slic3r::format(_u8L("Configuration package: %1% updated to %2%"), b, cur_ver.to_string())); } return R_UPDATE_INSTALLED; } From 52f4c68c41328dd32321e164600253cac6f9293e Mon Sep 17 00:00:00 2001 From: Valerii Bokhan <80919135+valerii-bokhan@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:50:30 +0200 Subject: [PATCH 161/162] addnorth filament profiles: H2C and A2L support (#14764) --- resources/profiles/BBL.json | 2 +- .../BBL/filament/addnorth/addnorth ABS rABS.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PA Adura FDA.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PA Adura.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PA-CF Adura X.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PA6 Addlantis.json | 10 +++++++++- .../filament/addnorth/addnorth PC BLend HT LCF.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PETG Base.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PETG ESD.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PETG Economy.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PETG Flame v0.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PETG PRO Matte.json | 10 +++++++++- .../filament/addnorth/addnorth PETG rPETG Matte.json | 10 +++++++++- .../filament/addnorth/addnorth PETG-CF Rigid X.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PLA E-PLA.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PLA Economy.json | 10 +++++++++- .../addnorth/addnorth PLA HT-PLA PRO Matte.json | 10 +++++++++- .../filament/addnorth/addnorth PLA Premium Silk.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PLA Textura.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PLA Wood.json | 10 +++++++++- .../addnorth/addnorth PLA X-PLA High Speed.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth PLA X-PLA.json | 10 +++++++++- .../filament/addnorth/addnorth PLA rPLA RE-ADD.json | 10 +++++++++- .../addnorth/addnorth PLA-CF Carbon Fiber.json | 10 +++++++++- .../filament/addnorth/addnorth PVDF Adamant S1.json | 10 +++++++++- .../BBL/filament/addnorth/addnorth TPU EasyFlex.json | 10 +++++++++- .../filament/addnorth/addnorth TPU Pro Matte 85A.json | 10 +++++++++- .../filament/addnorth/addnorth TPU Pro Matte 95A.json | 10 +++++++++- 28 files changed, 244 insertions(+), 28 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 3f655ddd22..7491f4064d 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.01.00.27", + "version": "02.01.00.28", "force_update": "0", "description": "BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json index cb237f18d4..5d6b376e47 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth ABS rABS.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json index b97552d7be..703389a687 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura FDA.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json index a9af61a692..beba3c51de 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA Adura.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json index 2c0ba3a07d..f4894e3e6a 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA-CF Adura X.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json index 70c9d23c7e..5cb61738c8 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PA6 Addlantis.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json index cf406059c4..b94065e44d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PC BLend HT LCF.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json index 0bc31baa96..eb1ffaf48c 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Base.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json index af7b7a58ce..de07353b97 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG ESD.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json index 1a2f3fc199..f3df226774 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Economy.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json index d39f99b6a1..08ad97161a 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG Flame v0.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json index b4bf97f5ef..0948d9f9c7 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG PRO Matte.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json index b93d234c7d..0396c6578d 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG rPETG Matte.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json index a67766a158..a0f78bb956 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PETG-CF Rigid X.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json index 230487e7b9..3a35d16b29 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA E-PLA.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json index d127ef80bb..77a86797f0 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Economy.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json index 1a4b6ce91b..5327b8a083 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA HT-PLA PRO Matte.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json index d149f1cccd..1487f567cd 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Premium Silk.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json index 50d8e0f6ca..789d2bd096 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Textura.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json index 219c0d4384..aed77a1a1a 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA Wood.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json index 5e4796c0e4..6e0a0952d5 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA High Speed.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json index 9d852517a2..d785327ee7 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA X-PLA.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json index 8cd0d62151..c530f3fa7c 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA rPLA RE-ADD.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json index 3c542ea4d7..32debd4c18 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PLA-CF Carbon Fiber.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json index 0213bc0680..88258976f2 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth PVDF Adamant S1.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json index 0fd00bee84..afdcb43296 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU EasyFlex.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json index d04dd869fd..81d08c4681 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 85A.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], diff --git a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json index e3460d0353..0b4e7c3fcd 100644 --- a/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json +++ b/resources/profiles/BBL/filament/addnorth/addnorth TPU Pro Matte 95A.json @@ -58,7 +58,15 @@ "Bambu Lab X2D 0.2 nozzle", "Bambu Lab X2D 0.4 nozzle", "Bambu Lab X2D 0.6 nozzle", - "Bambu Lab X2D 0.8 nozzle" + "Bambu Lab X2D 0.8 nozzle", + "Bambu Lab H2C 0.2 nozzle", + "Bambu Lab H2C 0.4 nozzle", + "Bambu Lab H2C 0.6 nozzle", + "Bambu Lab H2C 0.8 nozzle", + "Bambu Lab A2L 0.2 nozzle", + "Bambu Lab A2L 0.4 nozzle", + "Bambu Lab A2L 0.6 nozzle", + "Bambu Lab A2L 0.8 nozzle" ], "compatible_printers_condition": "", "compatible_prints": [], From a77209af8f320118408e7bcbf127722804661e1a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 18 Sep 2026 11:20:57 +0800 Subject: [PATCH 162/162] Stop requiring a filament id snapshot update when filaments change --- .claude/skills/orca-profiles/SKILL.md | 9 +- .../skills/orca-profiles/references/ids.md | 62 +- .../references/review-checklist.md | 8 +- .../orca-profiles/references/validation.md | 23 +- .../orca-profiles/references/vendor-bundle.md | 2 +- .github/workflows/check_profiles.yml | 4 +- docs/HLSD/filament_id.md | 82 +- scripts/check_profile.ps1 | 5 +- scripts/check_profile.sh | 6 +- scripts/filament_id_snapshot.json | 7783 ----------------- scripts/orca_profile_tool.py | 276 +- scripts/tests/test_filament_id.py | 318 +- scripts/tests/test_profile_tool.py | 32 +- 13 files changed, 156 insertions(+), 8454 deletions(-) delete mode 100644 scripts/filament_id_snapshot.json diff --git a/.claude/skills/orca-profiles/SKILL.md b/.claude/skills/orca-profiles/SKILL.md index 18d9fc0adc..692e529074 100644 --- a/.claude/skills/orca-profiles/SKILL.md +++ b/.claude/skills/orca-profiles/SKILL.md @@ -1,6 +1,6 @@ --- name: orca-profiles -description: Use when creating, modifying, reviewing or debugging OrcaSlicer FFF system profiles under resources/profiles, including printer/vendor/nozzle/material additions, bundle indexes and versions, preset renames, setting_id, filament_id and filament_id_snapshot.json. Also use for missing presets or vendors, ignored profile settings, ambiguous AMS filament matches, and failures from orca_profile_tool.py, check_profile.sh/.bat, OrcaSlicer_profile_validator or the Check profiles CI job. +description: Use when creating, modifying, reviewing or debugging OrcaSlicer FFF system profiles under resources/profiles, including printer/vendor/nozzle/material additions, bundle indexes and versions, preset renames, setting_id and filament_id. Also use for missing presets or vendors, ignored profile settings, ambiguous AMS filament matches, and failures from orca_profile_tool.py, check_profile.sh/.bat, OrcaSlicer_profile_validator or the Check profiles CI job. --- # OrcaSlicer system profiles @@ -21,7 +21,7 @@ Paths below are relative to this skill. Commands run from the repository root. | Add a printer or nozzle; change models, variants, assets or extruder vectors | [machine-profiles.md](references/machine-profiles.md) | | Add a quality tier or tune a process | [process-profiles.md](references/process-profiles.md) | | Create a vendor bundle; diagnose loading or inheritance; migrate preset names | [vendor-bundle.md](references/vendor-bundle.md) | -| Change ids or snapshot claims; diagnose AMS identity | [ids.md](references/ids.md), then `docs/HLSD/filament_id.md` for identity changes | +| Change ids; diagnose AMS identity | [ids.md](references/ids.md), then `docs/HLSD/filament_id.md` for identity changes | | Review a profile diff | [review-checklist.md](references/review-checklist.md) | | Run checks, interpret failures, test another tree or verify in the app | [validation.md](references/validation.md) | @@ -71,14 +71,11 @@ Paths below are relative to this skill. Commands run from the repository root. python3 scripts/orca_profile_tool.py normalize --vendor "" python3 scripts/orca_profile_tool.py update-index --vendor "" python3 scripts/orca_profile_tool.py generate-id --vendor "" - python3 scripts/orca_profile_tool.py update-snapshot python3 scripts/orca_profile_tool.py check ``` Writing commands support `--dry-run`. Inspect their diffs: `normalize` changes content and can - reformat entire files. `update-snapshot` is tree-wide; include its diff whenever a filament id - **or claim** changes, even if no new id was minted. Skip it when filament identity and claims - are unchanged. Stop and resolve command errors before proceeding. + reformat entire files. Stop and resolve command errors before proceeding. **Do not use `trim` in this workflow:** it can delete newly authored, unindexed profiles. Do not use `normalize --force` for routine edits. diff --git a/.claude/skills/orca-profiles/references/ids.md b/.claude/skills/orca-profiles/references/ids.md index 59560160f8..b6a09e9a2f 100644 --- a/.claude/skills/orca-profiles/references/ids.md +++ b/.claude/skills/orca-profiles/references/ids.md @@ -6,7 +6,7 @@ Orca-generated ids are deterministic hashes of identity. **Never invent an id or [BBL's authoritative setting ids](#bbls-exception-precisely). `docs/HLSD/filament_id.md` is the authoritative design document for `filament_id` — the id landscape, the -snapshot as the maintainer gate, and the Bambu catalog map. This page is the tooling half. +checks CI runs, and the Bambu catalog map. This page is the tooling half. | | `setting_id` | `filament_id` | | --- | --- | --- | @@ -32,12 +32,10 @@ Use `scripts/orca_profile_tool.py` with a subcommand: | `normalize` | rewrites profile files into their canonical shape | | `trim` | deletes profile files no `.json` list references | | `update-index` | rebuilds the `*_list` sections from the files on disk | -| `update-snapshot` | re-records `scripts/filament_id_snapshot.json` | The order after adding, renaming or deleting files — each step feeds the next, so it is not -interchangeable — is `normalize` → `update-index` → `generate-id` → `update-snapshot` → `check`. -The [authoring workflow](../SKILL.md#creating-or-modifying-a-profile) has the commands; -`update-snapshot` is needed when filament ids or claims change. +interchangeable — is `normalize` → `update-index` → `generate-id` → `check`. +The [authoring workflow](../SKILL.md#creating-or-modifying-a-profile) has the commands. > **`trim` deletes.** It removes every profile file the index does not list — including the one you just > added and have not registered yet. Register first, or skip `trim` entirely; it is a cleanup sweep, not @@ -48,15 +46,15 @@ filesystem (the `setting_id` pass walks the filesystem, so a bundle whose index still assignable). A new filament file is therefore invisible to `generate-id`'s filament_id pass until it is registered — its `setting_id` is written regardless. -- `--dry-run` works on every writing command (`generate-id`, `normalize`, `trim`, `update-index`, - `update-snapshot`) and writes nothing. +- `--dry-run` works on every writing command (`generate-id`, `normalize`, `trim`, `update-index`) + and writes nothing. - `--filament-id` / `--setting-id` narrow `generate-id`; they exclude each other, and passing neither writes both. - `--vendor` is repeatable and narrows **only what is written** — the id is a function of the triple alone, so a narrowed run writes exactly what a full run would. An unknown vendor exits 1 before any write. `--vendor` on `check` narrows the per-vendor checks only; the `setting_id` and `filament_id` - passes stay tree-wide. `update-snapshot` takes no `--vendor` at all. -- `--profiles DIR` points any command at another tree — with the `--snapshot` companion rule, see + passes stay tree-wide. +- `--profiles DIR` points any command at another tree — see [Checking a copy of the tree](validation.md#checking-a-copy-of-the-tree). - `--profile-type` narrows `normalize`, `trim` and `update-index` to `machine_model`, `process`, `filament` or `machine`. @@ -71,8 +69,8 @@ whole files into canonical shape — which is why `check` demands it already be CRLF committed (OrcaFilamentLibrary, Anycubic and RH3D among them), so a `normalize` pass there rewrites every line — read the diff before committing it. -On a clean tree `check`, `generate-id --dry-run` and `update-snapshot --dry-run` all exit 0 with zero -findings. That is the baseline to restore before opening a PR. +On a clean tree `check` and `generate-id --dry-run` both exit 0 with zero findings. That is the +baseline to restore before opening a PR. ## What `generate-id` does and does not fix @@ -88,7 +86,7 @@ Refuses to write (reports only): a base62 collision between two products, an emp `filament_type`, a broken `inherits` chain, roots of one filament resolving divergent `(vendor, type)` pairs. -**Does not fix: a preset that *inherits* a wrong `filament_id`.** This is check 3b, and it is the trap +**Does not fix: a preset that *inherits* a wrong `filament_id`.** This is check 2b, and it is the trap most likely to bite. It happens when a branded filament inherits a generic for its settings: ```jsonc @@ -107,8 +105,8 @@ Two fixes, in order of preference: 2. **Declare the tool-computed key on the preset itself.** Use the expected value reported by `check` or compute it with the function below; this is not a manually chosen id. Make sure the preset resolves the right `filament_vendor` and `filament_type` first — with - neither set, the triple resolves through the generic parent and the branded product is minted, and - then sanctioned in the snapshot, under vendor `Generic`. If you need the id before the file exists: + neither set, the triple resolves through the generic parent and the branded product is minted + under vendor `Generic`. If you need the id before the file exists: ```bash python3 -c "import sys; sys.path.insert(0,'scripts'); from orca_profile_tool import generate_filament_id as g; print(g('Polymaker','PLA','PolyLite PLA'))" @@ -119,38 +117,6 @@ Two fixes, in order of preference: The `setting_id` equivalent is `generate_preset_setting_id('', '', '')`. -## The snapshot - -`scripts/filament_id_snapshot.json` is the sanctioned state: the id landscape derived from the tree must -equal it exactly, in both directions. **Any change to a filament id or its claims must be committed with -the profiles.** - -To trace an id from an error, search for it in the snapshot. Each entry records its identity triple -and `/` claims, one per bundle/product pair rather than per preset. - -```bash -python3 scripts/orca_profile_tool.py update-snapshot -``` - -Never hand-edit it. It is regenerated deterministically (1-space indent, LF, id-sorted) and -refuses to write two states it could not record truthfully: a tree it could not read whole, and an id -declared under more than one triple. It does **not** judge the ids themselves — it records state, `check` -judges it, so a bad id lands in the diff and fails there instead. `generate-id` never touches the -snapshot, and reminds you with a warning **only when it actually wrote a `filament_id`** — not on a -`--dry-run`, and not when only `setting_id`s changed. - -Reviewing a snapshot diff: - -| Diff | Means | -| --- | --- | -| new id + new claim | a genuinely new product — confirm it is not a rename in disguise | -| id removed | a product left the tree, or its identity changed — the old id is not forwarded anywhere | -| triple changed under an existing id | `filament_vendor`/`filament_type`/name was edited; deliberate? | -| claim added/removed only | a bundle started or stopped shipping that product | - -An entry with an empty `filaments` list is legitimate — declared, but not yet claimed by an instantiated -preset. - ## BBL's exception, precisely `RESERVED_VENDORS = {"BBL"}` covers **`setting_id` assignment only**, keyed on the *folder* name: @@ -159,8 +125,8 @@ preset. `setting_id` therefore **cannot be fixed by the tool**, yet the presence rule still applies to it — carry over Bambu's authoritative id by hand. - BBL is not exempt from anything else: bases still get their `setting_id` stripped, ids must still be - globally unique, and BBL `filament_id`s are minted like everyone else's — every id the snapshot records - as claimed by BBL is an `OF*`. + globally unique, and BBL `filament_id`s are minted like everyone else's — every one of them is an + `OF*`. ## Ids other systems compose diff --git a/.claude/skills/orca-profiles/references/review-checklist.md b/.claude/skills/orca-profiles/references/review-checklist.md index 26f2f7656f..0c4fa7e95a 100644 --- a/.claude/skills/orca-profiles/references/review-checklist.md +++ b/.claude/skills/orca-profiles/references/review-checklist.md @@ -51,11 +51,11 @@ and take the whole vendor bundle down; an unindexed file gets reviewed, merged a ## 3. Are ids generated, not written? No hand-typed or copied `setting_id` / `filament_id`. Instantiated presets have a `setting_id`; bases do -not. A filament id change comes with a `scripts/filament_id_snapshot.json` diff in the same commit. -`check` enforces all of that; what it cannot tell you is whether the identity *should* have moved. +not. `check` enforces all of that; what it cannot tell you is whether the identity *should* have moved. -Read the snapshot diff as the identity gate: a removed id or a changed triple means a product's identity -moved, and the old id is not forwarded anywhere. Confirm that was intended. +A rewritten or removed `filament_id` means a product's identity moved — a rename, or an edited +`filament_vendor` / `filament_type` — and the old id is not forwarded anywhere. Confirm that was +intended, and that a new id is not a rename in disguise. *Why:* a duplicate `filament_id` on one printer makes AMS spool matching a coin toss; a copied `setting_id` breaks preset identity. See [ids.md](ids.md). diff --git a/.claude/skills/orca-profiles/references/validation.md b/.claude/skills/orca-profiles/references/validation.md index a0537c09ef..497e1d4e18 100644 --- a/.claude/skills/orca-profiles/references/validation.md +++ b/.claude/skills/orca-profiles/references/validation.md @@ -62,8 +62,7 @@ as SKIP for a vendor with no `machine/` folder. ## `orca_profile_tool.py check` `check` is one subcommand of the tool that also owns -`generate-id`, `normalize`, `trim`, `update-index` and `update-snapshot`; see [ids.md](ids.md) for the -writing half. +`generate-id`, `normalize`, `trim` and `update-index`; see [ids.md](ids.md) for the writing half. | Per vendor | Catches | | --- | --- | @@ -177,21 +176,14 @@ pre-existing user files may be present. ## Checking a copy of the tree -Use `--profiles DIR` on the Python tool and `-p DIR` on the validator. -`check` and `update-snapshot` describe a tree's sanctioned id state, so pointing them elsewhere also -needs `--snapshot PATH` for that tree — passing `--profiles` without it exits 2 rather than silently -judging the copy against `resources/profiles`'s snapshot. - -**The wrappers' `--profiles` / `-ProfilesDir` redirects only their validator checks.** Their -`profile_tool` check still reads this checkout's `resources/profiles`. To validate a copy fully, -run the Python check separately with that tree's snapshot, then name only validator checks: +Use `--profiles DIR` on the Python tool and `-p DIR` on the validator. The wrappers' `--profiles` / +`-ProfilesDir` passes the tree to both, so one run validates a copy fully: ```bash -python3 scripts/orca_profile_tool.py check --profiles "" --snapshot "" -./scripts/check_profile.sh --profiles "" validate_system validate_slice validate_filament_subtypes validate_custom +./scripts/check_profile.sh --profiles "" ``` -On Windows use `py -3` and `scripts\check_profile.bat -ProfilesDir ""` with the same check names. +On Windows use `scripts\check_profile.bat -ProfilesDir ""`. ## Testing in the app @@ -238,7 +230,6 @@ Keep stems tidy too, but a space immediately before `.json` is not a trailing pa | `[ERROR] … normalize would ` / `.json: update-index would rebuild ` | run that command and commit the result | | `[ERROR] has N profiles named ""` | identify the intended preset and remove or rename the duplicate; use `trim --dry-run` only for deliberate unindexed-file cleanup | | `[ERROR] … must not have a setting_id` / `is missing a setting_id` | `generate-id --setting-id` | -| `[ERROR] filament_id "" is not sanctioned by …snapshot.json` | `update-snapshot`, commit the diff | | `inherits filament_id "X" but its own triple … mints "Y"` | `generate-id` will **not** fix this — see [ids.md](ids.md) | | `vendor 's config version: invalid` | the `version` string is not Semver-parseable | | `[json.exception.type_error.302] type must be string` | locate the non-string value in the index or model; see [failure scopes](vendor-bundle.md#failure-modes-ranked-by-blast-radius) | @@ -260,5 +251,5 @@ once the run is green. The job name is also the required check for the delegated-merge bot, which lets a vendor maintainer self-merge a `resources/profiles//` PR with no human review — so whatever CI does not check -is what ships unreviewed. Its denied patterns refuse `^scripts/` and any `.py`, so a PR that must update -`scripts/filament_id_snapshot.json` always needs a maintainer. +is what ships unreviewed. Its denied patterns refuse `^scripts/` and any `.py`, so a PR that touches the +tooling always needs a maintainer. diff --git a/.claude/skills/orca-profiles/references/vendor-bundle.md b/.claude/skills/orca-profiles/references/vendor-bundle.md index 53b345b623..29aac13331 100644 --- a/.claude/skills/orca-profiles/references/vendor-bundle.md +++ b/.claude/skills/orca-profiles/references/vendor-bundle.md @@ -171,5 +171,5 @@ A separate tree (`Template.json` + `Template/`) holding filament and process tem scaffold for shipped profiles — `CreatePresetsDialog.cpp` reads it for the in-app "create a custom printer/filament" wizard, so editing it changes what users get when they create a custom preset. `check_profile.sh`'s validator checks default to `resources/profiles` (redirectable with `-p`), and so -does `orca_profile_tool.py` (redirectable with `--profiles`, plus `--snapshot` for the id checks); +does `orca_profile_tool.py` (redirectable with `--profiles`); neither covers this tree. diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 7e714e2def..e668482bfd 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -80,8 +80,8 @@ jobs: set +e ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -s -l 2 2>&1 | tee ${{ runner.temp }}/validate_slice.log exit ${PIPESTATUS[0]} - # All vendors' filament_id collisions were fixed (see scripts/filament_id_snapshot.json), - # so the duplicate-filament-subtype check runs tree-wide. + # All vendors' filament_id collisions were fixed, so the duplicate-filament-subtype + # check runs tree-wide. - name: validate filament subtype check id: validate_filament_subtypes continue-on-error: true diff --git a/docs/HLSD/filament_id.md b/docs/HLSD/filament_id.md index 3f8827f720..122dfb6fdb 100644 --- a/docs/HLSD/filament_id.md +++ b/docs/HLSD/filament_id.md @@ -36,21 +36,17 @@ This page is the rule for authoring `filament_id` in system profiles > **Never write a `filament_id` value by hand.** A new filament gets its id from > `python scripts/orca_profile_tool.py generate-id`; one already in the tree has one — inherit it. -## The design, in two pieces +## The design Because several consumers match **globally by id alone, first hit wins** (see the next section), any two materials sharing one id feed wrong data somewhere — a wrong tray name, a wrong support-material flag, a wrong nozzle grouping — and inside one printer a duplicated id makes AMS spool matching a coin toss. Hand-written ids produce such collisions constantly, so -the system is built to make them impossible: - -1. **Deterministic minting.** An id is a pure hash of the product's identity — no registry to - maintain, no next-free-number ceremony, no way for two concurrent PRs to race for the same - number, and no way to get it wrong by hand, because you never write it by hand. -2. **A sanctioned snapshot.** The complete id landscape derived from the tree must equal - `scripts/filament_id_snapshot.json` exactly, so every change to ids, claims (which bundles - ship which id, and for which filament), or product identity surfaces as a reviewable diff to - one file — the maintainer gate. +the system is built to make them impossible: an id is a pure hash of the product's identity — +no registry to maintain, no next-free-number ceremony, no way for two concurrent PRs to race +for the same number, and no way to get it wrong by hand, because you never write it by hand. +CI holds every id in the tree to that rule, so the profiles themselves are the whole record of +which products exist and which bundles ship them. ## Who consumes the id @@ -160,8 +156,8 @@ key needed). Tuning a generic material → **join the OrcaFilamentLibrary filame different product by rule 5, so it then needs its own id. 5. **Ids follow the product identity.** The id is a pure function of the product triple `(filament_vendor, filament_type, filament name)`, so correcting any of them re-mints the id - **by design**, applied by `generate-id` (preview with `--dry-run`, confine with `--vendor`) - and gated by the `update-snapshot` diff; the exact sequence is in the FAQ. Nothing forwards + **by design**, applied by `generate-id` (preview with `--dry-run`, confine with `--vendor`); + the exact sequence is in the FAQ. Nothing forwards the old value, so anything outside the tree that stored it — a device tray, a calibration record, a saved project — falls back to matching by filament type until the user re-selects the filament. Re-mint deliberately, and only to fix a genuinely wrong identity. @@ -196,8 +192,8 @@ Snapmaker bundles alike; the OFL generic `Generic/PLA/Generic PLA` mints `OFDSrz by 35 bundles — most by independent declarations converging on the same mint, the rest purely through inheritance from the OFL preset. -Nothing but the triple feeds the mint — not the rest of the tree, not the snapshot, not what -another preset of the product happens to carry. Determined triple, determined id: one product +Nothing but the triple feeds the mint — not the rest of the tree, not what another preset of +the product happens to carry. Determined triple, determined id: one product carries one id and there is no second acceptable value for it, so any other value on a preset is a mismatch `check` reports and `generate-id` pulls back. Two *different* products whose triples mint the same base62 value would be a collision (a roughly 36-bit id space against a @@ -214,17 +210,15 @@ Workflow for a new filament: # 1. Author the filament with NO filament_id key anywhere. python scripts/orca_profile_tool.py generate-id --dry-run # 2. preview the ids — writes nothing python scripts/orca_profile_tool.py generate-id # 3. apply them to the profile file(s) -python scripts/orca_profile_tool.py update-snapshot # 4. record the new claims in the snapshot -python scripts/orca_profile_tool.py check # 5. validate — everything CI checks -# 6. Commit the profile edits together with scripts/filament_id_snapshot.json, for review. +python scripts/orca_profile_tool.py check # 4. validate — everything CI checks ``` `generate-id` makes every filament's id equal the mint of its own `(filament_vendor, filament_type, filament name)` triple: it inserts one where an instantiated filament resolves none, and re-derives one that does not match. A preset that *inherits* a -mismatching id is the one case left to the author — check 3b names it, and the fix is to inherit +mismatching id is the one case left to the author — check 2b names it, and the fix is to inherit a preset of the same filament or to give the preset its own key. A declaration is left alone -exactly when it already equals the one id its triple mints, and a collision (check 3d) is +exactly when it already equals the one id its triple mints, and a collision (check 2d) is reported and left unwritten. The same run assigns `generate_preset_setting_id(vendor, type, name)` to every instantiated filament, process and machine preset of every vendor except BBL, which keeps its authoritative `G*` ids, strips @@ -242,9 +236,7 @@ loudly), and a no-op on a tree that already passes `check`. - `--dry-run` reports what the run would do and writes nothing, so `generate-id --dry-run --vendor ` previews just that bundle. - `--profiles DIR` points the tooling at a different profile tree (default - `resources/profiles`). `check` and `update-snapshot` read and write the sanctioned state of - the tree they are given, so pointing them elsewhere needs `--snapshot PATH` for that tree too — - `scripts/filament_id_snapshot.json` describes `resources/profiles` and no other tree. + `resources/profiles`). The tool's other commands maintain the tree around the ids: `fix` normalises profile files, `trim` drops files no `.json` list references, and `update-index` rebuilds those lists. @@ -252,13 +244,11 @@ They do not touch ids; `--help` documents them. **Identity fixes need no separate command.** `generate-id` re-derives an id that no longer matches its triple exactly the way it fills in a missing one, so a rename or a `filament_vendor` / -`filament_type` correction is just: fix the config, run `generate-id` (confine it with -`--vendor`, preview it with `--dry-run`), then `update-snapshot` and review the diff. +`filament_type` correction is just: fix the config and run `generate-id` (confine it with +`--vendor`, preview it with `--dry-run`). If you skip the tooling, CI fails and prints the remedy: the expected id for your filament and -the instruction to run `python scripts/orca_profile_tool.py generate-id`; once the id is minted, -the snapshot checks likewise point at `update-snapshot` and tell you to commit the resulting -diff. +the instruction to run `python scripts/orca_profile_tool.py generate-id`. ## Ids other systems compose @@ -339,7 +329,7 @@ OrcaFilamentLibrary. **135 is the number to expect at every regeneration** — 1 one-off size of the transition and stopped being computable from the tree once the BBL bundle was re-minted, so do not "fix" the report to print it. -**Check 5** lives in `check_filament_ids`, so profile CI runs it alongside the other four. It +**Check 4** lives in `check_filament_ids`, so profile CI runs it alongside the other three. It holds the file to its contract: it parses, carries `source` / `bambustudio_commit` / `generated`, keys only `OF`-format ids, maps each Bambu id at most once, and — for every row whose key the tree actually claims — agrees with the tree on that id's `(vendor, type, name)` @@ -428,23 +418,14 @@ map would silently reproduce the bug. ## How CI enforces this Profile CI (`check_profiles.yml`) runs `check_filament_ids()` tree-wide via -`scripts/orca_profile_tool.py check`. Its ground truth is -**`scripts/filament_id_snapshot.json` — the sanctioned state**: the id state derived from the -tree must equal the snapshot exactly, in both directions. Any change to the id landscape -therefore surfaces as a diff to that file, and **that snapshot diff is what maintainers review -and gate in a PR**. Never edit the snapshot by hand — `update-snapshot` regenerates it -deterministically (running it twice changes nothing). The snapshot holds one map, `ids`: each -entry is the product the id is minted from (`filament_vendor`, `filament_type`, `name`) and the -`filaments` claiming it (`Vendor/Filament`), and it sanctions *state*, never exceptions: no check -consults it to excuse a preset from a rule, and there is no grandfather list of any kind. +`scripts/orca_profile_tool.py check`. Every check judges the tree against the rules on this +page and nothing else — there is no recorded id state to match and no grandfather list of any +kind. The checks, in brief: -- **Format** — every id occurring in the tree is `OF` + 6 base62 chars. No exceptions: not a - snapshot entry, not BBL. -- **Snapshot equality** — tree claims == snapshot claims **and** each id's declared triple == - its snapshot entry, both directions: any `filament_vendor`/`filament_type`/name change - surfaces as a snapshot diff. +- **Format** — every id occurring in the tree is `OF` + 6 base62 chars. No exceptions, not + even BBL. - **Identity** — the id is a function of the triple alone. A declared `OF*` id must equal the one id its declarer's own triple mints, with no second acceptable value; the id an instantiated preset *inherits* must equal the mint of *its* own triple, however it inherits @@ -463,9 +444,8 @@ The checks, in brief: A profile that declares an id no triple mints — a Bambu catalog id, a composed Qidi one, a hand-typed value, whatever its vendor — fails the format check. For a Bambu-cataloged product -the catalog map is where the correspondence belongs. New sharing via a *declared* id is caught -by the identity check; sharing through inheritance carries no declaration to check and surfaces -only as a new claim in the snapshot diff — which is exactly why that diff is the gate. +the catalog map is where the correspondence belongs. Two products sharing one id are caught by +the identity check whether the id is declared or inherited. The same `check` run holds every declared id to the AMS 8-character limit, tree-wide and for every vendor alike, scoped to the presets a vendor's index actually references (a file the index @@ -489,19 +469,19 @@ ambiguity check behind structure rule 3. (or any real filament) for the settings and declare the id of your own filament; run `python scripts/orca_profile_tool.py generate-id` to mint it. Inheritance never changes the id. - **I need to fix a filament's `filament_vendor` or `filament_type`.** Fix the config, run - `generate-id --vendor ` (preview with `--dry-run`), then `update-snapshot`, and commit - the profile and snapshot diffs together. The id re-derives from the corrected identity, and + `generate-id --vendor ` (preview with `--dry-run`), and commit the result. The id + re-derives from the corrected identity, and nothing forwards the old value, so a tray or record still holding it falls back to matching by filament type. - **I need to rename a filament.** Rename the presets (adding `renamed_from`, which keeps the - preset *name* resolving), then `generate-id --vendor ` (preview with `--dry-run`), then - `update-snapshot`. The id follows the new filament name; as with any identity fix, the old id + preset *name* resolving), then `generate-id --vendor ` (preview with `--dry-run`). The + id follows the new filament name; as with any identity fix, the old id is not forwarded. - **Can I reuse a `QD_*` id for a Qidi profile?** No — it is not a mint, so it is not a `filament_id`. Those values are composed by the box at runtime, and no preset carries one. Author Qidi filaments like any other vendor's. -- **CI says my filament needs an id.** Run `python scripts/orca_profile_tool.py generate-id`, then - `update-snapshot`, and commit both diffs. Do not type an id by hand. +- **CI says my filament needs an id.** Run `python scripts/orca_profile_tool.py generate-id` and + commit the result. Do not type an id by hand. For general profile authoring, see the profile development guide on the [OrcaSlicer wiki](https://www.orcaslicer.com/wiki). diff --git a/scripts/check_profile.ps1 b/scripts/check_profile.ps1 index b5d3345e33..1aa5a11bd7 100644 --- a/scripts/check_profile.ps1 +++ b/scripts/check_profile.ps1 @@ -38,8 +38,7 @@ under emulation on ARM64. .PARAMETER ProfilesDir - Profile tree to validate (default: resources\profiles). profile_tool always looks at the - tree next to the script, so this only redirects the validator checks. + Profile tree to validate (default: resources\profiles). .PARAMETER Vendor Check only this vendor, named after its .json (e.g. "Co Print"). validate_custom is @@ -440,7 +439,7 @@ function Expand-VendorPresets([string] $Zip, [string] $Tree, [string] $Prefix) { $CheckBodies = @{ profile_tool = { - Invoke-Tool -Exe (Resolve-Python) -Arguments (@((Join-Path $RepoRoot 'scripts\orca_profile_tool.py'), 'check') + $VendorPyArgs) + Invoke-Tool -Exe (Resolve-Python) -Arguments (@((Join-Path $RepoRoot 'scripts\orca_profile_tool.py'), 'check', '--profiles', $ProfilesDir) + $VendorPyArgs) } validate_system = { diff --git a/scripts/check_profile.sh b/scripts/check_profile.sh index 9076c957ab..42e72b93f7 100755 --- a/scripts/check_profile.sh +++ b/scripts/check_profile.sh @@ -82,9 +82,7 @@ Options: Note: profile_tool is the only check that is not the validator binary; it makes the static checks the validator cannot, because the validator loads the tree the way the slicer does and so never sees a profile no .json indexes, a preset name two files claim, or a -file normalize and update-index would still rewrite. It always looks at the tree next to -the script (/resources/profiles); --profiles only redirects the validator checks, -because validating another tree's ids needs that tree's own filament_id snapshot too. +file normalize and update-index would still rewrite. Note: --vendor narrows validate_custom too, by keeping only that vendor's presets in each fixture tree. The one check it cannot narrow is validate_slice for a vendor that ships no @@ -366,7 +364,7 @@ resolve_validator() { # ---------------------------------------------------------------------------- checks check_profile_tool() { - python3 "${REPO_ROOT}/scripts/orca_profile_tool.py" check --vendor "${VENDOR}" + python3 "${REPO_ROOT}/scripts/orca_profile_tool.py" check --profiles "${PROFILES_DIR}" --vendor "${VENDOR}" } check_validate_system() { diff --git a/scripts/filament_id_snapshot.json b/scripts/filament_id_snapshot.json deleted file mode 100644 index 5b45e5ca7e..0000000000 --- a/scripts/filament_id_snapshot.json +++ /dev/null @@ -1,7783 +0,0 @@ -{ - "ids": { - "OF02UAVh": { - "filaments": [ - "Creality/Soleyin Ultra PLA" - ], - "name": "Soleyin Ultra PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OF03RK6r": { - "filaments": [ - "BBL/BETA PLA Metal" - ], - "name": "BETA PLA Metal", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF0AquDh": { - "filaments": [ - "Flashforge/FusRock S-Multi" - ], - "name": "FusRock S-Multi", - "filament_type": "PA", - "filament_vendor": "FusRock" - }, - "OF0EYBWQ": { - "filaments": [ - "BBL/addnorth PETG Flame v0" - ], - "name": "addnorth PETG Flame v0", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OF0FfcAG": { - "filaments": [ - "Anycubic/Anycubic TPU for ACE" - ], - "name": "Anycubic TPU for ACE", - "filament_type": "TPU", - "filament_vendor": "Anycubic" - }, - "OF0NgY1y": { - "filaments": [ - "BBL/COEX NYLEX PA6-CF", - "OrcaFilamentLibrary/COEX NYLEX PA6-CF" - ], - "name": "COEX NYLEX PA6-CF", - "filament_type": "PA-CF", - "filament_vendor": "COEX 3D" - }, - "OF0R5Wc7": { - "filaments": [ - "Artillery/Artillery PLA Tough" - ], - "name": "Artillery PLA Tough", - "filament_type": "PLA Tough", - "filament_vendor": "Artillery" - }, - "OF0UJcb6": { - "filaments": [ - "BBL/PolyLite PETG", - "OrcaFilamentLibrary/PolyLite PETG", - "Snapmaker/PolyLite PETG" - ], - "name": "PolyLite PETG", - "filament_type": "PETG", - "filament_vendor": "Polymaker" - }, - "OF0VpkBM": { - "filaments": [ - "Snapmaker/PolyLite PETG Translucent" - ], - "name": "PolyLite PETG Translucent", - "filament_type": "PETG", - "filament_vendor": "Polymaker" - }, - "OF0Vtzaw": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Amarillo Radiante" - ], - "name": "FilAr PETG Amarillo Radiante", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OF0b7M1z": { - "filaments": [ - "SeeMeCNC/SeeMeCNC PA-CF" - ], - "name": "SeeMeCNC PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "SeeMeCNC" - }, - "OF0c7mnL": { - "filaments": [ - "InfiMech/InfiMech ABS" - ], - "name": "InfiMech ABS", - "filament_type": "ABS", - "filament_vendor": "InfiMech" - }, - "OF0gGRWk": { - "filaments": [ - "BBL/Panchroma PLA Glow", - "OrcaFilamentLibrary/Panchroma PLA Glow", - "Snapmaker/Panchroma PLA Glow" - ], - "name": "Panchroma PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF0kCNDK": { - "filaments": [ - "BBL/Panchroma PLA Luminous", - "OrcaFilamentLibrary/Panchroma PLA Luminous", - "Snapmaker/Panchroma PLA Luminous" - ], - "name": "Panchroma PLA Luminous", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF0omtEb": { - "filaments": [ - "Snapmaker/Fiberon ASA-CF08" - ], - "name": "Fiberon ASA-CF08", - "filament_type": "ASA", - "filament_vendor": "Polymaker" - }, - "OF0pzFLc": { - "filaments": [ - "BBL/COEX PLA+Silk", - "OrcaFilamentLibrary/COEX PLA+Silk" - ], - "name": "COEX PLA+Silk", - "filament_type": "PLA", - "filament_vendor": "COEX 3D" - }, - "OF0w7OpJ": { - "filaments": [ - "Qidi/QIDI ABS Rapido 0.8 nozzle" - ], - "name": "QIDI ABS Rapido 0.8 nozzle", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OF0wBGNx": { - "filaments": [ - "BBL/Bambu ASA-CF", - "OrcaFilamentLibrary/Bambu ASA-CF" - ], - "name": "Bambu ASA-CF", - "filament_type": "ASA-CF", - "filament_vendor": "Bambu Lab" - }, - "OF0wz84w": { - "filaments": [ - "Qidi/QIDI ABS Rapido 0.6 nozzle" - ], - "name": "QIDI ABS Rapido 0.6 nozzle", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OF0yFLkY": { - "filaments": [ - "Anycubic/Anycubic ASA" - ], - "name": "Anycubic ASA", - "filament_type": "ASA", - "filament_vendor": "Anycubic" - }, - "OF112FvY": { - "filaments": [ - "Anycubic/Generic PETG Basic" - ], - "name": "Generic PETG Basic", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OF1ID4N1": { - "filaments": [ - "BBL/addnorth PA6 Addlantis" - ], - "name": "addnorth PA6 Addlantis", - "filament_type": "PA6", - "filament_vendor": "addnorth" - }, - "OF1N1qMK": { - "filaments": [ - "BBL/Panchroma PLA UV Shift", - "OrcaFilamentLibrary/Panchroma PLA UV Shift", - "Snapmaker/Panchroma PLA UV Shift" - ], - "name": "Panchroma PLA UV Shift", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF1Pke8t": { - "filaments": [ - "BBL/Overture Easy PLA", - "OrcaFilamentLibrary/Overture Easy PLA" - ], - "name": "Overture Easy PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OF1UNk9P": { - "filaments": [ - "BBL/Generic PP", - "Creality/Generic PP", - "OrcaFilamentLibrary/Generic PP", - "Tiertime/Generic PP" - ], - "name": "Generic PP", - "filament_type": "PP", - "filament_vendor": "Generic" - }, - "OF1W7c76": { - "filaments": [ - "Qidi/QIDI ASA-CF" - ], - "name": "QIDI ASA-CF", - "filament_type": "ASA-CF", - "filament_vendor": "QIDI" - }, - "OF1d7c3A": { - "filaments": [ - "Snapmaker/Snapmaker ASA" - ], - "name": "Snapmaker ASA", - "filament_type": "ASA", - "filament_vendor": "Snapmaker" - }, - "OF1dpPrW": { - "filaments": [ - "Qidi/Bambu PLA" - ], - "name": "Bambu PLA", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OF1hznGB": { - "filaments": [ - "Elegoo/Elegoo PLA PRO", - "OrcaFilamentLibrary/Elegoo PLA PRO" - ], - "name": "Elegoo PLA PRO", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OF20kXr5": { - "filaments": [ - "Elegoo/Elegoo PAHT-CF", - "OrcaFilamentLibrary/Elegoo PAHT-CF" - ], - "name": "Elegoo PAHT-CF", - "filament_type": "PA", - "filament_vendor": "Elegoo" - }, - "OF223rZv": { - "filaments": [ - "Anycubic/Anycubic ABS" - ], - "name": "Anycubic ABS", - "filament_type": "ABS", - "filament_vendor": "Anycubic" - }, - "OF2EB9Iz": { - "filaments": [ - "Volumic/Volumic ASA Ultra" - ], - "name": "Volumic ASA Ultra", - "filament_type": "ASA", - "filament_vendor": "Volumic" - }, - "OF2EK9F1": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Violeta" - ], - "name": "FilAr PLA-mate Violeta", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF2GCW1l": { - "filaments": [ - "BBL/SUNLU PETG", - "Flashforge/SUNLU PETG", - "OrcaFilamentLibrary/SUNLU PETG", - "Sovol/SUNLU PETG" - ], - "name": "SUNLU PETG", - "filament_type": "PETG", - "filament_vendor": "SUNLU" - }, - "OF2TQpOO": { - "filaments": [ - "Qidi/QIDI PLA Silk" - ], - "name": "QIDI PLA Silk", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OF2VFe4J": { - "filaments": [ - "BBL/Bambu PAHT-CF", - "OrcaFilamentLibrary/Bambu PAHT-CF" - ], - "name": "Bambu PAHT-CF", - "filament_type": "PA-CF", - "filament_vendor": "Bambu Lab" - }, - "OF2Z1nT5": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Azul Imperial" - ], - "name": "FilAr PETG Azul Imperial", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OF2hfMcG": { - "filaments": [ - "OrcaArena/Arena PLA-CF" - ], - "name": "Arena PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Orca Arena" - }, - "OF2pj5l5": { - "filaments": [ - "BBL/Overture Super PLA+", - "OrcaFilamentLibrary/Overture Super PLA+" - ], - "name": "Overture Super PLA+", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OF2xccEe": { - "filaments": [], - "name": "DREMC ASA GF", - "filament_type": "ASA", - "filament_vendor": "DREMC" - }, - "OF30Ftju": { - "filaments": [ - "Elegoo/Elegoo Rapid TPU 95A", - "OrcaFilamentLibrary/Elegoo Rapid TPU 95A" - ], - "name": "Elegoo Rapid TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Elegoo" - }, - "OF342jVN": { - "filaments": [ - "BBL/Bambu PLA Tough+" - ], - "name": "Bambu PLA Tough+", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OF3F63OE": { - "filaments": [ - "re3D/re3D PETG" - ], - "name": "re3D PETG", - "filament_type": "PETG", - "filament_vendor": "re3D" - }, - "OF3IKafc": { - "filaments": [ - "Qidi/QIDI PLA Rapido Matte" - ], - "name": "QIDI PLA Rapido Matte", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OF3OMgrI": { - "filaments": [ - "Creality/CR-Silk" - ], - "name": "CR-Silk", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OF3PDEw3": { - "filaments": [ - "BBL/BETA PLA High Speed" - ], - "name": "BETA PLA High Speed", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF3WQaKK": { - "filaments": [ - "Creality/CR-PETG" - ], - "name": "CR-PETG", - "filament_type": "PETG", - "filament_vendor": "Creality" - }, - "OF3dJf4E": { - "filaments": [ - "Volumic/Volumic PLA Ultra (Performance)" - ], - "name": "Volumic PLA Ultra (Performance)", - "filament_type": "PLA", - "filament_vendor": "Volumic" - }, - "OF3fwO8b": { - "filaments": [ - "FlyingBear/FlyingBear PLA Basic" - ], - "name": "FlyingBear PLA Basic", - "filament_type": "PLA", - "filament_vendor": "FlyingBear" - }, - "OF3kBrdA": { - "filaments": [ - "Creality/eSUN PETG", - "OrcaFilamentLibrary/eSUN PETG" - ], - "name": "eSUN PETG", - "filament_type": "PETG", - "filament_vendor": "eSUN" - }, - "OF3msXEa": { - "filaments": [ - "Snapmaker/Snapmaker Dual PETG-CF" - ], - "name": "Snapmaker Dual PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Snapmaker" - }, - "OF3ydJTT": { - "filaments": [ - "InfiMech/InfiMech PLA Hyper" - ], - "name": "InfiMech PLA Hyper", - "filament_type": "PLA", - "filament_vendor": "InfiMech" - }, - "OF43Raws": { - "filaments": [ - "Snapmaker/PolyTerra J1 PLA" - ], - "name": "PolyTerra J1 PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF44ERDr": { - "filaments": [ - "Snapmaker/Polymaker General PLA Family" - ], - "name": "Polymaker General PLA Family", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF44VYzK": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Azul Francia" - ], - "name": "FilAr PETG Azul Francia", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OF4APyxe": { - "filaments": [ - "Creality/Hyper PAHT-CF" - ], - "name": "Hyper PAHT-CF", - "filament_type": "PA-CF", - "filament_vendor": "Creality" - }, - "OF4GM5qX": { - "filaments": [ - "Ratrig/Generic ASA BigNozzle" - ], - "name": "Generic ASA BigNozzle", - "filament_type": "ASA", - "filament_vendor": "Generic" - }, - "OF4KsW72": { - "filaments": [], - "name": "FilAr PLA", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF4Nhggz": { - "filaments": [ - "Artillery/Artillery PLA Basic+" - ], - "name": "Artillery PLA Basic+", - "filament_type": "PLA Basic+", - "filament_vendor": "Artillery" - }, - "OF4PKvem": { - "filaments": [ - "BBL/BETA PLA Fluorescence" - ], - "name": "BETA PLA Fluorescence", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF4QZANi": { - "filaments": [ - "BBL/BETA TPU Matte" - ], - "name": "BETA TPU Matte", - "filament_type": "TPU", - "filament_vendor": "BETA" - }, - "OF4RvVuU": { - "filaments": [ - "BBL/Bambu PPS-CF" - ], - "name": "Bambu PPS-CF", - "filament_type": "PPS-CF", - "filament_vendor": "Bambu Lab" - }, - "OF4S3To3": { - "filaments": [ - "Qidi/QIDI PETG Rapido" - ], - "name": "QIDI PETG Rapido", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OF4WB37S": { - "filaments": [ - "Snapmaker/Snapmaker PETG" - ], - "name": "Snapmaker PETG", - "filament_type": "PETG", - "filament_vendor": "Snapmaker" - }, - "OF4XTfoI": { - "filaments": [ - "BBL/BETA PETG Marble" - ], - "name": "BETA PETG Marble", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OF4f8vVp": { - "filaments": [ - "WonderMaker/WonderMaker PET-CF" - ], - "name": "WonderMaker PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "WonderMaker" - }, - "OF4iWKrE": { - "filaments": [ - "Qidi/QIDI PETG-CF" - ], - "name": "QIDI PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "QIDI" - }, - "OF4nQ62r": { - "filaments": [ - "Qidi/QIDI PLA Basic" - ], - "name": "QIDI PLA Basic", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OF4ulo9Y": { - "filaments": [ - "WonderMaker/WonderMaker PVA" - ], - "name": "WonderMaker PVA", - "filament_type": "PVA", - "filament_vendor": "WonderMaker" - }, - "OF53eLVD": { - "filaments": [ - "Blocks/Generic ASA-CF", - "Creality/Generic ASA-CF", - "Elegoo/Generic ASA-CF" - ], - "name": "Generic ASA-CF", - "filament_type": "ASA-CF", - "filament_vendor": "Generic" - }, - "OF54B0S0": { - "filaments": [ - "BBL/Bambu PPA-CF", - "OrcaFilamentLibrary/Bambu PPA-CF" - ], - "name": "Bambu PPA-CF", - "filament_type": "PPA-CF", - "filament_vendor": "Bambu Lab" - }, - "OF54SvEe": { - "filaments": [ - "Prusa/Prusament PA-CF" - ], - "name": "Prusament PA-CF", - "filament_type": "PA11-CF", - "filament_vendor": "Prusa Polymers" - }, - "OF55jHAJ": { - "filaments": [ - "Prusa/Generic ABS HF" - ], - "name": "Generic ABS HF", - "filament_type": "ABS", - "filament_vendor": "Generic" - }, - "OF5B9sUc": { - "filaments": [ - "BBL/Fiberon PA6-GF25" - ], - "name": "Fiberon PA6-GF25", - "filament_type": "PA-GF", - "filament_vendor": "Polymaker" - }, - "OF5BN24W": { - "filaments": [ - "Flashforge/Flashforge PPA-GF" - ], - "name": "Flashforge PPA-GF", - "filament_type": "PPA-GF", - "filament_vendor": "Flashforge" - }, - "OF5BXhHF": { - "filaments": [ - "BBL/BETA PLA High Temp" - ], - "name": "BETA PLA High Temp", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF5CgdDq": { - "filaments": [ - "BBL/PolyLite PLA", - "OrcaArena/PolyLite PLA", - "OrcaFilamentLibrary/PolyLite PLA", - "Qidi/PolyLite PLA", - "Snapmaker/PolyLite PLA" - ], - "name": "PolyLite PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF5LAnla": { - "filaments": [ - "BBL/BETA PLA Gradient" - ], - "name": "BETA PLA Gradient", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF5NqBfC": { - "filaments": [ - "Wanhao France/YUMI PETG" - ], - "name": "YUMI PETG", - "filament_type": "PETG", - "filament_vendor": "Yumi" - }, - "OF5P4jgA": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Dorado" - ], - "name": "FilAr PLA Dorado", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF5PtjTp": { - "filaments": [ - "Anycubic/Anycubic PLA Glow" - ], - "name": "Anycubic PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OF5SJ3jz": { - "filaments": [ - "Flashforge/Flashforge ABS" - ], - "name": "Flashforge ABS", - "filament_type": "ABS", - "filament_vendor": "Flashforge" - }, - "OF5YVJXH": { - "filaments": [ - "Artillery/Artillery ASA" - ], - "name": "Artillery ASA", - "filament_type": "ASA", - "filament_vendor": "Artillery" - }, - "OF5c6nq3": { - "filaments": [ - "Flashforge/Generic TPU-64D" - ], - "name": "Generic TPU-64D", - "filament_type": "TPU-64D", - "filament_vendor": "Generic" - }, - "OF5lGPup": { - "filaments": [ - "WonderMaker/WonderMaker PETG Basic" - ], - "name": "WonderMaker PETG Basic", - "filament_type": "PETG", - "filament_vendor": "WonderMaker" - }, - "OF5nlfKY": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Oro" - ], - "name": "FilAr PLA Oro", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF5oNRED": { - "filaments": [ - "Eryone/Eryone PP" - ], - "name": "Eryone PP", - "filament_type": "PP", - "filament_vendor": "Eryone" - }, - "OF5oXk4M": { - "filaments": [ - "Anycubic/Polymaker PLA Pro", - "Snapmaker/Polymaker PLA Pro" - ], - "name": "Polymaker PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF5rnhjh": { - "filaments": [], - "name": "FilAr PETG", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OF5tX6va": { - "filaments": [ - "Ratrig/Generic TPU BigNozzle" - ], - "name": "Generic TPU BigNozzle", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OF5umxxT": { - "filaments": [ - "BBL/PolyLite PLA Glow", - "Snapmaker/PolyLite PLA Glow" - ], - "name": "PolyLite PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF5vgi2G": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Azul" - ], - "name": "FilAr PLA-mate Azul", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF65InrS": { - "filaments": [ - "Snapmaker/Snapmaker TPU" - ], - "name": "Snapmaker TPU", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OF66KUAN": { - "filaments": [ - "Creality/PolySonic PLA" - ], - "name": "PolySonic PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF6ATsCF": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA-CF" - ], - "name": "Snapmaker Dual PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Snapmaker" - }, - "OF6H51Xx": { - "filaments": [ - "Snapmaker/Polymaker PETG", - "Sovol/Polymaker PETG" - ], - "name": "Polymaker PETG", - "filament_type": "PETG", - "filament_vendor": "Polymaker" - }, - "OF6Ll8lK": { - "filaments": [ - "Elegoo/Elegoo PETG Translucent", - "OrcaFilamentLibrary/Elegoo PETG Translucent" - ], - "name": "Elegoo PETG Translucent", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OF6MOPWx": { - "filaments": [ - "Creality/Generic PET", - "Elegoo/Generic PET", - "Flashforge/Generic PET" - ], - "name": "Generic PET", - "filament_type": "PET", - "filament_vendor": "Generic" - }, - "OF6TuVAg": { - "filaments": [ - "Snapmaker/Snapmaker J1 PVA" - ], - "name": "Snapmaker J1 PVA", - "filament_type": "PVA", - "filament_vendor": "Snapmaker" - }, - "OF6Yn69v": { - "filaments": [ - "BBL/BETA TPU 90A" - ], - "name": "BETA TPU 90A", - "filament_type": "TPU", - "filament_vendor": "BETA" - }, - "OF6kj4jI": { - "filaments": [ - "iQ/Fiberthree PACF Pro P2" - ], - "name": "Fiberthree PACF Pro P2", - "filament_type": "PACF Pro", - "filament_vendor": "iQ Materials" - }, - "OF6qAuyi": { - "filaments": [ - "Flashforge/Flashforge PLA Matte" - ], - "name": "Flashforge PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OF6qw3Wb": { - "filaments": [ - "BBL/BETA PAHT-CF" - ], - "name": "BETA PAHT-CF", - "filament_type": "PA-CF", - "filament_vendor": "BETA" - }, - "OF6rdQ6M": { - "filaments": [ - "BBL/Generic PPS-CF", - "Creality/Generic PPS-CF", - "Tiertime/Generic PPS-CF" - ], - "name": "Generic PPS-CF", - "filament_type": "PPS-CF", - "filament_vendor": "Generic" - }, - "OF70zbGS": { - "filaments": [ - "Creality/Hyper L-W PLA" - ], - "name": "Hyper L-W PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OF71b7qO": { - "filaments": [ - "BBL/addnorth PLA E-PLA" - ], - "name": "addnorth PLA E-PLA", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OF72YYTd": { - "filaments": [ - "Snapmaker/Snapmaker ABS" - ], - "name": "Snapmaker ABS", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OF74KeQR": { - "filaments": [ - "BBL/Generic PHA", - "OrcaFilamentLibrary/Generic PHA", - "Tiertime/Generic PHA" - ], - "name": "Generic PHA", - "filament_type": "PHA", - "filament_vendor": "Generic" - }, - "OF7H3VJM": { - "filaments": [ - "OrcaFilamentLibrary/eSUN PLA-Marble" - ], - "name": "eSUN PLA-Marble", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OF7OqDp3": { - "filaments": [ - "Tiertime/Tiertime PLA-CF" - ], - "name": "Tiertime PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Tiertime" - }, - "OF7SliVn": { - "filaments": [ - "Snapmaker/PolyLite J1 PLA" - ], - "name": "PolyLite J1 PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OF7c9fln": { - "filaments": [ - "Anycubic/Anycubic PLA Translucent" - ], - "name": "Anycubic PLA Translucent", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OF7lOgYF": { - "filaments": [ - "BBL/Generic PETG HF", - "OrcaFilamentLibrary/Generic PETG HF", - "Prusa/Generic PETG HF" - ], - "name": "Generic PETG HF", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OF7lwj52": { - "filaments": [ - "CoLiDo/CoLiDo PETG" - ], - "name": "CoLiDo PETG", - "filament_type": "PETG", - "filament_vendor": "CoLiDo" - }, - "OF7nBAd3": { - "filaments": [ - "Eryone/Eryone Silk PLA" - ], - "name": "Eryone Silk PLA", - "filament_type": "PLA Silk", - "filament_vendor": "Eryone" - }, - "OF7pjCsO": { - "filaments": [ - "Flashforge/FusRock PAHT" - ], - "name": "FusRock PAHT", - "filament_type": "PAHT", - "filament_vendor": "FusRock" - }, - "OF7tt7DO": { - "filaments": [ - "Cubicon/Cubicon PLA+" - ], - "name": "Cubicon PLA+", - "filament_type": "PLA", - "filament_vendor": "Cubicon" - }, - "OF8GnyFU": { - "filaments": [ - "Creality/Hyper ABS" - ], - "name": "Hyper ABS", - "filament_type": "ABS", - "filament_vendor": "Creality" - }, - "OF8GtyKJ": { - "filaments": [ - "Flashforge/Flashforge TPU-64D" - ], - "name": "Flashforge TPU-64D", - "filament_type": "TPU-64D", - "filament_vendor": "Flashforge" - }, - "OF8Jl6NT": { - "filaments": [ - "Snapmaker/Snapmaker J1 PET" - ], - "name": "Snapmaker J1 PET", - "filament_type": "PET", - "filament_vendor": "Snapmaker" - }, - "OF8O09RG": { - "filaments": [ - "Flashforge/Flashforge HS PLA Burnt Ti" - ], - "name": "Flashforge HS PLA Burnt Ti", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OF8QdQwS": { - "filaments": [ - "BBL/BETA PLA Silk+" - ], - "name": "BETA PLA Silk+", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OF8Tlg47": { - "filaments": [ - "BBL/Generic PPA-GF", - "OrcaFilamentLibrary/Generic PPA-GF", - "Tiertime/Generic PPA-GF" - ], - "name": "Generic PPA-GF", - "filament_type": "PPA-GF", - "filament_vendor": "Generic" - }, - "OF8aFWfQ": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Amarillo Lirio" - ], - "name": "FilAr PLA Amarillo Lirio", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF8dCquh": { - "filaments": [ - "Snapmaker/Snapmaker J1 ABS Benchy" - ], - "name": "Snapmaker J1 ABS Benchy", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OF8eaY7j": { - "filaments": [ - "Creality/Generic PA612-CF" - ], - "name": "Generic PA612-CF", - "filament_type": "PA-CF", - "filament_vendor": "Generic" - }, - "OF8jh0Lk": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Marron" - ], - "name": "FilAr PLA-mate Marron", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OF8kJys9": { - "filaments": [ - "Eryone/Eryone PETG" - ], - "name": "Eryone PETG", - "filament_type": "PETG", - "filament_vendor": "Eryone" - }, - "OF8tPByX": { - "filaments": [ - "BBL/Generic PPA-CF", - "OrcaFilamentLibrary/Generic PPA-CF", - "Tiertime/Generic PPA-CF" - ], - "name": "Generic PPA-CF", - "filament_type": "PPA-CF", - "filament_vendor": "Generic" - }, - "OF8wE5l7": { - "filaments": [ - "Artillery/Artillery PETG Basic" - ], - "name": "Artillery PETG Basic", - "filament_type": "PETG Basic", - "filament_vendor": "Artillery" - }, - "OF99UMPq": { - "filaments": [ - "BBL/COEX ABS", - "OrcaFilamentLibrary/COEX ABS" - ], - "name": "COEX ABS", - "filament_type": "ABS", - "filament_vendor": "COEX 3D" - }, - "OF99vXPs": { - "filaments": [], - "name": "DREMC ABS+", - "filament_type": "ABS", - "filament_vendor": "DREMC" - }, - "OF9EHUKK": { - "filaments": [ - "Qidi/QIDI TPU-GF" - ], - "name": "QIDI TPU-GF", - "filament_type": "TPU-GF", - "filament_vendor": "QIDI" - }, - "OF9HCdyQ": { - "filaments": [ - "Afinia/Afinia PLA" - ], - "name": "Afinia PLA", - "filament_type": "PLA", - "filament_vendor": "Afinia" - }, - "OF9OlTWH": { - "filaments": [ - "BBL/Bambu PLA Marble", - "OrcaFilamentLibrary/Bambu PLA Marble" - ], - "name": "Bambu PLA Marble", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OF9PELEb": { - "filaments": [ - "Qidi/QIDI UltraPA-CF25" - ], - "name": "QIDI UltraPA-CF25", - "filament_type": "UltraPA-CF25", - "filament_vendor": "QIDI" - }, - "OF9UJOGF": { - "filaments": [ - "Anycubic/Anycubic PETG-CF" - ], - "name": "Anycubic PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Anycubic" - }, - "OF9cAwMK": { - "filaments": [ - "Flashforge/Flashforge PLA-CF" - ], - "name": "Flashforge PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Flashforge" - }, - "OF9emAI9": { - "filaments": [ - "Ratrig/RatRig PunkFil PETG" - ], - "name": "RatRig PunkFil PETG", - "filament_type": "PETG", - "filament_vendor": "RatRig" - }, - "OFA026vt": { - "filaments": [ - "OrcaArena/Arena PA-CF" - ], - "name": "Arena PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Orca Arena" - }, - "OFAC7Wyu": { - "filaments": [ - "Artillery/Artillery PLA Matte" - ], - "name": "Artillery PLA Matte", - "filament_type": "PLA Matte", - "filament_vendor": "Artillery" - }, - "OFAIBCLJ": { - "filaments": [ - "Elegoo/Generic ABS-CF" - ], - "name": "Generic ABS-CF", - "filament_type": "ABS-CF", - "filament_vendor": "Generic" - }, - "OFAIrQXu": { - "filaments": [ - "Creality/Creality Hyper PLA" - ], - "name": "Creality Hyper PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFANFm4x": { - "filaments": [ - "Qidi/QIDI PLA Rapido Metal" - ], - "name": "QIDI PLA Rapido Metal", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFAO9A7J": { - "filaments": [ - "Sovol/Sovol Zero PLA Silk HS Nozzle" - ], - "name": "Sovol Zero PLA Silk HS Nozzle", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFAZllAN": { - "filaments": [ - "Artillery/Artillery PLA-CF" - ], - "name": "Artillery PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Artillery" - }, - "OFAc0Pr3": { - "filaments": [ - "BBL/Fiberon PET-CF17" - ], - "name": "Fiberon PET-CF17", - "filament_type": "PET-CF", - "filament_vendor": "Polymaker" - }, - "OFAcJkl1": { - "filaments": [ - "BBL/addnorth PETG-CF Rigid X" - ], - "name": "addnorth PETG-CF Rigid X", - "filament_type": "PETG-CF", - "filament_vendor": "addnorth" - }, - "OFAebKg8": { - "filaments": [ - "Flashforge/Flashforge PLA Metal" - ], - "name": "Flashforge PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFAnyRUI": { - "filaments": [ - "BBL/Bambu Support For PLA", - "OrcaFilamentLibrary/Bambu Support For PLA" - ], - "name": "Bambu Support For PLA", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFAt6ec0": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Marron Oxido" - ], - "name": "FilAr PLA Marron Oxido", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFB5SmWk": { - "filaments": [ - "OrcaFilamentLibrary/Valment PLA Galaxy" - ], - "name": "Valment PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Valment" - }, - "OFBBgw7B": { - "filaments": [ - "WonderMaker/WonderMaker PLA Wood" - ], - "name": "WonderMaker PLA Wood", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFBJAdLw": { - "filaments": [ - "LH/LHS PCTG" - ], - "name": "LHS PCTG", - "filament_type": "PCTG", - "filament_vendor": "LH Stinger" - }, - "OFBLktDy": { - "filaments": [ - "Creality/Soleyin Basic PETG" - ], - "name": "Soleyin Basic PETG", - "filament_type": "PETG", - "filament_vendor": "Creality" - }, - "OFBSW57R": { - "filaments": [ - "BBL/Bambu PLA Aero", - "OrcaFilamentLibrary/Bambu PLA Aero" - ], - "name": "Bambu PLA Aero", - "filament_type": "PLA-AERO", - "filament_vendor": "Bambu Lab" - }, - "OFBUIlZ7": { - "filaments": [ - "Elegoo/Elegoo PLA+", - "OrcaFilamentLibrary/Elegoo PLA+" - ], - "name": "Elegoo PLA+", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFBlFMVp": { - "filaments": [ - "Snapmaker/Snapmaker Dual PETG" - ], - "name": "Snapmaker Dual PETG", - "filament_type": "PETG", - "filament_vendor": "Snapmaker" - }, - "OFBoSWxb": { - "filaments": [ - "BBL/PolyLite PLA Luminous", - "Snapmaker/PolyLite PLA Luminous" - ], - "name": "PolyLite PLA Luminous", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFBsbMMF": { - "filaments": [ - "BBL/addnorth PA-CF Adura X" - ], - "name": "addnorth PA-CF Adura X", - "filament_type": "PA-CF", - "filament_vendor": "addnorth" - }, - "OFBw6eEG": { - "filaments": [ - "BBL/Overture Matte PLA", - "OrcaFilamentLibrary/Overture Matte PLA" - ], - "name": "Overture Matte PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFC1PzXz": { - "filaments": [ - "Creality/Hyper Luminous" - ], - "name": "Hyper Luminous", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFC5f4Ay": { - "filaments": [ - "RH3D/Generic PCCF" - ], - "name": "Generic PCCF", - "filament_type": "PC-CF", - "filament_vendor": "Generic" - }, - "OFC78WGQ": { - "filaments": [ - "BBL/Panchroma PLA Starlight", - "OrcaFilamentLibrary/Panchroma PLA Starlight", - "Snapmaker/Panchroma PLA Starlight" - ], - "name": "Panchroma PLA Starlight", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFCD8qiU": { - "filaments": [ - "BBL/Generic EVA", - "OrcaFilamentLibrary/Generic EVA", - "Tiertime/Generic EVA" - ], - "name": "Generic EVA", - "filament_type": "EVA", - "filament_vendor": "Generic" - }, - "OFCIUsWh": { - "filaments": [ - "BBL/Panchroma PLA Translucent", - "OrcaFilamentLibrary/Panchroma PLA Translucent", - "Snapmaker/Panchroma PLA Translucent" - ], - "name": "Panchroma PLA Translucent", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFCJpR7a": { - "filaments": [ - "Creality/HP Ultra PLA" - ], - "name": "HP Ultra PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFCZsqXg": { - "filaments": [ - "Creality/Hyper PLA" - ], - "name": "Hyper PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFCccVrQ": { - "filaments": [ - "OrcaFilamentLibrary/PolyTerra Dual PLA", - "Snapmaker/PolyTerra Dual PLA" - ], - "name": "PolyTerra Dual PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFCidU7j": { - "filaments": [ - "OrcaFilamentLibrary/DREMC ABS-GF" - ], - "name": "DREMC ABS-GF", - "filament_type": "ABS-GF", - "filament_vendor": "DREMC" - }, - "OFCjG251": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Verde" - ], - "name": "FilAr PLA-mate Verde", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFCn83wF": { - "filaments": [ - "Flashforge/FusRock S-PAHT" - ], - "name": "FusRock S-PAHT", - "filament_type": "PAHT", - "filament_vendor": "FusRock" - }, - "OFCnywiC": { - "filaments": [ - "Tiertime/Tiertime PET-CF" - ], - "name": "Tiertime PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Tiertime" - }, - "OFCoRobU": { - "filaments": [ - "OrcaFilamentLibrary/Elas ASA" - ], - "name": "Elas ASA", - "filament_type": "ASA", - "filament_vendor": "Elas" - }, - "OFCp3Bgo": { - "filaments": [ - "Anycubic/Anycubic PLA SE" - ], - "name": "Anycubic PLA SE", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFCuaCer": { - "filaments": [ - "Volumic/Désactivé" - ], - "name": "Désactivé", - "filament_type": "PLA", - "filament_vendor": "Volumic" - }, - "OFD9taow": { - "filaments": [ - "FlyingBear/FlyingBear PLA Hyper" - ], - "name": "FlyingBear PLA Hyper", - "filament_type": "PLA", - "filament_vendor": "FlyingBear" - }, - "OFDETOM6": { - "filaments": [ - "Creality/eSUN PLA-Matte", - "OrcaFilamentLibrary/eSUN PLA-Matte" - ], - "name": "eSUN PLA-Matte", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFDGigEI": { - "filaments": [ - "BBL/Bambu PLA Dynamic", - "OrcaFilamentLibrary/Bambu PLA Dynamic" - ], - "name": "Bambu PLA Dynamic", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFDIrhbu": { - "filaments": [ - "Qidi/QIDI PC/ABS-FR" - ], - "name": "QIDI PC/ABS-FR", - "filament_type": "PC-ABS-FR", - "filament_vendor": "QIDI" - }, - "OFDJU6R3": { - "filaments": [ - "Afinia/Afinia TPU" - ], - "name": "Afinia TPU", - "filament_type": "TPU", - "filament_vendor": "Afinia" - }, - "OFDKIKyw": { - "filaments": [ - "Snapmaker/Snapmaker Dual PVA" - ], - "name": "Snapmaker Dual PVA", - "filament_type": "PVA", - "filament_vendor": "Snapmaker" - }, - "OFDKgoqx": { - "filaments": [ - "Flashforge/Flashforge PLA" - ], - "name": "Flashforge PLA", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFDRpXLZ": { - "filaments": [ - "FlyingBear/Other PETG", - "InfiMech/Other PETG" - ], - "name": "Other PETG", - "filament_type": "PETG", - "filament_vendor": "Other" - }, - "OFDSrzZ8": { - "filaments": [ - "Anker/Generic PLA", - "Anycubic/Generic PLA", - "Artillery/Generic PLA", - "BBL/Generic PLA", - "Blocks/Generic PLA", - "CONSTRUCT3D/Generic PLA", - "Chuanying/Generic PLA", - "Co Print/Generic PLA", - "CoLiDo/Generic PLA", - "Comgrow/Generic PLA", - "Creality/Generic PLA", - "Custom/Generic PLA", - "DeltaMaker/Generic PLA", - "Dremel/Generic PLA", - "Elegoo/Generic PLA", - "FLSun/Generic PLA", - "Flashforge/Generic PLA", - "FlyingBear/Generic PLA", - "Ginger Additive/Generic PLA", - "InfiMech/Generic PLA", - "LONGER/Generic PLA", - "Lulzbot/Generic PLA", - "OrcaArena/Generic PLA", - "OrcaFilamentLibrary/Generic PLA", - "Peopoly/Generic PLA", - "Phrozen/Generic PLA", - "Prusa/Generic PLA", - "Qidi/Generic PLA", - "RH3D/Generic PLA", - "Ratrig/Generic PLA", - "SecKit/Generic PLA", - "Sovol/Generic PLA", - "Tiertime/Generic PLA", - "Vzbot/Generic PLA", - "Z-Bolt/Generic PLA" - ], - "name": "Generic PLA", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFDe8uyM": { - "filaments": [ - "OrcaFilamentLibrary/Valment PLA" - ], - "name": "Valment PLA", - "filament_type": "PLA", - "filament_vendor": "Valment" - }, - "OFDgQaca": { - "filaments": [ - "FlyingBear/FlyingBear PETG" - ], - "name": "FlyingBear PETG", - "filament_type": "PETG", - "filament_vendor": "FlyingBear" - }, - "OFDpW3J8": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PLA Basic" - ], - "name": "FILL3D PLA Basic", - "filament_type": "PLA", - "filament_vendor": "FILL3D" - }, - "OFDtop41": { - "filaments": [ - "Creality/Generic Support for PA" - ], - "name": "Generic Support for PA", - "filament_type": "PA", - "filament_vendor": "Generic" - }, - "OFDu1qE7": { - "filaments": [ - "Flashforge/FusRock PET-CF" - ], - "name": "FusRock PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "FusRock" - }, - "OFDvXujf": { - "filaments": [ - "Anker/Generic PVA", - "Anycubic/Generic PVA", - "BBL/Generic PVA", - "Blocks/Generic PVA", - "Chuanying/Generic PVA", - "Creality/Generic PVA", - "Custom/Generic PVA", - "FLSun/Generic PVA", - "Flashforge/Generic PVA", - "OrcaArena/Generic PVA", - "OrcaFilamentLibrary/Generic PVA", - "Prusa/Generic PVA", - "Qidi/Generic PVA", - "Ratrig/Generic PVA", - "SecKit/Generic PVA", - "Tiertime/Generic PVA", - "Vzbot/Generic PVA" - ], - "name": "Generic PVA", - "filament_type": "PVA", - "filament_vendor": "Generic" - }, - "OFDvqJ6n": { - "filaments": [ - "OrcaFilamentLibrary/Overture ABS Basic" - ], - "name": "Overture ABS Basic", - "filament_type": "ABS", - "filament_vendor": "Overture" - }, - "OFDwBwO5": { - "filaments": [ - "Prusa/Generic PVA HF" - ], - "name": "Generic PVA HF", - "filament_type": "PVA", - "filament_vendor": "Generic" - }, - "OFDxfPgH": { - "filaments": [ - "BBL/Bambu PLA Sparkle", - "OrcaFilamentLibrary/Bambu PLA Sparkle" - ], - "name": "Bambu PLA Sparkle", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFDxxTpW": { - "filaments": [ - "Flashforge/Flashforge HS PETG" - ], - "name": "Flashforge HS PETG", - "filament_type": "PETG", - "filament_vendor": "Flashforge" - }, - "OFE0NFRh": { - "filaments": [ - "BBL/COEX TPU 60A", - "OrcaFilamentLibrary/COEX TPU 60A" - ], - "name": "COEX TPU 60A", - "filament_type": "TPU", - "filament_vendor": "COEX 3D" - }, - "OFEGNJD4": { - "filaments": [ - "BBL/Bambu PLA Silk", - "OrcaFilamentLibrary/Bambu PLA Silk" - ], - "name": "Bambu PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFEOnBj6": { - "filaments": [ - "Snapmaker/Snapmaker PLA Lite" - ], - "name": "Snapmaker PLA Lite", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFEWYR89": { - "filaments": [ - "Anker/Generic PLA+", - "Qidi/Generic PLA+" - ], - "name": "Generic PLA+", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFEZ449N": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Uva" - ], - "name": "FilAr PLA-mate Uva", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFEZpel7": { - "filaments": [ - "Volumic/PPS Carbone (Performance)" - ], - "name": "PPS Carbone (Performance)", - "filament_type": "PPS-CF", - "filament_vendor": "Volumic" - }, - "OFEabreg": { - "filaments": [ - "Anycubic/Fiberon PA6-CF20", - "BBL/Fiberon PA6-CF20", - "Snapmaker/Fiberon PA6-CF20" - ], - "name": "Fiberon PA6-CF20", - "filament_type": "PA6-CF", - "filament_vendor": "Polymaker" - }, - "OFEbIx49": { - "filaments": [ - "WonderMaker/WonderMaker PLA Marble" - ], - "name": "WonderMaker PLA Marble", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFEhuUNq": { - "filaments": [], - "name": "DREMC PA12-CF", - "filament_type": "PA-CF", - "filament_vendor": "DREMC" - }, - "OFEj7sca": { - "filaments": [ - "Cubicon/Cubicon PC" - ], - "name": "Cubicon PC", - "filament_type": "PC", - "filament_vendor": "Cubicon" - }, - "OFEjbwqG": { - "filaments": [ - "BBL/PolyTerra PLA+", - "Snapmaker/PolyTerra PLA+" - ], - "name": "PolyTerra PLA+", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFEkPBwx": { - "filaments": [ - "BBL/Bambu PLA Glow", - "OrcaFilamentLibrary/Bambu PLA Glow" - ], - "name": "Bambu PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFEmsric": { - "filaments": [ - "Snapmaker/Snapmaker PA-CF" - ], - "name": "Snapmaker PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Snapmaker" - }, - "OFEnbt6D": { - "filaments": [ - "Peopoly/Peopoly Lancer PLA-C" - ], - "name": "Peopoly Lancer PLA-C", - "filament_type": "PLA", - "filament_vendor": "Peopoly" - }, - "OFEswT5W": { - "filaments": [ - "BBL/Bambu PLA-CF", - "OrcaFilamentLibrary/Bambu PLA-CF" - ], - "name": "Bambu PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Bambu Lab" - }, - "OFEvEfw5": { - "filaments": [ - "Flashforge/Flashforge PA" - ], - "name": "Flashforge PA", - "filament_type": "PA", - "filament_vendor": "Flashforge" - }, - "OFEwRwmL": { - "filaments": [ - "Cubicon/Cubicon PLA" - ], - "name": "Cubicon PLA", - "filament_type": "PLA", - "filament_vendor": "Cubicon" - }, - "OFF3cuzT": { - "filaments": [ - "Creality/Generic TPU 64D" - ], - "name": "Generic TPU 64D", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OFF5o7b2": { - "filaments": [ - "BBL/BETA PLA Youth" - ], - "name": "BETA PLA Youth", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFF9OKoY": { - "filaments": [ - "BBL/PolyLite PLA Pro", - "OrcaFilamentLibrary/PolyLite PLA Pro", - "Snapmaker/PolyLite PLA Pro" - ], - "name": "PolyLite PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFF9cgY5": { - "filaments": [ - "Snapmaker/Snapmaker PLA Matte" - ], - "name": "Snapmaker PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFFAWVf0": { - "filaments": [ - "Qidi/QIDI PC-ABS-FR" - ], - "name": "QIDI PC-ABS-FR", - "filament_type": "PC-ABS-FR", - "filament_vendor": "QIDI" - }, - "OFFFg2Pf": { - "filaments": [ - "Flashforge/Flashforge ASA Basic" - ], - "name": "Flashforge ASA Basic", - "filament_type": "ASA", - "filament_vendor": "Flashforge" - }, - "OFFNYwWR": { - "filaments": [ - "BBL/Bambu PA-CF", - "OrcaFilamentLibrary/Bambu PA-CF" - ], - "name": "Bambu PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Bambu Lab" - }, - "OFFP4ORR": { - "filaments": [ - "Creality/Creality Hyper ABS" - ], - "name": "Creality Hyper ABS", - "filament_type": "ABS", - "filament_vendor": "Creality" - }, - "OFFX1DRD": { - "filaments": [ - "FlyingBear/FlyingBear PC" - ], - "name": "FlyingBear PC", - "filament_type": "PC", - "filament_vendor": "FlyingBear" - }, - "OFFZ458u": { - "filaments": [ - "Snapmaker/Fiberon PA612-ESD" - ], - "name": "Fiberon PA612-ESD", - "filament_type": "PA-CF", - "filament_vendor": "Polymaker" - }, - "OFFbQscs": { - "filaments": [ - "Creality/eSUN PETG-Basic" - ], - "name": "eSUN PETG-Basic", - "filament_type": "PETG", - "filament_vendor": "eSUN" - }, - "OFFbSnCD": { - "filaments": [ - "BBL/Bambu PLA Translucent" - ], - "name": "Bambu PLA Translucent", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFFfJ09N": { - "filaments": [ - "BBL/BETA PETG Glow" - ], - "name": "BETA PETG Glow", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFFkCLBl": { - "filaments": [ - "BBL/Panchroma PLA Galaxy", - "OrcaFilamentLibrary/Panchroma PLA Galaxy", - "Snapmaker/Panchroma PLA Galaxy" - ], - "name": "Panchroma PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFFvzqcd": { - "filaments": [ - "BBL/Bambu PETG Basic", - "OrcaFilamentLibrary/Bambu PETG Basic" - ], - "name": "Bambu PETG Basic", - "filament_type": "PETG", - "filament_vendor": "Bambu Lab" - }, - "OFFwJWea": { - "filaments": [ - "Anycubic/Anycubic PLA Silk" - ], - "name": "Anycubic PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFG0kOKX": { - "filaments": [ - "Volumic/Volumic PETG Ultra" - ], - "name": "Volumic PETG Ultra", - "filament_type": "PETG", - "filament_vendor": "Volumic" - }, - "OFG2RkhN": { - "filaments": [ - "Creality/CR-TPU" - ], - "name": "CR-TPU", - "filament_type": "TPU", - "filament_vendor": "Creality" - }, - "OFG4do34": { - "filaments": [ - "Qidi/Qidi ASA-Aero" - ], - "name": "Qidi ASA-Aero", - "filament_type": "ASA-AERO", - "filament_vendor": "QIDI" - }, - "OFGJ1nxs": { - "filaments": [ - "FlyingBear/Other PLA", - "InfiMech/Other PLA" - ], - "name": "Other PLA", - "filament_type": "PLA", - "filament_vendor": "Other" - }, - "OFGVwfK0": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Gris" - ], - "name": "FilAr PLA-mate Gris", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFGVxj2A": { - "filaments": [ - "BBL/BETA PLA Wood" - ], - "name": "BETA PLA Wood", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFGc9l16": { - "filaments": [ - "BBL/BETA PLA Glow" - ], - "name": "BETA PLA Glow", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFGcLA5R": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Beige" - ], - "name": "FilAr PLA-mate Beige", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFGcMkEB": { - "filaments": [ - "Creality/HP-TPU" - ], - "name": "HP-TPU", - "filament_type": "TPU", - "filament_vendor": "Creality" - }, - "OFGdP6Na": { - "filaments": [ - "Volumic/Volumic PVA" - ], - "name": "Volumic PVA", - "filament_type": "PVA", - "filament_vendor": "Volumic" - }, - "OFGkyftV": { - "filaments": [ - "BBL/Overture Silk PLA", - "OrcaFilamentLibrary/Overture Silk PLA" - ], - "name": "Overture Silk PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFGwT5Av": { - "filaments": [ - "Creality/Creality Hyper PLA-CF" - ], - "name": "Creality Hyper PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Creality" - }, - "OFGwZmgS": { - "filaments": [ - "Creality/CR-ABS" - ], - "name": "CR-ABS", - "filament_type": "ABS", - "filament_vendor": "Creality" - }, - "OFGxC8gB": { - "filaments": [ - "Creality/CR-Wood" - ], - "name": "CR-Wood", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFGxuI0n": { - "filaments": [ - "Flashforge/Flashforge PA-CF" - ], - "name": "Flashforge PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Flashforge" - }, - "OFH2nN08": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA INGEO 850" - ], - "name": "Eolas Prints PLA INGEO 850", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFH57ibH": { - "filaments": [ - "Snapmaker/Polymaker Silk PLA Family" - ], - "name": "Polymaker Silk PLA Family", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFH7b12v": { - "filaments": [ - "Creality/Generic PAHT-CF" - ], - "name": "Generic PAHT-CF", - "filament_type": "PA-CF", - "filament_vendor": "Generic" - }, - "OFHAccHz": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Blanco Antartida" - ], - "name": "FilAr PLA Blanco Antartida", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFHHwrd1": { - "filaments": [ - "BBL/addnorth PETG Base" - ], - "name": "addnorth PETG Base", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OFHWSM21": { - "filaments": [ - "BBL/Fiberon PET-CF", - "OrcaFilamentLibrary/Fiberon PET-CF" - ], - "name": "Fiberon PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Polymaker" - }, - "OFHa48An": { - "filaments": [ - "BBL/Bambu PET-CF", - "OrcaFilamentLibrary/Bambu PET-CF" - ], - "name": "Bambu PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Bambu Lab" - }, - "OFHaYaB1": { - "filaments": [ - "Creality/eSUN PET-Basic" - ], - "name": "eSUN PET-Basic", - "filament_type": "PET", - "filament_vendor": "eSUN" - }, - "OFHf2lKK": { - "filaments": [ - "FlyingBear/FlyingBear TPU Basic" - ], - "name": "FlyingBear TPU Basic", - "filament_type": "TPU", - "filament_vendor": "FlyingBear" - }, - "OFHfzQXo": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Transition" - ], - "name": "Eolas Prints PLA Transition", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFHknN4v": { - "filaments": [ - "Anycubic/Polymaker PLA Pro Metallic", - "Snapmaker/Polymaker PLA Pro Metallic" - ], - "name": "Polymaker PLA Pro Metallic", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFHmPYRy": { - "filaments": [ - "BBL/SUNLU PLA+ 2.0", - "Flashforge/SUNLU PLA+ 2.0", - "OrcaFilamentLibrary/SUNLU PLA+ 2.0" - ], - "name": "SUNLU PLA+ 2.0", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFI2MKy7": { - "filaments": [ - "BBL/BETA PEBA 90A" - ], - "name": "BETA PEBA 90A", - "filament_type": "TPU", - "filament_vendor": "BETA" - }, - "OFI6WZpn": { - "filaments": [ - "OrcaArena/Arena Support W" - ], - "name": "Arena Support W", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFIBXa0k": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Rojo" - ], - "name": "FilAr PLA-mate Rojo", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFIBbYO5": { - "filaments": [ - "BBL/Bambu TPU for AMS" - ], - "name": "Bambu TPU for AMS", - "filament_type": "TPU-AMS", - "filament_vendor": "Bambu Lab" - }, - "OFIE3vOf": { - "filaments": [ - "Anycubic/Anycubic PLA Matte" - ], - "name": "Anycubic PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFIK2H3G": { - "filaments": [ - "Flashforge/Flashforge HS PLA" - ], - "name": "Flashforge HS PLA", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFIKZxPF": { - "filaments": [ - "Creality/Generic PLA Wood" - ], - "name": "Generic PLA Wood", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFIPjqHt": { - "filaments": [ - "OrcaArena/Arena Support G" - ], - "name": "Arena Support G", - "filament_type": "PA", - "filament_vendor": "Orca Arena" - }, - "OFIRUqWi": { - "filaments": [ - "Creality/eSUN PLA-Silk" - ], - "name": "eSUN PLA-Silk", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFIVWJPm": { - "filaments": [ - "InfiMech/InfiMech TPU" - ], - "name": "InfiMech TPU", - "filament_type": "TPU", - "filament_vendor": "InfiMech" - }, - "OFIWMSGX": { - "filaments": [ - "Qidi/HATCHBOX PETG" - ], - "name": "HATCHBOX PETG", - "filament_type": "PETG", - "filament_vendor": "HATCHBOX" - }, - "OFIZMQwM": { - "filaments": [ - "LH/LHS TPU" - ], - "name": "LHS TPU", - "filament_type": "TPU", - "filament_vendor": "LH Stinger" - }, - "OFIamQnD": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Gris Ceniza" - ], - "name": "FilAr PLA Gris Ceniza", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFIegjmD": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints TPU Flex D53" - ], - "name": "Eolas Prints TPU Flex D53", - "filament_type": "TPU", - "filament_vendor": "Eolas Prints" - }, - "OFIfnzxC": { - "filaments": [ - "BBL/Bambu Support For PLA/PETG", - "OrcaFilamentLibrary/Bambu Support For PLA/PETG" - ], - "name": "Bambu Support For PLA/PETG", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFIgbDHq": { - "filaments": [ - "Anycubic/Anycubic PLA Luminous" - ], - "name": "Anycubic PLA Luminous", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFIxOuOu": { - "filaments": [ - "BBL/PolyLite PLA Starlight", - "Snapmaker/PolyLite PLA Starlight" - ], - "name": "PolyLite PLA Starlight", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFJ3F2jm": { - "filaments": [ - "Flashforge/Flashforge PLA Basic" - ], - "name": "Flashforge PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFJ3HRsR": { - "filaments": [ - "OrcaArena/Arena ABS" - ], - "name": "Arena ABS", - "filament_type": "ABS", - "filament_vendor": "Orca Arena" - }, - "OFJHBEGD": { - "filaments": [], - "name": "DREMC PLA+ HS", - "filament_type": "PLA", - "filament_vendor": "DREMC" - }, - "OFJJ0Ar3": { - "filaments": [ - "Flashforge/Flashforge PLA Galaxy" - ], - "name": "Flashforge PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFJNeELv": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PA" - ], - "name": "FILL3D PA", - "filament_type": "PA", - "filament_vendor": "FILL3D" - }, - "OFJOFnOZ": { - "filaments": [ - "BBL/AliZ PETG-CF", - "OrcaFilamentLibrary/AliZ PETG-CF" - ], - "name": "AliZ PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Aliz" - }, - "OFJQDUk3": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Cristal" - ], - "name": "FilAr PETG Cristal", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFJS560n": { - "filaments": [], - "name": "Flashforge ASA", - "filament_type": "ASA", - "filament_vendor": "Flashforge" - }, - "OFJWKoYG": { - "filaments": [ - "iQ/Material4Print ABS Natur P1" - ], - "name": "Material4Print ABS Natur P1", - "filament_type": "ABS Material4Print Natur", - "filament_vendor": "iQ Materials" - }, - "OFJYpVAQ": { - "filaments": [ - "Flashforge/Generic TPU-90A" - ], - "name": "Generic TPU-90A", - "filament_type": "TPU-90A", - "filament_vendor": "Generic" - }, - "OFJgijky": { - "filaments": [ - "BBL/PolyLite CosPLA", - "Snapmaker/PolyLite CosPLA" - ], - "name": "PolyLite CosPLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFJhT2fd": { - "filaments": [ - "Snapmaker/Snapmaker Dual ABS" - ], - "name": "Snapmaker Dual ABS", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OFJnEaCp": { - "filaments": [ - "BBL/BETA PLA Transparent" - ], - "name": "BETA PLA Transparent", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFJrvXth": { - "filaments": [ - "Snapmaker/Snapmaker ABS Benchy" - ], - "name": "Snapmaker ABS Benchy", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OFJs1ToM": { - "filaments": [ - "BBL/COEX NYLEX UNFILLED" - ], - "name": "COEX NYLEX UNFILLED", - "filament_type": "PA", - "filament_vendor": "COEX 3D" - }, - "OFJu1XwK": { - "filaments": [ - "OrcaFilamentLibrary/NIT PETG" - ], - "name": "NIT PETG", - "filament_type": "PETG", - "filament_vendor": "NIT" - }, - "OFJxSqO4": { - "filaments": [ - "Wanhao France/YUMI PLA Direct Drive" - ], - "name": "YUMI PLA Direct Drive", - "filament_type": "PLA", - "filament_vendor": "Yumi" - }, - "OFK7830e": { - "filaments": [ - "BBL/BETA TPU 95A" - ], - "name": "BETA TPU 95A", - "filament_type": "TPU", - "filament_vendor": "BETA" - }, - "OFK8XHPn": { - "filaments": [ - "Qidi/Overture ABS" - ], - "name": "Overture ABS", - "filament_type": "ABS", - "filament_vendor": "Overture" - }, - "OFKIQO2W": { - "filaments": [ - "Qidi/QIDI PLA Rapido" - ], - "name": "QIDI PLA Rapido", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFKKajh6": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Gris Plata" - ], - "name": "FilAr PLA Gris Plata", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFKTGKJU": { - "filaments": [ - "Flashforge/FusRock PET" - ], - "name": "FusRock PET", - "filament_type": "PET", - "filament_vendor": "FusRock" - }, - "OFKTSiYF": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Blanco Calido" - ], - "name": "FilAr PLA Blanco Calido", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFKUEXPA": { - "filaments": [ - "Snapmaker/Snapmaker Dual ASA" - ], - "name": "Snapmaker Dual ASA", - "filament_type": "ASA", - "filament_vendor": "Snapmaker" - }, - "OFKW5hEW": { - "filaments": [ - "Flashforge/FusRock PAHT-CF" - ], - "name": "FusRock PAHT-CF", - "filament_type": "PAHT-CF", - "filament_vendor": "FusRock" - }, - "OFKWWgyp": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Carpincho" - ], - "name": "FilAr PLA Carpincho", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFKYBAWe": { - "filaments": [ - "BBL/BETA PLA Marble" - ], - "name": "BETA PLA Marble", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFKZ9skj": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Naranja Tigre" - ], - "name": "FilAr PLA Naranja Tigre", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFKbdiiJ": { - "filaments": [ - "Creality/PolySonic PLA Pro" - ], - "name": "PolySonic PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFKfJTwL": { - "filaments": [ - "Qidi/QIDI PET-CF" - ], - "name": "QIDI PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "QIDI" - }, - "OFKgmsqE": { - "filaments": [ - "Qidi/QIDI PAHT-CF" - ], - "name": "QIDI PAHT-CF", - "filament_type": "PAHT-CF", - "filament_vendor": "QIDI" - }, - "OFKhMPeX": { - "filaments": [ - "BBL/Bambu PC", - "OrcaFilamentLibrary/Bambu PC" - ], - "name": "Bambu PC", - "filament_type": "PC", - "filament_vendor": "Bambu Lab" - }, - "OFKiSMWR": { - "filaments": [ - "BBL/Panchroma PLA Marble", - "OrcaFilamentLibrary/Panchroma PLA Marble", - "Snapmaker/Panchroma PLA Marble" - ], - "name": "Panchroma PLA Marble", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFKyNkQz": { - "filaments": [ - "BBL/BETA PETG UV Color Change" - ], - "name": "BETA PETG UV Color Change", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFL9aRjN": { - "filaments": [ - "Snapmaker/Snapmaker PETG HF" - ], - "name": "Snapmaker PETG HF", - "filament_type": "PETG", - "filament_vendor": "Snapmaker" - }, - "OFLAXKqP": { - "filaments": [ - "WonderMaker/WonderMaker TPU 95A" - ], - "name": "WonderMaker TPU 95A", - "filament_type": "TPU", - "filament_vendor": "WonderMaker" - }, - "OFLC1oRH": { - "filaments": [ - "Flashforge/Flashforge PPA-CF" - ], - "name": "Flashforge PPA-CF", - "filament_type": "PPA-CF", - "filament_vendor": "Flashforge" - }, - "OFLJ8S6I": { - "filaments": [ - "BBL/SUNLU Wood PLA", - "Flashforge/SUNLU Wood PLA", - "OrcaFilamentLibrary/SUNLU Wood PLA" - ], - "name": "SUNLU Wood PLA", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFLNgV3C": { - "filaments": [], - "name": "DREMC ASA", - "filament_type": "ASA", - "filament_vendor": "DREMC" - }, - "OFLOf6Sc": { - "filaments": [ - "Tiertime/Tiertime TPU 95A" - ], - "name": "Tiertime TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Tiertime" - }, - "OFLPAxz3": { - "filaments": [ - "Anker/Generic ASA", - "Anycubic/Generic ASA", - "Artillery/Generic ASA", - "BBL/Generic ASA", - "Blocks/Generic ASA", - "Chuanying/Generic ASA", - "Creality/Generic ASA", - "Custom/Generic ASA", - "Elegoo/Generic ASA", - "FLSun/Generic ASA", - "Flashforge/Generic ASA", - "OrcaArena/Generic ASA", - "OrcaFilamentLibrary/Generic ASA", - "Prusa/Generic ASA", - "Qidi/Generic ASA", - "RH3D/Generic ASA", - "Ratrig/Generic ASA", - "SecKit/Generic ASA", - "Tiertime/Generic ASA", - "Vzbot/Generic ASA" - ], - "name": "Generic ASA", - "filament_type": "ASA", - "filament_vendor": "Generic" - }, - "OFLTYJW0": { - "filaments": [ - "Snapmaker/Snapmaker PLA Translucent" - ], - "name": "Snapmaker PLA Translucent", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFLXvuMr": { - "filaments": [ - "Elegoo/Elegoo Rapid PETG", - "OrcaFilamentLibrary/Elegoo Rapid PETG" - ], - "name": "Elegoo Rapid PETG", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFLYDngx": { - "filaments": [ - "Qidi/Bambu PETG" - ], - "name": "Bambu PETG", - "filament_type": "PETG", - "filament_vendor": "Bambu Lab" - }, - "OFLakOUI": { - "filaments": [ - "Anker/Generic PC", - "Anycubic/Generic PC", - "BBL/Generic PC", - "Blocks/Generic PC", - "Creality/Generic PC", - "Custom/Generic PC", - "Elegoo/Generic PC", - "FLSun/Generic PC", - "FlyingBear/Generic PC", - "InfiMech/Generic PC", - "OrcaArena/Generic PC", - "OrcaFilamentLibrary/Generic PC", - "Prusa/Generic PC", - "Qidi/Generic PC", - "Ratrig/Generic PC", - "SecKit/Generic PC", - "Sovol/Generic PC", - "Tiertime/Generic PC", - "Vzbot/Generic PC" - ], - "name": "Generic PC", - "filament_type": "PC", - "filament_vendor": "Generic" - }, - "OFLbXwoL": { - "filaments": [ - "Artillery/Artillery PLA Silk" - ], - "name": "Artillery PLA Silk", - "filament_type": "PLA Silk", - "filament_vendor": "Artillery" - }, - "OFLbdkrE": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA Eco" - ], - "name": "Snapmaker J1 PLA Eco", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFLcd093": { - "filaments": [ - "Elegoo/Elegoo PETG", - "OrcaFilamentLibrary/Elegoo PETG" - ], - "name": "Elegoo PETG", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFLfywkp": { - "filaments": [ - "Afinia/Afinia ABS+" - ], - "name": "Afinia ABS+", - "filament_type": "ABS", - "filament_vendor": "Afinia" - }, - "OFLgwqp2": { - "filaments": [ - "Creality/Hyper PETG-GF" - ], - "name": "Hyper PETG-GF", - "filament_type": "PETG-GF", - "filament_vendor": "Creality" - }, - "OFLjDYxH": { - "filaments": [ - "BBL/addnorth PLA X-PLA High Speed" - ], - "name": "addnorth PLA X-PLA High Speed", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFLqgSuX": { - "filaments": [ - "BBL/BETA PLA-CF" - ], - "name": "BETA PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "BETA" - }, - "OFLzx3J4": { - "filaments": [ - "Creality/Hyper Marble" - ], - "name": "Hyper Marble", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFM0xjBG": { - "filaments": [ - "Creality/CR-PLA Matte" - ], - "name": "CR-PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFM4iJlv": { - "filaments": [ - "Creality/Generic PA12-CF" - ], - "name": "Generic PA12-CF", - "filament_type": "PA-CF", - "filament_vendor": "Generic" - }, - "OFM91vZs": { - "filaments": [ - "BBL/Overture ASA", - "OrcaFilamentLibrary/Overture ASA" - ], - "name": "Overture ASA", - "filament_type": "ASA", - "filament_vendor": "Overture" - }, - "OFMDHOcT": { - "filaments": [ - "Qidi/QIDI TPU-Aero" - ], - "name": "QIDI TPU-Aero", - "filament_type": "TPU-AERO", - "filament_vendor": "QIDI" - }, - "OFMK5gVo": { - "filaments": [ - "WonderMaker/WonderMaker PLA Basic" - ], - "name": "WonderMaker PLA Basic", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFML2aVd": { - "filaments": [ - "Anycubic/Anycubic TPU 95A" - ], - "name": "Anycubic TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Anycubic" - }, - "OFMSvS8z": { - "filaments": [ - "Artillery/Artillery PA" - ], - "name": "Artillery PA", - "filament_type": "PA", - "filament_vendor": "Artillery" - }, - "OFMTK0UC": { - "filaments": [ - "BBL/Bambu Support For PA/PET", - "OrcaFilamentLibrary/Bambu Support For PA/PET" - ], - "name": "Bambu Support For PA/PET", - "filament_type": "PA", - "filament_vendor": "Bambu Lab" - }, - "OFMUWNkp": { - "filaments": [ - "BBL/SUNLU PLA+", - "Flashforge/SUNLU PLA+", - "OrcaFilamentLibrary/SUNLU PLA+" - ], - "name": "SUNLU PLA+", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFMZvH0z": { - "filaments": [ - "BBL/Overture Rock PLA", - "OrcaFilamentLibrary/Overture Rock PLA" - ], - "name": "Overture Rock PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFMjtqTC": { - "filaments": [ - "BBL/Bambu PLA Wood", - "OrcaFilamentLibrary/Bambu PLA Wood" - ], - "name": "Bambu PLA Wood", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFMkAW6r": { - "filaments": [ - "Flashforge/Flashforge PLA Color Change" - ], - "name": "Flashforge PLA Color Change", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFMpxamb": { - "filaments": [ - "Flashforge/Flashforge PETG" - ], - "name": "Flashforge PETG", - "filament_type": "PETG", - "filament_vendor": "Flashforge" - }, - "OFMsDGbs": { - "filaments": [ - "Anycubic/Anycubic TPU" - ], - "name": "Anycubic TPU", - "filament_type": "TPU", - "filament_vendor": "Anycubic" - }, - "OFMuXBmO": { - "filaments": [ - "OrcaFilamentLibrary/Elas PLA Basic" - ], - "name": "Elas PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Elas" - }, - "OFMzRg65": { - "filaments": [ - "BBL/BETA PLA PRO" - ], - "name": "BETA PLA PRO", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFN8QBhu": { - "filaments": [ - "BBL/addnorth PLA Wood" - ], - "name": "addnorth PLA Wood", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFNBlAPT": { - "filaments": [ - "OrcaArena/Arena PETG Basic" - ], - "name": "Arena PETG Basic", - "filament_type": "PETG", - "filament_vendor": "Orca Arena" - }, - "OFNGTH3w": { - "filaments": [ - "Tiertime/Tiertime PLA" - ], - "name": "Tiertime PLA", - "filament_type": "PLA", - "filament_vendor": "Tiertime" - }, - "OFNQKF0M": { - "filaments": [ - "Tiertime/Tiertime ABS" - ], - "name": "Tiertime ABS", - "filament_type": "ABS", - "filament_vendor": "Tiertime" - }, - "OFNSYu5h": { - "filaments": [ - "Volumic/Volumic PP Ultra (Performance)" - ], - "name": "Volumic PP Ultra (Performance)", - "filament_type": "PP", - "filament_vendor": "Volumic" - }, - "OFNU9YIW": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Azul Boreal" - ], - "name": "FilAr PETG Azul Boreal", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFNemJM6": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Cobre" - ], - "name": "FilAr PLA Cobre", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFNjku08": { - "filaments": [ - "CONSTRUCT3D/Generic High Flow PETG" - ], - "name": "Generic High Flow PETG", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OFNk8AvA": { - "filaments": [ - "BBL/BETA PETG Gradient" - ], - "name": "BETA PETG Gradient", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFNk8bxk": { - "filaments": [ - "BBL/Bambu PA6-GF", - "OrcaFilamentLibrary/Bambu PA6-GF" - ], - "name": "Bambu PA6-GF", - "filament_type": "PA-GF", - "filament_vendor": "Bambu Lab" - }, - "OFNstOna": { - "filaments": [ - "Eryone/Eryone PETG-CF" - ], - "name": "Eryone PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Eryone" - }, - "OFNvBIL0": { - "filaments": [ - "Creality/Hyper PPA-CF" - ], - "name": "Hyper PPA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Creality" - }, - "OFO1GEq6": { - "filaments": [ - "BBL/Panchroma PLA Neon", - "OrcaFilamentLibrary/Panchroma PLA Neon", - "Snapmaker/Panchroma PLA Neon" - ], - "name": "Panchroma PLA Neon", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFO5djrM": { - "filaments": [ - "Chuanying/Generic PETG-CF10", - "Flashforge/Generic PETG-CF10" - ], - "name": "Generic PETG-CF10", - "filament_type": "PETG-CF", - "filament_vendor": "Generic" - }, - "OFO6GMJ3": { - "filaments": [ - "BBL/addnorth TPU EasyFlex" - ], - "name": "addnorth TPU EasyFlex", - "filament_type": "TPU", - "filament_vendor": "addnorth" - }, - "OFOABq7t": { - "filaments": [ - "BBL/AliZ PETG-Metal", - "OrcaFilamentLibrary/AliZ PETG-Metal" - ], - "name": "AliZ PETG-Metal", - "filament_type": "PETG", - "filament_vendor": "Aliz" - }, - "OFOAdMCB": { - "filaments": [ - "OrcaArena/Arena PLA Metal" - ], - "name": "Arena PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFOHOf2F": { - "filaments": [ - "Creality/eSUN PLA-HS" - ], - "name": "eSUN PLA-HS", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFOJPAAS": { - "filaments": [ - "iQ/VXL90 TiQ2 P2" - ], - "name": "VXL90 TiQ2 P2", - "filament_type": "VXL90 Xioneer", - "filament_vendor": "iQ Materials" - }, - "OFOPU1xv": { - "filaments": [ - "Snapmaker/Snapmaker PLA Full Spectrum" - ], - "name": "Snapmaker PLA Full Spectrum", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFOQCfVa": { - "filaments": [ - "BBL/addnorth PLA Premium Silk" - ], - "name": "addnorth PLA Premium Silk", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFObG16Q": { - "filaments": [ - "InfiMech/InfiMech PLA Basic" - ], - "name": "InfiMech PLA Basic", - "filament_type": "PLA", - "filament_vendor": "InfiMech" - }, - "OFObyktP": { - "filaments": [ - "Tiertime/Tiertime PETG" - ], - "name": "Tiertime PETG", - "filament_type": "PETG", - "filament_vendor": "Tiertime" - }, - "OFOiJfLM": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PETG CF" - ], - "name": "FILL3D PETG CF", - "filament_type": "PETG-CF", - "filament_vendor": "FILL3D" - }, - "OFOnSNt3": { - "filaments": [ - "Artillery/Artillery PETG-CF" - ], - "name": "Artillery PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Artillery" - }, - "OFOsHDnB": { - "filaments": [ - "Elegoo/Elegoo PETG PRO", - "OrcaFilamentLibrary/Elegoo PETG PRO" - ], - "name": "Elegoo PETG PRO", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFOuEEvv": { - "filaments": [ - "Qidi/QIDI ABS Rapido 0.2 nozzle" - ], - "name": "QIDI ABS Rapido 0.2 nozzle", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OFOvv91M": { - "filaments": [ - "BBL/PolyLite ABS", - "OrcaFilamentLibrary/PolyLite ABS", - "Qidi/PolyLite ABS" - ], - "name": "PolyLite ABS", - "filament_type": "ABS", - "filament_vendor": "Polymaker" - }, - "OFOwQuZM": { - "filaments": [ - "Snapmaker/Snapmaker PETG-CF" - ], - "name": "Snapmaker PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Snapmaker" - }, - "OFOzwywz": { - "filaments": [ - "Eryone/Eryone ABS" - ], - "name": "Eryone ABS", - "filament_type": "ABS", - "filament_vendor": "Eryone" - }, - "OFP26zNb": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Violeta Jacaranda" - ], - "name": "FilAr PLA Violeta Jacaranda", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFPHLnoe": { - "filaments": [ - "Creality/HP-ASA" - ], - "name": "HP-ASA", - "filament_type": "ASA", - "filament_vendor": "Creality" - }, - "OFPWPlSC": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PP" - ], - "name": "FILL3D PP", - "filament_type": "PP", - "filament_vendor": "FILL3D" - }, - "OFPYDWgC": { - "filaments": [ - "Peopoly/Peopoly Lancer PET-CF" - ], - "name": "Peopoly Lancer PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Peopoly" - }, - "OFPbyOSk": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Rojo Carmesi" - ], - "name": "FilAr PETG Rojo Carmesi", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFPc4zVY": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA INGEO 870" - ], - "name": "Eolas Prints PLA INGEO 870", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFPkCJKE": { - "filaments": [ - "BBL/Panchroma PLA Satin", - "Creality/Panchroma PLA Satin", - "OrcaFilamentLibrary/Panchroma PLA Satin", - "Snapmaker/Panchroma PLA Satin" - ], - "name": "Panchroma PLA Satin", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFPklMI1": { - "filaments": [ - "BBL/Generic PE", - "OrcaFilamentLibrary/Generic PE", - "Tiertime/Generic PE" - ], - "name": "Generic PE", - "filament_type": "PE", - "filament_vendor": "Generic" - }, - "OFPoyiFs": { - "filaments": [ - "BBL/Polymaker HT-PLA", - "OrcaFilamentLibrary/Polymaker HT-PLA", - "Snapmaker/Polymaker HT-PLA" - ], - "name": "Polymaker HT-PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFPqX3x2": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Rosa Amaranto" - ], - "name": "FilAr PLA Rosa Amaranto", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFQ1KzO8": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA Silk" - ], - "name": "Snapmaker J1 PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFQ1zgm3": { - "filaments": [ - "Eryone/Eryone ABS-CF" - ], - "name": "Eryone ABS-CF", - "filament_type": "ABS-CF", - "filament_vendor": "Eryone" - }, - "OFQ3e56w": { - "filaments": [ - "BBL/Bambu PLA Galaxy", - "OrcaFilamentLibrary/Bambu PLA Galaxy" - ], - "name": "Bambu PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFQ40XeN": { - "filaments": [ - "Qidi/QIDI PETG Tough" - ], - "name": "QIDI PETG Tough", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFQ5TxZ2": { - "filaments": [ - "BBL/addnorth PVDF Adamant S1" - ], - "name": "addnorth PVDF Adamant S1", - "filament_type": "PA", - "filament_vendor": "addnorth" - }, - "OFQEGL7z": { - "filaments": [ - "FlyingBear/FlyingBear PA-CF" - ], - "name": "FlyingBear PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "FlyingBear" - }, - "OFQGvU2G": { - "filaments": [ - "OrcaArena/Arena TPU 95A" - ], - "name": "Arena TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Orca Arena" - }, - "OFQHiNJs": { - "filaments": [ - "BBL/Bambu Support G", - "OrcaFilamentLibrary/Bambu Support G" - ], - "name": "Bambu Support G", - "filament_type": "PA", - "filament_vendor": "Bambu Lab" - }, - "OFQLcbps": { - "filaments": [ - "Anker/Generic PA-CF", - "Anycubic/Generic PA-CF", - "BBL/Generic PA-CF", - "Blocks/Generic PA-CF", - "Creality/Generic PA-CF", - "Custom/Generic PA-CF", - "FLSun/Generic PA-CF", - "FlyingBear/Generic PA-CF", - "InfiMech/Generic PA-CF", - "OrcaArena/Generic PA-CF", - "OrcaFilamentLibrary/Generic PA-CF", - "Prusa/Generic PA-CF", - "Qidi/Generic PA-CF", - "Ratrig/Generic PA-CF", - "SecKit/Generic PA-CF", - "Tiertime/Generic PA-CF", - "Vzbot/Generic PA-CF" - ], - "name": "Generic PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Generic" - }, - "OFQMTRc8": { - "filaments": [ - "Snapmaker/Snapmaker J1 PETG" - ], - "name": "Snapmaker J1 PETG", - "filament_type": "PETG", - "filament_vendor": "Snapmaker" - }, - "OFQMsFfF": { - "filaments": [ - "Qidi/QIDI ABS-GF10" - ], - "name": "QIDI ABS-GF10", - "filament_type": "ABS-GF", - "filament_vendor": "QIDI" - }, - "OFQWIKbV": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Titanio" - ], - "name": "FilAr PLA Titanio", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFQYaiGg": { - "filaments": [ - "Snapmaker/Snapmaker PET" - ], - "name": "Snapmaker PET", - "filament_type": "PET", - "filament_vendor": "Snapmaker" - }, - "OFQbjX3s": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PETG" - ], - "name": "FILL3D PETG", - "filament_type": "PETG", - "filament_vendor": "FILL3D" - }, - "OFQdaVZS": { - "filaments": [ - "Creality/Generic PET-CF", - "Elegoo/Generic PET-CF" - ], - "name": "Generic PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Generic" - }, - "OFQe7sAx": { - "filaments": [ - "Anycubic/Anycubic PA6-CF" - ], - "name": "Anycubic PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Anycubic" - }, - "OFQyyO0l": { - "filaments": [ - "Flashforge/Polymaker CoPA" - ], - "name": "Polymaker CoPA", - "filament_type": "PA", - "filament_vendor": "Polymaker" - }, - "OFR0gODA": { - "filaments": [ - "SeeMeCNC/SeeMeCNC ABS" - ], - "name": "SeeMeCNC ABS", - "filament_type": "ABS", - "filament_vendor": "SeeMeCNC" - }, - "OFR1XLMN": { - "filaments": [ - "Qidi/QIDI TPU 95A-HF" - ], - "name": "QIDI TPU 95A-HF", - "filament_type": "TPU", - "filament_vendor": "QIDI" - }, - "OFRFhdqy": { - "filaments": [ - "BBL/addnorth PLA Textura" - ], - "name": "addnorth PLA Textura", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFRJ325z": { - "filaments": [ - "LH/LHS PETG" - ], - "name": "LHS PETG", - "filament_type": "PETG", - "filament_vendor": "LH Stinger" - }, - "OFRhBryT": { - "filaments": [ - "Cubicon/Cubicon PLAi21" - ], - "name": "Cubicon PLAi21", - "filament_type": "PLA", - "filament_vendor": "Cubicon" - }, - "OFRhCTUg": { - "filaments": [ - "Anycubic/Anycubic PET-CF" - ], - "name": "Anycubic PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Anycubic" - }, - "OFRiFnfQ": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PETG Transition" - ], - "name": "Eolas Prints PETG Transition", - "filament_type": "PETG", - "filament_vendor": "Eolas Prints" - }, - "OFRiYgMK": { - "filaments": [ - "BBL/Panchroma PLA Celestial", - "OrcaFilamentLibrary/Panchroma PLA Celestial", - "Snapmaker/Panchroma PLA Celestial" - ], - "name": "Panchroma PLA Celestial", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFRkjhxK": { - "filaments": [ - "Volumic/Volumic PVA-BVOH (Performance)" - ], - "name": "Volumic PVA-BVOH (Performance)", - "filament_type": "PVA", - "filament_vendor": "Volumic" - }, - "OFRooa0F": { - "filaments": [ - "Snapmaker/Snapmaker Dual PA-CF" - ], - "name": "Snapmaker Dual PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Snapmaker" - }, - "OFRpAZ1P": { - "filaments": [ - "DeltaMaker/DeltaMaker Brand PLA" - ], - "name": "DeltaMaker Brand PLA", - "filament_type": "PLA", - "filament_vendor": "DeltaMaker" - }, - "OFRyOsZj": { - "filaments": [ - "re3D/re3D PLA" - ], - "name": "re3D PLA", - "filament_type": "PLA", - "filament_vendor": "re3D" - }, - "OFRzR5mi": { - "filaments": [ - "OrcaFilamentLibrary/eSUN ePLA-LW" - ], - "name": "eSUN ePLA-LW", - "filament_type": "PLA-AERO", - "filament_vendor": "eSUN" - }, - "OFS2tn6G": { - "filaments": [ - "BBL/Fiberon PA612-CF", - "OrcaFilamentLibrary/Fiberon PA612-CF" - ], - "name": "Fiberon PA612-CF", - "filament_type": "PA", - "filament_vendor": "Polymaker" - }, - "OFS4jbj3": { - "filaments": [ - "Eryone/Eryone PA" - ], - "name": "Eryone PA", - "filament_type": "PA", - "filament_vendor": "Eryone" - }, - "OFS8lTQt": { - "filaments": [ - "BBL/Panchroma PLA Silk", - "OrcaFilamentLibrary/Panchroma PLA Silk", - "Snapmaker/Panchroma PLA Silk" - ], - "name": "Panchroma PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFSDfduA": { - "filaments": [ - "Flashforge/Flashforge TPU 65D" - ], - "name": "Flashforge TPU 65D", - "filament_type": "TPU", - "filament_vendor": "Flashforge" - }, - "OFSa39yP": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA" - ], - "name": "Snapmaker J1 PLA", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFSbGfsz": { - "filaments": [ - "OrcaArena/Arena PLA Basic" - ], - "name": "Arena PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFSfm8iP": { - "filaments": [ - "BBL/BETA PLA Heat Color Change" - ], - "name": "BETA PLA Heat Color Change", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFSiCZP3": { - "filaments": [ - "BBL/BETA PETG-GF" - ], - "name": "BETA PETG-GF", - "filament_type": "PETG-CF", - "filament_vendor": "BETA" - }, - "OFSqIcJC": { - "filaments": [ - "Flashforge/Flashforge TPU 95A" - ], - "name": "Flashforge TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Flashforge" - }, - "OFSw6Mor": { - "filaments": [ - "BBL/addnorth PA Adura FDA" - ], - "name": "addnorth PA Adura FDA", - "filament_type": "PA", - "filament_vendor": "addnorth" - }, - "OFSwbBWS": { - "filaments": [], - "name": "DREMC PLA+", - "filament_type": "PLA", - "filament_vendor": "DREMC" - }, - "OFT2jon4": { - "filaments": [ - "Qidi/QIDI ABS Rapido" - ], - "name": "QIDI ABS Rapido", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OFTGHyNC": { - "filaments": [ - "OrcaFilamentLibrary/Bambu PLA Impact" - ], - "name": "Bambu PLA Impact", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFTHDCqA": { - "filaments": [ - "BBL/Bambu PLA Pure" - ], - "name": "Bambu PLA Pure", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFTOPcx0": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints TPU Transition" - ], - "name": "Eolas Prints TPU Transition", - "filament_type": "TPU", - "filament_vendor": "Eolas Prints" - }, - "OFTRZ8Y4": { - "filaments": [ - "BBL/Bambu PETG-CF", - "OrcaFilamentLibrary/Bambu PETG-CF" - ], - "name": "Bambu PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Bambu Lab" - }, - "OFTSXxzE": { - "filaments": [ - "Flashforge/Flashforge PPS-CF" - ], - "name": "Flashforge PPS-CF", - "filament_type": "PPS-CF", - "filament_vendor": "Flashforge" - }, - "OFTXduCM": { - "filaments": [ - "Creality/eSUN ABS+" - ], - "name": "eSUN ABS+", - "filament_type": "ABS", - "filament_vendor": "eSUN" - }, - "OFTcE0nA": { - "filaments": [ - "OrcaFilamentLibrary/eSUN PLA-Basic" - ], - "name": "eSUN PLA-Basic", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFTdauIq": { - "filaments": [ - "Volumic/Volumic PCTG Ultra (Performance)" - ], - "name": "Volumic PCTG Ultra (Performance)", - "filament_type": "PETG", - "filament_vendor": "Volumic" - }, - "OFTkj6DR": { - "filaments": [ - "Anycubic/Anycubic PVA" - ], - "name": "Anycubic PVA", - "filament_type": "PVA", - "filament_vendor": "Anycubic" - }, - "OFTlRzpe": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Gris Pizarra" - ], - "name": "FilAr PLA Gris Pizarra", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFTnWzBs": { - "filaments": [ - "Creality/Hyper PLA-CF" - ], - "name": "Hyper PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Creality" - }, - "OFTs8peJ": { - "filaments": [ - "Snapmaker/Snapmaker Dual TPE" - ], - "name": "Snapmaker Dual TPE", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFTsHNQi": { - "filaments": [ - "Qidi/QIDI ASA" - ], - "name": "QIDI ASA", - "filament_type": "ASA", - "filament_vendor": "QIDI" - }, - "OFU1zPxE": { - "filaments": [ - "Elegoo/Elegoo PLA Galaxy", - "OrcaFilamentLibrary/Elegoo PLA Galaxy" - ], - "name": "Elegoo PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFU3QXL7": { - "filaments": [ - "re3D/re3D PC" - ], - "name": "re3D PC", - "filament_type": "PC", - "filament_vendor": "re3D" - }, - "OFU5JPDy": { - "filaments": [ - "BBL/addnorth PETG PRO Matte" - ], - "name": "addnorth PETG PRO Matte", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OFU7CKZt": { - "filaments": [ - "Volumic/Volumic ASA Ultra (Performance)" - ], - "name": "Volumic ASA Ultra (Performance)", - "filament_type": "ASA", - "filament_vendor": "Volumic" - }, - "OFUF7oA4": { - "filaments": [ - "Creality/Hyper PC" - ], - "name": "Hyper PC", - "filament_type": "PC", - "filament_vendor": "Creality" - }, - "OFUH1aee": { - "filaments": [ - "Volumic/Volumic FLEX93 Ultra (Performance)" - ], - "name": "Volumic FLEX93 Ultra (Performance)", - "filament_type": "TPU", - "filament_vendor": "Volumic" - }, - "OFUIfGoh": { - "filaments": [ - "Snapmaker/Snapmaker Dual PET" - ], - "name": "Snapmaker Dual PET", - "filament_type": "PET", - "filament_vendor": "Snapmaker" - }, - "OFUYCqtB": { - "filaments": [ - "InfiMech/InfiMech PLA" - ], - "name": "InfiMech PLA", - "filament_type": "PLA", - "filament_vendor": "InfiMech" - }, - "OFUaHEO9": { - "filaments": [ - "Anycubic/Anycubic PEBA 95A" - ], - "name": "Anycubic PEBA 95A", - "filament_type": "PEBA", - "filament_vendor": "Anycubic" - }, - "OFUanySo": { - "filaments": [ - "BBL/Bambu PLA Silk+", - "OrcaFilamentLibrary/Bambu PLA Silk+" - ], - "name": "Bambu PLA Silk+", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFUmS5z5": { - "filaments": [ - "Creality/eSUN ASA+" - ], - "name": "eSUN ASA+", - "filament_type": "ASA", - "filament_vendor": "eSUN" - }, - "OFUtiVRn": { - "filaments": [ - "BBL/addnorth PETG ESD" - ], - "name": "addnorth PETG ESD", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OFUyDDNv": { - "filaments": [ - "Elegoo/Elegoo PC", - "OrcaFilamentLibrary/Elegoo PC" - ], - "name": "Elegoo PC", - "filament_type": "PC", - "filament_vendor": "Elegoo" - }, - "OFV5Q7j2": { - "filaments": [ - "Snapmaker/Snapmaker J1 TPE" - ], - "name": "Snapmaker J1 TPE", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFV5c8hG": { - "filaments": [ - "Flashforge/Flashforge PLA Sparkle" - ], - "name": "Flashforge PLA Sparkle", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFV5wEMe": { - "filaments": [ - "Afinia/Afinia ABS" - ], - "name": "Afinia ABS", - "filament_type": "ABS", - "filament_vendor": "Afinia" - }, - "OFV8Mxqx": { - "filaments": [], - "name": "Flashforge PLA-SILK", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFVBlUFH": { - "filaments": [], - "name": "DREMC PETG", - "filament_type": "PETG", - "filament_vendor": "DREMC" - }, - "OFVCkX5w": { - "filaments": [ - "BBL/Bambu TPU 95A", - "OrcaFilamentLibrary/Bambu TPU 95A" - ], - "name": "Bambu TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Bambu Lab" - }, - "OFVDWuxl": { - "filaments": [ - "BBL/addnorth PLA HT-PLA PRO Matte" - ], - "name": "addnorth PLA HT-PLA PRO Matte", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFVHMFJX": { - "filaments": [ - "Qidi/QIDI PETG Tough 0.2 nozzle" - ], - "name": "QIDI PETG Tough 0.2 nozzle", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFVptRxp": { - "filaments": [ - "BBL/COEX TPE 30D", - "OrcaFilamentLibrary/COEX TPE 30D" - ], - "name": "COEX TPE 30D", - "filament_type": "TPU", - "filament_vendor": "COEX 3D" - }, - "OFVtIasg": { - "filaments": [ - "Eryone/Eryone ASA" - ], - "name": "Eryone ASA", - "filament_type": "ASA", - "filament_vendor": "Eryone" - }, - "OFW29a9R": { - "filaments": [ - "BBL/PolyTerra PLA", - "OrcaArena/PolyTerra PLA", - "OrcaFilamentLibrary/PolyTerra PLA", - "Snapmaker/PolyTerra PLA" - ], - "name": "PolyTerra PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFW5FqkL": { - "filaments": [ - "Qidi/QIDI PLA Rapido Silk" - ], - "name": "QIDI PLA Rapido Silk", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFW8M3CY": { - "filaments": [ - "BBL/BETA PLA Chameleon" - ], - "name": "BETA PLA Chameleon", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFW8lqnb": { - "filaments": [ - "Snapmaker/Snapmaker PETG Translucent" - ], - "name": "Snapmaker PETG Translucent", - "filament_type": "PETG", - "filament_vendor": "Snapmaker" - }, - "OFWDe7YH": { - "filaments": [ - "Qidi/QIDI UltraPA" - ], - "name": "QIDI UltraPA", - "filament_type": "UltraPA", - "filament_vendor": "QIDI" - }, - "OFWK0Y9A": { - "filaments": [ - "BBL/addnorth PA Adura" - ], - "name": "addnorth PA Adura", - "filament_type": "PA", - "filament_vendor": "addnorth" - }, - "OFWRITFw": { - "filaments": [ - "Prusa/Prusament rPLA" - ], - "name": "Prusament rPLA", - "filament_type": "PLA", - "filament_vendor": "Prusa Polymers" - }, - "OFWTAEjH": { - "filaments": [ - "Snapmaker/Snapmaker TPE" - ], - "name": "Snapmaker TPE", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFWTRJ1K": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Bronce" - ], - "name": "FilAr PLA Bronce", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFWXCbVF": { - "filaments": [ - "Flashforge/Flashforge PC" - ], - "name": "Flashforge PC", - "filament_type": "PC", - "filament_vendor": "Flashforge" - }, - "OFWYtgCa": { - "filaments": [ - "Elegoo/Elegoo PLA Wood", - "OrcaFilamentLibrary/Elegoo PLA Wood" - ], - "name": "Elegoo PLA Wood", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFWa0NiB": { - "filaments": [ - "Volumic/Volumic NYLON Ultra" - ], - "name": "Volumic NYLON Ultra", - "filament_type": "PA", - "filament_vendor": "Volumic" - }, - "OFWao3Ic": { - "filaments": [ - "Creality/Ender-PLA" - ], - "name": "Ender-PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFWbdGsC": { - "filaments": [ - "Anker/Generic PLA-CF", - "Anycubic/Generic PLA-CF", - "Artillery/Generic PLA-CF", - "BBL/Generic PLA-CF", - "Blocks/Generic PLA-CF", - "Creality/Generic PLA-CF", - "Custom/Generic PLA-CF", - "FLSun/Generic PLA-CF", - "Flashforge/Generic PLA-CF", - "OrcaArena/Generic PLA-CF", - "OrcaFilamentLibrary/Generic PLA-CF", - "Prusa/Generic PLA-CF", - "Qidi/Generic PLA-CF", - "Ratrig/Generic PLA-CF", - "SecKit/Generic PLA-CF", - "Tiertime/Generic PLA-CF", - "Vzbot/Generic PLA-CF" - ], - "name": "Generic PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Generic" - }, - "OFWgFOjn": { - "filaments": [ - "Snapmaker/Snapmaker PLA Silk" - ], - "name": "Snapmaker PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFWwF7K7": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Cafe con Leche" - ], - "name": "FilAr PLA Cafe con Leche", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFX0ycRQ": { - "filaments": [ - "BBL/Fiberon PA12-CF", - "OrcaFilamentLibrary/Fiberon PA12-CF" - ], - "name": "Fiberon PA12-CF", - "filament_type": "PA-CF", - "filament_vendor": "Polymaker" - }, - "OFX2zcrM": { - "filaments": [ - "Chuanying/Generic PLA-CF10", - "Flashforge/Generic PLA-CF10" - ], - "name": "Generic PLA-CF10", - "filament_type": "PLA-CF", - "filament_vendor": "Generic" - }, - "OFXCBZTA": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints ABS" - ], - "name": "Eolas Prints ABS", - "filament_type": "ABS", - "filament_vendor": "Eolas Prints" - }, - "OFXIbw5D": { - "filaments": [ - "BBL/Bambu PLA Matte", - "OrcaFilamentLibrary/Bambu PLA Matte" - ], - "name": "Bambu PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFXJ9iom": { - "filaments": [ - "iQ/Grauts HPP4GF25 P1" - ], - "name": "Grauts HPP4GF25 P1", - "filament_type": "HPP4GF25", - "filament_vendor": "iQ Materials" - }, - "OFXSvqOX": { - "filaments": [ - "Snapmaker/Snapmaker TPU 95A HF" - ], - "name": "Snapmaker TPU 95A HF", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFXTPuqV": { - "filaments": [ - "OrcaFilamentLibrary/Elas PETG Basic" - ], - "name": "Elas PETG Basic", - "filament_type": "PETG", - "filament_vendor": "Elas" - }, - "OFXW4CDh": { - "filaments": [ - "Ratrig/Generic PCTG BigNozzle" - ], - "name": "Generic PCTG BigNozzle", - "filament_type": "PCTG", - "filament_vendor": "Generic" - }, - "OFXi59OX": { - "filaments": [ - "Afinia/Afinia Value ABS" - ], - "name": "Afinia Value ABS", - "filament_type": "ABS", - "filament_vendor": "Afinia" - }, - "OFXiArjA": { - "filaments": [ - "Flashforge/Flashforge PETG Pro" - ], - "name": "Flashforge PETG Pro", - "filament_type": "PETG", - "filament_vendor": "Flashforge" - }, - "OFXk1emJ": { - "filaments": [ - "Artillery/Artillery PLA Basic" - ], - "name": "Artillery PLA Basic", - "filament_type": "PLA Basic", - "filament_vendor": "Artillery" - }, - "OFXkm8q1": { - "filaments": [ - "BBL/Generic PP-CF", - "Creality/Generic PP-CF", - "OrcaFilamentLibrary/Generic PP-CF", - "Tiertime/Generic PP-CF" - ], - "name": "Generic PP-CF", - "filament_type": "PP-CF", - "filament_vendor": "Generic" - }, - "OFXmv5p0": { - "filaments": [ - "Creality/Generic Speed PLA" - ], - "name": "Generic Speed PLA", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFXn3Vd9": { - "filaments": [ - "Qidi/QIDI Support For PAHT" - ], - "name": "QIDI Support For PAHT", - "filament_type": "PAHT-S", - "filament_vendor": "QIDI" - }, - "OFXnToSX": { - "filaments": [ - "Creality/Hyper Stardust" - ], - "name": "Hyper Stardust", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFXuGxvQ": { - "filaments": [ - "Volumic/Volumic PLA Ultra" - ], - "name": "Volumic PLA Ultra", - "filament_type": "PLA", - "filament_vendor": "Volumic" - }, - "OFXz7Mwx": { - "filaments": [ - "Elegoo/Elegoo PLA Silk", - "OrcaFilamentLibrary/Elegoo PLA Silk" - ], - "name": "Elegoo PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFXzQ4yL": { - "filaments": [ - "BBL/Bambu ASA-Aero", - "OrcaFilamentLibrary/Bambu ASA-Aero" - ], - "name": "Bambu ASA-Aero", - "filament_type": "ASA-AERO", - "filament_vendor": "Bambu Lab" - }, - "OFY0F5qA": { - "filaments": [ - "Volumic/Volumic PETG Ultra carbone (Performance)" - ], - "name": "Volumic PETG Ultra carbone (Performance)", - "filament_type": "PETG", - "filament_vendor": "Volumic" - }, - "OFY3AB7j": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA Matte" - ], - "name": "Snapmaker J1 PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFY7jxcS": { - "filaments": [ - "Snapmaker/Snapmaker TPU 90A" - ], - "name": "Snapmaker TPU 90A", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFY9muEs": { - "filaments": [ - "Anker/Generic ABS", - "Anycubic/Generic ABS", - "Artillery/Generic ABS", - "BBL/Generic ABS", - "Blocks/Generic ABS", - "Chuanying/Generic ABS", - "Co Print/Generic ABS", - "CoLiDo/Generic ABS", - "Comgrow/Generic ABS", - "Creality/Generic ABS", - "Custom/Generic ABS", - "Elegoo/Generic ABS", - "FLSun/Generic ABS", - "Flashforge/Generic ABS", - "FlyingBear/Generic ABS", - "InfiMech/Generic ABS", - "Lulzbot/Generic ABS", - "OrcaArena/Generic ABS", - "OrcaFilamentLibrary/Generic ABS", - "Peopoly/Generic ABS", - "Prusa/Generic ABS", - "Qidi/Generic ABS", - "RH3D/Generic ABS", - "Ratrig/Generic ABS", - "SecKit/Generic ABS", - "Sovol/Generic ABS", - "Tiertime/Generic ABS", - "Vzbot/Generic ABS", - "Z-Bolt/Generic ABS" - ], - "name": "Generic ABS", - "filament_type": "ABS", - "filament_vendor": "Generic" - }, - "OFYE7YZw": { - "filaments": [ - "Qidi/Tinmorry PETG-ECO" - ], - "name": "Tinmorry PETG-ECO", - "filament_type": "PETG", - "filament_vendor": "Tinmorry" - }, - "OFYEtXuk": { - "filaments": [ - "Snapmaker/Snapmaker J1 PA-CF" - ], - "name": "Snapmaker J1 PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Snapmaker" - }, - "OFYGbPHX": { - "filaments": [ - "OrcaFilamentLibrary/PolyLite Dual PLA", - "Snapmaker/PolyLite Dual PLA" - ], - "name": "PolyLite Dual PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFYGrfHY": { - "filaments": [ - "BBL/BETA PETG Fluorescence" - ], - "name": "BETA PETG Fluorescence", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFYPdQJh": { - "filaments": [ - "Anker/Generic PETG", - "Anycubic/Generic PETG", - "Artillery/Generic PETG", - "BBL/Generic PETG", - "Blocks/Generic PETG", - "CONSTRUCT3D/Generic PETG", - "Chuanying/Generic PETG", - "Co Print/Generic PETG", - "CoLiDo/Generic PETG", - "Comgrow/Generic PETG", - "Creality/Generic PETG", - "Custom/Generic PETG", - "DeltaMaker/Generic PETG", - "Elegoo/Generic PETG", - "FLSun/Generic PETG", - "Flashforge/Generic PETG", - "FlyingBear/Generic PETG", - "Ginger Additive/Generic PETG", - "InfiMech/Generic PETG", - "LONGER/Generic PETG", - "Lulzbot/Generic PETG", - "OrcaArena/Generic PETG", - "OrcaFilamentLibrary/Generic PETG", - "Peopoly/Generic PETG", - "Prusa/Generic PETG", - "Qidi/Generic PETG", - "RH3D/Generic PETG", - "Ratrig/Generic PETG", - "SecKit/Generic PETG", - "Sovol/Generic PETG", - "Tiertime/Generic PETG", - "Vzbot/Generic PETG", - "Z-Bolt/Generic PETG" - ], - "name": "Generic PETG", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OFYTIMbj": { - "filaments": [ - "Flashforge/Flashforge ABS-CF" - ], - "name": "Flashforge ABS-CF", - "filament_type": "ABS-CF", - "filament_vendor": "Flashforge" - }, - "OFYYeMyQ": { - "filaments": [ - "Flashforge/Flashforge PETG Basic" - ], - "name": "Flashforge PETG Basic", - "filament_type": "PETG", - "filament_vendor": "Flashforge" - }, - "OFYd5uS3": { - "filaments": [], - "name": "DREMC TPU 95A", - "filament_type": "TPU", - "filament_vendor": "DREMC" - }, - "OFYezc6s": { - "filaments": [ - "FlyingBear/FlyingBear TPU" - ], - "name": "FlyingBear TPU", - "filament_type": "TPU", - "filament_vendor": "FlyingBear" - }, - "OFYuowge": { - "filaments": [ - "FlyingBear/Other ABS", - "InfiMech/Other ABS" - ], - "name": "Other ABS", - "filament_type": "ABS", - "filament_vendor": "Other" - }, - "OFZ0mR5b": { - "filaments": [ - "Anycubic/Anycubic PLA-CF" - ], - "name": "Anycubic PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Anycubic" - }, - "OFZ2LuAi": { - "filaments": [ - "Wanhao France/YUMI PLA Bowden" - ], - "name": "YUMI PLA Bowden", - "filament_type": "PLA", - "filament_vendor": "Yumi" - }, - "OFZ3K2cL": { - "filaments": [ - "Qidi/QIDI PA6-CF" - ], - "name": "QIDI PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "QIDI" - }, - "OFZ4QbfK": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Rosa Flamenco" - ], - "name": "FilAr PLA Rosa Flamenco", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFZGrQTU": { - "filaments": [ - "BBL/addnorth PETG Economy" - ], - "name": "addnorth PETG Economy", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OFZJft47": { - "filaments": [ - "BBL/addnorth PLA Economy" - ], - "name": "addnorth PLA Economy", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFZLtWYs": { - "filaments": [ - "Qidi/QIDI ABS-GF25" - ], - "name": "QIDI ABS-GF25", - "filament_type": "ABS-GF", - "filament_vendor": "QIDI" - }, - "OFZOuWrO": { - "filaments": [ - "Qidi/QIDI PPS-CF" - ], - "name": "QIDI PPS-CF", - "filament_type": "PPS-CF", - "filament_vendor": "QIDI" - }, - "OFZivHGL": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA" - ], - "name": "Snapmaker Dual PLA", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFZqZMuv": { - "filaments": [ - "BBL/BETA ASA" - ], - "name": "BETA ASA", - "filament_type": "ASA", - "filament_vendor": "BETA" - }, - "OFZr862X": { - "filaments": [ - "Creality/Generic PLA HF", - "Prusa/Generic PLA HF" - ], - "name": "Generic PLA HF", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFZtOQtl": { - "filaments": [ - "Flashforge/Flashforge PA6-CF" - ], - "name": "Flashforge PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Flashforge" - }, - "OFZtkHRq": { - "filaments": [ - "Anycubic/Anycubic PC" - ], - "name": "Anycubic PC", - "filament_type": "PC", - "filament_vendor": "Anycubic" - }, - "OFaDOaNt": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Celeste Cielo" - ], - "name": "FilAr PLA Celeste Cielo", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFaDsTE0": { - "filaments": [ - "Flashforge/Polymaker S1" - ], - "name": "Polymaker S1", - "filament_type": "PA", - "filament_vendor": "Polymaker" - }, - "OFaEesXQ": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Rojo de Carreras" - ], - "name": "FilAr PLA Rojo de Carreras", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFaEuvNF": { - "filaments": [ - "Anycubic/Anycubic PAHT-CF" - ], - "name": "Anycubic PAHT-CF", - "filament_type": "PAHT-CF", - "filament_vendor": "Anycubic" - }, - "OFaHjk1V": { - "filaments": [ - "Volumic/Volumic PC" - ], - "name": "Volumic PC", - "filament_type": "PC", - "filament_vendor": "Volumic" - }, - "OFaP2SsH": { - "filaments": [ - "LH/LHS ASA" - ], - "name": "LHS ASA", - "filament_type": "ASA", - "filament_vendor": "LH Stinger" - }, - "OFaQMgRH": { - "filaments": [ - "BBL/Bambu PLA Tough", - "OrcaFilamentLibrary/Bambu PLA Tough" - ], - "name": "Bambu PLA Tough", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFaRjiIm": { - "filaments": [ - "SeeMeCNC/SeeMeCNC PETG-CF" - ], - "name": "SeeMeCNC PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "SeeMeCNC" - }, - "OFaYz8iE": { - "filaments": [ - "OrcaFilamentLibrary/Elas PLA Pro" - ], - "name": "Elas PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Elas" - }, - "OFaaddbQ": { - "filaments": [ - "Flashforge/Flashforge PVA" - ], - "name": "Flashforge PVA", - "filament_type": "PVA", - "filament_vendor": "Flashforge" - }, - "OFaeIx7W": { - "filaments": [ - "iQ/Polymaker PETG Polymax black P1" - ], - "name": "Polymaker PETG Polymax black P1", - "filament_type": "PETG Polymax", - "filament_vendor": "iQ Materials" - }, - "OFafO6VM": { - "filaments": [ - "Elegoo/Generic PC-CF" - ], - "name": "Generic PC-CF", - "filament_type": "PC-CF", - "filament_vendor": "Generic" - }, - "OFausr3F": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Rosa" - ], - "name": "FilAr PLA-mate Rosa", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFb5EEM3": { - "filaments": [ - "Artillery/Artillery PET" - ], - "name": "Artillery PET", - "filament_type": "PET", - "filament_vendor": "Artillery" - }, - "OFbP8zEO": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Silk" - ], - "name": "Eolas Prints PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFbPuPKY": { - "filaments": [ - "Prusa/Generic FLEX" - ], - "name": "Generic FLEX", - "filament_type": "FLEX", - "filament_vendor": "Generic" - }, - "OFbSChKb": { - "filaments": [ - "SeeMeCNC/SeeMeCNC PLA" - ], - "name": "SeeMeCNC PLA", - "filament_type": "PLA", - "filament_vendor": "SeeMeCNC" - }, - "OFbSZBOi": { - "filaments": [ - "InfiMech/InfiMech TPU Basic" - ], - "name": "InfiMech TPU Basic", - "filament_type": "TPU", - "filament_vendor": "InfiMech" - }, - "OFbh7HcA": { - "filaments": [ - "Eryone/Eryone PP-CF" - ], - "name": "Eryone PP-CF", - "filament_type": "PP-CF", - "filament_vendor": "Eryone" - }, - "OFc3xdm9": { - "filaments": [ - "BBL/Overture PLA", - "OrcaFilamentLibrary/Overture PLA", - "Qidi/Overture PLA" - ], - "name": "Overture PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFc87pL3": { - "filaments": [ - "OrcaArena/Arena PET-CF" - ], - "name": "Arena PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Orca Arena" - }, - "OFcBJQcC": { - "filaments": [ - "Snapmaker/Snapmaker Dual TPU High-Flow" - ], - "name": "Snapmaker Dual TPU High-Flow", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFcBl0nJ": { - "filaments": [ - "BBL/Fiberon PA612-CF15" - ], - "name": "Fiberon PA612-CF15", - "filament_type": "PA-CF", - "filament_vendor": "Polymaker" - }, - "OFcJDtTx": { - "filaments": [ - "Artillery/Artillery TPU" - ], - "name": "Artillery TPU", - "filament_type": "TPU", - "filament_vendor": "Artillery" - }, - "OFcKtw8W": { - "filaments": [ - "Volumic/PA6 CF20 (Performance)" - ], - "name": "PA6 CF20 (Performance)", - "filament_type": "PA6-CF", - "filament_vendor": "Volumic" - }, - "OFcVLpNA": { - "filaments": [ - "Flashforge/FusRock PAHT-GF" - ], - "name": "FusRock PAHT-GF", - "filament_type": "PAHT-GF", - "filament_vendor": "FusRock" - }, - "OFcfQk4h": { - "filaments": [ - "BBL/Overture Air PLA", - "OrcaFilamentLibrary/Overture Air PLA" - ], - "name": "Overture Air PLA", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFcnWTJB": { - "filaments": [ - "BBL/BETA PLA Glitter" - ], - "name": "BETA PLA Glitter", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFcogyWl": { - "filaments": [ - "WonderMaker/WonderMaker PLA Metal" - ], - "name": "WonderMaker PLA Metal", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFcpa50Z": { - "filaments": [ - "BBL/addnorth PLA-CF Carbon Fiber" - ], - "name": "addnorth PLA-CF Carbon Fiber", - "filament_type": "PLA-CF", - "filament_vendor": "addnorth" - }, - "OFctg8r1": { - "filaments": [ - "CoLiDo/CoLiDo PLA+" - ], - "name": "CoLiDo PLA+", - "filament_type": "PLA", - "filament_vendor": "CoLiDo" - }, - "OFcvKkrs": { - "filaments": [ - "BBL/Overture TPU", - "OrcaFilamentLibrary/Overture TPU" - ], - "name": "Overture TPU", - "filament_type": "TPU", - "filament_vendor": "Overture" - }, - "OFcytyoA": { - "filaments": [ - "BBL/Fiberon PETG-ESD", - "OrcaFilamentLibrary/Fiberon PETG-ESD", - "Snapmaker/Fiberon PETG-ESD" - ], - "name": "Fiberon PETG-ESD", - "filament_type": "PETG", - "filament_vendor": "Polymaker" - }, - "OFd0Fv0k": { - "filaments": [ - "BBL/Generic PE-CF", - "OrcaFilamentLibrary/Generic PE-CF", - "Tiertime/Generic PE-CF" - ], - "name": "Generic PE-CF", - "filament_type": "PE-CF", - "filament_vendor": "Generic" - }, - "OFd2vX0G": { - "filaments": [ - "BBL/COEX PLA PRIME", - "OrcaFilamentLibrary/COEX PLA PRIME" - ], - "name": "COEX PLA PRIME", - "filament_type": "PLA", - "filament_vendor": "COEX 3D" - }, - "OFd4zw5l": { - "filaments": [ - "BBL/AliZ PA-CF", - "OrcaFilamentLibrary/AliZ PA-CF" - ], - "name": "AliZ PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Aliz" - }, - "OFdD5Wbu": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA-CF" - ], - "name": "Snapmaker J1 PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Snapmaker" - }, - "OFdI4zMo": { - "filaments": [], - "name": "DREMC ASA CF", - "filament_type": "ASA", - "filament_vendor": "DREMC" - }, - "OFdXVjGZ": { - "filaments": [ - "Tiertime/Tiertime PC" - ], - "name": "Tiertime PC", - "filament_type": "PC", - "filament_vendor": "Tiertime" - }, - "OFdb8YNz": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Verde Manzana" - ], - "name": "FilAr PLA Verde Manzana", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFdd8ZqJ": { - "filaments": [ - "Snapmaker/Snapmaker PLA Wood" - ], - "name": "Snapmaker PLA Wood", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFdqkWtz": { - "filaments": [ - "Flashforge/Flashforge PLA Luminous" - ], - "name": "Flashforge PLA Luminous", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFdrYBmI": { - "filaments": [ - "Tiertime/Tiertime ASA" - ], - "name": "Tiertime ASA", - "filament_type": "ASA", - "filament_vendor": "Tiertime" - }, - "OFdtPd9h": { - "filaments": [ - "Qidi/QIDI PETG-GF" - ], - "name": "QIDI PETG-GF", - "filament_type": "PETG-GF", - "filament_vendor": "QIDI" - }, - "OFdzlrhi": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Chocolate" - ], - "name": "FilAr PLA-mate Chocolate", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFe61n6v": { - "filaments": [ - "Ratrig/RatRig PunkFil PETG CF" - ], - "name": "RatRig PunkFil PETG CF", - "filament_type": "PETG-CF10", - "filament_vendor": "RatRig" - }, - "OFe8tuNb": { - "filaments": [ - "Tiertime/Tiertime PA6-CF" - ], - "name": "Tiertime PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Tiertime" - }, - "OFe8yBMG": { - "filaments": [ - "Qidi/QIDI PETG Tough 0.6 nozzle" - ], - "name": "QIDI PETG Tough 0.6 nozzle", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFe98A1y": { - "filaments": [ - "Elegoo/Elegoo PET-CF", - "OrcaFilamentLibrary/Elegoo PET-CF" - ], - "name": "Elegoo PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Elegoo" - }, - "OFeAxvEt": { - "filaments": [ - "Snapmaker/Snapmaker Dual ABS Benchy" - ], - "name": "Snapmaker Dual ABS Benchy", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OFeCJqxx": { - "filaments": [ - "Qidi/QIDI ABS Rapido Metal" - ], - "name": "QIDI ABS Rapido Metal", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OFeF4UNh": { - "filaments": [ - "BBL/BETA PLA Silk" - ], - "name": "BETA PLA Silk", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFeIyhUx": { - "filaments": [ - "Anycubic/Anycubic PC-CF" - ], - "name": "Anycubic PC-CF", - "filament_type": "PC-CF", - "filament_vendor": "Anycubic" - }, - "OFeTATC7": { - "filaments": [ - "Snapmaker/Snapmaker J1 Breakaway" - ], - "name": "Snapmaker J1 Breakaway", - "filament_type": "Breakaway Support", - "filament_vendor": "Snapmaker" - }, - "OFeVzkSU": { - "filaments": [ - "Snapmaker/Fiberon PPS-GF20" - ], - "name": "Fiberon PPS-GF20", - "filament_type": "ABS", - "filament_vendor": "Polymaker" - }, - "OFeelsSM": { - "filaments": [ - "Qidi/HATCHBOX PLA" - ], - "name": "HATCHBOX PLA", - "filament_type": "PLA", - "filament_vendor": "HATCHBOX" - }, - "OFelDBgv": { - "filaments": [ - "Snapmaker/Polymaker PLA" - ], - "name": "Polymaker PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFepU7Tl": { - "filaments": [ - "WonderMaker/WonderMaker PLA Matte" - ], - "name": "WonderMaker PLA Matte", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFesA6rF": { - "filaments": [ - "Anker/Generic PLA Silk", - "BBL/Generic PLA Silk", - "Creality/Generic PLA Silk", - "FLSun/Generic PLA Silk", - "Flashforge/Generic PLA Silk", - "OrcaArena/Generic PLA Silk", - "OrcaFilamentLibrary/Generic PLA Silk", - "Prusa/Generic PLA Silk", - "Qidi/Generic PLA Silk", - "Sovol/Generic PLA Silk", - "Tiertime/Generic PLA Silk" - ], - "name": "Generic PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFexaZU2": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Manteca" - ], - "name": "FilAr PLA Manteca", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFf0MkD5": { - "filaments": [ - "Qidi/QIDI PETG Translucent" - ], - "name": "QIDI PETG Translucent", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFf5awy4": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Matte" - ], - "name": "Eolas Prints PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFf6ZEvu": { - "filaments": [ - "InfiMech/InfiMech PC" - ], - "name": "InfiMech PC", - "filament_type": "PC", - "filament_vendor": "InfiMech" - }, - "OFf6mfQO": { - "filaments": [ - "BBL/Bambu Support for ABS", - "OrcaFilamentLibrary/Bambu Support for ABS" - ], - "name": "Bambu Support for ABS", - "filament_type": "ABS", - "filament_vendor": "Bambu Lab" - }, - "OFf6ynfH": { - "filaments": [ - "FlyingBear/FlyingBear PETG Basic" - ], - "name": "FlyingBear PETG Basic", - "filament_type": "PETG Basic", - "filament_vendor": "FlyingBear" - }, - "OFfBpSRI": { - "filaments": [ - "BBL/Bambu ASA", - "OrcaFilamentLibrary/Bambu ASA" - ], - "name": "Bambu ASA", - "filament_type": "ASA", - "filament_vendor": "Bambu Lab" - }, - "OFfD87Gy": { - "filaments": [ - "Snapmaker/Snapmaker PLA Glow" - ], - "name": "Snapmaker PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFfHGM1D": { - "filaments": [ - "re3D/re3D rPP" - ], - "name": "re3D rPP", - "filament_type": "PP", - "filament_vendor": "re3D" - }, - "OFfJSCzm": { - "filaments": [ - "OrcaFilamentLibrary/FDplast PETG" - ], - "name": "FDplast PETG", - "filament_type": "PETG", - "filament_vendor": "FDplast" - }, - "OFfSqS4R": { - "filaments": [ - "Creality/ENDER FAST PLA" - ], - "name": "ENDER FAST PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFfYHK5z": { - "filaments": [ - "Qidi/Polymaker PLA-HT" - ], - "name": "Polymaker PLA-HT", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFfZcoKr": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Piel" - ], - "name": "FilAr PLA-mate Piel", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFfb10SK": { - "filaments": [ - "Artillery/Artillery PC" - ], - "name": "Artillery PC", - "filament_type": "PC", - "filament_vendor": "Artillery" - }, - "OFfmHUkQ": { - "filaments": [ - "Snapmaker/Snapmaker Dual Breakaway" - ], - "name": "Snapmaker Dual Breakaway", - "filament_type": "Breakaway Support", - "filament_vendor": "Snapmaker" - }, - "OFfmZrI3": { - "filaments": [ - "OrcaFilamentLibrary/FDplast TPU" - ], - "name": "FDplast TPU", - "filament_type": "TPU", - "filament_vendor": "FDplast" - }, - "OFfnXFie": { - "filaments": [ - "BBL/COEX TPE 40D", - "OrcaFilamentLibrary/COEX TPE 40D" - ], - "name": "COEX TPE 40D", - "filament_type": "TPU", - "filament_vendor": "COEX 3D" - }, - "OFfq5YXA": { - "filaments": [ - "OrcaFilamentLibrary/Valment PLA-CF" - ], - "name": "Valment PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Valment" - }, - "OFfr4XNO": { - "filaments": [ - "BBL/COEX TPE 60D", - "OrcaFilamentLibrary/COEX TPE 60D" - ], - "name": "COEX TPE 60D", - "filament_type": "TPU", - "filament_vendor": "COEX 3D" - }, - "OFfr6JDF": { - "filaments": [ - "Qidi/QIDI PETG Tough 0.8 nozzle" - ], - "name": "QIDI PETG Tough 0.8 nozzle", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFfuhviw": { - "filaments": [ - "Elegoo/Elegoo PLA Marble", - "OrcaFilamentLibrary/Elegoo PLA Marble" - ], - "name": "Elegoo PLA Marble", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFfuih8e": { - "filaments": [ - "Creality/Creality Silk PLA" - ], - "name": "Creality Silk PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFg3cWVt": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA Metal" - ], - "name": "Snapmaker Dual PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFg57Nmc": { - "filaments": [ - "BBL/Bambu PC FR", - "OrcaFilamentLibrary/Bambu PC FR" - ], - "name": "Bambu PC FR", - "filament_type": "PC", - "filament_vendor": "Bambu Lab" - }, - "OFg8hMzT": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PPCF" - ], - "name": "FILL3D PPCF", - "filament_type": "PP", - "filament_vendor": "FILL3D" - }, - "OFg8ndtj": { - "filaments": [ - "Anker/Generic PA", - "Anycubic/Generic PA", - "BBL/Generic PA", - "Blocks/Generic PA", - "Creality/Generic PA", - "Custom/Generic PA", - "Elegoo/Generic PA", - "FLSun/Generic PA", - "OrcaArena/Generic PA", - "OrcaFilamentLibrary/Generic PA", - "Prusa/Generic PA", - "Qidi/Generic PA", - "Ratrig/Generic PA", - "SecKit/Generic PA", - "Tiertime/Generic PA", - "Vzbot/Generic PA", - "Z-Bolt/Generic PA" - ], - "name": "Generic PA", - "filament_type": "PA", - "filament_vendor": "Generic" - }, - "OFgHh8ly": { - "filaments": [ - "Afinia/Afinia Value PLA" - ], - "name": "Afinia Value PLA", - "filament_type": "PLA", - "filament_vendor": "Afinia" - }, - "OFgMWJ8T": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Negro Azabache" - ], - "name": "FilAr PLA Negro Azabache", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFgSbX7E": { - "filaments": [ - "Volumic/Volumic PC (Performance)" - ], - "name": "Volumic PC (Performance)", - "filament_type": "PC", - "filament_vendor": "Volumic" - }, - "OFgXgt98": { - "filaments": [ - "Artillery/Artillery ABS" - ], - "name": "Artillery ABS", - "filament_type": "ABS", - "filament_vendor": "Artillery" - }, - "OFgbpcy9": { - "filaments": [ - "Anker/Generic TPU", - "Anycubic/Generic TPU", - "Artillery/Generic TPU", - "BBL/Generic TPU", - "Blocks/Generic TPU", - "Chuanying/Generic TPU", - "Co Print/Generic TPU", - "CoLiDo/Generic TPU", - "Creality/Generic TPU", - "Custom/Generic TPU", - "DeltaMaker/Generic TPU", - "FLSun/Generic TPU", - "Flashforge/Generic TPU", - "FlyingBear/Generic TPU", - "InfiMech/Generic TPU", - "OrcaArena/Generic TPU", - "OrcaFilamentLibrary/Generic TPU", - "Prusa/Generic TPU", - "Qidi/Generic TPU", - "RH3D/Generic TPU", - "Ratrig/Generic TPU", - "SecKit/Generic TPU", - "Sovol/Generic TPU", - "Tiertime/Generic TPU", - "Vzbot/Generic TPU" - ], - "name": "Generic TPU", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OFgdaBOt": { - "filaments": [ - "Snapmaker/Polymaker Tough PLA Family" - ], - "name": "Polymaker Tough PLA Family", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFgeM7nD": { - "filaments": [ - "Flashforge/Flashforge PA12-CF" - ], - "name": "Flashforge PA12-CF", - "filament_type": "PA-CF", - "filament_vendor": "Flashforge" - }, - "OFgjgN35": { - "filaments": [ - "Flashforge/Flashforge PLA Silk" - ], - "name": "Flashforge PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFglhKLM": { - "filaments": [ - "Qidi/QIDI PLA Rapido 0.8 nozzle" - ], - "name": "QIDI PLA Rapido 0.8 nozzle", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFgpLTMR": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Gris Plata" - ], - "name": "FilAr PETG Gris Plata", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFgpQwkk": { - "filaments": [ - "Creality/CR-PLA Fluo" - ], - "name": "CR-PLA Fluo", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFgptDSf": { - "filaments": [ - "OrcaArena/Arena PLA Matte" - ], - "name": "Arena PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFgyPlwU": { - "filaments": [ - "Snapmaker/Snapmaker TPU High-Flow" - ], - "name": "Snapmaker TPU High-Flow", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFh7mvPO": { - "filaments": [ - "Prusa/Prusament PVB" - ], - "name": "Prusament PVB", - "filament_type": "PVB", - "filament_vendor": "Prusa Polymers" - }, - "OFh9u9c0": { - "filaments": [ - "Creality/Generic PA6-GF" - ], - "name": "Generic PA6-GF", - "filament_type": "PA-GF", - "filament_vendor": "Generic" - }, - "OFhASRWj": { - "filaments": [ - "BBL/Panchroma PLA Temp Shift", - "OrcaFilamentLibrary/Panchroma PLA Temp Shift", - "Snapmaker/Panchroma PLA Temp Shift" - ], - "name": "Panchroma PLA Temp Shift", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFhMO9Kh": { - "filaments": [ - "OrcaFilamentLibrary/GreenGate3D PETG" - ], - "name": "GreenGate3D PETG", - "filament_type": "PETG", - "filament_vendor": "GreenGate3D" - }, - "OFhN09f0": { - "filaments": [ - "BBL/addnorth PC BLend HT LCF" - ], - "name": "addnorth PC BLend HT LCF", - "filament_type": "PC", - "filament_vendor": "addnorth" - }, - "OFhO5aEJ": { - "filaments": [ - "Ratrig/RatRig PunkFil ABS" - ], - "name": "RatRig PunkFil ABS", - "filament_type": "ABS", - "filament_vendor": "RatRig" - }, - "OFhQf8ou": { - "filaments": [ - "Snapmaker/Snapmaker PLA-CF" - ], - "name": "Snapmaker PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Snapmaker" - }, - "OFhQfUQY": { - "filaments": [ - "BBL/Generic SBS", - "OrcaFilamentLibrary/Generic SBS", - "Tiertime/Generic SBS" - ], - "name": "Generic SBS", - "filament_type": "SBS", - "filament_vendor": "Generic" - }, - "OFhTPf6L": { - "filaments": [ - "Creality/Generic PA6-CF", - "Elegoo/Generic PA6-CF" - ], - "name": "Generic PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Generic" - }, - "OFhUjPA5": { - "filaments": [ - "Eryone/Eryone TPU" - ], - "name": "Eryone TPU", - "filament_type": "TPU", - "filament_vendor": "Eryone" - }, - "OFhWc5Bv": { - "filaments": [ - "OrcaFilamentLibrary/NIT ABS" - ], - "name": "NIT ABS", - "filament_type": "ABS", - "filament_vendor": "NIT" - }, - "OFhWhL1i": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PETG" - ], - "name": "Eolas Prints PETG", - "filament_type": "PETG", - "filament_vendor": "Eolas Prints" - }, - "OFhWrAuP": { - "filaments": [ - "Qidi/QIDI PLA-CF" - ], - "name": "QIDI PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "QIDI" - }, - "OFhbolij": { - "filaments": [ - "Creality/eSUN PLA-Lite" - ], - "name": "eSUN PLA-Lite", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFhcYzR8": { - "filaments": [ - "Elegoo/Elegoo PLA Sparkle", - "OrcaFilamentLibrary/Elegoo PLA Sparkle" - ], - "name": "Elegoo PLA Sparkle", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFhfd722": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints TPU Flex 93A" - ], - "name": "Eolas Prints TPU Flex 93A", - "filament_type": "TPU", - "filament_vendor": "Eolas Prints" - }, - "OFhiJE7Y": { - "filaments": [ - "Qidi/QIDI PEBA 95A" - ], - "name": "QIDI PEBA 95A", - "filament_type": "PEBA", - "filament_vendor": "QIDI" - }, - "OFhkN0a7": { - "filaments": [ - "Creality/Hyper PA612-CF" - ], - "name": "Hyper PA612-CF", - "filament_type": "PA-CF", - "filament_vendor": "Creality" - }, - "OFhlCNqq": { - "filaments": [ - "BBL/COEX PLA", - "OrcaFilamentLibrary/COEX PLA" - ], - "name": "COEX PLA", - "filament_type": "PLA", - "filament_vendor": "COEX 3D" - }, - "OFhmxnYw": { - "filaments": [ - "Snapmaker/Snapmaker PLA Basic" - ], - "name": "Snapmaker PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFhuaUQB": { - "filaments": [ - "BBL/Bambu ABS", - "OrcaFilamentLibrary/Bambu ABS", - "Qidi/Bambu ABS" - ], - "name": "Bambu ABS", - "filament_type": "ABS", - "filament_vendor": "Bambu Lab" - }, - "OFhwiZ50": { - "filaments": [ - "Qidi/QIDI PLA Rapido 0.2 nozzle" - ], - "name": "QIDI PLA Rapido 0.2 nozzle", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFhx4uOG": { - "filaments": [ - "Qidi/QIDI PET-GF" - ], - "name": "QIDI PET-GF", - "filament_type": "PET-GF", - "filament_vendor": "QIDI" - }, - "OFi5RSve": { - "filaments": [ - "Creality/eSUN PLA-LW" - ], - "name": "eSUN PLA-LW", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFi6PfUM": { - "filaments": [ - "Chuanying/Generic PLA-Silk", - "Creality/Generic PLA-Silk", - "Flashforge/Generic PLA-Silk" - ], - "name": "Generic PLA-Silk", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFi90KlM": { - "filaments": [ - "Volumic/Volumic NYLON Ultra (Performance)" - ], - "name": "Volumic NYLON Ultra (Performance)", - "filament_type": "PA", - "filament_vendor": "Volumic" - }, - "OFiDpM1B": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Bordo" - ], - "name": "FilAr PLA-mate Bordo", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFiEz2XI": { - "filaments": [ - "Cubicon/Cubicon PA-CF" - ], - "name": "Cubicon PA-CF", - "filament_type": "PA", - "filament_vendor": "Cubicon" - }, - "OFiWaoqD": { - "filaments": [ - "OrcaFilamentLibrary/DREMC PPA-CF" - ], - "name": "DREMC PPA-CF", - "filament_type": "PPA-CF", - "filament_vendor": "DREMC" - }, - "OFibWuBd": { - "filaments": [ - "Flashforge/Flashforge ABS Basic" - ], - "name": "Flashforge ABS Basic", - "filament_type": "ABS", - "filament_vendor": "Flashforge" - }, - "OFilAA3b": { - "filaments": [ - "Eryone/Eryone PLA-CF" - ], - "name": "Eryone PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "Eryone" - }, - "OFilD4bP": { - "filaments": [ - "FlyingBear/FlyingBear PLA" - ], - "name": "FlyingBear PLA", - "filament_type": "PLA", - "filament_vendor": "FlyingBear" - }, - "OFilnglt": { - "filaments": [ - "Artillery/Artillery PETG" - ], - "name": "Artillery PETG", - "filament_type": "PETG", - "filament_vendor": "Artillery" - }, - "OFin64Qg": { - "filaments": [ - "Creality/Generic Support for PLA" - ], - "name": "Generic Support for PLA", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFitS8al": { - "filaments": [ - "BBL/PolyLite PLA Neon", - "Snapmaker/PolyLite PLA Neon" - ], - "name": "PolyLite PLA Neon", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFiwEbze": { - "filaments": [ - "Volumic/PETG ESD (Performance)" - ], - "name": "PETG ESD (Performance)", - "filament_type": "PETG-ESD", - "filament_vendor": "Volumic" - }, - "OFj3bTjw": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Amarillo" - ], - "name": "FilAr PLA-mate Amarillo", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFj64R5U": { - "filaments": [ - "Peopoly/Peopoly Lancer ABS-GF" - ], - "name": "Peopoly Lancer ABS-GF", - "filament_type": "ABS", - "filament_vendor": "Peopoly" - }, - "OFjD3YTW": { - "filaments": [ - "Qidi/Qidi PC-ABS-FR" - ], - "name": "Qidi PC-ABS-FR", - "filament_type": "PC-ABS-FR", - "filament_vendor": "QIDI" - }, - "OFjHrAX0": { - "filaments": [ - "WonderMaker/WonderMaker ABS" - ], - "name": "WonderMaker ABS", - "filament_type": "ABS", - "filament_vendor": "WonderMaker" - }, - "OFjLAYgO": { - "filaments": [ - "Anycubic/Anycubic PEBA" - ], - "name": "Anycubic PEBA", - "filament_type": "PEBA", - "filament_vendor": "Anycubic" - }, - "OFjPXrXO": { - "filaments": [ - "Elegoo/Elegoo PLA Glow", - "OrcaFilamentLibrary/Elegoo PLA Glow" - ], - "name": "Elegoo PLA Glow", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFjT9PkZ": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Tabaco" - ], - "name": "FilAr PLA Tabaco", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFjUGUIK": { - "filaments": [ - "iQ/Fiberthree PACF Pro P1" - ], - "name": "Fiberthree PACF Pro P1", - "filament_type": "PACF Pro", - "filament_vendor": "iQ Materials" - }, - "OFjUXn67": { - "filaments": [ - "BBL/BETA ABS" - ], - "name": "BETA ABS", - "filament_type": "ABS", - "filament_vendor": "BETA" - }, - "OFjVOWfJ": { - "filaments": [ - "Anycubic/Anycubic PLA High Speed" - ], - "name": "Anycubic PLA High Speed", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFjXrKFO": { - "filaments": [ - "OrcaArena/Arena PLA Impact" - ], - "name": "Arena PLA Impact", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFjb0wos": { - "filaments": [ - "BBL/Panchroma PLA Metallic", - "OrcaFilamentLibrary/Panchroma PLA Metallic", - "Snapmaker/Panchroma PLA Metallic" - ], - "name": "Panchroma PLA Metallic", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFjiXpyf": { - "filaments": [ - "Qidi/Generic TPU 95A", - "TwoTrees/Generic TPU 95A" - ], - "name": "Generic TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OFjkdnyN": { - "filaments": [ - "Snapmaker/Snapmaker Dual TPU" - ], - "name": "Snapmaker Dual TPU", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFjoAe0R": { - "filaments": [ - "Qidi/Qidi PLA-CF" - ], - "name": "Qidi PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "QIDI" - }, - "OFjogeYN": { - "filaments": [ - "BBL/BETA PETG Glitter" - ], - "name": "BETA PETG Glitter", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFjorDcx": { - "filaments": [ - "OrcaFilamentLibrary/FDplast ABS" - ], - "name": "FDplast ABS", - "filament_type": "ABS", - "filament_vendor": "FDplast" - }, - "OFjt8dDO": { - "filaments": [ - "Flashforge/FusRock NexPA-CF25" - ], - "name": "FusRock NexPA-CF25", - "filament_type": "PA-CF", - "filament_vendor": "FusRock" - }, - "OFjt9en1": { - "filaments": [ - "OrcaFilamentLibrary/Generic CoPE" - ], - "name": "Generic CoPE", - "filament_type": "CoPE", - "filament_vendor": "Generic" - }, - "OFjz0a3m": { - "filaments": [ - "Prusa/Prusament PC-CF" - ], - "name": "Prusament PC-CF", - "filament_type": "PC-CF", - "filament_vendor": "Prusa Polymers" - }, - "OFk8t9mz": { - "filaments": [ - "BBL/Fiberon PETG-rCF", - "OrcaFilamentLibrary/Fiberon PETG-rCF" - ], - "name": "Fiberon PETG-rCF", - "filament_type": "PETG-CF", - "filament_vendor": "Polymaker" - }, - "OFkAltI8": { - "filaments": [ - "FlyingBear/Other PA-CF", - "InfiMech/Other PA-CF" - ], - "name": "Other PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Other" - }, - "OFkGp50Y": { - "filaments": [ - "Volumic/Volumic UNIVERSAL Ultra (Performance)" - ], - "name": "Volumic UNIVERSAL Ultra (Performance)", - "filament_type": "UNIV", - "filament_vendor": "Volumic" - }, - "OFkGvN4d": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Verde Pixel" - ], - "name": "FilAr PLA Verde Pixel", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFkHbjUv": { - "filaments": [ - "BBL/BETA PLA Metallic" - ], - "name": "BETA PLA Metallic", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFkOviHk": { - "filaments": [ - "BBL/Fiberon PA6-CF", - "OrcaFilamentLibrary/Fiberon PA6-CF" - ], - "name": "Fiberon PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Polymaker" - }, - "OFkR8E2c": { - "filaments": [ - "Prusa/Prusament PETG" - ], - "name": "Prusament PETG", - "filament_type": "PETG", - "filament_vendor": "Prusa Polymers" - }, - "OFkf1HHw": { - "filaments": [ - "Flashforge/Generic PLA-SILK" - ], - "name": "Generic PLA-SILK", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFkhhUS0": { - "filaments": [ - "Elegoo/Elegoo Rapid PLA+", - "OrcaFilamentLibrary/Elegoo Rapid PLA+" - ], - "name": "Elegoo Rapid PLA+", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFklJcWK": { - "filaments": [ - "FlyingBear/Other PLA Hyper", - "InfiMech/Other PLA Hyper" - ], - "name": "Other PLA Hyper", - "filament_type": "PLA", - "filament_vendor": "Other" - }, - "OFknl9Iz": { - "filaments": [ - "BBL/Bambu ABS-GF", - "OrcaFilamentLibrary/Bambu ABS-GF" - ], - "name": "Bambu ABS-GF", - "filament_type": "ABS-GF", - "filament_vendor": "Bambu Lab" - }, - "OFkoLUtR": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Verde Oliva" - ], - "name": "FilAr PLA Verde Oliva", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFkq7rPy": { - "filaments": [ - "Eryone/Eryone PA-GF" - ], - "name": "Eryone PA-GF", - "filament_type": "PA-GF", - "filament_vendor": "Eryone" - }, - "OFks6esg": { - "filaments": [ - "Creality/EN-PLA+" - ], - "name": "EN-PLA+", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFkx5MEe": { - "filaments": [ - "Artillery/Artillery PVA" - ], - "name": "Artillery PVA", - "filament_type": "PVA", - "filament_vendor": "Artillery" - }, - "OFkzr35f": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Antibacterial" - ], - "name": "Eolas Prints PLA Antibacterial", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFlBoEfL": { - "filaments": [ - "Snapmaker/Snapmaker J1 TPU High-Flow" - ], - "name": "Snapmaker J1 TPU High-Flow", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFlIsW6f": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA Matte" - ], - "name": "Snapmaker Dual PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFlN6DL1": { - "filaments": [ - "Qidi/QIDI PA-Ultra" - ], - "name": "QIDI PA-Ultra", - "filament_type": "UltraPA", - "filament_vendor": "QIDI" - }, - "OFlP3KWq": { - "filaments": [ - "Elegoo/Elegoo PETG HF", - "OrcaFilamentLibrary/Elegoo PETG HF" - ], - "name": "Elegoo PETG HF", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFlSNkhc": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints ASA" - ], - "name": "Eolas Prints ASA", - "filament_type": "ASA", - "filament_vendor": "Eolas Prints" - }, - "OFlfuj2k": { - "filaments": [ - "BBL/Bambu TPU 85A" - ], - "name": "Bambu TPU 85A", - "filament_type": "TPU", - "filament_vendor": "Bambu Lab" - }, - "OFlgMgNM": { - "filaments": [ - "Flashforge/Flashforge PPS" - ], - "name": "Flashforge PPS", - "filament_type": "PPS", - "filament_vendor": "Flashforge" - }, - "OFllmFhT": { - "filaments": [ - "Elegoo/Generic PETG PRO" - ], - "name": "Generic PETG PRO", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OFlmxlDG": { - "filaments": [ - "BBL/BETA HIPS" - ], - "name": "BETA HIPS", - "filament_type": "HIPS", - "filament_vendor": "BETA" - }, - "OFln72PT": { - "filaments": [ - "Elegoo/Elegoo PLA-CF", - "OrcaFilamentLibrary/Elegoo PLA-CF" - ], - "name": "Elegoo PLA-CF", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFlsTpJG": { - "filaments": [ - "Elegoo/Elegoo PC-FR", - "OrcaFilamentLibrary/Elegoo PC-FR" - ], - "name": "Elegoo PC-FR", - "filament_type": "PC", - "filament_vendor": "Elegoo" - }, - "OFlufQpZ": { - "filaments": [ - "Snapmaker/Snapmaker PLA" - ], - "name": "Snapmaker PLA", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFlwmqrC": { - "filaments": [ - "BBL/Polymaker HT-PLA-GF", - "OrcaFilamentLibrary/Polymaker HT-PLA-GF", - "Snapmaker/Polymaker HT-PLA-GF" - ], - "name": "Polymaker HT-PLA-GF", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFm06H6V": { - "filaments": [ - "Elegoo/Elegoo PLA Basic", - "OrcaFilamentLibrary/Elegoo PLA Basic" - ], - "name": "Elegoo PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFm4SivL": { - "filaments": [ - "Flashforge/Flashforge PLA Pro" - ], - "name": "Flashforge PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Flashforge" - }, - "OFm4ysMO": { - "filaments": [ - "FlyingBear/FlyingBear ABS" - ], - "name": "FlyingBear ABS", - "filament_type": "ABS", - "filament_vendor": "FlyingBear" - }, - "OFm70lLt": { - "filaments": [ - "CoLiDo/CoLiDo PLA" - ], - "name": "CoLiDo PLA", - "filament_type": "PLA", - "filament_vendor": "CoLiDo" - }, - "OFmCOW2Y": { - "filaments": [ - "re3D/re3D rPETG" - ], - "name": "re3D rPETG", - "filament_type": "PETG", - "filament_vendor": "re3D" - }, - "OFmFwUWM": { - "filaments": [ - "Prusa/Prusament ASA" - ], - "name": "Prusament ASA", - "filament_type": "ASA", - "filament_vendor": "Prusa Polymers" - }, - "OFmJAd3A": { - "filaments": [ - "OrcaFilamentLibrary/FDplast HIPS" - ], - "name": "FDplast HIPS", - "filament_type": "HIPS", - "filament_vendor": "FDplast" - }, - "OFmKU2Ha": { - "filaments": [ - "Eryone/Eryone PLA" - ], - "name": "Eryone PLA", - "filament_type": "PLA", - "filament_vendor": "Eryone" - }, - "OFmN2lvw": { - "filaments": [ - "BBL/Generic TPU for AMS" - ], - "name": "Generic TPU for AMS", - "filament_type": "TPU-AMS", - "filament_vendor": "Generic" - }, - "OFmY0l6t": { - "filaments": [ - "Creality/Generic PLA Matte", - "Elegoo/Generic PLA Matte", - "OrcaFilamentLibrary/Generic PLA Matte" - ], - "name": "Generic PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFma5TXH": { - "filaments": [ - "Qidi/QIDI ABS Odorless" - ], - "name": "QIDI ABS Odorless", - "filament_type": "ABS", - "filament_vendor": "QIDI" - }, - "OFmaeU4a": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Naranja" - ], - "name": "FilAr PLA-mate Naranja", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFmfizbq": { - "filaments": [ - "OrcaArena/Arena PLA Silk" - ], - "name": "Arena PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFmjN2bc": { - "filaments": [ - "Anycubic/Anycubic PLA" - ], - "name": "Anycubic PLA", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFmn9NZL": { - "filaments": [ - "BBL/FusRock ABS-GF", - "OrcaFilamentLibrary/FusRock ABS-GF" - ], - "name": "FusRock ABS-GF", - "filament_type": "ABS-GF", - "filament_vendor": "FusRock" - }, - "OFmpMwxS": { - "filaments": [ - "BBL/Generic PLA High Speed", - "Creality/Generic PLA High Speed", - "FLSun/Generic PLA High Speed", - "Flashforge/Generic PLA High Speed", - "OrcaFilamentLibrary/Generic PLA High Speed", - "Qidi/Generic PLA High Speed", - "Tiertime/Generic PLA High Speed" - ], - "name": "Generic PLA High Speed", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFmt513L": { - "filaments": [ - "BBL/BETA PETG Transparent" - ], - "name": "BETA PETG Transparent", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFmveLWz": { - "filaments": [ - "Elegoo/Elegoo PETG-GF", - "OrcaFilamentLibrary/Elegoo PETG-GF" - ], - "name": "Elegoo PETG-GF", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFn1QaY3": { - "filaments": [ - "Elegoo/Elegoo PLA Translucent2", - "OrcaFilamentLibrary/Elegoo PLA Translucent2" - ], - "name": "Elegoo PLA Translucent2", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFn2GlhY": { - "filaments": [ - "Creality/Hyper PA6-CF" - ], - "name": "Hyper PA6-CF", - "filament_type": "PA-CF", - "filament_vendor": "Creality" - }, - "OFn6WpN7": { - "filaments": [ - "Qidi/QIDI PA12-CF" - ], - "name": "QIDI PA12-CF", - "filament_type": "PA12-CF", - "filament_vendor": "QIDI" - }, - "OFnBvPhb": { - "filaments": [ - "BBL/addnorth PLA rPLA RE-ADD" - ], - "name": "addnorth PLA rPLA RE-ADD", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFnHc3D6": { - "filaments": [ - "Creality/eSUN PLA-CF" - ], - "name": "eSUN PLA-CF", - "filament_type": "PLA-CF", - "filament_vendor": "eSUN" - }, - "OFnO4wnf": { - "filaments": [ - "Prusa/Prusament PLA" - ], - "name": "Prusament PLA", - "filament_type": "PLA", - "filament_vendor": "Prusa Polymers" - }, - "OFnSeLHk": { - "filaments": [ - "CoLiDo/CoLiDo PLA Silk" - ], - "name": "CoLiDo PLA Silk", - "filament_type": "PLA", - "filament_vendor": "CoLiDo" - }, - "OFnT7Qpb": { - "filaments": [ - "Prusa/Generic TPU HF" - ], - "name": "Generic TPU HF", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OFnXrkhA": { - "filaments": [ - "InfiMech/InfiMech PA-CF" - ], - "name": "InfiMech PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "InfiMech" - }, - "OFnXwW8l": { - "filaments": [ - "Snapmaker/PolyLite PLA Pro Metallic" - ], - "name": "PolyLite PLA Pro Metallic", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFnYVFk2": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Azul Francia" - ], - "name": "FilAr PLA Azul Francia", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFncpm7O": { - "filaments": [ - "WonderMaker/WonderMaker PLA Silk" - ], - "name": "WonderMaker PLA Silk", - "filament_type": "PLA", - "filament_vendor": "WonderMaker" - }, - "OFneOFWe": { - "filaments": [ - "CoLiDo/CoLiDo ABS" - ], - "name": "CoLiDo ABS", - "filament_type": "ABS", - "filament_vendor": "CoLiDo" - }, - "OFnejEt4": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Cian" - ], - "name": "FilAr PETG Cian", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFnfxTvi": { - "filaments": [ - "BBL/Bambu PLA Lite" - ], - "name": "Bambu PLA Lite", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFngcE81": { - "filaments": [ - "LH/LHS TPU Foamy 78A" - ], - "name": "LHS TPU Foamy 78A", - "filament_type": "TPU", - "filament_vendor": "LH Stinger" - }, - "OFniMuTN": { - "filaments": [ - "BBL/Bambu PA6-CF", - "OrcaFilamentLibrary/Bambu PA6-CF" - ], - "name": "Bambu PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "Bambu Lab" - }, - "OFnmp2pO": { - "filaments": [ - "Snapmaker/Snapmaker Breakaway Support For PLA" - ], - "name": "Snapmaker Breakaway Support For PLA", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFnmp6rt": { - "filaments": [ - "Anycubic/Anycubic PLA+" - ], - "name": "Anycubic PLA+", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFnpX8uh": { - "filaments": [ - "BBL/BETA PETG Matte" - ], - "name": "BETA PETG Matte", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFnyHfcv": { - "filaments": [ - "Ratrig/Generic ABS BigNozzle" - ], - "name": "Generic ABS BigNozzle", - "filament_type": "ABS", - "filament_vendor": "Generic" - }, - "OFo15hcT": { - "filaments": [ - "Qidi/QIDI PAHT-GF" - ], - "name": "QIDI PAHT-GF", - "filament_type": "PAHT-GF", - "filament_vendor": "QIDI" - }, - "OFo2UF2C": { - "filaments": [ - "BBL/Generic BVOH", - "Creality/Generic BVOH", - "Flashforge/Generic BVOH", - "OrcaFilamentLibrary/Generic BVOH", - "Tiertime/Generic BVOH" - ], - "name": "Generic BVOH", - "filament_type": "BVOH", - "filament_vendor": "Generic" - }, - "OFo6n2pB": { - "filaments": [ - "Anycubic/Anycubic PETG" - ], - "name": "Anycubic PETG", - "filament_type": "PETG", - "filament_vendor": "Anycubic" - }, - "OFoBTKmn": { - "filaments": [ - "Cubicon/Cubicon PETG" - ], - "name": "Cubicon PETG", - "filament_type": "PETG", - "filament_vendor": "Cubicon" - }, - "OFoSknDB": { - "filaments": [ - "OrcaFilamentLibrary/FILL3D PLA Turbo" - ], - "name": "FILL3D PLA Turbo", - "filament_type": "PLA", - "filament_vendor": "FILL3D" - }, - "OFoYSJKi": { - "filaments": [ - "Anker/Generic PETG-CF", - "BBL/Generic PETG-CF", - "Creality/Generic PETG-CF", - "Elegoo/Generic PETG-CF", - "Flashforge/Generic PETG-CF", - "OrcaArena/Generic PETG-CF", - "OrcaFilamentLibrary/Generic PETG-CF", - "Qidi/Generic PETG-CF", - "Tiertime/Generic PETG-CF" - ], - "name": "Generic PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Generic" - }, - "OFobDOW5": { - "filaments": [ - "Elegoo/Elegoo ASA", - "OrcaFilamentLibrary/Elegoo ASA" - ], - "name": "Elegoo ASA", - "filament_type": "ASA", - "filament_vendor": "Elegoo" - }, - "OFocyw69": { - "filaments": [ - "BBL/AliZ PETG", - "OrcaFilamentLibrary/AliZ PETG" - ], - "name": "AliZ PETG", - "filament_type": "PETG", - "filament_vendor": "Aliz" - }, - "OFoiVqVM": { - "filaments": [ - "BBL/Bambu PLA Basic", - "OrcaFilamentLibrary/Bambu PLA Basic" - ], - "name": "Bambu PLA Basic", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFojbdhR": { - "filaments": [ - "Flashforge/Flashforge ABS-GF" - ], - "name": "Flashforge ABS-GF", - "filament_type": "ABS-GF", - "filament_vendor": "Flashforge" - }, - "OForhBi4": { - "filaments": [ - "Cubicon/Cubicon ABSk" - ], - "name": "Cubicon ABSk", - "filament_type": "ABS", - "filament_vendor": "Cubicon" - }, - "OFovEIbw": { - "filaments": [ - "BBL/Bambu PETG HF", - "OrcaFilamentLibrary/Bambu PETG HF" - ], - "name": "Bambu PETG HF", - "filament_type": "PETG", - "filament_vendor": "Bambu Lab" - }, - "OFp4ETDP": { - "filaments": [ - "Creality/CR-PLA" - ], - "name": "CR-PLA", - "filament_type": "PLA", - "filament_vendor": "Creality" - }, - "OFp57RRC": { - "filaments": [ - "Qidi/QIDI PPS-GF" - ], - "name": "QIDI PPS-GF", - "filament_type": "PPS-GF", - "filament_vendor": "QIDI" - }, - "OFp9wdmf": { - "filaments": [ - "Eryone/Eryone PA-CF" - ], - "name": "Eryone PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Eryone" - }, - "OFpBlrvY": { - "filaments": [ - "OrcaFilamentLibrary/Valment PLA Silk" - ], - "name": "Valment PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Valment" - }, - "OFpDo5Ix": { - "filaments": [ - "Cubicon/Cubicon ABS" - ], - "name": "Cubicon ABS", - "filament_type": "ABS", - "filament_vendor": "Cubicon" - }, - "OFpPGSKG": { - "filaments": [ - "BBL/SUNLU Silk PLA+", - "Flashforge/SUNLU Silk PLA+", - "OrcaFilamentLibrary/SUNLU Silk PLA+" - ], - "name": "SUNLU Silk PLA+", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFpPJSHE": { - "filaments": [ - "Peopoly/Peopoly Lancer PETG-C" - ], - "name": "Peopoly Lancer PETG-C", - "filament_type": "PETG", - "filament_vendor": "Peopoly" - }, - "OFpW4gdi": { - "filaments": [ - "BBL/SUNLU PLA Matte", - "Flashforge/SUNLU PLA Matte", - "OrcaFilamentLibrary/SUNLU PLA Matte" - ], - "name": "SUNLU PLA Matte", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFpdjFI3": { - "filaments": [ - "BBL/BETA PLA UV Color Change" - ], - "name": "BETA PLA UV Color Change", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFpu74Qe": { - "filaments": [ - "Snapmaker/Snapmaker PLA Eco" - ], - "name": "Snapmaker PLA Eco", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFpumhCM": { - "filaments": [ - "Volumic/Volumic UNIVERSAL Ultra" - ], - "name": "Volumic UNIVERSAL Ultra", - "filament_type": "UNIV", - "filament_vendor": "Volumic" - }, - "OFq0TY7C": { - "filaments": [ - "Flashforge/Flashforge ASA-CF" - ], - "name": "Flashforge ASA-CF", - "filament_type": "ASA-CF", - "filament_vendor": "Flashforge" - }, - "OFq8gfS4": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Negro Azabache" - ], - "name": "FilAr PETG Negro Azabache", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFq9svOz": { - "filaments": [ - "BBL/Generic PPS", - "Creality/Generic PPS", - "Tiertime/Generic PPS" - ], - "name": "Generic PPS", - "filament_type": "PPS", - "filament_vendor": "Generic" - }, - "OFqFRiLb": { - "filaments": [ - "Ratrig/Generic PLA BigNozzle" - ], - "name": "Generic PLA BigNozzle", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFqGRZyH": { - "filaments": [ - "BBL/Numakers PLA+", - "OrcaFilamentLibrary/Numakers PLA+" - ], - "name": "Numakers PLA+", - "filament_type": "PLA", - "filament_vendor": "Numakers" - }, - "OFqHQNoZ": { - "filaments": [ - "Elegoo/Elegoo TPU 95A", - "OrcaFilamentLibrary/Elegoo TPU 95A" - ], - "name": "Elegoo TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Elegoo" - }, - "OFqINlYj": { - "filaments": [ - "BBL/eSUN PLA+", - "Creality/eSUN PLA+", - "OrcaFilamentLibrary/eSUN PLA+" - ], - "name": "eSUN PLA+", - "filament_type": "PLA", - "filament_vendor": "eSUN" - }, - "OFqTwtXM": { - "filaments": [ - "BBL/addnorth PETG rPETG Matte" - ], - "name": "addnorth PETG rPETG Matte", - "filament_type": "PETG", - "filament_vendor": "addnorth" - }, - "OFqcL5UF": { - "filaments": [ - "Qidi/QIDI Support For PET/PA" - ], - "name": "QIDI Support For PET/PA", - "filament_type": "PA-S", - "filament_vendor": "QIDI" - }, - "OFqtx549": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Celeste Cielo" - ], - "name": "FilAr PLA-mate Celeste Cielo", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFqw2PQA": { - "filaments": [ - "BBL/Panchroma CoPE", - "OrcaFilamentLibrary/Panchroma CoPE", - "Snapmaker/Panchroma CoPE" - ], - "name": "Panchroma CoPE", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFrFBEfd": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Neon" - ], - "name": "Eolas Prints PLA Neon", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFrGJ4tR": { - "filaments": [ - "Anycubic/Anycubic PLA Slik" - ], - "name": "Anycubic PLA Slik", - "filament_type": "PLA", - "filament_vendor": "Anycubic" - }, - "OFrKLeE3": { - "filaments": [ - "BBL/Bambu PLA Metal", - "OrcaFilamentLibrary/Bambu PLA Metal" - ], - "name": "Bambu PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFrLiqiM": { - "filaments": [ - "InfiMech/InfiMech PETG" - ], - "name": "InfiMech PETG", - "filament_type": "PETG", - "filament_vendor": "InfiMech" - }, - "OFrM4hdm": { - "filaments": [ - "Creality/CR-PLA Carbon" - ], - "name": "CR-PLA Carbon", - "filament_type": "PLA-CF", - "filament_vendor": "Creality" - }, - "OFrOh600": { - "filaments": [ - "BBL/Panchroma PLA Matte", - "Creality/Panchroma PLA Matte", - "OrcaFilamentLibrary/Panchroma PLA Matte", - "Snapmaker/Panchroma PLA Matte" - ], - "name": "Panchroma PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFrZDhVt": { - "filaments": [ - "Flashforge/Flashforge ASA-GF" - ], - "name": "Flashforge ASA-GF", - "filament_type": "ASA-GF", - "filament_vendor": "Flashforge" - }, - "OFrdZ0cK": { - "filaments": [ - "Creality/eSUN PETG+HS" - ], - "name": "eSUN PETG+HS", - "filament_type": "PETG", - "filament_vendor": "eSUN" - }, - "OFrjacXf": { - "filaments": [ - "Flashforge/Flashforge PET-CF" - ], - "name": "Flashforge PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "Flashforge" - }, - "OFrqMlGt": { - "filaments": [ - "BBL/BETA PETG" - ], - "name": "BETA PETG", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFrr67nG": { - "filaments": [ - "OrcaArena/Arena PC" - ], - "name": "Arena PC", - "filament_type": "PC", - "filament_vendor": "Orca Arena" - }, - "OFryjl35": { - "filaments": [ - "Elegoo/Elegoo ASA-CF", - "OrcaFilamentLibrary/Elegoo ASA-CF" - ], - "name": "Elegoo ASA-CF", - "filament_type": "ASA", - "filament_vendor": "Elegoo" - }, - "OFsB2lxm": { - "filaments": [ - "Elegoo/Elegoo PLA Matte", - "OrcaFilamentLibrary/Elegoo PLA Matte" - ], - "name": "Elegoo PLA Matte", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFsD974q": { - "filaments": [ - "Volumic/Volumic PETG Ultra (Performance)" - ], - "name": "Volumic PETG Ultra (Performance)", - "filament_type": "PETG", - "filament_vendor": "Volumic" - }, - "OFsDXRpS": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Piel" - ], - "name": "FilAr PLA Piel", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFsFo7ms": { - "filaments": [ - "Volumic/Volumic PP Ultra" - ], - "name": "Volumic PP Ultra", - "filament_type": "PP", - "filament_vendor": "Volumic" - }, - "OFsFon5l": { - "filaments": [ - "BBL/Generic HIPS", - "Chuanying/Generic HIPS", - "Creality/Generic HIPS", - "Flashforge/Generic HIPS", - "OrcaFilamentLibrary/Generic HIPS", - "Tiertime/Generic HIPS" - ], - "name": "Generic HIPS", - "filament_type": "HIPS", - "filament_vendor": "Generic" - }, - "OFsHSVZc": { - "filaments": [ - "BBL/Bambu Support W", - "OrcaFilamentLibrary/Bambu Support W" - ], - "name": "Bambu Support W", - "filament_type": "PLA", - "filament_vendor": "Bambu Lab" - }, - "OFsP8PKH": { - "filaments": [ - "Z-Bolt/Generic ABS HT" - ], - "name": "Generic ABS HT", - "filament_type": "ABS", - "filament_vendor": "Generic" - }, - "OFsRDvTM": { - "filaments": [ - "Anycubic/Panchroma PLA", - "BBL/Panchroma PLA", - "OrcaFilamentLibrary/Panchroma PLA", - "Snapmaker/Panchroma PLA" - ], - "name": "Panchroma PLA", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFsXQXbs": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Blanco Antartida" - ], - "name": "FilAr PETG Blanco Antartida", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFsijjtH": { - "filaments": [ - "BBL/Generic PP-GF", - "OrcaFilamentLibrary/Generic PP-GF", - "Tiertime/Generic PP-GF" - ], - "name": "Generic PP-GF", - "filament_type": "PP-GF", - "filament_vendor": "Generic" - }, - "OFsoykbm": { - "filaments": [ - "OrcaFilamentLibrary/DREMC PA6-CF" - ], - "name": "DREMC PA6-CF", - "filament_type": "PA6-CF", - "filament_vendor": "DREMC" - }, - "OFt0JbR7": { - "filaments": [ - "Snapmaker/Snapmaker J1 PLA Metal" - ], - "name": "Snapmaker J1 PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFt3HtlG": { - "filaments": [ - "Qidi/QIDI ABS-GF" - ], - "name": "QIDI ABS-GF", - "filament_type": "ABS-GF", - "filament_vendor": "QIDI" - }, - "OFt6e0US": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Amarillo Lima" - ], - "name": "FilAr PETG Amarillo Lima", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFt7SngH": { - "filaments": [ - "Snapmaker/Snapmaker J1 ASA" - ], - "name": "Snapmaker J1 ASA", - "filament_type": "ASA", - "filament_vendor": "Snapmaker" - }, - "OFtFtiS0": { - "filaments": [ - "Snapmaker/Polymaker PETG Galaxy" - ], - "name": "Polymaker PETG Galaxy", - "filament_type": "PETG", - "filament_vendor": "Polymaker" - }, - "OFtGC1ye": { - "filaments": [ - "Artillery/Artillery PA-CF" - ], - "name": "Artillery PA-CF", - "filament_type": "PA-CF", - "filament_vendor": "Artillery" - }, - "OFtKeKa9": { - "filaments": [ - "OrcaArena/Arena PLA Tough" - ], - "name": "Arena PLA Tough", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFtOPlK6": { - "filaments": [ - "OrcaArena/Arena PAHT-CF" - ], - "name": "Arena PAHT-CF", - "filament_type": "PA-CF", - "filament_vendor": "Orca Arena" - }, - "OFtOoWIj": { - "filaments": [], - "name": "FilAr PLA-mate", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFtRn8X8": { - "filaments": [ - "OrcaFilamentLibrary/FDplast SBS" - ], - "name": "FDplast SBS", - "filament_type": "SBS", - "filament_vendor": "FDplast" - }, - "OFtdVZpV": { - "filaments": [ - "BBL/addnorth PLA X-PLA" - ], - "name": "addnorth PLA X-PLA", - "filament_type": "PLA", - "filament_vendor": "addnorth" - }, - "OFtefokm": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Blanco" - ], - "name": "FilAr PLA-mate Blanco", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFtkLO6q": { - "filaments": [ - "BBL/Bambu TPU 90A" - ], - "name": "Bambu TPU 90A", - "filament_type": "TPU", - "filament_vendor": "Bambu Lab" - }, - "OFtndTHe": { - "filaments": [ - "BBL/BETA PETG-CF" - ], - "name": "BETA PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "BETA" - }, - "OFtpXCCv": { - "filaments": [ - "BBL/COEX ASA PRIME", - "OrcaFilamentLibrary/COEX ASA PRIME" - ], - "name": "COEX ASA PRIME", - "filament_type": "ASA", - "filament_vendor": "COEX 3D" - }, - "OFtr8eZw": { - "filaments": [ - "OrcaFilamentLibrary/FDplast PLA" - ], - "name": "FDplast PLA", - "filament_type": "PLA", - "filament_vendor": "FDplast" - }, - "OFtudokz": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA Premium" - ], - "name": "Eolas Prints PLA Premium", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFtybfNX": { - "filaments": [ - "Snapmaker/Snapmaker PLA Metal" - ], - "name": "Snapmaker PLA Metal", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFu08yGN": { - "filaments": [ - "Volumic/Volumic PETG Ultra carbone" - ], - "name": "Volumic PETG Ultra carbone", - "filament_type": "PETG", - "filament_vendor": "Volumic" - }, - "OFu0fjPJ": { - "filaments": [ - "LH/LHS PC CF" - ], - "name": "LHS PC CF", - "filament_type": "PC", - "filament_vendor": "LH Stinger" - }, - "OFu1E4ur": { - "filaments": [ - "Qidi/QIDI ASA-Aero" - ], - "name": "QIDI ASA-Aero", - "filament_type": "ASA-AERO", - "filament_vendor": "QIDI" - }, - "OFu1evlr": { - "filaments": [ - "BBL/Generic PCTG", - "Creality/Generic PCTG", - "OrcaFilamentLibrary/Generic PCTG", - "Ratrig/Generic PCTG", - "Tiertime/Generic PCTG" - ], - "name": "Generic PCTG", - "filament_type": "PCTG", - "filament_vendor": "Generic" - }, - "OFuFEtKX": { - "filaments": [ - "Flashforge/Flashforge PETG-CF" - ], - "name": "Flashforge PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Flashforge" - }, - "OFuJ49uH": { - "filaments": [ - "Qidi/QIDI PETG Basic" - ], - "name": "QIDI PETG Basic", - "filament_type": "PETG", - "filament_vendor": "QIDI" - }, - "OFuO0cAP": { - "filaments": [ - "OrcaArena/Arena PETG-CF" - ], - "name": "Arena PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Orca Arena" - }, - "OFuUuIhR": { - "filaments": [ - "Elegoo/Elegoo PETG-CF", - "OrcaFilamentLibrary/Elegoo PETG-CF" - ], - "name": "Elegoo PETG-CF", - "filament_type": "PETG", - "filament_vendor": "Elegoo" - }, - "OFuV79ru": { - "filaments": [ - "Flashforge/Flashforge PA66-CF" - ], - "name": "Flashforge PA66-CF", - "filament_type": "PA-CF", - "filament_vendor": "Flashforge" - }, - "OFuWCQXN": { - "filaments": [ - "BBL/COEX ABS PRIME", - "OrcaFilamentLibrary/COEX ABS PRIME" - ], - "name": "COEX ABS PRIME", - "filament_type": "ABS", - "filament_vendor": "COEX 3D" - }, - "OFuehn62": { - "filaments": [ - "OrcaArena/Arena PLA Marble" - ], - "name": "Arena PLA Marble", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFufTAK9": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA-mate Negro" - ], - "name": "FilAr PLA-mate Negro", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFughwKn": { - "filaments": [ - "Qidi/QIDI PLA Matte Basic" - ], - "name": "QIDI PLA Matte Basic", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFujZSdh": { - "filaments": [ - "Creality/Hyper PETG" - ], - "name": "Hyper PETG", - "filament_type": "PETG", - "filament_vendor": "Creality" - }, - "OFulOdT2": { - "filaments": [ - "Flashforge/Generic TPU 85A" - ], - "name": "Generic TPU 85A", - "filament_type": "TPU", - "filament_vendor": "Generic" - }, - "OFurdQxc": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Magenta" - ], - "name": "FilAr PETG Magenta", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFusbWjj": { - "filaments": [ - "Creality/Hyper PETG-CF" - ], - "name": "Hyper PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Creality" - }, - "OFuvOt0r": { - "filaments": [ - "BBL/BETA PLA Basic" - ], - "name": "BETA PLA Basic", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFuxH0Uz": { - "filaments": [ - "Volumic/Volumic FLEX93 Ultra" - ], - "name": "Volumic FLEX93 Ultra", - "filament_type": "TPU", - "filament_vendor": "Volumic" - }, - "OFvD0Qqt": { - "filaments": [ - "Ratrig/Generic PETG BigNozzle" - ], - "name": "Generic PETG BigNozzle", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OFvDbkFq": { - "filaments": [ - "Prusa/Prusament PC Blend" - ], - "name": "Prusament PC Blend", - "filament_type": "PC", - "filament_vendor": "Prusa Polymers" - }, - "OFvKUnLh": { - "filaments": [ - "BBL/Bambu TPU 95A HF", - "OrcaFilamentLibrary/Bambu TPU 95A HF" - ], - "name": "Bambu TPU 95A HF", - "filament_type": "TPU", - "filament_vendor": "Bambu Lab" - }, - "OFvLppPU": { - "filaments": [ - "Creality/CR-Nylon" - ], - "name": "CR-Nylon", - "filament_type": "PA", - "filament_vendor": "Creality" - }, - "OFvPPMxL": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PLA Verde FilAr" - ], - "name": "FilAr PLA Verde FilAr", - "filament_type": "PLA", - "filament_vendor": "FilAr" - }, - "OFvTVZc3": { - "filaments": [ - "BBL/COEX PETG", - "OrcaFilamentLibrary/COEX PETG" - ], - "name": "COEX PETG", - "filament_type": "PETG", - "filament_vendor": "COEX 3D" - }, - "OFvVy7yo": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints TPU D60 UV Resistant" - ], - "name": "Eolas Prints TPU D60 UV Resistant", - "filament_type": "TPU", - "filament_vendor": "Eolas Prints" - }, - "OFvaLVML": { - "filaments": [ - "Flashforge/Flashforge HIPS" - ], - "name": "Flashforge HIPS", - "filament_type": "HIPS", - "filament_vendor": "Flashforge" - }, - "OFvcIGee": { - "filaments": [ - "BBL/addnorth TPU Pro Matte 85A" - ], - "name": "addnorth TPU Pro Matte 85A", - "filament_type": "TPU", - "filament_vendor": "addnorth" - }, - "OFvdZ2bx": { - "filaments": [ - "Qidi/QIDI WOOD Rapido" - ], - "name": "QIDI WOOD Rapido", - "filament_type": "PLA", - "filament_vendor": "QIDI" - }, - "OFvgE0Zh": { - "filaments": [ - "Elegoo/Elegoo PLA", - "OrcaFilamentLibrary/Elegoo PLA" - ], - "name": "Elegoo PLA", - "filament_type": "PLA", - "filament_vendor": "Elegoo" - }, - "OFvmwTZE": { - "filaments": [ - "Snapmaker/Snapmaker TPU 95A" - ], - "name": "Snapmaker TPU 95A", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFvrXuV7": { - "filaments": [ - "BBL/PolyLite ASA", - "OrcaFilamentLibrary/PolyLite ASA" - ], - "name": "PolyLite ASA", - "filament_type": "ASA", - "filament_vendor": "Polymaker" - }, - "OFvxIS9g": { - "filaments": [ - "BBL/Fiberon PA12-CF10", - "Snapmaker/Fiberon PA12-CF10" - ], - "name": "Fiberon PA12-CF10", - "filament_type": "PA-CF", - "filament_vendor": "Polymaker" - }, - "OFvxghTE": { - "filaments": [ - "Chuanying/Generic HS PLA", - "Flashforge/Generic HS PLA", - "TwoTrees/Generic HS PLA" - ], - "name": "Generic HS PLA", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFvyB0Bz": { - "filaments": [ - "BBL/PolyLite PLA Galaxy", - "Snapmaker/PolyLite PLA Galaxy" - ], - "name": "PolyLite PLA Galaxy", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFvzvwCu": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PLA High Speed" - ], - "name": "Eolas Prints PLA High Speed", - "filament_type": "PLA", - "filament_vendor": "Eolas Prints" - }, - "OFw4WD4T": { - "filaments": [ - "BBL/Fiberon PETG-rCF08" - ], - "name": "Fiberon PETG-rCF08", - "filament_type": "PETG-CF", - "filament_vendor": "Polymaker" - }, - "OFwJ0qu2": { - "filaments": [], - "name": "DREMC PET-CF", - "filament_type": "PET-CF", - "filament_vendor": "DREMC" - }, - "OFwLBAGf": { - "filaments": [ - "Qidi/HATCHBOX ABS" - ], - "name": "HATCHBOX ABS", - "filament_type": "ABS", - "filament_vendor": "HATCHBOX" - }, - "OFwPrlCM": { - "filaments": [ - "BBL/Bambu PETG Translucent", - "OrcaFilamentLibrary/Bambu PETG Translucent" - ], - "name": "Bambu PETG Translucent", - "filament_type": "PETG", - "filament_vendor": "Bambu Lab" - }, - "OFwRJ4g0": { - "filaments": [ - "OrcaFilamentLibrary/NIT PLA" - ], - "name": "NIT PLA", - "filament_type": "PLA", - "filament_vendor": "NIT" - }, - "OFwVVKEV": { - "filaments": [ - "FlyingBear/Other TPU", - "InfiMech/Other TPU" - ], - "name": "Other TPU", - "filament_type": "TPU", - "filament_vendor": "Other" - }, - "OFwaYjL6": { - "filaments": [ - "BBL/Fiberon PA6-GF", - "OrcaFilamentLibrary/Fiberon PA6-GF" - ], - "name": "Fiberon PA6-GF", - "filament_type": "PA-GF", - "filament_vendor": "Polymaker" - }, - "OFwc74ck": { - "filaments": [ - "BBL/BETA PLA Matte" - ], - "name": "BETA PLA Matte", - "filament_type": "PLA", - "filament_vendor": "BETA" - }, - "OFwhLMs4": { - "filaments": [ - "Snapmaker/Snapmaker PLA SnapSpeed" - ], - "name": "Snapmaker PLA SnapSpeed", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFwjMiKL": { - "filaments": [ - "Flashforge/Flashforge PETG Transparent" - ], - "name": "Flashforge PETG Transparent", - "filament_type": "PETG", - "filament_vendor": "Flashforge" - }, - "OFwlZ7gH": { - "filaments": [ - "Flashforge/Flashforge TPU-90A" - ], - "name": "Flashforge TPU-90A", - "filament_type": "TPU-90A", - "filament_vendor": "Flashforge" - }, - "OFwu7IAG": { - "filaments": [ - "BBL/COEX PCTG PRIME", - "OrcaFilamentLibrary/COEX PCTG PRIME" - ], - "name": "COEX PCTG PRIME", - "filament_type": "PCTG", - "filament_vendor": "COEX 3D" - }, - "OFwwAQnA": { - "filaments": [ - "Prusa/Generic PC HF" - ], - "name": "Generic PC HF", - "filament_type": "PC", - "filament_vendor": "Generic" - }, - "OFwyt1xt": { - "filaments": [ - "Eryone/Eryone ASA-CF" - ], - "name": "Eryone ASA-CF", - "filament_type": "ASA-CF", - "filament_vendor": "Eryone" - }, - "OFx0WlzS": { - "filaments": [ - "Flashforge/Flashforge TPU-95A" - ], - "name": "Flashforge TPU-95A", - "filament_type": "TPU-95A", - "filament_vendor": "Flashforge" - }, - "OFx8Lmsd": { - "filaments": [ - "OrcaFilamentLibrary/Eolas Prints PETG UV Resistant" - ], - "name": "Eolas Prints PETG UV Resistant", - "filament_type": "PETG", - "filament_vendor": "Eolas Prints" - }, - "OFxA1p01": { - "filaments": [ - "BBL/Overture PLA Pro", - "OrcaFilamentLibrary/Overture PLA Pro" - ], - "name": "Overture PLA Pro", - "filament_type": "PLA", - "filament_vendor": "Overture" - }, - "OFxDHUX8": { - "filaments": [ - "SeeMeCNC/SeeMeCNC PETG" - ], - "name": "SeeMeCNC PETG", - "filament_type": "PETG", - "filament_vendor": "SeeMeCNC" - }, - "OFxJRuVF": { - "filaments": [ - "Anycubic/Anycubic PC-GF" - ], - "name": "Anycubic PC-GF", - "filament_type": "PC-GF", - "filament_vendor": "Anycubic" - }, - "OFxOHhZw": { - "filaments": [ - "Elegoo/Elegoo ABS", - "OrcaFilamentLibrary/Elegoo ABS" - ], - "name": "Elegoo ABS", - "filament_type": "ABS", - "filament_vendor": "Elegoo" - }, - "OFxUwUeW": { - "filaments": [ - "BBL/SUNLU PLA Marble", - "Flashforge/SUNLU PLA Marble", - "OrcaFilamentLibrary/SUNLU PLA Marble" - ], - "name": "SUNLU PLA Marble", - "filament_type": "PLA", - "filament_vendor": "SUNLU" - }, - "OFxYB4Sw": { - "filaments": [ - "Snapmaker/Snapmaker J1 PETG-CF" - ], - "name": "Snapmaker J1 PETG-CF", - "filament_type": "PETG-CF", - "filament_vendor": "Snapmaker" - }, - "OFxe4rXr": { - "filaments": [ - "BBL/PolyTerra PLA Marble", - "Snapmaker/PolyTerra PLA Marble" - ], - "name": "PolyTerra PLA Marble", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFxqf79Q": { - "filaments": [ - "BBL/BETA PETG HF" - ], - "name": "BETA PETG HF", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFy02QHU": { - "filaments": [ - "BBL/PolyLite PLA Translucent", - "Snapmaker/PolyLite PLA Translucent" - ], - "name": "PolyLite PLA Translucent", - "filament_type": "PLA", - "filament_vendor": "Polymaker" - }, - "OFy14TRA": { - "filaments": [ - "Snapmaker/Snapmaker J1 ABS" - ], - "name": "Snapmaker J1 ABS", - "filament_type": "ABS", - "filament_vendor": "Snapmaker" - }, - "OFy3sW6j": { - "filaments": [ - "WonderMaker/WonderMaker ASA" - ], - "name": "WonderMaker ASA", - "filament_type": "ASA", - "filament_vendor": "WonderMaker" - }, - "OFy48TOp": { - "filaments": [ - "Flashforge/Generic TPU-95A" - ], - "name": "Generic TPU-95A", - "filament_type": "TPU-95A", - "filament_vendor": "Generic" - }, - "OFy8tYJE": { - "filaments": [ - "Cubicon/Cubicon ABS-A100" - ], - "name": "Cubicon ABS-A100", - "filament_type": "ABS", - "filament_vendor": "Cubicon" - }, - "OFyFyLIp": { - "filaments": [ - "SeeMeCNC/SeeMeCNC TPU" - ], - "name": "SeeMeCNC TPU", - "filament_type": "TPU", - "filament_vendor": "SeeMeCNC" - }, - "OFyHgT60": { - "filaments": [ - "OrcaArena/Arena PLA Sparkle" - ], - "name": "Arena PLA Sparkle", - "filament_type": "PLA", - "filament_vendor": "Orca Arena" - }, - "OFyJjkek": { - "filaments": [ - "BBL/addnorth TPU Pro Matte 95A" - ], - "name": "addnorth TPU Pro Matte 95A", - "filament_type": "TPU", - "filament_vendor": "addnorth" - }, - "OFyLWVF3": { - "filaments": [ - "Creality/Generic PETG-GF" - ], - "name": "Generic PETG-GF", - "filament_type": "PETG-GF", - "filament_vendor": "Generic" - }, - "OFyPG8v2": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA Eco" - ], - "name": "Snapmaker Dual PLA Eco", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFyPTnSk": { - "filaments": [ - "BBL/BETA PETG Heat Color Change" - ], - "name": "BETA PETG Heat Color Change", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFyQwdaM": { - "filaments": [ - "Volumic/Volumic ABS Ultra (Performance)" - ], - "name": "Volumic ABS Ultra (Performance)", - "filament_type": "ABS", - "filament_vendor": "Volumic" - }, - "OFyRCIMh": { - "filaments": [ - "FlyingBear/Other PC", - "InfiMech/Other PC" - ], - "name": "Other PC", - "filament_type": "PC", - "filament_vendor": "Other" - }, - "OFyUJI3q": { - "filaments": [ - "Volumic/Volumic ABS Ultra" - ], - "name": "Volumic ABS Ultra", - "filament_type": "ABS", - "filament_vendor": "Volumic" - }, - "OFybzvQN": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Gris Ceniza" - ], - "name": "FilAr PETG Gris Ceniza", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFyhjiNs": { - "filaments": [ - "Snapmaker/Snapmaker PVA" - ], - "name": "Snapmaker PVA", - "filament_type": "PVA", - "filament_vendor": "Snapmaker" - }, - "OFyj3m13": { - "filaments": [ - "Snapmaker/Snapmaker Dual PLA Silk" - ], - "name": "Snapmaker Dual PLA Silk", - "filament_type": "PLA", - "filament_vendor": "Snapmaker" - }, - "OFymnal9": { - "filaments": [ - "Sovol/Sovol Zero PETG HS Nozzle" - ], - "name": "Sovol Zero PETG HS Nozzle", - "filament_type": "PETG", - "filament_vendor": "Generic" - }, - "OFyoBZdm": { - "filaments": [ - "LH/LHS PLA" - ], - "name": "LHS PLA", - "filament_type": "PLA", - "filament_vendor": "LH Stinger" - }, - "OFyreocX": { - "filaments": [ - "Tiertime/Tiertime PVA" - ], - "name": "Tiertime PVA", - "filament_type": "PVA", - "filament_vendor": "Tiertime" - }, - "OFyrnlUn": { - "filaments": [ - "Snapmaker/Snapmaker J1 TPU" - ], - "name": "Snapmaker J1 TPU", - "filament_type": "TPU", - "filament_vendor": "Snapmaker" - }, - "OFysxCep": { - "filaments": [ - "OrcaFilamentLibrary/FilAr PETG Coral" - ], - "name": "FilAr PETG Coral", - "filament_type": "PETG", - "filament_vendor": "FilAr" - }, - "OFyxayW4": { - "filaments": [ - "BBL/AliZ PLA", - "OrcaFilamentLibrary/AliZ PLA" - ], - "name": "AliZ PLA", - "filament_type": "PLA", - "filament_vendor": "Aliz" - }, - "OFz1a1fy": { - "filaments": [ - "BBL/BETA PETG Metallic" - ], - "name": "BETA PETG Metallic", - "filament_type": "PETG", - "filament_vendor": "BETA" - }, - "OFz5oHgf": { - "filaments": [ - "MagicMaker/Generic PEEK" - ], - "name": "Generic PEEK", - "filament_type": "PEEK", - "filament_vendor": "Generic" - }, - "OFzAWsca": { - "filaments": [ - "Qidi/Qidi TPU 95A-HF" - ], - "name": "Qidi TPU 95A-HF", - "filament_type": "TPU", - "filament_vendor": "QIDI" - }, - "OFzB4uOs": { - "filaments": [ - "Sovol/Sovol Zero PLA Basic HS Nozzle" - ], - "name": "Sovol Zero PLA Basic HS Nozzle", - "filament_type": "PLA", - "filament_vendor": "Generic" - }, - "OFzRtFM9": { - "filaments": [ - "Prusa/Generic ASA HF" - ], - "name": "Generic ASA HF", - "filament_type": "ASA", - "filament_vendor": "Generic" - }, - "OFzS7zt4": { - "filaments": [ - "Anycubic/Anycubic PA" - ], - "name": "Anycubic PA", - "filament_type": "PA", - "filament_vendor": "Anycubic" - }, - "OFzY7N3Z": { - "filaments": [ - "Artillery/Artillery PLA" - ], - "name": "Artillery PLA", - "filament_type": "PLA", - "filament_vendor": "Artillery" - }, - "OFzaq7Yg": { - "filaments": [ - "BBL/BETA TPU 98A" - ], - "name": "BETA TPU 98A", - "filament_type": "TPU", - "filament_vendor": "BETA" - }, - "OFzk5oAo": { - "filaments": [ - "BBL/addnorth ABS rABS" - ], - "name": "addnorth ABS rABS", - "filament_type": "ABS", - "filament_vendor": "addnorth" - }, - "OFzrUUxc": { - "filaments": [], - "name": "DREMC ABS", - "filament_type": "ABS", - "filament_vendor": "DREMC" - }, - "OFztQ7rO": { - "filaments": [ - "LH/LHS ABS" - ], - "name": "LHS ABS", - "filament_type": "ASA", - "filament_vendor": "LH Stinger" - }, - "OFzwA5Z9": { - "filaments": [ - "Flashforge/FusRock PET-GF" - ], - "name": "FusRock PET-GF", - "filament_type": "PET-GF", - "filament_vendor": "FusRock" - }, - "OFzyIxba": { - "filaments": [ - "BBL/Bambu PVA", - "OrcaFilamentLibrary/Bambu PVA" - ], - "name": "Bambu PVA", - "filament_type": "PVA", - "filament_vendor": "Bambu Lab" - } - } -} diff --git a/scripts/orca_profile_tool.py b/scripts/orca_profile_tool.py index b889a1bc39..100e7cba3f 100755 --- a/scripts/orca_profile_tool.py +++ b/scripts/orca_profile_tool.py @@ -10,23 +10,19 @@ commands: normalize rewrite profile files into their canonical shape trim delete profile files no .json list references update-index regenerate the *_list sections of .json - update-snapshot re-record scripts/filament_id_snapshot.json options shared by several commands: --vendor VENDOR act on one vendor bundle only; repeatable, empty means all - (every command but update-snapshot) --profile-type TYPE one of machine_model/process/filament/machine; repeatable (normalize, trim, update-index) --dry-run report what would change and write nothing (every command that writes) - --profiles DIR act on another profile tree (default: resources/profiles); - check and update-snapshot then need --snapshot PATH too, - since the snapshot describes resources/profiles alone + --profiles DIR act on another profile tree (default: resources/profiles) After adding, renaming or deleting profile files, run: - normalize -> update-index -> generate-id -> update-snapshot -> check + normalize -> update-index -> generate-id -> check normalize supplies missing types; update-index registers presets before id -generation. update-snapshot is needed when filament ids or claims change. +generation. Use trim only for deliberate cleanup, previewed with --dry-run: it judges against the current index and can delete newly added, unindexed presets. @@ -55,8 +51,8 @@ filament_id policy (see docs/HLSD/filament_id.md): filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE, "filament_product///") ) 8 chars total, which satisfies the AMS length limit. Nobody invents ids by - hand, and nothing but the triple feeds the mint — not the rest of the tree, - not the snapshot. Two products whose triples mint one id (a base62 + hand, and nothing but the triple feeds the mint — not the rest of the tree. + Two products whose triples mint one id (a base62 collision; odds ~1e-5 over the whole tree) is an error --check reports and --generate refuses to write; the remedy is a rename so the triples differ, never a salted or hand-picked second id. @@ -70,12 +66,6 @@ filament_id policy (see docs/HLSD/filament_id.md): the app applies at the printer boundary), the QD_* ids a Qidi box composes at runtime, and the P+7-hex ids CreatePresetsDialog.cpp gives user-created filaments all fail the format rule like any other stray value. - * scripts/filament_id_snapshot.json is the sanctioned-state snapshot: one - entry per id, carrying the product triple it is minted from and the - "Vendor/Filament" presets claiming it. It must exactly equal the tree-derived - state at all times, so any id/claim/triple change shows up as a reviewable - diff to that file (the maintainer gate). It sanctions state, never - exceptions: no check consults it to excuse a preset from the rules above. setting_id policy (see AGENTS.md "Critical Constraints"): * setting_id is a PRESET id, a pure function of the preset's identity: @@ -123,7 +113,6 @@ FILAMENT_ID_LENGTH = 6 # base62 digits after the "OF" prefix -> 8 chars total SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__)) PROFILES_DIR = os.path.normpath(os.path.join(SCRIPTS_DIR, "..", "resources", "profiles")) -SNAPSHOT_PATH = os.path.join(SCRIPTS_DIR, "filament_id_snapshot.json") # The single source of truth for the map path; update_bambu_filament_ids.py # imports this rather than recomputing it. BAMBU_MAP_PATH = os.path.normpath( @@ -193,7 +182,6 @@ _JSON_STR = r'"(?:[^"\\]|\\.)*"' GENERATE_CMD = "python scripts/orca_profile_tool.py generate-id" SETTING_ID_CMD = '"python scripts/orca_profile_tool.py generate-id --setting-id"' -UPDATE_HINT = 'run "python scripts/orca_profile_tool.py update-snapshot" and commit the diff for maintainer review' BAMBU_MAP_HINT = 'regenerate the map with "python scripts/update_bambu_filament_ids.py" and commit the diff for maintainer review' NORMALIZE_HINT = 'try "python scripts/orca_profile_tool.py normalize" to fix common issues automatically' @@ -246,8 +234,8 @@ def _base62_tail(n, length): """The low `length` base62 digits of n, most-significant first. The shared tail of both id rules. Its output bytes are pinned by the C++ - golden vectors (tests/libslic3r/test_preset_setting_id.cpp) and by the - filament_id snapshot — never change it. + golden vectors (tests/libslic3r/test_preset_setting_id.cpp) and by every + filament_id in the tree — never change it. """ digits = [] for _ in range(length): @@ -483,9 +471,8 @@ def resolve_triple(name, filaments, ofl_filaments): def analyze_tree(profiles_dir): """Load every vendor bundle and derive the full filament_id state. - Returns a dict with the tree-derived snapshot sections plus the working data - the checks and the assign pass need. All claims are "Vendor/Filament" strings - over INSTANTIATED system filaments, tree-wide including OFL and BBL. + Returns a dict of the tree-derived state the checks and the assign pass need, + tree-wide including OFL and BBL. """ profiles_dir = str(profiles_dir) vendor_names = list_vendor_names(profiles_dir) @@ -507,11 +494,6 @@ def analyze_tree(profiles_dir): rec["id_source"] = src vendors[vendor] = filaments - # id -> set of "Vendor/Filament" claims over instantiated presets. Every id - # occurring in the tree is a key; ids only ever DECLARED (e.g. on a root - # none of whose descendants instantiate) keep an empty claim list, so that - # the snapshot exactly equals the tree-derived state. - ids = {} vendor_ids = {} # vendor -> set of ids occurring there (declared or effective) declared_ids = {} # vendor -> set of ids DECLARED in that vendor's own files missing_effective = [] # (vendor, name, file) instantiated presets resolving no id @@ -532,7 +514,6 @@ def analyze_tree(profiles_dir): fid = rec["filament_id"] occurring.add(fid) declared_ids.setdefault(vendor, set()).add(fid) - ids.setdefault(fid, set()) declarer_triples.append((vendor, rec, fid, triple)) triples.setdefault(fid, set()).add(triple) filament_triples.setdefault( @@ -545,11 +526,10 @@ def analyze_tree(profiles_dir): missing_effective.append((vendor, rec["name"], rec["file"])) continue occurring.add(eff) - ids.setdefault(eff, set()).add(f"{vendor}/{base_name(rec['name'])}") if not rec.get("filament_id") and OF_ID_RE.match(eff): inherited.append((vendor, rec, eff, triple)) - # Cross-bundle triple divergence (check 4, warning only): the same filament + # Cross-bundle triple divergence (check 3, warning only): the same filament # name declared in several bundles with different triples cannot converge # on one id until the divergence is fixed. name_bundles = {} @@ -564,7 +544,6 @@ def analyze_tree(profiles_dir): return { "vendors": vendors, "read_errors": read_errors, - "ids": {fid: sorted(claims) for fid, claims in ids.items()}, "vendor_ids": vendor_ids, "declared_ids": declared_ids, "missing_effective": sorted(missing_effective), @@ -578,57 +557,16 @@ def analyze_tree(profiles_dir): } -# --------------------------------------------------------------------------- -# Snapshot IO -# --------------------------------------------------------------------------- - -def snapshot_from_analysis(analysis): - """One entry per id, in id order: the product triple it is minted from and - the "Vendor/Filament" claims on it. Requires exactly one declared triple per - id (update_snapshot refuses any other state; check 3 rejects it anyway).""" - ids = {} - for fid, claims in sorted(analysis["ids"].items()): - [(vendor, ftype, filament_name)] = analysis["triples"][fid] - ids[fid] = {"filaments": sorted(claims), "name": filament_name, - "filament_type": ftype, "filament_vendor": vendor} - return {"ids": ids} - - -def snapshot_triple(entry): - return [entry["filament_vendor"], entry["filament_type"], entry["name"]] - - -def load_snapshot(path): - """Return the snapshot dict, or None when the file does not exist.""" - if not os.path.exists(path): - return None - data = load_json(path) - data.setdefault("ids", {}) - return data - - -def write_snapshot(path, obj): - """Deterministic serialization: snapshot_from_analysis order, indent 1, LF, - trailing newline.""" - with open(path, "w", encoding="utf-8", newline="\n") as f: - json.dump(obj, f, indent=1, ensure_ascii=False) - f.write("\n") - - # --------------------------------------------------------------------------- # filament_id validation # --------------------------------------------------------------------------- -def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, - map_path=BAMBU_MAP_PATH): +def check_filament_ids(profiles_dir=PROFILES_DIR, map_path=BAMBU_MAP_PATH): """Validate filament_id state across every vendor. Returns the error count. 1. Format: every id occurring in the tree (declared or effective) must - match ^OF[0-9A-Za-z]{6}$. No exceptions: not the snapshot, not BBL. - 2. Snapshot equality, both directions: every id in the tree, the filaments - claiming it and the triple its declarers resolve must equal the snapshot - entry exactly (the snapshot diff is the maintainer gate). - 3. Identity: the id is a function of the triple alone, and there is no + match ^OF[0-9A-Za-z]{6}$. No exceptions, not even BBL. + 2. Identity: the id is a function of the triple alone, and there is no second acceptable value. (a) A declared id must equal the one id the declarer's own triple mints; (b) the id an instantiated preset inherits must equal the one ITS own triple mints — how it inherits it (a root, a @@ -636,31 +574,22 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, filament resolves an effective id at all (an id-less one is a hard load error in C++); (d) no two products mint one id (a base62 collision, resolved by renaming one of them). - 4. Triple integrity: (a) every declarer resolves non-empty filament_vendor + 3. Triple integrity: (a) every declarer resolves non-empty filament_vendor and filament_type; (b) declarers of one (bundle, filament) resolve identical triples; cross-bundle divergence on the same filament name is a warning only. - 5. Bambu catalog map: resources/printers/bambu_filament_ids.json must parse, + 4. Bambu catalog map: resources/printers/bambu_filament_ids.json must parse, carry source/bambustudio_commit/generated, key only OF-format ids, map each Bambu id at most once, and for every row whose key the tree claims, the tree's triple for that id must equal the row's (vendor, type, name). - - Nothing is grandfathered: the snapshot sanctions state, never exceptions. """ _utf8_console() errors = 0 analysis = analyze_tree(profiles_dir) - snapshot = load_snapshot(snapshot_path) - if snapshot is None: - print_error(f"filament_id snapshot not found at {snapshot_path}; {UPDATE_HINT}") - return 1 for msg in analysis["read_errors"]: print_error(msg) errors += 1 - snap_ids = snapshot["ids"] - tree_ids = analysis["ids"] - # -- 1. format ---------------------------------------------------------- for vendor in sorted(analysis["vendor_ids"]): for fid in sorted(analysis["vendor_ids"][vendor]): @@ -671,47 +600,7 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, f'filament ids must come from "{GENERATE_CMD}"') errors += 1 - # -- 2. snapshot equality (both directions) ----------------------------- - tree_triples = analysis["triples"] - for fid in sorted(tree_ids): - entry = snap_ids.get(fid) - if entry is None: - print_error( - f'filament_id "{fid}" is not sanctioned by ' - f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") - errors += 1 - continue - for claim in tree_ids[fid]: - if claim not in entry["filaments"]: - print_error( - f'filament_id "{fid}" claim "{claim}" is not sanctioned by ' - f"scripts/filament_id_snapshot.json; {UPDATE_HINT}") - errors += 1 - # Every tree id has at least one declarer; the snapshot records one - # triple per id, so a divergent declarer is a mismatch in both directions. - sanctioned = snapshot_triple(entry) - for t in tree_triples[fid]: - if t != sanctioned: - print_error( - f'filament_id "{fid}" triple "{"/".join(t)}" is not sanctioned by ' - f'scripts/filament_id_snapshot.json, which records ' - f'"{"/".join(sanctioned)}"; {UPDATE_HINT}') - errors += 1 - for fid in sorted(snap_ids): - if fid not in tree_ids: - print_error( - f'filament_id stability: snapshot id "{fid}" vanished from the tree; ' - f"{UPDATE_HINT}") - errors += 1 - continue - for claim in snap_ids[fid]["filaments"]: - if claim not in tree_ids[fid]: - print_error( - f'filament_id stability: snapshot claim "{claim}" of id "{fid}" ' - f"vanished from the tree; {UPDATE_HINT}") - errors += 1 - - # -- 3. identity: the id is a function of the triple alone --------------- + # -- 2. identity: the id is a function of the triple alone --------------- # One triple, one id: a declaration must carry exactly the mint of its # triple, and there is no second acceptable value — not a salt, not a # hand-picked one, not whatever another preset of the product carries. Two @@ -727,10 +616,9 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, f'filament_id "{fid}" declared by "{rec["name"]}" ({rec["file"]}) does ' f'not match the mint of its triple "{"/".join(triple)}": expected ' f'"{want}"; paste the expected id, or fix the triple and run ' - f'"{GENERATE_CMD} --vendor {vendor}" (preview with --dry-run), then ' - f"--update-snapshot") + f'"{GENERATE_CMD} --vendor {vendor}" (preview with --dry-run)') errors += 1 - # (3b) An inherited id is held to the same single value, and every preset + # (2b) An inherited id is held to the same single value, and every preset # missing it is listed — a variant under a wrong root as much as a preset # riding another product's root. Nothing is folded into the declarer's # error: the report names each preset whose id is wrong. @@ -755,7 +643,7 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, f'run "{GENERATE_CMD}" (expected id for filament ' f'"{vendor}/{base_name(name)}": "{expected}")') errors += 1 - # (3d) The mint is injective over the tree's products, or two of them are + # (2d) The mint is injective over the tree's products, or two of them are # indistinguishable to every device that matches on the id. for fid, ts in sorted(analysis["collisions"].items()): print_error( @@ -764,7 +652,7 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, f"of them so their triples differ") errors += 1 - # -- 4. triple integrity --------------------------------------------------- + # -- 3. triple integrity --------------------------------------------------- for vendor, rec, fid, triple in sorted( analysis["declarer_triples"], key=lambda x: (x[0], x[1]["file"])): if triple[0] and triple[1]: @@ -797,7 +685,7 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, f"({detail}); bundles of one product converge on one id only once " f"their triples agree") - # -- 6. Bambu catalog map -------------------------------------------------- + # -- 4. Bambu catalog map -------------------------------------------------- try: bambu_map = load_json(map_path) if not isinstance(bambu_map, dict): @@ -838,7 +726,7 @@ def check_filament_ids(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, errors += 1 else: bambu_id_owners[bambu_id] = fid - claimed = tree_triples.get(fid) + claimed = analysis["triples"].get(fid) if not claimed: continue # a product BambuStudio ships that the tree does not (yet) row_triple = [row.get("vendor", ""), row.get("type", ""), row.get("name", "")] @@ -1404,7 +1292,7 @@ def check_normalized(profiles_dir, vendor): # check # --------------------------------------------------------------------------- -def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSHOT_PATH): +def check_profiles(profiles_dir=PROFILES_DIR, vendors=None): """Validate the whole profile tree. Returns the error count. The per-vendor checks honour `vendors`; the setting_id and filament_id checks are @@ -1468,7 +1356,7 @@ def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSH # Cross-vendor checks: setting_id uniqueness and the whole filament_id state, # both validated over the entire tree regardless of --vendor. errors_found += check_setting_id_uniqueness(profiles_dir) - errors_found += check_filament_ids(profiles_dir, snapshot_path) + errors_found += check_filament_ids(profiles_dir) print("\n==================== SUMMARY ====================") print_info(f"Checked vendors : {len(checked)}") @@ -1486,69 +1374,6 @@ def check_profiles(profiles_dir=PROFILES_DIR, vendors=None, snapshot_path=SNAPSH return errors_found -# --------------------------------------------------------------------------- -# update-snapshot -# --------------------------------------------------------------------------- - -def update_snapshot(profiles_dir=PROFILES_DIR, snapshot_path=SNAPSHOT_PATH, dry_run=False): - """Regenerate the snapshot from the tree. - - Refuses to sanction a tree it could not read whole, and an id declared under - more than one triple: neither state can be recorded truthfully, so writing it - would only hide the mistake until CI. It does not judge the ids themselves — - the snapshot records state and check judges it, so an id that is not a mint - lands in the diff and fails check 1. - Idempotent: a second run over an unchanged tree changes nothing. Returns 0 - on success. - """ - analysis = analyze_tree(profiles_dir) - # A tree that could not be read whole cannot be sanctioned: the snapshot - # would silently drop the unreadable bundle's ids and claims, and the diff - # would read as a deliberate removal. - refusals = len(analysis["read_errors"]) - for msg in analysis["read_errors"]: - print_error(msg) - - for fid, ts in sorted(analysis["triples"].items()): - if len(ts) > 1: - print_error( - f'refusing to sanction filament_id "{fid}": declared under {len(ts)} ' - f'triples ({"; ".join("/".join(t) for t in ts)}); one id names one ' - f"product (check 3)") - refusals += 1 - if refusals: - return 1 - - new_snap = snapshot_from_analysis(analysis) - old_snap = load_snapshot(snapshot_path) - old_ids = old_snap["ids"] if old_snap else {} - - # Diff summary. - added_ids = sorted(set(new_snap["ids"]) - set(old_ids)) - removed_ids = sorted(set(old_ids) - set(new_snap["ids"])) - added_claims = sum( - len(set(entry["filaments"]) - set(old_ids.get(fid, {}).get("filaments", []))) - for fid, entry in new_snap["ids"].items()) - removed_claims = sum( - len(set(entry["filaments"]) - set(new_snap["ids"].get(fid, {}).get("filaments", []))) - for fid, entry in old_ids.items()) - changed = new_snap != (old_snap or {"ids": {}}) - - if changed and not dry_run: - write_snapshot(snapshot_path, new_snap) - - print_info(f"snapshot ids : {len(new_snap['ids'])} (+{len(added_ids)} / -{len(removed_ids)})") - print_info(f"claims added : {added_claims}") - print_info(f"claims removed : {removed_claims}") - if changed and dry_run: - print_success(f"dry run: {snapshot_path} would be rewritten; nothing written") - elif changed: - print_success(f"snapshot written to {snapshot_path}") - else: - print_success("snapshot already up to date; nothing changed") - return 0 - - # --------------------------------------------------------------------------- # Byte-preserving profile edits # --------------------------------------------------------------------------- @@ -1692,9 +1517,9 @@ def generate_filament_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False * an instantiated filament that resolves no id at all gets one inserted into its root(s): the id-less presets of the SAME filament its members inherit, or the member itself (a parent of another filament cannot carry - this filament's id — check 3). + this filament's id — check 2). A declaration is left alone exactly when it already equals the one id its - triple mints (check 3). Two products minting one id (check 3d) are reported + triple mints (check 2). Two products minting one id (check 2d) are reported and left unwritten: nothing salts past a collision, a rename resolves it. `vendors` restricts what is WRITTEN; the id is a function of the triple @@ -1702,9 +1527,7 @@ def generate_filament_ids(profiles_dir=PROFILES_DIR, vendors=None, dry_run=False reports whatever it was not allowed to touch. `changed_paths`, when a set is passed, collects the files that changed. A file whose layout offers no anchor for the edit is reported and counted as an error, so one odd profile - cannot abort the pass over all the others. Never reads or touches the - snapshot — run --update-snapshot afterwards and review the diff. Returns - (files_changed, errors). + cannot abort the pass over all the others. Returns (files_changed, errors). """ _utf8_console() analysis = analyze_tree(profiles_dir) @@ -1959,9 +1782,9 @@ def run_generate_id(profiles_dir, vendors, filament_id, setting_id, dry_run): do_filament = filament_id or not setting_id do_setting = setting_id or not filament_id changed = set() # one file the two passes both touch is still one file - filament_files = errors = 0 + errors = 0 if do_filament: - filament_files, e = generate_filament_ids(profiles_dir, vendors, dry_run, changed) + _n, e = generate_filament_ids(profiles_dir, vendors, dry_run, changed) errors += e if do_setting: _n, e = generate_setting_ids(profiles_dir, vendors, dry_run, changed) @@ -1973,11 +1796,6 @@ def run_generate_id(profiles_dir, vendors, filament_id, setting_id, dry_run): print_error(f"{summary}; {errors} error(s)") else: print_success(summary) - if filament_files and not dry_run: - # A filament_id write may or may not move the sanctioned state (an id repaired - # back to the value the snapshot already records does not), so regenerate and - # let the diff - empty or not - say. - print_warning(f"now {UPDATE_HINT}") return 1 if errors else 0 @@ -2439,13 +2257,11 @@ examples: preview exactly that; writes nothing orca_profile_tool.py generate-id --setting-id --vendor Elegoo setting_id only, and only in that bundle - orca_profile_tool.py update-snapshot - re-record the sanctioned filament_id state after a generate-id run after adding, renaming or deleting profile files, run in this order: - normalize -> update-index -> generate-id -> update-snapshot -> check + normalize -> update-index -> generate-id -> check normalize supplies missing types; update-index registers presets before id -generation. update-snapshot is needed when filament ids or claims change. +generation. Use trim only for deliberate cleanup, previewed with --dry-run: it judges against the current index and can delete newly added, unindexed presets. """ @@ -2473,12 +2289,6 @@ def build_parser(): dry_run_opt.add_argument("--dry-run", "--dryrun", dest="dry_run", action="store_true", help="report what would change and write nothing") - snapshot_opt = argparse.ArgumentParser(add_help=False) - snapshot_opt.add_argument("--snapshot", default=None, metavar="PATH", - help="the sanctioned filament_id state of that tree " - "(default: scripts/filament_id_snapshot.json, which " - "describes resources/profiles and no other tree)") - parser = argparse.ArgumentParser( prog="orca_profile_tool.py", allow_abbrev=False, formatter_class=argparse.RawDescriptionHelpFormatter, @@ -2496,7 +2306,7 @@ def build_parser(): allow_abbrev=False, formatter_class=argparse.RawDescriptionHelpFormatter) add( - "check", [vendor_opt, snapshot_opt, profiles_opt], + "check", [vendor_opt, profiles_opt], "validate the whole profile tree -- what CI runs", "Validate the whole profile tree: preset name uniqueness, index coverage\n" "both ways, compatible_printers, default-material references, obsolete,\n" @@ -2560,11 +2370,6 @@ def build_parser(): "Use trim only for deliberate unindexed-file cleanup, previewed with\n" "--dry-run; it can also delete newly authored presets.") - add("update-snapshot", [dry_run_opt, snapshot_opt, profiles_opt], - "re-record scripts/filament_id_snapshot.json", - "Re-record the sanctioned filament_id state after a generate-id run, and\n" - "commit the diff for maintainer review.") - return parser @@ -2590,29 +2395,14 @@ def main(argv=None): return 1 profile_types = tuple(getattr(args, "profile_type", []) or ()) or None - snapshot_path = getattr(args, "snapshot", None) - if snapshot_path is None: - if (args.command in ("check", "update-snapshot") - and os.path.abspath(profiles_dir) != os.path.abspath(PROFILES_DIR)): - # The repo snapshot is the sanctioned state of resources/profiles alone: - # checking another tree against it is meaningless, and re-recording one - # into it would overwrite the tracked file with a foreign tree's state. - parser.error(f"{args.command} reads and writes the sanctioned state of the " - f"tree it is given, so --profiles needs --snapshot PATH for " - f"that tree too") - snapshot_path = SNAPSHOT_PATH - if args.command == "check": - errors = check_profiles(profiles_dir, vendors, snapshot_path) + errors = check_profiles(profiles_dir, vendors) return 1 if errors else 0 if args.command == "generate-id": return run_generate_id(profiles_dir, vendors, args.filament_id, args.setting_id, args.dry_run) - if args.command == "update-snapshot": - return update_snapshot(profiles_dir, snapshot_path, dry_run=args.dry_run) - if args.command == "normalize": _changed, errors = normalize_profiles(profiles_dir, vendors, profile_types, force=args.force, dry_run=args.dry_run) diff --git a/scripts/tests/test_filament_id.py b/scripts/tests/test_filament_id.py index 548dd9c777..001763fca9 100644 --- a/scripts/tests/test_filament_id.py +++ b/scripts/tests/test_filament_id.py @@ -55,13 +55,12 @@ def preset(name, filament_id=None, inherits=None, instantiation=True, class SyntheticTree: - """A throwaway resources/profiles-shaped directory plus a snapshot path.""" + """A throwaway resources/profiles-shaped directory.""" def __init__(self): self.dir = tempfile.mkdtemp(prefix="filament_id_test_") self.profiles = os.path.join(self.dir, "profiles") os.makedirs(self.profiles) - self.snapshot = os.path.join(self.dir, "filament_id_snapshot.json") def cleanup(self): shutil.rmtree(self.dir, ignore_errors=True) @@ -110,16 +109,6 @@ class SyntheticTree: with open(idx_path, "w", encoding="utf-8") as f: json.dump(index, f, indent=4, ensure_ascii=False) - def remove_preset(self, vendor, name): - os.remove(self.preset_path(vendor, name)) - idx_path = os.path.join(self.profiles, vendor + ".json") - with open(idx_path, encoding="utf-8") as f: - index = json.load(f) - index["filament_list"] = [ - e for e in index["filament_list"] if e["name"] != name] - with open(idx_path, "w", encoding="utf-8") as f: - json.dump(index, f, indent=4, ensure_ascii=False) - def bytes_map(self): """{relative path -> file bytes} over every .json in the tree.""" raw = {} @@ -135,17 +124,11 @@ class SyntheticTree: # -- pipeline wrappers --------------------------------------------------- - def update_snapshot(self, dry_run=False): - buf = io.StringIO() - with contextlib.redirect_stdout(buf): - rc = afi.update_snapshot(self.profiles, self.snapshot, dry_run) - return rc, buf.getvalue() - def check(self, map_path=None): buf = io.StringIO() kwargs = {} if map_path is None else {"map_path": map_path} with contextlib.redirect_stdout(buf): - errors = afi.check_filament_ids(self.profiles, self.snapshot, **kwargs) + errors = afi.check_filament_ids(self.profiles, **kwargs) return errors, buf.getvalue() # assign() and remint() are the same one pass over the tree — every filament @@ -167,8 +150,6 @@ class SyntheticTree: def cli(self, *argv): """Run main() against this tree, capturing stdout.""" flags = [*argv, "--profiles", self.profiles] - if argv and argv[0] in ("check", "update-snapshot"): - flags += ["--snapshot", self.snapshot] buf = io.StringIO() with contextlib.redirect_stdout(buf): rc = afi.main(flags) @@ -178,10 +159,10 @@ class SyntheticTree: def make_clean_tree(apla_id="AX01", generic_id="OGFL99"): """Baseline tree: OFL base+generic, a vendor filament, a clean tuned generic. - apla_id/generic_id default to arbitrary non-OF placeholders (sanctioned by - the snapshot below) since most tests only need "already assigned, don't - touch" and never run the checks. TestAssign and the check tests pass real - OF-format ids instead (OfCleanTreeCase). + apla_id/generic_id default to arbitrary non-OF placeholders since most tests + only need "already assigned, don't touch" and never run the checks. + TestAssign and the check tests pass real OF-format ids instead + (OfCleanTreeCase). """ t = SyntheticTree() t.add_vendor(OFL, [ @@ -199,8 +180,6 @@ def make_clean_tree(apla_id="AX01", generic_id="OGFL99"): preset("Generic PLA @P1", inherits="Generic PLA @System", compatible_printers=["P1 0.4 nozzle"]), ]) - rc, _out = t.update_snapshot() - assert rc == 0 return t @@ -212,10 +191,9 @@ class SyntheticTreeCase(unittest.TestCase): class OfCleanTreeCase(unittest.TestCase): """Like SyntheticTreeCase, but the baseline filament/generic already carry - real OF-format ids (check 1 now rejects "AX01"/"OGFL99" unconditionally, - with no snapshot exemption), so an otherwise-untouched tree still passes - check_filament_ids. Tests that specifically need a non-OF baseline to - remint (TestRemint, TestUpdateSnapshot) keep using SyntheticTreeCase + real OF-format ids (check 1 rejects "AX01"/"OGFL99"), so an + otherwise-untouched tree passes check_filament_ids. Tests that specifically + need a non-OF baseline to remint (TestRemint) keep using SyntheticTreeCase instead. """ def setUp(self): @@ -231,7 +209,7 @@ class OfCleanTreeCase(unittest.TestCase): class TestMint(unittest.TestCase): def test_namespace_literal(self): - # Frozen: derived from the setting_id namespace; baked into the snapshot. + # Frozen: derived from the setting_id namespace; baked into every shipped id. self.assertEqual(afi.FILAMENT_ID_NAMESPACE, uuid.UUID("c4d3ff49-4c32-5534-a3e3-00894157ab97")) @@ -450,22 +428,10 @@ class TestChecks(OfCleanTreeCase): self.assertIn('is not a minted "OF" id', out) self.assertIn("BOGUS_9", out) - def test_check2_new_claim_needs_snapshot_update(self): - self.t.write_preset("VendorA", preset("ANEW @P2", inherits="APLA @base", - compatible_printers=["P2"])) - errors, out = self.t.check() - self.assertGreater(errors, 0) - self.assertIn('claim "VendorA/ANEW" is not sanctioned', out) - self.assertIn("update-snapshot", out) - - def test_check2_vanished_claim_is_stability_error(self): - self.t.remove_preset("VendorA", "APLA @P1") - errors, out = self.t.check() - self.assertGreater(errors, 0) - self.assertIn("stability", out) - self.assertIn('"VendorA/APLA"', out) - - def test_check2_triple_change_needs_snapshot_update(self): + def test_check2_triple_change_needs_a_remint(self): + # Correcting a triple changes the product's identity: the old id is no + # longer its mint, reported on the root and again under the variant + # inheriting it, until generate-id re-mints it. apla_id = afi.generate_filament_id("AVendor", "PLA", "APLA") self.t.write_preset("VendorA", preset("APLA @base", filament_id=apla_id, instantiation=False, @@ -473,26 +439,15 @@ class TestChecks(OfCleanTreeCase): filament_type="PETG"), register=False) errors, out = self.t.check() - self.assertGreater(errors, 0) - self.assertIn('triple "AVendor/PETG/APLA" is not sanctioned', out) - self.assertIn('which records "AVendor/PLA/APLA"', out) - # Sanctioning the new triple is not enough: the old id is no longer its - # mint (check 3, nothing grandfathered) — the identity fix is a re-mint, - # reported on the root and again under the variant inheriting it. - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() self.assertEqual(errors, 2, out) self.assertIn("does not match the mint of its triple", out) self.assertIn('"APLA @P1" (VendorA/filament/APLA @P1.json) inherits filament_id', out) _changed, errors, out = self.t.remint(["VendorA"]) self.assertEqual(errors, 0, out) - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) errors, out = self.t.check() self.assertEqual(errors, 0, out) - def test_check3_of_id_must_match_triple_mint(self): + def test_check2_of_id_must_match_triple_mint(self): self.t.write_preset("VendorA", preset("BNEW @base", filament_id="OFZZZZZZ", instantiation=False, filament_vendor="BV", filament_type="PLA")) @@ -503,39 +458,20 @@ class TestChecks(OfCleanTreeCase): self.assertIn("does not match the mint of its triple", out) self.assertIn(afi.generate_filament_id("BV", "PLA", "BNEW"), out) - def test_check3_no_grandfathering_of_a_wrong_declaration(self): - # Sanctioning the tree does not excuse a declaration from its mint. - self.t.write_preset("VendorA", preset("CNEW @base", filament_id="OFZZZZZZ", - instantiation=False, - filament_vendor="CV", filament_type="PLA")) - self.t.write_preset("VendorA", preset("CNEW @P1", inherits="CNEW @base", - compatible_printers=["P1"])) - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() - self.assertEqual(errors, 2, out) # the declaration, and the variant inheriting it - self.assertIn("does not match the mint of its triple", out) - self.assertIn('"CNEW @P1" (VendorA/filament/CNEW @P1.json) inherits filament_id', out) - - def test_check3_inherited_id_must_be_the_mint_of_own_triple(self): + def test_check2_inherited_id_must_be_the_mint_of_own_triple(self): # A preset of another filament inheriting APLA's root takes APLA's id, # which is not the mint of ITS triple (AVendor/PLA/Tuned PLA). self.t.write_preset("VendorA", preset("Tuned PLA @P1", inherits="APLA @base", compatible_printers=["P1"])) errors, out = self.t.check() - self.assertGreater(errors, 0) + self.assertEqual(errors, 1, out) self.assertIn('"Tuned PLA @P1" (VendorA/filament/Tuned PLA @P1.json) inherits ' 'filament_id "%s"' % afi.generate_filament_id("AVendor", "PLA", "APLA"), out) self.assertIn('mints "%s"' % afi.generate_filament_id("AVendor", "PLA", "Tuned PLA"), out) - # ... and sanctioning the tree does not excuse it either. - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() - self.assertEqual(errors, 1, out) - def test_check3_lists_every_preset_inheriting_a_wrong_id(self): + def test_check2_lists_every_preset_inheriting_a_wrong_id(self): # A wrong declaration is reported under every preset inheriting it, its # own product's variant and another product alike: each one's effective # id is not the mint of its own triple, and each is listed. Nothing is @@ -552,11 +488,10 @@ class TestChecks(OfCleanTreeCase): self.assertIn('"DNEW @P1" (VendorA/filament/DNEW @P1.json) inherits filament_id', out) self.assertIn('"Other DNEW @P1" (VendorA/filament/Other DNEW @P1.json) inherits ' 'filament_id', out) - # The unsanctioned id (check 2), the declaration (3a), and both presets - # inheriting it (3b). - self.assertEqual(errors, 4, out) + # The declaration (2a), and both presets inheriting it (2b). + self.assertEqual(errors, 3, out) - def test_check3_reports_an_inherited_mismatch_even_when_its_own_product_misdeclares_the_id(self): + def test_check2_reports_an_inherited_mismatch_even_when_its_own_product_misdeclares_the_id(self): # "Tuned PLA @P1" inherits APLA's root, so it carries APLA's id: wrong # for its own product however the declarations around it are fixed. # That "Tuned PLA @base" — its own product — misdeclares that same id @@ -573,11 +508,11 @@ class TestChecks(OfCleanTreeCase): 'not match the mint of its triple', out) self.assertIn('"Tuned PLA @P1" (VendorA/filament/Tuned PLA @P1.json) inherits ' 'filament_id', out) - # The unsanctioned claim and triple (check 2), the declaration (3a) and - # the inherited id (3b): four distinct errors, nothing folded away. - self.assertEqual(errors, 4, out) + # The declaration (2a) and the inherited id (2b): two distinct errors, + # nothing folded away. + self.assertEqual(errors, 2, out) - def test_check3_reports_a_collision_between_two_products(self): + def test_check2_reports_a_collision_between_two_products(self): # Two products whose triples mint one id is a base62 collision. There # is no salted or hand-picked second id to fall back on: the check # names both products, and the remedy is a rename so the triples differ. @@ -601,13 +536,12 @@ class TestChecks(OfCleanTreeCase): self.assertIn("V/PLA/X", out) self.assertIn("W/ABS/Y", out) # Each declaration is the mint of its own triple, so the collision is - # the only identity error — no product is pushed off its id — and the - # unsanctioned id (check 2) is the only other one. + # the only error — no product is pushed off its id. self.assertNotIn("does not match the mint", out) self.assertNotIn("inherits filament_id", out) - self.assertEqual(errors, 2, out) + self.assertEqual(errors, 1, out) - def test_check3_renamed_tuned_generic_is_an_identity_error(self): + def test_check2_renamed_tuned_generic_is_an_identity_error(self): # Riding the OFL generic under another base name: same rule, same error. self.t.write_preset("VendorA", preset("Tuned PLA @P1", inherits="Generic PLA @System", @@ -617,7 +551,7 @@ class TestChecks(OfCleanTreeCase): self.assertIn("Tuned PLA @P1", out) self.assertIn("inherits filament_id", out) - def test_check3_own_key_on_an_instantiated_preset_is_fine(self): + def test_check2_own_key_on_an_instantiated_preset_is_fine(self): # Where the id comes from is irrelevant: a variant may carry the key. apla_id = afi.generate_filament_id("AVendor", "PLA", "APLA") self.t.write_preset("VendorA", preset("APLA @P1", filament_id=apla_id, @@ -627,7 +561,7 @@ class TestChecks(OfCleanTreeCase): errors, out = self.t.check() self.assertEqual(errors, 0, out) - def test_check3_inheriting_a_real_filament_of_another_product_is_fine(self): + def test_check2_inheriting_a_real_filament_of_another_product_is_fine(self): # A branded product may inherit the OFL generic (an instantiated # preset) for its settings; it declares its own triple's id. fid = afi.generate_filament_id("BV", "PLA", "Branded PLA") @@ -635,8 +569,6 @@ class TestChecks(OfCleanTreeCase): inherits="Generic PLA @System", filament_vendor="BV", compatible_printers=["P1"])) - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) errors, out = self.t.check() self.assertEqual(errors, 0, out) # With a wrong key it is a plain mint mismatch: the parent plays no @@ -670,22 +602,16 @@ class TestChecks(OfCleanTreeCase): self.assertIn(f'filament_id "{fid}"', out) self.assertIn('is not a minted "OF" id', out) - def test_check3c_unresolvable_instantiated_filament(self): + def test_check2c_unresolvable_instantiated_filament(self): self.t.write_preset("VendorA", preset("DNEW @P1", compatible_printers=["P1"])) errors, out = self.t.check() self.assertGreater(errors, 0) self.assertIn("resolves no filament_id", out) self.assertIn("hard load error", out) - def test_missing_snapshot_is_an_error(self): - os.remove(self.t.snapshot) - errors, out = self.t.check() - self.assertEqual(errors, 1) - self.assertIn("snapshot not found", out) - -class TestCheck5(OfCleanTreeCase): - def test_5a_empty_vendor_is_hard_error(self): +class TestCheck3(OfCleanTreeCase): + def test_3a_empty_vendor_is_hard_error(self): fid = afi.generate_filament_id("", "PLA", "NVPLA") self.t.write_preset("VendorA", preset("NVPLA @base", filament_id=fid, instantiation=False, @@ -693,17 +619,11 @@ class TestCheck5(OfCleanTreeCase): self.t.write_preset("VendorA", preset("NVPLA @P1", inherits="NVPLA @base", compatible_printers=["P1"])) errors, out = self.t.check() - self.assertGreater(errors, 0) - self.assertIn("resolves empty filament_vendor", out) - self.assertIn('filament_vendor "Generic"', out) - # No grandfathering: sanctioning the tree does not silence check 4a. - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() self.assertEqual(errors, 1, out) self.assertIn("resolves empty filament_vendor", out) + self.assertIn('filament_vendor "Generic"', out) - def test_5b_divergent_filament_triples(self): + def test_3b_divergent_filament_triples(self): id1 = afi.generate_filament_id("MV", "PLA", "MPLA") id2 = afi.generate_filament_id("MV", "PETG", "MPLA") self.t.write_preset("VendorA", preset("MPLA @base1", filament_id=id1, @@ -715,18 +635,12 @@ class TestCheck5(OfCleanTreeCase): filament_vendor="MV", filament_type="PETG")) errors, out = self.t.check() - self.assertGreater(errors, 0) + self.assertEqual(errors, 1, out) self.assertIn("divergent triples", out) self.assertIn("MV/PLA/MPLA", out) self.assertIn("MV/PETG/MPLA", out) - # No grandfathering: sanctioning the tree does not silence check 4b. - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() - self.assertEqual(errors, 1, out) - self.assertIn("divergent triples", out) - def test_5_cross_bundle_divergence_is_warning_only(self): + def test_3_cross_bundle_divergence_is_warning_only(self): fid = afi.generate_filament_id("BV", "PETG", "APLA") self.t.add_vendor("VendorB", [ preset("APLA @base", filament_id=fid, instantiation=False, @@ -734,8 +648,6 @@ class TestCheck5(OfCleanTreeCase): preset("APLA @PB", inherits="APLA @base", compatible_printers=["PB 0.4 nozzle"]), ]) - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) errors, out = self.t.check() self.assertEqual(errors, 0, out) self.assertIn("[WARNING]", out) @@ -743,7 +655,7 @@ class TestCheck5(OfCleanTreeCase): self.assertIn('"APLA"', out) -class TestCheck6(OfCleanTreeCase): +class TestCheck4(OfCleanTreeCase): def _write_map(self, rows): path = os.path.join(self.t.dir, "bambu_filament_ids.json") ubfi.write_map(path, rows, "testcommit", "2026-09-04") @@ -845,104 +757,6 @@ class TestCheck6(OfCleanTreeCase): self.assertIn('declares no "bambu_id"', out) -# --------------------------------------------------------------------------- -# --update-snapshot -# --------------------------------------------------------------------------- - -class TestUpdateSnapshot(SyntheticTreeCase): - def test_idempotent_and_deterministic(self): - with open(self.t.snapshot, "rb") as f: - first = f.read() - rc, out = self.t.update_snapshot() - self.assertEqual(rc, 0) - self.assertIn("nothing changed", out) - with open(self.t.snapshot, "rb") as f: - self.assertEqual(f.read(), first) - self.assertTrue(first.endswith(b"\n")) - self.assertNotIn(b"\r", first) - snap = json.loads(first.decode("utf-8")) - self.assertEqual(list(snap), ["ids"]) # state only, no exception lists - self.assertEqual(list(snap["ids"]), sorted(snap["ids"])) - self.assertEqual(snap["ids"]["AX01"], { - "filaments": ["VendorA/APLA"], "name": "APLA", - "filament_type": "PLA", "filament_vendor": "AVendor"}) - self.assertEqual(snap["ids"]["OGFL99"], { - "filaments": ["OrcaFilamentLibrary/Generic PLA", "VendorA/Generic PLA"], - "name": "Generic PLA", "filament_type": "PLA", "filament_vendor": "Generic"}) - # Key order is part of the on-disk format. - self.assertEqual(list(snap["ids"]["AX01"]), - ["filaments", "name", "filament_type", "filament_vendor"]) - - def test_refuses_a_tree_it_could_not_read(self): - # A bundle that does not parse contributes no ids, so sanctioning the - # rest would record the loss as a deliberate removal. - with open(self.t.snapshot, "rb") as f: - before = f.read() - with open(os.path.join(self.t.profiles, "VendorA", - "filament", "APLA @base.json"), "w", - encoding="utf-8") as f: - f.write("{ not json") - rc, out = self.t.update_snapshot() - self.assertEqual(rc, 1, out) - self.assertIn("unreadable filament profile", out) - with open(self.t.snapshot, "rb") as f: - self.assertEqual(f.read(), before) - - def test_refuses_an_id_declared_under_two_triples(self): - # VendorB re-declares APLA's id for a different product: one id, two - # triples. No single entry can describe it, and check 3 rejects it anyway. - self.t.add_vendor("VendorB", [ - preset("BPLA @base", filament_id="AX01", instantiation=False, - filament_vendor="BVendor", filament_type="PLA"), - preset("BPLA @P1", inherits="BPLA @base", compatible_printers=["P1"]), - ]) - with open(self.t.snapshot, "rb") as f: - before = f.read() - rc, out = self.t.update_snapshot() - self.assertEqual(rc, 1) - self.assertIn('refusing to sanction filament_id "AX01": declared under 2 triples ' - '(AVendor/PLA/APLA; BVendor/PLA/BPLA)', out) - with open(self.t.snapshot, "rb") as f: - self.assertEqual(f.read(), before) # nothing written on refusal - - def test_records_an_id_it_cannot_defend_and_lets_check_reject_it(self): - # update-snapshot records state, it does not judge ids: a foreign id - # lands in the diff a maintainer reviews, and fails check 1 straight - # after. Sanctioning it does not grandfather it. - self.t.write_preset("VendorA", preset("CNEW @base", filament_id="GFX99", - instantiation=False, - filament_vendor="CV", - filament_type="PLA")) - self.t.write_preset("VendorA", preset("CNEW @P1", inherits="CNEW @base", - compatible_printers=["P1"])) - rc, out = self.t.update_snapshot() - self.assertEqual(rc, 0, out) - with open(self.t.snapshot, encoding="utf-8") as f: - self.assertIn("GFX99", json.load(f)["ids"]) - errors, out = self.t.check() - self.assertGreater(errors, 0) - self.assertIn('is not a minted "OF" id', out) - - def test_dry_run_reports_without_writing(self): - self.t.write_preset("VendorA", preset("ANEW @P2", inherits="APLA @base", - compatible_printers=["P2"])) - with open(self.t.snapshot, "rb") as f: - before = f.read() - rc, out = self.t.update_snapshot(dry_run=True) - self.assertEqual(rc, 0) - self.assertIn("would be rewritten", out) - self.assertIn("claims added : 1", out) - with open(self.t.snapshot, "rb") as f: - self.assertEqual(f.read(), before) - # the real run writes exactly what the dry run reported - rc, out = self.t.update_snapshot() - self.assertEqual(rc, 0) - self.assertIn("snapshot written", out) - snap = load_json_file(self.t.snapshot) - self.assertEqual(snap["ids"]["AX01"]["filaments"], - ["VendorA/ANEW", "VendorA/APLA"]) - - # --------------------------------------------------------------------------- # --generate: one rule for inserts and rewrites alike # --------------------------------------------------------------------------- @@ -1026,7 +840,7 @@ class TestAssign(OfCleanTreeCase): def test_parent_of_another_filament_never_receives_the_key(self): # Members whose id-less parent belongs to another filament (here one # parent shared by two filaments) carry the key themselves: the - # parent's own triple would mint a different id (check 3). + # parent's own triple would mint a different id (check 2). self.t.write_preset("VendorA", preset("shared_base", instantiation=False, filament_vendor="SV", filament_type="PLA")) @@ -1044,8 +858,6 @@ class TestAssign(OfCleanTreeCase): parent = load_json_file(self.t.preset_path("VendorA", "shared_base")) self.assertNotIn("filament_id", parent) # ... and the tree they leave behind passes the identity check. - rc, _out = self.t.update_snapshot() - self.assertEqual(rc, 0) errors, out = self.t.check() self.assertEqual(errors, 0, out) @@ -1538,33 +1350,10 @@ class TestCli(unittest.TestCase): rc = afi.main([]) self.assertEqual(rc, 0) self.assertIn("usage:", buf.getvalue()) - for command in ("check", "generate-id", "normalize", "trim", "update-index", - "update-snapshot"): + for command in ("check", "generate-id", "normalize", "trim", "update-index"): self.assertIn(command, buf.getvalue()) self.assertEqual(self.t.bytes_map(), before) - def test_another_tree_needs_its_own_snapshot(self): - # --profiles retargets the tree, but the sanctioned state of that tree - # is not the repo snapshot: checking against it is meaningless and - # re-recording into it would overwrite the tracked file. - with open(afi.SNAPSHOT_PATH, "rb") as f: - repo_snapshot = f.read() - for command in ("check", "update-snapshot"): - with self.assertRaises(SystemExit) as caught: - with contextlib.redirect_stderr(io.StringIO()): - afi.main([command, "--profiles", self.t.profiles]) - self.assertEqual(caught.exception.code, 2, command) - with open(afi.SNAPSHOT_PATH, "rb") as f: - self.assertEqual(f.read(), repo_snapshot) - # Named explicitly, both commands run against that tree. - rc, out = self.t.cli("update-snapshot") - self.assertEqual(rc, 0, out) - # generate-id never reads the snapshot, so it keeps working without one. - buf = io.StringIO() - with contextlib.redirect_stdout(buf): - rc = afi.main(["generate-id", "--dry-run", "--profiles", self.t.profiles]) - self.assertEqual(rc, 0, buf.getvalue()) - def test_filament_id_and_setting_id_together_are_rejected(self): # Each flag's help promises it skips the other kind, so the pair cannot # quietly mean "both". @@ -1667,8 +1456,8 @@ class TestCli(unittest.TestCase): "setting_id", load_json_file(self.t.preset_path("VendorA", name))) def test_check_returns_1_on_errors(self): - # What CI keys off: check exits nonzero when the tree does not match the - # snapshot it is validated against. + # What CI keys off: check exits nonzero when the tree breaks a rule, here + # the baseline's ids that are not minted. before = self.t.bytes_map() rc, out = self.t.cli("check") self.assertEqual(rc, 1) @@ -1695,12 +1484,12 @@ class TestCli(unittest.TestCase): ["--check"], # the pre-subcommand flag ["--update-snapshot"], # the pre-subcommand flag ["nonsense"], # not a command + ["update-snapshot"], # removed command ["generate-id", "--filament-id", "--setting-id"], - ["generate-id", "--snapshot", "x"], # check's option ["check", "--materials"], # removed flag ["check", "--obsolete-keys"], # removed flag + ["check", "--snapshot", "x"], # removed flag ["check", "--filament-id"], # generate-id's option - ["normalize", "--snapshot", "x"], # not a snapshot command ["normalize", "--profile-type", "nozzle"]): # not a profile type with self.subTest(argv=argv): with self.assertRaises(SystemExit) as cm, \ @@ -1716,7 +1505,7 @@ class TestCli(unittest.TestCase): @unittest.skipUnless(os.path.isdir(REAL_PROFILES), "resources/profiles not present") class TestRealTree(unittest.TestCase): - def test_shipped_snapshot_matches_tree(self): + def test_shipped_filament_ids_pass(self): buf = io.StringIO() with contextlib.redirect_stdout(buf): errors = afi.check_filament_ids(REAL_PROFILES) @@ -1778,10 +1567,10 @@ class TestReviewFixes(OfCleanTreeCase): self.assertIn(path, str(caught.exception)) self.assertIn("test edit", str(caught.exception)) - def test_check3_skips_of_id_inherited_from_other_vendor(self): + def test_check2_accepts_an_of_id_inherited_from_another_vendor(self): # An OFL filament carries its own minted OF id and a vendor tunes it - # correctly (same base name, non-empty printers). The new claim must - # trip only the snapshot gate, never mint conformance. + # correctly (same base name, non-empty printers): the id it inherits is + # the mint of its own triple. fid = afi.generate_filament_id("Generic", "PLA", "Generic PLA Matte") self.t.write_preset(OFL, preset("Generic PLA Matte @base", filament_id=fid, instantiation=False, @@ -1790,22 +1579,13 @@ class TestReviewFixes(OfCleanTreeCase): self.t.write_preset(OFL, preset("Generic PLA Matte @System", inherits="Generic PLA Matte @base", compatible_printers=[])) - rc, _ = self.t.update_snapshot() - self.assertEqual(rc, 0) self.t.write_preset("VendorA", preset("Generic PLA Matte @P1", inherits="Generic PLA Matte @System", compatible_printers=["P1 0.4 nozzle"])) errors, out = self.t.check() - self.assertNotIn("does not match the mint", out) - self.assertIn("not sanctioned", out) - self.assertEqual(errors, 1, out) - # After sanctioning the claim the tree is fully green again. - rc, _ = self.t.update_snapshot() - self.assertEqual(rc, 0) - errors, out = self.t.check() self.assertEqual(errors, 0, out) - def test_check3c_prints_expected_mint(self): + def test_check2c_prints_expected_mint(self): self.t.write_preset("VendorA", preset("Orphan PLA @P1", compatible_printers=["P1 0.4 nozzle"], filament_vendor="OV", diff --git a/scripts/tests/test_profile_tool.py b/scripts/tests/test_profile_tool.py index 44b8604625..29b62b693e 100644 --- a/scripts/tests/test_profile_tool.py +++ b/scripts/tests/test_profile_tool.py @@ -527,9 +527,7 @@ class TestCheck(TreeCase): # `check`, now that the per-vendor pass no longer skips it. self.t.write(apt.OFL, "filament/Stray.json", {"type": "filament", "name": "Stray"}) - snapshot = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", snapshot) - rc, out = self.run_command("check", "--snapshot", snapshot) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) self.assertIn(f"{apt.OFL}/filament/Stray.json: no {apt.OFL}.json list " f"references it", out) @@ -598,9 +596,7 @@ class TestCheck(TreeCase): self.t.write("V", "filament/A.json", { "type": "filament", "name": "A", "silent_mode": "0"}) self.run_command("update-index") - snapshot = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", snapshot) - rc, out = self.run_command("check", "--snapshot", snapshot) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) # normalization also rejects the obsolete key self.assertIn("Obsolete key: 'silent_mode' found in V/filament/A.json", out) self.assertIn("Files with warnings : 1", out) @@ -623,9 +619,7 @@ class TestCheck(TreeCase): "type": "machine", "name": "M 0.4 nozzle", "default_filament_profile": ["A", "Nope"]}) self.t.index("V", "machine", "M 0.4 nozzle", "machine/M.json") - snapshot = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", snapshot) - rc, out = self.run_command("check", "--snapshot", snapshot) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) self.assertIn("Missing filament profile: 'Nope'", out) @@ -635,9 +629,7 @@ class TestCheck(TreeCase): self.bundle() for sub in apt.PROFILE_SUBDIRS: os.makedirs(os.path.join(self.t.profiles, apt.USER_DIR, "default", sub)) - snapshot = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", snapshot) - _rc, out = self.run_command("check", "--snapshot", snapshot) + _rc, out = self.run_command("check") self.assertIn("Checked vendors : 1", out) self.assertNotIn("user", out) @@ -743,9 +735,7 @@ class TestCheck(TreeCase): self.t.write("V", f"filament/Stray{n}.json", {"type": "filament", "name": f"Stray{n}"}) self.t.write("V", "filament/NoType.json", {"name": "NoType"}) - snapshot = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", snapshot) - rc, out = self.run_command("check", "--snapshot", snapshot) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) self.assertEqual(out.count("update-index\" to add them"), 1, out) self.assertEqual(out.count("or delete them"), 1, out) @@ -797,11 +787,6 @@ class TestNormalized(TreeCase): errors, gaps = apt.check_normalized(self.t.profiles, vendor) return errors, gaps, buf.getvalue() - def snapshot(self): - path = os.path.join(self.t.dir, "snapshot.json") - self.run_command("update-snapshot", "--snapshot", path) - return path - def test_a_bundle_the_two_commands_just_wrote_reports_nothing(self): self.t.write("V", "filament/A.json", {"type": "filament", "name": "A"}) self.t.write("V", "process/B.json", {"type": "process", "name": "B"}) @@ -862,7 +847,7 @@ class TestNormalized(TreeCase): # library included. self.t.write(apt.OFL, "filament/A.json", {"type": "filament", "name": "A", "version": "01.00.00.00"}) - rc, out = self.run_command("check", "--snapshot", self.snapshot()) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) self.assertIn(f"{apt.OFL}/filament/A.json: normalize would remove version", out) @@ -872,7 +857,7 @@ class TestNormalized(TreeCase): {"type": "filament", "name": f"A{n}", "version": "01.00.00.00"}) self.t.write("W", "filament/B.json", {"type": "filament", "name": "B"}) - rc, out = self.run_command("check", "--snapshot", self.snapshot()) + rc, out = self.run_command("check") self.assertEqual(rc, 1, out) self.assertIn("3 profile file(s) above are not what", out) self.assertEqual(out.count('normalize" writes: run it and commit'), 1, out) @@ -898,8 +883,7 @@ class TestDispatch(TreeCase): def test_an_option_belongs_to_one_command_only(self): for argv in (["trim", "--force"], ["update-index", "--filament-id"], - ["check", "--profile-type", "filament"], - ["update-snapshot", "--vendor", "V"]): + ["check", "--profile-type", "filament"]): with self.subTest(argv=argv): with self.assertRaises(SystemExit) as cm, \ contextlib.redirect_stdout(io.StringIO()), \